Mise en place de tests utilisateurs avec playwright pour la partie angular + corrections au niveau des labels avec for et id pour cliquer dessus
Some checks failed
E2E Tests / e2e (push) Failing after 5m30s
Some checks failed
E2E Tests / e2e (push) Failing after 5m30s
This commit is contained in:
77
web/e2e/tests/lore/lore-create.spec.ts
Normal file
77
web/e2e/tests/lore/lore-create.spec.ts
Normal file
@@ -0,0 +1,77 @@
|
||||
import { test, expect } from '@playwright/test';
|
||||
import { deleteLore } from '../../fixtures/api';
|
||||
|
||||
test.describe('Lore creation', () => {
|
||||
const createdLoreIds: string[] = [];
|
||||
|
||||
test.afterEach(async ({ request }) => {
|
||||
while (createdLoreIds.length) {
|
||||
const id = createdLoreIds.pop()!;
|
||||
await deleteLore(request, id);
|
||||
}
|
||||
});
|
||||
|
||||
test('opens the modal, creates a lore, and shows it in the grid', async ({ page, request }) => {
|
||||
const loreName = `Univers E2E ${Date.now()}`;
|
||||
const description = "Un univers créé par les tests automatisés.";
|
||||
|
||||
await page.goto('/lore');
|
||||
|
||||
await expect(page.getByRole('heading', { name: /Vos Univers/i })).toBeVisible();
|
||||
|
||||
await page.locator('.lore-card.card-new').click();
|
||||
|
||||
const modal = page.locator('.modal');
|
||||
await expect(modal).toBeVisible();
|
||||
await expect(modal.getByRole('heading', { name: /Créer un nouveau Lore/i })).toBeVisible();
|
||||
|
||||
await modal.getByLabel(/Nom de l'univers/i).fill(loreName);
|
||||
await modal.getByLabel('Description').fill(description);
|
||||
|
||||
await modal.getByRole('button', { name: /^Créer le lore$/i }).click();
|
||||
|
||||
await expect(modal).not.toBeVisible();
|
||||
|
||||
const newCard = page.locator('.lore-card', { hasText: loreName });
|
||||
await expect(newCard).toBeVisible();
|
||||
await expect(newCard).toContainText(description);
|
||||
|
||||
const allLores = await request.get('/api/lores').then((r) => r.json());
|
||||
const created = allLores.find((l: { name: string; id: string }) => l.name === loreName);
|
||||
expect(created).toBeDefined();
|
||||
createdLoreIds.push(created.id);
|
||||
});
|
||||
|
||||
test('submit button is disabled when name is empty', async ({ page }) => {
|
||||
await page.goto('/lore');
|
||||
await page.locator('.lore-card.card-new').click();
|
||||
|
||||
const modal = page.locator('.modal');
|
||||
const submit = modal.getByRole('button', { name: /^Créer le lore$/i });
|
||||
|
||||
await expect(submit).toBeDisabled();
|
||||
|
||||
await modal.getByLabel(/Nom de l'univers/i).fill('Quelque chose');
|
||||
await expect(submit).toBeEnabled();
|
||||
|
||||
await modal.getByLabel(/Nom de l'univers/i).fill('');
|
||||
await expect(submit).toBeDisabled();
|
||||
});
|
||||
|
||||
test('clicking the backdrop closes the modal without creating', async ({ page }) => {
|
||||
const typedButAbandoned = `Univers abandonné ${Date.now()}`;
|
||||
|
||||
await page.goto('/lore');
|
||||
await page.locator('.lore-card.card-new').click();
|
||||
|
||||
const modal = page.locator('.modal');
|
||||
await expect(modal).toBeVisible();
|
||||
|
||||
await modal.getByLabel(/Nom de l'univers/i).fill(typedButAbandoned);
|
||||
|
||||
await page.locator('.modal-backdrop').click({ position: { x: 5, y: 5 } });
|
||||
await expect(modal).not.toBeVisible();
|
||||
|
||||
await expect(page.locator('.lore-card', { hasText: typedButAbandoned })).toHaveCount(0);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user