loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request 'tests(e2e): Allow running in parallel' (#5288) from fnetx/e2e-parallel into forgejo

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/5288
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>

+8 -12
+4 -8
playwright.config.js
··· 11 11 testDir: './tests/e2e/', 12 12 testMatch: /.*\.test\.e2e\.js/, // Match any .test.e2e.js files 13 13 14 - /** 15 - * Only run one test at a time, running multiple could lead to a inconsistent 16 - * database state. 17 - */ 18 - fullyParallel: false, 19 - workers: 1, 14 + // you can adjust this value locally to match your machine's power, 15 + // or pass `--workers x` to playwright 16 + workers: process.env.CI ? 1 : 2, 20 17 21 18 /* Maximum time one test can run for. */ 22 19 timeout: 30 * 1000, 23 20 24 21 expect: { 25 - 26 22 /** 27 23 * Maximum time expect() should wait for the condition to be met. 28 24 * For example in `await expect(locator).toHaveText();` ··· 34 30 forbidOnly: Boolean(process.env.CI), 35 31 36 32 /* Retry on CI only */ 37 - retries: process.env.CI ? 2 : 0, 33 + retries: process.env.CI ? 1 : 0, 38 34 39 35 /* Reporter to use. See https://playwright.dev/docs/test-reporters */ 40 36 reporter: process.env.CI ? 'list' : [['list'], ['html', {outputFolder: 'tests/e2e/reports/', open: 'never'}]],
+1 -1
tests/e2e/dashboard-ci-status.test.e2e.js
··· 16 16 17 17 const repoStatus = page.locator('.dashboard-repos .repo-owner-name-list > li:nth-child(1) > a:nth-child(2)'); 18 18 19 - await expect(repoStatus).toHaveAttribute('href', '/user2/test_workflows/actions'); 19 + await expect(repoStatus).toHaveAttribute('href', '/user2/test_workflows/actions', {timeout: 10000}); 20 20 await expect(repoStatus).toHaveAttribute('data-tooltip-content', 'Failure'); 21 21 });
+3 -3
tests/e2e/webauthn.test.e2e.js
··· 6 6 import {test, login_user, load_logged_in_context} from './utils_e2e.js'; 7 7 8 8 test.beforeAll(async ({browser}, workerInfo) => { 9 - await login_user(browser, workerInfo, 'user2'); 9 + await login_user(browser, workerInfo, 'user40'); 10 10 }); 11 11 12 12 test('WebAuthn register & login flow', async ({browser}, workerInfo) => { 13 13 test.skip(workerInfo.project.name !== 'chromium', 'Uses Chrome protocol'); 14 - const context = await load_logged_in_context(browser, workerInfo, 'user2'); 14 + const context = await load_logged_in_context(browser, workerInfo, 'user40'); 15 15 const page = await context.newPage(); 16 16 17 17 // Register a security key. ··· 45 45 response = await page.goto('/user/login'); 46 46 await expect(response?.status()).toBe(200); 47 47 48 - await page.getByLabel('Username or email address').fill('user2'); 48 + await page.getByLabel('Username or email address').fill('user40'); 49 49 await page.getByLabel('Password').fill('password'); 50 50 await page.getByRole('button', {name: 'Sign in'}).click(); 51 51 await page.waitForURL(`${workerInfo.project.use.baseURL}/user/webauthn`);