Ajout d'un champs image dans les templates par défaut en + du champs nom, description pour avoir un exemple Correction du visuel du champs d'ajout lors de la modification d'un template (apparition ligne pleine au lieu de texte en pointillé) Ajout d'un intercepteur pour la partie démo de l'application afin de bien rafraichir le cache angular lorsque le temps de démo est expiré
This commit is contained in:
@@ -50,7 +50,21 @@ test.describe('Page creation', () => {
|
||||
expect(created?.nodeId).toBe(seeded.rootFolderId);
|
||||
});
|
||||
|
||||
test('submit is disabled until title, template and folder are set', async ({ page }) => {
|
||||
test('submit is disabled until title, template and folder are set', async ({ page, request }) => {
|
||||
// On seed un 2ᵉ template pour empêcher l'auto-sélection (qui se déclenche
|
||||
// quand un seul template a un defaultNodeId valide). Avec deux candidats,
|
||||
// l'utilisateur doit choisir explicitement → on retrouve le comportement
|
||||
// initial du test : submit disabled tant qu'un template n'est pas cliqué.
|
||||
const secondFolderRes = await request.post('/api/lore-nodes', {
|
||||
data: { loreId: seeded.id, name: 'Autre dossier', icon: 'folder', description: '' },
|
||||
});
|
||||
const secondFolderId = (await secondFolderRes.json()).id;
|
||||
await seedTemplate(request, {
|
||||
loreId: seeded.id,
|
||||
defaultNodeId: secondFolderId,
|
||||
name: `Second template ${Date.now()}`,
|
||||
});
|
||||
|
||||
await page.goto(`/lore/${seeded.id}/pages/create`);
|
||||
|
||||
const submit = page.getByRole('button', { name: /^Créer la page$/i });
|
||||
@@ -66,6 +80,8 @@ test.describe('Page creation', () => {
|
||||
test('entering on a folder-scoped route preselects that folder', async ({ page, request }) => {
|
||||
const pageTitle = `Page scoped ${Date.now()}`;
|
||||
|
||||
// Dossier sans template par défaut → pas d'auto-sélection de template,
|
||||
// l'utilisateur clique manuellement (ce qu'on veut tester ici).
|
||||
const secondFolderRes = await request.post('/api/lore-nodes', {
|
||||
data: { loreId: seeded.id, name: 'Autre dossier', icon: 'folder', description: '' },
|
||||
});
|
||||
@@ -87,4 +103,31 @@ test.describe('Page creation', () => {
|
||||
const pages = await getPagesForLore(request, seeded.id);
|
||||
expect(pages.find((p) => p.title === pageTitle)?.nodeId).toBe(secondFolderId);
|
||||
});
|
||||
|
||||
test('auto-selects the template on free route when it is the only candidate', async ({ page }) => {
|
||||
// Le seed donne EXACTEMENT 1 template avec defaultNodeId valide → la
|
||||
// logique d'auto-sélection doit s'enclencher au chargement.
|
||||
await page.goto(`/lore/${seeded.id}/pages/create`);
|
||||
|
||||
await expect(page.locator('.template-card.selected', { hasText: template.name })).toBeVisible();
|
||||
await expect(page.locator('#page-node')).toHaveValue(seeded.rootFolderId);
|
||||
|
||||
// Conséquence : juste taper un titre suffit pour activer le submit.
|
||||
const submit = page.getByRole('button', { name: /^Créer la page$/i });
|
||||
await expect(submit).toBeDisabled();
|
||||
await page.getByLabel(/Titre de la page/i).fill('Auto');
|
||||
await expect(submit).toBeEnabled();
|
||||
});
|
||||
|
||||
test('auto-selects the template on folder-scoped route when its defaultNodeId matches', async ({
|
||||
page,
|
||||
}) => {
|
||||
// Le template seedé pointe sur seeded.rootFolderId — entrer sur la route
|
||||
// folder-scoped de ce dossier doit auto-sélectionner ce template.
|
||||
await page.goto(`/lore/${seeded.id}/nodes/${seeded.rootFolderId}/pages/create`);
|
||||
|
||||
await expect(page.locator('.template-card.selected', { hasText: template.name })).toBeVisible();
|
||||
await expect(page.locator('#page-node')).toHaveValue(seeded.rootFolderId);
|
||||
await expect(page.locator('#page-node')).toBeDisabled();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user