docs: README anglais + regles obligatoires tests/CI

Traduction complete du README en anglais et ajout de la section Tests et CI (regles obligatoires avant chaque push) dans les deux langues.
This commit is contained in:
2026-08-25 09:13:41 -04:00
parent 46e08abad1
commit d6328e7b58
2 changed files with 604 additions and 478 deletions
+61
View File
@@ -756,6 +756,67 @@ Configurables via l'interface (Settings) ou l'API `/api/config`.
## 📝 Développement
### 🧪 Tests et CI — règles obligatoires (avant chaque push)
> ⚠️ **Règle absolue — contributeurs humains et agents IA** : ne jamais faire
> de `git push` sans avoir exécuté **localement** la séquence complète
> ci-dessous avec **100 % de succès**. Le push ne sert pas à découvrir les
> échecs : la CI est un filet de sécurité, pas un outil de diagnostic.
#### Vérifications locales avant commit
| Étape | Commande | Job CI équivalent |
|---|---|---|
| Lint backend | `ruff check backend/` | `lint` |
| Validation des imports frontend | `node tests/frontend/validate-imports.mjs` | `lint` |
| Tests unitaires frontend | `node tests/frontend/unit.test.mjs` | `lint` |
| Tests backend | `pytest tests/ -q` | `test` |
| **E2E Playwright** | `npm run test:e2e` (~5 min) | `e2e` |
#### Tests E2E locaux (`npm run test:e2e`)
Le script `scripts/run-e2e-local.sh` reproduit fidèlement les conditions du
job CI `e2e` (`.gitea/workflows/ci.yml`) :
- backend démarré nativement (venv `.venv-e2e`, Python 3.11 via `uv`) ;
- authentification désactivée (`OBSIGATE_AUTH_ENABLED=false`) ;
- fixtures `test_vault` (TestVault) et `test_dir` (TestDir) ;
- port `2029` (baseURL de `playwright.config.ts`) ;
- projet Playwright `chromium-desktop` uniquement (comme la CI).
Prérequis : `uv`, Node.js ≥ 20, navigateurs Playwright
(`npx playwright install chromium`). Le venv est créé automatiquement au
premier lancement. Docker n'est pas nécessaire.
```bash
npm run test:e2e # suite complète
bash scripts/run-e2e-local.sh --headed # navigateur visible
bash scripts/run-e2e-local.sh -g "reset panes" # filtre sur un test
```
La suite doit se terminer sur **tous les tests passant** (60 actuellement),
sans échec ni dépendance aux retries. En cas d'échec : corriger et relancer
localement jusqu'à 100 %, puis seulement commiter.
#### Règles d'écriture des tests (leçon apprise)
- **Vérifier chaque sélecteur dans le DOM réel** avant de l'utiliser dans un
test. Bug réel rencontré : un test ciblait `#cp-input` alors que l'input de
la palette porte uniquement la classe `.cp-input` (aucun id) — le test ne
pouvait passer dans aucun environnement.
- Tout test nouveau ou modifié doit être **exécuté localement** (au minimum
avec `-g "nom du test"`) avant le push.
- Pas de contournements qui masquent une instabilité (`waitForTimeout`
arbitraires, fallback silencieux) : traiter la cause racine.
#### Commits et push
- Message de commit : sujet à l'impératif ≤ 50 caractères ; corps (72 col.)
uniquement s'il apporte une information utile.
- Un commit = un changement logique (ne pas mêler fix et refactoring).
- Push uniquement quand les 5 étapes locales sont vertes. Pipeline CI :
`lint → test → security → build → e2e`.
### Structure du projet
```
+543 -478
View File
File diff suppressed because it is too large Load Diff