test(runner): close the DEV-2498 audit gaps the browser can reach - #200
Open
danielzytohoc wants to merge 1 commit into
Open
test(runner): close the DEV-2498 audit gaps the browser can reach#200danielzytohoc wants to merge 1 commit into
danielzytohoc wants to merge 1 commit into
Conversation
…V-2498) Five spec-only additions, one per reachable gap from the coverage audit. No product code changes; all deterministic (bundler aborted, APIs stubbed) and green against the local vite preview. **Replace on a colliding drop (G4, DEV-2500).** Keep both and Cancel were covered; the third button was not — and Replace and Cancel both leave exactly one /notes.md row, so no row assertion can tell them apart. The new test reads the active editor after Replace and requires "second": verified by mutation (asserting "first" fails), so the content check is the discriminator, not decoration. **A drop on a folder row (G7, DEV-2500).** The existing pointer-off-a-row test computes the events and the hint, then deliberately walks away; this one stays on the /src row and completes the drop, asserting the file lands at /src/notes.md and not at the root. **Blank starter reachability (G6, DEV-2499), new e2e/blank-starter.spec.ts.** The Create tile links to ?example=blank and lands on the blank file set (not the react showcase); the starter's entry opens with startRows and none of registerAllModules/contextMenu/sample data; and the picker lists the three Blank templates first, first-row asserted so a reorder fails it. **MCP-created demo on My demos (G5, DEV-2501).** A scope=mine row with forked_from "mcp:react" and created_by = the caller renders as a first-class owned card: kebab offers Rename and Delete, Open goes to /edit/:id. stubDemos grew an extraMine parameter rather than a rig-wide row, so the owner-filter head-counts on the all scope stay untouched. **Shared description renders for its reader (G9, DEV-2507).** Every markdown assertion in description-markdown.spec.ts ran on /edit/:id; the reader's surface is /share/:id, anonymous by design. Same stub pair (metadata + source), asserting a real <strong> in Box info and no literal **filters**. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
What
Five spec-only E2E additions in
runner/e2e/, one per browser-reachable gap from the DEV-2498 coverage audit. No product code changes. All deterministic — the Sandpack bundler is aborted and every API call is stubbed — and green in a localpnpm e2erun against the vite preview (full suite: 161 passed, 0 failed).The five tests, mapped to tickets
files-drop.spec.ts— Replace on a colliding drop overwrites in place, and adds no copy. Replace and Cancel both leave exactly one/notes.mdrow, so the test reads the active editor after Replace and requiressecond. Verified by mutation: temporarily assertingfirstfails, so the content read is the discriminator.files-drop.spec.ts— a drop on a folder row lands inside that folder. Mirror of the pointer-off-a-row test: same event sequence, but it stays on the/srcrow and completes the drop —/src/notes.mdappears, root/notes.mddoes not.blank-starter.spec.ts— the Create tile links to?example=blankand lands on the blank file set (not the react showcase); the blank entry opens withstartRowsand none ofregisterAllModules/contextMenu/sample data; the picker lists all three Blank templates first (first-row asserted, so a reorder fails).all-demos.spec.ts— a demo the MCP created shows up on your own list. Ascope=minerow withforked_from: "mcp:react"andcreated_by= the caller renders as a first-class owned card: Rename and Delete in the kebab, Open →/edit/:id.stubDemosgrew anextraMineparameter so the owner-filter head-counts on theallscope stay untouched.description-markdown.spec.ts— a shared demo's description renders as markdown for its reader. The file's assertions all ran on/edit/:id; this one hits/share/:idanonymously (ShareRoute's user is always null) and asserts a real<strong>in Box info with no literal**filters**.Verification
pnpm e2e e2e/files-drop.spec.ts e2e/blank-starter.spec.ts e2e/all-demos.spec.ts e2e/description-markdown.spec.ts— 32 passed.pnpm e2e— 161 passed, 124 skipped (gated live/matrix), 0 failed.Note
Low Risk
Adds E2E tests only; no runtime, auth, or data-path changes.
Overview
Spec-only Playwright coverage for five browser-reachable gaps from the DEV-2498 audit — no product changes. Everything is deterministic (stubbed APIs, aborted Sandpack).
Files drop (
files-drop.spec.ts): adds tests that a drop on a folder row lands under that folder (mirror of the existing pointer-off-row case), and that Replace on a name collision overwrites file content in place (editor showssecond, notfirst) without creating a-1copy.Blank starter (new
blank-starter.spec.ts): Create links to?example=blankand loads the blank file set; blank example has minimal grid setup without showcase plugins/data; example picker lists the three Blank templates first.My demos / MCP (
all-demos.spec.ts):stubDemosaccepts optionalextraMinerows forscope=minewithout affecting Everyone (3) on the all list; new test that a demo withforked_from: "mcp:react"appears as a first-class owned card (Rename/Delete, Open →/edit/:id).Share markdown (
description-markdown.spec.ts): anonymous/share/:idrenders description markdown in Box info (e.g.<strong>), not raw**syntax — complementing existing/edittests.Reviewed by Cursor Bugbot for commit 465020d. Bugbot is set up for automated code reviews on this repo. Configure here.