feat(runner): the DEV-2203 E2E core — helpers, share viewer, editor, versions, engines - #184
Open
danielzytohoc wants to merge 9 commits into
Open
feat(runner): the DEV-2203 E2E core — helpers, share viewer, editor, versions, engines#184danielzytohoc wants to merge 9 commits into
danielzytohoc wants to merge 9 commits into
Conversation
added 4 commits
August 14, 2026 13:06
…pty (DEV-2203) The suite's most-copied code becomes e2e/helpers.ts: stubShell and signIn existed verbatim in nine specs, the session-cleanup pattern in two, the noise filter in one. New DEV-2203 specs import from here; existing specs migrate opportunistically. CI kept uploading runner/playwright-report/ on failure, but the 'github' reporter never writes it — the artifact has been empty since the workflow was added. The html reporter now fills it, and both workflows also upload test-results/ (where traces actually land). fflate joins the root devDependencies so specs can assert on the contents of a downloaded workspace zip (the app already builds them with fflate).
/d/:id is what a client actually receives, and nothing exercised the deployed contract: authed-actions.spec.ts stubs /api/demos and never leaves the SPA. Six read-only checks against a permanent fixture demo: the built page renders for an anonymous viewer, the slashless URL is a 308 (not a second copy), /d is frame-locked to itself, /embed carries the docs-only frame-ancestors list with no X-Frame-Options and no CORS, the __source.json snapshot never leaks, and an unknown id is a real 404. Zero containers, zero writes — cheap enough for post-deploy smoke, which is why the render check carries @smoke. The authed write path (create → build → view → revoke) comes separately as share-create-live.spec.ts.
…nd to end (DEV-2203) editor-download.spec.ts: Download is the only way out of play/share with your edits, and no test ever opened a zip — now one does, client-side and deterministic (fflate both builds and reads it). The live half types into the real editor and watches the renamed header reach the rendered grid; error-recovery and theme specs only ever implied that path. version-pinning.spec.ts: the URL → pin → workspace path a DEV-2198 PR preview link will take. Deterministic: a semver deep link pins core and wrapper in lockstep; a bare pkg.pr.new id rewrites every Handsontable dependency to its tarball URL and posts the validated ref to the container session. Live: the newest -next build installs through the real bundler. pkg.pr.new refs are never hardcoded (builds expire; npm cannot vouch for them) — E2E_PKG_PR_NEW_REF boots one real container at a fresh ref when a DEV-2198 validation run wants it.
…s (DEV-2203) engine-smoke.spec.ts is the @smoke slice: one Sandpack render and one container render (react-js — the Tier-1 starter that ships engine: container, so it also pins the engine-not-tier rule). Cheap enough to run after every deploy; wide enough that a broken bundler and a broken container image cannot both hide. docs-frameworks.spec.ts covers the two docs paths that need a container: switching a docs example to Vue, and an Angular docs example. Two boots, --workers=1, sessions deleted in a finally — the pool holds five global slots shared with real traffic, and the 1261-entry bucket walk belongs to the manifest tests, not a browser. The Angular case found a real defect on its first prod run: the HMR websocket handshake is answered 400 through the preview proxy, so an edit to an Angular docs example only shows after a manual reload. The render check stays live behind an explicit ANGULAR_HMR_DEFECT filter and a test.fixme documents the assertion to restore once the proxy is fixed. Existing tests join the @smoke set: the JavaScript docs-example render and style-apply's react apply+reset round-trip.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want higher recall? High effort reviews run extra passes and find more bugs. A team admin can switch effort levels in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 6564484. Configure here.
This was referenced Aug 14, 2026
added 5 commits
August 17, 2026 08:31
…foundation # Conflicts: # runner/package.json # runner/pnpm-lock.yaml
…r-and-version-specs
…203-engine-and-docs-frameworks
The framework-switch test waits out a Sandpack ready and then a container ready before it ever polls the grid — the shared 300s describe budget fits one boot, not two. A slow-but-healthy run could time out after both engines had already succeeded.
danielzytohoc
changed the base branch from
feat/DEV-2203-editor-and-version-specs
to
master
August 17, 2026 09:04
This was referenced Aug 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

The core of the DEV-2203 series, collapsed from #181/#182/#183/#184 into one PR (Dan's call — spec-only changes reviewed as one unit). Base: master. The rest of the stack sits on top: #185 (Style panel, touches product test-contracts) → #186 (authed share round-trip) → #187 (AI endpoint smoke) → #189 (workflow wiring); #188 (guide parity) is independent.
What's in here
Foundation
e2e/helpers.ts— the suite's most-copied code as a shared module (stubShell/signInexisted verbatim in nine specs, the session-cleanup pattern in two). New specs import it; old specs migrate opportunistically.githubreporter never writesplaywright-report/, so the on-failure artifact has been empty since the workflow existed. CI now adds thehtmlreporter and uploadstest-results/(traces) too.fflateroot devDep for zip assertions.e2e/share-view.spec.ts— the deployed/d+/embedcontract, read-only against a permanent fixture demo: renders anonymously (@smoke), slashless → 308,/dframe-locked to self,/embeddocs-only (allowlist frame-ancestors, no XFO, no CORS),__source.jsonnever served, unknown id → real 404. 6/6 on prod in 1.4 s.e2e/editor-download.spec.ts— Download zips the workspace as edited (deterministic, fflate both builds and reads it) + live: a typed edit reaches the rendered grid.e2e/version-pinning.spec.ts— the URL → pin → workspace path a DEV-2198 PR-preview link takes: semver pins core+wrapper in lockstep, a pkg.pr.new id rewrites both deps to tarball URLs and posts the validated ref to the session, the newest-nextinstalls live.E2E_PKG_PR_NEW_REFopt-in boots one real container at a fresh build id.e2e/engine-smoke.spec.ts(@smoke) — one render per engine; the container case is react-js, pinning the engine-not-tier rule.e2e/docs-frameworks.spec.ts— the docs paths that need containers (Vue switch, Angular). Its first prod run found a real defect: the Angular docs container's HMR websocket handshake gets a 400 through the preview proxy (86cb5d99n) — render coverage stays live behind an explicit known-defect filter +test.fixme.Verification
Full gate on this tree: 409 unit + deterministic e2e green; live against prod: share-view 6/6, editor/version 6/6, engine-smoke 2/2, docs-frameworks 2/2 (
--workers=1). Master merged in on 2026-08-17; Bugbot findings addressed (Vue-switch two-boot budget).