Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Doctor: Add dynamic check for incompatible Storybook packages #26219

Merged
merged 6 commits into from
Feb 28, 2024

Conversation

yannbf
Copy link
Member

@yannbf yannbf commented Feb 27, 2024

Closes #26015

What I did

This PR does the following:

  • Removes the automigration for "incompatible-addons"
  • Removes the previous logic for "incompatible-addons" check
  • Adds a new logic to check incompatible Storybook dependencies (not just addons registered in main.js like before), and introduces it as part of the doctor command
  • Makes the automigrate command run doctor at the end. This means the upgrade command will also run doctor
  • Changes the logic so that the getDuplicatedDepsWarnings calls only happen if there are no incompatible packages, reducing the noise considerably.

Here's how it looks like when running doctor:
image

Here's how it looks like when running automigrate or upgrade:
image

Here's how it looks like when running storybook dev:
image

TODO:

  1. This does not work with Yarn PnP
  2. Check scenario with the canary when running storybook dev. There should be a check as well.
  3. When developing this, I noticed two small issues in the package.json of our packages:

We should really add an automated check with a tool like https://github.com/webpro/knip to automatically detect these issues

Checklist for Contributors

Testing

The changes in this PR are covered in the following automated tests:

  • stories
  • unit tests
  • integration tests
  • end-to-end tests

Manual testing

  1. Run a sandbox for template, e.g. yarn task --task sandbox --start-from auto --template react-vite/default-ts
  2. Add an addon at a version that does not support the project's Storybook version, or just downgrade one of the packages to 7.0.0
    4.1 Run npx storybook doctor
    3.2 Run npx storybook automigrate (should yield a similar result)
    3.3 Run npx storybook upgrade (should yield a similar result)
    3.4 Run storybook dev (should yield a similar result, but faster as it does not check for available updates)

Documentation

  • Add or update documentation reflecting your changes
  • If you are deprecating/removing a feature, make sure to update
    MIGRATION.MD

Checklist for Maintainers

  • When this PR is ready for testing, make sure to add ci:normal, ci:merged or ci:daily GH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found in code/lib/cli/src/sandbox-templates.ts

  • Make sure this PR contains one of the labels below:

    Available labels
    • bug: Internal changes that fixes incorrect behavior.
    • maintenance: User-facing maintenance tasks.
    • dependencies: Upgrading (sometimes downgrading) dependencies.
    • build: Internal-facing build tooling & test updates. Will not show up in release changelog.
    • cleanup: Minor cleanup style change. Will not show up in release changelog.
    • documentation: Documentation only changes. Will not show up in release changelog.
    • feature request: Introducing a new feature.
    • BREAKING CHANGE: Changes that break compatibility in some way with current major version.
    • other: Changes that don't fit in the above categories.

🦋 Canary release

This pull request has been released as version 0.0.0-pr-26219-sha-d52adbb1. Try it out in a new sandbox by running npx storybook@0.0.0-pr-26219-sha-d52adbb1 sandbox or in an existing project with npx storybook@0.0.0-pr-26219-sha-d52adbb1 upgrade.

More information
Published version 0.0.0-pr-26219-sha-d52adbb1
Triggered by @yannbf
Repository storybookjs/storybook
Branch yann/improve-incompatible-addon-check
Commit d52adbb1
Datetime Wed Feb 28 11:59:09 UTC 2024 (1709121549)
Workflow run 8079960307

To request a new release of this pull request, mention the @storybookjs/core team.

core team members can create a new canary release here or locally with gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr=26219

@yannbf yannbf added maintenance User-facing maintenance tasks cli ci:merged Run the CI jobs that normally run when merged. labels Feb 27, 2024
@yannbf yannbf force-pushed the yann/improve-incompatible-addon-check branch 3 times, most recently from 4865e2f to 9fd15f2 Compare February 28, 2024 08:15
Copy link
Member

@shilman shilman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be a draft PR or is this supposed to be mergeable?

code/lib/cli/src/automigrate/index.ts Show resolved Hide resolved
@yannbf yannbf force-pushed the yann/improve-incompatible-addon-check branch from 9fd15f2 to 308bee0 Compare February 28, 2024 10:48
@yannbf yannbf force-pushed the yann/improve-incompatible-addon-check branch from f292ebb to 76c2388 Compare February 28, 2024 10:56
@storybook-bot
Copy link
Contributor

Failed to publish canary version of this pull request, triggered by @yannbf. See the failed workflow run at: https://github.com/storybookjs/storybook/actions/runs/8079253335

@valentinpalkovic valentinpalkovic changed the title Doctor: Add dynamic check for incompatible storybook packages Doctor: Add dynamic check for incompatible Storybook packages Feb 28, 2024
@yannbf yannbf merged commit a6c958f into next Feb 28, 2024
71 of 72 checks passed
@yannbf yannbf deleted the yann/improve-incompatible-addon-check branch February 28, 2024 12:57
@github-actions github-actions bot mentioned this pull request Feb 28, 2024
30 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ci:merged Run the CI jobs that normally run when merged. cli maintenance User-facing maintenance tasks
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Fix doctor addon compatibility check
5 participants