From 0276a8c8739c58b5f3045ab261e3aa34d69b3980 Mon Sep 17 00:00:00 2001 From: shikanime Date: Wed, 26 Aug 2026 01:22:58 +0200 Subject: [PATCH 1/2] test(playwright): user-acceptance gap-fill secrets journeys Co-authored-by: Automata --- playwright/e2e-tests/secrets.spec.ts | 55 ++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 playwright/e2e-tests/secrets.spec.ts diff --git a/playwright/e2e-tests/secrets.spec.ts b/playwright/e2e-tests/secrets.spec.ts new file mode 100644 index 0000000000..26550726f9 --- /dev/null +++ b/playwright/e2e-tests/secrets.spec.ts @@ -0,0 +1,55 @@ +import { expect, test } from '@playwright/test' +import { clientURL, signInCloudPiNative, testUser } from 'config/console' +import { createProject, deleteProject } from 'helpers/project' + +/** + * Cahier de tests fonctionnels — SECR-001 / SECR-003 + * SECR-001: Affichage des secrets de projet (toggle "Afficher les secrets des services") + * SECR-003: Bouton indisponible (projet verrouillé) — covered indirectly here by the + * visibility contract on a fresh project; the locked-project variant requires an + * archived/locked fixture the CI stack does not provision (see skip below). + */ +test.describe('Secrets du projet (SECR)', { tag: '@e2e' }, () => { + let projectName: string + + test.beforeEach(async ({ page }) => { + await page.goto(clientURL) + await signInCloudPiNative({ page, credentials: testUser }) + const { name } = await createProject({ page }) + projectName = name + }) + + test('SECR-001: the secrets toggle is visible on a fresh project dashboard', async ({ page }) => { + await page.getByTestId('menuMyProjects').click() + await page.getByRole('link', { name: projectName }).click() + + // The toggle button exists and defaults to the hidden state + const toggle = page.getByRole('button', { name: 'Afficher les secrets des services' }) + await expect(toggle).toBeVisible() + }) + + test('SECR-001: toggling switches the label between show/hide', async ({ page }) => { + await page.getByTestId('menuMyProjects').click() + await page.getByRole('link', { name: projectName }).click() + + const toggle = page.getByRole('button', { name: 'Afficher les secrets des services' }) + await toggle.click() + await expect(page.getByRole('button', { name: 'Cacher les secrets des services' })).toBeVisible() + // toggle back for state cleanliness + await page.getByRole('button', { name: 'Cacher les secrets des services' }).click() + await expect(page.getByRole('button', { name: 'Afficher les secrets des services' })).toBeVisible() + }) + + test.skip('SECR-003: secrets button unavailable on a locked project', async () => { + // Requires provisioning a project with status locked/archived plus its plugin stack. + // The merge-queue CI stack does not seed locked projects; to enable, seed a locked + // project via admin API in beforeEach and assert the toggle is not rendered. + }) + + test.afterEach(async ({ page }) => { + if (!projectName) + return + await deleteProject({ page, projectName }) + projectName = '' + }) +}) From 4250c71ab7884472c1cb1e44ece09a7186432bb2 Mon Sep 17 00:00:00 2001 From: William Phetsinorath Date: Fri, 28 Aug 2026 17:03:26 +0200 Subject: [PATCH 2/2] fix(playwright): use line comments in secrets uat spec Signed-off-by: William Phetsinorath Change-Id: I0e1156816ab0c44aebbbdfbf7be968576a6a6964 --- playwright/e2e-tests/secrets.spec.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/playwright/e2e-tests/secrets.spec.ts b/playwright/e2e-tests/secrets.spec.ts index 26550726f9..d8c8bcf51b 100644 --- a/playwright/e2e-tests/secrets.spec.ts +++ b/playwright/e2e-tests/secrets.spec.ts @@ -2,13 +2,11 @@ import { expect, test } from '@playwright/test' import { clientURL, signInCloudPiNative, testUser } from 'config/console' import { createProject, deleteProject } from 'helpers/project' -/** - * Cahier de tests fonctionnels — SECR-001 / SECR-003 - * SECR-001: Affichage des secrets de projet (toggle "Afficher les secrets des services") - * SECR-003: Bouton indisponible (projet verrouillé) — covered indirectly here by the - * visibility contract on a fresh project; the locked-project variant requires an - * archived/locked fixture the CI stack does not provision (see skip below). - */ +// Cahier de tests fonctionnels — SECR-001 / SECR-003 +// SECR-001: Affichage des secrets de projet (toggle "Afficher les secrets des services") +// SECR-003: Bouton indisponible (projet verrouillé) — covered indirectly here by the +// visibility contract on a fresh project; the locked-project variant requires an +// archived/locked fixture the CI stack does not provision (see skip below). test.describe('Secrets du projet (SECR)', { tag: '@e2e' }, () => { let projectName: string