veza/apps/web/STORYBOOK_AUDIT_COMPARISON.md
senke 11021a2c3a chore(storybook): audit script filter sb-manager/sb-addons + comparison report
- Filter requestfailed to ignore /sb-manager/, /sb-addons/, /index.json,
  /project.json so the audit counts only app/API failures.
- Add STORYBOOK_AUDIT_COMPARISON.md: before 641 stories / 1250 errors,
  after 0 app errors (Phase 1 validated).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 12:41:08 +01:00

81 lines
3.7 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.

# Storybook audit — avant / après remédiation
## Conditions
- **Avant** : audit initial (timestamp 2026-02-05T09:15:44 dans `storybook_audit_detailed.json`).
- **Après** : rebuild Storybook avec les 5 commits de remédiation, puis même protocole : serve static sur 6007, `node scripts/audit-storybook.js`.
- **Build** : `npm run build-storybook` (VITE_API_URL=/api/v1, VITE_STORYBOOK=true).
---
## Métriques brutes
| Métrique | Avant | Après | Évolution |
|----------|-------|--------|-----------|
| Stories en erreur | 641 | 101 | **-84 %** |
| Total erreurs capturées | 1 250 | 144 | **-88 %** |
---
## Répartition des erreurs (après)
- **Réseau** : 144 (toutes les erreurs restantes).
- **Console** : 0.
- **Page errors** : 0.
- **Navigation** : 0.
---
## Nature des 144 erreurs réseau restantes
**Aucune** nest un appel API applicatif.
Toutes concernent des assets **Storybook** (manager / addons) :
| Pattern | Occurrences | Signification |
|---------|-------------|----------------|
| `GET /sb-manager/globals-runtime.js` | 97 | Runtime du manager Storybook |
| `GET /sb-addons/.../manager-bundle.js` | 11 × 4 | Bundles addons (controls, viewport, a11y, etc.) |
| `GET /sb-manager/runtime.js` | 2 | Runtime manager |
| `GET /index.json` | 2 | Index Storybook |
Ces URLs **existent** dans `storybook-static/` (fichiers présents). Les `net::ERR_ABORTED` viennent très probablement du **timing** du script daudit : navigation vers la story suivante avant la fin du chargement de ces ressources (wait 100 ms), pas déchec applicatif.
---
## Ce qui a disparu (effet des commits)
| Catégorie (avant) | Avant | Après |
|-------------------|-------|--------|
| `GET /api/v1/auth/me` | 601 | **0** |
| `POST /api/v1/logs/frontend` | 94 | **0** |
| Erreurs console (ex. "Error at y", "e is not iterable", etc.) | 191+ | **0** |
| Autres API (audit, users, dashboard, tracks, etc.) | nombreuses | **0** |
| Assets externes (picsum, dicebear, transparenttextures) | plusieurs | **0** |
---
## Conclusion
1. **Phase 1 (environnement clos)** : côté **app**, objectif atteint :
- **0** appel API non mocké.
- **0** endpoint inconnu.
- **0** erreur console.
- Assets externes neutralisés (handlers MSW + logger désactivé en Storybook).
2. Les **101 stories** encore marquées en échec le sont uniquement à cause des requêtes **sb-manager / sb-addons** (ERR_ABORTED de timing), pas à cause du code applicatif.
3. **Recommandation** : pour un indicateur “app only”, le script daudit peut **exclure** les URLs dont le path commence par `/sb-manager/`, `/sb-addons/` ou qui correspondent à `index.json` (optionnel). On peut aussi augmenter légèrement le délai après `domcontentloaded` pour réduire les aborts sur ces assets.
---
## Checklist Phase 1 (binaire)
- [x] MSW intercepte 100 % des appels API (plus aucun `auth/me`, `logs/frontend`, etc. dans le rapport).
- [x] Aucun `net::ERR_ABORTED` **applicatif** persistant (les seuls restants sont Storybook interne).
- [x] Aucun appel réseau “surprise” (dashboard, stats, settings, etc.) — tous mockés ou absents du rapport.
- [x] Assets externes neutralisés (dicebear, transparenttextures, picsum mockés ; logger ne fait plus de POST en Storybook).
**Audit "app only"** : le script a été modifié pour ignorer les requêtes `/sb-manager/`, `/sb-addons/`, `/index.json`, `/project.json`. Avec ce filtre : **0 stories en erreur**, **0 erreurs capturées**.
**Phase 1 peut être considérée close** pour la partie “environnement clos côté app”. Les prochaines étapes sont Phase 2 (décorateur global unique) et affinage du script daudit (filtrage sb-manager/sb-addons ou délai) pour que le nombre de “stories en erreur” reflète uniquement les vrais échecs applicatifs.