test(ui): make Product Storybook baselines production-faithful - #1494
Merged
Conversation
10 tasks
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.
Summary
Product/*stories and mount Skills, MCP, Plan reminders, and Daily Review through their production page entries and detail-panel host while preserving representative populated, loading, and failure statesplay, rejects unknown or omitted manifest coverage, and reports empty roots, Storybook failures, uncaught errors, unhandled rejections, andconsole.errorwith the story id and viewportCloses #1489.
Root cause
Storybook had two independent fidelity gaps. The global decorator wrapped every story in a padded full-screen frame, while module stories copied selected production classes around inner panels rather than mounting the page entry and shell-owned host. CI then typechecked story source without rendering the built stories, so a present-but-unreachable story, broken bridge, failed
play, or console error did not fail the build.The manifest uses the built Storybook
index.jsonas the story-id authority. It stays intentionally representative rather than running every Product story at every viewport; live Electron remains the authority for final geometry claims.Verification
node --test scripts/storybook-visual-smoke.test.mjs— 12 passednpm --workspace @maka/desktop run typecheck:storiesnpm run format:check— 1085 files cleannpm --workspace @maka/core run buildnpm --workspace @maka/desktop run build-storybooknpm --workspace @maka/desktop run smoke:storybook— 15/15 render/play checks passednpm --workspace @maka/desktop run build:mainnode --test apps/desktop/dist/main/__tests__/storybook-baseline-contract.test.js apps/desktop/dist/main/__tests__/story-annotation-contract.test.js— 26 passedgit diff --check main...HEADReview focus
AppShellDetailPanelis a pure extraction of the existing production wrapper; it does not introduce a generic module-page framework.