test: disambiguate the Email locator in auth.spec
SonarQube Analysis / sonarqube (pull_request) Successful in 5m18s
Tests / backend-unit (pull_request) Successful in 51s
Tests / backend-integration (pull_request) Successful in 3m25s
Tests / frontend-e2e (pull_request) Successful in 12m21s

getByLabel('Email') matched two elements on /register -- the email input and
the marketing consent checkbox, whose label "Send me occasional emails"
contains the substring. Playwright's strict mode failed both tests that
filled it.

getByRole('textbox', ...) narrows by role, so the checkbox no longer collides.
Applied to the /login usage too, so the same concept reads the same way
throughout the file.

These failures were latent: the frontend-e2e job died at the build step
before it ever reached the tests, so CI never reported them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-15 18:35:43 -05:00
co-authored by Claude Opus 5
parent 02c2c74013
commit a240d86762
+3 -3
View File
@@ -13,7 +13,7 @@ test.describe('Customer accounts', () => {
test('registers a new account and lands on the account page', async ({ page }) => { test('registers a new account and lands on the account page', async ({ page }) => {
const email = uniqueEmail(); const email = uniqueEmail();
await page.goto('/register'); await page.goto('/register');
await page.getByLabel('Email').fill(email); await page.getByRole('textbox', { name: 'Email' }).fill(email);
await page.getByLabel('Password').fill('supersecret123'); await page.getByLabel('Password').fill('supersecret123');
await page.getByRole('button', { name: 'Create account' }).click(); await page.getByRole('button', { name: 'Create account' }).click();
await expect(page).toHaveURL(/\/account/); await expect(page).toHaveURL(/\/account/);
@@ -23,14 +23,14 @@ test.describe('Customer accounts', () => {
test('rejects login with the wrong password', async ({ page }) => { test('rejects login with the wrong password', async ({ page }) => {
const email = uniqueEmail(); const email = uniqueEmail();
await page.goto('/register'); await page.goto('/register');
await page.getByLabel('Email').fill(email); await page.getByRole('textbox', { name: 'Email' }).fill(email);
await page.getByLabel('Password').fill('supersecret123'); await page.getByLabel('Password').fill('supersecret123');
await page.getByRole('button', { name: 'Create account' }).click(); await page.getByRole('button', { name: 'Create account' }).click();
await expect(page).toHaveURL(/\/account/); await expect(page).toHaveURL(/\/account/);
await page.getByRole('button', { name: 'Log out' }).click(); await page.getByRole('button', { name: 'Log out' }).click();
await page.goto('/login'); await page.goto('/login');
await page.getByLabel('Email').fill(email); await page.getByRole('textbox', { name: 'Email' }).fill(email);
await page.getByLabel('Password').fill('wrong-password'); await page.getByLabel('Password').fill('wrong-password');
await page.getByRole('button', { name: 'Log in' }).click(); await page.getByRole('button', { name: 'Log in' }).click();
await expect(page.getByText('invalid email or password')).toBeVisible(); await expect(page.getByText('invalid email or password')).toBeVisible();