add a ton of e2e tests for design, ux improvements and fixes - #2690
Conversation
This comment has been minimized.
This comment has been minimized.
|
Here's a visual recap of what changed: Open the full interactive recap |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Builder reviewed your changes and found 5 potential issues 🟡
Review Details
Code Review Summary
This large incremental update adds broad Playwright coverage for the Design editor and adjusts canvas insertion, selection chrome, auto-layout, breakpoint handling, drag/drop persistence, and inspector geometry. The overall direction is sound: the tests encode useful direct-manipulation invariants, frame-vs-rectangle semantics are made explicit, and the new tracing/debug hooks are bounded and disabled outside development. I also verified the design dev server is running cleanly for browser verification.
Risk: Standard (shared editor behavior and stateful UI logic, with no auth/payment/schema changes).
Key findings
- 🔴 Functional: nested frame insertion uses local offsets as document coordinates, so nested primitives can be adopted by the wrong frame or rendered at the wrong position.
- 🟡 Medium: SVG primitives bypass the new frame-host insertion path.
- 🟡 Medium: inspector fallback can measure a matching node from the wrong screen iframe.
- 🟡 Medium: constraints are hidden for absolutely positioned children of flex parents.
- 🟡 Medium: host-driven layer selection does not reposition the combined multi-selection bounds overlay.
🧪 Browser testing: Will run after this review (PR touches UI code)
There was a problem hiding this comment.
Builder reviewed your changes and found 2 potential issues 🟡
Review Details
Incremental Code Review Summary
The latest PR head retains the five previously reported issues, so those existing review threads were intentionally not reposted or resolved. The current diff also retains the same broad Design editor changes and extensive E2E additions; no evidence was found that the earlier issues were fixed.
Two new E2E reliability problems are present:
- 🟡 The smart-selection test asserts selectors that are not implemented anywhere in the application, so it deterministically fails instead of validating behavior.
- 🟡 The board-frame drag test uses the empty-board Frame gesture even though the preceding test and current implementation define that gesture as creating a new screen, causing its precondition to fail.
The underlying editor changes remain directionally sound, and focused pure-module tests reported by a reviewer passed. Risk: Standard.
🧪 Browser testing: Will run after this review (PR touches UI code)
There was a problem hiding this comment.
Builder reviewed your changes and found 5 potential issues 🔴
Review Details
Incremental Code Review Summary
The latest head adds an explicit Screen/Frame mode to the Frame tool and threads that state through the editor, alongside further Design editor behavior changes. The seven existing review comments remain unresolved and were intentionally not reposted or resolved; the current diff still contains those same issues.
New regressions found:
- 🔴 High: the Frame tool's
Fshortcut now selects Screen mode, silently changing established behavior from drawing plain frames to creating screens. - 🔴 High: the canvas draft callback omits
frameToolDrawsfrom its dependencies, so selecting Frame can still create a screen on an empty board. - 🔴 High: screen IDs selected from Layers are misclassified as element selections, breaking screen alignment.
- 🔴 High: the same misclassification makes Shift+A no-op for screens selected from Layers.
- 🟡 Medium: text color is derived from
bodybefore the containing frame is resolved, making text inserted into dark frames on light pages invisible.
Risk: Standard (shared editor interaction and state logic). Focused reviewers reported Playwright discovery and pure-module checks, while full typecheck was unavailable because the environment lacks the required production database configuration.
🧪 Browser testing: Will run after this review (PR touches UI code)
There was a problem hiding this comment.
Builder reviewed your changes and found 1 potential issue 🔴
Review Details
Incremental Code Review Summary
The latest update adds frame-tool mode handling and additional Design editor integration changes. The previously reported seven issues remain unresolved and were not reposted or resolved: nested-frame coordinate handling, SVG frame nesting, cross-screen geometry lookup, flex absolute-child constraints, stale host-driven selection bounds, the unsupported smart-selection test, and the contradictory board-frame fixture.
New finding
- 🔴 High:
beginDraftCreationreadsframeToolDrawsbut omits it from theuseCallbackdependency array. After switching the Frame tool from Screen to Frame mode, the callback can retain the old value and continue creating screens on an empty canvas, ignoring the user's mode choice.
The rest of the incremental changes did not produce additional confirmed issues. Risk: Standard.
🧪 Browser testing: Will run after this review (PR touches UI code)

What this PR fixes
Silent data loss
Actions that did nothing
Wrong output
Screen sizing
New
Testing
https://clips.agent-native.com/r/eJO62la0Q1VC