···44// services/gitdiff/**
55// @watch end
6677-import {expect} from '@playwright/test';
77+import {expect, type Page} from '@playwright/test';
88import {test, login_user, login} from './utils_e2e.ts';
99import {accessibilityCheck} from './shared/accessibility.ts';
1010···1212 await login_user(browser, workerInfo, 'user2');
1313});
14141515-async function assertSelectedLines(page, nums) {
1515+async function assertSelectedLines(page: Page, nums: string[]) {
1616 const pageAssertions = async () => {
1717 expect(
1818 await Promise.all((await page.locator('tr.active [data-line-number]').all()).map((line) => line.getAttribute('data-line-number'))),
+2-2
tests/e2e/shared/accessibility.ts
···3344export async function accessibilityCheck({page}: {page: Page}, includes: string[], excludes: string[], disabledRules: string[]) {
55 // contrast of inline links is still a global issue in Forgejo
66- disabledRules += 'link-in-text-block';
66+ disabledRules.push('link-in-text-block');
7788- let accessibilityScanner = await new AxeBuilder({page})
88+ let accessibilityScanner = new AxeBuilder({page})
99 .disableRules(disabledRules);
1010 // passing the whole array seems to be not supported,
1111 // iterating has the nice side-effectof skipping this if the array is empty
+3-5
tests/e2e/utils_e2e.ts
···3333 expect(response?.status()).toBe(200); // Status OK
34343535 // Fill out form
3636- await page.type('input[name=user_name]', user);
3737- await page.type('input[name=password]', LOGIN_PASSWORD);
3636+ await page.fill('input[name=user_name]', user);
3737+ await page.fill('input[name=password]', LOGIN_PASSWORD);
3838 await page.click('form button.ui.primary.button:visible');
39394040 await page.waitForLoadState();
···4848}
49495050export async function load_logged_in_context(browser: Browser, workerInfo: TestInfo, user: string) {
5151- let context;
5251 try {
5353- context = await test_context(browser, {storageState: `${ARTIFACTS_PATH}/state-${user}-${workerInfo.workerIndex}.json`});
5252+ return await test_context(browser, {storageState: `${ARTIFACTS_PATH}/state-${user}-${workerInfo.workerIndex}.json`});
5453 } catch (err) {
5554 if (err.code === 'ENOENT') {
5655 throw new Error(`Could not find state for '${user}'. Did you call login_user(browser, workerInfo, '${user}') in test.beforeAll()?`);
5756 }
5857 }
5959- return context;
6058}
61596260export async function login({browser}: {browser: Browser}, workerInfo: TestInfo) {
-1
tests/e2e/webauthn.test.e2e.ts
···3030 transport: 'usb',
3131 automaticPresenceSimulation: true,
3232 isUserVerified: true,
3333- backupEligibility: true, // TODO: this doesn't seem to be available?!
3433 },
3534 });
3635