Parallelize playwright tests

- allow running with multiple workers (tested with up to four workers locally which
  didn't show signs of flakiness)
- prevent race condition with webauthn tests (running them in parallel
  on the same user could prevent another test from logging in)
- fix flakiness on CI action status (Chromium sometimes needs a long
  time to fill the href field, firefox is always faster)

This reverts commit e8585eff5c.
This commit is contained in:
Otto Richter 2024-09-11 14:31:46 +02:00
parent 83e9e9230a
commit 3695f5d096
3 changed files with 8 additions and 12 deletions

View file

@ -16,6 +16,6 @@ test('Correct link and tooltip', async ({browser}, workerInfo) => {
const repoStatus = page.locator('.dashboard-repos .repo-owner-name-list > li:nth-child(1) > a:nth-child(2)');
await expect(repoStatus).toHaveAttribute('href', '/user2/test_workflows/actions');
await expect(repoStatus).toHaveAttribute('href', '/user2/test_workflows/actions', {timeout: 10000});
await expect(repoStatus).toHaveAttribute('data-tooltip-content', 'Failure');
});

View file

@ -6,12 +6,12 @@ import {expect} from '@playwright/test';
import {test, login_user, load_logged_in_context} from './utils_e2e.js';
test.beforeAll(async ({browser}, workerInfo) => {
await login_user(browser, workerInfo, 'user2');
await login_user(browser, workerInfo, 'user40');
});
test('WebAuthn register & login flow', async ({browser}, workerInfo) => {
test.skip(workerInfo.project.name !== 'chromium', 'Uses Chrome protocol');
const context = await load_logged_in_context(browser, workerInfo, 'user2');
const context = await load_logged_in_context(browser, workerInfo, 'user40');
const page = await context.newPage();
// Register a security key.
@ -45,7 +45,7 @@ test('WebAuthn register & login flow', async ({browser}, workerInfo) => {
response = await page.goto('/user/login');
await expect(response?.status()).toBe(200);
await page.getByLabel('Username or email address').fill('user2');
await page.getByLabel('Username or email address').fill('user40');
await page.getByLabel('Password').fill('password');
await page.getByRole('button', {name: 'Sign in'}).click();
await page.waitForURL(`${workerInfo.project.use.baseURL}/user/webauthn`);