it-tools/src/tools/iban-validator-and-parser/iban-validator-and-parser.e2e.spec.ts
2023-08-27 18:12:31 +00:00

51 lines
1.7 KiB
TypeScript

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'],
]);
});
});