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

89 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`.
```bash
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.
```bash
# 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-dtp` → **Actions → 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).