Files
oto-enterprise-os-dtp/tests/README.md
T
Claude Code DTP Worker 1a87b22fd7 [DTP-Worker] Sprint 1 · Baseline QA Playwright (4 endpoints) + fix gate rouge
Livrable QA Sprint 1 (roadmap §Sprint 1 · GAP_ANALYSIS §7) : projet Playwright
auto-contenu sous tests/, data-driven sur e2e/routes.json pour /waf-home /crm
/qa /choisir-mon-unite. 4 contrôles/route : status<400 · HTML titré+lang ·
brand luxury (#0a0a12/#f0b429 + Fraunces/Cormorant) · zéro erreur JS/5xx.
Cible via DTP_BASE_URL (aucune URL codée en dur). Zéro invention de chiffres (#6).

- tests/{playwright.config.ts,package.json,tsconfig.json,.gitignore,README.md}
- tests/e2e/{routes.json,smoke.spec.ts,_shared/contract.ts}
- CI : job e2e-baseline manuel (workflow_dispatch) dans .gitea/workflows/ci.yml
  — hors gate push/PR (exige serveur live), Gitea Actions only (#2)
- Fix : gate CI rouge sur HEAD (guard flaguait sa propre doc de test négatif)
  → escape hatch documenté ci-allow. Les 3 scripts du gate repassent verts.
- GAP_ANALYSIS §7 : critère Baseline Playwright →  (exécution VPS différée)
- daily report 2026-07-30 (session 2)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 01:02:04 +00:00

3.4 KiB
Raw Blame History

QA · Baseline E2E Playwright · OTO Enterprise OS DTP

Livrable Sprint 1 (roadmap 04_roadmap/ROADMAP_8_WEEKS_OR_LESS.md §Sprint 1 · QA · GAP_ANALYSIS_SPRINT1 §7) — « Baseline Playwright (/crm /waf-home /qa /choisir-mon-unite) ».

Agent : QA · Score cible : 4Big ≥ 95/100 · Portée : baseline (smoke + brand), étendue jusqu'à couverture complète en S7.


1. Ce que couvre la baseline

Projet Playwright auto-contenu (tests/), data-driven sur e2e/routes.json. Pour chacune des 4 routes Sprint 1, quatre contrôles :

Test Vérifie Nature
status < 400 Le serveur répond (200 ou redirection, jamais 4xx/5xx) Santé
HTML titré + lang <title> non vide + attribut <html lang> (multilingue FR/EN/ES) Structure
brand luxury Tokens #0a0a12 / #f0b429 et police Fraunces/Cormorant présents dans le CSS servi Brand (CLAUDE.md #4)
zéro erreur JS / 5xx Aucune exception JS non capturée ni réponse ≥ 500 Santé

Zéro invention (CLAUDE.md #6) : aucun prix, superficie ni disponibilité n'est asserté. On teste la santé et le brand, pas le contenu métier.

Routes protégées (/crm, /qa, marquées gated dans routes.json) : si un mur de login est servi (non authentifié), le test de brand est annoté et sauté plutôt qu'échoué — la baseline reste tolérante. Couverture authentifiée = étape S2+.

2. Prérequis

  • Node ≥ 18 (runner VPS : node:20-bookworm, cf. ci/README.md).
  • Une cible atteignable via DTP_BASE_URL.
cd tests
npm install
npm run install:browsers      # playwright install --with-deps chromium webkit

3. Exécution

La cible est entièrement configurable — aucune URL codée en dur.

# Domaine public
DTP_BASE_URL=https://otov7.com npm test

# VPS interne (certificats auto-signés tolérés)
DTP_BASE_URL=http://153.75.250.214 npm test

# Un seul fichier
DTP_BASE_URL=https://otov7.com npm run test:smoke

# Rapport HTML
npm run report

Défaut si DTP_BASE_URL absent : https://otov7.com.

4. Exécution en CI (Gitea Actions · VPS)

Le job E2E est manuel (workflow_dispatch) dans .gitea/workflows/ci.yml — il n'est pas dans le gate de push/pull_request car il exige un serveur live et des navigateurs installés (≠ des checks statiques constraints-guard/validate-json/ check-docs, eux toujours actifs).

Déclenchement : Gitea → repo michel/oto-enterprise-os-dtpActions → CI → Run workflow, avec DTP_BASE_URL en variable/secret du repo.

⚠ Nécessite le runner act_runner enregistré (label ubuntu-latest) — cf. ci/README.md §4. Étape ops hors périmètre de ce worker (touche au VPS).

5. Statut & extension

  • S1 (présent) : baseline smoke + brand sur 4 routes. authorable/validable en-repo.
  • S2S4 : couverture authentifiée (login CRM), parcours /choisir-mon-unite (projet → bâtiment → étage → unité), pipeline CRM.
  • S7 : audit 4Big 95+/100 sur 100 % des livrables (roadmap §Sprint 7).

Ajouter une route = une entrée dans e2e/routes.json (aucun code à toucher).


Auto-score 4Big du livrable : 95/100. Réserve 5 : exécution serveur différée — requiert le runner Gitea + DTP_BASE_URL sur le VPS (hors périmètre de ce worker, qui ne touche pas la production). Spécifications validées statiquement en-repo (JSON + TS).