Add storybook - #255
Conversation
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 130 out of 132 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
tests/storybook/src/runtime/outputs.ts:54
installLastOpenedEntitiesstarts its polling interval asynchronously aftergetContentFormServiceresolves, but the returned cleanup only clears the interval id that exists at cleanup time. If the story unmounts before the promise resolves, the interval will still be created afterwards and leak across story changes/tests.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 130 out of 132 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (1)
tests/storybook/src/runtime/outputs.ts:54
installLastOpenedEntitiesstarts its pollingsetIntervalonly aftergetContentFormService()resolves, but the returned cleanup may run before that happens. In that case the interval can still be created later and never cleared, leaking timers and potentially updating a detached element after the story unmounts.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 130 out of 132 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
tests/storybook/src/runtime/outputs.ts:54
installLastOpenedEntitiesstarts an asyncgetContentFormService(...).then(...)chain but the returned cleanup only clears the interval. If the scenario is unmounted before the promise resolves, thethencallback can still run afterwards and create a new interval that will never be cleared (leak + background polling). Add a disposal flag (and guard) so no interval is created after cleanup.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 130 out of 132 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
tests/storybook/src/runtime/outputs.ts:54
installLastOpenedEntitiescan leave the output element empty untilgetContentFormService()resolves, causingJSON.parse("")failures in Playwright output helpers, and it can also leak an interval if the story is unmounted before the service promise resolves (the interval would be created after cleanup). Initialize the element to a valid JSON value and make cleanup cancel pending setup + clear only a created interval.
| - Locator-based wrappers continue to be supported where appropriate. | ||
| - No custom type shims remain that only exist to support `JSWrapper` internals. | ||
| - Storybook is deployed and reachable via GitHub Pages. | ||
| - `README.md` is updated at the end with the finalized Storybook/test setup documentation. |
There was a problem hiding this comment.
this file should be removed, right?
There was a problem hiding this comment.
Yes, left it only for the review as explanation. Will delete it
| tsx: ^4.20.6 | ||
| typedoc: ^0.28.14 | ||
| typescript: ^5.9.3 | ||
| validate-peer-dependencies: ^2.2.0 |
There was a problem hiding this comment.
why did you remove validate-peer-dependencies?
There was a problem hiding this comment.
pnpm already does this: strict-peer-dependencies=true (is the default), so pnpm install fails on missing/conflicting peers — at install time
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 126 out of 128 changed files in this pull request and generated no new comments.
Suppressed comments (1)
tests/storybook/src/runtime/outputs.ts:54
installLastOpenedEntitiesstarts its polling interval only aftergetContentFormService()resolves, but the returned cleanup only clears the interval id currently stored. If the story is unmounted before the promise resolves, cleanup runs withidstillundefined, and the interval can be created later and never cleared (timer leak / updates after teardown).
No description provided.