Skip to content

Test/playwright e2e ci#28

Merged
GunelShukurova merged 5 commits into
mainfrom
test/playwright-e2e-ci
Jun 21, 2026
Merged

Test/playwright e2e ci#28
GunelShukurova merged 5 commits into
mainfrom
test/playwright-e2e-ci

Conversation

@GunelShukurova

Copy link
Copy Markdown
Contributor

What does this change?

Adds Playwright end-to-end test execution to the frontend CI workflow.

The CI now runs:

  • typecheck
  • lint
  • format check
  • build
  • Playwright E2E tests after successful checks

This ensures frontend changes are validated automatically in pull requests.

Related issue

Closes #16

Area

  • Frontend (apps/web)
  • Backend
  • Docs
  • Other

Screenshots

Not applicable — CI workflow changes only.

Checklist

  • I ran bun run typecheck && bun run build in apps/web (for frontend changes)
  • I bumped the version if this is a meaningful change
  • Commits are small and focused, with no AI attribution lines
  • I updated docs or AGENTS.md if behavior or structure changed

@GunelShukurova GunelShukurova marked this pull request as draft June 21, 2026 14:23
@GunelShukurova GunelShukurova marked this pull request as ready for review June 21, 2026 14:36
@GunelShukurova GunelShukurova self-assigned this Jun 21, 2026
@GunelShukurova GunelShukurova added the area: frontend Frontend web app label Jun 21, 2026

@martian56 martian56 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Nice work, this is the real e2e foundation #16 was asking for, and CI is green: the checks job and the Playwright job both pass on the PR. I went through it:

  • The workflow is well put together. checks (typecheck, lint, format, build) runs first, then e2e depends on it, frozen lockfile, browsers installed with --with-deps, concurrency with cancel-in-progress, path filters scoped to apps/web. Good shape.
  • The 11 specs are reasonable smoke coverage: seed the connected account in localStorage, navigate, assert the key testids render. Not deep, but exactly right for a first e2e pass.
  • The 20 component edits are all just data-testid hooks plus formatting, no behavior or visual changes. I checked the diff, it is clean.

One thing to fix before you merge, plus a couple of optional hardening notes.

Must fix: apps/web/test-results/.last-run.json is committed. That is a Playwright run artifact, regenerated on every run, so it will create noise in every future diff. And .gitignore does not actually ignore Playwright output, the report.[0-9]_...json line is a mangled leftover, not a real pattern. Delete the committed file and add test-results/ and playwright-report/ to apps/web/.gitignore. Details inline.

Optional but worth it, inline on the config: reuseExistingServer should be CI-aware, and a retry on CI would cut flake.

Minor: the version was not bumped, and a new test suite plus a CI job is a meaningful change per AGENTS.md. Quick npm version patch as its own commit.

Green CI and clean test hooks, so approving. Just clear the committed artifact and fix the ignore before you merge.

Comment thread apps/web/test-results/.last-run.json Outdated
@@ -0,0 +1,4 @@
{

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Delete this. It is Playwright's run-output artifact, regenerated on every bun run e2e, so committing it means every local run shows a spurious diff. Then add to apps/web/.gitignore:

# Playwright
test-results/
playwright-report/

The existing report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json line is a corrupted default and does not match Playwright's output, so it can go too.

webServer: {
command: "bun run dev",
url: "http://localhost:5173",
reuseExistingServer: true,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

reuseExistingServer: true means locally the tests run against whatever is already on 5173, which on some of our machines is a different app entirely. Make it CI-aware: reuseExistingServer: !process.env.CI, so CI always boots a fresh server and locally you still get the fast reuse. While here, two small robustness adds: retries: process.env.CI ? 1 : 0 to absorb flake, and forbidOnly: !!process.env.CI so a stray test.only never silently passes CI.

@martian56 martian56 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Cleanup confirmed. The committed test-results artifact is gone, and .gitignore now properly ignores test-results/ and playwright-report/. Both CI jobs are green. That was the only must-fix, so this is clear to merge.

The optional config hardening (reuseExistingServer: !process.env.CI, plus a CI retry) is still worth doing whenever you next touch the config, but it is not blocking. You can also drop the leftover report.[0-9]... line in .gitignore, it never matched anything. Nice work landing the e2e foundation.

@GunelShukurova GunelShukurova merged commit baf329a into main Jun 21, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: frontend Frontend web app

Projects

None yet

Development

Successfully merging this pull request may close these issues.

End-to-end tests with Playwright

2 participants