Signature: rive-trigger-rerender
Regex: expected 2 to be greater than or equal to 3
Category: test-timing
First seen: ~2026-06 · Last seen: 2026-06-29 (before the guard landed)
Occurrence log
Hypothesis
The #230 test drove re-renders with setInterval(50ms) and asserted renderCount >= 3 within a 2000ms waitFor — needing exactly 2 interval ticks with zero margin. A busy JS thread at mount starved the ticks, so only 1 landed and the assert failed (~1% natural flake).
Reproduction
example/__tests__/use-rive-trigger.harness.tsx — the guard blocks the JS thread for 500ms at mount, deterministically starving any wall-clock re-render driver (old setInterval approach → 8/8 fail; new deterministic context.rerender() → 8/8 pass).
Mitigation
Fixed in #303: drive re-renders deterministically via an exposed context.rerender() instead of racing setInterval.
Closing criterion (guard) — MET ✅
Permanent regression guard added in #303 (the 500ms mount block). Marked ci-flake:resolved.
Tracked via CI Flake Triage. This issue is intentionally closed — it is a ledger entry, not open work.
Signature:
rive-trigger-rerenderRegex:
expected 2 to be greater than or equal to 3Category: test-timing
First seen: ~2026-06 · Last seen: 2026-06-29 (before the guard landed)
Occurrence log
test-harness-*—useRiveTriggerre-render test;renderCountstuck at 2 (Android: unstable callback references can makeuseRiveTriggerandonEventReceivedmiss events #230)Hypothesis
The #230 test drove re-renders with
setInterval(50ms)and assertedrenderCount >= 3within a 2000mswaitFor— needing exactly 2 interval ticks with zero margin. A busy JS thread at mount starved the ticks, so only 1 landed and the assert failed (~1% natural flake).Reproduction
example/__tests__/use-rive-trigger.harness.tsx— the guard blocks the JS thread for 500ms at mount, deterministically starving any wall-clock re-render driver (oldsetIntervalapproach → 8/8 fail; new deterministiccontext.rerender()→ 8/8 pass).Mitigation
Fixed in #303: drive re-renders deterministically via an exposed
context.rerender()instead of racingsetInterval.Closing criterion (guard) — MET ✅
Permanent regression guard added in #303 (the 500ms mount block). Marked
ci-flake:resolved.Tracked via CI Flake Triage. This issue is intentionally closed — it is a ledger entry, not open work.