diff options
Diffstat (limited to 'src/tools/iban-validator-and-parser/iban-validator-and-parser.e2e.spec.ts')
-rw-r--r-- | src/tools/iban-validator-and-parser/iban-validator-and-parser.e2e.spec.ts | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/tools/iban-validator-and-parser/iban-validator-and-parser.e2e.spec.ts b/src/tools/iban-validator-and-parser/iban-validator-and-parser.e2e.spec.ts new file mode 100644 index 0000000..3501543 --- /dev/null +++ b/src/tools/iban-validator-and-parser/iban-validator-and-parser.e2e.spec.ts @@ -0,0 +1,51 @@ +import { type Page, expect, test } from '@playwright/test'; +import _ from 'lodash'; + +async function extractIbanInfo({ page }: { page: Page }) { + const tdHandles = await page.locator('table tr td').elementHandles(); + const tdTextContents = await Promise.all(tdHandles.map(el => el.textContent())); + + return _.chain(tdTextContents) + .map(tdTextContent => tdTextContent?.trim().replace(' Copy to clipboard', '')) + .chunk(2) + .value(); +} + +test.describe('Tool - Iban validator and parser', () => { + test.beforeEach(async ({ page }) => { + await page.goto('/iban-validator-and-parser'); + }); + + test('Has correct title', async ({ page }) => { + await expect(page).toHaveTitle('IBAN validator and parser - IT Tools'); + }); + + test('iban info are extracted from a valid iban', async ({ page }) => { + await page.getByTestId('iban-input').fill('DE89370400440532013000'); + + const ibanInfo = await extractIbanInfo({ page }); + + expect(ibanInfo).toEqual([ + ['Is IBAN valid ?', 'Yes'], + ['Is IBAN a QR-IBAN ?', 'No'], + ['Country code', 'DE'], + ['BBAN', '370400440532013000'], + ['IBAN friendly format', 'DE89 3704 0044 0532 0130 00'], + ]); + }); + + test('invalid iban errors are displayed', async ({ page }) => { + await page.getByTestId('iban-input').fill('FR7630006060011234567890189'); + + const ibanInfo = await extractIbanInfo({ page }); + + expect(ibanInfo).toEqual([ + ['Is IBAN valid ?', 'No'], + ['IBAN errors', 'Wrong account bank branch checksumWrong IBAN checksum Copy to clipboard'], + ['Is IBAN a QR-IBAN ?', 'No'], + ['Country code', 'N/A'], + ['BBAN', 'N/A'], + ['IBAN friendly format', 'FR76 3000 6060 0112 3456 7890 189'], + ]); + }); +}); |