@storybook/addon-vitest 9.2.0-alpha.3 → 10.0.0-beta.1

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 (42) hide show
  1. package/README.md +2 -0
  2. package/dist/_browser-chunks/chunk-JK72E6FR.js +6 -0
  3. package/dist/_browser-chunks/chunk-PMYV6BH2.js +76 -0
  4. package/dist/_node-chunks/chunk-2REKPEQ2.js +103 -0
  5. package/dist/_node-chunks/chunk-7BKJJYBS.js +295 -0
  6. package/dist/_node-chunks/chunk-HPGEHKZB.js +247 -0
  7. package/dist/_node-chunks/chunk-JXUNGTEW.js +50 -0
  8. package/dist/_node-chunks/chunk-MJQUUNLY.js +91 -0
  9. package/dist/_node-chunks/chunk-RCWLXKPJ.js +37 -0
  10. package/dist/_node-chunks/chunk-TL7KDPNQ.js +2264 -0
  11. package/dist/_node-chunks/chunk-ZY3KCBSS.js +481 -0
  12. package/dist/index.js +9 -6
  13. package/dist/manager.js +955 -8
  14. package/dist/node/coverage-reporter.js +1898 -4
  15. package/dist/node/vitest.js +871 -17
  16. package/dist/postinstall.js +2076 -88
  17. package/dist/preset.js +615 -35
  18. package/dist/vitest-plugin/global-setup.js +200 -6
  19. package/dist/vitest-plugin/index.js +3823 -43
  20. package/dist/vitest-plugin/setup-file.js +30 -8
  21. package/dist/vitest-plugin/test-utils.js +102 -8
  22. package/manager.js +1 -1
  23. package/package.json +27 -93
  24. package/preset.js +1 -1
  25. package/dist/chunk-55WZLVGN.mjs +0 -11
  26. package/dist/chunk-JKRQGT2U.mjs +0 -10
  27. package/dist/index.mjs +0 -5
  28. package/dist/node/coverage-reporter.d.ts +0 -184
  29. package/dist/node/coverage-reporter.mjs +0 -12
  30. package/dist/node/vitest.d.ts +0 -2
  31. package/dist/node/vitest.mjs +0 -19
  32. package/dist/vitest-plugin/global-setup.d.ts +0 -6
  33. package/dist/vitest-plugin/global-setup.mjs +0 -13
  34. package/dist/vitest-plugin/index.mjs +0 -28
  35. package/dist/vitest-plugin/setup-file.d.ts +0 -14
  36. package/dist/vitest-plugin/setup-file.mjs +0 -9
  37. package/dist/vitest-plugin/test-utils.d.ts +0 -20
  38. package/dist/vitest-plugin/test-utils.mjs +0 -8
  39. package/manager.mjs +0 -1
  40. package/postinstall.js +0 -1
  41. package/postinstall.mjs +0 -1
  42. package/preset.mjs +0 -1
package/README.md CHANGED
@@ -1,3 +1,5 @@
1
1
  # Storybook Addon Test
2
2
 
3
3
  Addon to integrate Vitest test results with Storybook.
4
+
5
+ Learn more about Storybook at [storybook.js.org](https://storybook.js.org/?ref=readme).
@@ -0,0 +1,6 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ export {
5
+ __name
6
+ };
@@ -0,0 +1,76 @@
1
+ // ../../core/src/component-testing/constants.ts
2
+ var ADDON_ID = "storybook/interactions";
3
+ var PANEL_ID = `${ADDON_ID}/panel`;
4
+ var DOCUMENTATION_LINK = "writing-tests/integrations/vitest-addon";
5
+ var DOCUMENTATION_DISCREPANCY_LINK = `${DOCUMENTATION_LINK}#what-happens-when-there-are-different-test-results-in-multiple-environments`;
6
+
7
+ // ../a11y/src/constants.ts
8
+ var ADDON_ID2 = "storybook/a11y";
9
+ var PANEL_ID2 = `${ADDON_ID2}/panel`;
10
+ var RESULT = `${ADDON_ID2}/result`;
11
+ var REQUEST = `${ADDON_ID2}/request`;
12
+ var RUNNING = `${ADDON_ID2}/running`;
13
+ var ERROR = `${ADDON_ID2}/error`;
14
+ var MANUAL = `${ADDON_ID2}/manual`;
15
+ var SELECT = `${ADDON_ID2}/select`;
16
+ var DOCUMENTATION_LINK2 = "writing-tests/accessibility-testing";
17
+ var DOCUMENTATION_DISCREPANCY_LINK2 = `${DOCUMENTATION_LINK2}#why-are-my-tests-failing-in-different-environments`;
18
+
19
+ // src/constants.ts
20
+ var ADDON_ID3 = "storybook/test";
21
+ var TEST_PROVIDER_ID = `${ADDON_ID3}/test-provider`;
22
+ var DOCUMENTATION_LINK3 = "writing-tests/integrations/vitest-addon";
23
+ var DOCUMENTATION_FATAL_ERROR_LINK = `${DOCUMENTATION_LINK3}#what-happens-if-vitest-itself-has-an-error`;
24
+ var storeOptions = {
25
+ id: ADDON_ID3,
26
+ initialState: {
27
+ config: {
28
+ coverage: false,
29
+ a11y: false
30
+ },
31
+ watching: false,
32
+ cancelling: false,
33
+ fatalError: void 0,
34
+ indexUrl: void 0,
35
+ previewAnnotations: [],
36
+ currentRun: {
37
+ triggeredBy: void 0,
38
+ config: {
39
+ coverage: false,
40
+ a11y: false
41
+ },
42
+ componentTestCount: {
43
+ success: 0,
44
+ error: 0
45
+ },
46
+ a11yCount: {
47
+ success: 0,
48
+ warning: 0,
49
+ error: 0
50
+ },
51
+ storyIds: void 0,
52
+ totalTestCount: void 0,
53
+ startedAt: void 0,
54
+ finishedAt: void 0,
55
+ unhandledErrors: [],
56
+ coverageSummary: void 0
57
+ }
58
+ }
59
+ };
60
+ var FULL_RUN_TRIGGERS = ["global", "run-all"];
61
+ var STORE_CHANNEL_EVENT_NAME = `UNIVERSAL_STORE:${storeOptions.id}`;
62
+ var STATUS_TYPE_ID_COMPONENT_TEST = "storybook/component-test";
63
+ var STATUS_TYPE_ID_A11Y = "storybook/a11y";
64
+
65
+ export {
66
+ PANEL_ID,
67
+ ADDON_ID2 as ADDON_ID,
68
+ PANEL_ID2,
69
+ ADDON_ID3 as ADDON_ID2,
70
+ TEST_PROVIDER_ID,
71
+ DOCUMENTATION_FATAL_ERROR_LINK,
72
+ storeOptions,
73
+ FULL_RUN_TRIGGERS,
74
+ STATUS_TYPE_ID_COMPONENT_TEST,
75
+ STATUS_TYPE_ID_A11Y
76
+ };
@@ -0,0 +1,103 @@
1
+ import CJS_COMPAT_NODE_URL_3fqiy48f2ku from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_3fqiy48f2ku from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_3fqiy48f2ku from "node:module";
4
+
5
+ var __filename = CJS_COMPAT_NODE_URL_3fqiy48f2ku.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_3fqiy48f2ku.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_3fqiy48f2ku.createRequire(import.meta.url);
8
+
9
+ // ------------------------------------------------------------
10
+ // end of CJS compatibility banner, injected by Storybook's esbuild configuration
11
+ // ------------------------------------------------------------
12
+
13
+ // ../../core/src/component-testing/constants.ts
14
+ var ADDON_ID = "storybook/interactions";
15
+ var PANEL_ID = `${ADDON_ID}/panel`;
16
+ var DOCUMENTATION_LINK = "writing-tests/integrations/vitest-addon";
17
+ var DOCUMENTATION_DISCREPANCY_LINK = `${DOCUMENTATION_LINK}#what-happens-when-there-are-different-test-results-in-multiple-environments`;
18
+
19
+ // ../a11y/src/constants.ts
20
+ var ADDON_ID2 = "storybook/a11y";
21
+ var PANEL_ID2 = `${ADDON_ID2}/panel`;
22
+ var RESULT = `${ADDON_ID2}/result`;
23
+ var REQUEST = `${ADDON_ID2}/request`;
24
+ var RUNNING = `${ADDON_ID2}/running`;
25
+ var ERROR = `${ADDON_ID2}/error`;
26
+ var MANUAL = `${ADDON_ID2}/manual`;
27
+ var SELECT = `${ADDON_ID2}/select`;
28
+ var DOCUMENTATION_LINK2 = "writing-tests/accessibility-testing";
29
+ var DOCUMENTATION_DISCREPANCY_LINK2 = `${DOCUMENTATION_LINK2}#why-are-my-tests-failing-in-different-environments`;
30
+
31
+ // src/constants.ts
32
+ var ADDON_ID3 = "storybook/test";
33
+ var TEST_PROVIDER_ID = `${ADDON_ID3}/test-provider`;
34
+ var STORYBOOK_ADDON_TEST_CHANNEL = "STORYBOOK_ADDON_TEST_CHANNEL";
35
+ var DOCUMENTATION_LINK3 = "writing-tests/integrations/vitest-addon";
36
+ var DOCUMENTATION_FATAL_ERROR_LINK = `${DOCUMENTATION_LINK3}#what-happens-if-vitest-itself-has-an-error`;
37
+ var COVERAGE_DIRECTORY = "coverage";
38
+ var SUPPORTED_FRAMEWORKS = [
39
+ "@storybook/nextjs",
40
+ "@storybook/nextjs-vite",
41
+ "@storybook/react-vite",
42
+ "@storybook/svelte-vite",
43
+ "@storybook/vue3-vite",
44
+ "@storybook/html-vite",
45
+ "@storybook/web-components-vite",
46
+ "@storybook/sveltekit",
47
+ "@storybook/react-native-web-vite"
48
+ ];
49
+ var storeOptions = {
50
+ id: ADDON_ID3,
51
+ initialState: {
52
+ config: {
53
+ coverage: false,
54
+ a11y: false
55
+ },
56
+ watching: false,
57
+ cancelling: false,
58
+ fatalError: void 0,
59
+ indexUrl: void 0,
60
+ previewAnnotations: [],
61
+ currentRun: {
62
+ triggeredBy: void 0,
63
+ config: {
64
+ coverage: false,
65
+ a11y: false
66
+ },
67
+ componentTestCount: {
68
+ success: 0,
69
+ error: 0
70
+ },
71
+ a11yCount: {
72
+ success: 0,
73
+ warning: 0,
74
+ error: 0
75
+ },
76
+ storyIds: void 0,
77
+ totalTestCount: void 0,
78
+ startedAt: void 0,
79
+ finishedAt: void 0,
80
+ unhandledErrors: [],
81
+ coverageSummary: void 0
82
+ }
83
+ }
84
+ };
85
+ var STORE_CHANNEL_EVENT_NAME = `UNIVERSAL_STORE:${storeOptions.id}`;
86
+ var STATUS_STORE_CHANNEL_EVENT_NAME = "UNIVERSAL_STORE:storybook/status";
87
+ var TEST_PROVIDER_STORE_CHANNEL_EVENT_NAME = "UNIVERSAL_STORE:storybook/test-provider";
88
+ var STATUS_TYPE_ID_COMPONENT_TEST = "storybook/component-test";
89
+ var STATUS_TYPE_ID_A11Y = "storybook/a11y";
90
+
91
+ export {
92
+ ADDON_ID3 as ADDON_ID,
93
+ STORYBOOK_ADDON_TEST_CHANNEL,
94
+ DOCUMENTATION_LINK3 as DOCUMENTATION_LINK,
95
+ COVERAGE_DIRECTORY,
96
+ SUPPORTED_FRAMEWORKS,
97
+ storeOptions,
98
+ STORE_CHANNEL_EVENT_NAME,
99
+ STATUS_STORE_CHANNEL_EVENT_NAME,
100
+ TEST_PROVIDER_STORE_CHANNEL_EVENT_NAME,
101
+ STATUS_TYPE_ID_COMPONENT_TEST,
102
+ STATUS_TYPE_ID_A11Y
103
+ };
@@ -0,0 +1,295 @@
1
+ import CJS_COMPAT_NODE_URL_3fqiy48f2ku from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_3fqiy48f2ku from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_3fqiy48f2ku from "node:module";
4
+
5
+ var __filename = CJS_COMPAT_NODE_URL_3fqiy48f2ku.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_3fqiy48f2ku.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_3fqiy48f2ku.createRequire(import.meta.url);
8
+
9
+ // ------------------------------------------------------------
10
+ // end of CJS compatibility banner, injected by Storybook's esbuild configuration
11
+ // ------------------------------------------------------------
12
+ import {
13
+ __name
14
+ } from "./chunk-JXUNGTEW.js";
15
+
16
+ // src/utils.ts
17
+ function getAddonNames(mainConfig) {
18
+ const addons = mainConfig.addons || [];
19
+ const addonList = addons.map((addon) => {
20
+ let name = "";
21
+ if (typeof addon === "string") {
22
+ name = addon;
23
+ } else if (typeof addon === "object") {
24
+ name = addon.name;
25
+ }
26
+ return name;
27
+ });
28
+ return addonList.filter((item) => item != null);
29
+ }
30
+ __name(getAddonNames, "getAddonNames");
31
+ function errorToErrorLike(error) {
32
+ return {
33
+ message: error.message,
34
+ name: error.name,
35
+ // avoid duplicating the error message in the stack trace
36
+ stack: error.stack?.replace(error.message, ""),
37
+ cause: error.cause && error.cause instanceof Error ? errorToErrorLike(error.cause) : void 0
38
+ };
39
+ }
40
+ __name(errorToErrorLike, "errorToErrorLike");
41
+
42
+ // ../../node_modules/find-up/index.js
43
+ import path2 from "node:path";
44
+
45
+ // ../../node_modules/locate-path/index.js
46
+ import process from "node:process";
47
+ import path from "node:path";
48
+ import fs, { promises as fsPromises } from "node:fs";
49
+ import { fileURLToPath } from "node:url";
50
+
51
+ // ../../node_modules/yocto-queue/index.js
52
+ var Node = class {
53
+ static {
54
+ __name(this, "Node");
55
+ }
56
+ value;
57
+ next;
58
+ constructor(value) {
59
+ this.value = value;
60
+ }
61
+ };
62
+ var Queue = class {
63
+ static {
64
+ __name(this, "Queue");
65
+ }
66
+ #head;
67
+ #tail;
68
+ #size;
69
+ constructor() {
70
+ this.clear();
71
+ }
72
+ enqueue(value) {
73
+ const node = new Node(value);
74
+ if (this.#head) {
75
+ this.#tail.next = node;
76
+ this.#tail = node;
77
+ } else {
78
+ this.#head = node;
79
+ this.#tail = node;
80
+ }
81
+ this.#size++;
82
+ }
83
+ dequeue() {
84
+ const current = this.#head;
85
+ if (!current) {
86
+ return;
87
+ }
88
+ this.#head = this.#head.next;
89
+ this.#size--;
90
+ return current.value;
91
+ }
92
+ peek() {
93
+ if (!this.#head) {
94
+ return;
95
+ }
96
+ return this.#head.value;
97
+ }
98
+ clear() {
99
+ this.#head = void 0;
100
+ this.#tail = void 0;
101
+ this.#size = 0;
102
+ }
103
+ get size() {
104
+ return this.#size;
105
+ }
106
+ *[Symbol.iterator]() {
107
+ let current = this.#head;
108
+ while (current) {
109
+ yield current.value;
110
+ current = current.next;
111
+ }
112
+ }
113
+ *drain() {
114
+ while (this.#head) {
115
+ yield this.dequeue();
116
+ }
117
+ }
118
+ };
119
+
120
+ // ../../node_modules/locate-path/node_modules/p-limit/index.js
121
+ function pLimit(concurrency) {
122
+ if (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {
123
+ throw new TypeError("Expected `concurrency` to be a number from 1 and up");
124
+ }
125
+ const queue = new Queue();
126
+ let activeCount = 0;
127
+ const next = /* @__PURE__ */ __name(() => {
128
+ activeCount--;
129
+ if (queue.size > 0) {
130
+ queue.dequeue()();
131
+ }
132
+ }, "next");
133
+ const run = /* @__PURE__ */ __name(async (fn, resolve, args) => {
134
+ activeCount++;
135
+ const result = (async () => fn(...args))();
136
+ resolve(result);
137
+ try {
138
+ await result;
139
+ } catch {
140
+ }
141
+ next();
142
+ }, "run");
143
+ const enqueue = /* @__PURE__ */ __name((fn, resolve, args) => {
144
+ queue.enqueue(run.bind(void 0, fn, resolve, args));
145
+ (async () => {
146
+ await Promise.resolve();
147
+ if (activeCount < concurrency && queue.size > 0) {
148
+ queue.dequeue()();
149
+ }
150
+ })();
151
+ }, "enqueue");
152
+ const generator = /* @__PURE__ */ __name((fn, ...args) => new Promise((resolve) => {
153
+ enqueue(fn, resolve, args);
154
+ }), "generator");
155
+ Object.defineProperties(generator, {
156
+ activeCount: {
157
+ get: /* @__PURE__ */ __name(() => activeCount, "get")
158
+ },
159
+ pendingCount: {
160
+ get: /* @__PURE__ */ __name(() => queue.size, "get")
161
+ },
162
+ clearQueue: {
163
+ value: /* @__PURE__ */ __name(() => {
164
+ queue.clear();
165
+ }, "value")
166
+ }
167
+ });
168
+ return generator;
169
+ }
170
+ __name(pLimit, "pLimit");
171
+
172
+ // ../../node_modules/locate-path/node_modules/p-locate/index.js
173
+ var EndError = class extends Error {
174
+ static {
175
+ __name(this, "EndError");
176
+ }
177
+ constructor(value) {
178
+ super();
179
+ this.value = value;
180
+ }
181
+ };
182
+ var testElement = /* @__PURE__ */ __name(async (element, tester) => tester(await element), "testElement");
183
+ var finder = /* @__PURE__ */ __name(async (element) => {
184
+ const values = await Promise.all(element);
185
+ if (values[1] === true) {
186
+ throw new EndError(values[0]);
187
+ }
188
+ return false;
189
+ }, "finder");
190
+ async function pLocate(iterable, tester, {
191
+ concurrency = Number.POSITIVE_INFINITY,
192
+ preserveOrder = true
193
+ } = {}) {
194
+ const limit = pLimit(concurrency);
195
+ const items = [...iterable].map((element) => [element, limit(testElement, element, tester)]);
196
+ const checkLimit = pLimit(preserveOrder ? 1 : Number.POSITIVE_INFINITY);
197
+ try {
198
+ await Promise.all(items.map((element) => checkLimit(finder, element)));
199
+ } catch (error) {
200
+ if (error instanceof EndError) {
201
+ return error.value;
202
+ }
203
+ throw error;
204
+ }
205
+ }
206
+ __name(pLocate, "pLocate");
207
+
208
+ // ../../node_modules/locate-path/index.js
209
+ var typeMappings = {
210
+ directory: "isDirectory",
211
+ file: "isFile"
212
+ };
213
+ function checkType(type) {
214
+ if (Object.hasOwnProperty.call(typeMappings, type)) {
215
+ return;
216
+ }
217
+ throw new Error(`Invalid type specified: ${type}`);
218
+ }
219
+ __name(checkType, "checkType");
220
+ var matchType = /* @__PURE__ */ __name((type, stat) => stat[typeMappings[type]](), "matchType");
221
+ var toPath = /* @__PURE__ */ __name((urlOrPath) => urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath, "toPath");
222
+ async function locatePath(paths, {
223
+ cwd = process.cwd(),
224
+ type = "file",
225
+ allowSymlinks = true,
226
+ concurrency,
227
+ preserveOrder
228
+ } = {}) {
229
+ checkType(type);
230
+ cwd = toPath(cwd);
231
+ const statFunction = allowSymlinks ? fsPromises.stat : fsPromises.lstat;
232
+ return pLocate(paths, async (path_) => {
233
+ try {
234
+ const stat = await statFunction(path.resolve(cwd, path_));
235
+ return matchType(type, stat);
236
+ } catch {
237
+ return false;
238
+ }
239
+ }, { concurrency, preserveOrder });
240
+ }
241
+ __name(locatePath, "locatePath");
242
+
243
+ // ../../node_modules/find-up/node_modules/unicorn-magic/node.js
244
+ import { fileURLToPath as fileURLToPath2 } from "node:url";
245
+ function toPath2(urlOrPath) {
246
+ return urlOrPath instanceof URL ? fileURLToPath2(urlOrPath) : urlOrPath;
247
+ }
248
+ __name(toPath2, "toPath");
249
+
250
+ // ../../node_modules/find-up/index.js
251
+ var findUpStop = Symbol("findUpStop");
252
+ async function findUpMultiple(name, options = {}) {
253
+ let directory = path2.resolve(toPath2(options.cwd) ?? "");
254
+ const { root } = path2.parse(directory);
255
+ const stopAt = path2.resolve(directory, toPath2(options.stopAt ?? root));
256
+ const limit = options.limit ?? Number.POSITIVE_INFINITY;
257
+ const paths = [name].flat();
258
+ const runMatcher = /* @__PURE__ */ __name(async (locateOptions) => {
259
+ if (typeof name !== "function") {
260
+ return locatePath(paths, locateOptions);
261
+ }
262
+ const foundPath = await name(locateOptions.cwd);
263
+ if (typeof foundPath === "string") {
264
+ return locatePath([foundPath], locateOptions);
265
+ }
266
+ return foundPath;
267
+ }, "runMatcher");
268
+ const matches = [];
269
+ while (true) {
270
+ const foundPath = await runMatcher({ ...options, cwd: directory });
271
+ if (foundPath === findUpStop) {
272
+ break;
273
+ }
274
+ if (foundPath) {
275
+ matches.push(path2.resolve(directory, foundPath));
276
+ }
277
+ if (directory === stopAt || matches.length >= limit) {
278
+ break;
279
+ }
280
+ directory = path2.dirname(directory);
281
+ }
282
+ return matches;
283
+ }
284
+ __name(findUpMultiple, "findUpMultiple");
285
+ async function findUp(name, options = {}) {
286
+ const matches = await findUpMultiple(name, { ...options, limit: 1 });
287
+ return matches[0];
288
+ }
289
+ __name(findUp, "findUp");
290
+
291
+ export {
292
+ getAddonNames,
293
+ errorToErrorLike,
294
+ findUp
295
+ };