@storybook/addon-vitest 0.0.0-pr-32717-sha-f340a68b → 0.0.0-pr-32795-sha-f0ac445c
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.
- package/dist/_browser-chunks/chunk-ULSHVN74.js +60 -0
- package/dist/_node-chunks/chunk-3JME42XS.js +1697 -0
- package/dist/_node-chunks/chunk-3MTE45JW.js +339 -0
- package/dist/_node-chunks/chunk-CKQN7IR2.js +69 -0
- package/dist/_node-chunks/chunk-HCCHV65D.js +45 -0
- package/dist/_node-chunks/chunk-MQUBKGKA.js +35 -0
- package/dist/_node-chunks/{chunk-7ZCNTQXP.js → chunk-PI4OHO3O.js} +15 -24
- package/dist/_node-chunks/chunk-RIAV333R.js +83 -0
- package/dist/_node-chunks/chunk-SNWBLFHL.js +138 -0
- package/dist/index.js +1 -5
- package/dist/manager.js +163 -354
- package/dist/node/coverage-reporter.js +319 -864
- package/dist/node/vitest.js +190 -466
- package/dist/postinstall.js +633 -1276
- package/dist/preset.js +160 -354
- package/dist/vitest-plugin/global-setup.js +51 -105
- package/dist/vitest-plugin/index.js +1161 -2381
- package/dist/vitest-plugin/setup-file.js +6 -12
- package/dist/vitest-plugin/test-utils.js +31 -71
- package/package.json +7 -3
- package/dist/_browser-chunks/chunk-JK72E6FR.js +0 -6
- package/dist/_browser-chunks/chunk-RPDOPHZX.js +0 -77
- package/dist/_node-chunks/chunk-724JPUHM.js +0 -40
- package/dist/_node-chunks/chunk-A4VFZRVB.js +0 -502
- package/dist/_node-chunks/chunk-G6ASZ6US.js +0 -69
- package/dist/_node-chunks/chunk-K5BRNZW2.js +0 -50
- package/dist/_node-chunks/chunk-KHNVQCL7.js +0 -92
- package/dist/_node-chunks/chunk-MLM43G3E.js +0 -260
- package/dist/_node-chunks/chunk-NGOGIT42.js +0 -60
- package/dist/_node-chunks/chunk-TXTKPPIA.js +0 -247
package/dist/preset.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import CJS_COMPAT_NODE_URL_oycy7mg2pm from 'node:url';
|
|
2
|
+
import CJS_COMPAT_NODE_PATH_oycy7mg2pm from 'node:path';
|
|
3
|
+
import CJS_COMPAT_NODE_MODULE_oycy7mg2pm from "node:module";
|
|
4
4
|
|
|
5
|
-
var __filename =
|
|
6
|
-
var __dirname =
|
|
7
|
-
var require =
|
|
5
|
+
var __filename = CJS_COMPAT_NODE_URL_oycy7mg2pm.fileURLToPath(import.meta.url);
|
|
6
|
+
var __dirname = CJS_COMPAT_NODE_PATH_oycy7mg2pm.dirname(__filename);
|
|
7
|
+
var require = CJS_COMPAT_NODE_MODULE_oycy7mg2pm.createRequire(import.meta.url);
|
|
8
8
|
|
|
9
9
|
// ------------------------------------------------------------
|
|
10
10
|
// end of CJS compatibility banner, injected by Storybook's esbuild configuration
|
|
@@ -12,10 +12,11 @@ var require = CJS_COMPAT_NODE_MODULE_xvr6gehai1p.createRequire(import.meta.url);
|
|
|
12
12
|
import {
|
|
13
13
|
log,
|
|
14
14
|
noop
|
|
15
|
-
} from "./_node-chunks/chunk-
|
|
15
|
+
} from "./_node-chunks/chunk-MQUBKGKA.js";
|
|
16
16
|
import {
|
|
17
|
+
execaNode,
|
|
17
18
|
importMetaResolve
|
|
18
|
-
} from "./_node-chunks/chunk-
|
|
19
|
+
} from "./_node-chunks/chunk-3JME42XS.js";
|
|
19
20
|
import {
|
|
20
21
|
ADDON_ID,
|
|
21
22
|
COVERAGE_DIRECTORY,
|
|
@@ -24,20 +25,16 @@ import {
|
|
|
24
25
|
STORYBOOK_ADDON_TEST_CHANNEL,
|
|
25
26
|
TEST_PROVIDER_STORE_CHANNEL_EVENT_NAME,
|
|
26
27
|
storeOptions
|
|
27
|
-
} from "./_node-chunks/chunk-
|
|
28
|
+
} from "./_node-chunks/chunk-RIAV333R.js";
|
|
28
29
|
import {
|
|
29
30
|
require_picocolors
|
|
30
|
-
} from "./_node-chunks/chunk-
|
|
31
|
-
import {
|
|
32
|
-
require_dist
|
|
33
|
-
} from "./_node-chunks/chunk-G6ASZ6US.js";
|
|
31
|
+
} from "./_node-chunks/chunk-PI4OHO3O.js";
|
|
34
32
|
import {
|
|
35
33
|
normalize
|
|
36
|
-
} from "./_node-chunks/chunk-
|
|
34
|
+
} from "./_node-chunks/chunk-SNWBLFHL.js";
|
|
37
35
|
import {
|
|
38
|
-
__name,
|
|
39
36
|
__toESM
|
|
40
|
-
} from "./_node-chunks/chunk-
|
|
37
|
+
} from "./_node-chunks/chunk-HCCHV65D.js";
|
|
41
38
|
|
|
42
39
|
// src/preset.ts
|
|
43
40
|
import { mkdir } from "node:fs/promises";
|
|
@@ -55,172 +52,103 @@ import { cleanPaths, oneWayHash, sanitizeError, telemetry } from "storybook/inte
|
|
|
55
52
|
|
|
56
53
|
// ../../node_modules/es-toolkit/dist/predicate/isPlainObject.mjs
|
|
57
54
|
function isPlainObject(value) {
|
|
58
|
-
if (!value || typeof value
|
|
59
|
-
return
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const hasObjectPrototype = proto === null || proto === Object.prototype || Object.getPrototypeOf(proto) === null;
|
|
63
|
-
if (!hasObjectPrototype) {
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
return Object.prototype.toString.call(value) === "[object Object]";
|
|
55
|
+
if (!value || typeof value != "object")
|
|
56
|
+
return !1;
|
|
57
|
+
let proto = Object.getPrototypeOf(value);
|
|
58
|
+
return proto === null || proto === Object.prototype || Object.getPrototypeOf(proto) === null ? Object.prototype.toString.call(value) === "[object Object]" : !1;
|
|
67
59
|
}
|
|
68
|
-
__name(isPlainObject, "isPlainObject");
|
|
69
60
|
|
|
70
61
|
// ../../node_modules/es-toolkit/dist/compat/_internal/getSymbols.mjs
|
|
71
62
|
function getSymbols(object) {
|
|
72
63
|
return Object.getOwnPropertySymbols(object).filter((symbol) => Object.prototype.propertyIsEnumerable.call(object, symbol));
|
|
73
64
|
}
|
|
74
|
-
__name(getSymbols, "getSymbols");
|
|
75
65
|
|
|
76
66
|
// ../../node_modules/es-toolkit/dist/compat/_internal/getTag.mjs
|
|
77
67
|
function getTag(value) {
|
|
78
|
-
|
|
79
|
-
return value === void 0 ? "[object Undefined]" : "[object Null]";
|
|
80
|
-
}
|
|
81
|
-
return Object.prototype.toString.call(value);
|
|
68
|
+
return value == null ? value === void 0 ? "[object Undefined]" : "[object Null]" : Object.prototype.toString.call(value);
|
|
82
69
|
}
|
|
83
|
-
__name(getTag, "getTag");
|
|
84
70
|
|
|
85
71
|
// ../../node_modules/es-toolkit/dist/compat/_internal/tags.mjs
|
|
86
|
-
var regexpTag = "[object RegExp]";
|
|
87
|
-
var stringTag = "[object String]";
|
|
88
|
-
var numberTag = "[object Number]";
|
|
89
|
-
var booleanTag = "[object Boolean]";
|
|
90
|
-
var argumentsTag = "[object Arguments]";
|
|
91
|
-
var symbolTag = "[object Symbol]";
|
|
92
|
-
var dateTag = "[object Date]";
|
|
93
|
-
var mapTag = "[object Map]";
|
|
94
|
-
var setTag = "[object Set]";
|
|
95
|
-
var arrayTag = "[object Array]";
|
|
96
|
-
var functionTag = "[object Function]";
|
|
97
|
-
var arrayBufferTag = "[object ArrayBuffer]";
|
|
98
|
-
var objectTag = "[object Object]";
|
|
99
|
-
var errorTag = "[object Error]";
|
|
100
|
-
var dataViewTag = "[object DataView]";
|
|
101
|
-
var uint8ArrayTag = "[object Uint8Array]";
|
|
102
|
-
var uint8ClampedArrayTag = "[object Uint8ClampedArray]";
|
|
103
|
-
var uint16ArrayTag = "[object Uint16Array]";
|
|
104
|
-
var uint32ArrayTag = "[object Uint32Array]";
|
|
105
|
-
var bigUint64ArrayTag = "[object BigUint64Array]";
|
|
106
|
-
var int8ArrayTag = "[object Int8Array]";
|
|
107
|
-
var int16ArrayTag = "[object Int16Array]";
|
|
108
|
-
var int32ArrayTag = "[object Int32Array]";
|
|
109
|
-
var bigInt64ArrayTag = "[object BigInt64Array]";
|
|
110
|
-
var float32ArrayTag = "[object Float32Array]";
|
|
111
|
-
var float64ArrayTag = "[object Float64Array]";
|
|
72
|
+
var regexpTag = "[object RegExp]", stringTag = "[object String]", numberTag = "[object Number]", booleanTag = "[object Boolean]", argumentsTag = "[object Arguments]", symbolTag = "[object Symbol]", dateTag = "[object Date]", mapTag = "[object Map]", setTag = "[object Set]", arrayTag = "[object Array]", functionTag = "[object Function]", arrayBufferTag = "[object ArrayBuffer]", objectTag = "[object Object]", errorTag = "[object Error]", dataViewTag = "[object DataView]", uint8ArrayTag = "[object Uint8Array]", uint8ClampedArrayTag = "[object Uint8ClampedArray]", uint16ArrayTag = "[object Uint16Array]", uint32ArrayTag = "[object Uint32Array]", bigUint64ArrayTag = "[object BigUint64Array]", int8ArrayTag = "[object Int8Array]", int16ArrayTag = "[object Int16Array]", int32ArrayTag = "[object Int32Array]", bigInt64ArrayTag = "[object BigInt64Array]", float32ArrayTag = "[object Float32Array]", float64ArrayTag = "[object Float64Array]";
|
|
112
73
|
|
|
113
74
|
// ../../node_modules/es-toolkit/dist/compat/util/eq.mjs
|
|
114
75
|
function eq(value, other) {
|
|
115
76
|
return value === other || Number.isNaN(value) && Number.isNaN(other);
|
|
116
77
|
}
|
|
117
|
-
__name(eq, "eq");
|
|
118
78
|
|
|
119
79
|
// ../../node_modules/es-toolkit/dist/predicate/isEqualWith.mjs
|
|
120
80
|
function isEqualWith(a, b, areValuesEqual) {
|
|
121
81
|
return isEqualWithImpl(a, b, void 0, void 0, void 0, void 0, areValuesEqual);
|
|
122
82
|
}
|
|
123
|
-
__name(isEqualWith, "isEqualWith");
|
|
124
83
|
function isEqualWithImpl(a, b, property, aParent, bParent, stack, areValuesEqual) {
|
|
125
|
-
|
|
126
|
-
if (result !== void 0)
|
|
84
|
+
let result = areValuesEqual(a, b, property, aParent, bParent, stack);
|
|
85
|
+
if (result !== void 0)
|
|
127
86
|
return result;
|
|
128
|
-
|
|
129
|
-
if (typeof a === typeof b) {
|
|
87
|
+
if (typeof a == typeof b)
|
|
130
88
|
switch (typeof a) {
|
|
131
89
|
case "bigint":
|
|
132
90
|
case "string":
|
|
133
91
|
case "boolean":
|
|
134
92
|
case "symbol":
|
|
135
|
-
case "undefined":
|
|
93
|
+
case "undefined":
|
|
136
94
|
return a === b;
|
|
137
|
-
|
|
138
|
-
case "number": {
|
|
95
|
+
case "number":
|
|
139
96
|
return a === b || Object.is(a, b);
|
|
140
|
-
|
|
141
|
-
case "function": {
|
|
97
|
+
case "function":
|
|
142
98
|
return a === b;
|
|
143
|
-
|
|
144
|
-
case "object": {
|
|
99
|
+
case "object":
|
|
145
100
|
return areObjectsEqual(a, b, stack, areValuesEqual);
|
|
146
|
-
}
|
|
147
101
|
}
|
|
148
|
-
}
|
|
149
102
|
return areObjectsEqual(a, b, stack, areValuesEqual);
|
|
150
103
|
}
|
|
151
|
-
__name(isEqualWithImpl, "isEqualWithImpl");
|
|
152
104
|
function areObjectsEqual(a, b, stack, areValuesEqual) {
|
|
153
|
-
if (Object.is(a, b))
|
|
154
|
-
return
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
if (aTag === argumentsTag) {
|
|
159
|
-
aTag = objectTag;
|
|
160
|
-
}
|
|
161
|
-
if (bTag === argumentsTag) {
|
|
162
|
-
bTag = objectTag;
|
|
163
|
-
}
|
|
164
|
-
if (aTag !== bTag) {
|
|
165
|
-
return false;
|
|
166
|
-
}
|
|
105
|
+
if (Object.is(a, b))
|
|
106
|
+
return !0;
|
|
107
|
+
let aTag = getTag(a), bTag = getTag(b);
|
|
108
|
+
if (aTag === argumentsTag && (aTag = objectTag), bTag === argumentsTag && (bTag = objectTag), aTag !== bTag)
|
|
109
|
+
return !1;
|
|
167
110
|
switch (aTag) {
|
|
168
111
|
case stringTag:
|
|
169
112
|
return a.toString() === b.toString();
|
|
170
113
|
case numberTag: {
|
|
171
|
-
|
|
172
|
-
const y = b.valueOf();
|
|
114
|
+
let x = a.valueOf(), y = b.valueOf();
|
|
173
115
|
return eq(x, y);
|
|
174
116
|
}
|
|
175
117
|
case booleanTag:
|
|
176
118
|
case dateTag:
|
|
177
119
|
case symbolTag:
|
|
178
120
|
return Object.is(a.valueOf(), b.valueOf());
|
|
179
|
-
case regexpTag:
|
|
121
|
+
case regexpTag:
|
|
180
122
|
return a.source === b.source && a.flags === b.flags;
|
|
181
|
-
|
|
182
|
-
case functionTag: {
|
|
123
|
+
case functionTag:
|
|
183
124
|
return a === b;
|
|
184
|
-
}
|
|
185
125
|
}
|
|
186
126
|
stack = stack ?? /* @__PURE__ */ new Map();
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
if (aStack != null && bStack != null) {
|
|
127
|
+
let aStack = stack.get(a), bStack = stack.get(b);
|
|
128
|
+
if (aStack != null && bStack != null)
|
|
190
129
|
return aStack === b;
|
|
191
|
-
|
|
192
|
-
stack.set(a, b);
|
|
193
|
-
stack.set(b, a);
|
|
130
|
+
stack.set(a, b), stack.set(b, a);
|
|
194
131
|
try {
|
|
195
132
|
switch (aTag) {
|
|
196
133
|
case mapTag: {
|
|
197
|
-
if (a.size !== b.size)
|
|
198
|
-
return
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
return true;
|
|
134
|
+
if (a.size !== b.size)
|
|
135
|
+
return !1;
|
|
136
|
+
for (let [key, value] of a.entries())
|
|
137
|
+
if (!b.has(key) || !isEqualWithImpl(value, b.get(key), key, a, b, stack, areValuesEqual))
|
|
138
|
+
return !1;
|
|
139
|
+
return !0;
|
|
206
140
|
}
|
|
207
141
|
case setTag: {
|
|
208
|
-
if (a.size !== b.size)
|
|
209
|
-
return
|
|
210
|
-
|
|
211
|
-
const aValues = Array.from(a.values());
|
|
212
|
-
const bValues = Array.from(b.values());
|
|
142
|
+
if (a.size !== b.size)
|
|
143
|
+
return !1;
|
|
144
|
+
let aValues = Array.from(a.values()), bValues = Array.from(b.values());
|
|
213
145
|
for (let i = 0; i < aValues.length; i++) {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
return
|
|
217
|
-
});
|
|
218
|
-
if (index === -1) {
|
|
219
|
-
return false;
|
|
220
|
-
}
|
|
146
|
+
let aValue = aValues[i], index = bValues.findIndex((bValue) => isEqualWithImpl(aValue, bValue, void 0, a, b, stack, areValuesEqual));
|
|
147
|
+
if (index === -1)
|
|
148
|
+
return !1;
|
|
221
149
|
bValues.splice(index, 1);
|
|
222
150
|
}
|
|
223
|
-
return
|
|
151
|
+
return !0;
|
|
224
152
|
}
|
|
225
153
|
case arrayTag:
|
|
226
154
|
case uint8ArrayTag:
|
|
@@ -234,170 +162,106 @@ function areObjectsEqual(a, b, stack, areValuesEqual) {
|
|
|
234
162
|
case bigInt64ArrayTag:
|
|
235
163
|
case float32ArrayTag:
|
|
236
164
|
case float64ArrayTag: {
|
|
237
|
-
if (typeof Buffer
|
|
238
|
-
return
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
for (let i = 0; i < a.length; i++) {
|
|
244
|
-
if (!isEqualWithImpl(a[i], b[i], i, a, b, stack, areValuesEqual)) {
|
|
245
|
-
return false;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
return true;
|
|
249
|
-
}
|
|
250
|
-
case arrayBufferTag: {
|
|
251
|
-
if (a.byteLength !== b.byteLength) {
|
|
252
|
-
return false;
|
|
253
|
-
}
|
|
254
|
-
return areObjectsEqual(new Uint8Array(a), new Uint8Array(b), stack, areValuesEqual);
|
|
255
|
-
}
|
|
256
|
-
case dataViewTag: {
|
|
257
|
-
if (a.byteLength !== b.byteLength || a.byteOffset !== b.byteOffset) {
|
|
258
|
-
return false;
|
|
259
|
-
}
|
|
260
|
-
return areObjectsEqual(new Uint8Array(a), new Uint8Array(b), stack, areValuesEqual);
|
|
165
|
+
if (typeof Buffer < "u" && Buffer.isBuffer(a) !== Buffer.isBuffer(b) || a.length !== b.length)
|
|
166
|
+
return !1;
|
|
167
|
+
for (let i = 0; i < a.length; i++)
|
|
168
|
+
if (!isEqualWithImpl(a[i], b[i], i, a, b, stack, areValuesEqual))
|
|
169
|
+
return !1;
|
|
170
|
+
return !0;
|
|
261
171
|
}
|
|
262
|
-
case
|
|
172
|
+
case arrayBufferTag:
|
|
173
|
+
return a.byteLength !== b.byteLength ? !1 : areObjectsEqual(new Uint8Array(a), new Uint8Array(b), stack, areValuesEqual);
|
|
174
|
+
case dataViewTag:
|
|
175
|
+
return a.byteLength !== b.byteLength || a.byteOffset !== b.byteOffset ? !1 : areObjectsEqual(new Uint8Array(a), new Uint8Array(b), stack, areValuesEqual);
|
|
176
|
+
case errorTag:
|
|
263
177
|
return a.name === b.name && a.message === b.message;
|
|
264
|
-
}
|
|
265
178
|
case objectTag: {
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
const bKeys = [...Object.keys(b), ...getSymbols(b)];
|
|
272
|
-
if (aKeys.length !== bKeys.length) {
|
|
273
|
-
return false;
|
|
274
|
-
}
|
|
179
|
+
if (!(areObjectsEqual(a.constructor, b.constructor, stack, areValuesEqual) || isPlainObject(a) && isPlainObject(b)))
|
|
180
|
+
return !1;
|
|
181
|
+
let aKeys = [...Object.keys(a), ...getSymbols(a)], bKeys = [...Object.keys(b), ...getSymbols(b)];
|
|
182
|
+
if (aKeys.length !== bKeys.length)
|
|
183
|
+
return !1;
|
|
275
184
|
for (let i = 0; i < aKeys.length; i++) {
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
if (!isEqualWithImpl(aProp, bProp, propKey, a, b, stack, areValuesEqual)) {
|
|
283
|
-
return false;
|
|
284
|
-
}
|
|
185
|
+
let propKey = aKeys[i], aProp = a[propKey];
|
|
186
|
+
if (!Object.hasOwn(b, propKey))
|
|
187
|
+
return !1;
|
|
188
|
+
let bProp = b[propKey];
|
|
189
|
+
if (!isEqualWithImpl(aProp, bProp, propKey, a, b, stack, areValuesEqual))
|
|
190
|
+
return !1;
|
|
285
191
|
}
|
|
286
|
-
return
|
|
287
|
-
}
|
|
288
|
-
default: {
|
|
289
|
-
return false;
|
|
192
|
+
return !0;
|
|
290
193
|
}
|
|
194
|
+
default:
|
|
195
|
+
return !1;
|
|
291
196
|
}
|
|
292
197
|
} finally {
|
|
293
|
-
stack.delete(a);
|
|
294
|
-
stack.delete(b);
|
|
198
|
+
stack.delete(a), stack.delete(b);
|
|
295
199
|
}
|
|
296
200
|
}
|
|
297
|
-
__name(areObjectsEqual, "areObjectsEqual");
|
|
298
201
|
|
|
299
202
|
// ../../node_modules/es-toolkit/dist/predicate/isEqual.mjs
|
|
300
203
|
function isEqual(a, b) {
|
|
301
204
|
return isEqualWith(a, b, noop);
|
|
302
205
|
}
|
|
303
|
-
__name(isEqual, "isEqual");
|
|
304
206
|
|
|
305
207
|
// src/preset.ts
|
|
306
208
|
var import_picocolors = __toESM(require_picocolors(), 1);
|
|
307
|
-
|
|
209
|
+
import { dedent } from "ts-dedent";
|
|
308
210
|
|
|
309
211
|
// src/node/boot-test-runner.ts
|
|
310
212
|
import { fileURLToPath } from "node:url";
|
|
311
|
-
import { executeNodeCommand } from "storybook/internal/common";
|
|
312
213
|
import {
|
|
313
214
|
internal_universalStatusStore,
|
|
314
215
|
internal_universalTestProviderStore
|
|
315
216
|
} from "storybook/internal/core-server";
|
|
316
|
-
var MAX_START_TIME = 3e4
|
|
317
|
-
var vitestModulePath = fileURLToPath(importMetaResolve("@storybook/addon-vitest/vitest"));
|
|
318
|
-
var eventQueue = [];
|
|
319
|
-
var child;
|
|
320
|
-
var ready = false;
|
|
321
|
-
var unsubscribeStore;
|
|
322
|
-
var unsubscribeStatusStore;
|
|
323
|
-
var unsubscribeTestProviderStore;
|
|
324
|
-
var forwardUniversalStoreEvent = /* @__PURE__ */ __name((storeEventName) => (event, eventInfo) => {
|
|
217
|
+
var MAX_START_TIME = 3e4, vitestModulePath = fileURLToPath(importMetaResolve("@storybook/addon-vitest/vitest")), eventQueue = [], child, ready = !1, unsubscribeStore, unsubscribeStatusStore, unsubscribeTestProviderStore, forwardUniversalStoreEvent = (storeEventName) => (event, eventInfo) => {
|
|
325
218
|
child?.send({
|
|
326
219
|
type: storeEventName,
|
|
327
220
|
args: [{ event, eventInfo }],
|
|
328
221
|
from: "server"
|
|
329
222
|
});
|
|
330
|
-
},
|
|
331
|
-
var bootTestRunner = /* @__PURE__ */ __name(async ({
|
|
223
|
+
}, bootTestRunner = async ({
|
|
332
224
|
channel,
|
|
333
225
|
store,
|
|
334
226
|
options
|
|
335
227
|
}) => {
|
|
336
|
-
let stderr = []
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
unsubscribeStatusStore?.();
|
|
340
|
-
unsubscribeTestProviderStore?.();
|
|
341
|
-
child?.kill();
|
|
342
|
-
child = null;
|
|
343
|
-
}, "killChild");
|
|
228
|
+
let stderr = [], killChild = () => {
|
|
229
|
+
unsubscribeStore?.(), unsubscribeStatusStore?.(), unsubscribeTestProviderStore?.(), child?.kill(), child = null;
|
|
230
|
+
};
|
|
344
231
|
store.subscribe("FATAL_ERROR", killChild);
|
|
345
|
-
|
|
346
|
-
killChild();
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
STORYBOOK_CONFIG_DIR: normalize(options.configDir)
|
|
363
|
-
},
|
|
364
|
-
extendEnv: true
|
|
365
|
-
}
|
|
366
|
-
});
|
|
367
|
-
stderr = [];
|
|
368
|
-
child.stdout?.on("data", log);
|
|
369
|
-
child.stderr?.on("data", (data) => {
|
|
370
|
-
if (!data.toString().match(/^\u001B\[33m/)) {
|
|
371
|
-
log(data);
|
|
372
|
-
stderr.push(data.toString());
|
|
373
|
-
}
|
|
374
|
-
});
|
|
375
|
-
unsubscribeStore = store.subscribe(forwardUniversalStoreEvent(STORE_CHANNEL_EVENT_NAME));
|
|
376
|
-
unsubscribeStatusStore = internal_universalStatusStore.subscribe(
|
|
232
|
+
let exit = (code = 0) => {
|
|
233
|
+
killChild(), eventQueue.length = 0, process.exit(code);
|
|
234
|
+
};
|
|
235
|
+
process.on("exit", exit), process.on("SIGINT", () => exit(0)), process.on("SIGTERM", () => exit(0));
|
|
236
|
+
let startChildProcess = () => new Promise((resolve, reject) => {
|
|
237
|
+
child = execaNode(vitestModulePath, {
|
|
238
|
+
env: {
|
|
239
|
+
VITEST: "true",
|
|
240
|
+
TEST: "true",
|
|
241
|
+
VITEST_CHILD_PROCESS: "true",
|
|
242
|
+
NODE_ENV: process.env.NODE_ENV ?? "test",
|
|
243
|
+
STORYBOOK_CONFIG_DIR: normalize(options.configDir)
|
|
244
|
+
},
|
|
245
|
+
extendEnv: !0
|
|
246
|
+
}), stderr = [], child.stdout?.on("data", log), child.stderr?.on("data", (data) => {
|
|
247
|
+
data.toString().match(/^\u001B\[33m/) || (log(data), stderr.push(data.toString()));
|
|
248
|
+
}), unsubscribeStore = store.subscribe(forwardUniversalStoreEvent(STORE_CHANNEL_EVENT_NAME)), unsubscribeStatusStore = internal_universalStatusStore.subscribe(
|
|
377
249
|
forwardUniversalStoreEvent(STATUS_STORE_CHANNEL_EVENT_NAME)
|
|
378
|
-
)
|
|
379
|
-
unsubscribeTestProviderStore = internal_universalTestProviderStore.subscribe(
|
|
250
|
+
), unsubscribeTestProviderStore = internal_universalTestProviderStore.subscribe(
|
|
380
251
|
forwardUniversalStoreEvent(TEST_PROVIDER_STORE_CHANNEL_EVENT_NAME)
|
|
381
|
-
)
|
|
382
|
-
child.on("message", (event) => {
|
|
252
|
+
), child.on("message", (event) => {
|
|
383
253
|
if (event.type === "ready") {
|
|
384
|
-
|
|
385
|
-
|
|
254
|
+
for (; eventQueue.length; ) {
|
|
255
|
+
let { type, args } = eventQueue.shift();
|
|
386
256
|
child?.send({ type, args, from: "server" });
|
|
387
257
|
}
|
|
388
258
|
resolve();
|
|
389
|
-
} else
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
});
|
|
394
|
-
reject();
|
|
395
|
-
} else {
|
|
396
|
-
channel.emit(event.type, ...event.args);
|
|
397
|
-
}
|
|
259
|
+
} else event.type === "uncaught-error" ? (store.send({
|
|
260
|
+
type: "FATAL_ERROR",
|
|
261
|
+
payload: event.payload
|
|
262
|
+
}), reject()) : channel.emit(event.type, ...event.args);
|
|
398
263
|
});
|
|
399
|
-
}),
|
|
400
|
-
const timeout = new Promise(
|
|
264
|
+
}), timeout = new Promise(
|
|
401
265
|
(_, reject) => setTimeout(
|
|
402
266
|
reject,
|
|
403
267
|
MAX_START_TIME,
|
|
@@ -408,7 +272,7 @@ var bootTestRunner = /* @__PURE__ */ __name(async ({
|
|
|
408
272
|
)
|
|
409
273
|
);
|
|
410
274
|
await Promise.race([startChildProcess(), timeout]).catch((error) => {
|
|
411
|
-
store.send({
|
|
275
|
+
throw store.send({
|
|
412
276
|
type: "FATAL_ERROR",
|
|
413
277
|
payload: {
|
|
414
278
|
message: "Failed to start test runner process",
|
|
@@ -419,91 +283,65 @@ var bootTestRunner = /* @__PURE__ */ __name(async ({
|
|
|
419
283
|
cause: error.cause
|
|
420
284
|
}
|
|
421
285
|
}
|
|
422
|
-
});
|
|
423
|
-
eventQueue.length = 0;
|
|
424
|
-
throw error;
|
|
286
|
+
}), eventQueue.length = 0, error;
|
|
425
287
|
});
|
|
426
|
-
},
|
|
427
|
-
var runTestRunner = /* @__PURE__ */ __name(async ({
|
|
288
|
+
}, runTestRunner = async ({
|
|
428
289
|
channel,
|
|
429
290
|
store,
|
|
430
291
|
initEvent,
|
|
431
292
|
initArgs,
|
|
432
293
|
options
|
|
433
294
|
}) => {
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
}
|
|
437
|
-
if (!child) {
|
|
438
|
-
ready = false;
|
|
439
|
-
await bootTestRunner({ channel, store, options });
|
|
440
|
-
ready = true;
|
|
441
|
-
}
|
|
442
|
-
}, "runTestRunner");
|
|
295
|
+
!ready && initEvent && eventQueue.push({ type: initEvent, args: initArgs }), child || (ready = !1, await bootTestRunner({ channel, store, options }), ready = !0);
|
|
296
|
+
};
|
|
443
297
|
|
|
444
298
|
// src/preset.ts
|
|
445
|
-
var experimental_serverChannel =
|
|
446
|
-
|
|
447
|
-
const previewPath = loadPreviewOrConfigFile({ configDir: options.configDir });
|
|
448
|
-
const previewAnnotations = await options.presets.apply(
|
|
299
|
+
var experimental_serverChannel = async (channel, options) => {
|
|
300
|
+
let core = await options.presets.apply("core"), previewPath = loadPreviewOrConfigFile({ configDir: options.configDir }), previewAnnotations = await options.presets.apply(
|
|
449
301
|
"previewAnnotations",
|
|
450
302
|
[],
|
|
451
303
|
options
|
|
452
|
-
);
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
if (!resolvedPreviewBuilder?.includes("vite")) {
|
|
456
|
-
if (framework.includes("nextjs")) {
|
|
457
|
-
log(import_ts_dedent.dedent`
|
|
304
|
+
), resolvedPreviewBuilder = typeof core?.builder == "string" ? core.builder : core?.builder?.name, framework = await getFrameworkName(options);
|
|
305
|
+
if (!resolvedPreviewBuilder?.includes("vite"))
|
|
306
|
+
return framework.includes("nextjs") && log(dedent`
|
|
458
307
|
You're using ${framework}, which is a Webpack-based builder. In order to use Storybook Test, with your project, you need to use '@storybook/nextjs-vite', a high performance Vite-based equivalent.
|
|
459
308
|
|
|
460
309
|
Information on how to upgrade here: ${import_picocolors.default.yellow("https://storybook.js.org/docs/get-started/frameworks/nextjs?ref=upgrade#with-vite")}\n
|
|
461
|
-
`);
|
|
462
|
-
|
|
463
|
-
return channel;
|
|
464
|
-
}
|
|
465
|
-
const fsCache = createFileSystemCache({
|
|
310
|
+
`), channel;
|
|
311
|
+
let fsCache = createFileSystemCache({
|
|
466
312
|
basePath: resolvePathInStorybookCache(ADDON_ID.replace("/", "-")),
|
|
467
313
|
ns: "storybook",
|
|
468
|
-
ttl:
|
|
314
|
+
ttl: 336 * 60 * 60 * 1e3
|
|
469
315
|
// 14 days
|
|
470
|
-
})
|
|
471
|
-
const cachedState = await fsCache.get("state", {
|
|
316
|
+
}), cachedState = await fsCache.get("state", {
|
|
472
317
|
config: storeOptions.initialState.config
|
|
473
|
-
})
|
|
474
|
-
const selectCachedState = /* @__PURE__ */ __name((s) => ({
|
|
318
|
+
}), selectCachedState = (s) => ({
|
|
475
319
|
config: s.config
|
|
476
|
-
}),
|
|
477
|
-
const store = experimental_UniversalStore.create({
|
|
320
|
+
}), store = experimental_UniversalStore.create({
|
|
478
321
|
...storeOptions,
|
|
479
322
|
initialState: {
|
|
480
323
|
...storeOptions.initialState,
|
|
481
324
|
previewAnnotations: (previewAnnotations ?? []).concat(previewPath ?? []),
|
|
482
325
|
...selectCachedState(cachedState)
|
|
483
326
|
},
|
|
484
|
-
leader:
|
|
327
|
+
leader: !0
|
|
485
328
|
});
|
|
486
329
|
store.onStateChange((state, previousState) => {
|
|
487
|
-
|
|
488
|
-
fsCache.set("state", selectCachedState(state));
|
|
489
|
-
}
|
|
330
|
+
isEqual(selectCachedState(state), selectCachedState(previousState)) || fsCache.set("state", selectCachedState(state));
|
|
490
331
|
});
|
|
491
|
-
|
|
492
|
-
store.subscribe("TRIGGER_RUN", (event, eventInfo) => {
|
|
493
|
-
testProviderStore.setState("test-provider-state:running")
|
|
494
|
-
store.setState((s) => ({
|
|
332
|
+
let testProviderStore = experimental_getTestProviderStore(ADDON_ID);
|
|
333
|
+
if (store.subscribe("TRIGGER_RUN", (event, eventInfo) => {
|
|
334
|
+
testProviderStore.setState("test-provider-state:running"), store.setState((s) => ({
|
|
495
335
|
...s,
|
|
496
336
|
fatalError: void 0
|
|
497
|
-
}))
|
|
498
|
-
runTestRunner({
|
|
337
|
+
})), runTestRunner({
|
|
499
338
|
channel,
|
|
500
339
|
store,
|
|
501
340
|
initEvent: STORE_CHANNEL_EVENT_NAME,
|
|
502
341
|
initArgs: [{ event, eventInfo }],
|
|
503
342
|
options
|
|
504
343
|
});
|
|
505
|
-
})
|
|
506
|
-
store.subscribe("TOGGLE_WATCHING", (event, eventInfo) => {
|
|
344
|
+
}), store.subscribe("TOGGLE_WATCHING", (event, eventInfo) => {
|
|
507
345
|
store.setState((s) => ({
|
|
508
346
|
...s,
|
|
509
347
|
watching: event.payload.to,
|
|
@@ -514,57 +352,33 @@ var experimental_serverChannel = /* @__PURE__ */ __name(async (channel, options)
|
|
|
514
352
|
coverageSummary: void 0
|
|
515
353
|
}
|
|
516
354
|
}
|
|
517
|
-
}))
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
}
|
|
527
|
-
});
|
|
528
|
-
store.subscribe("FATAL_ERROR", (event) => {
|
|
529
|
-
const { message, error } = event.payload;
|
|
530
|
-
const name = error.name || "Error";
|
|
531
|
-
log(`${name}: ${message}`);
|
|
532
|
-
if (error.stack) {
|
|
533
|
-
log(error.stack);
|
|
534
|
-
}
|
|
355
|
+
})), event.payload.to && runTestRunner({
|
|
356
|
+
channel,
|
|
357
|
+
store,
|
|
358
|
+
initEvent: STORE_CHANNEL_EVENT_NAME,
|
|
359
|
+
initArgs: [{ event, eventInfo }],
|
|
360
|
+
options
|
|
361
|
+
});
|
|
362
|
+
}), store.subscribe("FATAL_ERROR", (event) => {
|
|
363
|
+
let { message, error } = event.payload, name = error.name || "Error";
|
|
364
|
+
log(`${name}: ${message}`), error.stack && log(error.stack);
|
|
535
365
|
function logErrorWithCauses(err) {
|
|
536
|
-
|
|
537
|
-
return;
|
|
538
|
-
}
|
|
539
|
-
log(`Caused by: ${err.name ?? "Error"}: ${err.message}`);
|
|
540
|
-
if (err.stack) {
|
|
541
|
-
log(err.stack);
|
|
542
|
-
}
|
|
543
|
-
if (err.cause) {
|
|
544
|
-
logErrorWithCauses(err.cause);
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
__name(logErrorWithCauses, "logErrorWithCauses");
|
|
548
|
-
if (error.cause) {
|
|
549
|
-
logErrorWithCauses(error.cause);
|
|
366
|
+
err && (log(`Caused by: ${err.name ?? "Error"}: ${err.message}`), err.stack && log(err.stack), err.cause && logErrorWithCauses(err.cause));
|
|
550
367
|
}
|
|
551
|
-
store.setState((s) => ({
|
|
368
|
+
error.cause && logErrorWithCauses(error.cause), store.setState((s) => ({
|
|
552
369
|
...s,
|
|
553
370
|
fatalError: {
|
|
554
371
|
message,
|
|
555
372
|
error
|
|
556
373
|
}
|
|
557
|
-
}));
|
|
558
|
-
|
|
559
|
-
});
|
|
560
|
-
testProviderStore.onClearAll(() => {
|
|
374
|
+
})), testProviderStore.setState("test-provider-state:crashed");
|
|
375
|
+
}), testProviderStore.onClearAll(() => {
|
|
561
376
|
store.setState((s) => ({
|
|
562
377
|
...s,
|
|
563
378
|
currentRun: { ...s.currentRun, coverageSummary: void 0, unhandledErrors: [] }
|
|
564
379
|
}));
|
|
565
|
-
})
|
|
566
|
-
|
|
567
|
-
const enableCrashReports = core.enableCrashReports || options.enableCrashReports;
|
|
380
|
+
}), !core.disableTelemetry) {
|
|
381
|
+
let enableCrashReports = core.enableCrashReports || options.enableCrashReports;
|
|
568
382
|
channel.on(STORYBOOK_ADDON_TEST_CHANNEL, (event) => {
|
|
569
383
|
telemetry("addon-test", {
|
|
570
384
|
...event,
|
|
@@ -573,50 +387,42 @@ var experimental_serverChannel = /* @__PURE__ */ __name(async (channel, options)
|
|
|
573
387
|
storyId: oneWayHash(event.payload.storyId)
|
|
574
388
|
}
|
|
575
389
|
});
|
|
576
|
-
})
|
|
577
|
-
store.subscribe("TOGGLE_WATCHING", async (event) => {
|
|
390
|
+
}), store.subscribe("TOGGLE_WATCHING", async (event) => {
|
|
578
391
|
await telemetry("addon-test", {
|
|
579
392
|
watchMode: event.payload.to
|
|
580
393
|
});
|
|
581
|
-
})
|
|
582
|
-
|
|
583
|
-
const { unhandledErrors, startedAt, finishedAt, ...currentRun } = event.payload;
|
|
394
|
+
}), store.subscribe("TEST_RUN_COMPLETED", async (event) => {
|
|
395
|
+
let { unhandledErrors, startedAt, finishedAt, ...currentRun } = event.payload;
|
|
584
396
|
await telemetry("addon-test", {
|
|
585
397
|
...currentRun,
|
|
586
398
|
duration: (finishedAt ?? 0) - (startedAt ?? 0),
|
|
587
399
|
unhandledErrorCount: unhandledErrors.length,
|
|
588
400
|
...enableCrashReports && unhandledErrors.length > 0 && {
|
|
589
401
|
unhandledErrors: unhandledErrors.map((error) => {
|
|
590
|
-
|
|
402
|
+
let { stacks, ...errorWithoutStacks } = error;
|
|
591
403
|
return sanitizeError(errorWithoutStacks);
|
|
592
404
|
})
|
|
593
405
|
}
|
|
594
406
|
});
|
|
595
|
-
})
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
await telemetry("addon-test", {
|
|
599
|
-
fatalError: cleanPaths(event.payload.error.message)
|
|
600
|
-
});
|
|
407
|
+
}), enableCrashReports && store.subscribe("FATAL_ERROR", async (event) => {
|
|
408
|
+
await telemetry("addon-test", {
|
|
409
|
+
fatalError: cleanPaths(event.payload.error.message)
|
|
601
410
|
});
|
|
602
|
-
}
|
|
411
|
+
});
|
|
603
412
|
}
|
|
604
413
|
return channel;
|
|
605
|
-
},
|
|
606
|
-
|
|
607
|
-
if (options.configType === "PRODUCTION") {
|
|
414
|
+
}, staticDirs = async (values = [], options) => {
|
|
415
|
+
if (options.configType === "PRODUCTION")
|
|
608
416
|
return values;
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
await mkdir(coverageDirectory, { recursive: true });
|
|
612
|
-
return [
|
|
417
|
+
let coverageDirectory = resolvePathInStorybookCache(COVERAGE_DIRECTORY);
|
|
418
|
+
return await mkdir(coverageDirectory, { recursive: !0 }), [
|
|
613
419
|
{
|
|
614
420
|
from: coverageDirectory,
|
|
615
421
|
to: "/coverage"
|
|
616
422
|
},
|
|
617
423
|
...values
|
|
618
424
|
];
|
|
619
|
-
}
|
|
425
|
+
};
|
|
620
426
|
export {
|
|
621
427
|
experimental_serverChannel,
|
|
622
428
|
staticDirs
|