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