# Test4 — Moyenne via position déplacée

## Objectif
Vérifier la détection d'un déplacement à l'écran significatif (`isPositionChangeSignificant`,
seuil `POSITION_CHANGE_THRESHOLD_RATIO` = 15 % de la diagonale du viewport), classé **Moyenne**
sans avoir besoin d'un jugement IA (contrairement à un changement de libellé).

## Modification par rapport à la référence
`#pay-mode-2` → `#pay-mode-2-shifted` (force une guérison). Libellé "Virement bancaire"
**inchangé**. L'option est repoussée de 500px par un spacer CSS placé juste avant elle.

## Mécanisme attendu
1. Le sélecteur strict échoue.
2. `findByLabel` retrouve l'élément facilement (libellé inchangé, candidat unique) →
   `healedVia = 'anchor'`.
3. `evaluateStepVisualImpact` : libellé identique (`labelChanged = false`), mais la position
   actuelle est à ~500px de la position enregistrée (`step.rect`), très au-delà du seuil (~98px
   pour un iframe de 260px de haut, diagonale ~654px) → `positionChanged = true`.
4. Libellé identique + position changée → classification **immédiate**, sans appel IA (une
   position déplacée est toujours "Moyenne" par nature, cf. `TESTFLOW_CONFIG.ALERT_LEVEL`).

## Résultat attendu
- Statut final : ⚠️ **succès avec corrections**.
- `healedVia` de l'étape 8 : `anchor`.
- Une alerte 📝 **Moyenne**, raison "position".
- **Aucun** appel IA de classification (la position seule suffit à trancher).

## Comment vérifier
Section "⚠️ Alertes de correction automatique" : badge 📝 Moyenne, texte mentionnant "position de
l'élément déplacée à l'écran" — pas de mention de changement de libellé.
