open-design/apps/web/tests
leessju cfde84b038
Some checks failed
visual-baseline / Capture visual baselines (push) Waiting to run
ci / Detect CI change scopes (push) Successful in 0s
landing-page-ci / Validate landing page (push) Failing after 3s
landing-page-staging / Deploy landing page to staging (push) Has been skipped
nix-check / build (push) Failing after 2s
ci / Validate Nix flake (push) Has been skipped
ci / Preflight (push) Failing after 1s
ci / Workspace unit tests (push) Failing after 2s
ci / Daemon workspace tests (push) Failing after 1s
ci / Web workspace tests (push) Failing after 2s
ci / Browser tests (push) Failing after 1s
ci / Build workspaces (push) Failing after 1s
ci / Validate workspace (push) Failing after 0s
ci / Runtime trace (push) Has been skipped
fix(web): make hand-off no-editors fallback perform a real reveal (#2494)
* fix(web): make hand-off no-editors fallback perform a real reveal

The Finder/Explorer/File Manager fallback button was only calling an
optional onRequestRevealInFinder prop that the actual caller never
passes, so the surface advertised an action it never performed.

finder, explorer, and file-manager are real entries in the daemon's
open-in catalogue (open / explorer / xdg-open), so route the fallback
through openProjectInEditor(projectId, fallbackId) for a genuine
reveal. Keep the renderer reveal bridge as a secondary fallback if
the daemon spawn fails, and disable the button while busy so a double
click can't queue two reveals.

Adjacent: PreviewDrawOverlay's Send-while-streaming behavior is
intentional (sending is queued downstream, not blocked), and the
button already carries sendDisabledReason as its tooltip. Cover that
contract with a regression test so a future change can't silently
re-disable the control or drop the localized reason.

Scope note: the i18n hand-off key migration that previously rode on
this branch landed on main via a different key set, so this PR is
narrowed to just the fallback wire-up and the two regression tests.

* fix(web): surface daemon spawn failure inline in zero-editors fallback

The zero-editors HandoffButton fallback called setError() on a rejected
openProjectInEditor but returned only the <button>, so the error never
rendered. Production callers (ProjectView) mount the component without
onRequestRevealInFinder, so a daemon spawn failure became a silent no-op
— exactly the failure mode the PR was meant to cover.

Wrap the solo button in a handoff-wrap container and render the error
inline next to it. Adds a regression test for the rejected-spawn path.

* fix(web): align preview draw send-disabled test

* fix(web): show handoff fallback for zero editors

---------

Co-authored-by: nicejames <nicejames@gmail.com>
Co-authored-by: mrcfps <mrc@powerformer.com>
2026-05-30 06:34:12 +00:00
..
analytics feat(analytics): emit file_upload_result from all three upload entries (#2459) 2026-05-21 18:28:56 +08:00
artifacts fix(web): parse ask-question blocks as question-form alias (#1194) (#3053) 2026-05-27 06:34:36 +00:00
components fix(web): make hand-off no-editors fallback perform a real reveal (#2494) 2026-05-30 06:34:12 +00:00
edit-mode feat(web): merge Draw + Screenshot into one Studio mark tool (#3081) (#3277) 2026-05-29 06:51:38 +00:00
helpers refactor(web): split global CSS by ownership (#2609) 2026-05-25 05:48:28 +00:00
hooks fix(web): coalesce chokidar rewrite bursts before refreshing files (#2326) 2026-05-20 11:12:53 +08:00
i18n test(i18n): lock zh-CN to tier-1 explicit translation parity (#2920) 2026-05-25 20:08:41 +08:00
lib fix(web): clarify finalize BYOK requirements for Local CLI users (#3041) 2026-05-27 06:20:33 +00:00
media fix(media): hide OpenAI OAuth-only image credentials (#3308) 2026-05-30 04:12:10 +00:00
observability feat(observability): web lifecycle telemetry + stable installationId migration (#2527) 2026-05-21 15:37:48 +08:00
providers fix(web): send Anthropic proxy image attachments (#3273) 2026-05-30 04:47:47 +00:00
runtime fix(web): harden image export downloads (#3318) 2026-05-30 04:44:00 +00:00
state fix(media): hide OpenAI OAuth-only image credentials (#3308) 2026-05-30 04:12:10 +00:00
styles fix(web): theme home hero select menu (#3309) 2026-05-30 03:53:42 +00:00
utils fix(web): handle dropped file read failures (#2858) 2026-05-25 06:05:17 +00:00
analytics-app-version.test.tsx fix(analytics): app_version=0.0.0 + media providers clicks + lock run_finished error_code (#2453) 2026-05-20 21:50:11 +08:00
analytics-configure-globals.test.ts feat(analytics): ship PostHog v2 event schema (#2285) 2026-05-20 13:04:20 +08:00
analytics-identity.test.ts feat(analytics): PostHog product analytics (P0 events, consent-gated, packaged) (#1428) 2026-05-12 22:32:42 +08:00
analytics-scrub.test.ts feat(analytics): PostHog product analytics (P0 events, consent-gated, packaged) (#1428) 2026-05-12 22:32:42 +08:00
api-attachment-context.test.ts fix(web): send Anthropic proxy image attachments (#3273) 2026-05-30 04:47:47 +00:00
App.test.ts fix(web): suppress autosave indicator for draft-only Connector key edits (#1232) 2026-05-11 20:52:45 +08:00
comments.test.ts feat(comments): add comment attachment API (#2869) 2026-05-25 07:24:21 +00:00
host-boundary.test.ts refactor desktop host bridge (#2246) 2026-05-19 18:27:05 +08:00
quickSwitcherRecents.test.ts feat(web): add Cmd/Ctrl+P quick file switcher (#556) 2026-05-06 10:31:50 +08:00
router-marketplace.test.ts [codex] Add global onboarding flow without AMR (#2272) 2026-05-19 22:00:40 +08:00
router.navigate.test.tsx fix(web/router): defer popstate dispatch to microtask (#2490) 2026-05-29 09:37:55 +00:00
router.test.ts Garnet hemisphere (#1702) 2026-05-14 21:12:50 +08:00
sidecar-proxy.test.ts Enable LAN web dev access (#1947) 2026-05-19 17:50:50 +08:00