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