Tester son site web avec 𝐏𝐚𝐧𝐭𝐡𝐞𝐫
👉 Tout.e développeur/développeuse 𝐏𝐡𝐩/𝐒𝐲𝐦𝐟𝐨𝐧𝐲 a entendu parler et a pratiqué des tests unitaires avec 𝐏𝐡𝐩𝐔𝐧𝐢𝐭.
C’est devenu au fil du temps une brique essentielle du développement Web et des CI/CD.
👉 Tests unitaires, tests d’intégration, tests fonctionnels (ou tests End To End).
Je ne vais pas revenir sur les définitions je vous renvoie à un article de https://www.thibaud-duthoit.fr/blog/comprendre-differents-types-tests qui éclaire sur le rôle des uns et des autres (je vois encore des débats et confusion chez pas mal de dev).
👉 Je vais parler ici d’un outil moins connu et pourtant très utile pour les tests fonctionnels : 𝐏𝐚𝐧𝐭𝐡𝐞𝐫, ça vous parle?
Lorsque que vous utilisez les 𝐖𝐞𝐛𝐓𝐞𝐬𝐭𝐂𝐚𝐬𝐞 de 𝐒𝐲𝐦𝐟𝐨𝐧𝐲, vous pouvez accéder à des urls, simuler le remplissage de formulaires, cliquer sur des liens du site que vous testez.
C’est très utile et ça marche souvent...sauf que ça n’utilise pas un vrai navigateur : on teste les objets Request et Response de Symfony, pour faire simple, ce qui est déjà bien.
Le problème, avec les WebTestCase, est que la plupart des sites actuels mélangent allègrement 𝐏𝐇𝐏 et Framework 𝐉𝐚𝐯𝐚𝐬𝐜𝐫𝐢𝐩𝐭 pour construire les pages.
Du coup, nos WebTestCase n’accédant pas aux pages transformées par le javascript, elles ne peuvent pas les tester dans ce cas de figure.
𝐀𝐯𝐞𝐜 𝐏𝐚𝐧𝐭𝐡𝐞𝐫, 𝐨𝐧 𝐫𝐞́𝐚𝐥𝐢𝐬𝐞 𝐥𝐞 𝐦𝐞̂𝐦𝐞 𝐬𝐜𝐞́𝐧𝐚𝐫𝐢𝐨 𝐪𝐮𝐞 𝐥𝐞 𝐧𝐚𝐯𝐢𝐠𝐚𝐭𝐞𝐮𝐫 (𝐅𝐢𝐫𝐞𝐟𝐨𝐱 ou 𝐂𝐡𝐫𝐨𝐦𝐞).
Et vous savez quoi?
𝘢𝘣𝘴𝘵𝘳𝘢𝘤𝘵 𝘤𝘭𝘢𝘴𝘴 𝘗𝘢𝘯𝘵𝘩𝘦𝘳𝘛𝘦𝘴𝘵𝘊𝘢𝘴𝘦 𝘦𝘹𝘵𝘦𝘯𝘥𝘴 𝘞𝘦𝘣𝘛𝘦𝘴𝘵𝘊𝘢𝘴𝘦
Donc tout le travail effectué avec PhpUnit n’est pas perdu, loin de la.
Pour aller au plus proche de la source, vous pouvez lire cet article : https://symfony.com/blog/introducing-symfony-panther-a-browser-testing-and-web-scrapping-library-for-php