@plan2net/typo3-playwright-toolkit 0.21.1 → 0.23.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/README.md +43 -3
- package/dist/builders/content-builder.d.ts +4 -0
- package/dist/builders/content-builder.d.ts.map +1 -1
- package/dist/builders/content-builder.js +10 -0
- package/dist/builders/content-builder.js.map +1 -1
- package/dist/builders/page-builder.d.ts +3 -1
- package/dist/builders/page-builder.d.ts.map +1 -1
- package/dist/builders/page-builder.js +18 -14
- package/dist/builders/page-builder.js.map +1 -1
- package/dist/builders/relations.d.ts.map +1 -1
- package/dist/builders/relations.js +3 -2
- package/dist/builders/relations.js.map +1 -1
- package/dist/builders/request-context.d.ts +1 -0
- package/dist/builders/request-context.d.ts.map +1 -1
- package/dist/builders/request-context.js +1 -0
- package/dist/builders/request-context.js.map +1 -1
- package/dist/checks/csp.d.ts.map +1 -1
- package/dist/checks/csp.js +4 -1
- package/dist/checks/csp.js.map +1 -1
- package/dist/checks/screenshot.d.ts +3 -1
- package/dist/checks/screenshot.d.ts.map +1 -1
- package/dist/checks/screenshot.js +7 -4
- package/dist/checks/screenshot.js.map +1 -1
- package/dist/clean/cli.js +12 -7
- package/dist/clean/cli.js.map +1 -1
- package/dist/contract.d.ts +2 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +2 -0
- package/dist/contract.js.map +1 -1
- package/dist/global-setup.d.ts +2 -0
- package/dist/global-setup.d.ts.map +1 -1
- package/dist/global-setup.js +28 -5
- package/dist/global-setup.js.map +1 -1
- package/dist/global-teardown.d.ts +5 -1
- package/dist/global-teardown.d.ts.map +1 -1
- package/dist/global-teardown.js +9 -6
- package/dist/global-teardown.js.map +1 -1
- package/dist/http/off-site-headers.d.ts +1 -1
- package/dist/http/off-site-headers.d.ts.map +1 -1
- package/dist/http/off-site-headers.js +3 -3
- package/dist/http/off-site-headers.js.map +1 -1
- package/dist/http/record-edit.d.ts +1 -0
- package/dist/http/record-edit.d.ts.map +1 -1
- package/dist/http/record-edit.js +5 -2
- package/dist/http/record-edit.js.map +1 -1
- package/dist/http/toolkit-request.d.ts +2 -1
- package/dist/http/toolkit-request.d.ts.map +1 -1
- package/dist/http/toolkit-request.js +14 -4
- package/dist/http/toolkit-request.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/inspect/links.d.ts +0 -2
- package/dist/inspect/links.d.ts.map +1 -1
- package/dist/inspect/links.js +25 -9
- package/dist/inspect/links.js.map +1 -1
- package/dist/scenario.d.ts +8 -3
- package/dist/scenario.d.ts.map +1 -1
- package/dist/scenario.js +52 -41
- package/dist/scenario.js.map +1 -1
- package/dist/sites/probe.d.ts +8 -0
- package/dist/sites/probe.d.ts.map +1 -0
- package/dist/sites/probe.js +50 -0
- package/dist/sites/probe.js.map +1 -0
- package/dist/sites/registry.d.ts +31 -0
- package/dist/sites/registry.d.ts.map +1 -0
- package/dist/sites/registry.js +97 -0
- package/dist/sites/registry.js.map +1 -0
- package/dist/state/attempt-registry.d.ts +5 -0
- package/dist/state/attempt-registry.d.ts.map +1 -1
- package/dist/state/attempt-registry.js +3 -0
- package/dist/state/attempt-registry.js.map +1 -1
- package/dist/state/run-namespace.d.ts.map +1 -1
- package/dist/state/run-namespace.js +2 -0
- package/dist/state/run-namespace.js.map +1 -1
- package/dist/state/testing-url.d.ts +3 -0
- package/dist/state/testing-url.d.ts.map +1 -0
- package/dist/state/testing-url.js +21 -0
- package/dist/state/testing-url.js.map +1 -0
- package/dist/types/playwright-extensions.d.ts +2 -0
- package/dist/types/playwright-extensions.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { defineScenario, type ScenarioBuilders, type ScenarioFixtures, type SetupTools, } from './scenario.js';
|
|
1
|
+
export { defineScenario, type ScenarioBuilders, type ScenarioFixtures, type ScenarioOptions, type SetupTools, } from './scenario.js';
|
|
2
|
+
export { siteURL } from './sites/registry.js';
|
|
2
3
|
export { expect } from '@playwright/test';
|
|
3
4
|
export { defineToolkitConfig, getToolkitConfig, type ToolkitConfig, type ToolkitConfigInput, type ToolkitPaths, type ToolkitScreenshotConfig, type ContentTypeConstructor, } from './config.js';
|
|
4
5
|
export { defineBasePlaywrightConfig, type BasePlaywrightOverrides } from './playwright/base-config.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,UAAU,GAClB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EACH,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,GAC9B,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,0BAA0B,EAAE,KAAK,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAEtG,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAGxD,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACzF,OAAO,EACH,WAAW,EACX,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,cAAc,EACd,WAAW,EACX,cAAc,EACd,eAAe,EACf,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,kBAAkB,GAC1B,MAAM,4BAA4B,CAAA;AACnC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEtE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,EACH,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,wBAAwB,GAChC,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9E,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAC9D,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AACxF,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,UAAU,GAClB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EACH,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,GAC9B,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,0BAA0B,EAAE,KAAK,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAEtG,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAGxD,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACzF,OAAO,EACH,WAAW,EACX,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,cAAc,EACd,WAAW,EACX,cAAc,EACd,eAAe,EACf,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,kBAAkB,GAC1B,MAAM,4BAA4B,CAAA;AACnC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEtE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,EACH,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,wBAAwB,GAChC,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9E,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAC9D,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AACxF,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { defineScenario, } from './scenario.js';
|
|
2
|
+
export { siteURL } from './sites/registry.js';
|
|
2
3
|
export { expect } from '@playwright/test';
|
|
3
4
|
export { defineToolkitConfig, getToolkitConfig, } from './config.js';
|
|
4
5
|
export { defineBasePlaywrightConfig } from './playwright/base-config.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,GAKjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EACH,mBAAmB,EACnB,gBAAgB,GAMnB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,0BAA0B,EAAgC,MAAM,6BAA6B,CAAA;AAEtG,OAAO,EAAE,cAAc,EAAsB,MAAM,+BAA+B,CAAA;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAIxD,OAAO,EACH,WAAW,EACX,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,cAAc,EACd,WAAW,EACX,cAAc,EACd,eAAe,EACf,WAAW,GAGd,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEtE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,EACH,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,GAEpB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,WAAW,EAAmC,MAAM,iBAAiB,CAAA;AAE9E,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA"}
|
package/dist/inspect/links.d.ts
CHANGED
|
@@ -7,6 +7,4 @@ export interface InspectLink {
|
|
|
7
7
|
}
|
|
8
8
|
export declare function findStateDir(from: string): string | undefined;
|
|
9
9
|
export declare function inspectLinks(stateDir: string, secret: string, now?: number): InspectLink[];
|
|
10
|
-
/** Every run of a project records the same URL, so the newest one that has it wins. */
|
|
11
|
-
export declare function recordedTestingUrl(stateDir: string): string | undefined;
|
|
12
10
|
//# sourceMappingURL=links.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/inspect/links.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiB7D;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/inspect/links.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiB7D;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,WAAW,EAAE,CAwBtG"}
|
package/dist/inspect/links.js
CHANGED
|
@@ -28,8 +28,10 @@ export function inspectLinks(stateDir, secret, now = Date.now()) {
|
|
|
28
28
|
if (undefined === testingURL) {
|
|
29
29
|
return [];
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
const attemptsFile = path.join(runDir, 'attempts.jsonl');
|
|
32
|
+
const dropped = readDroppedTestIds(attemptsFile);
|
|
33
|
+
return readAttemptsFrom(attemptsFile)
|
|
34
|
+
.filter((attempt) => 'preflight' !== attempt.key && !dropped.has(attempt.testId))
|
|
33
35
|
.map((attempt) => ({
|
|
34
36
|
runId,
|
|
35
37
|
key: attempt.key,
|
|
@@ -39,13 +41,27 @@ export function inspectLinks(stateDir, secret, now = Date.now()) {
|
|
|
39
41
|
}));
|
|
40
42
|
});
|
|
41
43
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
.
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
function readDroppedTestIds(attemptsFile) {
|
|
45
|
+
const dropped = new Set();
|
|
46
|
+
let lines;
|
|
47
|
+
try {
|
|
48
|
+
lines = fs.readFileSync(attemptsFile, 'utf-8').split('\n');
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return dropped;
|
|
52
|
+
}
|
|
53
|
+
for (const line of lines) {
|
|
54
|
+
try {
|
|
55
|
+
const record = JSON.parse(line);
|
|
56
|
+
if ('dropped' === record.type && 'string' === typeof record.testId) {
|
|
57
|
+
dropped.add(record.testId);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return dropped;
|
|
49
65
|
}
|
|
50
66
|
function readTestingUrl(metaFile) {
|
|
51
67
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/inspect/links.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAUvC,MAAM,UAAU,YAAY,CAAC,IAAY;IACrC,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAElC,SAAS,CAAC;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;QACrD,wEAAwE;QACxE,8DAA8D;QAC9D,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO,SAAS,CAAA;QACpB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,SAAS,CAAA;QACpB,CAAC;QACD,SAAS,GAAG,MAAM,CAAA;IACtB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,MAAc,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IACnF,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;SAC5B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;SACzE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAE1E,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QACtC,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;QACjE,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC3B,OAAO,EAAE,CAAA;QACb,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/inspect/links.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAUvC,MAAM,UAAU,YAAY,CAAC,IAAY;IACrC,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAElC,SAAS,CAAC;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;QACrD,wEAAwE;QACxE,8DAA8D;QAC9D,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO,SAAS,CAAA;QACpB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,SAAS,CAAA;QACpB,CAAC;QACD,SAAS,GAAG,MAAM,CAAA;IACtB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,MAAc,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IACnF,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;SAC5B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;SACzE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAE1E,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QACtC,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;QACjE,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC3B,OAAO,EAAE,CAAA;QACb,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;QACxD,MAAM,OAAO,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAA;QAEhD,OAAO,gBAAgB,CAAC,YAAY,CAAC;aAChC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChF,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACf,KAAK;YACL,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG;YACjC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,EAAE,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SAC3D,CAAC,CAAC,CAAA;IACX,CAAC,CAAC,CAAA;AACN,CAAC;AAED,SAAS,kBAAkB,CAAC,YAAoB;IAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IACjC,IAAI,KAAe,CAAA;IACnB,IAAI,CAAC;QACD,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC9D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,OAAO,CAAA;IAClB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAyC,CAAA;YACvE,IAAI,SAAS,KAAK,MAAM,CAAC,IAAI,IAAI,QAAQ,KAAK,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC9B,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,SAAQ;QACZ,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAA;AAClB,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB;IACpC,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAA6B,CAAA;QAEvF,OAAO,QAAQ,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5E,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAA;IACpB,CAAC;AACL,CAAC"}
|
package/dist/scenario.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { type ReplayFolder, type RequestContext } from './builders/request-conte
|
|
|
4
4
|
import { type RecordToSave, type SavedRecord } from './http/record-edit.js';
|
|
5
5
|
import { ContentBuilder, type QueuedContent } from './builders/content-builder.js';
|
|
6
6
|
import { PageBuilder } from './builders/page-builder.js';
|
|
7
|
+
import { type ScenarioSite } from './sites/registry.js';
|
|
7
8
|
type SetupFailureReporter = (config: ToolkitConfig, scenarioKey: string, testInfo: TestInfo, error: unknown) => Promise<never>;
|
|
8
9
|
/** A failed setup throws out of ensureState, so it never reaches the fixture's end. */
|
|
9
10
|
export declare function resolveSetupOutcome<T>(config: ToolkitConfig, scenarioKey: string, testInfo: TestInfo, run: () => Promise<T>, report?: SetupFailureReporter): Promise<T>;
|
|
@@ -33,9 +34,13 @@ export interface ScenarioFixtures<S> {
|
|
|
33
34
|
state: S;
|
|
34
35
|
testId: string;
|
|
35
36
|
}
|
|
37
|
+
export interface ScenarioOptions {
|
|
38
|
+
site?: string;
|
|
39
|
+
}
|
|
36
40
|
interface ResolvedScenario<S> {
|
|
37
41
|
data: S;
|
|
38
42
|
testId: string;
|
|
43
|
+
site: ScenarioSite;
|
|
39
44
|
}
|
|
40
45
|
/**
|
|
41
46
|
* What the backend shows beside the site name, so whoever opens an inspect link
|
|
@@ -48,8 +53,8 @@ export declare function createScenarioFolder(page: Page, builderContext: Partial
|
|
|
48
53
|
export declare function buildScenarioContext(page: Page, config: ToolkitConfig, session: {
|
|
49
54
|
backendPath: string;
|
|
50
55
|
routeToken: string;
|
|
51
|
-
}, testId: string, name: string): Promise<Partial<RequestContext>>;
|
|
52
|
-
export declare function openAuthenticatedPage(browser: Browser, config: ToolkitConfig, testId: string, name?: string): Promise<{
|
|
56
|
+
}, testId: string, name: string, site?: ScenarioSite): Promise<Partial<RequestContext>>;
|
|
57
|
+
export declare function openAuthenticatedPage(browser: Browser, config: ToolkitConfig, testId: string, name?: string, site?: ScenarioSite): Promise<{
|
|
53
58
|
page: Page;
|
|
54
59
|
routeToken: string;
|
|
55
60
|
backendPath: string;
|
|
@@ -63,7 +68,7 @@ export declare function claimScenarioFile(file: string, owner: symbol): void;
|
|
|
63
68
|
* One test file is one scenario: the first test that needs state runs the setup,
|
|
64
69
|
* the rest wait for it or are skipped if it failed.
|
|
65
70
|
*/
|
|
66
|
-
export declare function defineScenario<S = Record<string, never>>(setup?: (tools: SetupTools) => Promise<S
|
|
71
|
+
export declare function defineScenario<S = Record<string, never>>(setup?: (tools: SetupTools) => Promise<S>, options?: ScenarioOptions): import("@playwright/test").TestType<import("@playwright/test").PlaywrightTestArgs & import("@playwright/test").PlaywrightTestOptions & ScenarioFixtures<S> & {
|
|
67
72
|
resolvedScenario: ResolvedScenario<S>;
|
|
68
73
|
automaticAccessibilityScan: void;
|
|
69
74
|
}, import("@playwright/test").PlaywrightWorkerArgs & import("@playwright/test").PlaywrightWorkerOptions>;
|
package/dist/scenario.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenario.d.ts","sourceRoot":"","sources":["../src/scenario.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,iBAAiB,EAAE,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAI/G,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAIlE,OAAO,EAGH,KAAK,YAAY,EACjB,KAAK,cAAc,EACtB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAe,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxF,OAAO,EAAE,cAAc,EAAa,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"scenario.d.ts","sourceRoot":"","sources":["../src/scenario.ts"],"names":[],"mappings":"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"}
|
package/dist/scenario.js
CHANGED
|
@@ -14,6 +14,7 @@ import { applyToolkitHeaders } from './http/off-site-headers.js';
|
|
|
14
14
|
import { prepareScenarioContext } from './http/prepare-context.js';
|
|
15
15
|
import { toolkitRequest } from './http/toolkit-request.js';
|
|
16
16
|
import { runAccessibilityScan, shouldScanAutomatically } from './checks/accessibility.js';
|
|
17
|
+
import { readSitesFile, resolveScenarioSite, siteCacheKey } from './sites/registry.js';
|
|
17
18
|
import { reportRecordedErrors, reportSetupFailure } from './report/recorded-error-report.js';
|
|
18
19
|
/** A failed setup throws out of ensureState, so it never reaches the fixture's end. */
|
|
19
20
|
export async function resolveSetupOutcome(config, scenarioKey, testInfo, run, report = reportSetupFailure) {
|
|
@@ -44,17 +45,18 @@ export async function createScenarioFolder(page, builderContext, name) {
|
|
|
44
45
|
// Or TYPO3 derives one from the title and the scenario's own page,
|
|
45
46
|
// wanting "/news" too, has to take "/news-1".
|
|
46
47
|
.withField('slug', `/replay-${name}`)
|
|
47
|
-
.atParentId(FIXTURE_ROOT_ID)
|
|
48
|
+
.atParentId(builderContext.rootPageId ?? FIXTURE_ROOT_ID)
|
|
48
49
|
.create();
|
|
49
50
|
return { id: folder.id, ownPages: new Set() };
|
|
50
51
|
}
|
|
51
|
-
export async function buildScenarioContext(page, config, session, testId, name) {
|
|
52
|
+
export async function buildScenarioContext(page, config, session, testId, name, site) {
|
|
52
53
|
const context = {
|
|
53
54
|
testId,
|
|
54
55
|
baseUrl: config.testingURL,
|
|
55
56
|
backendPath: session.backendPath,
|
|
56
57
|
routeToken: session.routeToken,
|
|
57
58
|
usedSlugs: new Set(),
|
|
59
|
+
rootPageId: site?.rootPageId,
|
|
58
60
|
};
|
|
59
61
|
if (!config.replay) {
|
|
60
62
|
return context;
|
|
@@ -62,9 +64,9 @@ export async function buildScenarioContext(page, config, session, testId, name)
|
|
|
62
64
|
// Built from a context with no folder, or it would land inside itself.
|
|
63
65
|
return { ...context, replayFolder: await createScenarioFolder(page, context, name) };
|
|
64
66
|
}
|
|
65
|
-
export async function openAuthenticatedPage(browser, config, testId, name = '') {
|
|
67
|
+
export async function openAuthenticatedPage(browser, config, testId, name = '', site) {
|
|
66
68
|
const headers = toolkitHeaders(config, testId);
|
|
67
|
-
const context = await browser.newContext({ ignoreHTTPSErrors: true });
|
|
69
|
+
const context = await browser.newContext({ ignoreHTTPSErrors: true, baseURL: site?.base, serviceWorkers: 'block' });
|
|
68
70
|
// The close handle is only returned on success, so a failure closes its own context.
|
|
69
71
|
try {
|
|
70
72
|
await applyToolkitHeaders(context, config, testId);
|
|
@@ -129,7 +131,7 @@ export function claimScenarioFile(file, owner) {
|
|
|
129
131
|
* One test file is one scenario: the first test that needs state runs the setup,
|
|
130
132
|
* the rest wait for it or are skipped if it failed.
|
|
131
133
|
*/
|
|
132
|
-
export function defineScenario(setup) {
|
|
134
|
+
export function defineScenario(setup, options = {}) {
|
|
133
135
|
const owner = Symbol('scenario');
|
|
134
136
|
return base.extend({
|
|
135
137
|
resolvedScenario: [async ({ browser }, use, testInfo) => {
|
|
@@ -137,38 +139,42 @@ export function defineScenario(setup) {
|
|
|
137
139
|
const config = getToolkitConfig();
|
|
138
140
|
const key = sanitizeScenarioKey(testInfo.file);
|
|
139
141
|
const name = scenarioName(testInfo.file);
|
|
140
|
-
const outcome = await resolveSetupOutcome(config, key, testInfo, () =>
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
testId,
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
142
|
+
const { outcome, site } = await resolveSetupOutcome(config, key, testInfo, async () => {
|
|
143
|
+
const site = resolveScenarioSite(config, readSitesFile(config), options.site);
|
|
144
|
+
const outcome = await ensureState(config, {
|
|
145
|
+
key,
|
|
146
|
+
name,
|
|
147
|
+
triggerId: testInfo.testId,
|
|
148
|
+
setupCache: setupCacheUse(config, suiteRootOf(testInfo), siteCacheKey(key, site)),
|
|
149
|
+
setup: async ({ testId, attempt, signal }) => {
|
|
150
|
+
if (!setup) {
|
|
151
|
+
return {};
|
|
152
|
+
}
|
|
153
|
+
const label = attempt > 1 ? `${name} #${attempt}` : name;
|
|
154
|
+
const session = await openAuthenticatedPage(browser, config, testId, label, site);
|
|
155
|
+
try {
|
|
156
|
+
const builderContext = await buildScenarioContext(session.page, config, session, testId, name, site);
|
|
157
|
+
return await setup({
|
|
158
|
+
testId,
|
|
159
|
+
attempt,
|
|
160
|
+
signal,
|
|
161
|
+
page: session.page,
|
|
162
|
+
request: toolkitRequest(session.page.request, config, testId, site),
|
|
163
|
+
builders: {
|
|
164
|
+
page: () => new PageBuilder(session.page, builderContext),
|
|
165
|
+
content: () => new ContentBuilder(session.page, builderContext),
|
|
166
|
+
batch: (...queued) => saveBatch(session.page, builderContext, queued),
|
|
167
|
+
},
|
|
168
|
+
saveRecord: recordSaver(session.page.request, resolveRequestContext(session.page, builderContext)),
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
finally {
|
|
172
|
+
await session.close();
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
});
|
|
176
|
+
return { outcome, site };
|
|
177
|
+
});
|
|
172
178
|
const data = applyScenarioOutcome(outcome, (reason) => testInfo.skip(true, reason), config.replay);
|
|
173
179
|
if (outcome.status === 'ready') {
|
|
174
180
|
// The fixture's own timeout keeps this out of the test's duration,
|
|
@@ -178,7 +184,7 @@ export function defineScenario(setup) {
|
|
|
178
184
|
description: setupAnnotation(outcome.setupMs, outcome.setupRan),
|
|
179
185
|
});
|
|
180
186
|
}
|
|
181
|
-
await use({ data, testId: outcome.status === 'ready' ? outcome.testId : '' });
|
|
187
|
+
await use({ data, testId: outcome.status === 'ready' ? outcome.testId : '', site });
|
|
182
188
|
if (testInfo.status !== testInfo.expectedStatus) {
|
|
183
189
|
recordTestFailure(config, key, testInfo.error?.message ?? `test ${testInfo.status}`);
|
|
184
190
|
await reportRecordedErrors(config, key, outcome.status === 'ready' ? outcome.testId : '', testInfo);
|
|
@@ -190,12 +196,17 @@ export function defineScenario(setup) {
|
|
|
190
196
|
testId: async ({ resolvedScenario }, use) => {
|
|
191
197
|
await use(resolvedScenario.testId);
|
|
192
198
|
},
|
|
193
|
-
|
|
199
|
+
baseURL: async ({ resolvedScenario }, use) => {
|
|
200
|
+
await use(resolvedScenario.site.base);
|
|
201
|
+
},
|
|
202
|
+
context: async ({ context, testId, resolvedScenario }, use) => {
|
|
203
|
+
;
|
|
204
|
+
context.site = resolvedScenario.site;
|
|
194
205
|
await prepareScenarioContext(context, getToolkitConfig(), testId);
|
|
195
206
|
await use(context);
|
|
196
207
|
},
|
|
197
|
-
request: async ({ request, testId }, use) => {
|
|
198
|
-
await use(toolkitRequest(request, getToolkitConfig(), testId));
|
|
208
|
+
request: async ({ request, testId, resolvedScenario }, use) => {
|
|
209
|
+
await use(toolkitRequest(request, getToolkitConfig(), testId, resolvedScenario.site));
|
|
199
210
|
},
|
|
200
211
|
automaticAccessibilityScan: [
|
|
201
212
|
async ({ page }, use, testInfo) => {
|
package/dist/scenario.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenario.js","sourceRoot":"","sources":["../src/scenario.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,IAAI,EAAkE,MAAM,kBAAkB,CAAA;AAC/G,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAsB,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC1E,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EACH,oBAAoB,EACpB,qBAAqB,GAGxB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,WAAW,EAAuC,MAAM,uBAAuB,CAAA;AACxF,OAAO,EAAE,cAAc,EAAE,SAAS,EAAsB,MAAM,+BAA+B,CAAA;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACzF,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAS5F,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,MAAqB,EACrB,WAAmB,EACnB,QAAkB,EAClB,GAAqB,EACrB,SAA+B,kBAAkB;IAEjD,IAAI,CAAC;QACD,OAAO,MAAM,GAAG,EAAE,CAAA;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,MAAM,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;IAC7D,CAAC;AACL,CAAC;
|
|
1
|
+
{"version":3,"file":"scenario.js","sourceRoot":"","sources":["../src/scenario.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DiscoveredSite, SiteEntry } from './registry.js';
|
|
2
|
+
export declare function probeSignature(secret: string, testId: string): string;
|
|
3
|
+
export declare function probeSite(site: DiscoveredSite, options: {
|
|
4
|
+
testId: string;
|
|
5
|
+
secret: string;
|
|
6
|
+
fetchImpl?: typeof fetch;
|
|
7
|
+
}): Promise<SiteEntry>;
|
|
8
|
+
//# sourceMappingURL=probe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probe.d.ts","sourceRoot":"","sources":["../../src/sites/probe.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAI9D,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAsB,SAAS,CAC3B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAE,GACtE,OAAO,CAAC,SAAS,CAAC,CAqCpB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { createHmac } from 'node:crypto';
|
|
2
|
+
import { PROBE_HEADER, TEST_ID_HEADER } from '../contract.js';
|
|
3
|
+
const PURPOSE = 'probe';
|
|
4
|
+
export function probeSignature(secret, testId) {
|
|
5
|
+
return createHmac('sha256', secret).update(`${PURPOSE}:${testId}`).digest('hex');
|
|
6
|
+
}
|
|
7
|
+
export async function probeSite(site, options) {
|
|
8
|
+
const unavailable = (reason) => ({ ...site, available: false, reason });
|
|
9
|
+
let response;
|
|
10
|
+
try {
|
|
11
|
+
response = await (options.fetchImpl ?? fetch)(site.base, {
|
|
12
|
+
method: 'GET',
|
|
13
|
+
redirect: 'manual',
|
|
14
|
+
signal: AbortSignal.timeout(Number(process.env.PW_HEALTH_TIMEOUT_MS) || 5000),
|
|
15
|
+
headers: {
|
|
16
|
+
[TEST_ID_HEADER]: options.testId,
|
|
17
|
+
[PROBE_HEADER]: probeSignature(options.secret, options.testId),
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
return unavailable(error instanceof Error ? error.message : String(error));
|
|
23
|
+
}
|
|
24
|
+
if (response.status >= 300 && response.status < 400) {
|
|
25
|
+
return unavailable(`it redirects to ${response.headers.get('location') ?? '(no location)'}`);
|
|
26
|
+
}
|
|
27
|
+
if (response.status >= 500) {
|
|
28
|
+
return unavailable(`it answered ${response.status}`);
|
|
29
|
+
}
|
|
30
|
+
const answer = await readAnswer(response);
|
|
31
|
+
if (undefined === answer || answer.testId !== options.testId) {
|
|
32
|
+
return unavailable('no toolkit answered: the host is not in the Testing context, or it is another installation');
|
|
33
|
+
}
|
|
34
|
+
if ('string' !== typeof answer.database) {
|
|
35
|
+
return unavailable('another installation answered: the test database is not selected there');
|
|
36
|
+
}
|
|
37
|
+
if (answer.site !== site.identifier) {
|
|
38
|
+
return unavailable(`this host serves the site "${String(answer.site)}"`);
|
|
39
|
+
}
|
|
40
|
+
return { ...site, available: true };
|
|
41
|
+
}
|
|
42
|
+
async function readAnswer(response) {
|
|
43
|
+
try {
|
|
44
|
+
return (await response.json());
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=probe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/sites/probe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAG7D,MAAM,OAAO,GAAG,OAAO,CAAA;AAEvB,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,MAAc;IACzD,OAAO,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACpF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC3B,IAAoB,EACpB,OAAqE;IAErE,MAAM,WAAW,GAAG,CAAC,MAAc,EAAa,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IAE1F,IAAI,QAAkB,CAAA;IACtB,IAAI,CAAC;QACD,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;YACrD,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC;YAC7E,OAAO,EAAE;gBACL,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM;gBAChC,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;aACjE;SACJ,CAAC,CAAA;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,WAAW,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9E,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QAClD,OAAO,WAAW,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,eAAe,EAAE,CAAC,CAAA;IAChG,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QACzB,OAAO,WAAW,CAAC,eAAe,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IACxD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAA;IACzC,IAAI,SAAS,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QAC3D,OAAO,WAAW,CAAC,4FAA4F,CAAC,CAAA;IACpH,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,OAAO,WAAW,CAAC,wEAAwE,CAAC,CAAA;IAChG,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO,WAAW,CAAC,8BAA8B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5E,CAAC;IAED,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;AACvC,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,QAAkB;IACxC,IAAI,CAAC;QACD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA4B,CAAA;IAC7D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAA;IACpB,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type ToolkitConfig } from '../config.js';
|
|
2
|
+
export interface DiscoveredSite {
|
|
3
|
+
identifier: string;
|
|
4
|
+
rootPageId: number;
|
|
5
|
+
base: string;
|
|
6
|
+
}
|
|
7
|
+
export type SiteEntry = DiscoveredSite & ({
|
|
8
|
+
available: true;
|
|
9
|
+
} | {
|
|
10
|
+
available: false;
|
|
11
|
+
reason: string;
|
|
12
|
+
});
|
|
13
|
+
export type SitesFile = {
|
|
14
|
+
sites: SiteEntry[];
|
|
15
|
+
} | {
|
|
16
|
+
skipped: string;
|
|
17
|
+
};
|
|
18
|
+
export interface ScenarioSite {
|
|
19
|
+
identifier: string;
|
|
20
|
+
rootPageId: number;
|
|
21
|
+
base: string;
|
|
22
|
+
origin: string;
|
|
23
|
+
}
|
|
24
|
+
export declare function parseDiscoveredSites(value: unknown, testingURL: string): DiscoveredSite[];
|
|
25
|
+
export declare function writeSitesFile(config: ToolkitConfig, file: SitesFile): void;
|
|
26
|
+
export declare function readSitesFile(config: ToolkitConfig): SitesFile | undefined;
|
|
27
|
+
export declare function resolveScenarioSite(config: ToolkitConfig, file: SitesFile | undefined, requested?: string): ScenarioSite;
|
|
28
|
+
export declare function testingOrigins(config: ToolkitConfig, file?: SitesFile | undefined): Set<string>;
|
|
29
|
+
export declare function siteURL(identifier: string, target?: string): string;
|
|
30
|
+
export declare function siteCacheKey(scenarioKey: string, site: ScenarioSite): string;
|
|
31
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/sites/registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAGnE,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,CAAC;IAAE,SAAS,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAErG,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpE,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACjB;AAKD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE,CAazF;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAE3E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,CAM1E;AAMD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAgCxH;AA+BD,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,GAAE,SAAS,GAAG,SAAiC,GAAG,GAAG,CAAC,MAAM,CAAC,CAWtH;AAED,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,MAAM,CAI/D;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,CAE5E"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { getToolkitConfig } from '../config.js';
|
|
4
|
+
import { runPaths } from '../state/run-namespace.js';
|
|
5
|
+
const SITES_FILE = 'sites.json';
|
|
6
|
+
const FALLBACK_ROOT_PAGE_ID = 1;
|
|
7
|
+
export function parseDiscoveredSites(value, testingURL) {
|
|
8
|
+
if (!Array.isArray(value)) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
return value.flatMap((entry) => {
|
|
12
|
+
const { identifier, rootPageId, base } = (entry ?? {});
|
|
13
|
+
if ('string' !== typeof identifier || 'number' !== typeof rootPageId || 'string' !== typeof base) {
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
return [{ identifier, rootPageId, base: new URL(base, `${testingURL}/`).toString() }];
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
export function writeSitesFile(config, file) {
|
|
20
|
+
fs.writeFileSync(sitesFile(config), JSON.stringify(file, null, 2));
|
|
21
|
+
}
|
|
22
|
+
export function readSitesFile(config) {
|
|
23
|
+
try {
|
|
24
|
+
return JSON.parse(fs.readFileSync(sitesFile(config), 'utf8'));
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function sitesFile(config) {
|
|
31
|
+
return path.join(runPaths(config).runDir, SITES_FILE);
|
|
32
|
+
}
|
|
33
|
+
export function resolveScenarioSite(config, file, requested) {
|
|
34
|
+
if (undefined === file || 'skipped' in file) {
|
|
35
|
+
if (undefined === requested) {
|
|
36
|
+
return fallbackSite(config);
|
|
37
|
+
}
|
|
38
|
+
const why = undefined === file
|
|
39
|
+
? 'this run has no site list, so its global setup did not run'
|
|
40
|
+
: `site discovery was skipped (${file.skipped})`;
|
|
41
|
+
throw new Error(`[typo3-playwright-toolkit] This scenario names the site "${requested}", but ${why}.`);
|
|
42
|
+
}
|
|
43
|
+
if (undefined === requested && 0 === file.sites.length) {
|
|
44
|
+
return fallbackSite(config);
|
|
45
|
+
}
|
|
46
|
+
const site = undefined === requested
|
|
47
|
+
? defaultSite(config, file.sites)
|
|
48
|
+
: file.sites.find((entry) => entry.identifier === requested);
|
|
49
|
+
if (undefined === site) {
|
|
50
|
+
throw new Error(`[typo3-playwright-toolkit] This installation has no site "${requested}". Its sites: ${names(file.sites)}.`);
|
|
51
|
+
}
|
|
52
|
+
if (!site.available) {
|
|
53
|
+
throw new Error(`[typo3-playwright-toolkit] The site "${site.identifier}" (${site.base}) is unavailable: ${site.reason}.`);
|
|
54
|
+
}
|
|
55
|
+
return { identifier: site.identifier, rootPageId: site.rootPageId, base: site.base, origin: new URL(site.base).origin };
|
|
56
|
+
}
|
|
57
|
+
function fallbackSite(config) {
|
|
58
|
+
return {
|
|
59
|
+
identifier: '',
|
|
60
|
+
rootPageId: FALLBACK_ROOT_PAGE_ID,
|
|
61
|
+
base: `${config.testingURL}/`,
|
|
62
|
+
origin: new URL(config.testingURL).origin,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function defaultSite(config, sites) {
|
|
66
|
+
if (1 === sites.length) {
|
|
67
|
+
return sites[0];
|
|
68
|
+
}
|
|
69
|
+
const host = new URL(config.testingURL).host;
|
|
70
|
+
const matching = sites.filter((entry) => new URL(entry.base).host === host);
|
|
71
|
+
if (1 !== matching.length) {
|
|
72
|
+
throw new Error(`[typo3-playwright-toolkit] This installation has several sites. Name one with \`site\`: ${names(sites)}.`);
|
|
73
|
+
}
|
|
74
|
+
return matching[0];
|
|
75
|
+
}
|
|
76
|
+
function names(sites) {
|
|
77
|
+
return sites.map((site) => site.identifier).join(', ');
|
|
78
|
+
}
|
|
79
|
+
export function testingOrigins(config, file = readSitesFile(config)) {
|
|
80
|
+
const origins = new Set([new URL(config.testingURL).origin]);
|
|
81
|
+
if (undefined !== file && 'sites' in file) {
|
|
82
|
+
for (const site of file.sites) {
|
|
83
|
+
if (site.available) {
|
|
84
|
+
origins.add(new URL(site.base).origin);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return origins;
|
|
89
|
+
}
|
|
90
|
+
export function siteURL(identifier, target = '') {
|
|
91
|
+
const config = getToolkitConfig();
|
|
92
|
+
return new URL(target.replace(/^\/+/, ''), resolveScenarioSite(config, readSitesFile(config), identifier).base).toString();
|
|
93
|
+
}
|
|
94
|
+
export function siteCacheKey(scenarioKey, site) {
|
|
95
|
+
return '' === site.identifier ? scenarioKey : `${scenarioKey}@${site.base}#${site.rootPageId}`;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/sites/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,gBAAgB,EAAsB,MAAM,cAAc,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAmBpD,MAAM,UAAU,GAAG,YAAY,CAAA;AAC/B,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAE/B,MAAM,UAAU,oBAAoB,CAAC,KAAc,EAAE,UAAkB;IACnE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,KAAc,EAAE,EAAE;QACpC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAA;QACjF,IAAI,QAAQ,KAAK,OAAO,UAAU,IAAI,QAAQ,KAAK,OAAO,UAAU,IAAI,QAAQ,KAAK,OAAO,IAAI,EAAE,CAAC;YAC/F,OAAO,EAAE,CAAA;QACb,CAAC;QAED,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,UAAU,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IACzF,CAAC,CAAC,CAAA;AACN,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAqB,EAAE,IAAe;IACjE,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAqB;IAC/C,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAc,CAAA;IAC9E,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAA;IACpB,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,MAAqB;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAqB,EAAE,IAA2B,EAAE,SAAkB;IACtG,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QAC1C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,YAAY,CAAC,MAAM,CAAC,CAAA;QAC/B,CAAC;QAED,MAAM,GAAG,GAAG,SAAS,KAAK,IAAI;YAC1B,CAAC,CAAC,4DAA4D;YAC9D,CAAC,CAAC,+BAA+B,IAAI,CAAC,OAAO,GAAG,CAAA;QAEpD,MAAM,IAAI,KAAK,CAAC,4DAA4D,SAAS,UAAU,GAAG,GAAG,CAAC,CAAA;IAC1G,CAAC;IAED,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACrD,OAAO,YAAY,CAAC,MAAM,CAAC,CAAA;IAC/B,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,KAAK,SAAS;QAChC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC;QACjC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAA;IAChE,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACX,6DAA6D,SAAS,iBAAiB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAC9G,CAAA;IACL,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACX,wCAAwC,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC,IAAI,qBAAqB,IAAI,CAAC,MAAM,GAAG,CAC5G,CAAA;IACL,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAA;AAC3H,CAAC;AAED,SAAS,YAAY,CAAC,MAAqB;IACvC,OAAO;QACH,UAAU,EAAE,EAAE;QACd,UAAU,EAAE,qBAAqB;QACjC,IAAI,EAAE,GAAG,MAAM,CAAC,UAAU,GAAG;QAC7B,MAAM,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM;KAC5C,CAAA;AACL,CAAC;AAED,SAAS,WAAW,CAAC,MAAqB,EAAE,KAAkB;IAC1D,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAA;IAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAC3E,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACX,2FAA2F,KAAK,CAAC,KAAK,CAAC,GAAG,CAC7G,CAAA;IACL,CAAC;IAED,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAA;AACtB,CAAC;AAED,SAAS,KAAK,CAAC,KAAkB;IAC7B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC1D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAqB,EAAE,OAA8B,aAAa,CAAC,MAAM,CAAC;IACrG,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5D,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACxC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAA;YAC1C,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,UAAkB,EAAE,MAAM,GAAG,EAAE;IACnD,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAA;IAEjC,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;AAC9H,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,WAAmB,EAAE,IAAkB;IAChE,OAAO,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAA;AAClG,CAAC"}
|
|
@@ -17,6 +17,10 @@ export interface AttemptOutcomeRecord {
|
|
|
17
17
|
durationMs: number;
|
|
18
18
|
endedAt: string;
|
|
19
19
|
}
|
|
20
|
+
export interface DroppedRecord {
|
|
21
|
+
type: 'dropped';
|
|
22
|
+
testId: string;
|
|
23
|
+
}
|
|
20
24
|
export declare function registerAttempt(config: ToolkitConfig, input: {
|
|
21
25
|
key: string;
|
|
22
26
|
name?: string;
|
|
@@ -30,6 +34,7 @@ export declare function recordAttemptOutcome(config: ToolkitConfig, input: {
|
|
|
30
34
|
outcome: AttemptOutcome;
|
|
31
35
|
durationMs: number;
|
|
32
36
|
}): void;
|
|
37
|
+
export declare function recordDropped(config: ToolkitConfig, testId: string): void;
|
|
33
38
|
export declare function readAttemptsFrom(attemptsFile: string): AttemptRecord[];
|
|
34
39
|
export declare function readAttempts(config: ToolkitConfig): AttemptRecord[];
|
|
35
40
|
export declare function readRegisteredTestIds(config: ToolkitConfig): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attempt-registry.d.ts","sourceRoot":"","sources":["../../src/state/attempt-registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAA;AAEjE,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,SAAS,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAClB;AAQD,wBAAgB,eAAe,CAC3B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtF,IAAI,CAYN;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE7F;AAED,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACvE,IAAI,CAUN;AAWD,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,EAAE,CAqBtE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,EAAE,CAEnE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAErE"}
|
|
1
|
+
{"version":3,"file":"attempt-registry.d.ts","sourceRoot":"","sources":["../../src/state/attempt-registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAA;AAEjE,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,SAAS,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACjB;AAQD,wBAAgB,eAAe,CAC3B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtF,IAAI,CAYN;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE7F;AAED,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACvE,IAAI,CAUN;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAEzE;AAWD,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,EAAE,CAqBtE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,EAAE,CAEnE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAErE"}
|