Skip to content
Merged
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
24 changes: 23 additions & 1 deletion playwright/README.md
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

praise: Nickel 👍  Faudra dans le turfu qu'on source un fichier .env quelconque pour éviter la tartine d'export mais c'est un très bon début, et documenté 👏

Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Il faut d'abord lancer une stack, par ex, celle de Dev:
```shell
$ pnpm run docker:dev
```
On peut ensuite lancer ensuite les tests :
On peut lancer ensuite les tests :

```shell
$ pnpm run playwright:test --grep @e2e
Expand All @@ -38,6 +38,28 @@ OU (autre possibilité), lancer la "console" Playwright pour parcourir/exécuter
$ pnpm run playwright:test:ui --grep @e2e
```

Et pour les tests d'intégration, il faut au préalable exporter des variables d'environnement :

```shell
$ export KEYCLOAK_DOMAIN=keycloak.example.com
$ export KEYCLOAK_REDIRECT_URI=https://console.example.com
$ export KEYCLOAK_PROTOCOL=https
$ export KEYCLOAK_ADMIN_USERNAME=<admin_username>
$ export KEYCLOAK_ADMIN_PASSWORD=<admin_password>
$ export KEYCLOAK_REALM=dso
$ export CONSOLE_ADMIN_USERNAME=<admin_dso_username>
$ export CONSOLE_ADMIN_PASSWORD=<admin_dso_password>
$ export CONSOLE_ADMIN_EMAIL=<admin_dso_email>
$ export CONSOLE_GLOBAL_TIMEOUT='900000'
$ export CONSOLE_EXPECT_TIMEOUT='900000'
```

On peut lancer ensuite les tests :

```shell
$ pnpm run playwright:test:integration --grep @integ
```

## Conventions de code

Afin d'assurer la lisibilité et la maintenabilité des tests Playwright, quelques décisions ont été prises concernant l'écriture du code :
Expand Down
5 changes: 5 additions & 0 deletions playwright/e2e-tests/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,12 @@ export async function addRandomRepositoryToProject({
page,
repositoryName,
externalRepoUrlInput,
infraRepo,
}: {
page: Page
repositoryName?: string
externalRepoUrlInput?: string
infraRepo?: bool
}) {
repositoryName = repositoryName ?? faker.string.alpha(10).toLowerCase()
await page.getByTestId('addRepoLink').click()
Expand All @@ -103,6 +105,9 @@ export async function addRandomRepositoryToProject({
.getByTestId('externalRepoUrlInput')
.fill(`${faker.internet.url({ appendSlash: true })}myrepository.git`)
}
if (infraRepo) {
await page.getByText('Dépôt contenant du code d\'').click()
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thought: *soupir*, ça manque cruellement de data-testid et de id un peu partout…

}
await page.getByTestId('addRepoBtn').click()
await expect(page.getByTestId(`repoTr-${repositoryName}`)).toContainText(
repositoryName,
Expand Down
59 changes: 59 additions & 0 deletions playwright/integration-tests/admin-setup.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import { test } from '@playwright/test'
import { adminUser, clientURL, signInCloudPiNative } from '../config/console'

import {
createCluster,
createStage,
createZone,
deleteCluster,
deleteStage,
deleteZone,
} from '../e2e-tests/utils'

const zonesToDelete: string[] = []
const stagesToDelete: string[] = []
const clustersToDelete: string[] = []

test.describe('Integration tests for admin', { tag: '@integ' }, () => {
test.describe.configure({ mode: 'serial' })

test('Admin setup', async ({ page }) => {
await page.goto(clientURL)
await signInCloudPiNative({ page, credentials: adminUser })
await page.getByTestId('menuAdministrationBtn').click()
const zoneName = await createZone({ page })
zonesToDelete.push(zoneName)
// we need to attains 7 stages to be able to use associateStageNames argument in createCluster
await page.getByRole('link', { name: 'Console Cloud π Native' }).click()
const customStageName1 = await createStage({ page, check: true, stagesToDelete })
await page.getByRole('link', { name: 'Console Cloud π Native' }).click()
const customStageName2 = await createStage({ page, check: true, stagesToDelete })
await page.getByRole('link', { name: 'Console Cloud π Native' }).click()
const customStageName3 = await createStage({ page, check: true, stagesToDelete })
stagesToDelete.push(customStageName1)
stagesToDelete.push(customStageName2)
stagesToDelete.push(customStageName3)
const clusterName = await createCluster({
page,
zone: zoneName,
confidentiality: 'public',
associateStageNames: [customStageName1, customStageName2, customStageName3],
})
clustersToDelete.push(clusterName)
})

test('Cleanup admin test data', async ({ page }) => {
await page.goto(clientURL)
await signInCloudPiNative({ page, credentials: adminUser })
await page.getByTestId('menuAdministrationBtn').click()
for (const stageName of stagesToDelete) {
await deleteStage(page, stageName)
}
for (const clusterName of clustersToDelete) {
await deleteCluster(page, clusterName)
}
for (const zoneName of zonesToDelete) {
await deleteZone(page, zoneName)
}
})
})
124 changes: 0 additions & 124 deletions playwright/integration-tests/integration.spec.ts

This file was deleted.

Loading
Loading