storybook-addon-vis 0.13.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/augment-ofADjQ4H.d.ts +12 -0
  2. package/dist/chunk-4BJKSKI2.js +46 -0
  3. package/dist/chunk-4BJKSKI2.js.map +1 -0
  4. package/dist/index.d.ts +20 -12
  5. package/dist/index.js +29 -5
  6. package/dist/index.js.map +1 -1
  7. package/dist/preset.cjs +1 -1
  8. package/dist/preset.cjs.map +1 -1
  9. package/dist/preview.js +1 -8
  10. package/dist/preview.js.map +1 -1
  11. package/dist/vitest-plugin.js +13 -54
  12. package/dist/vitest-plugin.js.map +1 -1
  13. package/dist/vitest-setup.d.ts +9 -24
  14. package/dist/vitest-setup.js +7 -47
  15. package/dist/vitest-setup.js.map +1 -1
  16. package/manager.js +1 -1
  17. package/package.json +39 -17
  18. package/preview.js +1 -1
  19. package/readme.md +43 -26
  20. package/src/client/@vitest/browser/context.ts +46 -0
  21. package/src/client/expect/augment.ts +10 -0
  22. package/src/client/expect/extend.ts +5 -0
  23. package/src/client/expect/to_match_image_snapshot.ts +45 -0
  24. package/src/client/has_image_snapshot.ts +22 -0
  25. package/src/client/storybook/param.ts +8 -0
  26. package/src/csf/vis_annotation.ts +16 -0
  27. package/src/index.ts +6 -7
  28. package/src/preset.ts +13 -1
  29. package/src/preview.ts +9 -2
  30. package/src/shared/contants.ts +1 -0
  31. package/src/testing.ts +1 -0
  32. package/src/vitest-plugin/storybook_vis.ts +13 -0
  33. package/src/vitest-plugin.ts +2 -31
  34. package/src/vitest-setup.ts +5 -7
  35. package/vitest-plugin.d.ts +1 -0
  36. package/dist/chunk-7MABS6N3.js +0 -16
  37. package/dist/chunk-7MABS6N3.js.map +0 -1
  38. package/dist/chunk-T3RUFMT2.js +0 -372
  39. package/dist/chunk-T3RUFMT2.js.map +0 -1
  40. package/dist/preview-CL-IBwxx.d.ts +0 -10
  41. package/dist/preview.d.ts +0 -6
  42. package/dist/types-BrUWBuNW.d.ts +0 -182
  43. package/src/@vitest/browser/constants.ts +0 -3
  44. package/src/@vitest/browser/context.spec.ts +0 -12
  45. package/src/@vitest/browser/context.stories.tsx +0 -14
  46. package/src/@vitest/browser/context.ts +0 -96
  47. package/src/@vitest/browser/image_snapshot.logic.ts +0 -16
  48. package/src/@vitest/browser/page.has_image_snapshot.ts +0 -17
  49. package/src/@vitest/browser/page.image_snapshot.spec.ts +0 -12
  50. package/src/@vitest/browser/page.image_snapshot.stories.tsx +0 -14
  51. package/src/@vitest/browser/page.image_snapshot.ts +0 -35
  52. package/src/@vitest/browser/types.ts +0 -33
  53. package/src/__screenshots__/expect.to_match_image_snapshot.spec.ts/should-fail-when-the-subject-is-the-result-of-page-screenshot---1.png +0 -0
  54. package/src/augment.ts +0 -29
  55. package/src/expect.to_match_image_snapshot.global.spec.ts +0 -5
  56. package/src/expect.to_match_image_snapshot.spec.ts +0 -105
  57. package/src/expect.to_match_image_snapshot.stories.tsx +0 -166
  58. package/src/expect.to_match_image_snapshot.ts +0 -185
  59. package/src/image_data.stories.tsx +0 -30
  60. package/src/image_data.ts +0 -36
  61. package/src/image_resizer.spec.ts +0 -28
  62. package/src/image_resizer.ts +0 -55
  63. package/src/param.stories.tsx +0 -43
  64. package/src/param.ts +0 -5
  65. package/src/per_meta.stories.tsx +0 -16
  66. package/src/per_story.stories.tsx +0 -18
  67. package/src/should_take_snapshot.ts +0 -12
  68. package/src/state.ts +0 -120
  69. package/src/storybook/preview.ts +0 -16
  70. package/src/testing/constants.tsx +0 -4
  71. package/src/types.ts +0 -43
  72. package/src/vis.spec.ts +0 -50
  73. package/src/vis.ts +0 -49
  74. package/src/vitest-plugin/commands/copy_file.ts +0 -19
  75. package/src/vitest-plugin/commands/exist_dir.ts +0 -17
  76. package/src/vitest-plugin/commands/exist_file.ts +0 -13
  77. package/src/vitest-plugin/commands/get_snapshot_platform.ts +0 -14
  78. package/src/vitest-plugin/commands/is_ci.ts +0 -7
  79. package/src/vitest-plugin/commands/rm_dir.ts +0 -15
  80. package/src/vitest-plugin.spec.node.ts +0 -26
  81. package/src/vitest-setup.spec.ts +0 -15
@@ -0,0 +1,12 @@
1
+ import { ToMatchImageSnapshotOptions } from 'vitest-plugin-vis/client';
2
+
3
+ interface ImageSnapshotMatcher {
4
+ toMatchImageSnapshot(options?: ToMatchImageSnapshotOptions | undefined): Promise<void>;
5
+ }
6
+
7
+ declare global {
8
+ namespace jest {
9
+ interface Matchers<R, T> extends ImageSnapshotMatcher {
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,46 @@
1
+ import { success, parseImageSnapshotSubject, toTaskId } from 'vitest-plugin-vis/client';
2
+ import { getCurrentTest } from 'vitest/suite';
3
+
4
+ // src/client/@vitest/browser/context.ts
5
+ var ctx;
6
+ if (globalThis.__vitest_browser__) {
7
+ import('@vitest/browser/context').then((m) => {
8
+ ctx = m;
9
+ });
10
+ }
11
+ var commands = new Proxy({}, {
12
+ get(_target, prop) {
13
+ return ctx?.commands?.[prop] ?? /* v8 ignore start : used in storybook, not in vitest */
14
+ commandsStub[prop] ?? (() => {
15
+ throw new Error(`Command '${String(prop)}' not found`);
16
+ })();
17
+ }
18
+ });
19
+ var commandsStub = {
20
+ matchImageSnapshot: async () => {
21
+ },
22
+ setupVisSuite: () => {
23
+ }
24
+ };
25
+ function toMatchImageSnapshot(subject, options) {
26
+ const test = getCurrentTest();
27
+ if (!test) {
28
+ return Promise.resolve(success);
29
+ }
30
+ const s = parseImageSnapshotSubject(subject);
31
+ const taskId = toTaskId(test);
32
+ return toMatchImageSnapshotAsync(taskId, s, options).then(() => success);
33
+ }
34
+ async function toMatchImageSnapshotAsync(taskId, subject, options) {
35
+ if (options?.customizeSnapshotId) {
36
+ const index = await commands.imageSnapshotNextIndex(taskId);
37
+ const { customizeSnapshotId, ...rest } = options;
38
+ const snapshotFileId = customizeSnapshotId(taskId, index);
39
+ return commands.matchImageSnapshot(taskId, subject, { ...rest, snapshotFileId });
40
+ }
41
+ return commands.matchImageSnapshot(taskId, subject, options);
42
+ }
43
+
44
+ export { commands, toMatchImageSnapshot };
45
+ //# sourceMappingURL=chunk-4BJKSKI2.js.map
46
+ //# sourceMappingURL=chunk-4BJKSKI2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/client/@vitest/browser/context.ts","../src/client/expect/to_match_image_snapshot.ts"],"names":[],"mappings":";;;;AAkBA,IAAI,GAAA;AAEJ,IAAK,WAAmB,kBAAoB,EAAA;AAC3C,EAAA,OAAO,yBAAyB,CAAA,CAAE,IAAK,CAAA,CAAC,CAAM,KAAA;AAC7C,IAAM,GAAA,GAAA,CAAA;AAAA,GACN,CAAA;AACF;AAEO,IAAM,QAAW,GAAA,IAAI,KAAuB,CAAA,EAAW,EAAA;AAAA,EAC7D,GAAA,CAAI,SAAS,IAAM,EAAA;AAClB,IACE,OAAA,GAAA,EAAK,WAAmB,IAAI,CAAA;AAAA,IAE7B,YAAA,CAAa,IAAI,CAAA,IAAA,CAChB,MAAM;AACN,MAAA,MAAM,IAAI,KAAM,CAAA,CAAA,SAAA,EAAY,MAAO,CAAA,IAAI,CAAC,CAAa,WAAA,CAAA,CAAA;AAAA,KACnD,GAAA;AAAA;AAIN,CAAC;AAGD,IAAM,YAAe,GAAA;AAAA,EACpB,oBAAoB,YAAY;AAAA,GAAC;AAAA,EACjC,eAAe,MAAM;AAAA;AACtB,CAAA;AC9BO,SAAS,oBAAA,CAKf,SACA,OACyB,EAAA;AACzB,EAAA,MAAM,OAAO,cAAe,EAAA;AAG5B,EAAA,IAAI,CAAC,IAAM,EAAA;AACV,IAAO,OAAA,OAAA,CAAQ,QAAQ,OAAO,CAAA;AAAA;AAI/B,EAAM,MAAA,CAAA,GAAI,0BAA0B,OAAO,CAAA;AAC3C,EAAM,MAAA,MAAA,GAAS,SAAS,IAAI,CAAA;AAC5B,EAAA,OAAO,0BAA0B,MAAQ,EAAA,CAAA,EAAG,OAAO,CAAE,CAAA,IAAA,CAAK,MAAM,OAAO,CAAA;AACxE;AAEA,eAAe,yBAAA,CAA0B,MAAgB,EAAA,OAAA,EAAiB,OAAuC,EAAA;AAChH,EAAA,IAAI,SAAS,mBAAqB,EAAA;AACjC,IAAA,MAAM,KAAQ,GAAA,MAAM,QAAS,CAAA,sBAAA,CAAuB,MAAM,CAAA;AAC1D,IAAA,MAAM,EAAE,mBAAA,EAAqB,GAAG,IAAA,EAAS,GAAA,OAAA;AACzC,IAAM,MAAA,cAAA,GAAiB,mBAAoB,CAAA,MAAA,EAAQ,KAAK,CAAA;AACxD,IAAO,OAAA,QAAA,CAAS,mBAAmB,MAAQ,EAAA,OAAA,EAAS,EAAE,GAAG,IAAA,EAAM,gBAAgB,CAAA;AAAA;AAGhF,EAAA,OAAO,QAAS,CAAA,kBAAA,CAAmB,MAAQ,EAAA,OAAA,EAAS,OAAO,CAAA;AAC5D","file":"chunk-4BJKSKI2.js","sourcesContent":["import type { BrowserCommands } from '@vitest/browser/context'\nimport type {\n\tHasImageSnapshotCommand,\n\tImageSnapshotNextIndexCommand,\n\tMatchImageSnapshotCommand,\n\tSetupVisSuiteCommand,\n} from 'vitest-plugin-vis/commands'\n\ndeclare module '@vitest/browser/context' {\n\tinterface BrowserCommands\n\t\textends MatchImageSnapshotCommand,\n\t\t\tSetupVisSuiteCommand,\n\t\t\tHasImageSnapshotCommand,\n\t\t\tImageSnapshotNextIndexCommand,\n\t\t\tMatchImageSnapshotCommand,\n\t\t\tSetupVisSuiteCommand {}\n}\n\nlet ctx: Awaited<typeof import('@vitest/browser/context')>\n\nif ((globalThis as any).__vitest_browser__) {\n\timport('@vitest/browser/context').then((m) => {\n\t\tctx = m\n\t})\n}\n\nexport const commands = new Proxy<BrowserCommands>({} as any, {\n\tget(_target, prop) {\n\t\treturn (\n\t\t\t(ctx?.commands as any)?.[prop] ??\n\t\t\t/* v8 ignore start : used in storybook, not in vitest */\n\t\t\tcommandsStub[prop] ??\n\t\t\t(() => {\n\t\t\t\tthrow new Error(`Command '${String(prop)}' not found`)\n\t\t\t})()\n\t\t\t/* v8 ignore end */\n\t\t)\n\t},\n})\n\n/* v8 ignore start : used in storybook, not in vitest */\nconst commandsStub = {\n\tmatchImageSnapshot: async () => {},\n\tsetupVisSuite: () => {},\n} as any\n/* v8 ignore end */\n","import type { AsyncExpectationResult } from '@vitest/expect'\nimport {\n\ttype ToMatchImageSnapshotOptions,\n\tparseImageSnapshotSubject,\n\tsuccess,\n\ttoTaskId,\n} from 'vitest-plugin-vis/client'\nimport { getCurrentTest } from 'vitest/suite'\nimport { commands } from '../@vitest/browser/context.ts'\n\nexport interface ImageSnapshotMatcher {\n\ttoMatchImageSnapshot(options?: ToMatchImageSnapshotOptions | undefined): Promise<void>\n}\n\nexport function toMatchImageSnapshot(\n\t/**\n\t * The element or locator to take the snapshot of,\n\t * or the base64 value of the image to compare against.\n\t */\n\tsubject: any,\n\toptions?: ToMatchImageSnapshotOptions | undefined,\n): AsyncExpectationResult {\n\tconst test = getCurrentTest()\n\n\t/* v8 ignore start: stub as success when not in a test (e.g. in a story) */\n\tif (!test) {\n\t\treturn Promise.resolve(success)\n\t}\n\t/* v8 ignore end */\n\n\tconst s = parseImageSnapshotSubject(subject)\n\tconst taskId = toTaskId(test)\n\treturn toMatchImageSnapshotAsync(taskId, s, options).then(() => success)\n}\n\nasync function toMatchImageSnapshotAsync(taskId: string, subject: string, options?: ToMatchImageSnapshotOptions) {\n\tif (options?.customizeSnapshotId) {\n\t\tconst index = await commands.imageSnapshotNextIndex(taskId)\n\t\tconst { customizeSnapshotId, ...rest } = options\n\t\tconst snapshotFileId = customizeSnapshotId(taskId, index)\n\t\treturn commands.matchImageSnapshot(taskId, subject, { ...rest, snapshotFileId })\n\t}\n\n\treturn commands.matchImageSnapshot(taskId, subject, options)\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -1,14 +1,22 @@
1
- import { M as MatchImageSnapshotOptions } from './types-BrUWBuNW.js';
2
- export { C as CustomizeSnapshotIdOptions, d as ImageSnapshot, I as ImageSnapshotMatcher, b as ImageSnapshotOptions, V as VisOptions, c as cdp, a as commands, p as page, s as server, t as toMatchImageSnapshot } from './types-BrUWBuNW.js';
3
- export { d as defineVisPreview, s as storybookPreviewVis } from './preview-CL-IBwxx.js';
4
- import '@vitest/browser/context';
5
- import 'vitest';
6
- import '@vitest/expect';
7
- import 'pixelmatch';
8
- import 'storybook/internal/types';
9
-
10
- declare function defineSnapshotParam(snapshot: MatchImageSnapshotOptions): {
11
- snapshot: MatchImageSnapshotOptions;
1
+ import './augment-ofADjQ4H.js';
2
+ export * from 'vitest-plugin-vis';
3
+ import { ToMatchImageSnapshotOptions, ImageSnapshotIdOptions } from 'vitest-plugin-vis/client';
4
+ import { StoryContext } from 'storybook/internal/types';
5
+
6
+ /**
7
+ * Define snapshot parameter for auto snapshot.
8
+ */
9
+ declare function defineAutoSnapshotParam(snapshot: ToMatchImageSnapshotOptions): {
10
+ snapshot: ToMatchImageSnapshotOptions;
11
+ };
12
+
13
+ /**
14
+ * Check if the snapshot image exists.
15
+ */
16
+ declare function hasImageSnapshot(options?: ImageSnapshotIdOptions | undefined): Promise<boolean>;
17
+
18
+ declare const visAnnotations: {
19
+ beforeEach(ctx: StoryContext): void;
12
20
  };
13
21
 
14
- export { MatchImageSnapshotOptions, defineSnapshotParam };
22
+ export { defineAutoSnapshotParam, hasImageSnapshot, visAnnotations };
package/dist/index.js CHANGED
@@ -1,11 +1,35 @@
1
- export { defineVisPreview, storybookPreviewVis } from './chunk-7MABS6N3.js';
2
- export { cdp, commands, page, server, toMatchImageSnapshot } from './chunk-T3RUFMT2.js';
1
+ import { toMatchImageSnapshot, commands } from './chunk-4BJKSKI2.js';
2
+ import { setAutoSnapshotOptions } from 'vitest-plugin-vis';
3
+ export * from 'vitest-plugin-vis';
4
+ import { toTaskId } from 'vitest-plugin-vis/client';
5
+ import { getCurrentTest } from 'vitest/suite';
6
+ import { expect } from '@storybook/test';
3
7
 
4
- // src/param.ts
5
- function defineSnapshotParam(snapshot) {
8
+ // src/client/storybook/param.ts
9
+ function defineAutoSnapshotParam(snapshot) {
6
10
  return { snapshot };
7
11
  }
12
+ async function hasImageSnapshot(options) {
13
+ const test = getCurrentTest();
14
+ if (!test) {
15
+ return false;
16
+ }
17
+ const taskId = toTaskId(test);
18
+ if (options?.customizeSnapshotId) {
19
+ return commands.imageSnapshotNextIndex(taskId).then((index) => commands.hasImageSnapshot(taskId, options.customizeSnapshotId(taskId, index)));
20
+ }
21
+ return commands.hasImageSnapshot(taskId);
22
+ }
23
+ expect.extend({ toMatchImageSnapshot });
24
+ var visAnnotations = {
25
+ beforeEach(ctx) {
26
+ const tags = ctx.tags;
27
+ const enable = !tags ? false : tags.lastIndexOf("!snapshot") < tags.lastIndexOf("snapshot");
28
+ const test = getCurrentTest();
29
+ setAutoSnapshotOptions(test, { enable, ...ctx.parameters?.snapshot });
30
+ }
31
+ };
8
32
 
9
- export { defineSnapshotParam };
33
+ export { defineAutoSnapshotParam, hasImageSnapshot, visAnnotations };
10
34
  //# sourceMappingURL=index.js.map
11
35
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/param.ts"],"names":[],"mappings":";;;;AAEO,SAAS,oBAAoB,QAAqC,EAAA;AACxE,EAAA,OAAO,EAAE,QAAS,EAAA;AACnB","file":"index.js","sourcesContent":["import type { MatchImageSnapshotOptions } from './expect.to_match_image_snapshot'\n\nexport function defineSnapshotParam(snapshot: MatchImageSnapshotOptions) {\n\treturn { snapshot }\n}\n"]}
1
+ {"version":3,"sources":["../src/client/storybook/param.ts","../src/client/has_image_snapshot.ts","../src/csf/vis_annotation.ts"],"names":["getCurrentTest"],"mappings":";;;;;;;;AAKO,SAAS,wBAAwB,QAAuC,EAAA;AAC9E,EAAA,OAAO,EAAE,QAAS,EAAA;AACnB;ACAA,eAAsB,iBAAiB,OAA8C,EAAA;AACpF,EAAA,MAAM,OAAO,cAAe,EAAA;AAC5B,EAAA,IAAI,CAAC,IAAM,EAAA;AACV,IAAO,OAAA,KAAA;AAAA;AAGR,EAAM,MAAA,MAAA,GAAS,SAAS,IAAI,CAAA;AAC5B,EAAA,IAAI,SAAS,mBAAqB,EAAA;AACjC,IAAA,OAAO,QACL,CAAA,sBAAA,CAAuB,MAAM,CAAA,CAC7B,KAAK,CAAC,KAAA,KAAU,QAAS,CAAA,gBAAA,CAAiB,QAAQ,OAAQ,CAAA,mBAAA,CAAqB,MAAQ,EAAA,KAAK,CAAC,CAAC,CAAA;AAAA;AAGjG,EAAO,OAAA,QAAA,CAAS,iBAAiB,MAAM,CAAA;AACxC;ACfA,MAAO,CAAA,MAAA,CAAO,EAAE,oBAAA,EAAsB,CAAA;AAE/B,IAAM,cAAiB,GAAA;AAAA,EAC7B,WAAW,GAAmB,EAAA;AAC7B,IAAA,MAAM,OAAO,GAAI,CAAA,IAAA;AACjB,IAAM,MAAA,MAAA,GAAS,CAAC,IAAA,GAAO,KAAQ,GAAA,IAAA,CAAK,YAAY,WAAW,CAAA,GAAI,IAAK,CAAA,WAAA,CAAY,UAAU,CAAA;AAC1F,IAAA,MAAM,OAAOA,cAAe,EAAA;AAC5B,IAAA,sBAAA,CAAuB,MAAM,EAAE,MAAA,EAAQ,GAAG,GAAI,CAAA,UAAA,EAAY,UAAU,CAAA;AAAA;AAEtE","file":"index.js","sourcesContent":["import type { ToMatchImageSnapshotOptions } from 'vitest-plugin-vis/client'\n\n/**\n * Define snapshot parameter for auto snapshot.\n */\nexport function defineAutoSnapshotParam(snapshot: ToMatchImageSnapshotOptions) {\n\treturn { snapshot }\n}\n","import { type ImageSnapshotIdOptions, toTaskId } from 'vitest-plugin-vis/client'\nimport { getCurrentTest } from 'vitest/suite'\nimport { commands } from './@vitest/browser/context.ts'\n\n/**\n * Check if the snapshot image exists.\n */\nexport async function hasImageSnapshot(options?: ImageSnapshotIdOptions | undefined) {\n\tconst test = getCurrentTest()\n\tif (!test) {\n\t\treturn false\n\t}\n\n\tconst taskId = toTaskId(test)\n\tif (options?.customizeSnapshotId) {\n\t\treturn commands\n\t\t\t.imageSnapshotNextIndex(taskId)\n\t\t\t.then((index) => commands.hasImageSnapshot(taskId, options.customizeSnapshotId!(taskId, index)))\n\t}\n\n\treturn commands.hasImageSnapshot(taskId)\n}\n","import { expect } from '@storybook/test'\nimport type { BaseAnnotations, StoryContext } from 'storybook/internal/types'\nimport { setAutoSnapshotOptions } from 'vitest-plugin-vis'\nimport { getCurrentTest } from 'vitest/suite'\nimport { toMatchImageSnapshot } from '../client/expect/to_match_image_snapshot.ts'\n\nexpect.extend({ toMatchImageSnapshot })\n\nexport const visAnnotations = {\n\tbeforeEach(ctx: StoryContext) {\n\t\tconst tags = ctx.tags\n\t\tconst enable = !tags ? false : tags.lastIndexOf('!snapshot') < tags.lastIndexOf('snapshot')\n\t\tconst test = getCurrentTest()\n\t\tsetAutoSnapshotOptions(test, { enable, ...ctx.parameters?.snapshot })\n\t},\n} satisfies BaseAnnotations\n"]}
package/dist/preset.cjs CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var e={};module.exports=e;//# sourceMappingURL=preset.cjs.map
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var config=require('vitest-plugin-vis/config');var n;globalThis.__vitest_browser__&&import('@vitest/browser/context').then(t=>{n=t;});var r=new Proxy({},{get(t,o){return n?.commands?.[o]??a[o]??(()=>{throw new Error(`Command '${String(o)}' not found`)})()}}),a={matchImageSnapshot:async()=>{},setupVisSuite:()=>{}};var i={async beforeAll(){await r.setupVisSuite();}},m=i;var s="storybook-addon-vis";function e(t={}){return {...config.vis({...t,preset:"none"}),name:s}}var v={previewAnnotations(t=[]){return [...t,m]}};function I(t,o={}){return t.plugins.push(e(o)),t}exports.default=v;exports.viteFinal=I;//# sourceMappingURL=preset.cjs.map
2
2
  //# sourceMappingURL=preset.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/preset.ts"],"names":["preset_default"],"mappings":"aAAA,IAAOA,EAAQ","file":"preset.cjs","sourcesContent":["export default {}\n"]}
1
+ {"version":3,"sources":["../src/client/@vitest/browser/context.ts","../src/preview.ts","../src/vitest-plugin.ts","../src/shared/contants.ts","../src/vitest-plugin/storybook_vis.ts","../src/preset.ts"],"names":["ctx","m","commands","_target","prop","commandsStub","preview","preview_default","NAME","storybookVis","options","vis","preset_default","entry","viteFinal","config"],"mappings":"qHAkBA,IAAIA,CAEC,CAAA,UAAA,CAAmB,kBACvB,EAAA,OAAO,yBAAyB,CAAA,CAAE,IAAMC,CAAAA,CAAAA,EAAM,CAC7CD,CAAAA,CAAMC,EACP,CAAC,EAGK,IAAMC,CAAAA,CAAW,IAAI,KAAA,CAAuB,EAAC,CAAU,CAC7D,GAAA,CAAIC,EAASC,CAAM,CAAA,CAClB,OACEJ,CAAAA,EAAK,QAAmBI,GAAAA,CAAI,CAE7BC,EAAAA,CAAAA,CAAaD,CAAI,CAChB,EAAA,CAAA,IAAM,CACN,MAAM,IAAI,KAAA,CAAM,CAAY,SAAA,EAAA,MAAA,CAAOA,CAAI,CAAC,CAAa,WAAA,CAAA,CACtD,CAAG,GAGL,CACD,CAAC,EAGKC,CAAe,CAAA,CACpB,kBAAoB,CAAA,SAAY,EAAC,CACjC,aAAe,CAAA,IAAM,EACtB,CAAA,CCzCA,IAAMC,CAAAA,CAAwC,CAC7C,MAAM,SAAY,EAAA,CACjB,MAAMJ,CAAS,CAAA,aAAA,GAChB,CACD,CAEOK,CAAAA,CAAAA,CAAQD,CCTf,CCAO,IAAME,EAAO,qBCIb,CAAA,SAASC,CAAaC,CAAAA,CAAAA,CAAsC,EAAC,CAAG,CACtE,OAAO,CACN,GAAGC,UAAAA,CAAI,CACN,GAAGD,CACH,CAAA,MAAA,CAAQ,MACT,CAAC,EACD,IAAMF,CAAAA,CACP,CACD,CCTOI,IAAAA,CAAAA,CAAQ,CACd,kBAAA,CAAmBC,CAAQ,CAAA,EAAI,CAAA,CAC9B,OAAO,CAAC,GAAGA,CAAAA,CAAON,CAAO,CAC1B,CACD,EAEO,SAASO,CAAUC,CAAAA,CAAAA,CAAaL,CAAe,CAAA,GAAI,CACzD,OAAAK,CAAO,CAAA,OAAA,CAAQ,IAAKN,CAAAA,CAAAA,CAAaC,CAAO,CAAC,EAClCK,CACR","file":"preset.cjs","sourcesContent":["import type { BrowserCommands } from '@vitest/browser/context'\nimport type {\n\tHasImageSnapshotCommand,\n\tImageSnapshotNextIndexCommand,\n\tMatchImageSnapshotCommand,\n\tSetupVisSuiteCommand,\n} from 'vitest-plugin-vis/commands'\n\ndeclare module '@vitest/browser/context' {\n\tinterface BrowserCommands\n\t\textends MatchImageSnapshotCommand,\n\t\t\tSetupVisSuiteCommand,\n\t\t\tHasImageSnapshotCommand,\n\t\t\tImageSnapshotNextIndexCommand,\n\t\t\tMatchImageSnapshotCommand,\n\t\t\tSetupVisSuiteCommand {}\n}\n\nlet ctx: Awaited<typeof import('@vitest/browser/context')>\n\nif ((globalThis as any).__vitest_browser__) {\n\timport('@vitest/browser/context').then((m) => {\n\t\tctx = m\n\t})\n}\n\nexport const commands = new Proxy<BrowserCommands>({} as any, {\n\tget(_target, prop) {\n\t\treturn (\n\t\t\t(ctx?.commands as any)?.[prop] ??\n\t\t\t/* v8 ignore start : used in storybook, not in vitest */\n\t\t\tcommandsStub[prop] ??\n\t\t\t(() => {\n\t\t\t\tthrow new Error(`Command '${String(prop)}' not found`)\n\t\t\t})()\n\t\t\t/* v8 ignore end */\n\t\t)\n\t},\n})\n\n/* v8 ignore start : used in storybook, not in vitest */\nconst commandsStub = {\n\tmatchImageSnapshot: async () => {},\n\tsetupVisSuite: () => {},\n} as any\n/* v8 ignore end */\n","import type { ProjectAnnotations, Renderer } from 'storybook/internal/types'\nimport { commands } from './client/@vitest/browser/context.ts'\n\nconst preview: ProjectAnnotations<Renderer> = {\n\tasync beforeAll() {\n\t\tawait commands.setupVisSuite()\n\t},\n}\n\nexport default preview\n","export { trimCommonFolder } from 'vitest-plugin-vis/config'\nexport { storybookVis } from './vitest-plugin/storybook_vis.ts'\n","export const NAME = 'storybook-addon-vis'\n","import type { Omit } from 'type-plus'\nimport { type VisOptions, vis } from 'vitest-plugin-vis/config'\nimport { NAME } from '../shared/contants.ts'\n\nexport function storybookVis(options: Omit<VisOptions, 'preset'> = {}) {\n\treturn {\n\t\t...vis({\n\t\t\t...options,\n\t\t\tpreset: 'none',\n\t\t}),\n\t\tname: NAME,\n\t}\n}\n","import preview from './preview.ts'\nimport { storybookVis } from './vitest-plugin.ts'\n\nexport default {\n\tpreviewAnnotations(entry = []) {\n\t\treturn [...entry, preview]\n\t},\n}\n\nexport function viteFinal(config: any, options: any = {}) {\n\tconfig.plugins.push(storybookVis(options))\n\treturn config\n}\n"]}
package/dist/preview.js CHANGED
@@ -1,9 +1,2 @@
1
- import { storybookPreviewVis } from './chunk-7MABS6N3.js';
2
- import './chunk-T3RUFMT2.js';
3
-
4
- // src/preview.ts
5
- var preview_default = storybookPreviewVis;
6
-
7
- export { preview_default as default };
8
- //# sourceMappingURL=preview.js.map
1
+ var o;globalThis.__vitest_browser__&&import('@vitest/browser/context').then(e=>{o=e;});var a=new Proxy({},{get(e,t){return o?.commands?.[t]??n[t]??(()=>{throw new Error(`Command '${String(t)}' not found`)})()}}),n={matchImageSnapshot:async()=>{},setupVisSuite:()=>{}};var m={async beforeAll(){await a.setupVisSuite();}},i=m;export{i as default};//# sourceMappingURL=preview.js.map
9
2
  //# sourceMappingURL=preview.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/preview.ts"],"names":[],"mappings":";;;;AAEA,IAAO,eAAQ,GAAA","file":"preview.js","sourcesContent":["import { storybookPreviewVis } from './storybook/preview'\n\nexport default storybookPreviewVis\n"]}
1
+ {"version":3,"sources":["../src/client/@vitest/browser/context.ts","../src/preview.ts"],"names":["ctx","m","commands","_target","prop","commandsStub","preview","preview_default"],"mappings":"AAkBA,IAAIA,CAEC,CAAA,UAAA,CAAmB,kBACvB,EAAA,OAAO,yBAAyB,CAAE,CAAA,IAAA,CAAMC,CAAM,EAAA,CAC7CD,CAAMC,CAAAA,EACP,CAAC,CAAA,CAGK,IAAMC,CAAW,CAAA,IAAI,KAAuB,CAAA,EAAW,CAAA,CAC7D,GAAIC,CAAAA,CAAAA,CAASC,EAAM,CAClB,OACEJ,CAAK,EAAA,QAAA,GAAmBI,CAAI,CAE7BC,EAAAA,CAAAA,CAAaD,CAAI,CAAA,EAAA,CAChB,IAAM,CACN,MAAM,IAAI,KAAA,CAAM,CAAY,SAAA,EAAA,MAAA,CAAOA,CAAI,CAAC,aAAa,CACtD,CAAA,GAGF,CACD,CAAC,CAGKC,CAAAA,CAAAA,CAAe,CACpB,kBAAA,CAAoB,SAAY,EAAC,CACjC,aAAe,CAAA,IAAM,EACtB,CCzCA,CAAA,IAAMC,EAAwC,CAC7C,MAAM,SAAY,EAAA,CACjB,MAAMJ,CAAS,CAAA,aAAA,GAChB,CACD,EAEOK,CAAQD,CAAAA","file":"preview.js","sourcesContent":["import type { BrowserCommands } from '@vitest/browser/context'\nimport type {\n\tHasImageSnapshotCommand,\n\tImageSnapshotNextIndexCommand,\n\tMatchImageSnapshotCommand,\n\tSetupVisSuiteCommand,\n} from 'vitest-plugin-vis/commands'\n\ndeclare module '@vitest/browser/context' {\n\tinterface BrowserCommands\n\t\textends MatchImageSnapshotCommand,\n\t\t\tSetupVisSuiteCommand,\n\t\t\tHasImageSnapshotCommand,\n\t\t\tImageSnapshotNextIndexCommand,\n\t\t\tMatchImageSnapshotCommand,\n\t\t\tSetupVisSuiteCommand {}\n}\n\nlet ctx: Awaited<typeof import('@vitest/browser/context')>\n\nif ((globalThis as any).__vitest_browser__) {\n\timport('@vitest/browser/context').then((m) => {\n\t\tctx = m\n\t})\n}\n\nexport const commands = new Proxy<BrowserCommands>({} as any, {\n\tget(_target, prop) {\n\t\treturn (\n\t\t\t(ctx?.commands as any)?.[prop] ??\n\t\t\t/* v8 ignore start : used in storybook, not in vitest */\n\t\t\tcommandsStub[prop] ??\n\t\t\t(() => {\n\t\t\t\tthrow new Error(`Command '${String(prop)}' not found`)\n\t\t\t})()\n\t\t\t/* v8 ignore end */\n\t\t)\n\t},\n})\n\n/* v8 ignore start : used in storybook, not in vitest */\nconst commandsStub = {\n\tmatchImageSnapshot: async () => {},\n\tsetupVisSuite: () => {},\n} as any\n/* v8 ignore end */\n","import type { ProjectAnnotations, Renderer } from 'storybook/internal/types'\nimport { commands } from './client/@vitest/browser/context.ts'\n\nconst preview: ProjectAnnotations<Renderer> = {\n\tasync beforeAll() {\n\t\tawait commands.setupVisSuite()\n\t},\n}\n\nexport default preview\n"]}
@@ -1,60 +1,19 @@
1
- import { copyFile as copyFile$1, stat } from 'node:fs/promises';
2
- import { mkdirp } from 'mkdirp';
3
- import { join, dirname } from 'pathe';
4
- import ci from 'is-ci';
5
- import { rimraf } from 'rimraf';
6
-
7
- // src/vitest-plugin/commands/copy_file.ts
8
- var copyFile = async ({ testPath, provider }, src, dest) => {
9
- if (provider.name === "playwright") {
10
- const destPath = join(dirname(testPath), dest);
11
- const destDir = dirname(destPath);
12
- await mkdirp(destDir);
13
- return copyFile$1(join(dirname(testPath), src), destPath);
14
- }
15
- throw new Error(`provider ${provider.name} is not supported`);
16
- };
17
- var existDir = async ({ testPath, provider }, path) => {
18
- if (provider.name === "playwright") {
19
- return stat(join(dirname(testPath), path)).then((s) => s.isDirectory()).catch(() => false);
20
- }
21
- throw new Error(`provider ${provider.name} is not supported`);
22
- };
23
- var existFile = async ({ testPath }, path) => {
24
- return stat(join(dirname(testPath), path)).then((s) => s.isFile()).catch(() => false);
25
- };
26
- var getSnapshotPlatform = async () => {
27
- return ci ? process.platform : "local";
28
- };
29
- var isCI = async () => ci;
30
- var rmDir = async ({ testPath, provider }, path) => {
31
- if (provider.name === "playwright") {
32
- return rimraf(join(dirname(testPath), path));
33
- }
34
- throw new Error(`provider ${provider.name} is not supported`);
35
- };
1
+ import { vis } from 'vitest-plugin-vis/config';
2
+ export { trimCommonFolder } from 'vitest-plugin-vis/config';
36
3
 
37
4
  // src/vitest-plugin.ts
38
- function storybookVis() {
5
+
6
+ // src/shared/contants.ts
7
+ var NAME = "storybook-addon-vis";
8
+
9
+ // src/vitest-plugin/storybook_vis.ts
10
+ function storybookVis(options = {}) {
39
11
  return {
40
- name: "vitest:storybook-addon-vis",
41
- config() {
42
- return {
43
- test: {
44
- browser: {
45
- name: "chromium",
46
- commands: {
47
- existDir,
48
- existFile,
49
- copyFile,
50
- rmDir,
51
- isCI,
52
- getSnapshotPlatform
53
- }
54
- }
55
- }
56
- };
57
- }
12
+ ...vis({
13
+ ...options,
14
+ preset: "none"
15
+ }),
16
+ name: NAME
58
17
  };
59
18
  }
60
19
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/vitest-plugin/commands/copy_file.ts","../src/vitest-plugin/commands/exist_dir.ts","../src/vitest-plugin/commands/exist_file.ts","../src/vitest-plugin/commands/get_snapshot_platform.ts","../src/vitest-plugin/commands/is_ci.ts","../src/vitest-plugin/commands/rm_dir.ts","../src/vitest-plugin.ts"],"names":["copyFileFs","join","dirname","stat","ci"],"mappings":";;;;;;;AASO,IAAM,WAAwD,OAAO,EAAE,UAAU,QAAS,EAAA,EAAG,KAAK,IAAS,KAAA;AACjH,EAAI,IAAA,QAAA,CAAS,SAAS,YAAc,EAAA;AACnC,IAAA,MAAM,QAAW,GAAA,IAAA,CAAK,OAAQ,CAAA,QAAQ,GAAG,IAAI,CAAA;AAC7C,IAAM,MAAA,OAAA,GAAU,QAAQ,QAAQ,CAAA;AAChC,IAAA,MAAM,OAAO,OAAO,CAAA;AACpB,IAAA,OAAOA,WAAW,IAAK,CAAA,OAAA,CAAQ,QAAQ,CAAG,EAAA,GAAG,GAAG,QAAQ,CAAA;AAAA;AAGzD,EAAA,MAAM,IAAI,KAAA,CAAM,CAAY,SAAA,EAAA,QAAA,CAAS,IAAI,CAAmB,iBAAA,CAAA,CAAA;AAC7D,CAAA;ACVO,IAAM,WAA2C,OAAO,EAAE,QAAU,EAAA,QAAA,IAAY,IAAS,KAAA;AAC/F,EAAI,IAAA,QAAA,CAAS,SAAS,YAAc,EAAA;AACnC,IAAA,OAAO,KAAKC,IAAKC,CAAAA,OAAAA,CAAQ,QAAQ,CAAA,EAAG,IAAI,CAAC,CAAA,CACvC,IAAK,CAAA,CAAC,MAAM,CAAE,CAAA,WAAA,EAAa,CAC3B,CAAA,KAAA,CAAM,MAAM,KAAK,CAAA;AAAA;AAGpB,EAAA,MAAM,IAAI,KAAA,CAAM,CAAY,SAAA,EAAA,QAAA,CAAS,IAAI,CAAmB,iBAAA,CAAA,CAAA;AAC7D,CAAA;ACRO,IAAM,SAA4C,GAAA,OAAO,EAAE,QAAA,IAAY,IAAS,KAAA;AACtF,EAAA,OAAOC,KAAKF,IAAKC,CAAAA,OAAAA,CAAQ,QAAQ,CAAA,EAAG,IAAI,CAAC,CAAA,CACvC,IAAK,CAAA,CAAC,MAAM,CAAE,CAAA,MAAA,EAAQ,CACtB,CAAA,KAAA,CAAM,MAAM,KAAK,CAAA;AACpB,CAAA;ACDO,IAAM,sBAAsB,YAAY;AAC9C,EAAO,OAAA,EAAA,GAAK,QAAQ,QAAW,GAAA,OAAA;AAChC,CAAA;ACPO,IAAM,OAAO,YAAYE,EAAAA;ACEzB,IAAM,QAAwC,OAAO,EAAE,QAAU,EAAA,QAAA,IAAY,IAAS,KAAA;AAC5F,EAAI,IAAA,QAAA,CAAS,SAAS,YAAc,EAAA;AACnC,IAAA,OAAO,OAAOH,IAAKC,CAAAA,OAAAA,CAAQ,QAAQ,CAAA,EAAG,IAAI,CAAC,CAAA;AAAA;AAG5C,EAAA,MAAM,IAAI,KAAA,CAAM,CAAY,SAAA,EAAA,QAAA,CAAS,IAAI,CAAmB,iBAAA,CAAA,CAAA;AAC7D,CAAA;;;ACLO,SAAS,YAAe,GAAA;AAC9B,EAAO,OAAA;AAAA,IACN,IAAM,EAAA,4BAAA;AAAA,IACN,MAAS,GAAA;AACR,MAAO,OAAA;AAAA,QACN,IAAM,EAAA;AAAA,UACL,OAAS,EAAA;AAAA,YACR,IAAM,EAAA,UAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,QAAA;AAAA,cACA,SAAA;AAAA,cACA,QAAA;AAAA,cACA,KAAA;AAAA,cACA,IAAA;AAAA,cACA;AAAA;AACD;AACD;AACD,OACD;AAAA;AACD,GACD;AACD","file":"vitest-plugin.js","sourcesContent":["import { copyFile as copyFileFs } from 'node:fs/promises'\nimport { mkdirp } from 'mkdirp'\nimport { dirname, join } from 'pathe'\nimport type { BrowserCommand } from 'vitest/node'\n\nexport interface CopyFileCommand {\n\tcopyFile(src: string, dest: string): Promise<void>\n}\n\nexport const copyFile: BrowserCommand<[src: string, dest: string]> = async ({ testPath, provider }, src, dest) => {\n\tif (provider.name === 'playwright') {\n\t\tconst destPath = join(dirname(testPath), dest)\n\t\tconst destDir = dirname(destPath)\n\t\tawait mkdirp(destDir)\n\t\treturn copyFileFs(join(dirname(testPath), src), destPath)\n\t}\n\n\tthrow new Error(`provider ${provider.name} is not supported`)\n}\n","import { stat } from 'node:fs/promises'\nimport { dirname, join } from 'pathe'\nimport type { BrowserCommand } from 'vitest/node'\n\nexport interface ExistDirCommand {\n\texistDir: (path: string) => Promise<boolean>\n}\n\nexport const existDir: BrowserCommand<[path: string]> = async ({ testPath, provider }, path) => {\n\tif (provider.name === 'playwright') {\n\t\treturn stat(join(dirname(testPath), path))\n\t\t\t.then((s) => s.isDirectory())\n\t\t\t.catch(() => false)\n\t}\n\n\tthrow new Error(`provider ${provider.name} is not supported`)\n}\n","import { stat } from 'node:fs/promises'\nimport { dirname, join } from 'pathe'\nimport type { BrowserCommand } from 'vitest/node'\n\nexport interface ExistFileCommand {\n\texistFile: (path: string) => Promise<boolean>\n}\n\nexport const existFile: BrowserCommand<[path: string]> = async ({ testPath }, path) => {\n\treturn stat(join(dirname(testPath), path))\n\t\t.then((s) => s.isFile())\n\t\t.catch(() => false)\n}\n","import ci from 'is-ci'\n\nexport interface GetSnapshotPlatformCommand {\n\t/**\n\t * Get the platform id of the snapshot `{platform}[-ci]`.\n\t *\n\t * This is useful to control where the snapshot is stored.\n\t */\n\tgetSnapshotPlatform: () => Promise<string>\n}\n\nexport const getSnapshotPlatform = async () => {\n\treturn ci ? process.platform : 'local'\n}\n","import ci from 'is-ci'\n\nexport interface IsCICommand {\n\tisCI: () => Promise<boolean>\n}\n\nexport const isCI = async () => ci\n","import { dirname, join } from 'pathe'\nimport { rimraf } from 'rimraf'\nimport type { BrowserCommand } from 'vitest/node'\n\nexport interface RmDirCommand {\n\trmDir: (path: string) => Promise<void>\n}\n\nexport const rmDir: BrowserCommand<[path: string]> = async ({ testPath, provider }, path) => {\n\tif (provider.name === 'playwright') {\n\t\treturn rimraf(join(dirname(testPath), path))\n\t}\n\n\tthrow new Error(`provider ${provider.name} is not supported`)\n}\n","import type { Plugin } from 'vitest/config'\nimport './augment.js'\nimport { copyFile } from './vitest-plugin/commands/copy_file.js'\nimport { existDir } from './vitest-plugin/commands/exist_dir.js'\nimport { existFile } from './vitest-plugin/commands/exist_file.js'\nimport { getSnapshotPlatform } from './vitest-plugin/commands/get_snapshot_platform.js'\nimport { isCI } from './vitest-plugin/commands/is_ci.js'\nimport { rmDir } from './vitest-plugin/commands/rm_dir.js'\n\nexport function storybookVis() {\n\treturn {\n\t\tname: 'vitest:storybook-addon-vis',\n\t\tconfig() {\n\t\t\treturn {\n\t\t\t\ttest: {\n\t\t\t\t\tbrowser: {\n\t\t\t\t\t\tname: 'chromium',\n\t\t\t\t\t\tcommands: {\n\t\t\t\t\t\t\texistDir,\n\t\t\t\t\t\t\texistFile,\n\t\t\t\t\t\t\tcopyFile,\n\t\t\t\t\t\t\trmDir,\n\t\t\t\t\t\t\tisCI,\n\t\t\t\t\t\t\tgetSnapshotPlatform,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\t} satisfies Plugin\n}\n"]}
1
+ {"version":3,"sources":["../src/shared/contants.ts","../src/vitest-plugin/storybook_vis.ts"],"names":[],"mappings":";;;;;;AAAO,IAAM,IAAO,GAAA,qBAAA;;;ACIb,SAAS,YAAA,CAAa,OAAsC,GAAA,EAAI,EAAA;AACtE,EAAO,OAAA;AAAA,IACN,GAAG,GAAI,CAAA;AAAA,MACN,GAAG,OAAA;AAAA,MACH,MAAQ,EAAA;AAAA,KACR,CAAA;AAAA,IACD,IAAM,EAAA;AAAA,GACP;AACD","file":"vitest-plugin.js","sourcesContent":["export const NAME = 'storybook-addon-vis'\n","import type { Omit } from 'type-plus'\nimport { type VisOptions, vis } from 'vitest-plugin-vis/config'\nimport { NAME } from '../shared/contants.ts'\n\nexport function storybookVis(options: Omit<VisOptions, 'preset'> = {}) {\n\treturn {\n\t\t...vis({\n\t\t\t...options,\n\t\t\tpreset: 'none',\n\t\t}),\n\t\tname: NAME,\n\t}\n}\n"]}
@@ -1,34 +1,19 @@
1
- import { V as VisOptions } from './types-BrUWBuNW.js';
2
- export { I as ImageSnapshotMatcher, M as MatchImageSnapshotOptions, c as cdp, a as commands, p as page, s as server, t as toMatchImageSnapshot } from './types-BrUWBuNW.js';
3
- import '@vitest/browser/context';
4
- import 'vitest';
5
- import '@vitest/expect';
6
- import 'pixelmatch';
1
+ import './augment-ofADjQ4H.js';
2
+ import 'vitest-plugin-vis/client';
7
3
 
8
- declare function createVisConfig(options?: VisOptions): {
4
+ declare const vis: {
9
5
  presets: {
10
- basic(): void;
6
+ manual(): void;
7
+ auto(): void;
11
8
  theme(themes: Record<string, () => void | Promise<void>>): void;
12
9
  };
13
- beforeAll(suite: {
14
- file: {
15
- filepath: string;
16
- };
17
- name: string;
18
- }): Promise<void>;
10
+ beforeAll: {
11
+ setup(): Promise<void>;
12
+ };
19
13
  afterEach: {
20
14
  matchImageSnapshot(): Promise<void>;
21
15
  matchPerTheme(themes: Record<string, () => Promise<void> | void>): () => Promise<void>;
22
16
  };
23
17
  };
24
18
 
25
- /**
26
- * Determine should snapshot be taken.
27
- *
28
- * not story: false
29
- * no `snapshot` tag: false
30
- * disabled by `!snapshot` tag: false
31
- */
32
- declare function shouldTakeSnapshot(): boolean;
33
-
34
- export { createVisConfig, shouldTakeSnapshot };
19
+ export { vis };
@@ -1,52 +1,12 @@
1
- import { toMatchImageSnapshot, state, page } from './chunk-T3RUFMT2.js';
2
- export { cdp, commands, page, server, toMatchImageSnapshot } from './chunk-T3RUFMT2.js';
3
- import { expect, beforeAll, afterEach } from 'vitest';
1
+ import { toMatchImageSnapshot, commands } from './chunk-4BJKSKI2.js';
2
+ import { createVis } from 'vitest-plugin-vis/setup';
3
+ import { expect } from 'vitest';
4
4
 
5
- // src/should_take_snapshot.ts
6
- function shouldTakeSnapshot() {
7
- return state.shouldTakeSnapshot();
8
- }
9
-
10
- // src/vis.ts
11
5
  expect.extend({ toMatchImageSnapshot });
12
- function createVisConfig(options) {
13
- const h = {
14
- presets: {
15
- basic() {
16
- beforeAll(h.beforeAll);
17
- afterEach(h.afterEach.matchImageSnapshot);
18
- },
19
- theme(themes) {
20
- beforeAll(h.beforeAll);
21
- afterEach(h.afterEach.matchPerTheme(themes));
22
- }
23
- },
24
- async beforeAll(suite) {
25
- return state.setupSuite(suite, options);
26
- },
27
- afterEach: {
28
- async matchImageSnapshot() {
29
- if (!shouldTakeSnapshot()) return;
30
- const r = await page.imageSnapshot();
31
- expect(r).toMatchImageSnapshot();
32
- },
33
- matchPerTheme(themes) {
34
- return async function matchImageSnapshot() {
35
- if (!shouldTakeSnapshot()) return;
36
- for (const themeId in themes) {
37
- await themes[themeId]();
38
- const r = await page.imageSnapshot({
39
- customizeSnapshotId: (id) => `${id}-${themeId}`
40
- });
41
- await expect(r).toMatchImageSnapshot();
42
- }
43
- };
44
- }
45
- }
46
- };
47
- return h;
48
- }
49
6
 
50
- export { createVisConfig, shouldTakeSnapshot };
7
+ // src/vitest-setup.ts
8
+ var vis = createVis(commands);
9
+
10
+ export { vis };
51
11
  //# sourceMappingURL=vitest-setup.js.map
52
12
  //# sourceMappingURL=vitest-setup.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/should_take_snapshot.ts","../src/vis.ts"],"names":[],"mappings":";;;;;AASO,SAAS,kBAAqB,GAAA;AACpC,EAAA,OAAO,MAAM,kBAAmB,EAAA;AACjC;;;ACHA,MAAO,CAAA,MAAA,CAAO,EAAE,oBAAA,EAAsB,CAAA;AAE/B,SAAS,gBAAgB,OAAsB,EAAA;AACrD,EAAA,MAAM,CAAI,GAAA;AAAA,IACT,OAAS,EAAA;AAAA,MACR,KAAQ,GAAA;AACP,QAAA,SAAA,CAAU,EAAE,SAAS,CAAA;AACrB,QAAU,SAAA,CAAA,CAAA,CAAE,UAAU,kBAAkB,CAAA;AAAA,OACzC;AAAA,MACA,MAAM,MAAoD,EAAA;AACzD,QAAA,SAAA,CAAU,EAAE,SAAS,CAAA;AACrB,QAAA,SAAA,CAAU,CAAE,CAAA,SAAA,CAAU,aAAc,CAAA,MAAM,CAAC,CAAA;AAAA;AAC5C,KACD;AAAA,IACA,MAAM,UAAU,KAAqD,EAAA;AACpE,MAAO,OAAA,KAAA,CAAM,UAAW,CAAA,KAAA,EAAO,OAAO,CAAA;AAAA,KACvC;AAAA,IACA,SAAW,EAAA;AAAA,MACV,MAAM,kBAAqB,GAAA;AAC1B,QAAI,IAAA,CAAC,oBAAsB,EAAA;AAE3B,QAAM,MAAA,CAAA,GAAI,MAAM,IAAA,CAAK,aAAc,EAAA;AACnC,QAAO,MAAA,CAAA,CAAC,EAAE,oBAAqB,EAAA;AAAA,OAChC;AAAA,MACA,cAAc,MAAoD,EAAA;AACjE,QAAA,OAAO,eAAe,kBAAqB,GAAA;AAC1C,UAAI,IAAA,CAAC,oBAAsB,EAAA;AAC3B,UAAA,KAAA,MAAW,WAAW,MAAQ,EAAA;AAC7B,YAAM,MAAA,MAAA,CAAO,OAAO,CAAE,EAAA;AAEtB,YAAM,MAAA,CAAA,GAAI,MAAM,IAAA,CAAK,aAAc,CAAA;AAAA,cAClC,qBAAqB,CAAC,EAAA,KAAO,CAAG,EAAA,EAAE,IAAI,OAAO,CAAA;AAAA,aAC7C,CAAA;AACD,YAAM,MAAA,MAAA,CAAO,CAAC,CAAA,CAAE,oBAAqB,EAAA;AAAA;AACtC,SACD;AAAA;AACD;AACD,GACD;AACA,EAAO,OAAA,CAAA;AACR","file":"vitest-setup.js","sourcesContent":["import { state } from './state'\n\n/**\n * Determine should snapshot be taken.\n *\n * not story: false\n * no `snapshot` tag: false\n * disabled by `!snapshot` tag: false\n */\nexport function shouldTakeSnapshot() {\n\treturn state.shouldTakeSnapshot()\n}\n","import { afterEach, beforeAll, expect } from 'vitest'\nimport { page } from './@vitest/browser/context.js'\nimport './augment.js'\nimport { toMatchImageSnapshot } from './expect.to_match_image_snapshot.js'\nimport { shouldTakeSnapshot } from './should_take_snapshot.js'\nimport { state } from './state.js'\nimport type { VisOptions } from './types.js'\n\nexpect.extend({ toMatchImageSnapshot })\n\nexport function createVisConfig(options?: VisOptions) {\n\tconst h = {\n\t\tpresets: {\n\t\t\tbasic() {\n\t\t\t\tbeforeAll(h.beforeAll)\n\t\t\t\tafterEach(h.afterEach.matchImageSnapshot)\n\t\t\t},\n\t\t\ttheme(themes: Record<string, () => void | Promise<void>>) {\n\t\t\t\tbeforeAll(h.beforeAll)\n\t\t\t\tafterEach(h.afterEach.matchPerTheme(themes))\n\t\t\t},\n\t\t},\n\t\tasync beforeAll(suite: { file: { filepath: string }; name: string }) {\n\t\t\treturn state.setupSuite(suite, options)\n\t\t},\n\t\tafterEach: {\n\t\t\tasync matchImageSnapshot() {\n\t\t\t\tif (!shouldTakeSnapshot()) return\n\t\t\t\t// console.debug('taking automatic snapshot', state.getName())\n\t\t\t\tconst r = await page.imageSnapshot()\n\t\t\t\texpect(r).toMatchImageSnapshot()\n\t\t\t},\n\t\t\tmatchPerTheme(themes: Record<string, () => Promise<void> | void>) {\n\t\t\t\treturn async function matchImageSnapshot() {\n\t\t\t\t\tif (!shouldTakeSnapshot()) return\n\t\t\t\t\tfor (const themeId in themes) {\n\t\t\t\t\t\tawait themes[themeId]()\n\t\t\t\t\t\t// console.debug('taking automatic snapshot', state.getName(), themeId)\n\t\t\t\t\t\tconst r = await page.imageSnapshot({\n\t\t\t\t\t\t\tcustomizeSnapshotId: (id) => `${id}-${themeId}`,\n\t\t\t\t\t\t})\n\t\t\t\t\t\tawait expect(r).toMatchImageSnapshot()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n\treturn h\n}\n"]}
1
+ {"version":3,"sources":["../src/client/expect/extend.ts","../src/vitest-setup.ts"],"names":[],"mappings":";;;;AAIA,MAAO,CAAA,MAAA,CAAO,EAAE,oBAAA,EAAsB,CAAA;;;ACCzB,IAAA,GAAA,GAAM,UAAU,QAAQ","file":"vitest-setup.js","sourcesContent":["import { expect } from 'vitest'\nimport './augment.ts'\nimport { toMatchImageSnapshot } from './to_match_image_snapshot.ts'\n\nexpect.extend({ toMatchImageSnapshot })\n","// `storybook-addon-vis/vitest-setup` provides code needed in `vitest.setup.ts`.\nimport { createVis } from 'vitest-plugin-vis/setup'\nimport { commands } from './client/@vitest/browser/context.ts'\nimport './client/expect/extend.ts'\n\nexport const vis = createVis(commands)\n"]}
package/manager.js CHANGED
@@ -1 +1 @@
1
- import '../../dist/manager'
1
+ import '../../dist/manager.js'
package/package.json CHANGED
@@ -1,17 +1,18 @@
1
1
  {
2
2
  "name": "storybook-addon-vis",
3
- "version": "0.13.0",
4
- "description": "Storybook Vitest Image Snapshot addon",
3
+ "version": "0.14.0",
4
+ "description": "Storybook Vitest visual testing addon",
5
5
  "keywords": [
6
6
  "image-snapshot",
7
7
  "storybook-addons",
8
8
  "vitest",
9
- "visual-test"
9
+ "visual-test",
10
+ "browser-mode"
10
11
  ],
11
12
  "repository": {
12
13
  "type": "git",
13
14
  "url": "https://github.com/repobuddy/storybook-image-snapshot",
14
- "directory": "packages/vis"
15
+ "directory": "packages/storybook-addon-vis"
15
16
  },
16
17
  "license": "MIT",
17
18
  "author": {
@@ -27,7 +28,10 @@
27
28
  "require": "./dist/index.cjs"
28
29
  },
29
30
  "./preset": "./dist/preset.cjs",
30
- "./vitest-setup": "./dist/vitest-setup.js",
31
+ "./vitest-setup": {
32
+ "types": "./dist/vitest-setup.d.ts",
33
+ "import": "./dist/vitest-setup.js"
34
+ },
31
35
  "./vitest-plugin": {
32
36
  "types": "./vitest-plugin.d.ts",
33
37
  "import": "./dist/vitest-plugin.js"
@@ -38,16 +42,19 @@
38
42
  "dist",
39
43
  "src",
40
44
  "*.js",
41
- "*.d.ts"
45
+ "*.d.ts",
46
+ "!**/*.{spec,test,unit,accept,integrate,system,perf,stress,stories,study}.*"
42
47
  ],
43
48
  "dependencies": {
44
49
  "dedent": "^1.5.1",
45
- "is-ci": "^3.0.1",
50
+ "is-ci": "^4.0.0",
46
51
  "mkdirp": "^3.0.1",
47
52
  "pathe": "^1.1.2",
48
53
  "pixelmatch": "^6.0.0",
54
+ "pngjs": "^7.0.0",
49
55
  "rimraf": "^6.0.1",
50
- "type-plus": "^8.0.0-beta.6"
56
+ "type-plus": "^8.0.0-beta.6",
57
+ "vitest-plugin-vis": "1.0.0"
51
58
  },
52
59
  "devDependencies": {
53
60
  "@storybook/addon-essentials": "^8.4.2",
@@ -61,18 +68,24 @@
61
68
  "@testing-library/react": "^16.0.1",
62
69
  "@types/is-ci": "^3.0.4",
63
70
  "@types/pixelmatch": "^5.2.6",
71
+ "@types/pngjs": "^6.0.5",
64
72
  "@types/react": "^18.2.65",
65
73
  "@types/react-dom": "^18.2.21",
66
74
  "@vitejs/plugin-react": "^4.2.1",
67
- "@vitest/browser": "^2.1.5",
68
- "@vitest/expect": "^2.1.5",
75
+ "@vitest/browser": "^2.1.8",
76
+ "@vitest/coverage-istanbul": "^2.1.8",
77
+ "@vitest/expect": "^2.1.8",
69
78
  "boxen": "^8.0.0",
79
+ "cross-env": "^7.0.3",
80
+ "npm-run-all2": "^7.0.2",
70
81
  "react": "^18.2.0",
71
82
  "react-dom": "^18.2.0",
72
83
  "storybook": "^8.4.2",
73
84
  "tsup": "^8.2.4",
74
- "typescript": "^5.5.4",
85
+ "typescript": "^5.7.2",
75
86
  "vite": "^5.3.5",
87
+ "vitest-browser-react": "^0.0.4",
88
+ "webdriverio": "^9.4.1",
76
89
  "zx": "^8.0.0"
77
90
  },
78
91
  "peerDependencies": {
@@ -87,7 +100,9 @@
87
100
  "bundler": {
88
101
  "exportEntries": [
89
102
  "src/index.ts",
90
- "src/vitest-setup.ts",
103
+ "src/vitest-setup.ts"
104
+ ],
105
+ "previewEntries": [
91
106
  "src/preview.ts"
92
107
  ],
93
108
  "nodeEntries": [
@@ -112,13 +127,20 @@
112
127
  "scripts": {
113
128
  "build": "tsup",
114
129
  "build:sb": "storybook build",
115
- "build:watch": "pnpm build --watch",
116
- "clean": "rimraf dist",
117
- "dev": "run-p build:watch \"sb --quiet\"",
130
+ "clean": "rimraf coverage dist esm *.tsbuildinfo vitest.*.timestamp*",
131
+ "cov": "vitest run --coverage",
132
+ "coverage": "vitest run --coverage",
133
+ "dev": "run-p build:watch w",
118
134
  "nuke": "rimraf node_modules",
119
135
  "prerelease": "zx scripts/prepublish-checks.js",
120
136
  "sb": "storybook dev -p 6006",
121
- "test": "vitest run --coverage",
122
- "w": "vitest"
137
+ "t:n": "vitest run -c vitest.config.node.ts",
138
+ "t:wb": "cross-env BROWSER=firefox BROWSERPROVIDER=webdriverio vitest run",
139
+ "test": "vitest run",
140
+ "test:type": "tsc --noEmit",
141
+ "v": "run-p build cov",
142
+ "w": "vitest",
143
+ "w:cov": "vitest --coverage",
144
+ "w:wb": "cross-env BROWSER=firefox BROWSERPROVIDER=webdriverio vitest"
123
145
  }
124
146
  }
package/preview.js CHANGED
@@ -1 +1 @@
1
- export * from './dist/preview'
1
+ export * from './dist/preview.js'