Playwright e2e test for taborder

This should be a failing test for Firefox (but working in Chrome?) for
the taborder in the explore page.

Tabbing through the page should ensure that certain elements are focused
at least once.
This commit is contained in:
Otto Richter 2024-03-12 01:56:09 +01:00
parent 4dbf2d7c11
commit 16a63a16b3
1 changed files with 39 additions and 0 deletions

View File

@ -0,0 +1,39 @@
// @ts-check
// document is a global in evaluate, so it's safe to ignore here
/* eslint no-undef: 0 */
import {test, expect} from '@playwright/test';
test('Explore view taborder', async ({page}) => {
await page.goto('/explore/repos');
const l1 = page.locator('[href="https://forgejo.org"]');
const l2 = page.locator('[href="/assets/licenses.txt"]');
const l3 = page.locator('[href*="/stars"]').first();
const l4 = page.locator('[href*="/forks"]').first();
let res = 0;
const exp = 15; // 0b1111 = four passing tests
for (let i = 0; i < 150; i++) {
await page.keyboard.press('Tab');
if (await l1.evaluate((node) => document.activeElement === node)) {
res |= 1;
continue;
}
if (await l2.evaluate((node) => document.activeElement === node)) {
res |= 1 << 1;
continue;
}
if (await l3.evaluate((node) => document.activeElement === node)) {
res |= 1 << 2;
continue;
}
if (await l4.evaluate((node) => document.activeElement === node)) {
res |= 1 << 3;
continue;
}
if (res === exp) {
break;
}
}
await expect(res).toBe(exp);
});