![](https://i.imgur.com/yzHpJt7.jpg) --- <!-- C'est l'histoire d'un incident --> [ticket](https://www.wrike.com/open.htm?id=880062212) ![](https://i.imgur.com/LFTokwJ.png) --- ``` datalayer.push( { "event":"purchase", "ecommerce":{ "transaction_id":"SLMP040445134", "value":" 325.00", "shipping":"99.00", "tax":"78.84", "currency":"EUR", "coupon":"2 mois d&#039;abonnement offerts", "items":[ { "item_name":"Tout inclus", "price":"49.00", "item_category":"Offre", "quantity":"1" }, { "item_name":"Boîte(s) à clés", "price":"325.00", "item_category":"Matériel", "quantity":"1" } ] }, "gtm.uniqueEventId":1 } ) ``` --- ## Contexte - code vieux comme Mathusalem (pas de panther) - spaghetti code => difficile à tester (unitaire, integration) --- ## Etat de l'art Symfony - MaSuperLibDeTest + Selenium - [symfony/panther](https://github.com/symfony/panther) ![](https://media.giphy.com/media/k7LvfbDPWR0Uxcqm6f/giphy.gif) --- ## test de non-regression: datalayer - Js "avancé" (VueJS - ShadowDOM) - parcours interrompu par envoi de lien par mail pour poursuivre le parcours - Paiement en iframe - comment evaluer du JS ? --- ## Playwright * by Microsoft * test très simple à écrire en Javascript (assert with jest) * auto waiting :fire: * fine tuning du contexte (browsers, android/ios, devices,slow connection, htaccess handling) * plugins (screenshot, video recording, test de regression visuelle) * tooling complet: CodeGen, Debug Mode, Inspector, Trace viewer --- ## Demo npx playwright codegen --- ![](https://i.imgur.com/zZPUUqP.gif) --- ![](https://i.imgur.com/OSQsIbb.gif) <!-- non headless, debug mode, code rec, timeout, REMOTE à la lephare/ansible, slow-mo, hack lien reçu par mail caché dans le DOM pour ouvrir dans nouvel onglet --> --- ## Automatiser le test - headless en CI - REMOTE comme nous l'utilisons pour lephare/ansible deploy.yml --- ## Monter un environnement de testing "iso-prod" - complexe: services bdd, elasticsearch, redis etc ... - fixtures: maintenance importante, jamais les vraies données, cas possible - trop long à monter en CI --- ## Ne pas monter un environnement de testing <!-- finalement on parle d'une preprod, dont nous disposons déjà donc autant l'utiliser --> <!-- on test en preprod, après avoir déployé --> <!-- attention aux connexions avec WS tiers --> <!-- ok avec cela car finalement on automatise ce que fait un PO en recette --> --- ![](https://i.imgur.com/GZ5kzRr.png) --- ## References ![](https://i.imgur.com/53WzTt4.png) * https://github.com/microsoft/playwright * [exemple de test](https://gitlab.lephare.io/projets/imaprotect/espace-public/-/blob/develop/tests/e2e/datalayer_souscription.spec.js) * MR de Nathan
{"metaMigratedAt":"2023-06-17T02:25:32.304Z","metaMigratedFrom":"YAML","title":"Test E2E avec Playwright","breaks":true,"description":"View the slide with \"Slide Mode\".","contributors":"[{\"id\":\"90d1cbfc-f7d6-4f9c-b2eb-42d2c1e2f52f\",\"add\":4588,\"del\":3943}]"}
    470 views