fix(e2e): repair failing suite — a11y fixes and stale assertions

Three product a11y defects: drop role="radiogroup" from the /join PWYC
<ul> (it stripped the list role; native radios already group), use
--parch-text on the active contribution chip (was --text-bright, 1.17:1
on --parch), and label the New tag pool USelect on event create.

Three stale tests: real event-type filter labels, updated location
placeholder, and click the label instead of the hidden 0×0 radio.
This commit is contained in:
Jennie Robinson Faber 2026-05-24 00:43:54 +01:00
parent fee5959818
commit 039a6802e3
6 changed files with 7 additions and 7 deletions

View file

@ -261,7 +261,7 @@ const onCadenceChange = (newCadence) => {
border-style: solid;
border-color: var(--candle);
background: var(--parch);
color: var(--text-bright);
color: var(--parch-text);
}
.contribution-guidance {

View file

@ -350,6 +350,7 @@
<label>New tag pool</label>
<USelect
v-model="newTagPool"
aria-label="New tag pool"
:items="[
{ label: 'Cooperative', value: 'cooperative' },
{ label: 'Craft', value: 'craft' },

View file

@ -153,7 +153,6 @@
<ul
class="pwyc-list"
role="radiogroup"
aria-label="Contribution amount"
>
<li

View file

@ -88,7 +88,7 @@ test.describe('Admin events CRUD', () => {
.fill('e2e test event description')
await adminPage
.getByPlaceholder('e.g., https://zoom.us/j/123... or #channel-name')
.getByPlaceholder('e.g., https://zoom.us/j/123..., #channel-name, or TBD')
.fill('https://example.com/zoom')
const startInput = adminPage.getByPlaceholder(

View file

@ -11,7 +11,7 @@ test.describe('Events list page', () => {
const filterBar = page.locator('.filter-bar')
await expect(filterBar).toBeVisible()
for (const label of ['All', 'Workshops', 'Community', 'Social', 'Showcase']) {
for (const label of ['All', 'Talk / Presentation', 'Workshop', 'Community Meetup', 'Co-working Session', 'Peer Session', 'Skills Share', 'Info Session']) {
await expect(filterBar.locator('button', { hasText: label })).toBeVisible()
}
})
@ -36,7 +36,7 @@ test.describe('Events list page', () => {
// Wait for Vue hydration — the "All" filter should have the active class once reactive
const allBtn = page.locator('.filter-btn', { hasText: 'All' })
await expect(allBtn).toHaveClass(/active/, { timeout: 10000 })
const workshopsBtn = page.locator('.filter-bar button', { hasText: 'Workshops' })
const workshopsBtn = page.locator('.filter-bar button', { hasText: 'Workshop' })
await workshopsBtn.click()
await expect(workshopsBtn).toHaveClass(/active/, { timeout: 5000 })
})

View file

@ -84,7 +84,7 @@ test.describe('Join page — member signup flow', () => {
await page.locator('#join-name').fill('E2E Test User')
await page.locator('#join-email').fill(uniqueEmail)
// Pick the $0 preset
await page.locator('#pwyc-0').check({ force: true })
await page.locator('label[for="pwyc-0"]').click()
await page.getByRole('checkbox', { name: /Community Guidelines/ }).check()
await expect(page.locator('.submit-btn')).toBeEnabled()
@ -191,7 +191,7 @@ test.describe('Join page — member signup flow', () => {
await page.locator('#join-name').fill('Dup Test User')
await page.locator('#join-email').fill(duplicateEmail)
await page.locator('#pwyc-0').check({ force: true })
await page.locator('label[for="pwyc-0"]').click()
await page.getByRole('checkbox', { name: /Community Guidelines/ }).check()
await page.locator('.submit-btn').click()