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

Add storybook ci option to test that Storybook starts "ok" #3515

Conversation

virtuoushub
Copy link
Collaborator

Test to move away from current "e2e" approach with Cypress for Storybook, and towards leveraging the Storybook CLI tooling.

See:

@virtuoushub
Copy link
Collaborator Author

virtuoushub commented Oct 14, 2021

@thedavidprice - I am fairly certain where the exit code of 1 is coming from: https://github.com/storybookjs/storybook/blob/f56159989df0c67865fbdf348132d87fba2950ae/lib/core-server/src/build-dev.ts#L99-L111, specifically https://github.com/storybookjs/storybook/blob/f56159989df0c67865fbdf348132d87fba2950ae/lib/core-server/src/build-dev.ts#L108

With this knowledge, I was able to hack around the conditional logic by adding a dummy previewUrl which results in a 0 exit code.

-      ci && '--ci --smoke-test',
+      ci && '--ci --smoke-test --preview-url "ci"',

virtuoushub added a commit to virtuoushub/redwood that referenced this pull request Oct 15, 2021
@thedavidprice
Copy link
Contributor

@virtuoushub definitely looks like you're on to something here! (And, oh my, huge respect for the time it took to dig through SB's source... always an adventure.)

Using this PR code via the GitPod workspace , I ran into a false positive when I try to force an error (surprisingly hard with SB). Here's how you can reproduce:

  1. Modify components/BlogPost/BlogPost.stories.tsx to introduce an error (example comes from something I fixed earlier this week):
+ import StoryRouter from 'storybook-react-router'
import BlogPost from './BlogPost'

export const generated = () => {
  return <BlogPost />
}

- export default { title: 'Components/BlogPost' }
+ export default { title: 'Components/BlogPost', decorators: [StoryRouter()] }
  1. run yarn rw sb --ci, which will exit 0
  2. run both yarn rw sb and yarn rw sb --build, which will both throw

Looking at the source you highlighted, maybe you can also try including --force-build-preview . If no go with that, we could also loop in some folks from Storybook to see if they have any suggestions. (And/or abandon this attempt for now. Will follow your lead.)

@virtuoushub
Copy link
Collaborator Author

@virtuoushub definitely looks like you're on to something here! (And, oh my, huge respect for the time it took to dig through SB's source... always an adventure.)

Using this PR code via the GitPod workspace , I ran into a false positive when I try to force an error (surprisingly hard with SB). Here's how you can reproduce:

  1. Modify components/BlogPost/BlogPost.stories.tsx to introduce an error (example comes from something I fixed earlier this week):
+ import StoryRouter from 'storybook-react-router'
import BlogPost from './BlogPost'

export const generated = () => {
  return <BlogPost />
}

- export default { title: 'Components/BlogPost' }
+ export default { title: 'Components/BlogPost', decorators: [StoryRouter()] }
  1. run yarn rw sb --ci, which will exit 0
  2. run both yarn rw sb and yarn rw sb --build, which will both throw

Looking at the source you highlighted, maybe you can also try including --force-build-preview . If no go with that, we could also loop in some folks from Storybook to see if they have any suggestions. (And/or abandon this attempt for now. Will follow your lead.)

Was able to reproduce the false positive using your steps, thanks for these.


notes:

Using --force-build-preview just get's us back to where we started, in that it will produce the false negative on the unmodified code. While it got us closer if we were to introduce the error into our story code (it will exit code 1, and output the build errors similar to yarn rw sb / yarn rw sb --build), it is ultimately not going to work for our use case due to the false negative.

To see what is going on with the warning that is causing the exit code of 1 , I ended up modifying Storybook's build-dev locally ( rw-test-app/node_modules/@storybook/core-server/dist/cjs/build-dev.js )

-    if (previewWarnings.length > 0) _nodeLogger.logger.warn(`preview: ${previewWarnings}`);
+    if (previewWarnings.length > 0) _nodeLogger.logger.warn(`preview: ${JSON.stringify(previewWarnings, null, 2)}`);

this results in:

...
WARN preview: [
WARN   {
WARN     "message": "DefinePlugin\nConflicting values for 'process.env'",
WARN     "details": "'{NODE_ENV: \"development\", NODE_PATH: [], STORYBOOK: \"true\", PUBLIC_URL: \".\"}' !== '\"MISSING_ENV_VAR\"'",
WARN     "stack": "Error: DefinePlugin\nConflicting values for 'process.env'\n    at /workspace/rw-test-app/node_modules/webpack/lib/DefinePlugin.js:573:24\n    at Array.forEach (<anonymous>)\n    at walkDefinitionsForValues (/workspace/rw-test-app/node_modules/webpack/lib/DefinePlugin.js:564:31)\n    at /workspace/rw-test-app/node_modules/webpack/lib/DefinePlugin.js:591:5\n    at Hook.eval [as call] (eval at create (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:19:10), <anonymous>:291:1)\n    at Hook.CALL_DELEGATE [as _call] (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/node_modules/tapable/lib/Hook.js:14:14)\n    at Compiler.newCompilation (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/lib/Compiler.js:1053:26)\n    at /workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/lib/Compiler.js:1097:29\n    at Hook.eval [as callAsync] (eval at create (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:40:1)\n    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/node_modules/tapable/lib/Hook.js:18:14)\n    at Compiler.compile (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/lib/Compiler.js:1092:28)\n    at /workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/lib/Watching.js:200:19\n    at _next0 (eval at create (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:27:1)\n    at eval (eval at create (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:40:1)\n    at watchRunHook (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack-virtual-modules/lib/index.js:236:13)\n    at Hook.eval [as callAsync] (eval at create (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:34:1)"
WARN   }
WARN ]
...

I think if we solve for this warning then --smoke-test will work as intended.

@virtuoushub
Copy link
Collaborator Author

It seems https://github.com/redwoodjs/redwood/blob/main/packages/core/config/webpack.common.js#L150-L156 might hold the key to resolving that warning.

#742 looks related to Storybook, but it seems all that did is just shuffle around the above linked code block to allow it to be a shared plugin. I might need some help with webpack as I am a little out of my depth. (cc @peterp)

@thedavidprice
Copy link
Contributor

@virtuoushub nice work here, pulling back the layers. I don't have much time to work on this now, but relaying a couple things that come to mind:

  1. It might be helpful to add the --loglevel option to our storybook start and build commands. It takes a arg, but we could just hardcode that to most verbose (so either "normal" or full throttle). If you're interested, maybe add via separate PR so we can get it into main.
  2. Ah, Storybook and Webpack, our ol' frenemies. It's possible to debug using rwfw project:sync (if you haven't already). E.g. you could modify the lines you linked and see if it changes --ci outcome. But most of all for now, here's all the Webpack Config related to storybook, which is all merged together.

My guess is that something from main.js is conflicting. But I'll need to look closer.

@virtuoushub
Copy link
Collaborator Author

@thedavidprice,

@virtuoushub nice work here, pulling back the layers. I don't have much time to work on this now, but relaying a couple things that come to mind:

  1. It might be helpful to add the --loglevel option to our storybook start and build commands. It takes a arg, but we could just hardcode that to most verbose (so either "normal" or full throttle). If you're interested, maybe add via separate PR so we can get it into main.

I had tried leveraging --loglevel in the past and it did not yield too much more relevant information. Will definitely give it another shot.

  1. Ah, Storybook and Webpack, our ol' frenemies. It's possible to debug using rwfw project:sync (if you haven't already). E.g. you could modify the lines you linked and see if it changes --ci outcome. But most of all for now, here's all the Webpack Config related to storybook, which is all merged together.

Not sure if something changed, but I was able to run with --ci and exit code 0 ( did not produce any warnings ). However using --ci did not work as expected and resulted in the false positive you originally pointed out. All these findings came from the Gitpod environment, so I will destroy the old one and retry my testing in a new one in case that somehow got in a weird state; however, at this point I think it is best to loop some Storybook folks in as I don't think --ci behaves the way we think, or maybe even as it is intended to (we found a bug)?

My guess is that something from main.js is conflicting. But I'll need to look closer.

@shilman
Copy link

shilman commented Oct 26, 2021

Sorry for the slow response on this. Can you please tell me how to run this locally so I can debug the SB side? Thanks! 🙏

@virtuoushub
Copy link
Collaborator Author

virtuoushub commented Oct 27, 2021

Sorry for the slow response on this. Can you please tell me how to run this locally so I can debug the SB side? Thanks! 🙏

No worries @shilman, in terms of locally I might defer to @thedavidprice as to the most up to date how-to. I used the contributing guide myself.

That being said, I have found the easiest way to get this PR running is via - Gitpod and then follow @thedavidprice's steps to reproduce comment

@thedavidprice
Copy link
Contributor

@shilman Huge thank you for taking time to look at this. We got to this point because we're trying to improve our Storybook CI check. And our primary question is:

  • does --smoke-test behave as expected in Redwood (i.e. on it's own, it exits with an error 1)
  • if it is supposed to exit(1), then how/if can we configure to use in our CI checks?

Note: to see the behavior, you'll need to edit this file:
https://github.com/redwoodjs/redwood/pull/3515/files#diff-817052acd6de5fe2cfea88b164dfb6974f11f6a5a6d0ba6d0ce8fdf9d2c1fb23

L68 ci && '--ci --smoke-test --preview-url "ci"', should be ci && '--ci --smoke-test', We added --preview-url to see if we could get around the exit(1)

👉 Here's a video walkthrough (under 5 mins!) that will get you up and running in a jiffy.

GoogleChrome-26Oct21_20-19-58.mp4

Links to Files

The directories and files I mention in the video:

Dev Stuffz

@thedavidprice
Copy link
Contributor

@shilman gentle nudge

virtuoushub added a commit to virtuoushub/redwood that referenced this pull request Nov 26, 2021
@virtuoushub virtuoushub force-pushed the chore/add-storybook-ci-option-to-test-start-storybook-ok branch from be4ea3d to 7ad48bb Compare November 26, 2021 15:46
@shilman
Copy link

shilman commented Nov 26, 2021

@thedavidprice Sorry your gentle nudge got lost in the infinite sea of notifications & crazy SB 6.4 release. Thanks for the wonderful instructions, I'll take a proper look today!!

@shilman
Copy link

shilman commented Nov 27, 2021

Thanks again for your amazing instructions and great DX 😍

Based on a first pass, I think the problem is on the Redwood side. On a standalone project running SB6.3 I did the following

$ yarn storybook --ci --smoke-test
$ echo $?
0

Then I introduced some errors:

  • throw new Error('blah') (runtime error)n
    • in main.js => 1
    • in preview.js => 0
  • asdf (runtime error)
    • in main.js => 1
    • in preview.js => 0
  • asdf\?x12?!sdf (syntax error)
    • in main.js => 1
    • in preview.js => 1

This is all what I would expect. main.js runs in node, so a runtime error would cause the smoke test to fail. preview.js runs in the browser, so the smoke test only fails if you execute a browser, which --smoke-test doesn't do. (NOTE that we will be introducing a new test runner in 6.5 that does a lot more--would love to collaborate on getting this into redwood when the time comes!)

Introducing the throw new Error('blah') to main.js in Redwood does the following:

Banners_and_Alerts_and_storybook_js_—_workspace_—_Gitpod_Code

I took a quick look at the execa call but didn't spend time debugging it. Let me know if you'd like me to dig deeper!

@thedavidprice
Copy link
Contributor

@shilman

(NOTE that we will be introducing a new test runner in 6.5 that does a lot more--would love to collaborate on getting this into redwood when the time comes!)

^^ Saw the news about 6.4 but haven't dug in. Re: 6.5 Would be very excited to talk test runner. We just got v1-rc out with the goal to hit GA in Q1. So after the holidays could be a great time to get our heads together and plot a course 🚀

--

Thank you for taking another look at this. It's definitely hard to parse what's going on because there's layers of config and commands wrapping commands. But mentioning execa gave me an idea about how we can simplify diagnosing this.

Under the hood, here's the command that's run from the web/ directory:

yarn start-storybook --config-dir node_modules/@redwoodjs/testing/config/storybook --port 7910 --no-version-updates --static-dir web/public --ci --smoke-test

Reproduce --smoke-test exit(1)

We can use my test project, currently at the latest version, to run the commands without wrappers.

  1. git clone [email protected]:thedavidprice/redwood-tutorial-test.git
  2. cd redwood-tutorial-test
  3. yarn
  4. cd web
  5. yarn msw init public --no-save // for mocks; this is run before start-storybook when running "yarn rw storybook"
  6. yarn start-storybook --config-dir ../node_modules/@redwoodjs/testing/config/storybook --port 7910 --no-version-updates --static-dir web/public // should run successfully and open browser; stories render successfully
  7. yarn start-storybook --config-dir ../node_modules/@redwoodjs/testing/config/storybook --port 7910 --no-version-updates --static-dir web/public --ci --smoke-test // this is what we've been trying to run; should exit(1)
  8. yarn start-storybook --config-dir ../node_modules/@redwoodjs/testing/config/storybook --ci --smoke-test // sanity check; still results in exit(1)

The question --> any idea why step 6 works but 7 and 8 exit(1)? 🤷‍♂️

Step 6 (start-storybook) Success

Screen Shot 2021-12-01 at 8 32 47 PM

Step 7 and 8 (--smoke-test) exit with erro

Screen Shot 2021-12-01 at 8 34 25 PM

@virtuoushub
Copy link
Collaborator Author

@thedavidprice - you might be able to leverage my hack from earlier where we modify node_modules/@storybook/core-server/dist/cjs/build-dev.js like so:

-    if (previewWarnings.length > 0) _nodeLogger.logger.warn(`preview: ${previewWarnings}`);
+    if (previewWarnings.length > 0) _nodeLogger.logger.warn(`preview: ${JSON.stringify(previewWarnings, null, 2)}`);

that way we can better see what is going on with

...
WARN preview: [object Object]
...

and hopefully determine why steps 7 & 8 are exit(1)ing.

@shilman
Copy link

shilman commented Dec 2, 2021

@thedavidprice There was a bug in the debugging output. It should have read:

WARN preview: [{"message":"DefinePlugin\nConflicting values for 'process.env'","details": ...

So there are a few things going on here:

  1. the debug output needs to be fixed
  2. the warning is getting swallowed in dev mode somehow
  3. the conflicting values thing is a bug introduced by webpack5 and is fixed in SB6.4

EDIT: @virtuoushub I see you've already gone through all this above. apologies for restating!

@virtuoushub virtuoushub force-pushed the chore/add-storybook-ci-option-to-test-start-storybook-ok branch from 28ab311 to 432b55b Compare December 7, 2021 23:07
virtuoushub added a commit to virtuoushub/redwood that referenced this pull request Dec 7, 2021
virtuoushub added a commit to virtuoushub/redwood that referenced this pull request Dec 7, 2021
@virtuoushub
Copy link
Collaborator Author

@shilman - any advice on how to resolve this:

...
Module not found: Error: Cant resolve 'path' in '/tmp/redwood.du00ic/node_modules/@storybook/store/dist/esm'

BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.

If you want to include a polyfill, you need to:
  - add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }'
  - install 'path-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
  resolve.fallback: { "path": false }
...

It looks to have started when I bumped to SB6.4

@thedavidprice thedavidprice merged commit 2f53b04 into redwoodjs:main Jan 24, 2022
@jtoar jtoar added this to the next-release milestone Jan 24, 2022
@thedavidprice
Copy link
Contributor

Heroic effort on this one @virtuoushub If you add up all the time we're about to save not having to wait as long on CI to pass, it was very very very worth it.

Thank you again 🚀

@virtuoushub virtuoushub deleted the chore/add-storybook-ci-option-to-test-start-storybook-ok branch January 24, 2022 13:26
dac09 added a commit that referenced this pull request Jan 25, 2022
…s-setup

* 'main' of github.com:redwoodjs/redwood: (87 commits)
  Update scripts tsconfig (#4258)
  Update dependency @types/aws-lambda to v8.10.92 (#4260)
  Update dependency @apollo/client to v3.5.8 (#4262)
  Update dependency msw to v0.36.7 (#4252)
  Update typescript-eslint monorepo to v5.10.1 (#4256)
  Update dependency webpack-cli to v4.9.2 (#4254)
  Update dependency @supabase/supabase-js to v1.29.4 (#4253)
  Update dependency supertokens-auth-react to v0.18.4 (#4255)
  Update dependency ts-morph to v13.0.3 (#4251)
  Update dependency supertokens-auth-react to v0.18.3 (#4248)
  Update dependency esbuild to v0.14.13 (#4249)
  Fixed netlify api config (#4247)
  Add storybook ci option to test that Storybook starts "ok" (#3515)
  Update dependency react-hook-form to v7.25.0 (#4245)
  Update dependency firebase-admin to v10.0.2 (#4244)
  Fix type definitions for pages that take props (#4219)
  update yarn.lock
  v0.42.1
  update yarn.lock
  Pin dependency @types/yargs to v16.0.4 (#4243)
  ...
@jtoar jtoar modified the milestones: next-release, next-release-priority, test Jan 25, 2022
@thedavidprice thedavidprice modified the milestones: next-release, v0.43.0 Jan 27, 2022
@@ -172,6 +172,7 @@ const getSharedPlugins = (isEnvProduction) => {
new Dotenv({
path: path.resolve(redwoodPaths.base, '.env'),
silent: true,
ignoreStub: true, // FIXME: this might not be necessary once the storybook webpack 4/5 stuff is ironed out. See also: https://github.com/mrsteele/dotenv-webpack#processenv-stubbing--replacing
Copy link
Contributor

Choose a reason for hiding this comment

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

Hey @virtuoushub, me again! We have a small regression caused by this change here. Wondering if you could give me a little more context to what this change was for/why?

Copy link
Contributor

Choose a reason for hiding this comment

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

Without this, the Storbook --ci and --smoke-test flags were failing. (Please correct me if I am wrong.)

FYI, Pete, Danny is going to remove Dotenv entirely over here #4334 Based on all the research you did, any reaction as to whether this removal will have downstream affect on Storybook config? (We are assuming none.)

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Hi @dac09 , it was added to avoid:

...
WARN preview: [
WARN   {
WARN     "message": "DefinePlugin\nConflicting values for 'process.env'",
WARN     "details": "'{NODE_ENV: \"development\", NODE_PATH: [], STORYBOOK: \"true\", PUBLIC_URL: \".\"}' !== '\"MISSING_ENV_VAR\"'",
WARN     "stack": "Error: DefinePlugin\nConflicting values for 'process.env'\n    at /workspace/rw-test-app/node_modules/webpack/lib/DefinePlugin.js:573:24\n    at Array.forEach (<anonymous>)\n    at walkDefinitionsForValues (/workspace/rw-test-app/node_modules/webpack/lib/DefinePlugin.js:564:31)\n    at /workspace/rw-test-app/node_modules/webpack/lib/DefinePlugin.js:591:5\n    at Hook.eval [as call] (eval at create (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:19:10), <anonymous>:291:1)\n    at Hook.CALL_DELEGATE [as _call] (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/node_modules/tapable/lib/Hook.js:14:14)\n    at Compiler.newCompilation (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/lib/Compiler.js:1053:26)\n    at /workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/lib/Compiler.js:1097:29\n    at Hook.eval [as callAsync] (eval at create (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:40:1)\n    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/node_modules/tapable/lib/Hook.js:18:14)\n    at Compiler.compile (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/lib/Compiler.js:1092:28)\n    at /workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/lib/Watching.js:200:19\n    at _next0 (eval at create (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:27:1)\n    at eval (eval at create (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:40:1)\n    at watchRunHook (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack-virtual-modules/lib/index.js:236:13)\n    at Hook.eval [as callAsync] (eval at create (/workspace/rw-test-app/node_modules/@storybook/builder-webpack5/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:34:1)"
WARN   }
WARN ]
...

See also: #3515 (comment)

@thedavidprice , I think the removal should be safe; 🤞🏻 that the smoke test catches a regression if I am wrong.

virtuoushub added a commit to virtuoushub/redwood that referenced this pull request Feb 25, 2022
meant to avoid:

```sh
...
Error: PostCSS plugin autoprefixer requires PostCSS 8.
...
```

redwoodjs#3515 (comment)
parcel-bundler/parcel#5160
virtuoushub added a commit to virtuoushub/redwood that referenced this pull request Feb 25, 2022
meant to avoid:

```sh
...
Error: PostCSS plugin autoprefixer requires PostCSS 8.
...
```

redwoodjs#3515 (comment)
parcel-bundler/parcel#5160
virtuoushub added a commit to virtuoushub/redwood that referenced this pull request Feb 25, 2022
meant to avoid:

```sh
...
Error: PostCSS plugin autoprefixer requires PostCSS 8.
...
```

redwoodjs#3515 (comment)
parcel-bundler/parcel#5160
virtuoushub added a commit to virtuoushub/redwood that referenced this pull request Feb 25, 2022
fix: pin `autoprefixer`

meant to avoid:

```sh
...
Error: PostCSS plugin autoprefixer requires PostCSS 8.
...
```

redwoodjs#3515 (comment)
parcel-bundler/parcel#5160

chore: test using `yarn`'s `resolutions`

see: https://stackoverflow.com/a/66825007
virtuoushub added a commit to virtuoushub/redwood that referenced this pull request Feb 25, 2022
fix: pin `autoprefixer`

meant to avoid:

```sh
...
Error: PostCSS plugin autoprefixer requires PostCSS 8.
...
```

redwoodjs#3515 (comment)
parcel-bundler/parcel#5160

chore: test using `yarn`'s `resolutions`

see: https://stackoverflow.com/a/66825007
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release:chore This PR is a chore (means nothing for users) topic/storybook
Projects
No open projects
Status: Archived
Development

Successfully merging this pull request may close these issues.

5 participants