test(transient-on-blur): coverage for IZUI focus-driven autoclose of transient windows
Asserts the production focus-handler invariants from commit 091e2a43:
- palette/quick-view auto-close when another non-utility window gains focus
- utility (chain popup) focusing does NOT close its transient parent
- overlay role is exempt from being auto-closed (IZUI coordinator owns it)
Test mechanics (the part the task description flagged as hard):
- HEADLESS Electron creates windows with show:false, so isVisible() is false
and the autoclose loop's `if (!other.isVisible()) continue;` short-circuits.
Solved with a new `__peek_test.showWindow(id)` main-process helper that
forces show().
- macOS panel-type windows don't fire reliable native focus events under
Playwright. Solved with `__peek_test.fireWindowFocus(id)` that
synchronously dispatches the BrowserWindow 'focus' event listener chain,
driving the production handler logic deterministically.
- A non-transient anchor window is opened in beforeAll so maybeHideApp()
doesn't collapse the app when a test's only visible windows are transients.
Fixture change: `evaluateMain<R, A>(fn, arg?)` now passes through the
second argument to `electronApp.evaluate`, matching Playwright's API.