test(@multibrowser): le compteur converge AUSSI côté inscrit B (Q4) + caveat polling

Q4 — le scénario réactif ne vérifiait la convergence de participantCount que du
POV du PROPRIÉTAIRE A. Ajout des assertions symétriques côté INSCRIT B : après que
B rejoint, B voit le compteur passer à 1 réactivement (sans reload) ; après
désinscription, il revient à 0 côté B. Le doc public mis à jour par A (seul
matérialiseur) se propage via le broker jusqu'au doc_subscribe de B. Ferme « A et
B ont-ils tous les deux le compteur incrémenté ? » — oui. Vert wallet frais (16 steps).

Doctrine : nouveau caveat bdd-testing/caveat_poll-broker-reads — asserter les
lectures broker en POLLING borné (lag de sync ~1s), jamais en one-shot ; vaut pour
les lectures à froid (reconnexion) et la propagation réactive (compteur
cross-navigateur). Consolide la doc-debt des features touchées cette session.

Non couvert (suivi) : observateur TIERS (découverte publique, flaky).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sylvain Duchesne
2026-07-08 14:09:21 +02:00
parent c07150cb27
commit 517045c257
2 changed files with 41 additions and 0 deletions
@@ -72,11 +72,16 @@ Fonctionnalité: Validation e2e multi-navigateurs des nouvelles features (T02.f)
Quand le navigateur "B" s'inscrit à l'événement "Apéro réactif"
Alors sans recharger, le compteur de participants réactif dans "A" pour "Apéro réactif" passe à 1
Et le navigateur "A" affiche un participant "inconnu" pour "Apéro réactif"
# Convergence symétrique côté inscrit : B voit aussi le compteur à 1 réactivement
# (le doc public de l'événement mis à jour par A se propage via le broker vers B).
Et sans recharger, le compteur de participants réactif dans "B" pour "Apéro réactif" passe à 1
# Option B symétrique : B se désinscrit → A (propriétaire) matérialise le
# marqueur "leave" depuis l'inbox et RECALCULE participantCount sur SON PROPRE
# doc → le compteur repasse à 0 côté A, SANS reload ni action de A.
Quand le navigateur "B" se désinscrit de l'événement "Apéro réactif"
Alors sans recharger, le compteur de participants réactif dans "A" pour "Apéro réactif" passe à 0
# Convergence symétrique côté inscrit après désinscription : B voit aussi 0.
Et sans recharger, le compteur de participants réactif dans "B" pour "Apéro réactif" passe à 0
Scénario: Un navigateur découvre l'événement public publié dans l'autre
Étant donné un navigateur "A" avec le wallet partagé