test(tag-widget-flake): gate on __pageModuleReady before firing setup tag
Full-suite ordering flake on smoke.spec.ts:2010 was a pubsub event race:
the test's 2s sleep after opening the page window is insufficient under
load, and the setup tag command could publish tag:item-added before
page.js had executed its top-level api.subscribe('tag:item-added', ...).
tile-preload's subscribeImpl attaches ipcRenderer.on('pubsub:tag:item-added')
synchronously from that call site, but Electron's webContents.send is
fire-and-forget, so any event arriving before the listener is live is
silently dropped and the widget never updates.
Move the pageWindow handle resolution + a waitForFunction gate on
window.__pageModuleReady (sentinel flipped at the very bottom of page.js)
BEFORE the first executeTag() call. This guarantees page.js has finished
module evaluation (including installing its tag subscribers) before any
tag command runs.
Verified: 236 pass / 2 fail / 2 skip (baseline) across two consecutive
full-suite runs. The remaining two failures (download.spec.ts:151 popup
cleanup and smoke.spec.ts:1438 quit/restart commands) are pre-existing
flakes unrelated to this change.