@plan2net/typo3-playwright-toolkit 0.25.0 → 0.27.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 +174 -2
- package/dist/backend.d.ts +8 -0
- package/dist/backend.d.ts.map +1 -0
- package/dist/backend.js +27 -0
- package/dist/backend.js.map +1 -0
- package/dist/builders/content-builder.d.ts +26 -1
- package/dist/builders/content-builder.d.ts.map +1 -1
- package/dist/builders/content-builder.js +77 -5
- package/dist/builders/content-builder.js.map +1 -1
- package/dist/builders/fields.d.ts +5 -0
- package/dist/builders/fields.d.ts.map +1 -1
- package/dist/builders/fields.js +7 -0
- package/dist/builders/fields.js.map +1 -1
- package/dist/builders/file-metadata-builder.d.ts +18 -0
- package/dist/builders/file-metadata-builder.d.ts.map +1 -0
- package/dist/builders/file-metadata-builder.js +54 -0
- package/dist/builders/file-metadata-builder.js.map +1 -0
- package/dist/builders/page-builder.d.ts +14 -0
- package/dist/builders/page-builder.d.ts.map +1 -1
- package/dist/builders/page-builder.js +55 -3
- package/dist/builders/page-builder.js.map +1 -1
- package/dist/builders/relations.d.ts +14 -1
- package/dist/builders/relations.d.ts.map +1 -1
- package/dist/builders/relations.js +38 -9
- package/dist/builders/relations.js.map +1 -1
- package/dist/builders/request-context.d.ts +2 -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/contract.d.ts +1 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +1 -0
- package/dist/contract.js.map +1 -1
- package/dist/global-setup.d.ts.map +1 -1
- package/dist/global-setup.js +3 -3
- package/dist/global-setup.js.map +1 -1
- package/dist/http/off-site-headers.d.ts +8 -2
- package/dist/http/off-site-headers.d.ts.map +1 -1
- package/dist/http/off-site-headers.js +31 -9
- package/dist/http/off-site-headers.js.map +1 -1
- package/dist/http/record-commit.d.ts +24 -0
- package/dist/http/record-commit.d.ts.map +1 -0
- package/dist/http/record-commit.js +34 -0
- package/dist/http/record-commit.js.map +1 -0
- package/dist/http/record-edit.d.ts +27 -0
- package/dist/http/record-edit.d.ts.map +1 -1
- package/dist/http/record-edit.js +34 -4
- package/dist/http/record-edit.js.map +1 -1
- package/dist/http/site-settings.d.ts +15 -0
- package/dist/http/site-settings.d.ts.map +1 -0
- package/dist/http/site-settings.js +27 -0
- package/dist/http/site-settings.js.map +1 -0
- package/dist/http/test-api.d.ts +2 -0
- package/dist/http/test-api.d.ts.map +1 -1
- package/dist/http/test-api.js +10 -0
- package/dist/http/test-api.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/media/media-manifest.d.ts +3 -0
- package/dist/media/media-manifest.d.ts.map +1 -1
- package/dist/media/media-manifest.js +27 -10
- package/dist/media/media-manifest.js.map +1 -1
- package/dist/scenario.d.ts +20 -1
- package/dist/scenario.d.ts.map +1 -1
- package/dist/scenario.js +21 -7
- package/dist/scenario.js.map +1 -1
- package/dist/sites/probe.d.ts.map +1 -1
- package/dist/sites/probe.js +3 -2
- package/dist/sites/probe.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"off-site-headers.js","sourceRoot":"","sources":["../../src/http/off-site-headers.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":"off-site-headers.js","sourceRoot":"","sources":["../../src/http/off-site-headers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAsB,MAAM,cAAc,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,MAAM,eAAe,GAAG,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,WAAW,EAAE,CAAC,CAAA;AAEnF;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,OAAuB,EACvB,MAAqB,EACrB,MAAc,EACd,UAA+B,cAAc,CAAC,MAAM,CAAC;IAErD,MAAM,OAAO,CAAC,KAAK,CACf,GAAG,EAAE,CAAC,IAAI,EACV,KAAK,EAAE,KAAK,EAAE,EAAE;QACZ,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;QAC/B,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IACvG,CAAC,CACJ,CAAA;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAG,OAA6B,CAAC,IAAI,CAAC,CAAA;IACpG,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;IAC7D,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;AAC5F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CACxB,KAAY,EACZ,MAAc,EACd,UAAsD,EAAE;IAExD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;IAC/B,MAAM,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;IAC5D,4EAA4E;IAC5E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IAExC,OAAO,KAAK,CAAC,KAAK,CAAC;QACf,GAAG,OAAO;QACV,OAAO,EAAE,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,gBAAgB,EAAE,CAAC,CAAC;KACnF,CAAC,CAAA;AACN,CAAC;AAED,SAAS,aAAa,CAClB,GAAW,EACX,SAAiC,EACjC,MAAc,EACd,OAA4B;IAE5B,MAAM,OAAO,GAAG,EAAE,GAAG,SAAS,EAAE,CAAA;IAEhC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,CAAA;IACpD,CAAC;IAED,wDAAwD;IACxD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC/C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;QACxB,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAA;AAClB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type EditContext, type FormPoster } from './record-edit.js';
|
|
2
|
+
export declare const RECORD_COMMIT_ROUTE = "/record/commit";
|
|
3
|
+
export type TranslationMode = 'localize' | 'copyToLanguage';
|
|
4
|
+
export interface CommitContext extends EditContext {
|
|
5
|
+
commandToken?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface RecordToTranslate {
|
|
8
|
+
table: string;
|
|
9
|
+
uid: number;
|
|
10
|
+
language: number;
|
|
11
|
+
mode: TranslationMode;
|
|
12
|
+
}
|
|
13
|
+
export interface TranslatedRecord {
|
|
14
|
+
uid: number;
|
|
15
|
+
pid: number;
|
|
16
|
+
/** Per file column, in the order they show: position n is the copy of the origin's position n. */
|
|
17
|
+
references: Record<string, number[]>;
|
|
18
|
+
/** The references did not fit a header, so `references` is empty. */
|
|
19
|
+
truncated: boolean;
|
|
20
|
+
slug?: string;
|
|
21
|
+
}
|
|
22
|
+
/** The command the backend's own "translate" link sends. */
|
|
23
|
+
export declare function translateRecord(poster: FormPoster, context: CommitContext, record: RecordToTranslate): Promise<TranslatedRecord>;
|
|
24
|
+
//# sourceMappingURL=record-commit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-commit.d.ts","sourceRoot":"","sources":["../../src/http/record-commit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgD,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElH,eAAO,MAAM,mBAAmB,mBAAmB,CAAA;AAEnD,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,gBAAgB,CAAA;AAE3D,MAAM,WAAW,aAAc,SAAQ,WAAW;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,kGAAkG;IAClG,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACpC,qEAAqE;IACrE,SAAS,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,4DAA4D;AAC5D,wBAAsB,eAAe,CACjC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,iBAAiB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CA4C3B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { getToolkitConfig } from '../config.js';
|
|
2
|
+
import { TRANSLATED_RECORD_HEADER, toolkitHeaders } from '../contract.js';
|
|
3
|
+
import { header, refuseWhatTypo3Rejected, savedRecord } from './record-edit.js';
|
|
4
|
+
export const RECORD_COMMIT_ROUTE = '/record/commit';
|
|
5
|
+
/** The command the backend's own "translate" link sends. */
|
|
6
|
+
export async function translateRecord(poster, context, record) {
|
|
7
|
+
if (!context.commandToken) {
|
|
8
|
+
throw new Error('[typo3-playwright-toolkit] No route token for tce_db, so nothing can be translated. ' +
|
|
9
|
+
'Translations need plan2net/playwright-toolkit 0.27.0 or newer.');
|
|
10
|
+
}
|
|
11
|
+
const response = await poster.post(`${context.baseUrl}${context.backendPath}${RECORD_COMMIT_ROUTE}?token=${encodeURIComponent(context.commandToken)}`, {
|
|
12
|
+
headers: toolkitHeaders(getToolkitConfig(), context.testId),
|
|
13
|
+
multipart: { [`cmd[${record.table}][${record.uid}][${record.mode}]`]: String(record.language) },
|
|
14
|
+
maxRedirects: 0,
|
|
15
|
+
});
|
|
16
|
+
const headers = response.headers();
|
|
17
|
+
refuseWhatTypo3Rejected(headers, record.table);
|
|
18
|
+
const raw = header(headers, TRANSLATED_RECORD_HEADER);
|
|
19
|
+
if (undefined === raw) {
|
|
20
|
+
throw new Error(`[typo3-playwright-toolkit] TYPO3 created no translation of ${record.table} ${record.uid} ` +
|
|
21
|
+
`in language ${record.language} (status ${response.status()}). Check that the site has that ` +
|
|
22
|
+
'language and that the record has no translation in it yet.');
|
|
23
|
+
}
|
|
24
|
+
const parsed = JSON.parse(raw);
|
|
25
|
+
const { slug } = savedRecord(headers);
|
|
26
|
+
return {
|
|
27
|
+
uid: parsed.uid,
|
|
28
|
+
pid: parsed.pid,
|
|
29
|
+
references: parsed.references ?? {},
|
|
30
|
+
truncated: true === parsed.truncated,
|
|
31
|
+
...(undefined === slug ? {} : { slug }),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=record-commit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-commit.js","sourceRoot":"","sources":["../../src/http/record-commit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACzE,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE,WAAW,EAAqC,MAAM,kBAAkB,CAAA;AAElH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAA;AAyBnD,4DAA4D;AAC5D,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,MAAkB,EAClB,OAAsB,EACtB,MAAyB;IAEzB,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACX,sFAAsF;YAClF,gEAAgE,CACvE,CAAA;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAC9B,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,mBAAmB,UAAU,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAClH;QACI,OAAO,EAAE,cAAc,CAAC,gBAAgB,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC;QAC3D,SAAS,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;QAC/F,YAAY,EAAE,CAAC;KAClB,CACJ,CAAA;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAA;IAClC,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAE9C,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAA;IACrD,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACX,8DAA8D,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,GAAG;YACvF,eAAe,MAAM,CAAC,QAAQ,YAAY,QAAQ,CAAC,MAAM,EAAE,kCAAkC;YAC7F,4DAA4D,CACnE,CAAA;IACL,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAK5B,CAAA;IACD,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;IAErC,OAAO;QACH,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;QACnC,SAAS,EAAE,IAAI,KAAK,MAAM,CAAC,SAAS;QACpC,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;KAC1C,CAAA;AACL,CAAC"}
|
|
@@ -29,6 +29,22 @@ export interface SavedRecord {
|
|
|
29
29
|
/** Per table, and not only the records that were asked for. */
|
|
30
30
|
written?: Record<string, number>;
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* TYPO3 itself refused the record, as opposed to a save that failed for want of a
|
|
34
|
+
* session or a token; `reasons` are its own messages.
|
|
35
|
+
*/
|
|
36
|
+
export declare class RecordRefusedError extends Error {
|
|
37
|
+
readonly reasons: string[];
|
|
38
|
+
constructor(message: string, reasons: string[]);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* For a test that expects the backend to refuse a record: the reasons, or a
|
|
42
|
+
* failure when the record was saved after all. Any other error is passed on, so a
|
|
43
|
+
* broken setup does not pass as a refusal.
|
|
44
|
+
*/
|
|
45
|
+
export declare function refusalOf(save: () => Promise<{
|
|
46
|
+
id: string;
|
|
47
|
+
}>): Promise<string[]>;
|
|
32
48
|
/** saveRecord with the poster and context already bound. */
|
|
33
49
|
export declare function recordSaver(poster: FormPoster, context: EditContext): (record: RecordToSave) => Promise<SavedRecord>;
|
|
34
50
|
export interface RecordToSave {
|
|
@@ -46,4 +62,15 @@ export interface RecordToSave {
|
|
|
46
62
|
* passing quietly.
|
|
47
63
|
*/
|
|
48
64
|
export declare function saveRecord(poster: FormPoster, context: EditContext, record: RecordToSave): Promise<SavedRecord>;
|
|
65
|
+
/**
|
|
66
|
+
* A refused child leaves the parent saved, so the request looks like a success
|
|
67
|
+
* and the failure would only show up much later, somewhere else.
|
|
68
|
+
*/
|
|
69
|
+
export declare function refuseWhatTypo3Rejected(headers: Record<string, string>, table: string): void;
|
|
70
|
+
export declare function header(headers: Record<string, string>, name: string): string | undefined;
|
|
71
|
+
/** A malformed envelope is not worth failing a save over: the uid still stands. */
|
|
72
|
+
export declare function savedRecord(headers: Record<string, string>): {
|
|
73
|
+
slug?: string;
|
|
74
|
+
written?: Record<string, number>;
|
|
75
|
+
};
|
|
49
76
|
//# sourceMappingURL=record-edit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-edit.d.ts","sourceRoot":"","sources":["../../src/http/record-edit.ts"],"names":[],"mappings":"AAGA,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,iBAAiB,CAAA;AAE/C,sEAAsE;AACtE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;AAEnF,MAAM,WAAW,YAAY;IACzB,MAAM,IAAI,MAAM,CAAA;IAChB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CAC1B;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,CACA,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GACtG,OAAO,CAAC,YAAY,CAAC,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,kFAAkF;IAClF,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CACvB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,GACrB,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAEhD;AAED,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAA;IAClB,8FAA8F;IAC9F,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,aAAa,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,CAmDtB"}
|
|
1
|
+
{"version":3,"file":"record-edit.d.ts","sourceRoot":"","sources":["../../src/http/record-edit.ts"],"names":[],"mappings":"AAGA,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,iBAAiB,CAAA;AAE/C,sEAAsE;AACtE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;AAEnF,MAAM,WAAW,YAAY;IACzB,MAAM,IAAI,MAAM,CAAA;IAChB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CAC1B;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,CACA,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GACtG,OAAO,CAAC,YAAY,CAAC,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,kFAAkF;IAClF,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAGrC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;gBAD1B,OAAO,EAAE,MAAM,EACN,OAAO,EAAE,MAAM,EAAE;CAKjC;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAetF;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CACvB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,GACrB,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAEhD;AAED,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAA;IAClB,8FAA8F;IAC9F,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,aAAa,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,CAmDtB;AAkED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAqB5F;AA+ED,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAExF;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAgBhH"}
|
package/dist/http/record-edit.js
CHANGED
|
@@ -2,6 +2,36 @@ import { getToolkitConfig } from '../config.js';
|
|
|
2
2
|
import { RECORD_DIAGNOSTICS_HEADER, SAVED_RECORD_HEADER, SKIP_FORM_RULES_HEADER, toolkitHeaders } from '../contract.js';
|
|
3
3
|
/** Relative to the backend entry point, which a project may have moved. */
|
|
4
4
|
export const RECORD_EDIT_ROUTE = '/record/edit';
|
|
5
|
+
/**
|
|
6
|
+
* TYPO3 itself refused the record, as opposed to a save that failed for want of a
|
|
7
|
+
* session or a token; `reasons` are its own messages.
|
|
8
|
+
*/
|
|
9
|
+
export class RecordRefusedError extends Error {
|
|
10
|
+
reasons;
|
|
11
|
+
constructor(message, reasons) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.reasons = reasons;
|
|
14
|
+
this.name = 'RecordRefusedError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* For a test that expects the backend to refuse a record: the reasons, or a
|
|
19
|
+
* failure when the record was saved after all. Any other error is passed on, so a
|
|
20
|
+
* broken setup does not pass as a refusal.
|
|
21
|
+
*/
|
|
22
|
+
export async function refusalOf(save) {
|
|
23
|
+
let saved;
|
|
24
|
+
try {
|
|
25
|
+
saved = await save();
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
if (error instanceof RecordRefusedError) {
|
|
29
|
+
return error.reasons;
|
|
30
|
+
}
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
throw new Error(`[typo3-playwright-toolkit] The test expected TYPO3 to refuse this record, but it saved it as uid ${saved.id}.`);
|
|
34
|
+
}
|
|
5
35
|
/** saveRecord with the poster and context already bound. */
|
|
6
36
|
export function recordSaver(poster, context) {
|
|
7
37
|
return (record) => saveRecord(poster, context, record);
|
|
@@ -101,7 +131,7 @@ function warnAboutUnrequestedWrites(record, written) {
|
|
|
101
131
|
* A refused child leaves the parent saved, so the request looks like a success
|
|
102
132
|
* and the failure would only show up much later, somewhere else.
|
|
103
133
|
*/
|
|
104
|
-
function refuseWhatTypo3Rejected(headers, table) {
|
|
134
|
+
export function refuseWhatTypo3Rejected(headers, table) {
|
|
105
135
|
const raw = header(headers, RECORD_DIAGNOSTICS_HEADER);
|
|
106
136
|
if (undefined === raw) {
|
|
107
137
|
return;
|
|
@@ -113,7 +143,7 @@ function refuseWhatTypo3Rejected(headers, table) {
|
|
|
113
143
|
const more = count > errors.length ? `\n(and ${count - errors.length} more)` : '';
|
|
114
144
|
const advice = [...new Set(errors.map(({ message }) => adviceFor(message)).filter((line) => '' !== line))];
|
|
115
145
|
const howToFix = 0 === advice.length ? '' : `\nWhat to do:\n${advice.map((line) => ` - ${line}`).join('\n')}`;
|
|
116
|
-
throw new
|
|
146
|
+
throw new RecordRefusedError(`[typo3-playwright-toolkit] TYPO3 refused a record while saving ${table}.\n${listed}${more}${howToFix}`, errors.map(({ message }) => message));
|
|
117
147
|
}
|
|
118
148
|
function adviceFor(message) {
|
|
119
149
|
if (message.includes('is not editable by user')) {
|
|
@@ -179,11 +209,11 @@ function redirectTarget(status, headers) {
|
|
|
179
209
|
}
|
|
180
210
|
return header(headers, 'location');
|
|
181
211
|
}
|
|
182
|
-
function header(headers, name) {
|
|
212
|
+
export function header(headers, name) {
|
|
183
213
|
return headers[name.toLowerCase()] ?? headers[name];
|
|
184
214
|
}
|
|
185
215
|
/** A malformed envelope is not worth failing a save over: the uid still stands. */
|
|
186
|
-
function savedRecord(headers) {
|
|
216
|
+
export function savedRecord(headers) {
|
|
187
217
|
const value = header(headers, SAVED_RECORD_HEADER);
|
|
188
218
|
if (undefined === value) {
|
|
189
219
|
return {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-edit.js","sourceRoot":"","sources":["../../src/http/record-edit.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"record-edit.js","sourceRoot":"","sources":["../../src/http/record-edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface JsonPoster {
|
|
2
|
+
post(url: string, options: {
|
|
3
|
+
headers: Record<string, string>;
|
|
4
|
+
data: unknown;
|
|
5
|
+
}): Promise<{
|
|
6
|
+
status(): number;
|
|
7
|
+
text(): Promise<string>;
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
10
|
+
export declare function saveSiteSettings(poster: JsonPoster, context: {
|
|
11
|
+
baseUrl: string;
|
|
12
|
+
backendPath: string;
|
|
13
|
+
testId: string;
|
|
14
|
+
}, site: string, settings: Record<string, unknown>): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=site-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site-settings.d.ts","sourceRoot":"","sources":["../../src/http/site-settings.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACvB,IAAI,CACA,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,GAC5D,OAAO,CAAC;QAAE,MAAM,IAAI,MAAM,CAAC;QAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC,CAAA;CAC5D;AAED,wBAAsB,gBAAgB,CAClC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACjE,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { getToolkitConfig } from '../config.js';
|
|
2
|
+
import { toolkitHeaders } from '../contract.js';
|
|
3
|
+
export async function saveSiteSettings(poster, context, site, settings) {
|
|
4
|
+
if ('' === site) {
|
|
5
|
+
throw new Error('[typo3-playwright-toolkit] Site settings need the site TYPO3 resolves, and this run discovered none. ' +
|
|
6
|
+
'sites.json in the run directory says why.');
|
|
7
|
+
}
|
|
8
|
+
const response = await poster.post(`${context.baseUrl}${context.backendPath}/test-api/site-settings`, {
|
|
9
|
+
headers: toolkitHeaders(getToolkitConfig(), context.testId),
|
|
10
|
+
data: { site, settings },
|
|
11
|
+
});
|
|
12
|
+
if (200 === response.status()) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
throw new Error(`[typo3-playwright-toolkit] Site settings for "${site}" were not saved ` +
|
|
16
|
+
`(status ${response.status()}): ${reasonIn(await response.text())}`);
|
|
17
|
+
}
|
|
18
|
+
function reasonIn(body) {
|
|
19
|
+
try {
|
|
20
|
+
const parsed = JSON.parse(body);
|
|
21
|
+
return 'string' === typeof parsed.error ? parsed.error : body;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return body;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=site-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site-settings.js","sourceRoot":"","sources":["../../src/http/site-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAS/C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,MAAkB,EAClB,OAAiE,EACjE,IAAY,EACZ,QAAiC;IAEjC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACX,uGAAuG;YACnG,2CAA2C,CAClD,CAAA;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,WAAW,yBAAyB,EAAE;QAClG,OAAO,EAAE,cAAc,CAAC,gBAAgB,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC;QAC3D,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC3B,CAAC,CAAA;IAEF,IAAI,GAAG,KAAK,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5B,OAAM;IACV,CAAC;IAED,MAAM,IAAI,KAAK,CACX,iDAAiD,IAAI,mBAAmB;QACpE,WAAW,QAAQ,CAAC,MAAM,EAAE,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAC1E,CAAA;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC1B,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAwB,CAAA;QAEtD,OAAO,QAAQ,KAAK,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;IACjE,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC"}
|
package/dist/http/test-api.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-api.d.ts","sourceRoot":"","sources":["../../src/http/test-api.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"test-api.d.ts","sourceRoot":"","sources":["../../src/http/test-api.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,WAAW,CAAA;AAI5C,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMrD;AAED,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"}
|
package/dist/http/test-api.js
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
export const DEFAULT_BACKEND_PATH = '/typo3';
|
|
3
|
+
const HEALTH_TIMEOUT_MS = 30_000;
|
|
4
|
+
export function healthTimeoutMs() {
|
|
5
|
+
return Number(process.env.PW_HEALTH_TIMEOUT_MS) || HEALTH_TIMEOUT_MS;
|
|
6
|
+
}
|
|
7
|
+
export function requestFailure(error) {
|
|
8
|
+
if (error instanceof Error && 'TimeoutError' === error.name) {
|
|
9
|
+
return `no answer within ${healthTimeoutMs() / 1000} seconds. Raise PW_HEALTH_TIMEOUT_MS if the site needs longer with empty caches`;
|
|
10
|
+
}
|
|
11
|
+
return error instanceof Error ? error.message : String(error);
|
|
12
|
+
}
|
|
3
13
|
export function normaliseBackendPath(backendPath) {
|
|
4
14
|
if (/[?#:]/.test(backendPath)) {
|
|
5
15
|
throw new Error(`[typo3-playwright-toolkit] backendPath must be the path of BE/entryPoint, such as /admin, got "${backendPath}".`);
|
|
@@ -1 +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;
|
|
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;AAE5C,MAAM,iBAAiB,GAAG,MAAM,CAAA;AAEhC,MAAM,UAAU,eAAe;IAC3B,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,iBAAiB,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IACzC,IAAI,KAAK,YAAY,KAAK,IAAI,cAAc,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1D,OAAO,oBAAoB,eAAe,EAAE,GAAG,IAAI,iFAAiF,CAAA;IACxI,CAAC;IAED,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACjE,CAAC;AAOD,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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
export { defineScenario, type ScenarioBuilders, type ScenarioFixtures, type ScenarioOptions, type SetupTools, } from './scenario.js';
|
|
2
2
|
export { siteURL } from './sites/registry.js';
|
|
3
|
+
export { editRecord } from './backend.js';
|
|
3
4
|
export { expect } from '@playwright/test';
|
|
4
5
|
export { defineToolkitConfig, getToolkitConfig, type ToolkitConfig, type ToolkitConfigInput, type ToolkitPaths, type ToolkitScreenshotConfig, type ContentTypeConstructor, } from './config.js';
|
|
5
6
|
export { defineBasePlaywrightConfig, type BasePlaywrightOverrides } from './playwright/base-config.js';
|
|
6
7
|
export { ContentBuilder, type QueuedContent } from './builders/content-builder.js';
|
|
7
8
|
export { PageBuilder } from './builders/page-builder.js';
|
|
9
|
+
export { FileMetadataBuilder } from './builders/file-metadata-builder.js';
|
|
8
10
|
export type { ChildRecord, RelationOwner, RelationOutput } from './builders/relations.js';
|
|
9
11
|
export { CoreContent, HeaderContent, TextContent, TextmediaContent, TextpicContent, ImageContent, BulletsContent, TableContent, UploadsContent, HtmlContent, DividerContent, ShortcutContent, MenuContent, type ContentTypeMap, type CoreContentTypeMap, } from './builders/core-content.js';
|
|
10
|
-
export type
|
|
12
|
+
export { RecordRefusedError, type RecordDataMap, type RecordToSave } from './http/record-edit.js';
|
|
13
|
+
export type { RecordToTranslate, TranslatedRecord, TranslationMode } from './http/record-commit.js';
|
|
11
14
|
export { newRecordIdentifier } from './builders/identifier.js';
|
|
12
15
|
export { flexForm, imageCrop, imageCrops } from './builders/fields.js';
|
|
13
16
|
export { expectScreenshot, waitForAnimations } from './checks/screenshot.js';
|
|
14
17
|
export { runAccessibilityScan, scanAccessibility, DEFAULT_SCAN_TAGS, type AccessibilityScanOptions, } from './checks/accessibility.js';
|
|
15
18
|
export { CspVerifier, type CspMode, type CspViolation } from './checks/csp.js';
|
|
16
19
|
export { TEST_ID_HEADER, TEST_ID_PATTERN } from './contract.js';
|
|
20
|
+
export { fetchForTest } from './http/off-site-headers.js';
|
|
17
21
|
export { RUN_ID_ENV, RUN_ID_PATTERN } from './state/run-id.js';
|
|
18
22
|
export type { NestedFields } from './types/common.js';
|
|
19
23
|
export type { ContentFields, ContentBuilderInterface } from './types/content-builder.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,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;
|
|
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,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,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;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AAGzE,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,OAAO,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACjG,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACnG,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,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,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,16 +1,20 @@
|
|
|
1
1
|
export { defineScenario, } from './scenario.js';
|
|
2
2
|
export { siteURL } from './sites/registry.js';
|
|
3
|
+
export { editRecord } from './backend.js';
|
|
3
4
|
export { expect } from '@playwright/test';
|
|
4
5
|
export { defineToolkitConfig, getToolkitConfig, } from './config.js';
|
|
5
6
|
export { defineBasePlaywrightConfig } from './playwright/base-config.js';
|
|
6
7
|
export { ContentBuilder } from './builders/content-builder.js';
|
|
7
8
|
export { PageBuilder } from './builders/page-builder.js';
|
|
9
|
+
export { FileMetadataBuilder } from './builders/file-metadata-builder.js';
|
|
8
10
|
export { CoreContent, HeaderContent, TextContent, TextmediaContent, TextpicContent, ImageContent, BulletsContent, TableContent, UploadsContent, HtmlContent, DividerContent, ShortcutContent, MenuContent, } from './builders/core-content.js';
|
|
11
|
+
export { RecordRefusedError } from './http/record-edit.js';
|
|
9
12
|
export { newRecordIdentifier } from './builders/identifier.js';
|
|
10
13
|
export { flexForm, imageCrop, imageCrops } from './builders/fields.js';
|
|
11
14
|
export { expectScreenshot, waitForAnimations } from './checks/screenshot.js';
|
|
12
15
|
export { runAccessibilityScan, scanAccessibility, DEFAULT_SCAN_TAGS, } from './checks/accessibility.js';
|
|
13
16
|
export { CspVerifier } from './checks/csp.js';
|
|
14
17
|
export { TEST_ID_HEADER, TEST_ID_PATTERN } from './contract.js';
|
|
18
|
+
export { fetchForTest } from './http/off-site-headers.js';
|
|
15
19
|
export { RUN_ID_ENV, RUN_ID_PATTERN } from './state/run-id.js';
|
|
16
20
|
//# sourceMappingURL=index.js.map
|
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,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;
|
|
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,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,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;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AAIzE,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;AACnC,OAAO,EAAE,kBAAkB,EAAyC,MAAM,uBAAuB,CAAA;AAEjG,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,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { type ToolkitConfig } from '../config.js';
|
|
2
2
|
/** Where `playwright:prepare` writes it, inside TYPO3's var path. */
|
|
3
3
|
export declare function mediaManifestFileFor(config: ToolkitConfig): string;
|
|
4
|
+
/** Beside the manifest: each fixture's metadata record in the default language. */
|
|
5
|
+
export declare function metadataManifestFileFor(config: ToolkitConfig): string;
|
|
4
6
|
export declare function resolveMediaUid(config: ToolkitConfig, name: string): number;
|
|
7
|
+
export declare function resolveMetadataUid(config: ToolkitConfig, name: string): number;
|
|
5
8
|
export declare function mediaUid(file: string | number): number;
|
|
6
9
|
//# sourceMappingURL=media-manifest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-manifest.d.ts","sourceRoot":"","sources":["../../src/media/media-manifest.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAInE,qEAAqE;AACrE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAElE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"media-manifest.d.ts","sourceRoot":"","sources":["../../src/media/media-manifest.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAInE,qEAAqE;AACrE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAElE;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAErE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAY3E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAY9E;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEtD"}
|
|
@@ -6,10 +6,26 @@ const cache = new Map();
|
|
|
6
6
|
export function mediaManifestFileFor(config) {
|
|
7
7
|
return path.join(config.paths.consumerRoot, 'var', 'playwright', 'media.json');
|
|
8
8
|
}
|
|
9
|
+
/** Beside the manifest: each fixture's metadata record in the default language. */
|
|
10
|
+
export function metadataManifestFileFor(config) {
|
|
11
|
+
return path.join(path.dirname(mediaManifestFileFor(config)), 'media-metadata.json');
|
|
12
|
+
}
|
|
9
13
|
export function resolveMediaUid(config, name) {
|
|
10
14
|
const file = mediaManifestFileFor(config);
|
|
11
|
-
|
|
12
|
-
|
|
15
|
+
return uidOf(read(file, `[typo3-playwright-toolkit] No media manifest at ${file}.\n` +
|
|
16
|
+
'Run `ddev playwright-prepare` to write it — or, if this project seeds no media,\n' +
|
|
17
|
+
'`withFileReference` needs a numeric sys_file uid rather than a name.'), name);
|
|
18
|
+
}
|
|
19
|
+
export function resolveMetadataUid(config, name) {
|
|
20
|
+
const file = metadataManifestFileFor(config);
|
|
21
|
+
return uidOf(read(file, `[typo3-playwright-toolkit] No media metadata at ${file}.\n` +
|
|
22
|
+
'plan2net/playwright-toolkit 0.27.0 and newer write it: update the extension and run ' +
|
|
23
|
+
'`ddev playwright-prepare`.'), name);
|
|
24
|
+
}
|
|
25
|
+
export function mediaUid(file) {
|
|
26
|
+
return typeof file === 'number' ? file : resolveMediaUid(getToolkitConfig(), file);
|
|
27
|
+
}
|
|
28
|
+
function uidOf(manifest, name) {
|
|
13
29
|
const uid = manifest[name];
|
|
14
30
|
if (uid === undefined) {
|
|
15
31
|
throw new Error(`[typo3-playwright-toolkit] No fixture named "${name}".\n` +
|
|
@@ -17,15 +33,16 @@ export function resolveMediaUid(config, name) {
|
|
|
17
33
|
}
|
|
18
34
|
return uid;
|
|
19
35
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
36
|
+
function read(file, missing) {
|
|
37
|
+
const cached = cache.get(file);
|
|
38
|
+
if (undefined !== cached) {
|
|
39
|
+
return cached;
|
|
40
|
+
}
|
|
24
41
|
if (!fs.existsSync(file)) {
|
|
25
|
-
throw new Error(
|
|
26
|
-
'Run `ddev playwright-prepare` to write it — or, if this project seeds no media,\n' +
|
|
27
|
-
'`withFileReference` needs a numeric sys_file uid rather than a name.');
|
|
42
|
+
throw new Error(missing);
|
|
28
43
|
}
|
|
29
|
-
|
|
44
|
+
const manifest = JSON.parse(fs.readFileSync(file, 'utf-8'));
|
|
45
|
+
cache.set(file, manifest);
|
|
46
|
+
return manifest;
|
|
30
47
|
}
|
|
31
48
|
//# sourceMappingURL=media-manifest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-manifest.js","sourceRoot":"","sources":["../../src/media/media-manifest.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;AAEnE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkC,CAAA;AAEvD,qEAAqE;AACrE,MAAM,UAAU,oBAAoB,CAAC,MAAqB;IACtD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAqB,EAAE,IAAY;IAC/D,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"media-manifest.js","sourceRoot":"","sources":["../../src/media/media-manifest.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;AAEnE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkC,CAAA;AAEvD,qEAAqE;AACrE,MAAM,UAAU,oBAAoB,CAAC,MAAqB;IACtD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,CAAA;AAClF,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,uBAAuB,CAAC,MAAqB;IACzD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAA;AACvF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAqB,EAAE,IAAY;IAC/D,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAEzC,OAAO,KAAK,CACR,IAAI,CACA,IAAI,EACJ,mDAAmD,IAAI,KAAK;QACxD,mFAAmF;QACnF,sEAAsE,CAC7E,EACD,IAAI,CACP,CAAA;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAqB,EAAE,IAAY;IAClE,MAAM,IAAI,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAA;IAE5C,OAAO,KAAK,CACR,IAAI,CACA,IAAI,EACJ,mDAAmD,IAAI,KAAK;QACxD,sFAAsF;QACtF,4BAA4B,CACnC,EACD,IAAI,CACP,CAAA;AACL,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAqB;IAC1C,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,CAAA;AACtF,CAAC;AAED,SAAS,KAAK,CAAC,QAAgC,EAAE,IAAY;IACzD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC1B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACX,gDAAgD,IAAI,MAAM;YACtD,cAAc,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAC1E,CAAA;IACL,CAAC;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AAED,SAAS,IAAI,CAAC,IAAY,EAAE,OAAe;IACvC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,MAAM,CAAA;IACjB,CAAC;IAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAA2B,CAAA;IACrF,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAEzB,OAAO,QAAQ,CAAA;AACnB,CAAC"}
|
package/dist/scenario.d.ts
CHANGED
|
@@ -2,8 +2,10 @@ import { type APIRequestContext, type Browser, type BrowserContextOptions, type
|
|
|
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
|
+
import { type RecordToTranslate, type TranslatedRecord } from './http/record-commit.js';
|
|
5
6
|
import { ContentBuilder, type QueuedContent } from './builders/content-builder.js';
|
|
6
7
|
import { PageBuilder } from './builders/page-builder.js';
|
|
8
|
+
import { FileMetadataBuilder } from './builders/file-metadata-builder.js';
|
|
7
9
|
import { type ScenarioSite } from './sites/registry.js';
|
|
8
10
|
type SetupFailureReporter = (config: ToolkitConfig, scenarioKey: string, testInfo: TestInfo, error: unknown) => Promise<never>;
|
|
9
11
|
/** A failed setup throws out of ensureState, so it never reaches the fixture's end. */
|
|
@@ -11,6 +13,8 @@ export declare function resolveSetupOutcome<T>(config: ToolkitConfig, scenarioKe
|
|
|
11
13
|
export interface ScenarioBuilders {
|
|
12
14
|
page(): PageBuilder;
|
|
13
15
|
content(): ContentBuilder;
|
|
16
|
+
/** The metadata record of a media fixture, by its name. */
|
|
17
|
+
fileMetadata(name: string): FileMetadataBuilder;
|
|
14
18
|
/**
|
|
15
19
|
* Builds several elements of one page in a single request, in the order given.
|
|
16
20
|
* They may not reference one another — that needs a uid, which only a save
|
|
@@ -28,11 +32,24 @@ export interface SetupTools {
|
|
|
28
32
|
request: APIRequestContext;
|
|
29
33
|
builders: ScenarioBuilders;
|
|
30
34
|
/** For a table no builder covers. */
|
|
31
|
-
saveRecord(record: RecordToSave)
|
|
35
|
+
saveRecord: (record: RecordToSave) => Promise<SavedRecord>;
|
|
36
|
+
/** For a table no builder covers: the backend's translate command. saveRecord() then fills the translation. */
|
|
37
|
+
translateRecord: (record: RecordToTranslate) => Promise<TranslatedRecord>;
|
|
38
|
+
/**
|
|
39
|
+
* Overrides the scenario site's settings in this test's database only, keyed
|
|
40
|
+
* like `settings.yaml` flattened: `{ 'theme.look': 'wild' }`. A second call
|
|
41
|
+
* replaces the first. The site's pages then render without the page cache.
|
|
42
|
+
*/
|
|
43
|
+
siteSettings(settings: Record<string, string | number | boolean>): Promise<void>;
|
|
32
44
|
}
|
|
33
45
|
export interface ScenarioFixtures<S> {
|
|
34
46
|
state: S;
|
|
35
47
|
testId: string;
|
|
48
|
+
/**
|
|
49
|
+
* A page logged into the backend on this test's database, for checks of the forms
|
|
50
|
+
* editors see; `editRecord()` opens one. Opened only for a test that asks for it.
|
|
51
|
+
*/
|
|
52
|
+
backendPage: Page;
|
|
36
53
|
}
|
|
37
54
|
export interface ScenarioOptions {
|
|
38
55
|
site?: string;
|
|
@@ -53,11 +70,13 @@ export declare function createScenarioFolder(page: Page, builderContext: Partial
|
|
|
53
70
|
export declare function buildScenarioContext(page: Page, config: ToolkitConfig, session: {
|
|
54
71
|
backendPath: string;
|
|
55
72
|
routeToken: string;
|
|
73
|
+
commandToken?: string;
|
|
56
74
|
}, testId: string, name: string, site?: ScenarioSite): Promise<Partial<RequestContext>>;
|
|
57
75
|
export type ProjectContextOptions = Pick<BrowserContextOptions, 'ignoreHTTPSErrors' | 'httpCredentials' | 'proxy'>;
|
|
58
76
|
export declare function openAuthenticatedPage(browser: Browser, config: ToolkitConfig, testId: string, name?: string, site?: ScenarioSite, projectOptions?: ProjectContextOptions): Promise<{
|
|
59
77
|
page: Page;
|
|
60
78
|
routeToken: string;
|
|
79
|
+
commandToken: string;
|
|
61
80
|
backendPath: string;
|
|
62
81
|
close: () => Promise<void>;
|
|
63
82
|
}>;
|
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,EAEH,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,qBAAqB,EAC1B,KAAK,IAAI,EACT,KAAK,QAAQ,EAChB,MAAM,kBAAkB,CAAA;AAIzB,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAKlE,OAAO,EAEH,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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"}
|