Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions playwright/e2e-tests/secrets.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { expect, test } from '@playwright/test'
import { clientURL, signInCloudPiNative, testUser } from 'config/console'
import { openMyProjects } from 'helpers/navigation'
import { createProject, deleteProject } from 'helpers/project'

// Parcours secrets du projet : bascule du bouton « Afficher/Cacher les secrets
// des services ». Le cas projet verrouillé (bouton indisponible) n'est pas
// couvert — la stack CI ne provisionne pas de projet verrouillé.
test.describe('Secrets du projet', { 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('toggling switches the label between show/hide', async ({ page }) => {
await openMyProjects({ page })
await page.getByRole('link', { name: projectName }).click()

const toggle = page.getByRole('button', { name: 'Afficher les secrets des services' })
await expect(toggle).toBeVisible()
await toggle.click()
await expect(page.getByRole('button', { name: 'Cacher les secrets des services' })).toBeVisible()
await page.getByRole('button', { name: 'Cacher les secrets des services' }).click()
await expect(page.getByRole('button', { name: 'Afficher les secrets des services' })).toBeVisible()
})

test.afterEach(async ({ page }) => {
if (!projectName)
return
await deleteProject({ page, projectName })
projectName = ''
})
})
15 changes: 15 additions & 0 deletions playwright/integration-tests/user-flow.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,21 @@ test.describe('Integration tests user flow: first checks', { tag: '@integ' }, ()
await expect(page1.getByRole('link', { name: 'forge-dso' })).not.toBeVisible()
})

test('Check project secrets', { tag: '@replayable' }, async ({ page }) => {
await page.goto(clientURL)
await signInCloudPiNative({ page, credentials: testUser })
await page.getByTestId('menuMyProjects').click()
await page.getByRole('link', { name: projectName }).click()
await page.getByTestId('showSecretsBtn').click()
const modal = page.getByTestId('projectSecretsZone')
// Keys only — secret values rotate with the project's provisioning.
await expect(modal.getByRole('heading', { name: 'GITLAB' })).toBeVisible()
await expect(modal.getByText('GIT_MIRROR_PROJECT_ID')).toBeVisible()
await expect(modal.getByText('GIT_MIRROR_TOKEN')).toBeVisible()
await expect(modal.locator('pre').first()).not.toBeEmpty()
await expect(modal.getByRole('heading', { name: 'VAULT' })).toBeVisible()
})

test('Project permissions', async ({ page }) => {
await page.goto(clientURL)
await signInCloudPiNative({ page, credentials: testUser })
Expand Down