summaryrefslogtreecommitdiffstats
path: root/tests/e2e/explore.test.e2e.js
blob: 9603443b3544dc58add24a63866dd4d3a97eb314 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// @ts-check
// document is a global in evaluate, so it's safe to ignore here
// eslint playwright/no-conditional-in-test: 0
import {expect} from '@playwright/test';
import {test} from './utils_e2e.js';

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);
});