Automatiser les tests d’application : retour d’expérience sur Selenium et les simulateurs d’interface 

Derrière les produits LetReco, il y a des choix technologiques forts — parfois invisibles, mais toujours pensés pour garantir sécurité, transparence et souveraineté des données.
À travers une série d’articles plus techniques, nous avons envie de partager ce qui se passe dans les coulisses : nos outils, nos méthodes, et parfois aussi nos questionnements.

Dès qu’un projet prend de l’ampleur et mobilise plusieurs collaborateurs, les tests manuels ne suffisent plus : l’automatisation devient essentielle.

Comme le souligne Di Meglio et al. (2025)*, les tests automatiques d’interface graphique renforcent la qualité du produit tout en réduisant les coûts de recette. 

Vérifier un produit en profondeur demande du temps et des ressources. C’est pourquoi l’automatisation s’impose progressivement dans le domaine de la qualité logicielle : tests d’API, tests de performance, tests d’intégration… Pour les clients de LetReco, l’enjeu est clair : réduire les coûts et améliorer la qualité

Même avec une couverture étendue, une interrogation persiste parfois : pourquoi un scénario échoue-t-il en test manuel alors qu’il réussit dans la suite automatisée ? C’est précisément pour lever ces doutes et fiabiliser l’ensemble du processus que LetReco a développé une stratégie robuste. 

L’article suivant présente cette stratégie en détail : la manière dont l’équipe de LetReco maintient et fait évoluer quotidiennement ses tests graphiques afin d’offrir à ses clients une automatisation fiable et durable. 

Pourquoi automatiser les tests d’interface ?  

L’automatisation renforce la qualité du produit, accélère le cycle de livraison et libère du temps pour concevoir des fonctionnalités à forte valeur ajoutée. 

Notre banc de test actuel couvre déjà les API sous l’angle fonctionnel, la performance et la non-régression. 
Cependant, les nouvelles interfaces graphiques écrites en React ajoutent une complexité : les anomalies peuvent provenir soit du code JavaScript déjà contrôlé par des tests unitaires et d’intégration en TypeScript soit de son exécution dans le navigateur. À quoi bon valider une interface en test si celle-ci échoue sur le poste d’un utilisateur ? 

Pour répondre à ces enjeux, l’équipe a exploré plusieurs approches pour valider nos applications : simulateurs d’interface, Selenium et Cypress. Ce retour d’expérience synthétise nos découvertes et les bonnes pratiques consolidées au fil de nos essais. 

Simuler l’utilisation réelle d’une application 

Playwright comme environnement simulé 

L’une des premières approches consistait à exécuter l’application dans un environnement simulé basé sur Playwright, capable de faire tourner le front-end en arrière-plan. 

Le principe :  

  • Placer un jeu de captures de référence dans un dossier  
  • Démarrer l’application,   
  • Laisser le framework comparer les nouvelles captures d’écran avec celles d’origine  
  • Générer un rapport détaillé. 

Le concept paraît basique, pourtant il offre une puissance remarquable. Une fois l’application active en arrière-plan, nous automatisions la saisie de formulaires, la création de lettres et de contacts, puis la capture de l’état final sous forme d’image. Cette étape, en apparence secondaire, joue un rôle essentiel : elle valide visuellement le rendu de l’interface et garantit la cohérence du résultat, sans action manuelle. 

Playwright ne se limite donc pas à remplir des champs ; il reproduit un parcours utilisateur complet, depuis la saisie initiale jusqu’à la validation finale. 

Selenium et Cypress : les références de l’automatisation 

Lorsqu’il s’agit d’automatiser des tests d’interface, Selenium et Cypress figurent parmi les références incontournables. 

Les forces de Selenium 

Selenium se distingue par sa robustesse et sa compatibilité avec une large gamme de navigateurs et d’environnements. Il prend en charge les alertes système, certificats, fichiers à télécharger, iframes multiples. Là où Cypress présente encore certaines limites. 

Bien que sa configuration initiale soit plus exigeante, l’outil devient fluide une fois en place.Selenium permet d’exécuter des scénarios complexes de manière répétable et fiable et s’intègre dans les pipelines CI/CD. 

Ces frameworks s’intègrent aisément dans une chaîne d’intégration continue, déclenchant des campagnes de tests à chaque évolution du code. Cette automatisation renforce la stabilité du produit tout en supprimant la dépendance aux validations manuelles. 

L’expérience pratique : tests, captures et retours visuels 

Au-delà de la théorie, nous avons conduit plusieurs expérimentations concrètes. L’objectif restait clair : observer le déroulement des tests, valider le bon enchaînement des scénarios et consigner les résultats. 

L’apport principal réside dans le retour visuel : à la fin de chaque scénario, une capture d’écran confirme le rendu attendu. Cette validation visuelle apporte une clarté immédiate sur le succès ou l’échec du test. Contrairement à certains outils qui se limitent à une simple barre de progression, cette approche offre une compréhension précise de ce qui s’affiche réellement à l’écran. Un atout décisif pour diagnostiquer rapidement un écart entre le comportement prévu et observé. 

Le Page Object Model 

La mise en œuvre de Selenium repose sur le Page Object Model, un schéma qui décrit l’application testée via du code Java ou Kotlin. Cette modélisation demande un effort initial conséquent, mais l’intégration de l’IA simplifie désormais la génération et la maintenance de ces modèles. 

Selenium Grid pour couvrir plusieurs environnements 

Pour garantir une couverture complète des différentes interprétations du JavaScript selon les navigateurs, nous avons déployé Selenium Grid. Cette infrastructure exécute les scénarios sur plusieurs environnements en parallèle et consolide les résultats dans un rapport unifié, navigateur par navigateur. 

Les défis rencontrés 

Une configuration initiale exigeante 

La mise en place de Selenium demande plusieurs étapes de paramétrage avant exécution d’un scénario complet :  

  • Configuration des navigateurs,  
  • Installation des drivers  
  • Ajustements liés à l’environnement d’exécution. 

Le cas spécifique de l’authentification par certificat client 

Dans les produits de sécurité, l’authentification par certificat client est souvent complexe à déployer en environnement automatisé.  

Deux solutions pragmatiques se sont révélées efficaces : 

  1. Profil navigateur préconfiguré  

Importer le certificat PKCS#12 dans un profil Chrome ou Firefox et lancer WebDriver en réutilisant ce profil. Cette approche simplifie l’exécution des tests, mais complique la gestion et l’isolation des profils en CI/CD. 

  1. Proxy local présentant le certificat en amont  

Démarrer un proxy embarqué (mitmproxy, BrowserUp/LittleProxy) configuré pour établir la connexion TLS vers le serveur en présentant le certificat client. Puis configurer Selenium pour pointer vers ce proxy. Cette option centralise la gestion TLS et facilite l’inspection des échanges, au prix d’un travail supplémentaire sur la confiance des certificats et la configuration du proxy. 

L’importance de la capture et du suivi des tests 

Lancer des scénarios ne suffit pas : il convient de consigner l’exécution, archiver les captures d’écran, tracer les erreurs et fournir des preuves exploitables pour les développeurs. 

Conclusion 

Automatiser les tests n’est plus un confort mais une nécessité. Selenium, Cypress ou Playwright offrent une puissance considérable, à condition de s’appuyer sur une configuration solide et une méthodologie claire.  

Les simulateurs d’interface permettent de reproduire fidèlement des parcours utilisateurs complexes, enchaînent l’envoi de lettres, la création de contacts et la validation visuelle des résultats. Cette approche réduit les erreurs humaines et accélère le développement.  

Notre retour d’expérience montre que l’automatisation n’élimine pas toutes les difficultés, mais qu’elle constitue un socle robuste pour renforcer la qualité logicielle, réduire le temps de test et fluidifier la collaboration entre développeurs et testeurs. En appliquant quelques pratiques éprouvées et en sélectionnant les bons outils, une équipe peut transformer des validations manuelles répétitives en un processus automatisé, fiable et pérenne. 

* Di Meglio, S., Starace, L. L. L., Pontillo, V., Opdebeeck, R., De Roover, C., & Di Martino, S. (2025). Investigating the adoption and maintenance of web GUI testing : Insights from GitHub repositories. Information and Software Technology, 189. 

Les auteurs de cet article : 

Asma SEBAI, Responsable qualité 

Ingénieure en automatisation de tests et responsable qualité, je m’appuie sur dix ans de développement et mon goût du fonctionnel pour valoriser l’expertise QA, alliant exploratoire et automatisation. Passionnée d’innovation autant que de cinéma, je garde la tête dans les étoiles de l’automatisation tout en cherchant chaque jour à améliorer la qualité logicielle. 

Amal CHAIEB, Ingénieure qualité 

Ingénieure en informatique et ancienne développeuse, aujourd’hui spécialisée dans le test et l’automatisation, je conçois des solutions intelligentes et performantes du front au back. Passionnée par la performance, la sécurité et la stabilité, je m’assure de la fiabilité des certificats, des chaînes de confiance et des optimisations, tout en continuant à apprendre et à coder chaque jour. 

Abdelmouheimen TRABELSI, Architecte technique 

Je me concentre principalement sur le développement de la solution LetReco. Avec une expérience en logistique, je veille à la sécurité applicative et à la fiabilité des systèmes SaaS, en garantissant robustesse et agilité pour tester rapidement de nouvelles solutions. Comme sur un terrain de foot, je repousse sans cesse mes limites pour anticiper les imprévus.