#304: scope the legal spec's status locator to its own form
Some checks failed
CI / Lint, typecheck, test (pull_request) Successful in 6m31s
CI / Build container images (pull_request) Successful in 1m15s
CI / Auth e2e pack (pull_request) Successful in 8m57s
CI / Import/export fidelity gate (pull_request) Successful in 53s
CD / Build and push images (push) Successful in 36s
CD / Deploy to Test (push) Successful in 11s
CD / Smoke tests against Test (push) Successful in 1m24s
CD / Promote to Int (push) Successful in 12s
CI / Lint, typecheck, test (push) Failing after 7m12s
CI / Auth e2e pack (push) Has been skipped
CI / Import/export fidelity gate (push) Has been skipped
CI / Build container images (push) Has been skipped
Some checks failed
CI / Lint, typecheck, test (pull_request) Successful in 6m31s
CI / Build container images (pull_request) Successful in 1m15s
CI / Auth e2e pack (pull_request) Successful in 8m57s
CI / Import/export fidelity gate (pull_request) Successful in 53s
CD / Build and push images (push) Successful in 36s
CD / Deploy to Test (push) Successful in 11s
CD / Smoke tests against Test (push) Successful in 1m24s
CD / Promote to Int (push) Successful in 12s
CI / Lint, typecheck, test (push) Failing after 7m12s
CI / Auth e2e pack (push) Has been skipped
CI / Import/export fidelity gate (push) Has been skipped
CI / Build container images (push) Has been skipped
The font manager's upload live regions made `getByRole('status')` ambiguous
on /admin, and legal.spec.ts — which asserts the legal form's success message
— started failing in the e2e pack. That is the documented trap in CLAUDE.md:
a new label or region makes an existing page-wide locator ambiguous, and the
fix is to scope the SPEC, not to drop the region a screen reader needs.
The section gets a named class for exactly that purpose.
Verified locally against the running stack: legal, fonts, admin-users,
admin-quotas and the a11y pack all pass.
This commit is contained in:
parent
ee6a11f9b0
commit
942f7b13d3
@ -63,7 +63,11 @@ test('the admin form previews and publishes the privacy policy', async ({ browse
|
|||||||
await expect(editor.locator('.legal-editor__preview strong')).toHaveText('only what is needed');
|
await expect(editor.locator('.legal-editor__preview strong')).toHaveText('only what is needed');
|
||||||
|
|
||||||
await page.getByRole('button', { name: /save legal pages|rechtsseiten speichern/i }).click();
|
await page.getByRole('button', { name: /save legal pages|rechtsseiten speichern/i }).click();
|
||||||
await expect(page.getByRole('status')).toBeVisible();
|
// Auf den Abschnitt gescopet: seit der Schriftverwaltung (#304) hat /admin
|
||||||
|
// weitere Live-Regionen (Upload-Fortschritt), und ein seitenweites
|
||||||
|
// getByRole('status') wäre mehrdeutig. Gemeint war immer die
|
||||||
|
// Erfolgsmeldung DIESES Formulars.
|
||||||
|
await expect(page.locator('.legal-settings').getByRole('status')).toBeVisible();
|
||||||
await admin.close();
|
await admin.close();
|
||||||
|
|
||||||
const anonymous = await browser.newContext({ baseURL: BASE_URL });
|
const anonymous = await browser.newContext({ baseURL: BASE_URL });
|
||||||
|
|||||||
@ -459,7 +459,10 @@ function LegalSettingsForm({ settings }: { settings: InstanceSettings }): React.
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="settings-section">
|
// Named class so the e2e can scope its success-message assertion to this
|
||||||
|
// form: /admin has more than one live region since #304 (upload progress),
|
||||||
|
// and a page-wide getByRole('status') became ambiguous.
|
||||||
|
<section className="settings-section legal-settings">
|
||||||
<h2>{t('admin.title')}</h2>
|
<h2>{t('admin.title')}</h2>
|
||||||
<p className="field__hint">{t('admin.hint')}</p>
|
<p className="field__hint">{t('admin.hint')}</p>
|
||||||
<form onSubmit={(event) => void onSubmit(event)} noValidate>
|
<form onSubmit={(event) => void onSubmit(event)} noValidate>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user