test(settings): Playwright regression guard for Settings → Extensions buttons
This surface has regressed three times with three different root
causes (adblocker getStatus, options-command registration, load-order
race). Helper-level unit tests cover the pure-logic layer; this spec
covers the end-to-end "buttons appear in the rendered Settings UI"
contract regardless of which underlying surface broke.
Two tests in tests/desktop/settings-extensions-buttons.spec.ts:
1. UI test — opens Settings via the bgWindow `api.window.open(
'peek://app/settings/settings.html', ...)` path (matches
permissions-settings.spec.ts), clicks the Privacy nav-item, then
`waitForFunction` polls #section-privacy for at least one button
labeled 'Popup' / 'Options' / 'Background' / 'Side Panel'. 8 s
timeout covers the chrome-extensions:loaded re-render race
(Settings opens → empty initially → event fires → re-render). If
buttons never appear, this fails immediately.
2. IPC layer test — calls `api.chromeExtensions.getUiEntries()`
directly and asserts ≥ 1 entry has `openable: true`. Catches a
regression in the load pipeline even before the UI renders, so
future failures pin down whether the bug is in the IPC layer or
the renderer.
Bundled Proton Pass declares both `action.default_popup` and
`options_ui.page`, so both assertions are reliably met when the load
pipeline + render are both healthy.
Test result: 2 passed in 2.8 s.