test: add regression tests

This commit is contained in:
Pengoose 2024-12-07 21:37:58 +09:00
parent 1c8e6f0921
commit 37e155a8a1

View file

@ -491,15 +491,33 @@ test('toHaveAccessibleDescription', async ({ page }) => {
await expect(page.locator('div')).toHaveAccessibleDescription('foo bar baz'); await expect(page.locator('div')).toHaveAccessibleDescription('foo bar baz');
}); });
test('toHaveRole', async ({ page }) => { test('toHaveAccessibleErrorMessage', async ({ page }) => {
await page.setContent(`<div role="button">Button!</div>`); await page.setContent(`
await expect(page.locator('div')).toHaveRole('button'); <form>
await expect(page.locator('div')).not.toHaveRole('checkbox'); <div role="button" aria-invalid="true" aria-errormessage="error-message"></div>
try { <div id="error-message">Hello</div>
// @ts-expect-error <div id="irrelevant-error">This should not be considered.</div>
await expect(page.locator('div')).toHaveRole(/button|checkbox/); </form>
expect(1, 'Must throw when given a regular expression').toBe(2); `);
} catch (error) {
expect(error.message).toBe(`"role" argument in toHaveRole must be a string`); const locator = page.locator('div[role="button"]');
} await expect(locator).toHaveAccessibleErrorMessage('Hello');
await expect(locator).not.toHaveAccessibleErrorMessage('hello');
await expect(locator).toHaveAccessibleErrorMessage('hello', { ignoreCase: true });
await expect(locator).toHaveAccessibleErrorMessage(/ell\w/);
await expect(locator).not.toHaveAccessibleErrorMessage(/hello/);
await expect(locator).toHaveAccessibleErrorMessage(/hello/, { ignoreCase: true });
await expect(locator).not.toHaveAccessibleErrorMessage('This should not be considered.');
});
test('toHaveAccessibleErrorMessage fails when aria-invalid is not true', async ({ page }) => {
await page.setContent(`
<form>
<input id="username" aria-invalid="false" aria-errormessage="username-error" />
<div id="username-error">Username is required.</div>
</form>
`);
const input = page.locator('#username');
await expect(input).not.toHaveAccessibleErrorMessage('Username is required.');
}); });