capitalisation: intégration 28 entrées knowledge + 2 CLAUDE.md RL799_V2 (triage branche mcp_v1)

28 nouvelles sections intégrées dans 12 fichiers knowledge (backend risques/patterns,
frontend risques/patterns, workflow risques). Couvre rate limiting, RGPD, CSP Next.js,
refresh token TOCTOU, catch-all Prisma, distinction 401/403, tests E2E Playwright, etc.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
MaksTinyWorkshop
2026-04-08 20:11:02 +02:00
parent 72758c1adc
commit 7767f1f947
12 changed files with 662 additions and 0 deletions

View File

@@ -90,3 +90,45 @@ Si un test vérifie un *comportement* (ex: "le menu se ferme après clic"), il d
- Validé le : 03-04-2026
- Contexte technique : Vue 3 / node:test — RL799_V2 story 6A.8
---
<a id="pattern-ordre-dom-comparedocumentposition"></a>
## Pattern : Vérifier l'ordre DOM avec `compareDocumentPosition`, pas `boundingBox`
### Synthèse
- **Objectif** : valider l'ordre réel des éléments dans le DOM, indépendamment du rendu CSS.
- **Contexte** : tests E2E Playwright qui doivent vérifier l'ordre d'affichage de sections ou d'éléments.
- **Quand l'utiliser** : toute assertion d'ordre dans un test E2E.
- **Quand l'éviter** : si on veut explicitement tester la position visuelle CSS (rare).
### Analyse
- **Avantages** :
- vérifie l'ordre DOM réel, insensible aux propriétés CSS (`flex-order`, `position`, `transform`)
- pas de `null` en retour (contrairement à `boundingBox()` hors viewport)
- déterministe
- **Limites / vigilance** :
- ne vérifie pas la position visuelle — si le test doit valider un rendu CSS spécifique, `boundingBox` reste pertinent
### Validation
- Validé le : 08-04-2026
- Contexte technique : Playwright / E2E — RL799_V2 story 17-5
### Implémentation
```ts
const aBeforeB = await page.evaluate(() => {
const a = document.querySelector('[data-testid="section-a"]');
const b = document.querySelector('[data-testid="section-b"]');
if (!a || !b) return false;
return (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) !== 0;
});
expect(aBeforeB).toBe(true);
```
### Risque associé
`boundingBox().y` vérifie la position visuelle rendue par CSS, pas l'ordre dans le DOM. De plus `boundingBox()` retourne `null` pour les éléments hors viewport → crash non déterministe.