/** * Behavioural regression tests for the video tap surface — rendered against the * REAL component, not a hand-modelled DOM. * * TRACES: UR-005, UR-061 | DR-098 | UT-092 * * Why this file exists: * * `tapGestures.test.ts` tests `registerTap` / `isControlSurfaceTouch` / * `isSynthesizedTouchClick` as isolated pure functions. Every one of those tests * passed while, on the device, in sequence: the player pause-looped, then * pausing became impossible, then the bottom controls went dead, then * double-tap-to-seek stopped working. The helpers were each behaving exactly as * specified — the bugs were all in the *composition*: which element actually * receives a tap once Svelte has re-rendered. * * Testing my own helpers could not catch that, and modelling the DOM by hand in * a test just re-encodes the same wrong assumption. So these tests render * VideoPlayer and dispatch real touch/click events at whatever element is * genuinely on top, asserting user-visible outcomes ("a double tap seeks") * rather than internals. * * The specific traps encoded here, each a bug that shipped: * - pausing renders a full-screen