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:
@@ -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
|
||||
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user