This repository has been archived on 2026-03-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
people/src/frontend/apps/e2e/__tests__/app-desk/mail-domains-add.spec.ts
daproclaima e4aed82ff2 🥅(frontend) improve error catching in forms
- rename CreateMailboxForm into ModalCreateMailbox,
and useCreateMailDomain into useAddMailDomain
- use useAPIError hook in ModalCreateMailbox.tsx and ModalAddMailDomain
- update translations and tests (include removal of e2e test able
to be asserted by component tests)
2024-09-09 12:43:29 +02:00

147 lines
3.7 KiB
TypeScript

import { Page, expect, test } from '@playwright/test';
import { keyCloakSignIn, randomName } from './common';
const getElements = (page: Page) => {
const panel = page.getByLabel('Mail domains panel').first();
const linkIndexPageAddDomain = page.getByRole('link', {
name: 'Add a mail domain',
});
const form = page.locator('form');
const inputName = form.getByLabel('Domain name');
const buttonSubmit = page.getByRole('button', {
name: 'Add the domain',
});
const buttonCancel = page.getByRole('button', {
name: 'Cancel',
});
return {
panel,
linkIndexPageAddDomain,
form,
inputName,
buttonCancel,
buttonSubmit,
};
};
test.beforeEach(async ({ page, browserName }) => {
await page.goto('/');
await keyCloakSignIn(page, browserName);
});
test.describe('Add Mail Domains', () => {
test('checks all the elements are visible', async ({ page }) => {
await page.goto('/mail-domains/');
const { linkIndexPageAddDomain, inputName } = getElements(page);
await expect(linkIndexPageAddDomain).toBeVisible();
await linkIndexPageAddDomain.click();
await expect(linkIndexPageAddDomain).toBeHidden();
await expect(
page.getByRole('heading', {
name: 'Add a mail domain',
level: 3,
}),
).toBeVisible();
await expect(inputName).toBeVisible();
await expect(page.getByText('Example: saint-laurent.fr')).toBeVisible();
await expect(
page.getByRole('button', {
name: 'Add the domain',
}),
).toBeVisible();
await expect(
page.getByRole('button', {
name: 'Cancel',
}),
).toBeVisible();
});
test('checks the cancel button interaction', async ({ page }) => {
await page.goto('/mail-domains/');
const { linkIndexPageAddDomain, buttonCancel } = getElements(page);
await linkIndexPageAddDomain.click();
await buttonCancel.click();
await expect(buttonCancel).toBeHidden();
await expect(linkIndexPageAddDomain).toBeVisible();
});
test('checks form invalid status', async ({ page }) => {
await page.goto('/mail-domains/');
const { linkIndexPageAddDomain, inputName, buttonSubmit } =
getElements(page);
await linkIndexPageAddDomain.click();
await expect(inputName).toBeVisible();
await expect(page.getByText('Example: saint-laurent.fr')).toBeVisible();
await expect(
page.getByRole('button', {
name: 'Cancel',
}),
).toBeEnabled();
await expect(buttonSubmit).toBeDisabled();
await inputName.fill('s');
await expect(page.getByText('Example: saint-laurent.fr')).toBeVisible();
await inputName.clear();
await expect(page.getByText('Example: saint-laurent.fr')).toBeVisible();
});
test('checks the routing on new mail domain added', async ({
page,
browserName,
}) => {
const mailDomainName = randomName('versailles.fr', browserName, 1)[0];
const mailDomainSlug = mailDomainName.replace('.', '');
await page.goto('/mail-domains/');
const { linkIndexPageAddDomain, inputName, buttonSubmit } =
getElements(page);
await linkIndexPageAddDomain.click();
await inputName.fill(mailDomainName);
await buttonSubmit.click();
await expect(page).toHaveURL(`/mail-domains/${mailDomainSlug}/`);
await expect(
page.getByRole('heading', {
name: mailDomainName,
}),
).toBeVisible();
});
test('checks 404 on mail-domains/[slug] page', async ({ page }) => {
await page.goto('/mail-domains/unknown-domain');
await expect(
page.getByText(
'It seems that the page you are looking for does not exist or cannot be displayed correctly.',
),
).toBeVisible({
timeout: 15000,
});
});
});