@plan2net/typo3-playwright-toolkit 0.22.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -5
- 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 -1
- package/dist/builders/content-builder.js.map +1 -1
- package/dist/builders/core-content.d.ts +1 -1
- package/dist/builders/core-content.d.ts.map +1 -1
- package/dist/builders/core-content.js +1 -1
- package/dist/builders/core-content.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 -2
- package/dist/builders/request-context.d.ts.map +1 -1
- package/dist/builders/request-context.js +3 -3
- 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 +5 -2
- package/dist/checks/screenshot.d.ts.map +1 -1
- package/dist/checks/screenshot.js +35 -40
- package/dist/checks/screenshot.js.map +1 -1
- package/dist/clean/cli.js +16 -11
- package/dist/clean/cli.js.map +1 -1
- package/dist/config.d.ts +5 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -9
- package/dist/config.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/doctor/reporter.d.ts.map +1 -1
- package/dist/doctor/reporter.js +2 -1
- package/dist/doctor/reporter.js.map +1 -1
- package/dist/global-setup.d.ts +4 -1
- package/dist/global-setup.d.ts.map +1 -1
- package/dist/global-setup.js +34 -8
- 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 +19 -42
- package/dist/global-teardown.js.map +1 -1
- package/dist/http/cleanup-client.d.ts.map +1 -1
- package/dist/http/cleanup-client.js +2 -1
- package/dist/http/cleanup-client.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 +51 -5
- package/dist/http/record-edit.js.map +1 -1
- package/dist/http/recorded-errors.d.ts.map +1 -1
- package/dist/http/recorded-errors.js +2 -1
- package/dist/http/recorded-errors.js.map +1 -1
- package/dist/http/test-api.d.ts +9 -0
- package/dist/http/test-api.d.ts.map +1 -0
- package/dist/http/test-api.js +29 -0
- package/dist/http/test-api.js.map +1 -0
- 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/cli.js +4 -4
- package/dist/inspect/cli.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 -17
- package/dist/inspect/links.js.map +1 -1
- package/dist/inspect/replay-target.d.ts +3 -2
- package/dist/inspect/replay-target.d.ts.map +1 -1
- package/dist/inspect/replay-target.js +5 -12
- package/dist/inspect/replay-target.js.map +1 -1
- package/dist/inspect/token.d.ts +2 -1
- package/dist/inspect/token.d.ts.map +1 -1
- package/dist/inspect/token.js +3 -4
- package/dist/inspect/token.js.map +1 -1
- package/dist/scenario.d.ts +10 -4
- package/dist/scenario.d.ts.map +1 -1
- package/dist/scenario.js +60 -44
- package/dist/scenario.js.map +1 -1
- package/dist/setup-cache/client.d.ts.map +1 -1
- package/dist/setup-cache/client.js +2 -1
- package/dist/setup-cache/client.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 +3 -0
- package/dist/state/run-namespace.js.map +1 -1
- package/dist/state/testing-url.d.ts +4 -0
- package/dist/state/testing-url.d.ts.map +1 -0
- package/dist/state/testing-url.js +14 -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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recorded-errors.js","sourceRoot":"","sources":["../../src/http/recorded-errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"recorded-errors.js","sourceRoot":"","sources":["../../src/http/recorded-errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAwB1C,mFAAmF;AACnF,MAAM,YAAY,GAA2B;IACzC,GAAG,EAAE,KAAK;IACV,WAAW,EAAE,aAAa;CAC7B,CAAA;AAED,MAAM,UAAU,oBAAoB,CAAC,WAAmB,EAAE,MAA2B;IACjF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC/C,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAA;QACzD,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC3E,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;QAE3D,OAAO,KAAK,KAAK,GAAG,CAAC,KAAK,MAAM,GAAG,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAA;IACvE,CAAC,CAAC,CAAA;IAEF,OAAO,CACH,6CAA6C,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG;QACpE,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,kBAAkB,WAAW,IAAI;QACnF,SAAS,MAAM,CAAC,MAAM,SAAS,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CACxD,CAAA;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,MAAqB,EACrB,MAAc,EACd,UAA6E,EAAE;IAE/E,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAA;IAE1C,yEAAyE;IACzE,IAAI,CAAC;QACD,uEAAuE;QACvE,sDAAsD;QACtD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC1B,UAAU,CAAC,MAAM,EAAE,aAAa,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,EAC7D;YACI,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE;YACxE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;YACtD,wDAAwD;YACxD,QAAQ,EAAE,QAAQ;SACrB,CACJ,CAAA;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,SAAS,CAAA;QACpB,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAiC,CAAA;QAEpE,OAAO;YACH,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK;YAClC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;SACxD,CAAA;IACL,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAA;IACpB,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const DEFAULT_BACKEND_PATH = "/typo3";
|
|
2
|
+
export interface TestApiTarget {
|
|
3
|
+
testingURL: string;
|
|
4
|
+
backendPath?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function normaliseBackendPath(backendPath: string): string;
|
|
7
|
+
export declare function readTestApiTarget(file: string): TestApiTarget | undefined;
|
|
8
|
+
export declare function testApiUrl(target: TestApiTarget, endpoint: string): string;
|
|
9
|
+
//# sourceMappingURL=test-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-api.d.ts","sourceRoot":"","sources":["../../src/http/test-api.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,WAAW,CAAA;AAE5C,MAAM,WAAW,aAAa;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAUhE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAgBzE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1E"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
export const DEFAULT_BACKEND_PATH = '/typo3';
|
|
3
|
+
export function normaliseBackendPath(backendPath) {
|
|
4
|
+
if (/[?#:]/.test(backendPath)) {
|
|
5
|
+
throw new Error(`[typo3-playwright-toolkit] backendPath must be the path of BE/entryPoint, such as /admin, got "${backendPath}".`);
|
|
6
|
+
}
|
|
7
|
+
const segments = backendPath.split('/').filter((segment) => '' !== segment);
|
|
8
|
+
return 0 === segments.length ? DEFAULT_BACKEND_PATH : `/${segments.join('/')}`;
|
|
9
|
+
}
|
|
10
|
+
export function readTestApiTarget(file) {
|
|
11
|
+
let recorded;
|
|
12
|
+
try {
|
|
13
|
+
recorded = JSON.parse(fs.readFileSync(file, 'utf-8'));
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
if ('string' !== typeof recorded?.testingURL) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
testingURL: recorded.testingURL,
|
|
23
|
+
backendPath: 'string' === typeof recorded.backendPath ? recorded.backendPath : undefined,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function testApiUrl(target, endpoint) {
|
|
27
|
+
return `${target.testingURL}${target.backendPath ?? DEFAULT_BACKEND_PATH}/test-api/${endpoint}`;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=test-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-api.js","sourceRoot":"","sources":["../../src/http/test-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AAExB,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAA;AAO5C,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACpD,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACX,kGAAkG,WAAW,IAAI,CACpH,CAAA;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAA;IAE3E,OAAO,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC1C,IAAI,QAAgE,CAAA;IACpE,IAAI,CAAC;QACD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAoB,CAAA;IAC5E,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,QAAQ,EAAE,UAAU,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,OAAO;QACH,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,WAAW,EAAE,QAAQ,KAAK,OAAO,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;KAC3F,CAAA;AACL,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAqB,EAAE,QAAgB;IAC9D,OAAO,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,IAAI,oBAAoB,aAAa,QAAQ,EAAE,CAAA;AACnG,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { APIRequestContext } from '@playwright/test';
|
|
2
2
|
import type { ToolkitConfig } from '../config.js';
|
|
3
|
+
import { type ScenarioSite } from '../sites/registry.js';
|
|
3
4
|
/**
|
|
4
5
|
* Playwright does not route an APIRequestContext, so the test ID has to be put on
|
|
5
6
|
* here instead. No secret: it stays explicit, on the two requests that need it.
|
|
6
7
|
*/
|
|
7
|
-
export declare function toolkitRequest(request: APIRequestContext, config: ToolkitConfig, testId: string): APIRequestContext;
|
|
8
|
+
export declare function toolkitRequest(request: APIRequestContext, config: ToolkitConfig, testId: string, scenarioSite?: ScenarioSite): APIRequestContext;
|
|
8
9
|
//# sourceMappingURL=toolkit-request.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolkit-request.d.ts","sourceRoot":"","sources":["../../src/http/toolkit-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"toolkit-request.d.ts","sourceRoot":"","sources":["../../src/http/toolkit-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAKxE;;;GAGG;AACH,wBAAgB,cAAc,CAC1B,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,YAAY,GAC5B,iBAAiB,CAmDnB"}
|
|
@@ -1,19 +1,29 @@
|
|
|
1
1
|
import { SECRET_HEADER } from './api-secret.js';
|
|
2
2
|
import { TEST_ID_HEADER, browserHeaders } from '../contract.js';
|
|
3
|
+
import { testingOrigins } from '../sites/registry.js';
|
|
3
4
|
const TOOLKIT_HEADERS = [TEST_ID_HEADER.toLowerCase(), SECRET_HEADER.toLowerCase()];
|
|
4
5
|
const SENDING_METHODS = ['get', 'post', 'put', 'patch', 'delete', 'head', 'fetch'];
|
|
5
6
|
/**
|
|
6
7
|
* Playwright does not route an APIRequestContext, so the test ID has to be put on
|
|
7
8
|
* here instead. No secret: it stays explicit, on the two requests that need it.
|
|
8
9
|
*/
|
|
9
|
-
export function toolkitRequest(request, config, testId) {
|
|
10
|
-
const
|
|
10
|
+
export function toolkitRequest(request, config, testId, scenarioSite) {
|
|
11
|
+
const origins = testingOrigins(config);
|
|
12
|
+
const base = scenarioSite?.base ?? `${config.testingURL}/`;
|
|
13
|
+
const resolved = (target) => {
|
|
14
|
+
try {
|
|
15
|
+
return 'string' === typeof target ? new URL(target, base).toString() : target;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return target;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
11
21
|
const onSite = (target) => {
|
|
12
22
|
const url = 'string' === typeof target ? target : String(target?.url?.() ?? '');
|
|
13
23
|
try {
|
|
14
24
|
// Resolved like baseURL does: a relative url lands here, a
|
|
15
25
|
// protocol-relative one on its own host.
|
|
16
|
-
return new URL(url,
|
|
26
|
+
return origins.has(new URL(url, base).origin);
|
|
17
27
|
}
|
|
18
28
|
catch {
|
|
19
29
|
return false;
|
|
@@ -34,7 +44,7 @@ export function toolkitRequest(request, config, testId) {
|
|
|
34
44
|
if ('string' !== typeof property || !SENDING_METHODS.includes(property)) {
|
|
35
45
|
return value.bind(target);
|
|
36
46
|
}
|
|
37
|
-
return (url, options = {}) => value.call(target, url, {
|
|
47
|
+
return (url, options = {}) => value.call(target, resolved(url), {
|
|
38
48
|
...options,
|
|
39
49
|
headers: headersFor(url, options.headers),
|
|
40
50
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolkit-request.js","sourceRoot":"","sources":["../../src/http/toolkit-request.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"toolkit-request.js","sourceRoot":"","sources":["../../src/http/toolkit-request.ts"],"names":[],"mappings":"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"}
|
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/cli.js
CHANGED
|
@@ -3,7 +3,7 @@ import * as fs from 'fs';
|
|
|
3
3
|
import * as path from 'path';
|
|
4
4
|
import { findStateDir, inspectLinks } from './links.js';
|
|
5
5
|
import { INSPECT_TOKEN_LIFETIME_MS, inspectUrl } from './token.js';
|
|
6
|
-
import {
|
|
6
|
+
import { replayTarget } from './replay-target.js';
|
|
7
7
|
import { REPLAY_TEST_ID } from '../contract.js';
|
|
8
8
|
function readSecret(stateDir) {
|
|
9
9
|
const fromEnvironment = process.env.PLAYWRIGHT_TOOLKIT_SECRET?.trim();
|
|
@@ -26,13 +26,13 @@ if ('' === secret) {
|
|
|
26
26
|
}
|
|
27
27
|
// The link a replay run printed expires, and its run state is gone by then.
|
|
28
28
|
if (process.argv.includes('--replay')) {
|
|
29
|
-
const
|
|
30
|
-
if (undefined ===
|
|
29
|
+
const target = replayTarget(stateDir);
|
|
30
|
+
if (undefined === target) {
|
|
31
31
|
console.error('No replay recorded. Run "ddev playwright replay" first.');
|
|
32
32
|
process.exit(1);
|
|
33
33
|
}
|
|
34
34
|
console.log(`Logs you into the replayed database, for ${INSPECT_TOKEN_LIFETIME_MS / 60_000} minutes.\n`);
|
|
35
|
-
console.log(` ${inspectUrl(
|
|
35
|
+
console.log(` ${inspectUrl(target, secret, REPLAY_TEST_ID, Date.now())}\n`);
|
|
36
36
|
process.exit(0);
|
|
37
37
|
}
|
|
38
38
|
const links = inspectLinks(stateDir, secret);
|
package/dist/inspect/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/inspect/cli.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAClE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/inspect/cli.ts"],"names":[],"mappings":"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"}
|
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":"
|
|
1
|
+
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/inspect/links.ts"],"names":[],"mappings":"AAOA,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
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
|
+
import { readTestApiTarget } from '../http/test-api.js';
|
|
3
4
|
import { readAttemptsFrom } from '../state/attempt-registry.js';
|
|
4
5
|
import { listRunIds, runLastActiveMs, runsRoot } from '../state/run-namespace.js';
|
|
5
6
|
import { inspectUrl } from './token.js';
|
|
@@ -24,36 +25,43 @@ export function inspectLinks(stateDir, secret, now = Date.now()) {
|
|
|
24
25
|
.map((runId) => ({ runId, runDir: path.join(runsRoot(stateDir), runId) }))
|
|
25
26
|
.sort((a, b) => runLastActiveMs(b.runDir) - runLastActiveMs(a.runDir));
|
|
26
27
|
return runs.flatMap(({ runId, runDir }) => {
|
|
27
|
-
const
|
|
28
|
-
if (undefined ===
|
|
28
|
+
const target = readTestApiTarget(path.join(runDir, 'meta.json'));
|
|
29
|
+
if (undefined === target) {
|
|
29
30
|
return [];
|
|
30
31
|
}
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
const attemptsFile = path.join(runDir, 'attempts.jsonl');
|
|
33
|
+
const dropped = readDroppedTestIds(attemptsFile);
|
|
34
|
+
return readAttemptsFrom(attemptsFile)
|
|
35
|
+
.filter((attempt) => 'preflight' !== attempt.key && !dropped.has(attempt.testId))
|
|
33
36
|
.map((attempt) => ({
|
|
34
37
|
runId,
|
|
35
38
|
key: attempt.key,
|
|
36
39
|
name: attempt.name ?? attempt.key,
|
|
37
40
|
testId: attempt.testId,
|
|
38
|
-
url: inspectUrl(
|
|
41
|
+
url: inspectUrl(target, secret, attempt.testId, now),
|
|
39
42
|
}));
|
|
40
43
|
});
|
|
41
44
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
.map((runId) => path.join(runsRoot(stateDir), runId))
|
|
46
|
-
.sort((a, b) => runLastActiveMs(b) - runLastActiveMs(a))
|
|
47
|
-
.map((runDir) => readTestingUrl(path.join(runDir, 'meta.json')))
|
|
48
|
-
.find((url) => undefined !== url);
|
|
49
|
-
}
|
|
50
|
-
function readTestingUrl(metaFile) {
|
|
45
|
+
function readDroppedTestIds(attemptsFile) {
|
|
46
|
+
const dropped = new Set();
|
|
47
|
+
let lines;
|
|
51
48
|
try {
|
|
52
|
-
|
|
53
|
-
return 'string' === typeof meta.testingURL ? meta.testingURL : undefined;
|
|
49
|
+
lines = fs.readFileSync(attemptsFile, 'utf-8').split('\n');
|
|
54
50
|
}
|
|
55
51
|
catch {
|
|
56
|
-
return
|
|
52
|
+
return dropped;
|
|
53
|
+
}
|
|
54
|
+
for (const line of lines) {
|
|
55
|
+
try {
|
|
56
|
+
const record = JSON.parse(line);
|
|
57
|
+
if ('dropped' === record.type && 'string' === typeof record.testId) {
|
|
58
|
+
dropped.add(record.testId);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
57
64
|
}
|
|
65
|
+
return dropped;
|
|
58
66
|
}
|
|
59
67
|
//# sourceMappingURL=links.js.map
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/inspect/links.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function
|
|
1
|
+
import { type TestApiTarget } from '../http/test-api.js';
|
|
2
|
+
export declare function recordReplayTarget(stateDir: string, target: TestApiTarget): void;
|
|
3
|
+
export declare function replayTarget(stateDir: string): TestApiTarget | undefined;
|
|
3
4
|
//# sourceMappingURL=replay-target.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replay-target.d.ts","sourceRoot":"","sources":["../../src/inspect/replay-target.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"replay-target.d.ts","sourceRoot":"","sources":["../../src/inspect/replay-target.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAO3E,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAMhF;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAExE"}
|
|
@@ -1,22 +1,15 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
|
+
import { readTestApiTarget } from '../http/test-api.js';
|
|
3
4
|
// Outside runs/: replay teardown removes its run directory.
|
|
4
5
|
function targetFile(stateDir) {
|
|
5
6
|
return path.join(stateDir, 'replay.json');
|
|
6
7
|
}
|
|
7
|
-
export function recordReplayTarget(stateDir,
|
|
8
|
+
export function recordReplayTarget(stateDir, target) {
|
|
8
9
|
fs.mkdirSync(stateDir, { recursive: true });
|
|
9
|
-
fs.writeFileSync(targetFile(stateDir), JSON.stringify({ testingURL }));
|
|
10
|
+
fs.writeFileSync(targetFile(stateDir), JSON.stringify({ testingURL: target.testingURL, backendPath: target.backendPath }));
|
|
10
11
|
}
|
|
11
|
-
export function
|
|
12
|
-
|
|
13
|
-
try {
|
|
14
|
-
testingURL = JSON.parse(fs.readFileSync(targetFile(stateDir), 'utf-8'))
|
|
15
|
-
.testingURL;
|
|
16
|
-
}
|
|
17
|
-
catch {
|
|
18
|
-
return undefined;
|
|
19
|
-
}
|
|
20
|
-
return 'string' === typeof testingURL ? testingURL : undefined;
|
|
12
|
+
export function replayTarget(stateDir) {
|
|
13
|
+
return readTestApiTarget(targetFile(stateDir));
|
|
21
14
|
}
|
|
22
15
|
//# sourceMappingURL=replay-target.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replay-target.js","sourceRoot":"","sources":["../../src/inspect/replay-target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"replay-target.js","sourceRoot":"","sources":["../../src/inspect/replay-target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAsB,MAAM,qBAAqB,CAAA;AAE3E,4DAA4D;AAC5D,SAAS,UAAU,CAAC,QAAgB;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,MAAqB;IACtE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3C,EAAE,CAAC,aAAa,CACZ,UAAU,CAAC,QAAQ,CAAC,EACpB,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CACrF,CAAA;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB;IACzC,OAAO,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;AAClD,CAAC"}
|
package/dist/inspect/token.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { type TestApiTarget } from '../http/test-api.js';
|
|
1
2
|
/** Long enough to pick a link from the list, short enough that a pasted one dies. */
|
|
2
3
|
export declare const INSPECT_TOKEN_LIFETIME_MS = 900000;
|
|
3
4
|
export declare function mintInspectToken(secret: string, testId: string, expiresAt: number): string;
|
|
4
|
-
export declare function inspectUrl(
|
|
5
|
+
export declare function inspectUrl(target: TestApiTarget, secret: string, testId: string, now: number): string;
|
|
5
6
|
//# sourceMappingURL=token.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/inspect/token.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/inspect/token.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAIpE,qFAAqF;AACrF,eAAO,MAAM,yBAAyB,SAAU,CAAA;AAEhD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAI1F;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAOrG"}
|
package/dist/inspect/token.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createHmac } from 'node:crypto';
|
|
2
|
+
import { testApiUrl } from '../http/test-api.js';
|
|
2
3
|
const PURPOSE = 'inspect';
|
|
3
4
|
/** Long enough to pick a link from the list, short enough that a pasted one dies. */
|
|
4
5
|
export const INSPECT_TOKEN_LIFETIME_MS = 900_000;
|
|
@@ -6,10 +7,8 @@ export function mintInspectToken(secret, testId, expiresAt) {
|
|
|
6
7
|
const signature = createHmac('sha256', secret).update(`${PURPOSE}:${testId}:${expiresAt}`).digest('hex');
|
|
7
8
|
return `${expiresAt}.${signature}`;
|
|
8
9
|
}
|
|
9
|
-
export function inspectUrl(
|
|
10
|
+
export function inspectUrl(target, secret, testId, now) {
|
|
10
11
|
const expiresAt = Math.floor((now + INSPECT_TOKEN_LIFETIME_MS) / 1000);
|
|
11
|
-
return (
|
|
12
|
-
`?id=${encodeURIComponent(testId)}` +
|
|
13
|
-
`&t=${encodeURIComponent(mintInspectToken(secret, testId, expiresAt))}`);
|
|
12
|
+
return testApiUrl(target, `inspect?id=${encodeURIComponent(testId)}&t=${encodeURIComponent(mintInspectToken(secret, testId, expiresAt))}`);
|
|
14
13
|
}
|
|
15
14
|
//# sourceMappingURL=token.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/inspect/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/inspect/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAsB,MAAM,qBAAqB,CAAA;AAEpE,MAAM,OAAO,GAAG,SAAS,CAAA;AAEzB,qFAAqF;AACrF,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAAA;AAEhD,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,MAAc,EAAE,SAAiB;IAC9E,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,IAAI,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAExG,OAAO,GAAG,SAAS,IAAI,SAAS,EAAE,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAqB,EAAE,MAAc,EAAE,MAAc,EAAE,GAAW;IACzF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAA;IAEtE,OAAO,UAAU,CACb,MAAM,EACN,cAAc,kBAAkB,CAAC,MAAM,CAAC,MAAM,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,CAClH,CAAA;AACL,CAAC"}
|
package/dist/scenario.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { type APIRequestContext, type Browser, type Page, type TestInfo } from '@playwright/test';
|
|
1
|
+
import { type APIRequestContext, type Browser, type BrowserContextOptions, type Page, type TestInfo } from '@playwright/test';
|
|
2
2
|
import { type ToolkitConfig } from './config.js';
|
|
3
3
|
import { type ReplayFolder, type RequestContext } from './builders/request-context.js';
|
|
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,9 @@ 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
|
|
56
|
+
}, testId: string, name: string, site?: ScenarioSite): Promise<Partial<RequestContext>>;
|
|
57
|
+
export type ProjectContextOptions = Pick<BrowserContextOptions, 'ignoreHTTPSErrors' | 'httpCredentials' | 'proxy'>;
|
|
58
|
+
export declare function openAuthenticatedPage(browser: Browser, config: ToolkitConfig, testId: string, name?: string, site?: ScenarioSite, projectOptions?: ProjectContextOptions): Promise<{
|
|
53
59
|
page: Page;
|
|
54
60
|
routeToken: string;
|
|
55
61
|
backendPath: string;
|
|
@@ -63,7 +69,7 @@ export declare function claimScenarioFile(file: string, owner: symbol): void;
|
|
|
63
69
|
* One test file is one scenario: the first test that needs state runs the setup,
|
|
64
70
|
* the rest wait for it or are skipped if it failed.
|
|
65
71
|
*/
|
|
66
|
-
export declare function defineScenario<S = Record<string, never>>(setup?: (tools: SetupTools) => Promise<S
|
|
72
|
+
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
73
|
resolvedScenario: ResolvedScenario<S>;
|
|
68
74
|
automaticAccessibilityScan: void;
|
|
69
75
|
}, 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,
|
|
1
|
+
{"version":3,"file":"scenario.d.ts","sourceRoot":"","sources":["../src/scenario.ts"],"names":[],"mappings":"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"}
|