tuffgal 0.2.0-alpha.8 → 0.2.2-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -1
- package/dist/config.d.ts +23 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +16 -0
- package/dist/config.js.map +1 -1
- package/dist/runner/breakpointPasses.d.ts +1 -17
- package/dist/runner/breakpointPasses.d.ts.map +1 -1
- package/dist/runner/breakpointPasses.js +0 -27
- package/dist/runner/breakpointPasses.js.map +1 -1
- package/dist/runner/drain.d.ts +17 -0
- package/dist/runner/drain.d.ts.map +1 -0
- package/dist/runner/{scheduler.js → drain.js} +17 -71
- package/dist/runner/drain.js.map +1 -0
- package/dist/runner/run.d.ts +10 -0
- package/dist/runner/run.d.ts.map +1 -1
- package/dist/runner/run.js +25 -12
- package/dist/runner/run.js.map +1 -1
- package/dist/runner/runStory.d.ts +7 -9
- package/dist/runner/runStory.d.ts.map +1 -1
- package/dist/runner/runStory.js +27 -9
- package/dist/runner/runStory.js.map +1 -1
- package/dist/runner/schedule.d.ts +22 -0
- package/dist/runner/schedule.d.ts.map +1 -0
- package/dist/runner/schedule.js +91 -0
- package/dist/runner/schedule.js.map +1 -0
- package/dist/schema/story.d.ts +6 -1
- package/dist/schema/story.d.ts.map +1 -1
- package/dist/schema/story.js +6 -1
- package/dist/schema/story.js.map +1 -1
- package/package.json +1 -1
- package/dist/runner/scheduler.d.ts +0 -44
- package/dist/runner/scheduler.d.ts.map +0 -1
- package/dist/runner/scheduler.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,27 @@ this project uses [Pride Versioning](https://pridever.org) → `PROUD.DEFAULT.SH
|
|
|
8
8
|
|
|
9
9
|
_Nothing just yet_
|
|
10
10
|
|
|
11
|
+
## [0.2.2-alpha.1] – 2026-09-01
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
`browserArgs` config option; extra command-line flags are now passed
|
|
16
|
+
directly through to `chromium.launch()`.
|
|
17
|
+
|
|
18
|
+
The motivating case is `--force-color-profile=srgb` because without it
|
|
19
|
+
Chromium renders through whatever ICC profile the host OS reports, and a
|
|
20
|
+
laptop and CI container can shift baseline pixels for a reason that has
|
|
21
|
+
nothing to do with what's being tested.
|
|
22
|
+
|
|
23
|
+
If you omit the field, nothing changes from before.
|
|
24
|
+
|
|
25
|
+
## [0.2.1-alpha.1] – 2026-08-27
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
|
|
29
|
+
- A `needs` label that no story `produces` fails the run when declared in
|
|
30
|
+
`seededLabels` and `<paths.authState>/<label>.json` is on disk
|
|
31
|
+
|
|
11
32
|
## [0.2.0-alpha.8] – 2026-08-20
|
|
12
33
|
|
|
13
34
|
### Added
|
|
@@ -342,7 +363,9 @@ styling or interactivity.
|
|
|
342
363
|
Initial public alpha. Tuffgal extracted from [Linklater](https://github.com/nschneble/linklater)'s
|
|
343
364
|
in-tree visual testing workspace.
|
|
344
365
|
|
|
345
|
-
[Unreleased]: https://github.com/nschneble/tuffgal/compare/v0.2.
|
|
366
|
+
[Unreleased]: https://github.com/nschneble/tuffgal/compare/v0.2.2-alpha.1...HEAD
|
|
367
|
+
[0.2.2-alpha.1]: https://github.com/nschneble/tuffgal/releases/tag/v0.2.2-alpha.1
|
|
368
|
+
[0.2.1-alpha.1]: https://github.com/nschneble/tuffgal/releases/tag/v0.2.1-alpha.1
|
|
346
369
|
[0.2.0-alpha.8]: https://github.com/nschneble/tuffgal/releases/tag/v0.2.0-alpha.8
|
|
347
370
|
[0.2.0-alpha.7]: https://github.com/nschneble/tuffgal/releases/tag/v0.2.0-alpha.7
|
|
348
371
|
[0.2.0-alpha.6]: https://github.com/nschneble/tuffgal/releases/tag/v0.2.0-alpha.6
|
package/dist/config.d.ts
CHANGED
|
@@ -169,6 +169,15 @@ export interface TuffgalConfig {
|
|
|
169
169
|
* state.
|
|
170
170
|
*/
|
|
171
171
|
storageStatePins?: string[];
|
|
172
|
+
/**
|
|
173
|
+
* Labels this project seeds itself, by writing
|
|
174
|
+
* `<paths.authState>/<label>.json` before the run starts. A `needs` label no
|
|
175
|
+
* story `produces` is admitted only when it is listed here AND its file is on
|
|
176
|
+
* disk, so a file left behind by a renamed or deleted producer story cannot
|
|
177
|
+
* quietly stand in for the producer it lost. Declaring a label does not seed
|
|
178
|
+
* it; Tuffgal never runs your seeding script.
|
|
179
|
+
*/
|
|
180
|
+
seededLabels?: string[];
|
|
172
181
|
/**
|
|
173
182
|
* Breakpoint modes this project runs, drawn from the built-in
|
|
174
183
|
* {@link BREAKPOINTS} registry (`mobile` | `tablet` | `laptop` | `desktop`).
|
|
@@ -192,6 +201,16 @@ export interface TuffgalConfig {
|
|
|
192
201
|
* Playwright's own default, which is `light`. See {@link ColorScheme}.
|
|
193
202
|
*/
|
|
194
203
|
colorScheme?: ColorScheme;
|
|
204
|
+
/**
|
|
205
|
+
* Extra command-line flags for `chromium.launch()`, passed through
|
|
206
|
+
* unchanged. Use for a flag a project needs deterministic rendering on —
|
|
207
|
+
* `--force-color-profile=srgb` is the motivating case: without it, Chromium
|
|
208
|
+
* renders through whatever ICC profile the host OS reports, and a laptop's
|
|
209
|
+
* profile and a CI container's default diverge, shifting baseline pixels
|
|
210
|
+
* for a reason that has nothing to do with the page under test. Defaults
|
|
211
|
+
* to none.
|
|
212
|
+
*/
|
|
213
|
+
browserArgs?: string[];
|
|
195
214
|
/**
|
|
196
215
|
* Safety cap on a `fullPage` capture's total area, in pixels (width ×
|
|
197
216
|
* height). A `fullPage` shot composites the whole scrollable document, so an
|
|
@@ -246,6 +265,8 @@ export interface ResolvedConfig {
|
|
|
246
265
|
baseUrl: string;
|
|
247
266
|
apiHost: string | undefined;
|
|
248
267
|
storageStatePins: string[];
|
|
268
|
+
/** Labels the project declares it seeds itself; defaults to empty. */
|
|
269
|
+
seededLabels: string[];
|
|
249
270
|
/**
|
|
250
271
|
* Resolved breakpoint modes, always non-empty. Each entry carries the
|
|
251
272
|
* viewport dimensions to render at. Built from `config.breakpoints` when set,
|
|
@@ -258,6 +279,8 @@ export interface ResolvedConfig {
|
|
|
258
279
|
captureMode: CaptureMode;
|
|
259
280
|
/** Pinned colour scheme, or `undefined` for Playwright's `light` default. */
|
|
260
281
|
colorScheme: ColorScheme | undefined;
|
|
282
|
+
/** Extra `chromium.launch()` flags; defaults to empty. */
|
|
283
|
+
browserArgs: string[];
|
|
261
284
|
/** Resolved full-page area cap in pixels; defaults to 30_000_000. */
|
|
262
285
|
maxFullPagePixels: number;
|
|
263
286
|
defaultTimeoutMs: number;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -130,6 +130,20 @@ export function assertValidConfig(input, source) {
|
|
|
130
130
|
fail(`\`${key}\` must be a string when provided.`);
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
|
+
if (config.seededLabels !== undefined) {
|
|
134
|
+
const labels = config.seededLabels;
|
|
135
|
+
if (!Array.isArray(labels) ||
|
|
136
|
+
labels.some((label) => typeof label !== 'string' || label.length === 0)) {
|
|
137
|
+
fail('`seededLabels` must be an array of non-empty strings when provided.');
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (config.browserArgs !== undefined) {
|
|
141
|
+
const args = config.browserArgs;
|
|
142
|
+
if (!Array.isArray(args) ||
|
|
143
|
+
args.some((arg) => typeof arg !== 'string' || arg.length === 0)) {
|
|
144
|
+
fail('`browserArgs` must be an array of non-empty strings when provided.');
|
|
145
|
+
}
|
|
146
|
+
}
|
|
133
147
|
if (config.interactiveMode !== undefined &&
|
|
134
148
|
typeof config.interactiveMode !== 'boolean') {
|
|
135
149
|
fail('`interactiveMode` must be a boolean when provided.');
|
|
@@ -185,9 +199,11 @@ function resolveConfig(input, rootDir) {
|
|
|
185
199
|
baseUrl: input.baseUrl,
|
|
186
200
|
apiHost: input.apiHost,
|
|
187
201
|
storageStatePins: input.storageStatePins ?? [],
|
|
202
|
+
seededLabels: input.seededLabels ?? [],
|
|
188
203
|
breakpoints,
|
|
189
204
|
captureMode: input.captureMode ?? DEFAULTS.captureMode,
|
|
190
205
|
colorScheme: input.colorScheme,
|
|
206
|
+
browserArgs: input.browserArgs ?? [],
|
|
191
207
|
maxFullPagePixels: input.maxFullPagePixels ?? DEFAULTS.maxFullPagePixels,
|
|
192
208
|
defaultTimeoutMs: input.defaultTimeoutMs ?? DEFAULTS.defaultTimeoutMs,
|
|
193
209
|
navigationTimeoutMs: input.navigationTimeoutMs ?? DEFAULTS.navigationTimeoutMs,
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAgD1C;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IACnC,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IACpC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IACpC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;CAC7B,CAAC;AAeX,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAU,CAAC;AAYzE,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAQ,aAAoC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,yBAAyB,CACvC,WAAoC;IAEpC,OAAO,WAAW,KAAK,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;AACjE,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ResolvedBreakpoint, ResolvedConfig } from '../config.ts';
|
|
2
2
|
import type { StoryResult } from '../schema/result.ts';
|
|
3
|
-
import type { ScheduledStory } from './
|
|
3
|
+
import type { ScheduledStory } from './schedule.ts';
|
|
4
4
|
/**
|
|
5
5
|
* True when `item` renders at `breakpoint`, i.e. its resolved run set (its own
|
|
6
6
|
* `breakpoints` override, else the project default) contains a breakpoint with
|
|
@@ -17,22 +17,6 @@ export declare function storyRendersAt(item: ScheduledStory, config: ResolvedCon
|
|
|
17
17
|
* breakpoints that only per-story overrides introduce. Deduped by name+dims.
|
|
18
18
|
*/
|
|
19
19
|
export declare function resolveBreakpointPasses(stories: ScheduledStory[], config: ResolvedConfig): ResolvedBreakpoint[];
|
|
20
|
-
/**
|
|
21
|
-
* Splits a pass's stories into the two need-sets the run consumes separately,
|
|
22
|
-
* because the SCHEDULER and the AUTH loader have opposite requirements:
|
|
23
|
-
*
|
|
24
|
-
* - `needs` (SCHEDULER-facing) is stripped to only labels whose producer also
|
|
25
|
-
* runs THIS pass. A need whose producer renders at a different breakpoint
|
|
26
|
-
* would otherwise never clear and deadlock the drain.
|
|
27
|
-
* - `authNeeds` (AUTH-facing) retains the story's ORIGINAL full needs, so
|
|
28
|
-
* `resolveStorageStateForNeeds` still loads the auth state a
|
|
29
|
-
* differently-breakpointed producer persisted to disk in its own pass. That
|
|
30
|
-
* off-disk state is what actually satisfies the dependency; stripping this
|
|
31
|
-
* set too would silently render the consumer LOGGED-OUT.
|
|
32
|
-
*
|
|
33
|
-
* `produces` is left intact so failure cascades still propagate within the pass.
|
|
34
|
-
*/
|
|
35
|
-
export declare function adaptNeedsForPass(participating: ScheduledStory[]): ScheduledStory[];
|
|
36
20
|
/**
|
|
37
21
|
* Folds one story's per-pass results back into the single `StoryResult` the
|
|
38
22
|
* report expects. Each part is the same story at one breakpoint; their actions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breakpointPasses.d.ts","sourceRoot":"","sources":["../../src/runner/breakpointPasses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"breakpointPasses.d.ts","sourceRoot":"","sources":["../../src/runner/breakpointPasses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAYpD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,kBAAkB,GAC7B,OAAO,CAGT;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,cAAc,EAAE,EACzB,MAAM,EAAE,cAAc,GACrB,kBAAkB,EAAE,CActB;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,WAAW,CA6BnE"}
|
|
@@ -43,33 +43,6 @@ export function resolveBreakpointPasses(stories, config) {
|
|
|
43
43
|
}
|
|
44
44
|
return passes;
|
|
45
45
|
}
|
|
46
|
-
/**
|
|
47
|
-
* Splits a pass's stories into the two need-sets the run consumes separately,
|
|
48
|
-
* because the SCHEDULER and the AUTH loader have opposite requirements:
|
|
49
|
-
*
|
|
50
|
-
* - `needs` (SCHEDULER-facing) is stripped to only labels whose producer also
|
|
51
|
-
* runs THIS pass. A need whose producer renders at a different breakpoint
|
|
52
|
-
* would otherwise never clear and deadlock the drain.
|
|
53
|
-
* - `authNeeds` (AUTH-facing) retains the story's ORIGINAL full needs, so
|
|
54
|
-
* `resolveStorageStateForNeeds` still loads the auth state a
|
|
55
|
-
* differently-breakpointed producer persisted to disk in its own pass. That
|
|
56
|
-
* off-disk state is what actually satisfies the dependency; stripping this
|
|
57
|
-
* set too would silently render the consumer LOGGED-OUT.
|
|
58
|
-
*
|
|
59
|
-
* `produces` is left intact so failure cascades still propagate within the pass.
|
|
60
|
-
*/
|
|
61
|
-
export function adaptNeedsForPass(participating) {
|
|
62
|
-
const producesInPass = new Set();
|
|
63
|
-
for (const item of participating) {
|
|
64
|
-
for (const label of item.produces)
|
|
65
|
-
producesInPass.add(label);
|
|
66
|
-
}
|
|
67
|
-
return participating.map((item) => ({
|
|
68
|
-
...item,
|
|
69
|
-
needs: item.needs.filter((label) => producesInPass.has(label)),
|
|
70
|
-
authNeeds: item.needs,
|
|
71
|
-
}));
|
|
72
|
-
}
|
|
73
46
|
/**
|
|
74
47
|
* Folds one story's per-pass results back into the single `StoryResult` the
|
|
75
48
|
* report expects. Each part is the same story at one breakpoint; their actions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breakpointPasses.js","sourceRoot":"","sources":["../../src/runner/breakpointPasses.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEhE;;;;GAIG;AACH,SAAS,OAAO,CAAC,UAA8B;IAC7C,OAAO,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAoB,EACpB,MAAsB,EACtB,UAA8B;IAE9B,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAyB,EACzB,MAAsB;IAEtB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAyB,EAAE,CAAC;IACxC,MAAM,GAAG,GAAG,CAAC,EAAsB,EAAQ,EAAE;QAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,WAAW;QAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,KAAK,MAAM,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;YAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"breakpointPasses.js","sourceRoot":"","sources":["../../src/runner/breakpointPasses.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { StoryResult } from '../schema/result.ts';
|
|
2
|
+
import { type ScheduledStory } from './schedule.ts';
|
|
3
|
+
export type StoryRunner = (scheduled: ScheduledStory) => Promise<StoryResult>;
|
|
4
|
+
/** The labels the given stories produce, scoped to the list passed in. */
|
|
5
|
+
export declare function collectProducedLabels(scheduled: ScheduledStory[]): Set<string>;
|
|
6
|
+
/**
|
|
7
|
+
* Drains the dependency graph with up to `workerCount` concurrent runs.
|
|
8
|
+
* Readiness is tracked incrementally: each story carries the set of `needs`
|
|
9
|
+
* labels still outstanding, and completing a producer decrements only the
|
|
10
|
+
* direct consumers of its `produces` labels (looked up through a prebuilt
|
|
11
|
+
* label → consumers index). A story enters the ready queue the moment its last
|
|
12
|
+
* outstanding need clears. This avoids rescanning the whole story list on every
|
|
13
|
+
* completion. Stories blocked by a failure receive a synthetic `failed` result
|
|
14
|
+
* so the report shows the chain of effects, not a silent absence.
|
|
15
|
+
*/
|
|
16
|
+
export declare function drainSchedule(scheduled: ScheduledStory[], workerCount: number, runner: StoryRunner, onStart: (item: ScheduledStory) => void, onFinish: (item: ScheduledStory, result: StoryResult) => void): Promise<StoryResult[]>;
|
|
17
|
+
//# sourceMappingURL=drain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drain.d.ts","sourceRoot":"","sources":["../../src/runner/drain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AASpE,MAAM,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,cAAc,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAE9E,0EAA0E;AAC1E,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,cAAc,EAAE,GAC1B,GAAG,CAAC,MAAM,CAAC,CAEb;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,cAAc,EAAE,EAC3B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,EACvC,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,GAC5D,OAAO,CAAC,WAAW,EAAE,CAAC,CAsHxB"}
|
|
@@ -1,35 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
/**
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* error on any mismatch so a typo in a JSON file fails loudly at load time,
|
|
6
|
-
* not at run time.
|
|
7
|
-
*/
|
|
8
|
-
export function buildSchedule(stories) {
|
|
9
|
-
const scheduled = stories.map((entry) => ({
|
|
10
|
-
...entry,
|
|
11
|
-
needs: normalisedNeeds(entry.story),
|
|
12
|
-
produces: entry.story.produces ?? [],
|
|
13
|
-
}));
|
|
14
|
-
const producerByLabel = new Map();
|
|
15
|
-
for (const item of scheduled) {
|
|
16
|
-
for (const label of item.produces) {
|
|
17
|
-
const previous = producerByLabel.get(label);
|
|
18
|
-
if (previous !== undefined) {
|
|
19
|
-
throw new SchedulerError(`Label "${label}" is produced by both ${previous} and ${item.file}. Labels must be unique.`);
|
|
20
|
-
}
|
|
21
|
-
producerByLabel.set(label, item.file);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
for (const item of scheduled) {
|
|
25
|
-
for (const label of item.needs) {
|
|
26
|
-
if (!producerByLabel.has(label)) {
|
|
27
|
-
throw new SchedulerError(`${item.file} needs label "${label}" but no story produces it.`);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
detectCycles(scheduled, producerByLabel);
|
|
32
|
-
return scheduled;
|
|
1
|
+
import { SchedulerError } from "./schedule.js";
|
|
2
|
+
/** The labels the given stories produce, scoped to the list passed in. */
|
|
3
|
+
export function collectProducedLabels(scheduled) {
|
|
4
|
+
return new Set(scheduled.flatMap((item) => item.produces));
|
|
33
5
|
}
|
|
34
6
|
/**
|
|
35
7
|
* Drains the dependency graph with up to `workerCount` concurrent runs.
|
|
@@ -49,20 +21,28 @@ export async function drainSchedule(scheduled, workerCount, runner, onStart, onF
|
|
|
49
21
|
skipped: new Set(),
|
|
50
22
|
};
|
|
51
23
|
const ordered = [];
|
|
24
|
+
// `satisfyProduced` is the sole path that clears an outstanding need, so a
|
|
25
|
+
// need no story in THIS call produces would never clear: a pre-seeded label,
|
|
26
|
+
// or a producer that renders in a different breakpoint pass. This filter is
|
|
27
|
+
// the only place such a need is excluded from readiness. `item.needs` itself
|
|
28
|
+
// stays whole, so the auth loader still resolves those labels from disk.
|
|
29
|
+
const producedThisPass = collectProducedLabels(scheduled);
|
|
52
30
|
// Label → the stories that need it, plus each story's still-outstanding needs.
|
|
53
31
|
const consumersByLabel = new Map();
|
|
54
32
|
const outstandingNeeds = new Map();
|
|
55
33
|
for (const item of scheduled) {
|
|
56
|
-
|
|
57
|
-
|
|
34
|
+
const blocking = item.needs.filter((label) => producedThisPass.has(label));
|
|
35
|
+
outstandingNeeds.set(item.file, new Set(blocking));
|
|
36
|
+
for (const label of blocking) {
|
|
58
37
|
const consumers = consumersByLabel.get(label) ?? [];
|
|
59
38
|
consumers.push(item);
|
|
60
39
|
consumersByLabel.set(label, consumers);
|
|
61
40
|
}
|
|
62
41
|
}
|
|
63
42
|
// Stories with no prerequisites are ready immediately. Later stories are
|
|
64
|
-
// pushed here as their last outstanding need clears.
|
|
65
|
-
|
|
43
|
+
// pushed here as their last outstanding need clears. Read from the same map
|
|
44
|
+
// the clearing path decrements, so the two cannot drift.
|
|
45
|
+
const ready = scheduled.filter((item) => outstandingNeeds.get(item.file)?.size === 0);
|
|
66
46
|
const allDone = () => context.results.size === scheduled.length;
|
|
67
47
|
const pickReady = () => {
|
|
68
48
|
while (ready.length > 0) {
|
|
@@ -178,38 +158,4 @@ function skipDependents(failed, scheduled, context, ordered) {
|
|
|
178
158
|
}
|
|
179
159
|
}
|
|
180
160
|
}
|
|
181
|
-
|
|
182
|
-
const byFile = new Map(scheduled.map((entry) => [entry.file, entry]));
|
|
183
|
-
const visited = new Set();
|
|
184
|
-
const onStack = new Set();
|
|
185
|
-
const visit = (file) => {
|
|
186
|
-
if (onStack.has(file)) {
|
|
187
|
-
throw new SchedulerError(`Cycle detected in story dependencies involving ${file}`);
|
|
188
|
-
}
|
|
189
|
-
if (visited.has(file)) {
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
onStack.add(file);
|
|
193
|
-
const item = byFile.get(file);
|
|
194
|
-
if (item) {
|
|
195
|
-
for (const label of item.needs) {
|
|
196
|
-
const upstream = producerByLabel.get(label);
|
|
197
|
-
if (upstream && upstream !== file) {
|
|
198
|
-
visit(upstream);
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
onStack.delete(file);
|
|
203
|
-
visited.add(file);
|
|
204
|
-
};
|
|
205
|
-
for (const item of scheduled) {
|
|
206
|
-
visit(item.file);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
export class SchedulerError extends Error {
|
|
210
|
-
constructor(message) {
|
|
211
|
-
super(message);
|
|
212
|
-
this.name = 'SchedulerError';
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
//# sourceMappingURL=scheduler.js.map
|
|
161
|
+
//# sourceMappingURL=drain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drain.js","sourceRoot":"","sources":["../../src/runner/drain.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAuB,MAAM,eAAe,CAAC;AAWpE,0EAA0E;AAC1E,MAAM,UAAU,qBAAqB,CACnC,SAA2B;IAE3B,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,SAA2B,EAC3B,WAAmB,EACnB,MAAmB,EACnB,OAAuC,EACvC,QAA6D;IAE7D,MAAM,OAAO,GAAe;QAC1B,SAAS,EAAE,IAAI,GAAG,EAAE;QACpB,QAAQ,EAAE,IAAI,GAAG,EAAE;QACnB,OAAO,EAAE,IAAI,GAAG,EAAE;QAClB,OAAO,EAAE,IAAI,GAAG,EAAE;KACnB,CAAC;IACF,MAAM,OAAO,GAAqB,EAAE,CAAC;IAErC,2EAA2E;IAC3E,6EAA6E;IAC7E,4EAA4E;IAC5E,6EAA6E;IAC7E,yEAAyE;IACzE,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAE1D,+EAA+E;IAC/E,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC7D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAuB,CAAC;IACxD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3E,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACpD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,4EAA4E;IAC5E,yDAAyD;IACzD,MAAM,KAAK,GAAqB,SAAS,CAAC,MAAM,CAC9C,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,CACtD,CAAC;IAEF,MAAM,OAAO,GAAG,GAAY,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC;IAEzE,MAAM,SAAS,GAAG,GAA+B,EAAE;QACjD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAChC,IACE,SAAS;gBACT,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;gBACtC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;gBACrC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EACpC,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,IAAoB,EAAQ,EAAE;QACrD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,KAAK,MAAM,QAAQ,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBACzD,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACxD,IAAI,CAAC,WAAW;oBAAE,SAAS;gBAC3B,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC1B,IACE,WAAW,CAAC,IAAI,KAAK,CAAC;oBACtB,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACrC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACpC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EACnC,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,IAAI,OAAO,CAAO,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE;QACpD,MAAM,SAAS,GAAG,GAAS,EAAE;YAC3B,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,MAAM;gBACR,CAAC;gBACD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,mEAAmE;gBACnE,wEAAwE;gBACxE,yEAAyE;gBACzE,wCAAwC;gBACxC,MAAM,CAAC,IAAI,CAAC;qBACT,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;oBACf,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACnC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBACvC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACnB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjC,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAC/B,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;oBACpD,CAAC;yBAAM,CAAC;wBACN,eAAe,CAAC,IAAI,CAAC,CAAC;oBACxB,CAAC;oBACD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBACvB,IAAI,OAAO,EAAE,EAAE,CAAC;wBACd,YAAY,EAAE,CAAC;wBACf,OAAO;oBACT,CAAC;oBACD,SAAS,EAAE,CAAC;gBACd,CAAC,CAAC;qBACD,KAAK,CAAC,WAAW,CAAC,CAAC;YACxB,CAAC;YACD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,OAAO,EAAE,EAAE,CAAC;gBAC7C,YAAY,EAAE,CAAC;YACjB,CAAC;QACH,CAAC,CAAC;QACF,SAAS,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,cAAc,CAAC,gCAAgC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CACrB,MAAsB,EACtB,SAA2B,EAC3B,OAAmB,EACnB,OAAyB;IAEzB,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrE,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,QAAQ;gBAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,UAAU,EAAE,CAAC;gBACb,OAAO,EAAE;oBACP;wBACE,MAAM,EAAE,WAAW;wBACnB,MAAM,EAAE,SAAS;wBACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACnC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACpC,UAAU,EAAE,CAAC;wBACb,cAAc,EAAE,kCAAkC,MAAM,CAAC,IAAI,EAAE;qBAChE;iBACF;aACF,CAAC,CAAC;YACH,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,+DAA+D;YAC/D,+DAA+D;YAC/D,mEAAmE;YACnE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,iEAAiE;YACjE,gEAAgE;YAChE,6CAA6C;YAC7C,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/runner/run.d.ts
CHANGED
|
@@ -60,6 +60,16 @@ export declare function createRunTeardown(handles: RunHandles): () => Promise<vo
|
|
|
60
60
|
* teardown, so a second signal cannot double-close.
|
|
61
61
|
*/
|
|
62
62
|
export declare function createSignalTeardownHandler(teardown: () => Promise<void>, exit?: (code: number) => void): () => void;
|
|
63
|
+
/**
|
|
64
|
+
* Chromium launch options for the run's one shared browser. Pulled out as a
|
|
65
|
+
* pure function, rather than inlined into `runAll`'s default `launchBrowser`,
|
|
66
|
+
* so a test can assert `config.browserArgs` reaches the launch call without
|
|
67
|
+
* mocking Playwright's own `chromium.launch`.
|
|
68
|
+
*/
|
|
69
|
+
export declare function resolveLaunchOptions(config: Pick<ResolvedConfig, 'browserArgs'>, options: Pick<RunCliOptions, 'headed'>): {
|
|
70
|
+
headless: boolean;
|
|
71
|
+
args: string[];
|
|
72
|
+
};
|
|
63
73
|
/**
|
|
64
74
|
* Copies the just-written `results.json` into `<report>/candidates/` so the
|
|
65
75
|
* candidate tree is a self-contained approval artifact. `writeReport` has
|
package/dist/runner/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/runner/run.ts"],"names":[],"mappings":"AAIA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAsB,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/runner/run.ts"],"names":[],"mappings":"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"}
|
package/dist/runner/run.js
CHANGED
|
@@ -10,9 +10,10 @@ import { computeScreenCoverage } from "../coverage/screens.js";
|
|
|
10
10
|
import { resetDatabase } from "./bridges/database.js";
|
|
11
11
|
import { startManagedDevServers, } from "./bridges/devServers.js";
|
|
12
12
|
import { CoverageCollector } from "./coverage.js";
|
|
13
|
-
import { mergeStoryStatus, runStoryWithBrowser } from "./runStory.js";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
13
|
+
import { mergeStoryStatus, runStoryWithBrowser, } from "./runStory.js";
|
|
14
|
+
import { collectProducedLabels, drainSchedule } from "./drain.js";
|
|
15
|
+
import { buildSchedule } from "./schedule.js";
|
|
16
|
+
import { mergeStoryResults, resolveBreakpointPasses, storyRendersAt, } from "./breakpointPasses.js";
|
|
16
17
|
import { storyMatchesFilter } from "./storyFilter.js";
|
|
17
18
|
import { candidatesDir } from "../screenshots/baselineStore.js";
|
|
18
19
|
import { executedActionNames, scanOrphanedBaselines, shouldScanForOrphans, } from "./orphanScan.js";
|
|
@@ -33,7 +34,7 @@ const HEARTBEAT_FILE = '.heartbeat';
|
|
|
33
34
|
* Both the normal finally path and the signal handler tear down through the
|
|
34
35
|
* same idempotent {@link createRunTeardown}, so nothing double-closes.
|
|
35
36
|
*/
|
|
36
|
-
export async function runAll(config, options, launchBrowser = () => chromium.launch(
|
|
37
|
+
export async function runAll(config, options, launchBrowser = () => chromium.launch(resolveLaunchOptions(config, options))) {
|
|
37
38
|
const startedAt = new Date();
|
|
38
39
|
const mode = options.mode ?? 'local';
|
|
39
40
|
// Single owner for the run's teardownable handles: the shared browser and any
|
|
@@ -66,7 +67,12 @@ export async function runAll(config, options, launchBrowser = () => chromium.lau
|
|
|
66
67
|
: undefined;
|
|
67
68
|
const actions = await loadActions(config.paths.actions);
|
|
68
69
|
const allStories = await loadStories(config.paths.stories);
|
|
69
|
-
const scheduled = buildSchedule(allStories);
|
|
70
|
+
const scheduled = buildSchedule(allStories, config);
|
|
71
|
+
// Read from the WHOLE schedule, not the filtered subset below: a label is
|
|
72
|
+
// produced because the project declares a producer for it, so a --story
|
|
73
|
+
// filter must not reclassify it as pre-seeded and flip which auth file a
|
|
74
|
+
// surviving consumer loads (see resolveStorageStateForNeeds).
|
|
75
|
+
const producedAnywhere = collectProducedLabels(scheduled);
|
|
70
76
|
const subset = options.storyFilter
|
|
71
77
|
? scheduled.filter((item) => matchesFilter(item, options.storyFilter))
|
|
72
78
|
: scheduled;
|
|
@@ -79,6 +85,7 @@ export async function runAll(config, options, launchBrowser = () => chromium.lau
|
|
|
79
85
|
process.stdout.write(`Scheduling ${subset.length} stories on ${workerCount} worker${workerCount === 1 ? '' : 's'}` +
|
|
80
86
|
(multiPass ? ` across ${passes.length} breakpoint passes` : '') +
|
|
81
87
|
'.\n');
|
|
88
|
+
const base = { actions, config, coverage, mode, browser, producedAnywhere };
|
|
82
89
|
// Run each breakpoint as its own pass: a full reset/seed, then the whole
|
|
83
90
|
// schedule rendered at that one breakpoint. This is what keeps breakpoints
|
|
84
91
|
// isolated. A destructive story can mutate the seeded database in the
|
|
@@ -101,7 +108,7 @@ export async function runAll(config, options, launchBrowser = () => chromium.lau
|
|
|
101
108
|
await resetDatabase(config);
|
|
102
109
|
}
|
|
103
110
|
process.stdout.write('\n');
|
|
104
|
-
const passResults = await drainSchedule(
|
|
111
|
+
const passResults = await drainSchedule(participating, workerCount, (item) => runScheduledStory(item, breakpoint, base), () => { }, (_item, result) => process.stdout.write(`${formatResultLine(result.status, result.actions.length, result.durationMs, result.file)}\n`));
|
|
105
112
|
passSummaries.push({
|
|
106
113
|
name: breakpoint.name,
|
|
107
114
|
counts: summarise(passResults),
|
|
@@ -219,27 +226,33 @@ export function createSignalTeardownHandler(teardown, exit = (code) => process.e
|
|
|
219
226
|
void teardown().finally(() => exit(1));
|
|
220
227
|
};
|
|
221
228
|
}
|
|
222
|
-
function runScheduledStory(item,
|
|
229
|
+
function runScheduledStory(item, breakpoint, base) {
|
|
230
|
+
const { browser, ...runConstants } = base;
|
|
223
231
|
// Drive the story against the run's SHARED browser rather than launching a
|
|
224
232
|
// per-story Chromium. `startedAt` is stamped here, as this story's work
|
|
225
233
|
// begins, so its reported duration excludes time it waited in the queue.
|
|
226
234
|
const startedAt = new Date();
|
|
227
235
|
return runStoryWithBrowser(browser, {
|
|
236
|
+
...runConstants,
|
|
228
237
|
story: item.story,
|
|
229
238
|
file: item.file,
|
|
230
239
|
needs: item.needs,
|
|
231
|
-
authNeeds: item.authNeeds,
|
|
232
240
|
produces: item.produces,
|
|
233
|
-
actions,
|
|
234
|
-
config,
|
|
235
|
-
coverage,
|
|
236
241
|
breakpoint,
|
|
237
|
-
mode,
|
|
238
242
|
}, startedAt);
|
|
239
243
|
}
|
|
240
244
|
function matchesFilter(item, filter) {
|
|
241
245
|
return storyMatchesFilter({ file: item.file, storyName: item.story.story }, filter);
|
|
242
246
|
}
|
|
247
|
+
/**
|
|
248
|
+
* Chromium launch options for the run's one shared browser. Pulled out as a
|
|
249
|
+
* pure function, rather than inlined into `runAll`'s default `launchBrowser`,
|
|
250
|
+
* so a test can assert `config.browserArgs` reaches the launch call without
|
|
251
|
+
* mocking Playwright's own `chromium.launch`.
|
|
252
|
+
*/
|
|
253
|
+
export function resolveLaunchOptions(config, options) {
|
|
254
|
+
return { headless: !options.headed, args: config.browserArgs };
|
|
255
|
+
}
|
|
243
256
|
function resolveWorkerCount(config, requested) {
|
|
244
257
|
if (requested && requested > 0) {
|
|
245
258
|
return requested;
|
package/dist/runner/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/runner/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AASpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,sBAAsB,GAEvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EACL,aAAa,EACb,aAAa,GAEd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAgB,MAAM,WAAW,CAAC;AAC5D,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,GAGb,MAAM,eAAe,CAAC;AAyBvB,MAAM,cAAc,GAAG,YAAY,CAAC;AAEpC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,MAAsB,EACtB,OAAsB,EACtB,gBAAwC,GAAG,EAAE,CAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAEhD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAY,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC;IAC9C,8EAA8E;IAC9E,6EAA6E;IAC7E,+EAA+E;IAC/E,gEAAgE;IAChE,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,4EAA4E;QAC5E,2EAA2E;QAC3E,8DAA8D;QAC9D,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAClC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,OAAO,CAAC,cAAc,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAChE,CAAC;QACD,wEAAwE;QACxE,4EAA4E;QAC5E,4EAA4E;QAC5E,qEAAqE;QACrE,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;QACtC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAC1B,yEAAyE;QACzE,gEAAgE;QAChE,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ;YAC/B,CAAC,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAC5C,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW;YAChC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,WAAY,CAAC,CAAC;YACvE,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,cAAc,MAAM,CAAC,MAAM,eAAe,WAAW,UAAU,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;YAC3F,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,KAAK,CACR,CAAC;QAEF,yEAAyE;QACzE,2EAA2E;QAC3E,sEAAsE;QACtE,4EAA4E;QAC5E,2EAA2E;QAC3E,MAAM,WAAW,GAAG,IAAI,GAAG,EAAyB,CAAC;QACrD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,aAAa,GAAkB,EAAE,CAAC;QACxC,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;YAChC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAC3C,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CACzC,CAAC;YACF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACzC,uEAAuE;YACvE,wEAAwE;YACxE,yEAAyE;YACzE,0BAA0B;YAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,eAAe,UAAU,CAAC,IAAI,wBAAwB,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,MAAM,IAAI,CAChG,CAAC;YACF,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;gBAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBACnD,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,WAAW,GAAG,MAAM,aAAa,CACrC,iBAAiB,CAAC,aAAa,CAAC,EAChC,WAAW,EACX,CAAC,IAAI,EAAE,EAAE,CACP,iBAAiB,CACf,IAAI,EACJ,OAAO,EACP,MAAM,EACN,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,OAAO,CACR,EACH,GAAG,EAAE,GAAE,CAAC,EACR,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAC9F,CACJ,CAAC;YACF,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC;aAC/B,CAAC,CAAC;YACH,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;gBACjC,IAAI,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACzC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,KAAK,GAAG,EAAE,CAAC;oBACX,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBACpC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC1B,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACjC,iBAAiB,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAC1C,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,4EAA4E;QAC5E,wEAAwE;QACxE,sEAAsE;QACtE,0EAA0E;QAC1E,4EAA4E;QAC5E,6EAA6E;QAC7E,+DAA+D;QAC/D,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACzC,qBAAqB,CACnB,MAAM,CAAC,KAAK,CAAC,OAAO,EACpB,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CACrC;YACD,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC;SACtD,CAAC,CAAC;QACH,0EAA0E;QAC1E,2EAA2E;QAC3E,qEAAqE;QACrE,4EAA4E;QAC5E,0EAA0E;QAC1E,2EAA2E;QAC3E,+DAA+D;QAC/D,MAAM,OAAO,GAAsB,oBAAoB,CACrD,IAAI,EACJ,OAAO,CAAC,WAAW,CACpB;YACC,CAAC,CAAC,MAAM,qBAAqB,CACzB,MAAM,CAAC,KAAK,CAAC,SAAS,EACtB,mBAAmB,CAAC,OAAO,CAAC,CAC7B;YACH,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;QAChC,2EAA2E;QAC3E,yEAAyE;QACzE,4EAA4E;QAC5E,kDAAkD;QAClD,MAAM,WAAW,GAAG,MAAM,wBAAwB,CAChD,MAAM,EACN,IAAI,EACJ,KAAK,IAAI,EAAE,CAAC,CAAC;YACX,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;SAC3B,CAAC,CACH,CAAC;QACF,MAAM,SAAS,GAAc;YAC3B,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;YAClC,UAAU,EAAE,UAAU,CAAC,WAAW,EAAE;YACpC,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE;YACtD,IAAI;YACJ,MAAM;YACN,WAAW;YACX,cAAc,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;YAClC,OAAO;YACP,OAAO,EAAE,OAAO;SACjB,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,WAAW,CAClC,MAAM,CAAC,KAAK,CAAC,MAAM,EACnB,SAAS,EACT,MAAM,CAAC,eAAe,CACvB,CAAC;QACF,4EAA4E;QAC5E,4EAA4E;QAC5E,uEAAuE;QACvE,6EAA6E;QAC7E,4EAA4E;QAC5E,yBAAyB;QACzB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,yBAAyB,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC;QACD,eAAe,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAC3C,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,YAAY,IAAI,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC3C,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,QAAQ,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAQD;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAmB;IACnD,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,OAAO,KAAK,IAAI,EAAE;QAChB,IAAI,IAAI;YAAE,OAAO;QACjB,IAAI,GAAG,IAAI,CAAC;QACZ,MAAM,OAAO,CAAC,UAAU,CAAC;YACvB,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE;YACxB,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CACzC,QAA6B,EAC7B,OAA+B,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IAE3D,OAAO,GAAG,EAAE;QACV,KAAK,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAoB,EACpB,OAA4B,EAC5B,MAAsB,EACtB,QAAuC,EACvC,UAA8B,EAC9B,IAAa,EACb,OAAgB;IAEhB,2EAA2E;IAC3E,wEAAwE;IACxE,yEAAyE;IACzE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC7B,OAAO,mBAAmB,CACxB,OAAO,EACP;QACE,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO;QACP,MAAM;QACN,QAAQ;QACR,UAAU;QACV,IAAI;KACL,EACD,SAAS,CACV,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAoB,EAAE,MAAc;IACzD,OAAO,kBAAkB,CACvB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAChD,MAAM,CACP,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,MAAsB,EACtB,SAA6B;IAE7B,IAAI,SAAS,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QACzC,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,MAAsB;IAClD,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,SAAS,CACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,EACzC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EACxB,MAAM,CACP,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;QACjE,yCAAyC;IAC3C,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,SAAiB;IAEjB,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAsB,EACtB,IAAa;IAEb,OAAO,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,sBAAsB,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAW,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAsB,EACtB,IAAa,EACb,KAAqC;IAErC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,2EAA2E;QAC3E,0EAA0E;QAC1E,6EAA6E;QAC7E,sCAAsC;QACtC,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QAClE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IACvE,CAAC;IACD,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpE,MAAM,QAAQ,GACZ,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AACtD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,OAAsB;IAC9C,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM;QACnE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;QACvE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;QACrE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,MAAM;QAC/D,OAAO,EAAE,CAAC;KACX,CAAC;AACJ,CAAC;AAED,0DAA0D;AAC1D,MAAM,aAAa,GAAgC;IACjD,IAAI,EAAE,GAAG;IACT,OAAO,EAAE,GAAG;IACZ,GAAG,EAAE,GAAG;IACR,MAAM,EAAE,GAAG;CACZ,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAmB,EACnB,WAAmB,EACnB,UAAkB,EAClB,IAAY;IAEZ,MAAM,OAAO,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACzC,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,WAAW,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;AACvE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,MAA2B;IAE3B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC;IAChE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IACjE,OAAO,KAAK,OAAO,QAAQ,IAAI,cAAc,CAAC;AAChD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CACtB,aAA4B,EAC5B,UAAkB;IAElB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAmB;IACpD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,aAAa,GAAG,IAAI,GAAG,EAAuB,CAAC;IACrD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,UAAU;YAAE,SAAS;QAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;QACD,aAAa,CAAC,GAAG,CACf,UAAU,EACV,gBAAgB,CACd,aAAa,CAAC,GAAG,CAAC,UAAU,CAAE;QAC9B,sEAAsE;QACtE,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CACvD,CACF,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,UAAU,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC,MAAM,CAChE,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/runner/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,15 +9,6 @@ export interface RunStoryOptions {
|
|
|
9
9
|
story: Story;
|
|
10
10
|
file: string;
|
|
11
11
|
needs: string[];
|
|
12
|
-
/**
|
|
13
|
-
* The needs used to resolve on-disk auth state, distinct from the
|
|
14
|
-
* scheduler-facing `needs` which a breakpoint pass strips to its in-pass
|
|
15
|
-
* subset (see {@link adaptNeedsForPass}). Retains the story's ORIGINAL needs
|
|
16
|
-
* so a consumer whose producer rendered in a different pass still loads that
|
|
17
|
-
* producer's persisted auth. Otherwise the consumer renders logged-out.
|
|
18
|
-
* Omitted by direct callers/tests, where it falls back to `needs`.
|
|
19
|
-
*/
|
|
20
|
-
authNeeds?: string[];
|
|
21
12
|
produces: string[];
|
|
22
13
|
actions: Map<string, Action>;
|
|
23
14
|
config: ResolvedConfig;
|
|
@@ -29,6 +20,13 @@ export interface RunStoryOptions {
|
|
|
29
20
|
* back to the story's full resolved run set.
|
|
30
21
|
*/
|
|
31
22
|
breakpoint?: ResolvedBreakpoint;
|
|
23
|
+
/**
|
|
24
|
+
* Every label the run's schedule produces, which is what lets
|
|
25
|
+
* {@link resolveStorageStateForNeeds} rank this story's `needs` instead of
|
|
26
|
+
* trusting their order. Omitted only by direct callers/tests, which then get
|
|
27
|
+
* the plain first-match-wins walk.
|
|
28
|
+
*/
|
|
29
|
+
producedAnywhere?: ReadonlySet<string>;
|
|
32
30
|
/**
|
|
33
31
|
* Comparison contract for this run (see {@link RunMode}). Threaded down to
|
|
34
32
|
* `runAction`, which uses it to decide whether a missing/changed baseline
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runStory.d.ts","sourceRoot":"","sources":["../../src/runner/runStory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAkC,MAAM,YAAY,CAAC;AAC1E,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAEV,WAAW,EACX,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB
|
|
1
|
+
{"version":3,"file":"runStory.d.ts","sourceRoot":"","sources":["../../src/runner/runStory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAkC,MAAM,YAAY,CAAC;AAC1E,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAEV,WAAW,EACX,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAID;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,IAAI,GACd,OAAO,CAAC,WAAW,CAAC,CAsItB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,cAAc,GACrB,kBAAkB,EAAE,CAKtB;AAeD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,WAAW,GAChB,WAAW,CAEb"}
|
package/dist/runner/runStory.js
CHANGED
|
@@ -26,14 +26,14 @@ const TRACE_SUBDIR = 'traces';
|
|
|
26
26
|
* launching a real Chromium.
|
|
27
27
|
*/
|
|
28
28
|
export async function runStoryWithBrowser(browser, options, startedAt) {
|
|
29
|
-
const { story, file, needs,
|
|
29
|
+
const { story, file, needs, produces, config, coverage } = options;
|
|
30
30
|
// Resolve the storage state once: it is viewport-independent, so every
|
|
31
|
-
// breakpoint context loads the same auth payload.
|
|
32
|
-
// story's
|
|
33
|
-
//
|
|
34
|
-
// rendered in a different pass
|
|
35
|
-
//
|
|
36
|
-
const storageStatePath = await resolveStorageStateForNeeds(config,
|
|
31
|
+
// breakpoint context loads the same auth payload. `needs` is always the
|
|
32
|
+
// story's full label list. A breakpoint pass no longer strips it, because
|
|
33
|
+
// `drainSchedule` excludes the labels it cannot clear on its own. So a
|
|
34
|
+
// consumer whose producer rendered in a different pass still finds that
|
|
35
|
+
// producer's off-disk auth here instead of rendering logged-out.
|
|
36
|
+
const storageStatePath = await resolveStorageStateForNeeds(config, needs, options.producedAnywhere);
|
|
37
37
|
// The run driver hands us a single breakpoint per call so each breakpoint is
|
|
38
38
|
// its own reset/seed pass (the database-isolation guarantee). Direct
|
|
39
39
|
// callers/tests that omit it fall back to the story's full run set, which
|
|
@@ -243,8 +243,26 @@ async function stopTracing(context, config, storyFile, breakpoint, breakpointSta
|
|
|
243
243
|
await context.tracing.stop({ path: tracePath });
|
|
244
244
|
return tracePath;
|
|
245
245
|
}
|
|
246
|
-
|
|
247
|
-
|
|
246
|
+
/**
|
|
247
|
+
* Picks the storage state this story loads: the first `needs` label with a file
|
|
248
|
+
* at `<authState>/<label>.json`, but walking every PRODUCED label before any
|
|
249
|
+
* pre-seeded-only one, whatever order `needs` lists them in. Order cannot decide
|
|
250
|
+
* this, because the two kinds of label do not offer the same guarantee. A
|
|
251
|
+
* pre-seeded label's file is guaranteed present (`buildSchedule` admits the
|
|
252
|
+
* label only when `seededLabels` declares it AND the file already exists),
|
|
253
|
+
* while a produced label's file appears only once its producer has actually run
|
|
254
|
+
* and persisted one. Walking `needs` raw therefore lets a pre-seeded label
|
|
255
|
+
* listed first shadow the producer's real auth, and the story renders under the
|
|
256
|
+
* wrong identity with nothing to show for it: no error, no failed action, just
|
|
257
|
+
* a screenshot of the wrong session. The author cannot always reorder their way
|
|
258
|
+
* out either, since `normalisedNeeds` appends the `storageState: 'logged-in'`
|
|
259
|
+
* shorthand to the END of the list. Within a tier the first match still wins,
|
|
260
|
+
* so two produced (or two pre-seeded) labels keep resolving in `needs` order.
|
|
261
|
+
*/
|
|
262
|
+
async function resolveStorageStateForNeeds(config, needs, producedAnywhere = new Set()) {
|
|
263
|
+
const produced = needs.filter((label) => producedAnywhere.has(label));
|
|
264
|
+
const preSeeded = needs.filter((label) => !producedAnywhere.has(label));
|
|
265
|
+
for (const label of [...produced, ...preSeeded]) {
|
|
248
266
|
const path = join(config.paths.authState, `${label}.json`);
|
|
249
267
|
try {
|
|
250
268
|
await access(path);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runStory.js","sourceRoot":"","sources":["../../src/runner/runStory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAgD,MAAM,YAAY,CAAC;AAC1E,OAAO,EACL,yBAAyB,EACzB,mBAAmB,GAGpB,MAAM,cAAc,CAAC;AAQtB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"runStory.js","sourceRoot":"","sources":["../../src/runner/runStory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ResolvedConfig } from '../config.ts';
|
|
2
|
+
import type { StoryFile } from '../schema/load.ts';
|
|
3
|
+
export interface ScheduledStory extends StoryFile {
|
|
4
|
+
needs: string[];
|
|
5
|
+
produces: string[];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Validates that every produced label is emitted by at most one story and
|
|
9
|
+
* that every `needs` label is satisfiable: either a scheduled story
|
|
10
|
+
* `produces` it, or the project declared it in `config.seededLabels` AND
|
|
11
|
+
* `<paths.authState>/<label>.json` exists for `resolveStorageStateForNeeds` to
|
|
12
|
+
* load. Both halves are required, because neither alone separates a deliberate
|
|
13
|
+
* seed from residue: a bare file can be what a renamed or deleted producer left
|
|
14
|
+
* behind, and a bare declaration can name a file nobody ever wrote. Throws a
|
|
15
|
+
* descriptive error on any mismatch so a typo in a JSON file fails loudly at
|
|
16
|
+
* load time, not at run time.
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildSchedule(stories: StoryFile[], config: ResolvedConfig): ScheduledStory[];
|
|
19
|
+
export declare class SchedulerError extends Error {
|
|
20
|
+
constructor(message: string);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=schedule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../src/runner/schedule.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,SAAS,EAAE,EACpB,MAAM,EAAE,cAAc,GACrB,cAAc,EAAE,CAkDlB;AAoCD,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { normalisedNeeds } from "../schema/story.js";
|
|
4
|
+
/**
|
|
5
|
+
* Validates that every produced label is emitted by at most one story and
|
|
6
|
+
* that every `needs` label is satisfiable: either a scheduled story
|
|
7
|
+
* `produces` it, or the project declared it in `config.seededLabels` AND
|
|
8
|
+
* `<paths.authState>/<label>.json` exists for `resolveStorageStateForNeeds` to
|
|
9
|
+
* load. Both halves are required, because neither alone separates a deliberate
|
|
10
|
+
* seed from residue: a bare file can be what a renamed or deleted producer left
|
|
11
|
+
* behind, and a bare declaration can name a file nobody ever wrote. Throws a
|
|
12
|
+
* descriptive error on any mismatch so a typo in a JSON file fails loudly at
|
|
13
|
+
* load time, not at run time.
|
|
14
|
+
*/
|
|
15
|
+
export function buildSchedule(stories, config) {
|
|
16
|
+
const scheduled = stories.map((entry) => ({
|
|
17
|
+
...entry,
|
|
18
|
+
needs: normalisedNeeds(entry.story),
|
|
19
|
+
produces: entry.story.produces ?? [],
|
|
20
|
+
}));
|
|
21
|
+
const producerByLabel = new Map();
|
|
22
|
+
for (const item of scheduled) {
|
|
23
|
+
for (const label of item.produces) {
|
|
24
|
+
const previous = producerByLabel.get(label);
|
|
25
|
+
if (previous !== undefined) {
|
|
26
|
+
throw new SchedulerError(`Label "${label}" is produced by both ${previous} and ${item.file}. Labels must be unique.`);
|
|
27
|
+
}
|
|
28
|
+
producerByLabel.set(label, item.file);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const declaredSeeds = new Set(config.seededLabels);
|
|
32
|
+
for (const item of scheduled) {
|
|
33
|
+
for (const label of item.needs) {
|
|
34
|
+
if (producerByLabel.has(label)) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
// A declared pre-seeded storage state stands in for a producer: the run
|
|
38
|
+
// reads <authState>/<label>.json instead of rendering the story that
|
|
39
|
+
// would have written it. An undeclared label is indistinguishable from a
|
|
40
|
+
// typo, whether or not some file happens to sit at that path.
|
|
41
|
+
const seedPath = join(config.paths.authState, `${label}.json`);
|
|
42
|
+
if (!declaredSeeds.has(label)) {
|
|
43
|
+
throw new SchedulerError(`${item.file} needs label "${label}" but no story produces it and ` +
|
|
44
|
+
`it is not listed in \`seededLabels\`. Add a story that produces ` +
|
|
45
|
+
`it, or declare the label and seed ${seedPath}.`);
|
|
46
|
+
}
|
|
47
|
+
if (!existsSync(seedPath)) {
|
|
48
|
+
throw new SchedulerError(`${item.file} needs label "${label}", declared in \`seededLabels\`, ` +
|
|
49
|
+
`but no storage state exists at ${seedPath}. Seed it before ` +
|
|
50
|
+
`\`tuffgal run\`.`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
detectCycles(scheduled, producerByLabel);
|
|
55
|
+
return scheduled;
|
|
56
|
+
}
|
|
57
|
+
function detectCycles(scheduled, producerByLabel) {
|
|
58
|
+
const byFile = new Map(scheduled.map((entry) => [entry.file, entry]));
|
|
59
|
+
const visited = new Set();
|
|
60
|
+
const onStack = new Set();
|
|
61
|
+
const visit = (file) => {
|
|
62
|
+
if (onStack.has(file)) {
|
|
63
|
+
throw new SchedulerError(`Cycle detected in story dependencies involving ${file}`);
|
|
64
|
+
}
|
|
65
|
+
if (visited.has(file)) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
onStack.add(file);
|
|
69
|
+
const item = byFile.get(file);
|
|
70
|
+
if (item) {
|
|
71
|
+
for (const label of item.needs) {
|
|
72
|
+
const upstream = producerByLabel.get(label);
|
|
73
|
+
if (upstream && upstream !== file) {
|
|
74
|
+
visit(upstream);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
onStack.delete(file);
|
|
79
|
+
visited.add(file);
|
|
80
|
+
};
|
|
81
|
+
for (const item of scheduled) {
|
|
82
|
+
visit(item.file);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
export class SchedulerError extends Error {
|
|
86
|
+
constructor(message) {
|
|
87
|
+
super(message);
|
|
88
|
+
this.name = 'SchedulerError';
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=schedule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/runner/schedule.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/story.d.ts
CHANGED
|
@@ -10,7 +10,12 @@ export type StoryStep = z.infer<typeof storyStepSchema>;
|
|
|
10
10
|
* dependency DAG, validate uniqueness, detect cycles, and inherit storage
|
|
11
11
|
* state from a producer onto its consumers. A produced label's storage
|
|
12
12
|
* state lives at `.auth/<label>.json` and is loaded as the initial state
|
|
13
|
-
* for every consumer.
|
|
13
|
+
* for every consumer. A label may also have no producing story at all, as
|
|
14
|
+
* long as the project declares it in `seededLabels` AND that file already
|
|
15
|
+
* exists when the run starts: a project can seed one itself (a Playwright
|
|
16
|
+
* `globalSetup`, say) and stories `needs` it the same way. Both halves are
|
|
17
|
+
* required, because neither alone separates a deliberate seed from residue
|
|
18
|
+
* a renamed or deleted producer left behind.
|
|
14
19
|
*
|
|
15
20
|
* `storageState: "logged-in"` is retained as syntactic sugar, equivalent
|
|
16
21
|
* to `needs: ["logged-in"]`. New stories should prefer the explicit form.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"story.d.ts","sourceRoot":"","sources":["../../src/schema/story.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgCxB,eAAO,MAAM,eAAe;;;iBAG1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD
|
|
1
|
+
{"version":3,"file":"story.d.ts","sourceRoot":"","sources":["../../src/schema/story.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgCxB,eAAO,MAAM,eAAe;;;iBAG1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoCtB,CAAC;AAEH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,CAMtD"}
|
package/dist/schema/story.js
CHANGED
|
@@ -34,7 +34,12 @@ export const storyStepSchema = z.object({
|
|
|
34
34
|
* dependency DAG, validate uniqueness, detect cycles, and inherit storage
|
|
35
35
|
* state from a producer onto its consumers. A produced label's storage
|
|
36
36
|
* state lives at `.auth/<label>.json` and is loaded as the initial state
|
|
37
|
-
* for every consumer.
|
|
37
|
+
* for every consumer. A label may also have no producing story at all, as
|
|
38
|
+
* long as the project declares it in `seededLabels` AND that file already
|
|
39
|
+
* exists when the run starts: a project can seed one itself (a Playwright
|
|
40
|
+
* `globalSetup`, say) and stories `needs` it the same way. Both halves are
|
|
41
|
+
* required, because neither alone separates a deliberate seed from residue
|
|
42
|
+
* a renamed or deleted producer left behind.
|
|
38
43
|
*
|
|
39
44
|
* `storageState: "logged-in"` is retained as syntactic sugar, equivalent
|
|
40
45
|
* to `needs: ["logged-in"]`. New stories should prefer the explicit form.
|
package/dist/schema/story.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"story.js","sourceRoot":"","sources":["../../src/schema/story.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;;;;GAOG;AACH,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAG9C,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC;IACvC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;IACvB,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KAC/C,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACxD,CAAC,CAAC;AAIH
|
|
1
|
+
{"version":3,"file":"story.js","sourceRoot":"","sources":["../../src/schema/story.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;;;;GAOG;AACH,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAG9C,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC;IACvC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;IACvB,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KAC/C,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACxD,CAAC,CAAC;AAIH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C;;;;;;;;;OASG;IACH,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C;;;;;OAKG;IACH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClC;;;;;;;;;;OAUG;IACH,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACzC,CAAC,CAAC;AAIH;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAY;IAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IACnC,IAAI,KAAK,CAAC,YAAY,KAAK,WAAW,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1E,OAAO,CAAC,GAAG,QAAQ,EAAE,WAAW,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type { StoryFile } from '../schema/load.ts';
|
|
2
|
-
import type { StoryResult } from '../schema/result.ts';
|
|
3
|
-
export interface ScheduledStory extends StoryFile {
|
|
4
|
-
needs: string[];
|
|
5
|
-
produces: string[];
|
|
6
|
-
/**
|
|
7
|
-
* The story's ORIGINAL needs, retained for AUTH resolution across a
|
|
8
|
-
* breakpoint pass even when `needs` (the scheduler-facing set) is stripped to
|
|
9
|
-
* the in-pass subset by {@link adaptNeedsForPass}. `resolveStorageStateForNeeds`
|
|
10
|
-
* reads this so a consumer whose producer rendered in a DIFFERENT pass still
|
|
11
|
-
* loads that producer's on-disk auth state. Otherwise the consumer would
|
|
12
|
-
* render logged-out. Absent on stories that never went through
|
|
13
|
-
* `adaptNeedsForPass` (direct callers/tests), where `needs` is already the
|
|
14
|
-
* full set; the auth path falls back to `needs` then.
|
|
15
|
-
*/
|
|
16
|
-
authNeeds?: string[];
|
|
17
|
-
}
|
|
18
|
-
export interface ScheduleSummary {
|
|
19
|
-
ready: ScheduledStory[];
|
|
20
|
-
blocked: ScheduledStory[];
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Validates that every produced label is emitted by at most one story and
|
|
24
|
-
* that every `needs` label has a matching producer. Throws a descriptive
|
|
25
|
-
* error on any mismatch so a typo in a JSON file fails loudly at load time,
|
|
26
|
-
* not at run time.
|
|
27
|
-
*/
|
|
28
|
-
export declare function buildSchedule(stories: StoryFile[]): ScheduledStory[];
|
|
29
|
-
export type StoryRunner = (scheduled: ScheduledStory) => Promise<StoryResult>;
|
|
30
|
-
/**
|
|
31
|
-
* Drains the dependency graph with up to `workerCount` concurrent runs.
|
|
32
|
-
* Readiness is tracked incrementally: each story carries the set of `needs`
|
|
33
|
-
* labels still outstanding, and completing a producer decrements only the
|
|
34
|
-
* direct consumers of its `produces` labels (looked up through a prebuilt
|
|
35
|
-
* label → consumers index). A story enters the ready queue the moment its last
|
|
36
|
-
* outstanding need clears. This avoids rescanning the whole story list on every
|
|
37
|
-
* completion. Stories blocked by a failure receive a synthetic `failed` result
|
|
38
|
-
* so the report shows the chain of effects, not a silent absence.
|
|
39
|
-
*/
|
|
40
|
-
export declare function drainSchedule(scheduled: ScheduledStory[], workerCount: number, runner: StoryRunner, onStart: (item: ScheduledStory) => void, onFinish: (item: ScheduledStory, result: StoryResult) => void): Promise<StoryResult[]>;
|
|
41
|
-
export declare class SchedulerError extends Error {
|
|
42
|
-
constructor(message: string);
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/runner/scheduler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAgCpE;AASD,MAAM,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,cAAc,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAE9E;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,cAAc,EAAE,EAC3B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,EACvC,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,GAC5D,OAAO,CAAC,WAAW,EAAE,CAAC,CA6GxB;AAgFD,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/runner/scheduler.ts"],"names":[],"mappings":"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"}
|