From 4b140582f3f7b117068d295a3dd71eec4d788cff Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Thu, 3 Feb 2022 15:50:14 +0800 Subject: [PATCH 1/8] Add setPreRender/setPostRender hooks & example --- README.md | 44 ++++++++++ jest-setup.js | 9 ++ package.json | 2 + src/csf/transformCsf.ts | 12 ++- src/index.ts | 1 + src/playwright/hooks.ts | 18 ++++ src/playwright/transformPlaywright.ts | 19 +++- src/typings.d.ts | 1 + ...-js-basic-button-demo-play-test-1-snap.png | Bin 0 -> 6429 bytes ...-basic-button-find-by-play-test-1-snap.png | Bin 0 -> 6928 bytes ...basic-button-primary-smoke-test-1-snap.png | Bin 0 -> 7017 bytes ...element-to-be-removed-play-test-1-snap.png | Bin 0 -> 6928 bytes ...basic-button-wait-for-play-test-1-snap.png | Bin 0 -> 6429 bytes ...c-button-with-loaders-play-test-1-snap.png | Bin 0 -> 9095 bytes ...ple-header-logged-in-smoke-test-1-snap.png | Bin 0 -> 9503 bytes ...le-header-logged-out-smoke-test-1-snap.png | Bin 0 -> 10718 bytes ...ample-page-logged-in-smoke-test-1-snap.png | Bin 0 -> 77045 bytes ...mple-page-logged-out-smoke-test-1-snap.png | Bin 0 -> 78110 bytes test-runner-jest.config.js | 1 + yarn.lock | 83 +++++++++++++++++- 20 files changed, 181 insertions(+), 9 deletions(-) create mode 100644 jest-setup.js create mode 100644 src/index.ts create mode 100644 src/playwright/hooks.ts create mode 100644 src/typings.d.ts create mode 100644 stories/basic/__image_snapshots__/button-stories-js-basic-button-demo-play-test-1-snap.png create mode 100644 stories/basic/__image_snapshots__/button-stories-js-basic-button-find-by-play-test-1-snap.png create mode 100644 stories/basic/__image_snapshots__/button-stories-js-basic-button-primary-smoke-test-1-snap.png create mode 100644 stories/basic/__image_snapshots__/button-stories-js-basic-button-wait-for-element-to-be-removed-play-test-1-snap.png create mode 100644 stories/basic/__image_snapshots__/button-stories-js-basic-button-wait-for-play-test-1-snap.png create mode 100644 stories/basic/__image_snapshots__/button-stories-js-basic-button-with-loaders-play-test-1-snap.png create mode 100644 stories/basic/__image_snapshots__/header-stories-js-example-header-logged-in-smoke-test-1-snap.png create mode 100644 stories/basic/__image_snapshots__/header-stories-js-example-header-logged-out-smoke-test-1-snap.png create mode 100644 stories/basic/__image_snapshots__/page-stories-js-example-page-logged-in-smoke-test-1-snap.png create mode 100644 stories/basic/__image_snapshots__/page-stories-js-example-page-logged-out-smoke-test-1-snap.png diff --git a/README.md b/README.md index 9ec64030..e6396bfe 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ Storybook test runner turns all of your stories into executable tests. - [Running in CI](#running-in-ci) - [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) + - [Experimental test hook API](#experimental-test-hook-api) - [Troubleshooting](#troubleshooting) - [The test runner seems flaky and keeps timing out](#the-test-runner-seems-flaky-and-keeps-timing-out) - [Adding the test runner to other CI environments](#adding-the-test-runner-to-other-ci-environments) @@ -228,6 +229,49 @@ jobs: > **_NOTE:_** Building Storybook locally makes it simple to test Storybooks that could be available remotely, but are under authentication layers. If you also deploy your Storybooks somewhere (e.g. Chromatic, Vercel, etc.), the Storybook URL can still be useful with the test-runner. You can pass it to the `REFERENCE_URL` environment variable when running the test-storybook command, and if a story fails, the test-runner will provide a helpful message with the link to the story in your published Storybook instead. +## 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. + +To enable use cases like visual or DOM snapshots, the test runner exports test hooks that can be overridden globally. These hooks give you access to the test lifecycle before and after the story is rendered. + +Consider the following pseudocode: + +```js +it('component--widget', async () => { + const page = newPage(); + const context = { id: 'component--widget', title: 'Component', name: 'Widget' }; + await page.goto(STORYBOOK_URL); + + // pre-render hook + if (preRender) await preRender(page, context); + + // render the story and run its paly function (if applicable) + await page.execute('render', context); + + // post-render hook + if (postRender) await postRender(page, context); +}); +``` + +The hooks here, `preRender` and `postRender` are functions that take a [Playwright Page](https://playwright.dev/docs/pages) and a context object with the current story `id`, `title`, and `name`. They are globally settable by `@storybook/test-runner`'s `setPreRender` and `setPostRender` APIs. + +Thus, to make the test runner perform image snapshotting, you might set up the following in your `jest-setup.js`: + +```js +const { toMatchImageSnapshot } = require('jest-image-snapshot'); +const { setPostRender } = require('@storybook/test-runner'); + +setPostRender(async (page, context) => { + const image = await page.screenshot(); + expect(image).toMatchImageSnapshot(); +}); + +expect.extend({ toMatchImageSnapshot }); +``` + +> **NOTE:** These test hooks are experimental and may be subject to breaking changes. We encourage you to test as much as possible within the story's play function when that's possible. + ## Troubleshooting #### The test runner seems flaky and keeps timing out diff --git a/jest-setup.js b/jest-setup.js new file mode 100644 index 00000000..3c89e3d5 --- /dev/null +++ b/jest-setup.js @@ -0,0 +1,9 @@ +const { toMatchImageSnapshot } = require('jest-image-snapshot'); +const { setPostRender } = require('./dist/cjs'); + +setPostRender(async (page, context) => { + const image = await page.screenshot(); + expect(image).toMatchImageSnapshot(); +}); + +expect.extend({ toMatchImageSnapshot }); diff --git a/package.json b/package.json index efa08de7..ddde3d64 100644 --- a/package.json +++ b/package.json @@ -82,6 +82,7 @@ "dedent": "^0.7.0", "jest": "^27.0.6", "jest-environment-jsdom": "^27.0.6", + "jest-image-snapshot": "^4.5.1", "prettier": "^2.3.1", "prop-types": "^15.7.2", "react": "^17.0.1", @@ -105,6 +106,7 @@ "dependencies": { "@storybook/csf": "0.0.2--canary.87bc651.0", "@storybook/csf-tools": "^6.4.14", + "global": "^4.4.0", "jest-playwright-preset": "^1.7.0", "node-fetch": "^2", "playwright": "^1.14.0", diff --git a/src/csf/transformCsf.ts b/src/csf/transformCsf.ts index 6449f4a9..8ad48e8e 100644 --- a/src/csf/transformCsf.ts +++ b/src/csf/transformCsf.ts @@ -14,8 +14,9 @@ export interface TestContext { id: t.Literal; hasPlayFn?: t.BooleanLiteral; } -type FilePrefixer = () => t.Statement[]; -type TestPrefixer = (context: TestContext) => t.Statement[]; +type TemplateResult = t.Statement | t.Statement[]; +type FilePrefixer = () => TemplateResult; +type TestPrefixer = (context: TestContext) => TemplateResult; interface TransformOptions { clearBody?: boolean; @@ -41,7 +42,7 @@ const prefixFunction = ( }; // instead, let's just make the prefixer return the function - const result = testPrefixer(context); + const result = makeArray(testPrefixer(context)); const stmt = result[1] as t.ExpressionStatement; return stmt.expression; }; @@ -71,6 +72,9 @@ const makeDescribe = (key: string, tests: t.Statement[]): t.Statement | null => ); }; +const makeArray = (templateResult: TemplateResult) => + Array.isArray(templateResult) ? templateResult : [templateResult]; + export const transformCsf = ( code: string, { @@ -112,7 +116,7 @@ export const transformCsf = ( // FIXME: insert between imports if (filePrefixer) { - const { code: prefixCode } = generate(t.program(filePrefixer()), {}); + const { code: prefixCode } = generate(t.program(makeArray(filePrefixer())), {}); result = `${prefixCode}\n`; } if (!clearBody) result = `${result}${code}\n`; diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 00000000..c0807099 --- /dev/null +++ b/src/index.ts @@ -0,0 +1 @@ +export * from './playwright/hooks'; diff --git a/src/playwright/hooks.ts b/src/playwright/hooks.ts new file mode 100644 index 00000000..0b8b7d6d --- /dev/null +++ b/src/playwright/hooks.ts @@ -0,0 +1,18 @@ +import global from 'global'; +import type { Page } from 'playwright'; + +export type TestContext = { + id: string; + title: string; + name: string; +}; + +export type TestHook = (page: Page, context: TestContext) => Promise; + +export const setPreRender = (preRender: TestHook) => { + global.__sbPreRender = preRender; +}; + +export const setPostRender = (postRender: TestHook) => { + global.__sbPostRender = postRender; +}; diff --git a/src/playwright/transformPlaywright.ts b/src/playwright/transformPlaywright.ts index 3849be18..372454f9 100644 --- a/src/playwright/transformPlaywright.ts +++ b/src/playwright/transformPlaywright.ts @@ -5,18 +5,34 @@ import { autoTitle } from '@storybook/store'; import { transformCsf } from '../csf/transformCsf'; +const filePrefixer = template(` + import global from 'global'; +`); + export const testPrefixer = template( ` console.log({ id: %%id%%, title: %%title%%, name: %%name%%, storyExport: %%storyExport%% }); async () => { + const context = { id: %%id%%, title: %%title%%, name: %%name%% }; + page.on('pageerror', (err) => { page.evaluate(({ id, err }) => __throwError(id, err), { id: %%id%%, err: err.message }); }); - return page.evaluate(({ id, hasPlayFn }) => __test(id, hasPlayFn), { + if(global.__sbPreRender) { + await global.__sbPreRender(page, context); + } + + const result = await page.evaluate(({ id, hasPlayFn }) => __test(id, hasPlayFn), { id: %%id%%, hasPlayFn: %%hasPlayFn%%, }); + + if(global.__sbPostRender) { + await global.__sbPostRender(page, context); + } + + return result; } `, { @@ -52,6 +68,7 @@ const getDefaultTitle = (filename: string) => { export const transformPlaywright = (src: string, filename: string) => { const defaultTitle = getDefaultTitle(filename); const result = transformCsf(src, { + filePrefixer, // @ts-ignore testPrefixer, insertTestIfEmpty: true, diff --git a/src/typings.d.ts b/src/typings.d.ts new file mode 100644 index 00000000..2f4eb9cf --- /dev/null +++ b/src/typings.d.ts @@ -0,0 +1 @@ +declare module 'global'; diff --git a/stories/basic/__image_snapshots__/button-stories-js-basic-button-demo-play-test-1-snap.png b/stories/basic/__image_snapshots__/button-stories-js-basic-button-demo-play-test-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..a8d5b8b7c5fee51a4018c11996ff29847d8f2c32 GIT binary patch literal 6429 zcmeHK{a2D#9DmeWE;Cx4a9gIXVs6t+Bb7v3Y};+)Q%E&ntR&T&&n|Y46pb%dta1;PU`EKv!Mk`!UD>3SIB93Xy$Fb|Aug4TKm3eF7~3q9pvkQre%INa~>)HkZh^ z=gtdRM_00J@--2^UA0X;GHX@s8R3nx7|s52Pb7)p{>4l+h2m~y()5G7a4MEnSF5upCLk`@4 zh~wrNYlQpWLR=Fz1$rRbl6#d{2on%XNF>=_j-DFaOn>Mb4L2X`)}F_Z2t}@+sqxvZM)OzU(xiD4Y;p{vEEIPUtzq-X=qH!AptCr9q$ z@#cle7TKLI8mUxmntjwICAl5uPW3q- zm%->yVir_y$s~m&HxYVskf_kDTewUQ>%=X-RFNZ!!^F)F4O^q}^pRAWBz{ZJHe$Y> zpydG-%g}8UayYh`!7aL*_1Sgbhjkro?s#$ec}Jc`uM)Xy&jv83ds9WlPQlzrTD)Z| z5~g55G0{CtorN0YRTt`agou0LQNSxMQz#27)qHx$1jtaHwOF*Usa{JWK+G- zDyCWgyp`_AdSkdGOz{loJZCxrLUy=xm zETI8g&0MO6VL)GEBH1~MV03d|J=Lt0w9;g}!r5U8dzNi)%TbX4?6sTI+Td3;nWV<# zyLDhemfFdD{j&%_q1v;CPTK7ZFC=CHaS-d)2}k+n5|uC#k7wJQ{p5*-7U9A%l3m}5 z{5>?SO&{!*f^;JQ7|I6VO+GH=aM%Kk43BTM!XlTRhQtz2Wc}I>x$jnmq(~oEg}7A~ zE^GdIe7G;7e8Bx-vltnOZ|C)SszE)+d{%y7wMxb?JjN%OHX*9q8Gj2_y^h^eBJtEP20(w~j zoe%{91p$3Kpl_rgPzLBj5d{H#9smxYApCzpnCD;lfXE|w9Zy4=!Jdy2b~o=jbnY+M C$)4E& literal 0 HcmV?d00001 diff --git a/stories/basic/__image_snapshots__/button-stories-js-basic-button-find-by-play-test-1-snap.png b/stories/basic/__image_snapshots__/button-stories-js-basic-button-find-by-play-test-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..ca404b3bd0207a4c096f1d38232a507cd3c77b83 GIT binary patch literal 6928 zcmeHLYfuwe7H%9JKvc9?g$e^qm8-aA@o*u7iV$@WWI@8Kc_a`RDN)HnaAJ7HfD5ZK zj**(3RYruckP)N)q`+gH06}EXJY9jyuo5PQX!~(zu_;%e(yH8=$M^h!h#)cdlb`)SsKhpsK z>Uns`k@$jYqbjxhhTL5;BSs(ZNsp?}jC|sc3qPX%F{IFG;6!wEsj1XC^mi`XZ@6qL zw?F0Md?`IZ6>_vZx?tb&T^ld$Id%~N%rWH15t9_ z?J=#%JU56nwD8qtJbA2OoQ~t?q=I1f@Pnou-YH48j_#d*ANd4!y!ayL)h8O=U?Wl0 zL7^;8zkV%>pEsEl%CwSIzBWhQ*`7D0hCOY!e0G;&P%P0g$m>Fdd$o4c8cjMfb*Sxh zpR22j%UuS8aWGfYRhU5!WfoDX#N6EJQUl{q;r%@0Fr|B@uCC63K<@crU&*XD5=8U- zk8f=5aX1_X%`~Kc_wH_TTPB#8n3(!i973--)Y6$pT0NTsU$!Ugsul*>U7gjvVRkX)C?VS_%P6aM{fxo|;^2SKrAjXJvkG-7Mj)q!Mfk6F*+ zK#+c-wuH?Lt5Cdo`t9v;1j94_S(dd`io`8nhE}G;fgl{NMKC22ER~E)DmZY!%@Qw! zvt6gq^ZF2RpCJ^M( zmQC7G%gXXIS5h;Z%^vQc5NEk3pI$9mnUNS2cv1_(;B#+6K(OWjS&Nli@rTs~jf&kVb5Gd-spL{s##sxPu}Eh+8yP49=|5dQRGES-hIEAB;i^WMLT@hD#W z$_-Q8sbHt#9Wg7p^Yioa_d{(gNMDn$ZYr~NR6M`2*8mfsxBbc%H;BjMVT86wcFg{J z9yacNnUNsql_py0Y~2}lU3Qx!O7`iTKH6Io$cLnEI^*Od+rSpE86|5=MU(9lP+MCY z1R=z$sj1I`*N-~jnJ`kKEJ9f%5~npoLdc!`Zf6)I6bf-T>C~;$eTn9k8 zmV74GX7HuX0|NtJcP}PVCP%)BYlvJL3$RBVm_6me>k;t>TnNr?07MkMXxvMHr3_K}(hUxwMSGEn)0N)g9~un6 zj{LW7fAn_rKXfvy>uk< uV5|aT6&S0)e1sErtC(8F^#3EKCZA&e9ebj3_Z&dZ@4}Bog|LsNm;MXv30tKA literal 0 HcmV?d00001 diff --git a/stories/basic/__image_snapshots__/button-stories-js-basic-button-primary-smoke-test-1-snap.png b/stories/basic/__image_snapshots__/button-stories-js-basic-button-primary-smoke-test-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..7596eac7786a9cf3aa167dd4eb5e5a9420c96497 GIT binary patch literal 7017 zcmeHL`&&}k8s3_zbuwq3=0s&;=kcjIGnM5rwba0xN_$FcQlug;)007K)G+p~W-5o|sRwg)%%jpAA+X3FAmE!>5&+rs1qT9#1jidUj^Vy zl5%Tm>G})nuLfFE%Vy}$yzAr--R1{HpP7sN>d;u)w$L;ENxtYkwFldN`d%BbM`S~OnL3_CF;Y|y zjr%K4O+RhJKWXecj?t_$RC=xD@WQ%oavQTUCa1Pb7s2oPsUck<@RghuNCn0|zgx!s z))#Ff&zsXhXx`-zK7oBmdlUAh$*m#+P#N=aeyYdvs>S8+KL1wz5CnaAX%K|<{2HE8 zF8$ec^n5D8_RAvyDm47uV=AQ+&xU$KH}SJpxxt^ivCw}3&FU>A+G+?B#h~GQ(2@39 z=*7v5j9;#M!t`{f8Ib@<$~V&08M^Z&T&R)n!P;sHlf|5~iLB4|ms3Ed>lusotI<z=(A{wWd;SHqC)dZ_un41UXo%@V|7azUbCgYK6RI6F}V(8IUg6$P) zr105sLCY%%eak;)`!q{Siddjyi@08EtIsmw7zehEb-KRcRG9)Rf)ve-;YczM`t`4v zF4ECBR@=K*`z&9RykfsC!-okE&OY!otcD?b20E~S{`D!N`erFX7T%SYdsXEj++@Tz z5}RNznpZ{}Ta zN#W~uu*!zV+28cCW3$-gQL_i%9xY?MGX8kl+rdVmwJE7p1jU_14)!K*E~r4;g-4a0 zjSyCjB~W!gAj6*8vM0~TY7t=e97}*ICUvQ8eHumBmM>tBuXI^Fx;54-z2ojNvP$)Y z0OB#~87t#`Q3=NLHA=91G9f-DfWu&D=j`WNMXVv7_Q#jJb~dFT#(X>RG{&PcVWPSo zQB(A07@Wi=*e3ZUjAdt}%U238K2qMy4Q`2O%yg6+fzt0Bz|iR!bj1GPRuJl}uAY(D zGjwIhF1x>n)#op;FJNK5`{>{6WcPjukF{C&nUtA@?Nn+D^1I6^Rx_CYV5_)`I$VZfem#cYB~~dn6A7BO{zRa(+Tf08UaC1;xpeT zd!*Vyy0@P$b;S)I0p_wYqTxX{Qr?riOl~AC&g_pTYl-;EY_ty1ek?ImMWPnxh8vXo z^6aV>(@Q=R^~4v0sX}@aeG=x%5wNPz0#93B~vv>C?1^_gIH=ZXD7)Khs> z*AO#LKiNvKjc*7h-ien9shRsFr5FSc63kMvNjOdAsf(=NXjrOT*!}FYwG*l)ad-ej zpD?R5<;aX`D9JTDeEDBA7&(Pkx#Z;WxI(2k z$7N$5bv8Cm!~NvF2y3MsLO{AVlxPv5*e$mb#k_lH7*ZH&01je|9@S?#mKGzzF+%%N zyBZKrA~*qul(2I2a5$8r?>;bLFI+%-;2vY^xs+6T_`)2NYhDZ^9&5P~iMN{}5!M_$ z@}!x-zR5{$?r(+HUnT2MyB33WcLhA_E?l_D7<^2yR*oSb&5T`d8I-sYLma5?dGFvZj+rjy;vNrPR;dOr`ph7=NU9%kM6ZUb4~Ks?2je#$ z_AjvBWAw36lb6`4pdg2EixbTdC{0ohu6XP1m_ZBF8kf`Xxe}%T)zZoxo>$j#|2gR` z1a?u#aoCy-v+tKd`Fqno&0-OB-=WiVwRp)XeoyK^yv!qjkfA7lb!n)an`j~t@>pPc={4aQhE`Ctx*rku_63|!dg6B@4F9#m_F3c za%psuD_l!}b&G#TmHa;ntP}cYA7PvfI~o4t4#duAaz>Lgntso(q%(7znd8hHXXgBA zcU4Y-aSDu6V4MQu6qrBY;@>HzPBHzj#Pq4%6}@-Sn#KR-!`ElP?wzqac-vFH`43Wi BtHb~R literal 0 HcmV?d00001 diff --git a/stories/basic/__image_snapshots__/button-stories-js-basic-button-wait-for-element-to-be-removed-play-test-1-snap.png b/stories/basic/__image_snapshots__/button-stories-js-basic-button-wait-for-element-to-be-removed-play-test-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..ca404b3bd0207a4c096f1d38232a507cd3c77b83 GIT binary patch literal 6928 zcmeHLYfuwe7H%9JKvc9?g$e^qm8-aA@o*u7iV$@WWI@8Kc_a`RDN)HnaAJ7HfD5ZK zj**(3RYruckP)N)q`+gH06}EXJY9jyuo5PQX!~(zu_;%e(yH8=$M^h!h#)cdlb`)SsKhpsK z>Uns`k@$jYqbjxhhTL5;BSs(ZNsp?}jC|sc3qPX%F{IFG;6!wEsj1XC^mi`XZ@6qL zw?F0Md?`IZ6>_vZx?tb&T^ld$Id%~N%rWH15t9_ z?J=#%JU56nwD8qtJbA2OoQ~t?q=I1f@Pnou-YH48j_#d*ANd4!y!ayL)h8O=U?Wl0 zL7^;8zkV%>pEsEl%CwSIzBWhQ*`7D0hCOY!e0G;&P%P0g$m>Fdd$o4c8cjMfb*Sxh zpR22j%UuS8aWGfYRhU5!WfoDX#N6EJQUl{q;r%@0Fr|B@uCC63K<@crU&*XD5=8U- zk8f=5aX1_X%`~Kc_wH_TTPB#8n3(!i973--)Y6$pT0NTsU$!Ugsul*>U7gjvVRkX)C?VS_%P6aM{fxo|;^2SKrAjXJvkG-7Mj)q!Mfk6F*+ zK#+c-wuH?Lt5Cdo`t9v;1j94_S(dd`io`8nhE}G;fgl{NMKC22ER~E)DmZY!%@Qw! zvt6gq^ZF2RpCJ^M( zmQC7G%gXXIS5h;Z%^vQc5NEk3pI$9mnUNS2cv1_(;B#+6K(OWjS&Nli@rTs~jf&kVb5Gd-spL{s##sxPu}Eh+8yP49=|5dQRGES-hIEAB;i^WMLT@hD#W z$_-Q8sbHt#9Wg7p^Yioa_d{(gNMDn$ZYr~NR6M`2*8mfsxBbc%H;BjMVT86wcFg{J z9yacNnUNsql_py0Y~2}lU3Qx!O7`iTKH6Io$cLnEI^*Od+rSpE86|5=MU(9lP+MCY z1R=z$sj1I`*N-~jnJ`kKEJ9f%5~npoLdc!`Zf6)I6bf-T>C~;$eTn9k8 zmV74GX7HuX0|NtJcP}PVCP%)BYlvJL3$RBVm_6me>k;t>TnNr?07MkMXxvMHr3_K}(hUxwMSGEn)0N)g9~un6 zj{LW7fAn_rKXfvy>uk< uV5|aT6&S0)e1sErtC(8F^#3EKCZA&e9ebj3_Z&dZ@4}Bog|LsNm;MXv30tKA literal 0 HcmV?d00001 diff --git a/stories/basic/__image_snapshots__/button-stories-js-basic-button-wait-for-play-test-1-snap.png b/stories/basic/__image_snapshots__/button-stories-js-basic-button-wait-for-play-test-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..a8d5b8b7c5fee51a4018c11996ff29847d8f2c32 GIT binary patch literal 6429 zcmeHK{a2D#9DmeWE;Cx4a9gIXVs6t+Bb7v3Y};+)Q%E&ntR&T&&n|Y46pb%dta1;PU`EKv!Mk`!UD>3SIB93Xy$Fb|Aug4TKm3eF7~3q9pvkQre%INa~>)HkZh^ z=gtdRM_00J@--2^UA0X;GHX@s8R3nx7|s52Pb7)p{>4l+h2m~y()5G7a4MEnSF5upCLk`@4 zh~wrNYlQpWLR=Fz1$rRbl6#d{2on%XNF>=_j-DFaOn>Mb4L2X`)}F_Z2t}@+sqxvZM)OzU(xiD4Y;p{vEEIPUtzq-X=qH!AptCr9q$ z@#cle7TKLI8mUxmntjwICAl5uPW3q- zm%->yVir_y$s~m&HxYVskf_kDTewUQ>%=X-RFNZ!!^F)F4O^q}^pRAWBz{ZJHe$Y> zpydG-%g}8UayYh`!7aL*_1Sgbhjkro?s#$ec}Jc`uM)Xy&jv83ds9WlPQlzrTD)Z| z5~g55G0{CtorN0YRTt`agou0LQNSxMQz#27)qHx$1jtaHwOF*Usa{JWK+G- zDyCWgyp`_AdSkdGOz{loJZCxrLUy=xm zETI8g&0MO6VL)GEBH1~MV03d|J=Lt0w9;g}!r5U8dzNi)%TbX4?6sTI+Td3;nWV<# zyLDhemfFdD{j&%_q1v;CPTK7ZFC=CHaS-d)2}k+n5|uC#k7wJQ{p5*-7U9A%l3m}5 z{5>?SO&{!*f^;JQ7|I6VO+GH=aM%Kk43BTM!XlTRhQtz2Wc}I>x$jnmq(~oEg}7A~ zE^GdIe7G;7e8Bx-vltnOZ|C)SszE)+d{%y7wMxb?JjN%OHX*9q8Gj2_y^h^eBJtEP20(w~j zoe%{91p$3Kpl_rgPzLBj5d{H#9smxYApCzpnCD;lfXE|w9Zy4=!Jdy2b~o=jbnY+M C$)4E& literal 0 HcmV?d00001 diff --git a/stories/basic/__image_snapshots__/button-stories-js-basic-button-with-loaders-play-test-1-snap.png b/stories/basic/__image_snapshots__/button-stories-js-basic-button-with-loaders-play-test-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..03f86b01fede20a4f3f32f97334969985ba29ee4 GIT binary patch literal 9095 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 CMg`0O literal 0 HcmV?d00001 diff --git a/stories/basic/__image_snapshots__/header-stories-js-example-header-logged-in-smoke-test-1-snap.png b/stories/basic/__image_snapshots__/header-stories-js-example-header-logged-in-smoke-test-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..a6852616604dd4f9ab499b21f55d005498bb7105 GIT binary patch literal 9503 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 z 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 literal 0 HcmV?d00001 diff --git a/stories/basic/__image_snapshots__/page-stories-js-example-page-logged-out-smoke-test-1-snap.png b/stories/basic/__image_snapshots__/page-stories-js-example-page-logged-out-smoke-test-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..6659063de0e5ba92d75f68a3fbeb7b4bf78c428c GIT binary patch literal 78110 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 literal 0 HcmV?d00001 diff --git a/test-runner-jest.config.js b/test-runner-jest.config.js index 01cf581d..e6c0eec8 100644 --- a/test-runner-jest.config.js +++ b/test-runner-jest.config.js @@ -17,4 +17,5 @@ module.exports = { globalSetup: './playwright/global-setup.js', globalTeardown: './playwright/global-teardown.js', testEnvironment: './playwright/custom-environment.js', + setupFilesAfterEnv: ['/jest-setup.js'], }; diff --git a/yarn.lock b/yarn.lock index 3dd214f7..29c0c19c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3858,6 +3858,11 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -4800,6 +4805,17 @@ ccount@^1.0.0: resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + chalk@^2.0.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -6053,7 +6069,7 @@ escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -6811,6 +6827,11 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== +get-stdin@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" + integrity sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g= + get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -6914,7 +6935,7 @@ global-prefix@^0.1.4: global@^4.4.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + resolved "https://registry.npmjs.org/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== dependencies: min-document "^2.19.0" @@ -6982,6 +7003,11 @@ globby@^9.2.0: pify "^4.0.1" slash "^2.0.0" +glur@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/glur/-/glur-1.1.2.tgz#f20ea36db103bfc292343921f1f91e83c3467689" + integrity sha1-8g6jbbEDv8KSNDkh8fkeg8NGdok= + good-listener@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" @@ -7006,6 +7032,13 @@ handlebars@^4.7.7: optionalDependencies: uglify-js "^3.1.4" +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + has-bigints@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" @@ -8172,6 +8205,21 @@ jest-haste-map@^27.0.6: optionalDependencies: fsevents "^2.3.2" +jest-image-snapshot@^4.5.1: + version "4.5.1" + resolved "https://registry.npmjs.org/jest-image-snapshot/-/jest-image-snapshot-4.5.1.tgz#79fe0419c7729eb1be6c873365307a7b60f5cda0" + integrity sha512-0YkgupgkkCx0wIZkxvqs/oNiUT0X0d2WTpUhaAp+Dy6CpqBUZMRTIZo4KR1f+dqmx6WXrLCvecjnHLIsLkI+gQ== + dependencies: + chalk "^1.1.3" + get-stdin "^5.0.1" + glur "^1.1.2" + lodash "^4.17.4" + mkdirp "^0.5.1" + pixelmatch "^5.1.0" + pngjs "^3.4.0" + rimraf "^2.6.2" + ssim.js "^3.1.1" + jest-jasmine2@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz#fd509a9ed3d92bd6edb68a779f4738b100655b37" @@ -8795,7 +8843,7 @@ lodash.uniq@4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@4.x, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: +lodash@4.x, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -9953,6 +10001,13 @@ pirates@^4.0.0, pirates@^4.0.1: dependencies: node-modules-regexp "^1.0.0" +pixelmatch@^5.1.0: + version "5.2.1" + resolved "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.2.1.tgz#9e4e4f4aa59648208a31310306a5bed5522b0d65" + integrity sha512-WjcAdYSnKrrdDdqTcVEY7aB7UhhwjYQKYhHiBXdJef0MOaQeYpUdQ+iVyBLa5YBKS8MPVPPMX7rpOByISLpeEQ== + dependencies: + pngjs "^4.0.1" + pkg-conf@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" @@ -10033,6 +10088,16 @@ playwright@^1.14.0: dependencies: playwright-core "=1.17.1" +pngjs@^3.4.0: + version "3.4.0" + resolved "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + +pngjs@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pngjs/-/pngjs-4.0.1.tgz#f803869bb2fc1bfe1bf99aa4ec21c108117cfdbe" + integrity sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg== + pngjs@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" @@ -10944,7 +11009,7 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.3: +rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -11456,6 +11521,11 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +ssim.js@^3.1.1: + version "3.5.0" + resolved "https://registry.npmjs.org/ssim.js/-/ssim.js-3.5.0.tgz#d7276b9ee99b57a5ff0db34035f02f35197e62df" + integrity sha512-Aj6Jl2z6oDmgYFFbQqK7fght19bXdOxY7Tj03nF+03M9gCBAjeIiO8/PlEGMfKDwYpw4q6iBqVq2YuREorGg/g== + ssri@^6.0.1: version "6.0.2" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" @@ -11714,6 +11784,11 @@ style-to-object@0.3.0, style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" From 7397f1201a9f49e9917f93ed1c1a38dd21acae2c Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Thu, 3 Feb 2022 16:27:51 +0800 Subject: [PATCH 2/8] Make stories.json mode work for image snapshotting --- README.md | 12 +++++++++--- .../basic-button--demo-snap.png | Bin .../basic-button--find-by-snap.png | Bin .../basic-button--primary-snap.png | Bin ...-button--wait-for-element-to-be-removed-snap.png | Bin .../basic-button--wait-for-snap.png | Bin .../basic-button--with-loaders-snap.png | Bin .../example-header--logged-in-snap.png | Bin .../example-header--logged-out-snap.png | Bin .../example-page--logged-in-snap.png | Bin .../example-page--logged-out-snap.png | Bin jest-setup.js | 12 +++++++++--- yarn.lock | 6 +++--- 13 files changed, 21 insertions(+), 9 deletions(-) rename stories/basic/__image_snapshots__/button-stories-js-basic-button-demo-play-test-1-snap.png => __snapshots__/basic-button--demo-snap.png (100%) rename stories/basic/__image_snapshots__/button-stories-js-basic-button-find-by-play-test-1-snap.png => __snapshots__/basic-button--find-by-snap.png (100%) rename stories/basic/__image_snapshots__/button-stories-js-basic-button-primary-smoke-test-1-snap.png => __snapshots__/basic-button--primary-snap.png (100%) rename stories/basic/__image_snapshots__/button-stories-js-basic-button-wait-for-element-to-be-removed-play-test-1-snap.png => __snapshots__/basic-button--wait-for-element-to-be-removed-snap.png (100%) rename stories/basic/__image_snapshots__/button-stories-js-basic-button-wait-for-play-test-1-snap.png => __snapshots__/basic-button--wait-for-snap.png (100%) rename stories/basic/__image_snapshots__/button-stories-js-basic-button-with-loaders-play-test-1-snap.png => __snapshots__/basic-button--with-loaders-snap.png (100%) rename stories/basic/__image_snapshots__/header-stories-js-example-header-logged-in-smoke-test-1-snap.png => __snapshots__/example-header--logged-in-snap.png (100%) rename stories/basic/__image_snapshots__/header-stories-js-example-header-logged-out-smoke-test-1-snap.png => __snapshots__/example-header--logged-out-snap.png (100%) rename stories/basic/__image_snapshots__/page-stories-js-example-page-logged-in-smoke-test-1-snap.png => __snapshots__/example-page--logged-in-snap.png (100%) rename stories/basic/__image_snapshots__/page-stories-js-example-page-logged-out-smoke-test-1-snap.png => __snapshots__/example-page--logged-out-snap.png (100%) diff --git a/README.md b/README.md index e6396bfe..11b60503 100644 --- a/README.md +++ b/README.md @@ -262,12 +262,18 @@ Thus, to make the test runner perform image snapshotting, you might set up the f const { toMatchImageSnapshot } = require('jest-image-snapshot'); const { setPostRender } = require('@storybook/test-runner'); +expect.extend({ toMatchImageSnapshot }); + +// use custom directory/id to align CSF and stories.json mode outputs +const customSnapshotsDir = `${process.cwd()}/__snapshots__`; + setPostRender(async (page, context) => { const image = await page.screenshot(); - expect(image).toMatchImageSnapshot(); + expect(image).toMatchImageSnapshot({ + customSnapshotsDir, + customSnapshotIdentifier: context.id, + }); }); - -expect.extend({ toMatchImageSnapshot }); ``` > **NOTE:** These test hooks are experimental and may be subject to breaking changes. We encourage you to test as much as possible within the story's play function when that's possible. diff --git a/stories/basic/__image_snapshots__/button-stories-js-basic-button-demo-play-test-1-snap.png b/__snapshots__/basic-button--demo-snap.png similarity index 100% rename from stories/basic/__image_snapshots__/button-stories-js-basic-button-demo-play-test-1-snap.png rename to __snapshots__/basic-button--demo-snap.png diff --git a/stories/basic/__image_snapshots__/button-stories-js-basic-button-find-by-play-test-1-snap.png b/__snapshots__/basic-button--find-by-snap.png similarity index 100% rename from stories/basic/__image_snapshots__/button-stories-js-basic-button-find-by-play-test-1-snap.png rename to __snapshots__/basic-button--find-by-snap.png diff --git a/stories/basic/__image_snapshots__/button-stories-js-basic-button-primary-smoke-test-1-snap.png b/__snapshots__/basic-button--primary-snap.png similarity index 100% rename from stories/basic/__image_snapshots__/button-stories-js-basic-button-primary-smoke-test-1-snap.png rename to __snapshots__/basic-button--primary-snap.png diff --git a/stories/basic/__image_snapshots__/button-stories-js-basic-button-wait-for-element-to-be-removed-play-test-1-snap.png b/__snapshots__/basic-button--wait-for-element-to-be-removed-snap.png similarity index 100% rename from stories/basic/__image_snapshots__/button-stories-js-basic-button-wait-for-element-to-be-removed-play-test-1-snap.png rename to __snapshots__/basic-button--wait-for-element-to-be-removed-snap.png diff --git a/stories/basic/__image_snapshots__/button-stories-js-basic-button-wait-for-play-test-1-snap.png b/__snapshots__/basic-button--wait-for-snap.png similarity index 100% rename from stories/basic/__image_snapshots__/button-stories-js-basic-button-wait-for-play-test-1-snap.png rename to __snapshots__/basic-button--wait-for-snap.png diff --git a/stories/basic/__image_snapshots__/button-stories-js-basic-button-with-loaders-play-test-1-snap.png b/__snapshots__/basic-button--with-loaders-snap.png similarity index 100% rename from stories/basic/__image_snapshots__/button-stories-js-basic-button-with-loaders-play-test-1-snap.png rename to __snapshots__/basic-button--with-loaders-snap.png diff --git a/stories/basic/__image_snapshots__/header-stories-js-example-header-logged-in-smoke-test-1-snap.png b/__snapshots__/example-header--logged-in-snap.png similarity index 100% rename from stories/basic/__image_snapshots__/header-stories-js-example-header-logged-in-smoke-test-1-snap.png rename to __snapshots__/example-header--logged-in-snap.png diff --git a/stories/basic/__image_snapshots__/header-stories-js-example-header-logged-out-smoke-test-1-snap.png b/__snapshots__/example-header--logged-out-snap.png similarity index 100% rename from stories/basic/__image_snapshots__/header-stories-js-example-header-logged-out-smoke-test-1-snap.png rename to __snapshots__/example-header--logged-out-snap.png diff --git a/stories/basic/__image_snapshots__/page-stories-js-example-page-logged-in-smoke-test-1-snap.png b/__snapshots__/example-page--logged-in-snap.png similarity index 100% rename from stories/basic/__image_snapshots__/page-stories-js-example-page-logged-in-smoke-test-1-snap.png rename to __snapshots__/example-page--logged-in-snap.png diff --git a/stories/basic/__image_snapshots__/page-stories-js-example-page-logged-out-smoke-test-1-snap.png b/__snapshots__/example-page--logged-out-snap.png similarity index 100% rename from stories/basic/__image_snapshots__/page-stories-js-example-page-logged-out-smoke-test-1-snap.png rename to __snapshots__/example-page--logged-out-snap.png diff --git a/jest-setup.js b/jest-setup.js index 3c89e3d5..feff746e 100644 --- a/jest-setup.js +++ b/jest-setup.js @@ -1,9 +1,15 @@ const { toMatchImageSnapshot } = require('jest-image-snapshot'); const { setPostRender } = require('./dist/cjs'); +expect.extend({ toMatchImageSnapshot }); + +// use custom directory/id to align CSF and stories.json mode outputs +const customSnapshotsDir = `${process.cwd()}/__snapshots__`; + setPostRender(async (page, context) => { const image = await page.screenshot(); - expect(image).toMatchImageSnapshot(); + expect(image).toMatchImageSnapshot({ + customSnapshotsDir, + customSnapshotIdentifier: context.id, + }); }); - -expect.extend({ toMatchImageSnapshot }); diff --git a/yarn.lock b/yarn.lock index 29c0c19c..19e4cae7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4784,9 +4784,9 @@ camelcase@^6.2.0: integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219: - version "1.0.30001234" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001234.tgz#8fc2e709e3b0679d7af7f073a1c661155c39b975" - integrity sha512-a3gjUVKkmwLdNysa1xkUAwN2VfJUJyVW47rsi3aCbkRCtbHAfo+rOsCqVw29G6coQ8gzAPb5XBXwiGHwme3isA== + version "1.0.30001306" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001306.tgz" + integrity sha512-Wd1OuggRzg1rbnM5hv1wXs2VkxJH/AA+LuudlIqvZiCvivF+wJJe2mgBZC8gPMgI7D76PP5CTx8Luvaqc1V6OQ== capture-exit@^2.0.0: version "2.0.0" From 47da6958e51d500f28962797f4d134ff43ea5659 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Thu, 3 Feb 2022 16:31:48 +0800 Subject: [PATCH 3/8] Update snapshots --- src/playwright/transformPlaywright.test.ts | 60 +++++++++++++++- .../transformPlaywrightJson.test.ts | 72 +++++++++++++++++-- 2 files changed, 125 insertions(+), 7 deletions(-) diff --git a/src/playwright/transformPlaywright.test.ts b/src/playwright/transformPlaywright.test.ts index 0d2b671a..b45658cb 100644 --- a/src/playwright/transformPlaywright.test.ts +++ b/src/playwright/transformPlaywright.test.ts @@ -46,10 +46,17 @@ describe('Playwright', () => { filename ) ).toMatchInlineSnapshot(` + import global from 'global'; + if (!require.main) { describe("foo/bar", () => { describe("A", () => { it("play-test", async () => { + const context = { + id: "foo-bar--a", + title: "foo/bar", + name: "A" + }; page.on('pageerror', err => { page.evaluate(({ id, @@ -59,13 +66,24 @@ describe('Playwright', () => { err: err.message }); }); - return page.evaluate(({ + + if (global.__sbPreRender) { + await global.__sbPreRender(page, context); + } + + const result = await page.evaluate(({ id, hasPlayFn }) => __test(id, hasPlayFn), { id: "foo-bar--a", hasPlayFn: true }); + + if (global.__sbPostRender) { + await global.__sbPostRender(page, context); + } + + return result; }); }); }); @@ -82,10 +100,17 @@ describe('Playwright', () => { filename ) ).toMatchInlineSnapshot(` + import global from 'global'; + if (!require.main) { describe("foo/bar", () => { describe("A", () => { it("smoke-test", async () => { + const context = { + id: "foo-bar--a", + title: "foo/bar", + name: "A" + }; page.on('pageerror', err => { page.evaluate(({ id, @@ -95,13 +120,24 @@ describe('Playwright', () => { err: err.message }); }); - return page.evaluate(({ + + if (global.__sbPreRender) { + await global.__sbPreRender(page, context); + } + + const result = await page.evaluate(({ id, hasPlayFn }) => __test(id, hasPlayFn), { id: "foo-bar--a", hasPlayFn: false }); + + if (global.__sbPostRender) { + await global.__sbPostRender(page, context); + } + + return result; }); }); }); @@ -119,10 +155,17 @@ describe('Playwright', () => { filename ) ).toMatchInlineSnapshot(` + import global from 'global'; + if (!require.main) { describe("Example/Header", () => { describe("A", () => { it("smoke-test", async () => { + const context = { + id: "example-header--a", + title: "Example/Header", + name: "A" + }; page.on('pageerror', err => { page.evaluate(({ id, @@ -132,13 +175,24 @@ describe('Playwright', () => { err: err.message }); }); - return page.evaluate(({ + + if (global.__sbPreRender) { + await global.__sbPreRender(page, context); + } + + const result = await page.evaluate(({ id, hasPlayFn }) => __test(id, hasPlayFn), { id: "example-header--a", hasPlayFn: false }); + + if (global.__sbPostRender) { + await global.__sbPostRender(page, context); + } + + return result; }); }); }); diff --git a/src/playwright/transformPlaywrightJson.test.ts b/src/playwright/transformPlaywrightJson.test.ts index 093fdfbd..016204ac 100644 --- a/src/playwright/transformPlaywrightJson.test.ts +++ b/src/playwright/transformPlaywrightJson.test.ts @@ -52,6 +52,11 @@ Object { "example-header": "describe(\\"Example/Header\\", () => { describe(\\"Logged In\\", () => { it(\\"test\\", async () => { + const context = { + id: \\"example-header--logged-in\\", + title: \\"Example/Header\\", + name: \\"Logged In\\" + }; page.on('pageerror', err => { page.evaluate(({ id, @@ -61,17 +66,33 @@ Object { err: err.message }); }); - return page.evaluate(({ + + if (global.__sbPreRender) { + await global.__sbPreRender(page, context); + } + + const result = await page.evaluate(({ id, hasPlayFn }) => __test(id, hasPlayFn), { id: \\"example-header--logged-in\\", hasPlayFn: false }); + + if (global.__sbPostRender) { + await global.__sbPostRender(page, context); + } + + return result; }); }); describe(\\"Logged Out\\", () => { it(\\"test\\", async () => { + const context = { + id: \\"example-header--logged-out\\", + title: \\"Example/Header\\", + name: \\"Logged Out\\" + }; page.on('pageerror', err => { page.evaluate(({ id, @@ -81,19 +102,35 @@ Object { err: err.message }); }); - return page.evaluate(({ + + if (global.__sbPreRender) { + await global.__sbPreRender(page, context); + } + + const result = await page.evaluate(({ id, hasPlayFn }) => __test(id, hasPlayFn), { id: \\"example-header--logged-out\\", hasPlayFn: false }); + + if (global.__sbPostRender) { + await global.__sbPostRender(page, context); + } + + return result; }); }); });", "example-page": "describe(\\"Example/Page\\", () => { describe(\\"Logged In\\", () => { it(\\"test\\", async () => { + const context = { + id: \\"example-page--logged-in\\", + title: \\"Example/Page\\", + name: \\"Logged In\\" + }; page.on('pageerror', err => { page.evaluate(({ id, @@ -103,13 +140,24 @@ Object { err: err.message }); }); - return page.evaluate(({ + + if (global.__sbPreRender) { + await global.__sbPreRender(page, context); + } + + const result = await page.evaluate(({ id, hasPlayFn }) => __test(id, hasPlayFn), { id: \\"example-page--logged-in\\", hasPlayFn: false }); + + if (global.__sbPostRender) { + await global.__sbPostRender(page, context); + } + + return result; }); }); });", @@ -154,6 +202,11 @@ Object { "example-page": "describe(\\"Example/Page\\", () => { describe(\\"Logged In\\", () => { it(\\"test\\", async () => { + const context = { + id: \\"example-page--logged-in\\", + title: \\"Example/Page\\", + name: \\"Logged In\\" + }; page.on('pageerror', err => { page.evaluate(({ id, @@ -163,13 +216,24 @@ Object { err: err.message }); }); - return page.evaluate(({ + + if (global.__sbPreRender) { + await global.__sbPreRender(page, context); + } + + const result = await page.evaluate(({ id, hasPlayFn }) => __test(id, hasPlayFn), { id: \\"example-page--logged-in\\", hasPlayFn: false }); + + if (global.__sbPostRender) { + await global.__sbPostRender(page, context); + } + + return result; }); }); });", From e12588f74f2cf9ede884f44f27c6f47c9184e8fc Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Thu, 3 Feb 2022 09:38:16 +0100 Subject: [PATCH 4/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 11b60503..459b3945 100644 --- a/README.md +++ b/README.md @@ -246,7 +246,7 @@ it('component--widget', async () => { // pre-render hook if (preRender) await preRender(page, context); - // render the story and run its paly function (if applicable) + // render the story and run its play function (if applicable) await page.execute('render', context); // post-render hook From 4d634176994f41d64419baee2d27c5ecc059f7e8 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Thu, 3 Feb 2022 18:19:52 +0800 Subject: [PATCH 5/8] Update threshold for CI --- jest-setup.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jest-setup.js b/jest-setup.js index feff746e..99feca39 100644 --- a/jest-setup.js +++ b/jest-setup.js @@ -11,5 +11,7 @@ setPostRender(async (page, context) => { expect(image).toMatchImageSnapshot({ customSnapshotsDir, customSnapshotIdentifier: context.id, + failureThreshold: 0.03, + failureThresholdType: 'percent', }); }); From 8a86c583eb036e891ca2aa75598316b0ad96611b Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Thu, 3 Feb 2022 21:39:57 +0800 Subject: [PATCH 6/8] Update transformCsf.ts --- src/csf/transformCsf.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/csf/transformCsf.ts b/src/csf/transformCsf.ts index 4ea7557c..8a65d1a2 100644 --- a/src/csf/transformCsf.ts +++ b/src/csf/transformCsf.ts @@ -39,7 +39,6 @@ const prefixFunction = ( id: t.stringLiteral(toId(title, name)), }; - // instead, let's just make the prefixer return the function const result = makeArray(testPrefixer(context)); const stmt = result[1] as t.ExpressionStatement; return stmt.expression; From d3159f2eaad6d7b906b300cec70b15df14f18c15 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Fri, 4 Feb 2022 01:01:11 +0800 Subject: [PATCH 7/8] Clean up hooks documentation in README --- README.md | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 459b3945..a52e7ab4 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ Storybook test runner turns all of your stories into executable tests. - [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) - [Experimental test hook API](#experimental-test-hook-api) + - [Image snapshot recipe](#image-snapshot-recipe) - [Troubleshooting](#troubleshooting) - [The test runner seems flaky and keeps timing out](#the-test-runner-seems-flaky-and-keeps-timing-out) - [Adding the test runner to other CI environments](#adding-the-test-runner-to-other-ci-environments) @@ -235,12 +236,16 @@ The test runner renders a story and executes its [play function](https://storybo To enable use cases like visual or DOM snapshots, the test runner exports test hooks that can be overridden globally. These hooks give you access to the test lifecycle before and after the story is rendered. -Consider the following pseudocode: +The hooks, `preRender` and `postRender`, are functions that take a [Playwright Page](https://playwright.dev/docs/pages) and a context object with the current story `id`, `title`, and `name`. They are globally settable by `@storybook/test-runner`'s `setPreRender` and `setPostRender` APIs. + +To visualize the test lifecycle, consider a simplified version of the test code automatically generated for each story in your Storybook: ```js -it('component--widget', async () => { - const page = newPage(); - const context = { id: 'component--widget', title: 'Component', name: 'Widget' }; +it('button--basic', async () => { + // filled in with data for the current story + const context = { id: 'button--basic', title: 'Button', name: 'Basic' }; + + // playwright page https://playwright.dev/docs/pages await page.goto(STORYBOOK_URL); // pre-render hook @@ -254,9 +259,11 @@ it('component--widget', async () => { }); ``` -The hooks here, `preRender` and `postRender` are functions that take a [Playwright Page](https://playwright.dev/docs/pages) and a context object with the current story `id`, `title`, and `name`. They are globally settable by `@storybook/test-runner`'s `setPreRender` and `setPostRender` APIs. +> **NOTE:** These test hooks are experimental and may be subject to breaking changes. We encourage you to test as much as possible within the story's play function. -Thus, to make the test runner perform image snapshotting, you might set up the following in your `jest-setup.js`: +### Image snapshot recipe + +If you want to make the test runner take image snapshots, the following recipe uses test hooks in `jest-setup.js` to do it: ```js const { toMatchImageSnapshot } = require('jest-image-snapshot'); @@ -276,8 +283,6 @@ setPostRender(async (page, context) => { }); ``` -> **NOTE:** These test hooks are experimental and may be subject to breaking changes. We encourage you to test as much as possible within the story's play function when that's possible. - ## Troubleshooting #### The test runner seems flaky and keeps timing out From ad367be76e7ae2229a4cb007116d760e29989003 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Fri, 4 Feb 2022 01:22:32 +0800 Subject: [PATCH 8/8] Review comments --- README.md | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 70438fea..054a3c84 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ Storybook test runner turns all of your stories into executable tests. - [Table of Contents](#table-of-contents) - [Features](#features) - [Getting started](#getting-started) + - [CLI Options](#cli-options) - [Configuration](#configuration) - [Running against a deployed Storybook](#running-against-a-deployed-storybook) - [Stories.json mode](#storiesjson-mode) @@ -100,16 +101,16 @@ yarn test-storybook Usage: test-storybook [options] ``` -| Options | Description | -| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `--help` | Output usage information
`test-storybook --help` | -| `-s`, `--stories-json` | Run in stories json mode (requires a compatible Storybook)
`test-storybook --stories-json` | -| `-c`, `--config-dir [dir-name]` | Directory where to load Storybook configurations from
`test-storybook -c .storybook` | -| `--watch` | Run in watch mode
`test-storybook --watch` | -| `--maxWorkers [amount]` | Specifies the maximum number of workers the worker-pool will spawn for running tests
`test-storybook --maxWorkers=2` | -| `--no-cache` | Disable the cache
`test-storybook --no-cache` | -| `--clearCache` | Deletes the Jest cache directory and then exits without running tests
`test-storybook --clearCache` | -| `--verbose` | Display individual test results with the test suite hierarchy
`test-storybook --verbose` | +| Options | Description | +| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| `--help` | Output usage information
`test-storybook --help` | +| `-s`, `--stories-json` | Run in stories json mode (requires a compatible Storybook)
`test-storybook --stories-json` | +| `-c`, `--config-dir [dir-name]` | Directory where to load Storybook configurations from
`test-storybook -c .storybook` | +| `--watch` | Run in watch mode
`test-storybook --watch` | +| `--maxWorkers [amount]` | Specifies the maximum number of workers the worker-pool will spawn for running tests
`test-storybook --maxWorkers=2` | +| `--no-cache` | Disable the cache
`test-storybook --no-cache` | +| `--clearCache` | Deletes the Jest cache directory and then exits without running tests
`test-storybook --clearCache` | +| `--verbose` | Display individual test results with the test suite hierarchy
`test-storybook --verbose` | ## Configuration @@ -255,6 +256,8 @@ To enable use cases like visual or DOM snapshots, the test runner exports test h The hooks, `preRender` and `postRender`, are functions that take a [Playwright Page](https://playwright.dev/docs/pages) and a context object with the current story `id`, `title`, and `name`. They are globally settable by `@storybook/test-runner`'s `setPreRender` and `setPostRender` APIs. +> **NOTE:** These test hooks are experimental and may be subject to breaking changes. We encourage you to test as much as possible within the story's play function. + To visualize the test lifecycle, consider a simplified version of the test code automatically generated for each story in your Storybook: ```js @@ -276,8 +279,6 @@ it('button--basic', async () => { }); ``` -> **NOTE:** These test hooks are experimental and may be subject to breaking changes. We encourage you to test as much as possible within the story's play function. - ### Image snapshot recipe If you want to make the test runner take image snapshots, the following recipe uses test hooks in `jest-setup.js` to do it: