Doctests
Tous les articles
POM · Playwright
Mouhamed Sané
  • playwright
  • pom
  • fixtures

POM Playwright : 5 anti-patterns qui coûtent cher

new Page(page) dans les specs, locators CSS, fixtures absentes, tags manquants, données en dur. Ce que ça casse en CI, et par où commencer.

Un Page Object Model ne rend pas une suite stable. Il rend les changements localisés. Quand le POM est faux, chaque évolution d’écran casse dix specs au lieu d’une.

Voici les cinq écarts que je vois le plus souvent, et ce qu’ils coûtent vraiment.

1. new LoginPage(page) dans la spec

La page est construite à la main dans le test. Les fixtures test.extend() ne servent plus à rien : pas de setup partagé, pas de worker isolé, chaque spec réinvente le câblage.

Correction. Déclarer les pages dans fixtures/test.fixture.ts et les recevoir en argument du test.

2. Les locators vivent dans la spec

page.locator('.inventory_item') à côté du scénario couple le test au DOM. Au prochain changement de classe, tu cherches la chaîne dans tout le dossier tests/.

Correction. getByRole ou getByTestId dans la page object. La spec ne parle que d’actions métier.

3. nth() sans filtre

locator.nth(5) dépend de l’ordre du DOM. Un bandeau, une pub, une ligne de plus, et le test clique ailleurs. C’est une erreur intermittente déguisée en sélecteur.

Correction. .filter({ hasText }) ou un test id stable.

4. Aucune assertion finale

Le test clique, remplit, et se termine. Un écran d’erreur passe au vert. Playwright ne peut pas réessayer une assertion qui n’existe pas.

Correction. Une assertion web-first en fin de parcours, ou une méthode expectXxx() sur la page object.

5. Pas de tags

Trente-cinq scénarios sans @smoke, @critical ou @regression. Tu ne peux pas lancer un sous-ensemble avant une mise en production. La CI exécute tout, ou rien.

Correction. Une convention courte, appliquée dans le titre du test. Le filtre grep devient un outil, pas un souhait.

Par où commencer

Si la suite existe déjà, ne réécris pas les pages objects d’un coup. Un Audit Flash (490 € HT, 48 h) nomme les occurrences et l’ordre. Tu corriges ensuite, ou tu cadres un Stabilization Sprint.

Si tu n’as pas encore de suite, poser le POM à la main pendant trois mois est le chemin le plus cher. Le Setup Test Architect livre la structure, les fixtures et la CI, puis tu en restes propriétaire.