Files
LoreMind/web/e2e/tests/game-system/game-system-create.spec.ts
IETM_FIXE\ietm6 f24ef0891e
All checks were successful
Build & Push Images / build (brain) (push) Successful in 1m36s
Build & Push Images / build (core) (push) Successful in 2m53s
Build & Push Images / build (web) (push) Successful in 2m36s
Ajout de tests playwright et correction de tests non passant (pour les tests ajoutés : partie game system ).
Correction de plusieurs anomalies : problème de switch entre 2 templates (par exemple si on était sur un template 1 et qu'on voulait passer directement au 2, ce dernier ne chargeait pas) ;
correction du soucis d'apparition de la sidebar à gauche qui disparaissait sans explication ; problème de redirection : lorsqu'on terminait de créer un PJ / PNJ ; on arrivait sur l'accueil de la campagne au lieu de voir le résultat de la création.
Problème de redirection également lors du clique sur un PNJ / PJ sur le coté : on arrivait sur l'édition au lieu de la présentation. Correction de la première lettre stylisée : tout est au même style comme ça plus de probleme de lecture.

Nouveautées : stylisation des modales (notamment suppression, warning.....) avec en prime l'ajout d'un warning lors du changement de système pour avertir que les fiches persos ne sont pas conservées.
Ajout d'une option pour créer un game system directement à la création d'une campagne afin de faciliter la mise en place de cette dernière.
Ajout d'un bouton pour créer un nouveau template directement lorsqu'on créer une page : ça permet de créer un template et de revenir sur la page qu'on était en train de créer sans perdre le titre.

Passage en bêta 0.8.4
2026-05-19 13:37:22 +02:00

75 lines
2.9 KiB
TypeScript

import { test, expect } from '@playwright/test';
import { deleteGameSystem } from '../../fixtures/api';
test.describe('GameSystem creation', () => {
// Les game systems crees par les tests sont nettoyes via cet array — chaque
// test pousse les IDs qu'il a crees pour qu'on les supprime en afterEach.
const createdIds: string[] = [];
test.afterEach(async ({ request }) => {
while (createdIds.length) {
const id = createdIds.pop()!;
await deleteGameSystem(request, id);
}
});
test('creates a game system and redirects to the list', async ({ page, request }) => {
const gsName = `Système E2E ${Date.now()}`;
const description = 'Système créé par les tests automatisés.';
const author = 'Playwright';
await page.goto('/game-systems');
await expect(page.getByRole('heading', { name: /Systèmes de JDR/i })).toBeVisible();
// Carte "Nouveau système" → ouvre l'editeur en mode creation.
await page.locator('.gs-card.card-new').click();
await expect(page).toHaveURL(/\/game-systems\/create$/);
await expect(page.getByRole('heading', { name: /Nouveau système de JDR/i })).toBeVisible();
await page.getByLabel(/^Nom/i).fill(gsName);
await page.getByLabel(/Description courte/i).fill(description);
await page.getByLabel(/Auteur/i).fill(author);
await page.getByRole('button', { name: /^Créer$/i }).click();
// Redirection vers la liste apres creation.
await expect(page).toHaveURL(/\/game-systems$/);
// Et la carte du nouveau systeme est visible dans la grille.
await expect(page.locator('.gs-card', { hasText: gsName })).toBeVisible();
// Verification API : le systeme est bien persistant.
const all = await request.get('/api/game-systems').then((r) => r.json());
const created = all.find((gs: { id: string; name: string }) => gs.name === gsName);
expect(created).toBeDefined();
expect(created.author).toBe(author);
createdIds.push(created.id);
});
test('submit button is disabled when name is empty', async ({ page }) => {
await page.goto('/game-systems/create');
const submit = page.getByRole('button', { name: /^Créer$/i });
await expect(submit).toBeDisabled();
await page.getByLabel(/^Nom/i).fill('Quelque chose');
await expect(submit).toBeEnabled();
await page.getByLabel(/^Nom/i).fill(' ');
await expect(submit).toBeDisabled();
});
test('cancel returns to the list without creating', async ({ page, request }) => {
const abandoned = `Système abandonné ${Date.now()}`;
await page.goto('/game-systems/create');
await page.getByLabel(/^Nom/i).fill(abandoned);
await page.getByRole('button', { name: /^Annuler$/i }).click();
await expect(page).toHaveURL(/\/game-systems$/);
// Rien n'a ete cree cote API.
const all = await request.get('/api/game-systems').then((r) => r.json());
expect(all.find((gs: { name: string }) => gs.name === abandoned)).toBeUndefined();
});
});