From 83b04520100c669ab8a83ad918448fd1170d0f7e Mon Sep 17 00:00:00 2001 From: David Price Date: Wed, 28 Jul 2021 11:07:55 -0700 Subject: [PATCH 01/12] add rw storybook --ci option passing --smoke-test --- packages/cli/src/commands/storybook.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/cli/src/commands/storybook.js b/packages/cli/src/commands/storybook.js index d5c1526db8ea..b0492a95c3e4 100644 --- a/packages/cli/src/commands/storybook.js +++ b/packages/cli/src/commands/storybook.js @@ -37,6 +37,12 @@ export const builder = (yargs) => { type: 'boolean', default: true, }) + .option('ci', { + describe: + "CI mode plus Smoke-test (skip prompts, don't open browser, exit after successful start)", + type: 'boolean', + default: false, + }) } export const handler = ({ @@ -45,6 +51,7 @@ export const handler = ({ build, buildDirectory, managerCache, + ci, }) => { const cwd = getPaths().web.base @@ -70,6 +77,7 @@ export const handler = ({ !managerCache && '--no-manager-cache', build && `--output-dir "${buildDirectory}"`, !open && '--ci', + ci && '--ci --smoke-test', ].filter(Boolean), { stdio: 'inherit', From daec4ea5bc32783d190bfef3ff5d67e0eca1a994 Mon Sep 17 00:00:00 2001 From: Peter Colapietro Date: Thu, 23 Dec 2021 06:15:18 -0500 Subject: [PATCH 02/12] fix: do not stub `process.env` see: https://github.com/redwoodjs/redwood/pull/3515#issuecomment-1000230340 --- packages/core/config/webpack.common.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/core/config/webpack.common.js b/packages/core/config/webpack.common.js index 65350f35d529..e655fb388606 100644 --- a/packages/core/config/webpack.common.js +++ b/packages/core/config/webpack.common.js @@ -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 }), ].filter(Boolean) } From ef20e2b4af831f3b27553ee1dd66fda8cca9b388 Mon Sep 17 00:00:00 2001 From: Peter Colapietro Date: Tue, 11 Jan 2022 20:26:09 -0500 Subject: [PATCH 03/12] chore: enable typechecking see: https://github.com/redwoodjs/redwood/pull/3515#issuecomment-1010525399 --- packages/testing/config/storybook/main.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/testing/config/storybook/main.js b/packages/testing/config/storybook/main.js index bc381eee10cc..04c6518bd1db 100644 --- a/packages/testing/config/storybook/main.js +++ b/packages/testing/config/storybook/main.js @@ -136,6 +136,10 @@ const baseConfig = { ...(process.env.NODE_ENV !== 'production' && { staticDirs: [`${staticAssetsFolder}`], }), + // https://storybook.js.org/docs/react/configure/typescript#mainjs-configuration + typescript: { + check: true, + }, } const mergeUserStorybookConfig = (baseConfig) => { From 8be9491b1930de5011c26a738210be13c5291344 Mon Sep 17 00:00:00 2001 From: Peter Colapietro Date: Tue, 11 Jan 2022 21:21:22 -0500 Subject: [PATCH 04/12] refactor(rename): ci -> smoke-test --- packages/cli/src/commands/storybook.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/cli/src/commands/storybook.js b/packages/cli/src/commands/storybook.js index b0492a95c3e4..5f94bec84221 100644 --- a/packages/cli/src/commands/storybook.js +++ b/packages/cli/src/commands/storybook.js @@ -37,7 +37,7 @@ export const builder = (yargs) => { type: 'boolean', default: true, }) - .option('ci', { + .option('smoke-test', { describe: "CI mode plus Smoke-test (skip prompts, don't open browser, exit after successful start)", type: 'boolean', @@ -51,7 +51,6 @@ export const handler = ({ build, buildDirectory, managerCache, - ci, }) => { const cwd = getPaths().web.base @@ -77,7 +76,6 @@ export const handler = ({ !managerCache && '--no-manager-cache', build && `--output-dir "${buildDirectory}"`, !open && '--ci', - ci && '--ci --smoke-test', ].filter(Boolean), { stdio: 'inherit', From 8afd1c8c38f57abda2e0060d05af9e376c5a5f3e Mon Sep 17 00:00:00 2001 From: Peter Colapietro Date: Tue, 11 Jan 2022 21:21:56 -0500 Subject: [PATCH 05/12] chore: add some logic checks see: https://github.com/yargs/yargs/issues/189#issuecomment-544666512 --- packages/cli/src/commands/storybook.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/cli/src/commands/storybook.js b/packages/cli/src/commands/storybook.js index 5f94bec84221..67cedff3dc07 100644 --- a/packages/cli/src/commands/storybook.js +++ b/packages/cli/src/commands/storybook.js @@ -43,6 +43,15 @@ export const builder = (yargs) => { type: 'boolean', default: false, }) + .check((argv) => { + if (argv.build && argv.smokeTest) { + throw new Error('Can not provide both "--build" and "--smoke-test"') + } + if (argv.build && argv.open) { + throw new Error('Can not provide both "--build" or "--open"') + } + return true + }) } export const handler = ({ From f8991521f10c7baca82bab1de7987bded4ba2459 Mon Sep 17 00:00:00 2001 From: Peter Colapietro Date: Tue, 11 Jan 2022 21:22:13 -0500 Subject: [PATCH 06/12] feat: wire up smoke test --- packages/cli/src/commands/storybook.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/commands/storybook.js b/packages/cli/src/commands/storybook.js index 67cedff3dc07..f58369c83a33 100644 --- a/packages/cli/src/commands/storybook.js +++ b/packages/cli/src/commands/storybook.js @@ -60,6 +60,7 @@ export const handler = ({ build, buildDirectory, managerCache, + smokeTest, }) => { const cwd = getPaths().web.base @@ -84,7 +85,8 @@ export const handler = ({ !build && '--no-version-updates', !managerCache && '--no-manager-cache', build && `--output-dir "${buildDirectory}"`, - !open && '--ci', + !open && !smokeTest && `--ci`, + smokeTest && `--ci --smoke-test`, ].filter(Boolean), { stdio: 'inherit', From c04a676acd4cb311bf480a4f6d93107327d408d0 Mon Sep 17 00:00:00 2001 From: Peter Colapietro Date: Wed, 12 Jan 2022 07:38:29 -0500 Subject: [PATCH 07/12] fix: run checker in synchronously mode see: https://github.com/redwoodjs/redwood/pull/3515#issuecomment-1010604220 --- packages/testing/config/storybook/main.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/testing/config/storybook/main.js b/packages/testing/config/storybook/main.js index 04c6518bd1db..f17deb7d3c61 100644 --- a/packages/testing/config/storybook/main.js +++ b/packages/testing/config/storybook/main.js @@ -139,6 +139,8 @@ const baseConfig = { // https://storybook.js.org/docs/react/configure/typescript#mainjs-configuration typescript: { check: true, + // By default, the checker runs asynchronously in dev mode. Force it to run synchronously. + checkOptions: { async: false }, }, } From d06018527cbf1a857d34002faaa2d34a749c0d2e Mon Sep 17 00:00:00 2001 From: Peter Colapietro Date: Thu, 13 Jan 2022 00:10:57 -0500 Subject: [PATCH 08/12] chore: shorten timeout and fail faster --- .../cypress/integration/03-storybook/storybook.spec.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/tasks/e2e/cypress/integration/03-storybook/storybook.spec.js b/tasks/e2e/cypress/integration/03-storybook/storybook.spec.js index 8b055e329c02..2b7e46b6feab 100644 --- a/tasks/e2e/cypress/integration/03-storybook/storybook.spec.js +++ b/tasks/e2e/cypress/integration/03-storybook/storybook.spec.js @@ -33,13 +33,11 @@ describe( ) // Slow! - cy.exec(`cd ${BASE_DIR}; yarn rw storybook --build`, { - timeout: 300_0000, - }).then((result) => { - const { code, stderr } = result - expect(code).to.eq(0) - expect(stderr).to.not.contain('ERR!') + cy.exec(`cd ${BASE_DIR} || exit; yarn rw storybook --build`, { + timeout: 20000, }) + .its('stderr') + .should('not.contain', 'ERR!') }) it('1. Component: BlogPost', () => { From 683745aaf53a401b4dc615e86c8d80ded09c7f07 Mon Sep 17 00:00:00 2001 From: Peter Colapietro Date: Thu, 13 Jan 2022 00:11:25 -0500 Subject: [PATCH 09/12] chore: try and move this into a before --- tasks/e2e/cypress/integration/03-storybook/storybook.spec.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tasks/e2e/cypress/integration/03-storybook/storybook.spec.js b/tasks/e2e/cypress/integration/03-storybook/storybook.spec.js index 2b7e46b6feab..fde878b44b62 100644 --- a/tasks/e2e/cypress/integration/03-storybook/storybook.spec.js +++ b/tasks/e2e/cypress/integration/03-storybook/storybook.spec.js @@ -12,7 +12,8 @@ describe( 'Redwood Storybook Integration', { baseUrl: 'http://localhost:8910' }, () => { - it('0. Build Storybook Static Files', () => { + // 0. Build Storybook Static Files + before(() => { cy.writeFile( path.join(BASE_DIR, 'web/src/components/BlogPost/BlogPost.stories.js'), Step1_1_BlogPostStory From a17b8e0a4d0eca5c3cff7d1eaf81ef7c21d8c39b Mon Sep 17 00:00:00 2001 From: David Price Date: Thu, 13 Jan 2022 12:45:34 -0800 Subject: [PATCH 10/12] use sb --smoke-test for E2E; remove Cypress spec --- .github/workflows/e2e.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index e3cfc196a002..e7f1fe06666a 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -82,7 +82,6 @@ jobs: working-directory: ./tasks/e2e spec: | cypress/integration/01-tutorial/*.spec.js - cypress/integration/03-storybook/*.spec.js cypress/integration/04-logger/*.spec.js - name: Prepare for CLI checks by restoring 01-tutorial end state @@ -90,6 +89,10 @@ jobs: git restore . && git clean -df working-directory: ${{ steps.createpath.outputs.project_path }} + - name: Run `rw storybook` + run: yarn rw storybook --smoke-test + working-directory: ${{ steps.createpath.outputs.project_path }} + - name: Run `rw test api` run: yarn rw test api --no-watch working-directory: ${{ steps.createpath.outputs.project_path }} From e71dd9d0a285a8354e4ea6b04efe93375b000036 Mon Sep 17 00:00:00 2001 From: David Price Date: Thu, 13 Jan 2022 12:46:52 -0800 Subject: [PATCH 11/12] fix: only set up type checking for typescript projects https://github.com/redwoodjs/redwood/pull/3515#discussion_r784313431 --- packages/testing/config/storybook/main.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/testing/config/storybook/main.js b/packages/testing/config/storybook/main.js index f17deb7d3c61..e2c7c1425bef 100644 --- a/packages/testing/config/storybook/main.js +++ b/packages/testing/config/storybook/main.js @@ -9,6 +9,7 @@ const { getConfig, getPaths, } = require('@redwoodjs/internal') +const { getProject } = require('@redwoodjs/structure') const config = getConfig() @@ -136,12 +137,15 @@ const baseConfig = { ...(process.env.NODE_ENV !== 'production' && { staticDirs: [`${staticAssetsFolder}`], }), - // https://storybook.js.org/docs/react/configure/typescript#mainjs-configuration - typescript: { - check: true, - // By default, the checker runs asynchronously in dev mode. Force it to run synchronously. - checkOptions: { async: false }, - }, + // only set up type checking for typescript projects + ...(getProject().isTypeScriptProject && { + // https://storybook.js.org/docs/react/configure/typescript#mainjs-configuration + typescript: { + check: true, + // By default, the checker runs asynchronously in dev mode. Force it to run synchronously. + checkOptions: { async: false }, + }, + }), } const mergeUserStorybookConfig = (baseConfig) => { From 6014b793a5958627ccff3d08f746d937d9a42a97 Mon Sep 17 00:00:00 2001 From: David Price Date: Sun, 23 Jan 2022 21:55:41 -0800 Subject: [PATCH 12/12] Update tasks/e2e/cypress/integration/03-storybook/storybook.spec.js --- tasks/e2e/cypress/integration/03-storybook/storybook.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/e2e/cypress/integration/03-storybook/storybook.spec.js b/tasks/e2e/cypress/integration/03-storybook/storybook.spec.js index fde878b44b62..211e0d303e1d 100644 --- a/tasks/e2e/cypress/integration/03-storybook/storybook.spec.js +++ b/tasks/e2e/cypress/integration/03-storybook/storybook.spec.js @@ -35,7 +35,7 @@ describe( // Slow! cy.exec(`cd ${BASE_DIR} || exit; yarn rw storybook --build`, { - timeout: 20000, + timeout: 300_0000, }) .its('stderr') .should('not.contain', 'ERR!')