Phase 2d: RAF-Loop + setState fixen — kontinuierlicher requestAnimationFrame-Loop (G3 fix) #44
Labels
No labels
bug
docs
feature
housekeeping
html-spec
performance
react-compat
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
glow-all/true-headless-browser#44
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problembeschreibung
Test G3 ("RAF Loop + setState — wiederholte Updates") schlägt fehl. React-Komponenten die
requestAnimationFramein einer Schleife verwenden (z.B. für Animationen, Timer-Updates, FPS-Zähler), erwarten dass RAF kontinuierlich feuert. Der aktuelle RAF-Shim feuert nur einmal pro request und dann nie wieder — das bricht Reacts render-loop für animation-basierte Updates.Ursache
Aktueller RAF-Shim (vereinfacht):
React-Komponenten die RAF in einer Schleife nutzen, rufen
requestAnimationFramebeim ersten Callback erneut auf — aber der zweite request bekommt keinen Timer, weil der setTimeout-Mechanismus nicht rekursiv schedult.Lösungsansätze
Option A: Kontinuierlicher RAF-Loop (empfohlen)
RAF feuert in einer Endlosschleife, ähnlich wie im Browser (ca. 60fps), solange Callbacks registriert sind.
Option B: Configurable Frame Rate
Per Page-Option steuerbar:
page.setFrameRate(30)— für deterministische Tests.Akzeptanzkriterien
Betroffene Dateien
src/fakes/raf.ts(oder equivalent)tests/interaction/react-comprehensive.test.ts(G3)tests/unit/raf.test.ts(neue Tests)Cross-Referenzen
Superseded by neues RAF-Shim in ACTION-PLAN.md Phase 1.