Aller au contenu

Tâche 3 du cadre de tests automatisés - Sécurisation des environnements et protection des identifiants

Billet #169 : Sécurisation des environnements et protection des identifiants du cadre d'automatisation
Type : Automatisation / Sécurité / Fiabilisation du cadre de test E2E
Composants concernés : e2e/playwright.config.ts, e2e/package.json, e2e/src/config/.env, e2e/src/config/.env.qa, e2e/src/tests/loginTest.spec.ts, e2e/src/tests/encrypt.spec.ts, e2e/src/utils/cryptojsUtil.ts, e2e/src/utils/encryptEnvFile.ts


1. Contexte

Après les tâches #167 et #168, le cadre de test E2E automatisé disposait déjà d'un socle technique et d'un premier parcours de connexion. La priorité suivante était de rendre cette base exploitable en conditions réelles, sans laisser d'identifiants lisibles dans les scripts ni multiplier les réglages manuels selon l'environnement.

Un second enjeu est apparu pendant l'exécution : la présence d'artefacts Playwright hors du sous-projet e2e/ introduisait de l'ambiguïté et pouvait provoquer des erreurs de chargement. Il a donc fallu sécuriser à la fois les secrets et le cadre d'exécution.


2. Objectif

Cette troisième étape visait à :

  • séparer proprement les identifiants de test du code source ;
  • permettre un changement d'environnement simple via NODE_ENV ;
  • ajouter une couche de protection pour les valeurs sensibles à l'aide d'une clé d'exécution (SALT) ;
  • stabiliser l'usage de Playwright autour du seul dossier e2e/ ;
  • rendre les scripts de test plus faciles à lire pour une partie prenante non-technique.

3. Implémentation livrée

3.1 — Gestion dynamique des environnements avec dotenv

Le fichier e2e/playwright.config.ts charge désormais automatiquement le bon fichier de configuration (.env ou .env.qa) selon la valeur de NODE_ENV fournie au moment de l'exécution.

Ce choix évite de dupliquer les scénarios de test par environnement et prépare une utilisation plus propre en local, en QA puis plus tard en CI/CD.

3.2 — Protection des identifiants de test

Les fichiers e2e/src/utils/cryptojsUtil.ts et e2e/src/utils/encryptEnvFile.ts introduisent un mécanisme simple de chiffrement/déchiffrement des valeurs sensibles à partir d'une clé SALT injectée à l'exécution.

Le test e2e/src/tests/loginTest.spec.ts consomme ensuite ces valeurs déchiffrées au moment du run. L'objectif n'était pas d'ajouter de la complexité inutile, mais de réduire l'exposition des identifiants dans les flux de travail quotidiens et dans le dépôt.

3.3 — Assainissement du périmètre Playwright

L'investigation menée pendant cette tâche a montré qu'une installation Playwright restée à la racine du dépôt pouvait entrer en conflit avec celle du sous-projet e2e/, jusqu'à provoquer une erreur de double chargement du runner.

La décision a donc été prise de centraliser toute l'installation Playwright dans e2e/ et de supprimer les artefacts concurrents hors de ce périmètre. Ce nettoyage clarifie la responsabilité du sous-projet E2E et rend l'exécution plus prévisible.

3.4 — Exécution réutilisable et lisibilité QA

Des commandes réutilisables ont été ajoutées dans e2e/package.json pour lancer plus facilement les scénarios courants, notamment le test de chiffrement QA.

En parallèle, les scripts automatisés de pages/, tests/ et utils/ ont été commentés dans un langage volontairement simple et non technique. Ce choix répond à une réalité d'usage : le cadre de test doit rester lisible et maintenable par un profil AQ orienté validation, et pas uniquement par un développeur.


4. Validation opérationnelle

Les vérifications exécutées pendant cette intervention ont confirmé que la nouvelle chaîne de sécurité et d'environnement est bien opérationnelle :

  • exécution validée depuis le dossier e2e/ avec npx playwright test src/tests/encrypt.spec.ts ;
  • commande réutilisable npm run test:encrypt:qa testée avec succès ;
  • résultat observé : 3 passed (1.9s), avec chiffrement effectif du fichier .env.qa sur les trois navigateurs configurés.

5. Résultat opérationnel

La tâche #169 fait franchir au cadre de test un cap de maturité important : les tests ne reposent plus sur des valeurs saisies en dur ni sur une exécution fragile dépendante du contexte local.

À l'issue de cette étape, le projet dispose désormais :

  • d'une base E2E capable de changer d'environnement sans réécriture des scénarios ;
  • d'un mécanisme simple de protection des identifiants de test ;
  • d'un périmètre Playwright assaini et recentré sur e2e/ ;
  • d'une meilleure ergonomie d'exploitation pour la QA grâce à des commandes stables et à une documentation directement embarquée dans les scripts.

La suite logique portera sur l'intelligence des données (Tests dirigés par les données et génération avec Faker).