Cypress ou Playwright pour tester un tunnel d’achat WooCommerce ? Plutôt que de trancher sur la réputation des outils, le même scénario — recherche produit, ajout au panier, application d’un code promo, paiement par Stripe en mode test — a été implémenté deux fois, une fois par outil, puis exécuté trente fois de suite sur la même CI.
Les deux outils partagent une philosophie proche : attente automatique des éléments, capture vidéo des échecs, exécution en environnement isolé. Les différences se sont révélées surtout à l’usage, sur des points que la documentation seule ne permettait pas de trancher.
Le tunnel d’achat comme scénario commun
Le même parcours a été codé indépendamment dans les deux syntaxes, sans copier la logique de l’un vers l’autre pour éviter de biaiser artificiellement la comparaison en faveur du style d’un des deux outils.
// Version Playwright
await page.goto('/boutique/');
await page.getByPlaceholder('Rechercher un produit').fill('lampe');
await page.getByRole('button', { name: 'Ajouter au panier' }).first().click();
await page.goto('/panier/');
await page.getByLabel('Code promo').fill('BIENVENUE10');
await page.getByRole('button', { name: 'Appliquer' }).click();
Comparer sur des critères mesurables

| Critère | Playwright | Cypress |
|---|---|---|
| Temps moyen de la suite complète (12 tests) | 3 min 40 | 6 min 15 |
| Tests instables sur trente exécutions | 1 | 4 |
| Gestion native du multi-onglet (paiement redirigé) | Oui | Non, contournement requis |
| Exécution multi-navigateurs sans configuration additionnelle | Chromium, Firefox, WebKit | Chromium, Firefox |
| Enregistrement des traces réseau intégré | Oui | Via plugin tiers |
Le point de bascule : la redirection Stripe
L’étape de paiement redirige temporairement vers une page hébergée par Stripe, dans un nouvel onglet selon la configuration du thème. Cypress, historiquement construit autour d’un seul contexte de navigateur par test, a nécessité un contournement via l’ouverture directe de l’URL de paiement plutôt qu’un clic réel sur le bouton, ce qui affaiblit la fidélité du test au parcours réel. Playwright gère nativement ce changement d’onglet via l’API context.waitForEvent('page'), sans contournement.
La stabilité, critère le plus déterminant
Sur les trente exécutions, les échecs instables côté Cypress concernaient systématiquement l’étape de code promo, où l’attente automatique ne couvrait pas correctement un appel AJAX différé de WooCommerce. Le correctif a nécessité un cy.wait() explicite, une pratique que la documentation de Cypress elle-même déconseille mais qui restait la solution la plus simple disponible.
- Playwright : attente automatique suffisante sur l’appel AJAX du code promo
- Cypress : nécessité d’un
cy.wait()fixe de 500 millisecondes - Aucun des deux outils n’a produit de faux positif sur le paiement lui-même
Le critère qui compte le plus n’est pas la syntaxe préférée d’une équipe, mais la fréquence à laquelle un test échoue pour une mauvaise raison.
Ce que ce comparatif ne couvre pas
Puppeteer, déjà remplacé par Playwright sur un projet antérieur de l’agence, n’a pas été réintégré à cette comparaison : le choix entre ces deux outils avait déjà été tranché. Ce comparatif se limite donc à départager Playwright et Cypress sur un scénario e-commerce représentatif.
Notre verdict
Sur ce projet précis, Playwright l’emporte nettement : suite 41 % plus rapide, quatre fois moins d’instabilité, et une gestion native de la redirection Stripe qui évite un contournement fragile. Cypress reste un choix défendable pour une équipe déjà formée dessus et sur un parcours sans redirection externe, mais le tunnel d’achat WooCommerce, avec son paiement délégué, a clairement penché en faveur de Playwright.