From 212f8901501522552b0d8de5fcc8ad3614530b85 Mon Sep 17 00:00:00 2001 From: Hirotaka Miyagi <31152321+MH4GF@users.noreply.github.com> Date: Wed, 21 Jun 2023 16:04:06 +0900 Subject: [PATCH 01/10] docs: fix github actions example for shard usage Corrected because the content of this comment was not reflected in other parts of the usage. https://github.com/storybookjs/test-runner/pull/257#discussion_r1230432222 --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ee235901..7f3a2608 100644 --- a/README.md +++ b/README.md @@ -433,14 +433,14 @@ test: - name: Testing storybook run: yarn test-storybook --coverage --shard=${{ matrix.shard }}/${{ strategy.job-total }} - name: Renaming coverage file - uses: mv coverage/storybook/coverage-storybook.json coverage/storybook/coverage-storybook-${matrix.shard}.json + run: mv coverage/storybook/coverage-storybook.json coverage/storybook/coverage-storybook-${matrix.shard}.json report-coverage: name: Reporting storybook coverage steps: - name: Merging coverage - uses: yarn nyc merge coverage/storybook merged-output/merged-coverage.json + run: yarn nyc merge coverage/storybook merged-output/merged-coverage.json - name: Report coverage - uses: yarn nyc report --reporter=text -t merged-output --report-dir merged-output + run: yarn nyc report --reporter=text -t merged-output --report-dir merged-output ``` Circle CI example: From 9f942082436eb5280ef07e4cc8cee614b52980c1 Mon Sep 17 00:00:00 2001 From: Nikita Zyulyaev Date: Thu, 22 Jun 2023 15:05:26 +0100 Subject: [PATCH 02/10] Fix extra args not being passed to jest --- src/util/getCliOptions.test.ts | 7 +++++++ src/util/getCliOptions.ts | 6 ++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/util/getCliOptions.test.ts b/src/util/getCliOptions.test.ts index ae4d2726..dd300f49 100644 --- a/src/util/getCliOptions.test.ts +++ b/src/util/getCliOptions.test.ts @@ -10,4 +10,11 @@ describe('getCliOptions', () => { const opts = getCliOptions(); expect(opts.runnerOptions).toMatchObject(customConfig); }); + + it('returns extra args if passed', () => { + const extraArgs = ['TestName', 'AnotherTestName']; + jest.spyOn(cliHelper, 'getParsedCliOptions').mockReturnValue({ options: {}, extraArgs }); + const opts = getCliOptions(); + expect(opts.jestOptions).toEqual(extraArgs); + }); }); diff --git a/src/util/getCliOptions.ts b/src/util/getCliOptions.ts index 9e098a5b..842014d0 100644 --- a/src/util/getCliOptions.ts +++ b/src/util/getCliOptions.ts @@ -1,9 +1,7 @@ import { getParsedCliOptions } from './getParsedCliOptions'; import type { BrowserType } from 'jest-playwright-preset'; -export type JestOptions = { - [key: string]: any; -}; +export type JestOptions = any[]; export type CliOptions = { runnerOptions: { @@ -63,7 +61,7 @@ export const getCliOptions = (): CliOptions => { }, defaultOptions); if (extraArgs.length) { - finalOptions.jestOptions.push(...[extraArgs]); + finalOptions.jestOptions.push(...extraArgs); } return finalOptions; From 2171307e5ae2e010464eecda0af4b7bb3678bb41 Mon Sep 17 00:00:00 2001 From: Bryan Thomas <49354825+bryanjtc@users.noreply.github.com> Date: Wed, 28 Jun 2023 11:31:05 -0500 Subject: [PATCH 03/10] Fix for #313 --- src/test-storybook.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test-storybook.ts b/src/test-storybook.ts index b68566db..cbeebcfb 100644 --- a/src/test-storybook.ts +++ b/src/test-storybook.ts @@ -80,7 +80,7 @@ async function reportCoverage() { const onProcessEnd = () => { cleanup(); - if (process.env.STORYBOOK_COLLECT_COVERAGE !== 'true') { + if (process.env.STORYBOOK_COLLECT_COVERAGE === 'true' && process.env.JEST_SHARD !== 'true') { reportCoverage(); } }; From f7ad6957ea1a0d9962cdbfc3f59dafa1c9226a98 Mon Sep 17 00:00:00 2001 From: Bryan Thomas <49354825+bryanjtc@users.noreply.github.com> Date: Wed, 5 Jul 2023 08:27:00 -0500 Subject: [PATCH 04/10] Refactor: condition for collecting coverage in storybook Move the condition for collecting coverage to only allow it when the environment variable STORYBOOK_COLLECT_COVERAGE is true and JEST_SHARD is not true. --- src/test-storybook.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test-storybook.ts b/src/test-storybook.ts index cbeebcfb..529c4525 100644 --- a/src/test-storybook.ts +++ b/src/test-storybook.ts @@ -71,7 +71,7 @@ async function reportCoverage() { // --skip-full in case we only want to show not fully covered code // --check-coverage if we want to break if coverage reaches certain threshold // .nycrc will be respected for thresholds etc. https://www.npmjs.com/package/nyc#coverage-thresholds - if (process.env.JEST_SHARD !== 'true') { + if (process.env.STORYBOOK_COLLECT_COVERAGE === 'true' && process.env.JEST_SHARD !== 'true') { execSync(`npx nyc report --reporter=text -t ${coverageFolder} --report-dir ${coverageFolder}`, { stdio: 'inherit', }); From e7f9b287752bd4e111061ffb46e30b93c8c5659f Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Thu, 13 Jul 2023 17:47:26 +0200 Subject: [PATCH 05/10] fix coverage + shard logic --- src/test-storybook.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test-storybook.ts b/src/test-storybook.ts index 529c4525..43bd6e2f 100644 --- a/src/test-storybook.ts +++ b/src/test-storybook.ts @@ -71,7 +71,7 @@ async function reportCoverage() { // --skip-full in case we only want to show not fully covered code // --check-coverage if we want to break if coverage reaches certain threshold // .nycrc will be respected for thresholds etc. https://www.npmjs.com/package/nyc#coverage-thresholds - if (process.env.STORYBOOK_COLLECT_COVERAGE === 'true' && process.env.JEST_SHARD !== 'true') { + if (process.env.JEST_SHARD !== 'true') { execSync(`npx nyc report --reporter=text -t ${coverageFolder} --report-dir ${coverageFolder}`, { stdio: 'inherit', }); @@ -80,7 +80,7 @@ async function reportCoverage() { const onProcessEnd = () => { cleanup(); - if (process.env.STORYBOOK_COLLECT_COVERAGE === 'true' && process.env.JEST_SHARD !== 'true') { + if (process.env.STORYBOOK_COLLECT_COVERAGE === 'true') { reportCoverage(); } }; From 4c0b9494ea5db8ba22b9c54da3909339c79550ea Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Thu, 13 Jul 2023 17:56:46 +0200 Subject: [PATCH 06/10] fix type --- src/util/getCliOptions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/getCliOptions.ts b/src/util/getCliOptions.ts index 842014d0..fd0371ff 100644 --- a/src/util/getCliOptions.ts +++ b/src/util/getCliOptions.ts @@ -1,7 +1,7 @@ import { getParsedCliOptions } from './getParsedCliOptions'; import type { BrowserType } from 'jest-playwright-preset'; -export type JestOptions = any[]; +export type JestOptions = string[]; export type CliOptions = { runnerOptions: { From 7ec911f972e1c983c82e2707412d2257d3dcf076 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Fri, 14 Jul 2023 10:10:48 +0200 Subject: [PATCH 07/10] only mock return values once --- src/util/getCliOptions.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/util/getCliOptions.test.ts b/src/util/getCliOptions.test.ts index dd300f49..18c2c2d6 100644 --- a/src/util/getCliOptions.test.ts +++ b/src/util/getCliOptions.test.ts @@ -6,14 +6,14 @@ describe('getCliOptions', () => { const customConfig = { configDir: 'custom', indexJson: true }; jest .spyOn(cliHelper, 'getParsedCliOptions') - .mockReturnValue({ options: customConfig, extraArgs: [] }); + .mockReturnValueOnce({ options: customConfig, extraArgs: [] }); const opts = getCliOptions(); expect(opts.runnerOptions).toMatchObject(customConfig); }); it('returns extra args if passed', () => { const extraArgs = ['TestName', 'AnotherTestName']; - jest.spyOn(cliHelper, 'getParsedCliOptions').mockReturnValue({ options: {}, extraArgs }); + jest.spyOn(cliHelper, 'getParsedCliOptions').mockReturnValueOnce({ options: {}, extraArgs }); const opts = getCliOptions(); expect(opts.jestOptions).toEqual(extraArgs); }); From 051dea340316627e23379a1b7cdcf499e11e4443 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Fri, 14 Jul 2023 14:56:45 +0200 Subject: [PATCH 08/10] mock process.argv in test --- src/util/getCliOptions.test.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/util/getCliOptions.test.ts b/src/util/getCliOptions.test.ts index 18c2c2d6..11ae3106 100644 --- a/src/util/getCliOptions.test.ts +++ b/src/util/getCliOptions.test.ts @@ -2,6 +2,12 @@ import { getCliOptions } from './getCliOptions'; import * as cliHelper from './getParsedCliOptions'; describe('getCliOptions', () => { + let originalArgv: string[] = process.argv; + + afterEach(() => { + process.argv = originalArgv; + }); + it('returns custom options if passed', () => { const customConfig = { configDir: 'custom', indexJson: true }; jest @@ -13,6 +19,9 @@ describe('getCliOptions', () => { it('returns extra args if passed', () => { const extraArgs = ['TestName', 'AnotherTestName']; + // mock argv to avoid side effect from running tests e.g. jest --coverage, + // which would end up caught by getCliOptions + process.argv = []; jest.spyOn(cliHelper, 'getParsedCliOptions').mockReturnValueOnce({ options: {}, extraArgs }); const opts = getCliOptions(); expect(opts.jestOptions).toEqual(extraArgs); From ec98a54fffe7c27518585e58e65994d8619e9f51 Mon Sep 17 00:00:00 2001 From: MH4GF Date: Tue, 18 Jul 2023 09:04:34 +0900 Subject: [PATCH 09/10] fix: remove no-manager-cache flag --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6296cba0..10e644c9 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "build:watch": "tsup --watch", "test": "jest", "storybook": "storybook dev -p 6006", - "start": "concurrently \"yarn build:watch\" \"yarn storybook -- --no-manager-cache --quiet\"", + "start": "concurrently \"yarn build:watch\" \"yarn storybook -- --quiet\"", "build-storybook": "storybook build", "release": "yarn build && auto shipit", "test-storybook": "node dist/test-storybook", From 137a7ee47c7d5ce575a77053969bb112a7dd7392 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Thu, 20 Jul 2023 10:45:52 +0200 Subject: [PATCH 10/10] Create CODEOWNERS --- CODEOWNERS | 1 + 1 file changed, 1 insertion(+) create mode 100644 CODEOWNERS diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 00000000..f550d2a8 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1 @@ +* @yannbf @kasperpeulen