Skip to content

feat(ci): wire e2e-ci into pull-request.yml and push-main.yml - #45

Merged
NoNamer777 merged 3 commits into
mainfrom
feat/e2e-ci-wiring
Aug 12, 2026
Merged

feat(ci): wire e2e-ci into pull-request.yml and push-main.yml#45
NoNamer777 merged 3 commits into
mainfrom
feat/e2e-ci-wiring

Conversation

@NoNamer777

@NoNamer777 NoNamer777 commented Aug 12, 2026

Copy link
Copy Markdown
Member

Summary

Wires the pnpm e2e-ci script into CI, per Add Playwright end-to-end testing's Notes: a new e2e job in both pull-request.yml and push-main.yml that starts the Caddy-fronted E2E stack (Build the Caddy-fronted Docker Compose E2E stack) against the built image and runs the E2E suite against it.

  • pull-request.yml: the e2e job now runs whenever ci succeeds and either the docker job succeeded or only E2E-relevant paths changed. It tests the freshly built pr-<N> image in the first case, and the existing next image in the second, since there's nothing new to build.
  • push-main.yml: the e2e job follows the same logic against promote-image, always testing next. There's nothing to promote for an E2E-only merge, so it validates the current next instead.
  • .github/actions/detect-relevant-changes (renamed from detect-docker-changes) now computes two independent filters, docker and e2e. That means a pull request touching only the E2E suite itself (specs, playwright.config.ts, the e2e composite action, or the workflow files) still triggers the E2E job. Previously the e2e job only ran via needs: [docker], so E2E-only changes were silently skipped. See ADR 0006 for why next is reused instead of rebuilding in that case.
  • Both jobs: checkout, prepare-workspace, install Playwright's Chromium browser, docker compose -f .docker/compose.e2e.yaml up -d --wait, then pnpm e2e-ci with E2E_BASE_URL=https://localhost:8443. No explicit teardown, matching the stack's own design.
  • On failure, uploads reports/e2e (the Playwright HTML report plus test-results, including traces from the existing on-first-retry setting) as an e2e-report artifact, so a failing run leaves something to debug from.

Verified the YAML parses and matches this repo's Prettier formatting. This PR's own commits only touch E2E-relevant paths, so its CI run is also the first real proof that the trigger fix works.

Related issues

Resolves #44, part of #38

Checklist

  • Title and description follow the Creating a Pull Request guide
  • Commit messages follow Conventional Commits and are grouped by intent
  • Tests were added or updated as needed
  • Documentation was updated as needed
  • CI checks pass

Adds an e2e job to both workflows that starts the Caddy-fronted E2E
stack against the freshly-built image (pr-<N> on pull requests, next
after promotion on push to main) and runs pnpm e2e-ci against it,
uploading the Playwright report as an artifact on failure.

@NoNamer777 NoNamer777 left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Reviewed against issue #44 and the repo's CI conventions.

  • Spec: fully matches issue #44, no gaps or scope creep.
  • Standards: no hard violations (SHA pinning, permissions, etc. all correct). One non-blocking duplication nit left inline.

Comment thread .github/workflows/pull-request.yml
Comment thread .github/workflows/push-main.yml
pull-request.yml and push-main.yml duplicated the whole E2E job
verbatim aside from needs: and IMAGE_TAG. Factor it into
.github/actions/e2e, taking image-tag as an input, matching the
existing ci/prepare-workspace composite action pattern.
…t ones

The e2e job needed the docker job to run, which only builds when
Docker-relevant paths change. A pull request touching only the E2E
suite (specs, playwright.config.ts, or the e2e composite action)
never triggered a rebuild, so e2e was skipped and the change went
unvalidated.

Rename detect-docker-changes to detect-relevant-changes and add a
second e2e filter output. Run the e2e job whenever either filter
matches. When only E2E-relevant paths changed, test against the
existing next tag instead of rebuilding pr-<N>, since the app image
is unchanged. Apply the same logic to push-main.yml's e2e job for
E2E-only merges, to guard against next having moved between the
PR's own run and merge time.
@NoNamer777
NoNamer777 merged commit 74b695f into main Aug 12, 2026
4 checks passed
@NoNamer777
NoNamer777 deleted the feat/e2e-ci-wiring branch August 12, 2026 14:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Wire e2e-ci into pull-request.yml and push-main.yml

1 participant