Skip to content

Conversation

@adamziel
Copy link
Collaborator

@adamziel adamziel commented Nov 28, 2025

Motivation for the change, related issues

E2E tests take ~30 minutes. Let's see how fast we can make them.

This PR:

  • Inlines the "prepare e2e tests" job, which takes 14 minutes but only does ~5 minutes of meaningful work.
  • Uses 3 worker for Chromium E2E tests and 3 workers for Firefox E2E tests.

As a result, Chromium finishes in 10-14 minutes, and Firefox in ~20 minutes (compared to ~30 minutes before this PR).

adamziel and others added 6 commits November 28, 2025 17:28
Tests in website-ui.spec.ts share OPFS storage (saving sites, switching
between sites). With fullyParallel enabled, concurrent tests were
interfering with each other's saved sites. Running these tests serially
while keeping cross-file parallelism.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Tests in deployment.spec.ts share a server on port 7999 (started in
beforeEach, stopped in afterEach). With parallel execution, multiple
tests try to bind the same port causing EADDRINUSE errors.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
With serial test files (website-ui, deployment), 4 shards caused uneven
distribution where shard 4 got 0 tests and shard 3 got 40. Switching to
3 shards gives ~27 tests each. Also adding sharding to Firefox tests.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@adamziel adamziel marked this pull request as ready for review November 28, 2025 18:45
// Many tests in this file interact with OPFS storage (saving sites, switching
// between sites). OPFS is shared at the browser level, so tests must run
// serially to avoid interfering with each other's saved sites.
test.describe.configure({ mode: 'serial' });
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Let's split all OPFS tests into a separate test file to avoid an artificially large test group

Copy link
Contributor

Copilot AI commented Nov 28, 2025

@adamziel I've opened a new pull request, #2964, to work on those changes. Once the pull request is ready, I'll request review from you.

## Motivation for the change, related issues

Addresses review feedback from #2961 to split OPFS tests into a separate
file to avoid an artificially large test group.

## Implementation details

- Created `opfs.spec.ts` with all 9 OPFS-related tests (those checking
`browserName !== 'chromium'`)
- Moved `saveSiteViaModal` helper to the new file
- Kept serial execution mode in `opfs.spec.ts` since OPFS storage is
shared at browser level
- Removed serial mode from `website-ui.spec.ts` as remaining tests don't
require it

## Testing Instructions (or ideally a Blueprint)

Run the E2E tests to verify both test files execute correctly:
```bash
npx playwright test packages/playground/website/playwright/e2e/opfs.spec.ts
npx playwright test packages/playground/website/playwright/e2e/website-ui.spec.ts
```

<!-- START COPILOT CODING AGENT TIPS -->
---

💡 You can make Copilot smarter by setting up custom instructions,
customizing its development environment and configuring Model Context
Protocol (MCP) servers. Learn more [Copilot coding agent
tips](https://gh.io/copilot-coding-agent-tips) in the docs.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: adamziel <205419+adamziel@users.noreply.github.com>
@adamziel adamziel merged commit 77f3a9b into trunk Nov 29, 2025
32 checks passed
@adamziel adamziel deleted the speedup-e2e-tests branch November 29, 2025 22:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants