Aller au contenu

Session 21 — Stack QA pédagogique (Squash TM + Selenium + Robot Framework + Filebrowser)

Durée : ~5h
Objectif : Déployer la Phase 9 — stack QA pédagogique complète sur le NAS Synology


Résumé exécutif

Déploiement complet de la stack QA Phase 9 : - Squash TM v8 sur PostgreSQL 16 (abandonnement MySQL → PostgreSQL) - Selenium Grid avec noVNC pour la visualisation en direct - Test Runner polyglotte (Robot Framework + pytest) - Filebrowser pour l'upload de scripts - Squash Orchestrator avec clé SSH RSA fixe (token JWT permanent) - Premier test Robot Framework PASS (smoke-test API) - Premier test Selenium PASS avec Chrome visible dans VNC


Décisions architecturales

Décision Raison
PostgreSQL 16 pour Squash TM Squash TM v8 ne supporte pas MySQL — uniquement MariaDB et PostgreSQL
Variables SQTM_DB_* L'image v8 lit ses variables via install-script.sh avant Spring Boot
Healthcheck wget curl absent de l'image Squash TM v8
Token JWT permanent Clé SSH RSA baked dans PUBLIC_KEY → même token sur tous les déploiements
URL publique dans scripts Selenium IP 82.66.134.80 → pas de popup Chrome Private Network Access
PERFSHOP_FRONTEND_URL Variable d'env pour adapter l'URL selon l'environnement (prod/local)
Filebrowser port 8080 interne Port 80 interdit pour les containers non-root sur Synology

État final des services sur le NAS

Container Image Statut
perfshop-squash-db postgres:16 ✅ Healthy
perfshop-testmgmt squashtest/squash-tm:latest ✅ Healthy — PostgreSQL confirmé
perfshop-selenium selenium/standalone-chrome:latest ✅ Up — noVNC accessible
perfshop-test-runner python:3.11-slim ✅ Up
perfshop-orchestrator squashtest/squash-orchestrator:latest ✅ Up — clé SSH fixe
perfshop-filebrowser filebrowser/filebrowser:latest ✅ Up — admin/admin
perfshop-squash-seed python:3.11-slim ✅ Exited(0) — projet créé

URLs opérationnelles

Service URL Credentials
Squash TM https://perfshop-squash.perfshop.io/squash admin/admin
Selenium VNC https://perfshop-selenium.perfshop.io
Filebrowser https://perfshop-files.perfshop.io admin/admin

Tests validés

Test Résultat Notes
smoke-test.robot (API HTTP) ✅ PASS Appelle http://perfshop-app:8080/api/products directement
CT-002-prix-coherence.robot (Selenium) ⚠️ Partiel Chrome visible dans VNC, produits chargés, assertion prix à valider

Bugs résolus

# Bug Sévérité Correction
1 Variables DB_TYPE/DB_HOST ignorées par Squash TM v8 BLOQUANT SQTM_DB_TYPE/SQTM_DB_HOST
2 MySQL non supporté par Squash TM v8 BLOQUANT → PostgreSQL 16
3 Healthcheck curl absent MOYEN wget -q --spider
4 SPRING_PROFILES_ACTIVE: postgresql ignoré BLOQUANT → variables SQTM_*
5 Ports Orchestrator supposés 8080 BLOQUANT → 7774/7775/7776/38368
6 PUBLIC_KEY format PEM refusé BLOQUANT → format SSH ssh-rsa AAAA...
7 Chrome Private Network Access popup MOYEN → URL publique dans scripts
8 Filebrowser port 80 interdit Synology MOYEN → port 8080 interne
9 Filebrowser config ignorée MOYEN → montage sur /config/settings.json
10 MySQL healthcheck v8.4 auth requis MINEUR -u root -p${PASSWORD}

Pending session 21

  • [ ] SSH channel Orchestrator → test-runner (OpenSSH server dans le Dockerfile test-runner)
  • [ ] Créer les exigences et cas de test dans Squash TM (IHM ou API REST)
  • [ ] Configurer le serveur d'automatisation dans Squash TM (token JWT disponible)
  • [ ] Lancer un test depuis Squash TM et observer les résultats

Erreurs Claude (pour le bilan vibe coding)

# Erreur Sévérité Impact
1 Variables DB_TYPE au lieu de SQTM_DB_TYPE CRITIQUE 3 cycles de debug
2 MySQL proposé au lieu de PostgreSQL pour Squash TM v8 CRITIQUE Refactoring complet
3 SPRING_PROFILES_ACTIVE proposé avant lecture du script d'entrée MAJEUR 2 cycles de debug
4 Ports Orchestrator supposés 8080 MAJEUR Config IHM incorrecte
5 PUBLIC_KEY format PEM proposé MAJEUR Container en crash loop
6 SSH_CHANNEL_* ajouté en urgence sans SSH server MINEUR Design incomplet
7 Plusieurs tentatives --host-resolver-rules Chrome (Chrome crash) MINEUR Perte de temps