fix(e2e): the third spec that located a disclosure by class
CI / check (push) Skipped
CI / e2e (push) Skipped
CI / check (pull_request) Canceled after 8s
CI / e2e (pull_request) Canceled after 0s

`config-section .header` is ambiguous once a section holds a job, and
`failure-voice.spec.ts` was the one I did not grep for. It passed on
chromium and failed on webkit in the same CI run, which is the tell:
the two engines share one app, so the second one runs with a finished
scan the first one left behind.

The NOTES entry already says a class name is not a selector's contract;
this is the same fix, by role and name.
This commit is contained in:
2026-08-19 20:44:02 -04:00
parent 99f355b2fc
commit e4efec6f0c
+8 -1
View File
@@ -36,9 +36,16 @@ test.describe('a failed binding says so', () => {
// Libraries is the one section that starts expanded (H-22), so ask
// the disclosure what state it is in rather than assuming one — a
// blind click used to expand it and now collapses it.
//
// By role and name, not by `.header`: since #27 the section also
// contains a `job-panel`, and an open `job-details-drawer` inside
// it carries the same class. That only bites once a job exists,
// which is why it showed up on the *second* engine of a CI run and
// not the first.
const disclosure = page
.locator('config-section[heading="Libraries"]')
.locator('.header');
.getByRole('button', { name: 'Libraries' })
.first();
if ((await disclosure.getAttribute('aria-expanded')) === 'false') {
await disclosure.click();