From 53d5e80edcf8615415f8feb50875e4b219126182 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Wed, 22 Jun 2022 16:34:48 +0200 Subject: [PATCH 1/8] feat: use addon-coverage in internal example --- .storybook/main.js | 15 +-------------- README.md | 27 +++++++-------------------- package.json | 1 + yarn.lock | 10 +++++++++- 4 files changed, 18 insertions(+), 35 deletions(-) diff --git a/.storybook/main.js b/.storybook/main.js index 2b6c85c8..e472b171 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -28,6 +28,7 @@ const addons = [ } : '@storybook/addon-essentials', '@storybook/addon-interactions', + '@storybook/addon-coverage', ]; module.exports = { @@ -37,20 +38,6 @@ module.exports = { storyStoreV7: process.env.STORY_STORE_V7 ? true : false, buildStoriesJson: true, }, - babel: async (options) => { - options.plugins.push([ - 'istanbul', - { - include: ['stories/**'], - exclude: [ - '**/*.d.ts', - '**/*{.,-}{spec,stories,types}.{js,jsx,ts,tsx}', - ], - }, - ]) - - return options - }, core: { disableTelemetry: true } diff --git a/README.md b/README.md index 3b3fcd5c..e49bfb12 100644 --- a/README.md +++ b/README.md @@ -266,40 +266,27 @@ The test runner supports code coverage with the `--coverage` flag or `STORYBOOK_ ### Instrument the code -Given that your components' code runs in the context of a real browser, they have to be instrumented so that the test runner is able to collect coverage. In order to do so, you have to setup the instrumentation yourself. +Given that your components' code runs in the context of a real browser, they have to be instrumented so that the test runner is able to collect coverage. You can either do that manually with whatever flavor of istanbul (babel, rollup, vite, webpack loader) configuration, or for select frameworks (React, Preact, HTML, Web components and Vue) you can use the [@storybook/addon-coverage](https://github.com/storybookjs/addon-coverage) addon. Install the istanbul babel plugin: ```sh -yarn add -D babel-plugin-istanbul +yarn add -D @storybook/addon-coverage ``` -Storybook allows code transpilation with babel out of the box by configuring the `babel` function in your `main.js`. Add the `istanbul` plugin: +And register it in your `.storybook/main.js` file: ```js // .storybook/main.js module.exports = { // ...rest of your code here - babel: async (options) => { - options.plugins.push([ - 'istanbul', - { - // provide include patterns if you like - include: ['src/components/**'], - // provide exclude patterns if you like - exclude: [ - '**/*.d.ts', - '**/*{.,-}{spec,stories,types}.{js,jsx,ts,tsx}', - ], - }, - ]); - - return options; - }, + addons: [ + "@storybook/addon-coverage", + ] }; ``` -The babel plugin has default options that might suffice to your project, however if you want to know which options are taken into account you can check them [here](https://github.com/istanbuljs/babel-plugin-istanbul/blob/master/src/index.js#L82). +The addon has default options that might suffice to your project, however if you want to know how to customize the addon[here](https://github.com/storybookjs/addon-coverage#configuring-the-addon). ### Run tests with --coverage flag diff --git a/package.json b/package.json index 4cc26a1e..731421aa 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "@babel/template": "^7.14.5", "@babel/types": "^7.14.8", "@jest/types": "^27.0.6", + "@storybook/addon-coverage": "^0.0.1", "@storybook/addon-essentials": "^6.5.0", "@storybook/addon-interactions": "^6.5.0", "@storybook/jest": "^0.0.10", diff --git a/yarn.lock b/yarn.lock index f7c4a4ab..1dd47e1e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2055,6 +2055,14 @@ lodash "^4.17.21" ts-dedent "^2.0.0" +"@storybook/addon-coverage@^0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/@storybook/addon-coverage/-/addon-coverage-0.0.1.tgz#0eaf343a403c8a12a40839b40268bf51defef06f" + integrity sha512-Ml7GYmksZWqsXJhYig75UlFqEj3SMeKhLyMaHi0r6jCPdPSbl+osmWgmXnzQwdlqkhm7NrAIK+NYFVW/uTcMXA== + dependencies: + "@types/babel__core" "^7.1.19" + babel-plugin-istanbul "^6.1.1" + "@storybook/addon-docs@6.5.0": version "6.5.0" resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-6.5.0.tgz#54457ddebbe87f40738503f6c939fac44a982926" @@ -3022,7 +3030,7 @@ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.19": version "7.1.19" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== From 640c8209929d35beca330af3c5c8469f470bdc32 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Fri, 24 Jun 2022 10:22:28 +0200 Subject: [PATCH 2/8] feat: move coverage to coverage folder --- bin/test-storybook.js | 57 +++++++++++++++++++++++++++++++------------ 1 file changed, 42 insertions(+), 15 deletions(-) diff --git a/bin/test-storybook.js b/bin/test-storybook.js index a514050e..0c8864e2 100755 --- a/bin/test-storybook.js +++ b/bin/test-storybook.js @@ -35,11 +35,47 @@ const cleanup = () => { log(`Cleaning up ${storiesJsonTmpDir}`); fs.rmSync(storiesJsonTmpDir, { recursive: true, force: true }); } - process.exit(); }; -process.on('SIGINT', cleanup); -process.on('beforeExit', cleanup); +let isWatchMode = false; +async function reportCoverage() { + if (isWatchMode || process.env.STORYBOOK_COLLECT_COVERAGE !== 'true') { + return + } + + const coverageFolderE2E = path.resolve(process.cwd(), '.nyc_output'); + const coverageFolder = path.resolve(process.cwd(), 'coverage/storybook'); + + // in case something goes wrong and .nyc_output does not exist, bail + if (!fs.existsSync(coverageFolderE2E)) { + return + } + + // if there's no coverage folder, create one + if (!fs.existsSync(coverageFolder)) { + fs.mkdirSync(coverageFolder, { recursive: true }); + } + + // move the coverage files from .nyc_output folder (coming from jest-playwright) to coverage, then delete .nyc_output + fs.renameSync( + `${coverageFolderE2E}/coverage.json`, + `${coverageFolder}/coverage-storybook-final.json`, + ); + fs.rmSync(coverageFolderE2E, { recursive: true }); + + // --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 + execSync(`npx nyc report --reporter=text -t ${coverageFolder} --report-dir ${coverageFolder}`, { stdio: 'inherit' }) +} + +const onProcessEnd = () => { + cleanup(); + reportCoverage(); +} + +process.on('SIGINT', onProcessEnd); +process.on('exit', onProcessEnd); function sanitizeURL(url) { let finalURL = url; @@ -88,14 +124,6 @@ async function executeJestPlaywright(args) { await jest.run(argv); } -async function printCoverageReport() { - // --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 - // idea: pass configuration object for thresholds https://www.npmjs.com/package/nyc#coverage-thresholds - execSync('npx nyc report', { stdio: 'inherit' }) - log('For a better, interactive summary of coverage, run: \nnpx nyc report --reporter=lcov\n') -} - async function checkStorybook(url) { try { const res = await fetch(url, { method: 'HEAD' }); @@ -166,6 +194,9 @@ const main = async () => { process.exit(0); } + // set this flag to skip reporting coverage in watch mode + isWatchMode = jestOptions.watch; + const targetURL = sanitizeURL(process.env.TARGET_URL || runnerOptions.url); await checkStorybook(targetURL); @@ -211,10 +242,6 @@ const main = async () => { } await executeJestPlaywright(jestOptions); - - if (process.env.STORYBOOK_COLLECT_COVERAGE === 'true') { - printCoverageReport(); - } }; main().catch((e) => log(e)); From d206bb41f14fbf57adbadddd38827894e59b3ce8 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Fri, 24 Jun 2022 10:44:09 +0200 Subject: [PATCH 3/8] ci: separate test workflows and add codecov [skip release] --- .../{test.yml => tests-extended.yml} | 11 +------ .github/workflows/tests.yml | 31 +++++++++++++++++++ package.json | 1 + 3 files changed, 33 insertions(+), 10 deletions(-) rename .github/workflows/{test.yml => tests-extended.yml} (73%) create mode 100644 .github/workflows/tests.yml diff --git a/.github/workflows/test.yml b/.github/workflows/tests-extended.yml similarity index 73% rename from .github/workflows/test.yml rename to .github/workflows/tests-extended.yml index 8eb80ec6..f0f0fc99 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/tests-extended.yml @@ -1,4 +1,4 @@ -name: Test +name: Tests-extended on: [push] @@ -16,15 +16,6 @@ jobs: - name: Install dependencies uses: bahmutov/npm-install@v1 - - name: Run jest tests - run: | - yarn test - - - name: Run test runner (default config) - run: | - yarn build - yarn test-storybook:ci - - name: Run test runner (story store v7) run: | yarn build diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 00000000..3f7ed98f --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,31 @@ +name: Tests + +on: [push] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Use Node.js 14.x + uses: actions/setup-node@v1 + with: + node-version: 14.x + + - name: Install dependencies + uses: bahmutov/npm-install@v1 + + - name: Run jest tests + run: | + yarn test --coverage + + - name: Run test runner + run: | + yarn build + yarn test-storybook:ci-coverage + + - name: Generate code coverage + uses: codecov/codecov-action@v2 + with: + verbose: true diff --git a/package.json b/package.json index 731421aa..ebe01f9a 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "test-storybook:no-cache": "yarn test-storybook --no-cache", "test-storybook:json": "yarn test-storybook --stories-json", "test-storybook:ci": "concurrently -k -s first -n \"SB,TEST\" -c \"magenta,blue\" \"yarn build-storybook --quiet && npx http-server storybook-static --port 6006 --silent\" \"wait-on tcp:6006 && yarn test-storybook\"", + "test-storybook:ci-coverage": "concurrently -k -s first -n \"SB,TEST\" -c \"magenta,blue\" \"yarn build-storybook --quiet && npx http-server storybook-static --port 6006 --silent\" \"wait-on tcp:6006 && yarn test-storybook --coverage\"", "test-storybook:ci-json": "concurrently -k -s first -n \"SB,TEST\" -c \"magenta,blue\" \"yarn build-storybook --quiet && npx http-server storybook-static --port 6006 --silent\" \"wait-on tcp:6006 && yarn test-storybook:json\"", "generate-dynamic-stories": "node scripts/generate-dynamic-stories.js" }, From 417c2a7533bc195f04d49d7bfac12319f94e0c6d Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Fri, 24 Jun 2022 11:22:18 +0200 Subject: [PATCH 4/8] rename final coverage file --- bin/test-storybook.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/test-storybook.js b/bin/test-storybook.js index 0c8864e2..47ac6908 100755 --- a/bin/test-storybook.js +++ b/bin/test-storybook.js @@ -59,7 +59,7 @@ async function reportCoverage() { // move the coverage files from .nyc_output folder (coming from jest-playwright) to coverage, then delete .nyc_output fs.renameSync( `${coverageFolderE2E}/coverage.json`, - `${coverageFolder}/coverage-storybook-final.json`, + `${coverageFolder}/coverage-storybook.json`, ); fs.rmSync(coverageFolderE2E, { recursive: true }); From 197186d8407fdedff20165c0589beb486edf6bc6 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Fri, 24 Jun 2022 11:22:30 +0200 Subject: [PATCH 5/8] docs(README): update coverage instructions --- .github/assets/coverage-result.png | Bin 51307 -> 57187 bytes README.md | 43 +++++++++++++++++------------ 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/.github/assets/coverage-result.png b/.github/assets/coverage-result.png index 7787afcce214609675dacb1575b9ecfaaf1afd3b..60be71b09c2fb873e939c82b4726037712e59317 100644 GIT binary patch literal 57187 zcmZU)1yo#3(lCrONN{&&aCditJA+#WcM0z95r z-b+bQsJS{>+Sr4kpn%C1rlwf$nSsM*W~QdY6HE-quAUlEQE?ikfrH(H6lh`DsL0VH z1MmsZ(4ykBsO&_zem@4g0flTwA>+vR-=#-=mYWgfeyQfIP>ax_Xo?_jD7EVn>@r`Feeiai zbUtAmTabM&4b6o+4ey*W#)gN>&4oIEhm)h}+L>;{I7Q;UtqfAs$4Rzw=24|7pt>_$ zghoY(m2pE}LP&COGA1l6aGbJ23^AlHMg166k~t6)HgrH20bv&jP+y#din?k*NI>IA z*{_Ai&VJs)&TcPck_1WxctUOQrEhXuPy;>>MF$7pti8Q`nI|AvqUU0N&OLv7JCk{P zdox1ienW%p3l@gLOEaeiW?*VUII9B&y|+|WhGK-20Z`D9Hc)Vo5;Wu?f;>=AuqhEx zh>(9Q$RnK(^Pg52nta&*l%b{mc9hVRdjB5suW8{520OZ0JGnb}6n%oATCmXqxr3CI z1TCB#Sj|2-nS)uq9Gw4xKnZ&ZLW&MxcQXnv2YW|1K`#-ie|iW)%73fbs3`vF;%+BG z1yWX{kaBVbQ}D8~v$9i(B2!RM2)ll;6x5KG{Wmz|O@zwY-Q8J`jm^{3lhu=p)ydV0 zjYB{{fQ_A#jgylF(u2j#+tJ<3i^b86`d>)?gGU~7=aNbwi1nYojPy9gE4 zUqb))``0+ZUN--w93bq0&=BR~ zz^Kan)ZTvT&Fx%gm z{|_hr#pZu%A$%4^7H0duH4{ayWOktsxP;*xY1(i%&NZ~b}f;>fV7#tuh={0bDbsX&W{fA+S zBJ}RXR(^|Xt7XxuMYdXD=W8Ko(^y;_iM6ox8gM$N|ua9cf`IyrHYdCHg zBIx)aJ51-slB9A)_tsN=WE3GKmy3(T)U_4ye0x1H1r?QorY3IUuaBv+;{ONbO}XL7 z7W(-!v38|S+Gqxw6`NvmZmrP|Jfp?eY{|v-DjN%15~Aa}yadt}&9}}DlHC!edb_=Z zx!3GwZ}99vocLbC;)w5#0(-@k?@II$OWa&7zIe-;AFRapxx#-BZ6Gm7IlNdUcg1~7 z8Fpl7^>dBQVnof^VkBcKn~8mO<^GxKH@kV}>zn+gxpL#*W+Lk9GdQ^Zqh@4s(P>P& zn<`bzCrjT}Q>taIO6Te%l6ID~g>r>F@)gn;+bRUV(&syp+AcPKQ#^9l(u*gWAL){W zm(#n<)%mJHTQPEjC#y0vpl*L`Q}2#jN@k?<@3|vK{2i3TQMx-NN3w>7hV@%8yTTNZ zG=QdVrBy#cM*3&XZ(n3Xht-AZ{qd~E)J(4#4LPIJZ9A=6OM#E`Xo5z%Oc81rh6T^x z56KiO$b`F;10BCJm;Oe+@>I)gxXp_%D=PzzPJHGui~SJQVgK0v58Iuig37A3*x1-& zM7?AD#!?I1_9kaeMSLB=V;*SaMLy6TJHn+t8k(9mFA)>&=|@4P`mnh?qA`0|Sk@

fYsujArSADy051c?I1a|TXDtMJ(ewu++dY91^) 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 z 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

mSzy1oeAxRR!$tw8 z`u{kK5y0~cNE_*uFRz2(&W4i=cSLB5?Aq0}s9H6YOJp2YzU+^AXlOa8sEnk^2n&bM z(qh8evJGYbG}1v&_=BaWR|!6PHqU2&GUa55hCI(bzKNW$NkzZ8mDTWOB08zoAkF>Q zGqoHWAmsz>8ZZJlyF(c)oqfi?3W{!qAna|u>s_wG#`O60D+;X#({$LSo;XrUZtm-> zzW~3Rs!`0nt(GZopo*iEysRL6{ip9!Bk_Pmp9c3Aj3l(q#>}zN6SiKTR%&e}4+yuI-#AdDhR%GsfH=Sq}J8PIgZ;6C%><70 zSPPo0JC=OREMz>;XSb-umXws6gxtc#KRI1zy8ANalw?fyI$y1Su&EmsHU;kpG=(gnTISh&MvKgCXTQ73TU61|l@(%A#ou%#WN-nf8MU9vL;S&%^~;veY}p zb^JOT_nOSiOC)*U)kWy%_p^C$@1jhwVPzkhK5uDo%9oCwVRPf?-#cYD(}b^}VEK*4 zf<)0E;;BrF<^LRW31^oV6_X@+qZ znzp-v#l-5+=PUPI*afU=hN|2}mRo%|vvk>qP!*fkSz^2h`nUu-L0(79K(UczG#0E%T~W>Ti8;{Uc6r5IRdL6ghU~RXX+>q& znCZ90(W07~nh)`=%ve6|X{-}_xFW9r-*Z3c!NEbZ5f52|XGnOQ_J@yxR!0y{2`y8I z+w%6;SGqpyQ^9>inIx;L&h;s|NxWTB8R)xY$dwnqaY2DB&(3_`>M?)p78rak5So_u z(lpO}!8BdejZoWr3)EFEZ@|zbOm03H3Szv;4D8q4p{^CQvaZqWFKzz&HVC*z=t&vr zpaV)+E_RCM`YHX7T)EJ!br3JP1mhssyh{S*~U2} zR78G)JPG09z3`;&QA1u(xhEg%-LB{Bj3(oT_t(C*u2VMbh3}dwE8o2;k4B?I?+>%O z7bmf&Ktn&Y$e3bOC1CvB&oQ30+xd8C|jNYQA2z_d`==#u!=2 z)ITECJeUK9h|(|MpZ(H9@J&W^!M%2b5BP{mu+!JY@j7k)1VhmzgXYA_PDJG z>@_PTUHqc63en z12gKjLYzH4xKjO9)zi0eM)RIk+I6dBC=f2`Pw-o#wR5|{jAIfK*uVIxPHBpLK}z1^ zbxJ<Jyv&pk8hz-gDc`@Xdq)v|&u@c4j2A;ikfm73X}iv-YQ>nIih+Nh2PKFW26W znS@)|Rh%D)z{p!h_;SX^(A+I`M>*m2g1-a>K0WHH^n^%L!x>9kjZ@G5dC((Tgo5O> zBHND*BAbah<^&v1F5Mpt&Z)TXT3%aHboliQKdgVxKo`J?M3fOubkaTp_rvqTdz6>G u=RY$EK2GzB@6oi5`{y4!h|U&?&Ip+O{9JH~40kU8pL=k1#VUET(Ek9!R^dYc literal 51307 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 G=zjs;&wY;o diff --git a/README.md b/README.md index e49bfb12..ff87369d 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,10 @@ Read the announcement: [Interaction Testing with Storybook](https://storybook.js - [1. Running against deployed Storybooks on Github Actions deployment](#1-running-against-deployed-storybooks-on-github-actions-deployment) - [2. Running against locally built Storybooks in CI](#2-running-against-locally-built-storybooks-in-ci) - [Setting up code coverage](#setting-up-code-coverage) - - [Instrument the code](#instrument-the-code) - - [Run tests with `--coverage` flag](#run-tests-with---coverage-flag) + - [1 - Instrument the code](#1---instrument-the-code) + - [Using @storybook/addon-coverage](#using-storybookaddon-coverage) + - [Manually configuring Istanbul](#manually-configuring-istanbul) + - [2 - Run tests with `--coverage` flag](#2---run-tests-with---coverage-flag) - [Experimental test hook API](#experimental-test-hook-api) - [Image snapshot recipe](#image-snapshot-recipe) - [Render lifecycle](#render-lifecycle) @@ -26,7 +28,6 @@ Read the announcement: [Interaction Testing with Storybook](https://storybook.js - [The error output in the CLI is too short](#the-error-output-in-the-cli-is-too-short) - [The test runner seems flaky and keeps timing out](#the-test-runner-seems-flaky-and-keeps-timing-out) - [The test runner reports "No tests found" running on a Windows CI](#the-test-runner-reports-"no-tests-found"-running-on-a-windows-ci) - - [The test runner does not show reports in watch mode](#the-test-runner-does-not-show-reports-in-watch-mode) - [Adding the test runner to other CI environments](#adding-the-test-runner-to-other-ci-environments) - [Future work](#future-work) @@ -264,11 +265,15 @@ jobs: The test runner supports code coverage with the `--coverage` flag or `STORYBOOK_COLLECT_COVERAGE` environment variable. The pre-requisite is that your components are instrumented using [istanbul](https://istanbul.js.org/). -### Instrument the code +### 1 - Instrument the code -Given that your components' code runs in the context of a real browser, they have to be instrumented so that the test runner is able to collect coverage. You can either do that manually with whatever flavor of istanbul (babel, rollup, vite, webpack loader) configuration, or for select frameworks (React, Preact, HTML, Web components and Vue) you can use the [@storybook/addon-coverage](https://github.com/storybookjs/addon-coverage) addon. +Given that your components' code runs in the context of a real browser, they have to be instrumented so that the test runner is able to collect coverage. This is done by configuring [istanbul](https://istanbul.js.org/) in your Storybook. You can achieve that in two different ways: -Install the istanbul babel plugin: +#### Using @storybook/addon-coverage + +For select frameworks (React, Preact, HTML, Web components and Vue) you can use the [@storybook/addon-coverage](https://github.com/storybookjs/addon-coverage) addon, which will automatically configure the plugin for you. + +Install `@storybook/addon-coverage`: ```sh yarn add -D @storybook/addon-coverage @@ -286,9 +291,13 @@ module.exports = { }; ``` -The addon has default options that might suffice to your project, however if you want to know how to customize the addon[here](https://github.com/storybookjs/addon-coverage#configuring-the-addon). +The addon has default options that might suffice to your project, however if you want to customize the addon you can see how it's done [here](https://github.com/storybookjs/addon-coverage#configuring-the-addon). + +#### Manually configuring istanbul + +Some frameworks or Storybook builders might not automatically accept babel plugins. In that case, you will have to manually configure whatever flavor of [istanbul](https://istanbul.js.org/) (rollup, vite, webpack loader) your project might require. -### Run tests with --coverage flag +### 2 - Run tests with --coverage flag After setting up instrumentation, run Storybook then run the test-runner with `--coverage`: @@ -296,21 +305,25 @@ After setting up instrumentation, run Storybook then run the test-runner with `- yarn test-storybook --coverage ``` -The test runner will report the results in the CLI and generate a `.nyc_output/coverage.json` file which can be used by `nyc`. +The test runner will report the results in the CLI and generate a `coverage/storybook/coverage-storybook.json` file which can be used by `nyc`. ![](.github/assets/coverage-result.png) -Notice that it provides a message telling you that you can get a better, interactive summary of your code by running: +If you want to generate reports with [different reporters](https://istanbul.js.org/docs/advanced/alternative-reporters/), you can use `nyc` and point it to the folder which contains the Storybook coverage file. `nyc` is a dependency of the test runner so you will already have it in your project. + +Here's an example generating an `lcov` report: ``` -npx nyc report --reporter=lcov +npx nyc report --reporter=lcov -t coverage/storybook --report-dir coverage/storybook ``` -This will generate a folder called `coverage`, containing an `index.html` file which can be explored and will show the coverage in detail: +This will generate a more detailed, interactive coverage summary that you can access at `coverage/storybook/index.html` file which can be explored and will show the coverage in detail: ![](.github/assets/coverage-report-html.png) -`nyc` is a dependency of the test runner so you will already have it in your project. In the example above, the `lcov` reporter was used, which generates an output compatible with tools like [Codecov](https://codecov.io/). However, you can configure it to generate different reports, and you can find more information [here](https://istanbul.js.org/docs/advanced/alternative-reporters/). +If you are using tools like [Codecov](https://codecov.io/), the coverage will be detected automatically. In case you have multiple coverage files in the coverage folder, they will be merged automatically by Codecov. + +If you want certain parts of your code to be deliberately ignored, you can use istanbul [parsing hints](https://github.com/istanbuljs/nyc#parsing-hints-ignoring-lines). ## Experimental test hook API @@ -470,10 +483,6 @@ env: TEMP: ${{ runner.temp }} ``` -#### The test runner does not show reports in watch mode - -Because the displaying of reports and the underlying Jest process are separate, the reports can't be show in watch mode. However, the `.nyc_output/coverage.json` file is being generated, and you can show the reports by running `npx nyc report` in a separate terminal. - #### Adding the test runner to other CI environments As the test runner is based on playwright, depending on your CI setup you might need to use specific docker images or other configuration. In that case, you can refer to the [Playwright CI docs](https://playwright.dev/docs/ci) for more information. From 6b507c8eb8247898b4bc07cfa7f18c5297ada0d7 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Fri, 24 Jun 2022 11:22:44 +0200 Subject: [PATCH 6/8] chore: remove unnecessary log --- .storybook/test-runner.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/.storybook/test-runner.ts b/.storybook/test-runner.ts index c624eaee..76d89258 100644 --- a/.storybook/test-runner.ts +++ b/.storybook/test-runner.ts @@ -14,7 +14,6 @@ const config: TestRunnerConfig = { const { parameters } = await getStoryContext(page, context); if (parameters?.tests?.disableSnapshots) { - console.log('skipping story ', context.id); return; } From ec36320b68ef6a57eab008fbaaf90cf1d3a2d95e Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Fri, 24 Jun 2022 11:34:23 +0200 Subject: [PATCH 7/8] docs(README): link to nyc configuration file instructions --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index ff87369d..c2d18eb6 100644 --- a/README.md +++ b/README.md @@ -321,6 +321,8 @@ This will generate a more detailed, interactive coverage summary that you can ac ![](.github/assets/coverage-report-html.png) +The `nyc` command will respect [nyc configuration files](https://github.com/istanbuljs/nyc#common-configuration-options) if you have them in your project. + If you are using tools like [Codecov](https://codecov.io/), the coverage will be detected automatically. In case you have multiple coverage files in the coverage folder, they will be merged automatically by Codecov. If you want certain parts of your code to be deliberately ignored, you can use istanbul [parsing hints](https://github.com/istanbuljs/nyc#parsing-hints-ignoring-lines). From 4d54d5b045c26c2b8eb2fced2974766248e87538 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Fri, 24 Jun 2022 14:37:18 +0200 Subject: [PATCH 8/8] docs(README): add coverage merge recipe --- README.md | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c2d18eb6..ccd9b970 100644 --- a/README.md +++ b/README.md @@ -323,10 +323,31 @@ This will generate a more detailed, interactive coverage summary that you can ac The `nyc` command will respect [nyc configuration files](https://github.com/istanbuljs/nyc#common-configuration-options) if you have them in your project. -If you are using tools like [Codecov](https://codecov.io/), the coverage will be detected automatically. In case you have multiple coverage files in the coverage folder, they will be merged automatically by Codecov. - If you want certain parts of your code to be deliberately ignored, you can use istanbul [parsing hints](https://github.com/istanbuljs/nyc#parsing-hints-ignoring-lines). +### 3 - Merging code coverage with coverage from other tools + +The test runner reports coverage related to the `coverage/storybook/coverage-storybook.json` file. This is by design, showing you the coverage which is tested while running Storybook. + +Now, you might have other tests (e.g. unit tests) which are _not_ covered in Storybook but are covered when running tests with Jest, which you might also generate coverage files from, for instance. In such cases, if you are using tools like [Codecov](https://codecov.io/) to automate reporting, the coverage files will be detected automatically and if there are multiple files in the coverage folder, they will be merged automatically. + +Alternatively, in case you want to merge coverages from other tools, you should: + +1 - move or copy the `coverage/storybook/coverage-storybook.json` into `coverage/coverage-storybook.json`; +2 - run `nyc report` against the `coverage` folder. + +Here's an example on how to achieve that: + +```json +{ + "scripts": { + "test:coverage": "jest --coverage", + "test-storybook:coverage": "test-storybook --coverage", + "coverage-report": "cp coverage/storybook/coverage-storybook.json coverage/coverage-storybook.json && nyc report --reporter=html -t coverage --report-dir coverage" + } +} +``` + ## Experimental test hook API The test runner renders a story and executes its [play function](https://storybook.js.org/docs/react/writing-stories/play-function) if one exists. However, there are certain behaviors that are not possible to achieve via the play function, which executes in the browser. For example, if you want the test runner to take visual snapshots for you, this is something that is possible via Playwright/Jest, but must be executed in Node.