From 2820b2ab8c2c5b109d8a395f6aaa10f051fa23a1 Mon Sep 17 00:00:00 2001 From: Sameh Khamis Date: Sat, 12 Sep 2026 20:48:21 -0700 Subject: [PATCH] test(ui): measure held Space with the browser timer clock --- scripts/qa-map-source-tray.mjs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/scripts/qa-map-source-tray.mjs b/scripts/qa-map-source-tray.mjs index eccd7b4e6..5d5854bc6 100644 --- a/scripts/qa-map-source-tray.mjs +++ b/scripts/qa-map-source-tray.mjs @@ -603,6 +603,11 @@ try { voiceBefore: probe.voiceBefore, voiceNow: voiceState(), selectedStyle: manager.activeStyle, selectedMap: manager.mapStackController.getActiveId(), focusedStyle: document.activeElement?.dataset.style || null, + holdObservation: { + pageFocused: document.hasFocus(), visibility: document.visibilityState, + timerPending: Boolean(voice.pushToTalkHoldTimer), + focusOwnerMatches: document.activeElement === voice.pushToTalkHoldFocusOwner, + }, }); probe.reset = () => { probe.events.length = 0; @@ -645,9 +650,11 @@ try { await page.keyboard.down('Space'); styleSpaceIsDown = true; longSpaceDown = await page.evaluate(() => window.__qaStyleKeyProbe.snapshot()); - await new Promise((resolve) => setTimeout(resolve, 250)); + // Use the browser's clock, like the production hold timer. Runner-side + // delays can finish while Chromium's timer is still pending under load. + await page.evaluate(() => new Promise((resolve) => setTimeout(resolve, 250))); await page.keyboard.down('Space'); // exercise repeat without resetting the hold deadline - await new Promise((resolve) => setTimeout(resolve, 400)); + await page.evaluate(() => new Promise((resolve) => setTimeout(resolve, 400))); longSpaceHeld = await page.evaluate(() => window.__qaStyleKeyProbe.snapshot()); await page.keyboard.up('Space'); styleSpaceIsDown = false;