tuffgal 0.2.0-alpha.3 → 0.2.0-alpha.5
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 +41 -20
- package/README.md +6 -6
- package/dist/cli.d.ts +5 -5
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +12 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.js +6 -6
- package/dist/commands/supervise.d.ts +3 -3
- package/dist/commands/supervise.js +8 -4
- package/dist/commands/supervise.js.map +1 -1
- package/dist/config.d.ts +29 -13
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -2
- package/dist/config.js.map +1 -1
- package/dist/coverage/screens.d.ts +10 -5
- package/dist/coverage/screens.d.ts.map +1 -1
- package/dist/coverage/screens.js +18 -8
- package/dist/coverage/screens.js.map +1 -1
- package/dist/reporter/assets/report.css +11 -11
- package/dist/reporter/assets/report.js +23 -23
- package/dist/reporter/template.js +48 -46
- package/dist/reporter/template.js.map +1 -1
- package/dist/runner/approve.d.ts +5 -5
- package/dist/runner/approve.js +5 -5
- package/dist/runner/approveFrom.d.ts +8 -8
- package/dist/runner/approveFrom.js +32 -31
- package/dist/runner/approveFrom.js.map +1 -1
- package/dist/runner/breakpointPasses.d.ts +16 -9
- package/dist/runner/breakpointPasses.d.ts.map +1 -1
- package/dist/runner/breakpointPasses.js +17 -9
- package/dist/runner/breakpointPasses.js.map +1 -1
- package/dist/runner/bridges/devServers.d.ts +10 -1
- package/dist/runner/bridges/devServers.d.ts.map +1 -1
- package/dist/runner/bridges/devServers.js +16 -8
- package/dist/runner/bridges/devServers.js.map +1 -1
- package/dist/runner/coverage.d.ts +3 -3
- package/dist/runner/coverage.js +5 -5
- package/dist/runner/coverage.js.map +1 -1
- package/dist/runner/exitCode.d.ts +7 -7
- package/dist/runner/exitCode.js +7 -7
- package/dist/runner/interpolate.js +1 -1
- package/dist/runner/interpolate.js.map +1 -1
- package/dist/runner/manifest.d.ts +16 -16
- package/dist/runner/manifest.js +12 -12
- package/dist/runner/mode.d.ts +2 -2
- package/dist/runner/mode.js +4 -4
- package/dist/runner/orphanScan.d.ts +3 -3
- package/dist/runner/orphanScan.js +5 -5
- package/dist/runner/orphanScan.js.map +1 -1
- package/dist/runner/resolveLocator.d.ts +5 -5
- package/dist/runner/resolveLocator.js +6 -6
- package/dist/runner/resolveLocator.js.map +1 -1
- package/dist/runner/run.d.ts +55 -18
- package/dist/runner/run.d.ts.map +1 -1
- package/dist/runner/run.js +118 -67
- package/dist/runner/run.js.map +1 -1
- package/dist/runner/runAction.d.ts +4 -4
- package/dist/runner/runAction.d.ts.map +1 -1
- package/dist/runner/runAction.js +103 -39
- package/dist/runner/runAction.js.map +1 -1
- package/dist/runner/runStory.d.ts +29 -18
- package/dist/runner/runStory.d.ts.map +1 -1
- package/dist/runner/runStory.js +38 -42
- package/dist/runner/runStory.js.map +1 -1
- package/dist/runner/scheduler.d.ts +11 -0
- package/dist/runner/scheduler.d.ts.map +1 -1
- package/dist/runner/scheduler.js +1 -1
- package/dist/runner/scheduler.js.map +1 -1
- package/dist/runner/steps/intercept.d.ts +6 -4
- package/dist/runner/steps/intercept.d.ts.map +1 -1
- package/dist/runner/steps/intercept.js.map +1 -1
- package/dist/runner/steps/navigate.d.ts +5 -2
- package/dist/runner/steps/navigate.d.ts.map +1 -1
- package/dist/runner/steps/navigate.js +17 -3
- package/dist/runner/steps/navigate.js.map +1 -1
- package/dist/runner/steps/read.d.ts +1 -1
- package/dist/runner/steps/read.js +1 -1
- package/dist/runner/steps/scroll.d.ts +1 -1
- package/dist/runner/steps/scroll.d.ts.map +1 -1
- package/dist/runner/steps/scroll.js +3 -2
- package/dist/runner/steps/scroll.js.map +1 -1
- package/dist/schema/action.d.ts +2 -2
- package/dist/schema/action.d.ts.map +1 -1
- package/dist/schema/action.js +58 -13
- package/dist/schema/action.js.map +1 -1
- package/dist/schema/load.js +1 -1
- package/dist/schema/load.js.map +1 -1
- package/dist/schema/result.d.ts +22 -22
- package/dist/schema/result.d.ts.map +1 -1
- package/dist/schema/result.js +1 -1
- package/dist/schema/story.d.ts +1 -1
- package/dist/schema/story.js +5 -5
- package/dist/screenshots/baselineStore.d.ts +44 -21
- package/dist/screenshots/baselineStore.d.ts.map +1 -1
- package/dist/screenshots/baselineStore.js +59 -28
- package/dist/screenshots/baselineStore.js.map +1 -1
- package/dist/screenshots/capture.d.ts +35 -4
- package/dist/screenshots/capture.d.ts.map +1 -1
- package/dist/screenshots/capture.js +61 -9
- package/dist/screenshots/capture.js.map +1 -1
- package/dist/screenshots/diff.d.ts +57 -8
- package/dist/screenshots/diff.d.ts.map +1 -1
- package/dist/screenshots/diff.js +78 -28
- package/dist/screenshots/diff.js.map +1 -1
- package/dist/util.d.ts +23 -2
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +42 -2
- package/dist/util.js.map +1 -1
- package/package.json +7 -5
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"runStory.js","sourceRoot":"","sources":["../../src/runner/runStory.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,17 @@ import type { StoryResult } from '../schema/result.ts';
|
|
|
3
3
|
export interface ScheduledStory extends StoryFile {
|
|
4
4
|
needs: string[];
|
|
5
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[];
|
|
6
17
|
}
|
|
7
18
|
export interface ScheduleSummary {
|
|
8
19
|
ready: ScheduledStory[];
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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"}
|
package/dist/runner/scheduler.js
CHANGED
|
@@ -171,7 +171,7 @@ function skipDependents(failed, scheduled, context, ordered) {
|
|
|
171
171
|
// run loop populates, so downstream consumers (report, totals,
|
|
172
172
|
// exit code) see the chain of effects instead of a silent absence.
|
|
173
173
|
ordered.push(item);
|
|
174
|
-
// Propagate skip transitively
|
|
174
|
+
// Propagate skip transitively. The now-skipped item's "produces"
|
|
175
175
|
// labels stay unsatisfied, so other consumers of the same label
|
|
176
176
|
// will be caught by the next loop iteration.
|
|
177
177
|
skipDependents(item, scheduled, context, ordered);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/runner/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/runner/scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { Page } from 'playwright';
|
|
2
|
+
import type { Step } from '../../schema/action.ts';
|
|
3
|
+
type InterceptStep = Extract<Step, {
|
|
4
|
+
kind: 'intercept';
|
|
5
|
+
}>;
|
|
2
6
|
/**
|
|
3
7
|
* Installs a network intercept on the page. `pattern` is a Playwright URL
|
|
4
8
|
* glob (e.g. `**\/api/links`). An optional `method` filter scopes the route
|
|
@@ -6,8 +10,6 @@ import type { Page } from 'playwright';
|
|
|
6
10
|
* breaking sibling requests on the same path (GET /api/links). The intercept
|
|
7
11
|
* stays active for the remainder of the story.
|
|
8
12
|
*/
|
|
9
|
-
export declare function runIntercept(page: Page, pattern: string, respond:
|
|
10
|
-
|
|
11
|
-
body?: unknown;
|
|
12
|
-
}, method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'): Promise<void>;
|
|
13
|
+
export declare function runIntercept(page: Page, pattern: string, respond: InterceptStep['respond'], method?: InterceptStep['method']): Promise<void>;
|
|
14
|
+
export {};
|
|
13
15
|
//# sourceMappingURL=intercept.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intercept.d.ts","sourceRoot":"","sources":["../../../src/runner/steps/intercept.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"intercept.d.ts","sourceRoot":"","sources":["../../../src/runner/steps/intercept.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEnD,KAAK,aAAa,GAAG,OAAO,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,EACjC,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAmBf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intercept.js","sourceRoot":"","sources":["../../../src/runner/steps/intercept.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"intercept.js","sourceRoot":"","sources":["../../../src/runner/steps/intercept.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAU,EACV,OAAe,EACf,OAAiC,EACjC,MAAgC;IAEhC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACxC,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;YAClD,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,yDAAyD;QACzD,+DAA+D;QAC/D,0DAA0D;QAC1D,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QACD,MAAM,KAAK,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;SACnC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { Page } from 'playwright';
|
|
2
|
+
import type { Step } from '../../schema/action.ts';
|
|
2
3
|
import type { ResolvedConfig } from '../../config.ts';
|
|
3
|
-
type
|
|
4
|
-
|
|
4
|
+
type NavigateStep = Extract<Step, {
|
|
5
|
+
kind: 'navigate';
|
|
6
|
+
}>;
|
|
7
|
+
export declare function runNavigate(page: Page, path: string, config: ResolvedConfig, waitUntil?: NavigateStep['waitUntil']): Promise<void>;
|
|
5
8
|
export {};
|
|
6
9
|
//# sourceMappingURL=navigate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../../../src/runner/steps/navigate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,KAAK,
|
|
1
|
+
{"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../../../src/runner/steps/navigate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,KAAK,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC;AAExD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,cAAc,EACtB,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
export async function runNavigate(page, path, config, waitUntil) {
|
|
2
|
-
const url = new URL(path, config.baseUrl)
|
|
3
|
-
|
|
2
|
+
const url = new URL(path, config.baseUrl);
|
|
3
|
+
// Belt-and-suspenders against origin escape: even if the schema guard on
|
|
4
|
+
// `path` ever regresses, a resolved URL that lands on another origin (e.g. a
|
|
5
|
+
// protocol-relative `//evil.com` or a backslash variant browsers normalise
|
|
6
|
+
// to one) must never drive the browser off the configured baseUrl and into a
|
|
7
|
+
// screenshot of an off-origin response.
|
|
8
|
+
const baseOrigin = new URL(config.baseUrl).origin;
|
|
9
|
+
if (url.origin !== baseOrigin) {
|
|
10
|
+
throw new Error(`navigate path "${path}" resolved off-origin to ${url.origin} (expected ${baseOrigin}); refusing to navigate off the configured baseUrl`);
|
|
11
|
+
}
|
|
12
|
+
// Intentional split from the schema-declared defaults: `waitUntil`'s 'load'
|
|
13
|
+
// default stays in the handler (not `.default('load')` in the schema) because
|
|
14
|
+
// runNavigate is a standalone defense boundary. The origin guard above means
|
|
15
|
+
// it is called directly (see navigate.test.ts), so it must supply its own
|
|
16
|
+
// default rather than assume a schema-parsed value.
|
|
17
|
+
await page.goto(url.toString(), {
|
|
4
18
|
timeout: config.navigationTimeoutMs,
|
|
5
|
-
waitUntil: waitUntil ?? '
|
|
19
|
+
waitUntil: waitUntil ?? 'load',
|
|
6
20
|
});
|
|
7
21
|
}
|
|
8
22
|
//# sourceMappingURL=navigate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigate.js","sourceRoot":"","sources":["../../../src/runner/steps/navigate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"navigate.js","sourceRoot":"","sources":["../../../src/runner/steps/navigate.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAU,EACV,IAAY,EACZ,MAAsB,EACtB,SAAqC;IAErC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1C,yEAAyE;IACzE,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,wCAAwC;IACxC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAClD,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,4BAA4B,GAAG,CAAC,MAAM,cAAc,UAAU,oDAAoD,CACzI,CAAC;IACJ,CAAC;IACD,4EAA4E;IAC5E,8EAA8E;IAC9E,6EAA6E;IAC7E,0EAA0E;IAC1E,oDAAoD;IACpD,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;QAC9B,OAAO,EAAE,MAAM,CAAC,mBAAmB;QACnC,SAAS,EAAE,SAAS,IAAI,MAAM;KAC/B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -3,7 +3,7 @@ import type { Hint } from '../../schema/action.ts';
|
|
|
3
3
|
/**
|
|
4
4
|
* Synchronous existence check. Resolves the hint to a Playwright locator
|
|
5
5
|
* and asserts that at least one matching element is currently attached.
|
|
6
|
-
* Does not poll
|
|
6
|
+
* Does not poll. The element must already be on screen by the time the
|
|
7
7
|
* step runs. Use after a click or input that synchronously updates the
|
|
8
8
|
* DOM, when you want a checkpoint that fails fast on a broken hint.
|
|
9
9
|
*/
|
|
@@ -2,7 +2,7 @@ import { LocatorNotFoundError, resolveLocator } from "../resolveLocator.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* Synchronous existence check. Resolves the hint to a Playwright locator
|
|
4
4
|
* and asserts that at least one matching element is currently attached.
|
|
5
|
-
* Does not poll
|
|
5
|
+
* Does not poll. The element must already be on screen by the time the
|
|
6
6
|
* step runs. Use after a click or input that synchronously updates the
|
|
7
7
|
* DOM, when you want a checkpoint that fails fast on a broken hint.
|
|
8
8
|
*/
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Page } from 'playwright';
|
|
2
|
-
export declare function runScroll(page: Page, direction: 'up' | 'down', amount: number
|
|
2
|
+
export declare function runScroll(page: Page, direction: 'up' | 'down', amount: number): Promise<void>;
|
|
3
3
|
//# sourceMappingURL=scroll.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../../src/runner/steps/scroll.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC,wBAAsB,SAAS,CAC7B,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,IAAI,GAAG,MAAM,EACxB,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../../src/runner/steps/scroll.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC,wBAAsB,SAAS,CAC7B,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,IAAI,GAAG,MAAM,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAGf"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
// `amount` is always concrete here: the schema supplies its 600px default
|
|
2
|
+
// (see `scroll.amount` in src/schema/action.ts), so the handler never has to.
|
|
2
3
|
export async function runScroll(page, direction, amount) {
|
|
3
|
-
const delta =
|
|
4
|
+
const delta = amount * (direction === 'up' ? -1 : 1);
|
|
4
5
|
await page.mouse.wheel(0, delta);
|
|
5
6
|
}
|
|
6
7
|
//# sourceMappingURL=scroll.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../src/runner/steps/scroll.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../src/runner/steps/scroll.ts"],"names":[],"mappings":"AAEA,0EAA0E;AAC1E,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAU,EACV,SAAwB,EACxB,MAAc;IAEd,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC"}
|
package/dist/schema/action.d.ts
CHANGED
|
@@ -140,7 +140,7 @@ export declare const stepSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
140
140
|
up: "up";
|
|
141
141
|
down: "down";
|
|
142
142
|
}>;
|
|
143
|
-
amount: z.
|
|
143
|
+
amount: z.ZodDefault<z.ZodNumber>;
|
|
144
144
|
}, z.core.$strip>, z.ZodObject<{
|
|
145
145
|
kind: z.ZodLiteral<"intercept">;
|
|
146
146
|
pattern: z.ZodString;
|
|
@@ -342,7 +342,7 @@ export declare const actionSchema: z.ZodObject<{
|
|
|
342
342
|
up: "up";
|
|
343
343
|
down: "down";
|
|
344
344
|
}>;
|
|
345
|
-
amount: z.
|
|
345
|
+
amount: z.ZodDefault<z.ZodNumber>;
|
|
346
346
|
}, z.core.$strip>, z.ZodObject<{
|
|
347
347
|
kind: z.ZodLiteral<"intercept">;
|
|
348
348
|
pattern: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/schema/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkCrB,CAAC;AAEH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/schema/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkCrB,CAAC;AAEH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAqB9C,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAuGrB,CAAC;AAEH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAE9C,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwDvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
package/dist/schema/action.js
CHANGED
|
@@ -40,17 +40,54 @@ export const hintSchema = z.object({
|
|
|
40
40
|
selector: z.string().min(1).optional(),
|
|
41
41
|
position: z.enum(['header', 'main', 'footer', 'modal']).optional(),
|
|
42
42
|
});
|
|
43
|
+
/**
|
|
44
|
+
* True when `path` contains an ASCII control character (C0 range U+0000–U+001F
|
|
45
|
+
* or DEL U+007F). The WHATWG URL parser strips tab (U+0009), newline (U+000A),
|
|
46
|
+
* and carriage return (U+000D) from a URL BEFORE resolving it, so any of those
|
|
47
|
+
* placed after the leading slash (e.g. `/<TAB>//host`) would slip past the
|
|
48
|
+
* two-char slash-rooted regex and still resolve to a protocol-relative `//host`.
|
|
49
|
+
* Rejecting the whole control range (not just the stripped trio) is the
|
|
50
|
+
* conservative guard: no legitimate root-relative path carries a raw control
|
|
51
|
+
* character. Expressed as a code-point scan rather than a control-character
|
|
52
|
+
* regex literal so the source stays free of embedded control bytes.
|
|
53
|
+
*/
|
|
54
|
+
function containsControlChar(path) {
|
|
55
|
+
for (const char of path) {
|
|
56
|
+
const code = char.charCodeAt(0);
|
|
57
|
+
if (code <= 0x1f || code === 0x7f)
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
43
62
|
export const stepSchema = z.discriminatedUnion('kind', [
|
|
44
63
|
z.object({
|
|
45
64
|
kind: z.literal('navigate'),
|
|
46
|
-
path: z.string().startsWith('/'),
|
|
47
65
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
66
|
+
* Root-relative path, navigated against `config.baseUrl`. Must be a single
|
|
67
|
+
* slash-rooted `/path`: protocol-relative (`//host`), backslash (`/\host`,
|
|
68
|
+
* which browsers normalise to `//host`), and absolute-URL forms are
|
|
69
|
+
* rejected so a story can never drive the browser off the target origin.
|
|
70
|
+
* Control characters are rejected too, because the WHATWG URL parser strips
|
|
71
|
+
* ASCII tab (U+0009), newline (U+000A), and carriage return (U+000D) BEFORE
|
|
72
|
+
* it resolves the path: a tab (or newline/CR) after the leading slash (e.g.
|
|
73
|
+
* `/<TAB>//host`) would otherwise slip past the two-char slash-rooted check
|
|
74
|
+
* and resolve to a protocol-relative `//host`. The runner re-asserts the
|
|
75
|
+
* resolved origin as defense in depth.
|
|
76
|
+
*/
|
|
77
|
+
path: z
|
|
78
|
+
.string()
|
|
79
|
+
.regex(/^\/(?![/\\])/, 'navigate path must be a slash-rooted "/path"; protocol-relative ("//host"), backslash ("/\\host"), and absolute-URL forms are rejected')
|
|
80
|
+
.refine((value) => !containsControlChar(value), {
|
|
81
|
+
message: 'navigate path must not contain control characters; the URL parser strips tab, newline, and carriage return before resolving, so a control char could smuggle a protocol-relative "//host" past the slash-rooted check',
|
|
82
|
+
}),
|
|
83
|
+
/**
|
|
84
|
+
* Override Playwright's `page.goto` ready signal. Defaults to `'load'`.
|
|
85
|
+
* `'networkidle'` remains available as an explicit opt-in but is a poor
|
|
86
|
+
* default: on apps with long-lived sockets or polling it never settles, so
|
|
87
|
+
* every navigation stalls to the full navigation timeout. Opt into
|
|
88
|
+
* `'networkidle'` only for pages you know go quiet; use `'commit'` or
|
|
89
|
+
* `'domcontentloaded'` for earlier ready signals. See Playwright docs for
|
|
90
|
+
* full semantics.
|
|
54
91
|
*/
|
|
55
92
|
waitUntil: z
|
|
56
93
|
.enum(['load', 'domcontentloaded', 'networkidle', 'commit'])
|
|
@@ -68,7 +105,13 @@ export const stepSchema = z.discriminatedUnion('kind', [
|
|
|
68
105
|
z.object({
|
|
69
106
|
kind: z.literal('scroll'),
|
|
70
107
|
direction: z.enum(['up', 'down']),
|
|
71
|
-
|
|
108
|
+
/**
|
|
109
|
+
* Wheel distance in pixels. Defaults to 600 (roughly a viewport's worth
|
|
110
|
+
* of scroll) so a story can request "scroll down" without picking a number.
|
|
111
|
+
* The default is applied here (declaratively, like the other step defaults)
|
|
112
|
+
* so the handler receives a concrete value.
|
|
113
|
+
*/
|
|
114
|
+
amount: z.number().int().positive().default(600),
|
|
72
115
|
}),
|
|
73
116
|
z.object({
|
|
74
117
|
kind: z.literal('intercept'),
|
|
@@ -85,7 +128,7 @@ export const stepSchema = z.discriminatedUnion('kind', [
|
|
|
85
128
|
}),
|
|
86
129
|
/**
|
|
87
130
|
* Instant assertion that a hint resolves to an attached element. Unlike
|
|
88
|
-
* `waitFor`, does not poll
|
|
131
|
+
* `waitFor`, does not poll. The element must already be present when
|
|
89
132
|
* the step runs. Use as a mid-flow checkpoint after a click/input that
|
|
90
133
|
* synchronously updates the DOM.
|
|
91
134
|
*/
|
|
@@ -143,9 +186,11 @@ export const actionSchema = z.object({
|
|
|
143
186
|
})
|
|
144
187
|
.optional(),
|
|
145
188
|
/**
|
|
146
|
-
* Bounded retry budget for individual steps. Wraps each step's dispatch so
|
|
147
|
-
*
|
|
148
|
-
*
|
|
189
|
+
* Bounded retry budget for individual steps. Wraps each step's dispatch so a
|
|
190
|
+
* transient fault does not fail the action immediately: a LocatorNotFoundError
|
|
191
|
+
* (target not yet hydrated) or any bounded Playwright TimeoutError: a
|
|
192
|
+
* navigation that missed its ready signal, or a step-level click/input/waitFor
|
|
193
|
+
* whose own timeout elapsed. Steps that succeed on the first try cost no retry.
|
|
149
194
|
*/
|
|
150
195
|
retry: z
|
|
151
196
|
.object({
|
|
@@ -158,7 +203,7 @@ export const actionSchema = z.object({
|
|
|
158
203
|
/**
|
|
159
204
|
* Pixelmatch per-pixel similarity. Tighter values flag more pixels
|
|
160
205
|
* as changed; loosens anti-aliasing tolerance as it grows. Only
|
|
161
|
-
* controls how the diff PNG is computed
|
|
206
|
+
* controls how the diff PNG is computed. It does not gate the
|
|
162
207
|
* action's pass/changed status.
|
|
163
208
|
*/
|
|
164
209
|
pixelThreshold: z.number().min(0).max(1).default(0.1),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/schema/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC;QACJ,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,UAAU;QACV,UAAU;QACV,QAAQ;QACR,MAAM;QACN,SAAS;QACT,MAAM;QACN,MAAM;QACN,UAAU;QACV,MAAM;QACN,MAAM;QACN,UAAU;QACV,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,OAAO;QACP,QAAQ;QACR,KAAK;QACL,WAAW;QACX,QAAQ;QACR,QAAQ;QACR,KAAK;QACL,OAAO;QACP,SAAS;KACV,CAAC;SACD,QAAQ,EAAE;IACb,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;CACnE,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACrD,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3B,IAAI,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/schema/action.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/load.js
CHANGED
|
@@ -36,7 +36,7 @@ export async function loadStories(storiesDir) {
|
|
|
36
36
|
const file = basename(path);
|
|
37
37
|
const previousPath = seenBasenames.get(file);
|
|
38
38
|
if (previousPath !== undefined) {
|
|
39
|
-
throw new LoadError(path, `duplicate story filename "${file}"
|
|
39
|
+
throw new LoadError(path, `duplicate story filename "${file}"; already loaded from ${previousPath}. ` +
|
|
40
40
|
`Story files are addressed by basename, so two files with the same name in ` +
|
|
41
41
|
`different subdirectories collide. Rename one.`);
|
|
42
42
|
}
|
package/dist/schema/load.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/schema/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAe,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAErD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAAkB;IAElB,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,KAAK,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,SAAS,CACjB,IAAI,EACJ,0BAA0B,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAChD,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAkB;IAClD,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,KAAK,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,SAAS,CACjB,IAAI,EACJ,6BAA6B,IAAI,
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/schema/load.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/result.d.ts
CHANGED
|
@@ -5,14 +5,14 @@ import type { EnvironmentManifest } from '../runner/manifest.ts';
|
|
|
5
5
|
* consumes it to render the HTML report. Status values map onto the three
|
|
6
6
|
* outcomes the framework distinguishes:
|
|
7
7
|
*
|
|
8
|
-
* - `pass
|
|
9
|
-
* - `changed
|
|
8
|
+
* - `pass`: action succeeded and screenshot matched baseline (or no baseline).
|
|
9
|
+
* - `changed`: action succeeded but the baseline drifted: the screenshot moved
|
|
10
10
|
* past the threshold, or (CI mode) pixels matched while the accessibility-tree
|
|
11
11
|
* snapshot drifted. The story does not fail. The user reviews and either
|
|
12
12
|
* approves the new baseline or files a bug.
|
|
13
|
-
* - `new
|
|
14
|
-
* regression
|
|
15
|
-
* - `failed
|
|
13
|
+
* - `new`: no baseline existed; one was written this run. Informational, not a
|
|
14
|
+
* regression. There is nothing to compare against yet.
|
|
15
|
+
* - `failed`: a step threw. The story fails fast and skips any later actions.
|
|
16
16
|
*/
|
|
17
17
|
export type ActionStatus = 'pass' | 'changed' | 'failed' | 'skipped' | 'new';
|
|
18
18
|
export interface ActionResult {
|
|
@@ -29,8 +29,8 @@ export interface ActionResult {
|
|
|
29
29
|
breakpoint?: string;
|
|
30
30
|
/**
|
|
31
31
|
* Viewport dimensions this result was actually captured at. Carried alongside
|
|
32
|
-
* `breakpoint` so the reporter labels each group with the real size
|
|
33
|
-
* including per-config and per-story overrides
|
|
32
|
+
* `breakpoint` so the reporter labels each group with the real size
|
|
33
|
+
* (including per-config and per-story overrides) rather than a registry
|
|
34
34
|
* lookup that would show stale dimensions for an overridden mode. Optional in
|
|
35
35
|
* the type only as a defensive parse guard; the runner always records them.
|
|
36
36
|
*/
|
|
@@ -49,8 +49,8 @@ export interface ActionResult {
|
|
|
49
49
|
/**
|
|
50
50
|
* Structured baseline/actual dimensions for the size-mismatch `changed` branch
|
|
51
51
|
* (a screenshot whose baseline and actual differ in size, so no pixel diff can
|
|
52
|
-
* be computed). Carried alongside `failureMessage`
|
|
53
|
-
* as prose
|
|
52
|
+
* be computed). Carried alongside `failureMessage` (which holds the same fact
|
|
53
|
+
* as prose) so the reporter can render the dimensions in an accessible split
|
|
54
54
|
* idiom (a spoken "W by H pixels" longhand) instead of string-parsing the
|
|
55
55
|
* message. Set ONLY by the size-mismatch branch of `runAction`; absent on every
|
|
56
56
|
* other result, in which case the reporter falls back to `failureMessage`.
|
|
@@ -70,7 +70,7 @@ export interface ActionResult {
|
|
|
70
70
|
diffPath?: string;
|
|
71
71
|
diffPixels?: number;
|
|
72
72
|
diffRatio?: number;
|
|
73
|
-
/** Mean SSIM score of baseline vs actual
|
|
73
|
+
/** Mean SSIM score of baseline vs actual. See screenshots/diff.ts. */
|
|
74
74
|
ssimScore?: number;
|
|
75
75
|
/**
|
|
76
76
|
* `true` when the captured page accessibility tree differs from the
|
|
@@ -83,7 +83,7 @@ export interface ActionResult {
|
|
|
83
83
|
* `a11yChanged === true`, never by the absence of `diffPath` alone. Both
|
|
84
84
|
* pixel-drift branches (SSIM-fail and size-mismatch) carry a `diffPath` /
|
|
85
85
|
* `failureMessage` and deliberately leave `a11yChanged` unset, so the two
|
|
86
|
-
* classes never collide
|
|
86
|
+
* classes never collide; but the size-mismatch branch's omission of
|
|
87
87
|
* `a11yChanged` is the load-bearing half of that guarantee and is locked by
|
|
88
88
|
* runAction's `never carries a11yChanged` test. Consumers MUST branch on
|
|
89
89
|
* `a11yChanged === true`; a `!diffPath` heuristic would misread a future
|
|
@@ -103,7 +103,7 @@ export interface ActionResult {
|
|
|
103
103
|
/**
|
|
104
104
|
* Story-wide rollup of its action results. Precedence (worst wins):
|
|
105
105
|
* `failed` > `changed` > `new` > `pass`. A story is `new` only when it wrote at
|
|
106
|
-
* least one fresh baseline and had no `changed`/`failed` action
|
|
106
|
+
* least one fresh baseline and had no `changed`/`failed` action, so a run of
|
|
107
107
|
* first-time stories no longer masquerades as `changed`.
|
|
108
108
|
*/
|
|
109
109
|
export type StoryStatus = 'pass' | 'changed' | 'failed' | 'new';
|
|
@@ -128,7 +128,7 @@ export interface CoverageMetric {
|
|
|
128
128
|
* One orphaned committed baseline: an entry under `paths.baselines` whose action
|
|
129
129
|
* ran no story this run, so nothing compared against it. Recorded (CI mode,
|
|
130
130
|
* unfiltered runs only) so the report can surface it and a later `approve
|
|
131
|
-
* --prune` can delete it
|
|
131
|
+
* --prune` can delete it. This wave detects, it never removes.
|
|
132
132
|
*
|
|
133
133
|
* Keyed per breakpoint rather than per action so a partially-orphaned action
|
|
134
134
|
* (some breakpoints retired, others still live) could in principle be expressed;
|
|
@@ -136,7 +136,7 @@ export interface CoverageMetric {
|
|
|
136
136
|
* it left behind. `breakpoint` is the mode name (`mobile`/`desktop`/…) for the
|
|
137
137
|
* breakpoint-keyed `<action>/<breakpoint>.png` layout, or `'legacy'` for the
|
|
138
138
|
* pre-breakpoint `<action>/0.png` layout. `baselinePaths` are the absolute paths
|
|
139
|
-
* the prune step deletes
|
|
139
|
+
* the prune step deletes (the PNG plus its a11y companion when one exists), so
|
|
140
140
|
* wave 7 prunes a flat path list without re-deriving layout.
|
|
141
141
|
*/
|
|
142
142
|
export interface DeletedBaseline {
|
|
@@ -149,7 +149,7 @@ export interface DeletedBaseline {
|
|
|
149
149
|
* own output, the one JSON re-entry point that skips the zod validation every
|
|
150
150
|
* input file gets. A truncated or stale-schema artifact would otherwise throw
|
|
151
151
|
* an opaque TypeError deep in the approval loop; this fails loudly with the
|
|
152
|
-
* file path instead. Validation is intentionally shallow
|
|
152
|
+
* file path instead. Validation is intentionally shallow, enough to trust the
|
|
153
153
|
* `stories[].actions[]` walk, not a full structural mirror.
|
|
154
154
|
*/
|
|
155
155
|
export declare function parseRunResult(raw: string, sourcePath: string): RunResult;
|
|
@@ -158,15 +158,15 @@ export declare function parseRunResult(raw: string, sourcePath: string): RunResu
|
|
|
158
158
|
* Action, and a human diagnose an environment drift between the committed
|
|
159
159
|
* baselines and the run that compared against them.
|
|
160
160
|
*
|
|
161
|
-
* - `expected
|
|
161
|
+
* - `expected`: the committed `<baselines>/manifest.json` when one exists and
|
|
162
162
|
* parses, else `null`. `null` covers both the bootstrap case (no manifest
|
|
163
|
-
* written yet
|
|
163
|
+
* written yet, the first `approve --from` creates it) and local mode, which
|
|
164
164
|
* never reads `paths.baselines` at all.
|
|
165
|
-
* - `actual
|
|
166
|
-
* - `mismatch
|
|
165
|
+
* - `actual`: the environment this run actually captured under.
|
|
166
|
+
* - `mismatch`: `true` when a pixel-affecting key diverged (CI mode with a
|
|
167
167
|
* present manifest), or when the committed manifest was unreadable. Always
|
|
168
168
|
* `false` in local mode and on the bootstrap (missing-manifest) case.
|
|
169
|
-
* - `mismatchKeys
|
|
169
|
+
* - `mismatchKeys`: the specific diverging keys (see `PIXEL_AFFECTING_KEYS`),
|
|
170
170
|
* or `['manifest']` when the committed manifest could not be parsed. Empty
|
|
171
171
|
* when `mismatch` is `false`.
|
|
172
172
|
*/
|
|
@@ -196,7 +196,7 @@ export interface RunResult {
|
|
|
196
196
|
/** Stories whose rollup status is `new` (wrote a fresh baseline, no drift). */
|
|
197
197
|
new: number;
|
|
198
198
|
/**
|
|
199
|
-
* Orphaned committed baselines detected this run
|
|
199
|
+
* Orphaned committed baselines detected this run (the length of `deleted`).
|
|
200
200
|
* CI mode + unfiltered runs only; `0` in local mode and on any filtered run
|
|
201
201
|
* (where unselected stories' baselines are not orphans, merely unvisited).
|
|
202
202
|
*/
|
|
@@ -207,7 +207,7 @@ export interface RunResult {
|
|
|
207
207
|
* ran no story this run. Populated only for an unfiltered CI run (see
|
|
208
208
|
* {@link DeletedBaseline}); empty in local mode and on filtered runs, where a
|
|
209
209
|
* baseline going unvisited says nothing about whether its story still exists.
|
|
210
|
-
* Detection only
|
|
210
|
+
* Detection only. Pruning is a later wave.
|
|
211
211
|
*/
|
|
212
212
|
deleted: DeletedBaseline[];
|
|
213
213
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/schema/result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC;AAE7E,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE;QACb,QAAQ,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5C,MAAM,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC3C,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,
|
|
1
|
+
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/schema/result.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/result.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* own output, the one JSON re-entry point that skips the zod validation every
|
|
4
4
|
* input file gets. A truncated or stale-schema artifact would otherwise throw
|
|
5
5
|
* an opaque TypeError deep in the approval loop; this fails loudly with the
|
|
6
|
-
* file path instead. Validation is intentionally shallow
|
|
6
|
+
* file path instead. Validation is intentionally shallow, enough to trust the
|
|
7
7
|
* `stories[].actions[]` walk, not a full structural mirror.
|
|
8
8
|
*/
|
|
9
9
|
export function parseRunResult(raw, sourcePath) {
|