test(dashboard): stabilize the e2e suite under parallel runs

Three issues found while running the full B1–B8 suite together:

- The B1 logout test was driving the shared admin storageState
  token, invalidating it for every subsequent test. Switched it to
  a fresh login so its session is disposable.
- Bumped navigationTimeout to 30s and capped local workers at 4 to
  cope with the Vite dev server's first-compile cost under
  parallel load. Local also gets one retry to absorb intermittent
  warmup flakiness.
- Cleared a few lint warnings (unused appId / _adminPage vars) and
  belt-and-braces gitignore for playwright artifacts written to
  the repo root when the CLI is invoked from there by accident.

Suite now: 55/55 passing in ~21s.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
MechaCat02
2026-05-28 07:44:07 +02:00
parent cd20ffb580
commit 3e72ddde78
4 changed files with 22 additions and 9 deletions

View File

@@ -72,7 +72,7 @@ test.describe('B5 app members', () => {
test('invite a member-role user, then remove them', async ({ page, uniqueSlug, uniqueUsername }) => {
const slug = uniqueSlug('mem');
const username = uniqueUsername('inv');
const appId = await createApp(slug);
await createApp(slug);
const userId = await createMemberUser(username);
cleanup.app(slug);
cleanup.adminUser(userId);
@@ -106,7 +106,7 @@ test.describe('B5 app members', () => {
}) => {
const slug = uniqueSlug('mem');
const username = uniqueUsername('role');
const appId = await createApp(slug);
await createApp(slug);
const userId = await createMemberUser(username);
cleanup.app(slug);
cleanup.adminUser(userId);
@@ -133,14 +133,13 @@ test.describe('B5 app members', () => {
test('non-app-admin viewers do not see the Members tab', async ({
browser,
page: _adminPage,
uniqueSlug,
uniqueUsername
}) => {
const slug = uniqueSlug('mem');
const username = uniqueUsername('viewer');
const password = 'e2e-member-pw';
const appId = await createApp(slug);
await createApp(slug);
const userId = await createMemberUser(username);
cleanup.app(slug);
cleanup.adminUser(userId);
@@ -183,7 +182,7 @@ test.describe('B5 app members adversarial', () => {
}) => {
const slug = uniqueSlug('mem');
const username = uniqueUsername('rolelist');
const appId = await createApp(slug);
await createApp(slug);
const userId = await createMemberUser(username);
cleanup.app(slug);
cleanup.adminUser(userId);