Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TECH] Arranger encore l'utilisation de playwright (PIX-4174) #706

Merged
merged 7 commits into from
Sep 10, 2024
Merged
33 changes: 33 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,36 @@ Lire la documentation dans ce répertoire.

Lire la documentation dans ce répertoire.

### Tests e2e

Les tests e2e utilisent Playwright.

#### Erreurs dans les tests e2e

Dans la CI il est surprenant de noter que certaines erreurs ne font pas échouer
la CI :

![capture d'écran](./screenshot-test:e2e:ci-error.png)

De plus il est également surprenant de noter qu'en local l'exécution de la
commande `npm run test:e2e` provoque toujours des erreurs (par exemple `6
failed`) et renvoie toujours un code d'erreur.

Cela s'explique par le fait que Playwright dispose d'un mécanisme intégré de
gestion des flaky :
> "flaky" - tests that failed on the first run, but passed when retried

Le fonctionnement est donc le suivant : tant que l'ensemble des tests exécutés
par Playwright ne comporte pas de tests en erreur, l'exécution renvoie un code
de retour `0`, ce qui est une réussite par le shell. C'est à dire que, s'il y a
des `tests passed` et des `tests flaky` (par exemple `Error:
expect(locator).toBeVisible(), 5 flaky, 2 passed`), la CI considèrera que cette
exécution de tests e2e est une réussite, même si certaines exécutions de tests
sont indiquées en erreur.

De plus, les tests e2e sont exécutés dans CircleCI. Or CircleCI positionne une
variable d'environnement `CI`. Et cette variable est exploitée dans le fichier
`playwright.config.ts`. Aussi pour avoir des tests e2e aussi similaires que
possibles sur la CI et un poste de développement on a décidé de positionner
explicitement la variable `CI` dans le script npm `test:e2e:ci`.

4 changes: 3 additions & 1 deletion pix-pro/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@
"preview": "nuxt preview",
"slicemachine": "start-slicemachine",
"test": "NODE_ENV=test vitest",
"test:e2e": "npx playwright test --ui",
"test:e2e:install": "playwright install",
"test:e2e": "playwright test --ui",
"test:e2e:ci": "CI=true playwright test",
"start:nginx": "PORT=80 erb servers.conf.erb > nginx.conf && docker-compose up"
},
"devDependencies": {
Expand Down
4 changes: 2 additions & 2 deletions pix-site/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
"preview": "nuxt preview",
"slicemachine": "start-slicemachine",
"test": "NODE_ENV=test vitest",
"test:e2e": "npx playwright test --ui",
"test:e2e:install": "playwright install",
"test:e2e:ci": "playwright test",
"test:e2e": "playwright test --ui",
"test:e2e:ci": "CI=true playwright test",
"start:nginx": "PORT=80 erb servers.conf.erb > nginx.conf && docker-compose up"
},
"devDependencies": {
Expand Down
Binary file added screenshot-test:e2e:ci-error.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.