Skip to content

ci: run the playground tests in their own job - #4448

Open
danielmlr wants to merge 1 commit into
mainfrom
daniel/ci-playground-job
Open

danielmlr wants to merge 1 commit into
mainfrom
daniel/ci-playground-job

Conversation

@danielmlr

@danielmlr danielmlr commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

What does this PR do?

Runs the playground tests in a job of their own, Playground E2E, instead of after the admin, embeds and release-service tests in Browser Tests. Browser Tests took about 12.5 minutes on a full run, nearly 4 of them playground tests. In this PR's CI run the two jobs ran side by side and took 6.8 and 5.4 minutes.

Browser Tests is a required check, so it keeps its name. It now runs only when the test plan selects the admin, embeds or release-service tests. The required Tests job checks the new job as a lane of its own, so a failing playground test still fails a required check. The tests themselves don't change.

#3393 put the playground tests into Browser Tests to use fewer runners while jobs queued. Jobs no longer queue, so the second job adds about 1.2 runner minutes for its setup and install, and no wait. Moving them out again is Matt's call. The PR doesn't depend on any other open PR. The run gets shorter once the E2E shards drop below the old Browser Tests: in the CI run of #4447 the slowest shard took 14.0 minutes and Browser Tests 13.1.

Part of #4449

Type of change

  • Bug fix
  • Feature (requires an accepted feature plan or RFC)
  • Refactor (no behavior change)
  • Translation
  • Documentation
  • Performance improvement
  • Tests
  • Chore (dependencies, CI, tooling)

Your connection to this change

  • I use EmDash and ran into the problem this PR addresses
  • I maintain a tool, dependency, or service that EmDash uses, and this change concerns that integration
  • A Maintainer approved this specific change before I opened the PR

Checklist

  • I have read CONTRIBUTING.md
  • pnpm typecheck passes (n/a: workflow file only)
  • pnpm lint passes (n/a: workflow file only)
  • pnpm test passes (or targeted tests for my change)
  • pnpm format has been run
  • I have added/updated tests for my changes (if applicable) (n/a: workflow change; the CI runs below exercise it)
  • User-visible strings in the admin UI are wrapped for translation (if applicable). Do not include messages.po changes except in translation PRs — a workflow extracts catalogs on merge to main. (n/a: no admin UI change)
  • I have added and reviewed the user-facing changeset (if this PR changes a published package) (n/a: CI workflow only)
  • New features link to their merged design PR: https://github.com/emdash-cms/emdash/pull/... (n/a: not a feature)
  • I have included screenshots below if this PR changes the UI (n/a: no UI change)

AI assistance disclosure

  • This PR includes AI-generated code or text — model/tool: Claude Fable 5.1 and Claude Opus 5.5

Screenshots / test output

  • Before, the median of 19 full CI runs on 2026-10-26 and 2026-10-27 that ran both suites: Browser Tests took 12.5 minutes, of which install 37 s, the two builds 53 s and 57 s, admin tests 340 s and playground tests 225 s.
  • This PR's CI run (run): both jobs started at the same second. Browser Tests took 408 s (install 35 s, build 47 s, admin tests 280 s) and Playground E2E 322 s (build 52 s, playground tests 196 s, and 74 s for everything else, the 42 s install included). Tests passed with the new lane.
  • Two fork runs from this PR's head, each adding one failing test so the plan isn't the full one. A failing playground test (run): Playground E2E was the only test job that ran, it failed on that test, and Tests failed with "Playground E2E was failure; test plan expected success". A failing admin test (run): Browser Tests failed on that test, Playground E2E was skipped, and Tests failed with "Browser tests was failure; test plan expected success".
  • The new job's two commands locally: pnpm run --filter "@emdash-cms/playground^..." build, then the playground tests under CI=1: both specs pass.

Browser Tests ran the admin, embeds and release-service tests and then
the playground tests, with a build before each, so a full run waited
about 12.5 minutes on that one job. The playground tests now run as
Playground E2E, and Browser Tests keeps its required-check name.
@changeset-bot

changeset-bot Bot commented Oct 28, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 61e65d8

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions github-actions Bot added area/ci size/S review/needs-review No maintainer or bot review yet labels Oct 28, 2026
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

🚀 Deploying Preview to Cloudflare 🚀

Preview URL: https://daniel-ci-playground-job.try.emdashcms.com, https://daniel-ci-playground-job-emdash-playground.emdash-cms.workers.dev (commit 61e65d8)

This URL reflects your latest Preview deployment

Preview Deployments by commit

Status Deployment URL Commit Updated (UTC) See this deployment's details
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://ad1f1671.try.emdashcms.com, https://ad1f1671-emdash-playground.emdash-cms.workers.dev 61e65d8 2026-10-28T01:48:47.165Z Visit the dashboard ↗

@emdashbot emdashbot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The approach is sound: the playground E2E suite moves out of the serial tail of Browser Tests into its own Playground E2E job. That runs the suites in parallel and keeps the required check names. Both reviewers approved and raised no findings. They checked the following:

  • Browser Tests now gates on browser == 'true' alone, and the removed step guard was redundant.
  • The new job reuses the same e2e_playground condition, build command, Playwright cache key and failure artifacts.
  • The Tests aggregator now includes test-e2e-playground, so a failed, cancelled or wrongly skipped playground run still fails the required check.
  • BROWSER_SELECTED no longer counts e2e_playground, so a playground-only plan expects Browser Tests to be skipped.

The cost is one extra install and Chromium restore, which the description states. Concurrent jobs sharing a Playwright cache key may produce a harmless cache-save warning.

This was a static review only. No tests or builds were run, and the reported timing gains were not verified.


Reviewed by anthropic/claude-opus-5-5 and openai/gpt-6.1-sol.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant