Suite de tests E2E Cypress conteneurisée sous Docker et exécutée en parallèle (4 groupes), avec pipeline CI/CD via GitHub Actions.
Ce projet illustre une démarche d'industrialisation de tests : passer d'une exécution séquentielle longue à une exécution parallèle rapide, reproductible et portable via conteneur.
Cible de test : Sauce Demo — site de démonstration public dédié à la pratique de l'automatisation QA (e-commerce fictif : login, catalogue, panier, checkout).
- Conteneuriser une suite de tests Cypress dans une image Docker autonome et reproductible.
- Paralléliser l'exécution en répartissant les scénarios sur plusieurs groupes indépendants.
- Réduire le temps de run global tout en gardant une suite maintenable.
- Intégrer l'exécution dans un pipeline CI/CD (GitHub Actions), avec publication des rapports.
| Domaine | Technologie |
|---|---|
| Framework de test | Cypress |
| Langage | TypeScript |
| Conteneurisation | Docker |
| Orchestration locale | Docker Compose |
| CI/CD | GitHub Actions (matrix strategy) |
| Reporting | Mochawesome |
qa-docker-parallel-execution/
├── cypress/
│ ├── e2e/
│ │ ├── group-g0/ # Authentification
│ │ ├── group-g1/ # Catalogue produits
│ │ ├── group-g2/ # Panier
│ │ └── group-g3/ # Checkout
│ └── support/
├── .github/workflows/
│ └── parallel-tests.yml # Pipeline CI en 4 groupes parallèles
├── Dockerfile
├── docker-compose.yml
├── cypress.config.ts
└── package.json
Le découpage en 4 groupes (group-g0 à group-g3) reproduit une logique déjà utilisée sur un projet professionnel de 77 features, où cette répartition avait permis de réduire le temps de run total d'environ 59 % (~95 min → ~39 min). Ici, à l'échelle d'un projet de démonstration, le principe reste identique : indépendance des groupes, exécution simultanée, agrégation des rapports.
L'image Docker embarque Cypress et toutes ses dépendances, avec deux ajustements essentiels pour un mode headless stable :
- Taille du
/dev/shm: Chrome headless peut planter si la mémoire partagée est trop petite. Ledocker-compose.ymlalloue explicitement plus de mémoire partagée. - Fuseau horaire fixe : garantit des timestamps cohérents entre l'environnement local et le CI.
# Build de l'image
docker build -t qa-docker-parallel-execution .
# Run d'un groupe spécifique
docker run --shm-size=1g -e TZ=Europe/Paris qa-docker-parallel-execution \
npx cypress run --spec "cypress/e2e/group-g0/**/*.cy.ts"docker compose up --abort-on-container-exitChaque service du docker-compose.yml lance un groupe de tests en parallèle, dans un conteneur isolé.
Le pipeline .github/workflows/parallel-tests.yml utilise une matrix strategy pour lancer les 4 groupes en parallèle sur des runners distincts, puis publie les rapports Mochawesome en artefacts.
| Mode | Temps approximatif |
|---|---|
| Exécution séquentielle (1 groupe, tout le E2E) | Référence |
| Exécution en 4 groupes parallèles | ~-50 à -60 % selon la taille de la suite |
Mohamed Touaoua — QA Automaticien Ce projet fait partie de mon portfolio d'automatisation QA.