@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
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { getToolkitConfig } from '../config.js';
|
|
2
|
+
import { translateRecord } from '../http/record-commit.js';
|
|
3
|
+
import { saveRecord } from '../http/record-edit.js';
|
|
4
|
+
import { resolveMetadataUid } from '../media/media-manifest.js';
|
|
5
|
+
import { toColumnValues } from './fields.js';
|
|
6
|
+
import { resolveRequestContext } from './request-context.js';
|
|
7
|
+
export class FileMetadataBuilder {
|
|
8
|
+
page;
|
|
9
|
+
name;
|
|
10
|
+
requestContext;
|
|
11
|
+
language;
|
|
12
|
+
fields = {};
|
|
13
|
+
constructor(page, name, requestContext) {
|
|
14
|
+
this.page = page;
|
|
15
|
+
this.name = name;
|
|
16
|
+
this.requestContext = requestContext;
|
|
17
|
+
if ('string' !== typeof name) {
|
|
18
|
+
throw new Error(`[typo3-playwright-toolkit] fileMetadata() takes the name of a media fixture, not ${String(name)}: ` +
|
|
19
|
+
'a file uid does not say which metadata record belongs to it.');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
withField(column, value) {
|
|
23
|
+
this.fields[column] = value;
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
/** Makes create() translate the metadata the way the backend does, then fill the translation. */
|
|
27
|
+
translate(language) {
|
|
28
|
+
this.language = language;
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
31
|
+
async create() {
|
|
32
|
+
const context = resolveRequestContext(this.page, this.requestContext);
|
|
33
|
+
let uid = resolveMetadataUid(getToolkitConfig(), this.name);
|
|
34
|
+
if (undefined !== this.language) {
|
|
35
|
+
uid = (await translateRecord(this.page.request, context, {
|
|
36
|
+
table: 'sys_file_metadata',
|
|
37
|
+
uid,
|
|
38
|
+
language: this.language,
|
|
39
|
+
mode: 'localize',
|
|
40
|
+
})).uid;
|
|
41
|
+
}
|
|
42
|
+
const row = toColumnValues(this.fields);
|
|
43
|
+
if (Object.keys(row).length > 0) {
|
|
44
|
+
await saveRecord(this.page.request, context, {
|
|
45
|
+
table: 'sys_file_metadata',
|
|
46
|
+
identifier: String(uid),
|
|
47
|
+
target: uid,
|
|
48
|
+
data: { sys_file_metadata: { [String(uid)]: row } },
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return { id: String(uid) };
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=file-metadata-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-metadata-builder.js","sourceRoot":"","sources":["../../src/builders/file-metadata-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,qBAAqB,EAAuB,MAAM,sBAAsB,CAAA;AAEjF,MAAM,OAAO,mBAAmB;IAKP;IACA;IACA;IANb,QAAQ,CAAS;IACR,MAAM,GAAkB,EAAE,CAAA;IAE3C,YACqB,IAAU,EACV,IAAY,EACZ,cAAwC;QAFxC,SAAI,GAAJ,IAAI,CAAM;QACV,SAAI,GAAJ,IAAI,CAAQ;QACZ,mBAAc,GAAd,cAAc,CAA0B;QAEzD,IAAI,QAAQ,KAAK,OAAO,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACX,oFAAoF,MAAM,CAAC,IAAI,CAAC,IAAI;gBAChG,8DAA8D,CACrE,CAAA;QACL,CAAC;IACL,CAAC;IAED,SAAS,CAAC,MAAc,EAAE,KAA4B;QAClD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAA;QAE3B,OAAO,IAAI,CAAA;IACf,CAAC;IAED,iGAAiG;IACjG,SAAS,CAAC,QAAgB;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAExB,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK,CAAC,MAAM;QACR,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QACrE,IAAI,GAAG,GAAG,kBAAkB,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAE3D,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,GAAG,GAAG,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;gBACrD,KAAK,EAAE,mBAAmB;gBAC1B,GAAG;gBACH,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,UAAU;aACnB,CAAC,CAAC,CAAC,GAAG,CAAA;QACX,CAAC;QAED,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;gBACzC,KAAK,EAAE,mBAAmB;gBAC1B,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC;gBACvB,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;aACtD,CAAC,CAAA;QACN,CAAC;QAED,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAA;IAC9B,CAAC;CACJ"}
|
|
@@ -15,10 +15,14 @@ declare const DOKTYPES: {
|
|
|
15
15
|
readonly folder: 254;
|
|
16
16
|
};
|
|
17
17
|
export type Doktype = keyof typeof DOKTYPES;
|
|
18
|
+
/** TYPO3 hides what it translates, for an editor to check first. */
|
|
19
|
+
export declare const TRANSLATION_DEFAULTS: Fields;
|
|
18
20
|
export declare class PageBuilder {
|
|
19
21
|
protected fields: Fields;
|
|
20
22
|
private page;
|
|
21
23
|
private optedOutOfFormRules;
|
|
24
|
+
private translation?;
|
|
25
|
+
private readonly copiedEdits;
|
|
22
26
|
private readonly relations;
|
|
23
27
|
private readonly requestContext?;
|
|
24
28
|
constructor(page: Page, requestContext?: Partial<RequestContext>);
|
|
@@ -30,6 +34,13 @@ export declare class PageBuilder {
|
|
|
30
34
|
withSlug(slug: string): this;
|
|
31
35
|
/** A file reference on any column, with the reference's own fields. */
|
|
32
36
|
withFileReference(column: string, file: string | number, fields?: ContentFields): this;
|
|
37
|
+
/**
|
|
38
|
+
* Makes create() translate the page the way the backend does, connected to it.
|
|
39
|
+
* The other setters then fill the translation.
|
|
40
|
+
*/
|
|
41
|
+
translate(pageId: number | string, language: number): this;
|
|
42
|
+
/** Changes the reference the translation copied from that position (from 0) of the origin's column. */
|
|
43
|
+
withCopiedFileReference(column: string, position: number, fields: ContentFields): this;
|
|
33
44
|
/** A name core ships, or a number if your project registered its own doktype. */
|
|
34
45
|
withDoktype(type: Doktype | number): this;
|
|
35
46
|
/** A string too, since that is what create() reports. */
|
|
@@ -38,10 +49,13 @@ export declare class PageBuilder {
|
|
|
38
49
|
id: string;
|
|
39
50
|
slug: string;
|
|
40
51
|
}>;
|
|
52
|
+
/** Saves the page as create() does, for a test that expects the backend to refuse it: TYPO3's reasons. */
|
|
53
|
+
refusal(): Promise<string[]>;
|
|
41
54
|
update(pageId: string): Promise<{
|
|
42
55
|
id: string;
|
|
43
56
|
slug: string;
|
|
44
57
|
}>;
|
|
58
|
+
private createTranslation;
|
|
45
59
|
private rememberSlug;
|
|
46
60
|
}
|
|
47
61
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-builder.d.ts","sourceRoot":"","sources":["../../src/builders/page-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAAwD,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"page-builder.d.ts","sourceRoot":"","sources":["../../src/builders/page-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAAwD,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAKhH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAGhE,UAAU,MAAM;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,CAAA;CACtE;AAED,QAAA,MAAM,QAAQ;;;;;;;;CAQJ,CAAA;AAEV,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,QAAQ,CAAA;AAY3C,oEAAoE;AACpE,eAAO,MAAM,oBAAoB,EAAE,MAA0B,CAAA;AAE7D,qBAAa,WAAW;IACpB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAK;IAE7B,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,mBAAmB,CAAQ;IACnC,OAAO,CAAC,WAAW,CAAC,CAAsC;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8D;IACxF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAyB;gBAE7C,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAKhE,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B,+EAA+E;IAC/E,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;IAKjE,gBAAgB,IAAI,IAAI;IAKxB,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAa5B,uEAAuE;IACvE,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,GAAE,aAAkB,GAAG,IAAI;IAK1F;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAM1D,uGAAuG;IACvG,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAMtF,iFAAiF;IACjF,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI;IAMzC,yDAAyD;IACzD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAK/B,MAAM,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IA+BrD,0GAA0G;IAC1G,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAItB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;YAkBrD,iBAAiB;IAsC/B,OAAO,CAAC,YAAY;CAiBvB"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { saveRecord } from '../http/record-edit.js';
|
|
1
|
+
import { refusalOf, saveRecord } from '../http/record-edit.js';
|
|
2
2
|
import { replayParentId, requireTestId, resolveRequestContext } from './request-context.js';
|
|
3
|
-
import { toColumnValues } from './fields.js';
|
|
3
|
+
import { ownValues, toColumnValues } from './fields.js';
|
|
4
4
|
import { newRecordIdentifier } from './identifier.js';
|
|
5
|
-
import { mergeRecords, RelationSet } from './relations.js';
|
|
5
|
+
import { keepCopies, mergeRecords, RelationSet } from './relations.js';
|
|
6
|
+
import { translateRecord } from '../http/record-commit.js';
|
|
6
7
|
import { getToolkitConfig } from '../config.js';
|
|
7
8
|
const DOKTYPES = {
|
|
8
9
|
page: 1,
|
|
@@ -22,10 +23,14 @@ const CREATE_DEFAULTS = {
|
|
|
22
23
|
pid: 1,
|
|
23
24
|
hidden: false,
|
|
24
25
|
};
|
|
26
|
+
/** TYPO3 hides what it translates, for an editor to check first. */
|
|
27
|
+
export const TRANSLATION_DEFAULTS = { hidden: false };
|
|
25
28
|
export class PageBuilder {
|
|
26
29
|
fields = {};
|
|
27
30
|
page;
|
|
28
31
|
optedOutOfFormRules = false;
|
|
32
|
+
translation;
|
|
33
|
+
copiedEdits = [];
|
|
29
34
|
relations = new RelationSet('pages', (column) => column in this.fields);
|
|
30
35
|
requestContext;
|
|
31
36
|
constructor(page, requestContext) {
|
|
@@ -61,6 +66,19 @@ export class PageBuilder {
|
|
|
61
66
|
this.relations.withFileReference(column, file, fields);
|
|
62
67
|
return this;
|
|
63
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Makes create() translate the page the way the backend does, connected to it.
|
|
71
|
+
* The other setters then fill the translation.
|
|
72
|
+
*/
|
|
73
|
+
translate(pageId, language) {
|
|
74
|
+
this.translation = { origin: Number(pageId), language };
|
|
75
|
+
return this;
|
|
76
|
+
}
|
|
77
|
+
/** Changes the reference the translation copied from that position (from 0) of the origin's column. */
|
|
78
|
+
withCopiedFileReference(column, position, fields) {
|
|
79
|
+
this.copiedEdits.push({ column, position, fields });
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
64
82
|
/** A name core ships, or a number if your project registered its own doktype. */
|
|
65
83
|
withDoktype(type) {
|
|
66
84
|
this.fields.doktype = 'number' === typeof type ? type : DOKTYPES[type];
|
|
@@ -72,6 +90,9 @@ export class PageBuilder {
|
|
|
72
90
|
return this;
|
|
73
91
|
}
|
|
74
92
|
async create() {
|
|
93
|
+
if (undefined !== this.translation) {
|
|
94
|
+
return this.createTranslation(this.translation);
|
|
95
|
+
}
|
|
75
96
|
const context = resolveRequestContext(this.page, this.requestContext);
|
|
76
97
|
const fields = { ...CREATE_DEFAULTS, pid: context.rootPageId ?? CREATE_DEFAULTS.pid, ...this.fields };
|
|
77
98
|
const identifier = newRecordIdentifier();
|
|
@@ -93,6 +114,10 @@ export class PageBuilder {
|
|
|
93
114
|
context.replayFolder?.ownPages.add(String(saved.uid));
|
|
94
115
|
return { id: String(saved.uid), slug: saved.slug ?? (this.fields.slug || '') };
|
|
95
116
|
}
|
|
117
|
+
/** Saves the page as create() does, for a test that expects the backend to refuse it: TYPO3's reasons. */
|
|
118
|
+
refusal() {
|
|
119
|
+
return refusalOf(() => this.create());
|
|
120
|
+
}
|
|
96
121
|
async update(pageId) {
|
|
97
122
|
const context = resolveRequestContext(this.page, this.requestContext);
|
|
98
123
|
const { columns, records } = this.relations.materialise({ pid: pageId, sys_language_uid: 0 });
|
|
@@ -107,6 +132,33 @@ export class PageBuilder {
|
|
|
107
132
|
});
|
|
108
133
|
return { id: pageId, slug: saved.slug ?? (this.fields.slug || '') };
|
|
109
134
|
}
|
|
135
|
+
async createTranslation(translation) {
|
|
136
|
+
if ('pid' in this.fields || 'doktype' in this.fields) {
|
|
137
|
+
throw new Error('[typo3-playwright-toolkit] A page translation takes its parent and its type from the page it ' +
|
|
138
|
+
'translates. Leave out atParentId() and withDoktype().');
|
|
139
|
+
}
|
|
140
|
+
const context = resolveRequestContext(this.page, this.requestContext);
|
|
141
|
+
const translated = await translateRecord(this.page.request, context, {
|
|
142
|
+
table: 'pages',
|
|
143
|
+
uid: translation.origin,
|
|
144
|
+
language: translation.language,
|
|
145
|
+
mode: 'localize',
|
|
146
|
+
});
|
|
147
|
+
const id = String(translated.uid);
|
|
148
|
+
const { columns, records } = keepCopies(this.relations.materialise({ pid: translated.uid, sys_language_uid: translation.language }), translated, this.copiedEdits);
|
|
149
|
+
const row = { ...toColumnValues({ ...TRANSLATION_DEFAULTS, ...this.fields }), ...columns };
|
|
150
|
+
const data = { pages: { [id]: { ...row, l10n_state: ownValues(Object.keys(row)) } } };
|
|
151
|
+
mergeRecords(data, records);
|
|
152
|
+
const saved = await saveRecord(this.page.request, context, {
|
|
153
|
+
table: 'pages',
|
|
154
|
+
identifier: id,
|
|
155
|
+
target: translated.uid,
|
|
156
|
+
data,
|
|
157
|
+
withoutFormRules: this.optedOutOfFormRules,
|
|
158
|
+
});
|
|
159
|
+
this.rememberSlug(context, saved.slug);
|
|
160
|
+
return { id, slug: saved.slug ?? translated.slug ?? '' };
|
|
161
|
+
}
|
|
110
162
|
rememberSlug(context, stored) {
|
|
111
163
|
const requested = this.fields.slug;
|
|
112
164
|
if ('string' !== typeof requested || '' === requested || !context.usedSlugs || undefined === stored) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-builder.js","sourceRoot":"","sources":["../../src/builders/page-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAsB,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"page-builder.js","sourceRoot":"","sources":["../../src/builders/page-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,20 @@ export interface RelationOutput {
|
|
|
9
9
|
records: RecordDataMap;
|
|
10
10
|
}
|
|
11
11
|
export declare function mergeRecords(into: RecordDataMap, from: RecordDataMap): void;
|
|
12
|
+
export interface CopiedReferenceEdit {
|
|
13
|
+
column: string;
|
|
14
|
+
position: number;
|
|
15
|
+
fields: ContentFields;
|
|
16
|
+
}
|
|
17
|
+
export interface CopiedReferences {
|
|
18
|
+
references: Record<string, number[]>;
|
|
19
|
+
truncated: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A file column posts every reference it keeps: one the post leaves out stays
|
|
23
|
+
* attached in a slot the new ones then share, so a translation lists its copies first.
|
|
24
|
+
*/
|
|
25
|
+
export declare function keepCopies(output: RelationOutput, copied: CopiedReferences, edits: CopiedReferenceEdit[]): RelationOutput;
|
|
12
26
|
export declare class ChildRecord {
|
|
13
27
|
private readonly fields;
|
|
14
28
|
private readonly relations;
|
|
@@ -36,6 +50,5 @@ export declare class RelationSet {
|
|
|
36
50
|
refuseColumnHeld(column: string): void;
|
|
37
51
|
materialise(owner: RelationOwner): RelationOutput;
|
|
38
52
|
private claim;
|
|
39
|
-
private refuseWiredColumns;
|
|
40
53
|
}
|
|
41
54
|
//# sourceMappingURL=relations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relations.d.ts","sourceRoot":"","sources":["../../src/builders/relations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAGhE,MAAM,WAAW,aAAa;IAC1B,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAAA;CACpC;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,OAAO,EAAE,aAAa,CAAA;CACzB;AAID,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAc3E;
|
|
1
|
+
{"version":3,"file":"relations.d.ts","sourceRoot":"","sources":["../../src/builders/relations.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,43 @@ export function mergeRecords(into, from) {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* A file column posts every reference it keeps: one the post leaves out stays
|
|
19
|
+
* attached in a slot the new ones then share, so a translation lists its copies first.
|
|
20
|
+
*/
|
|
21
|
+
export function keepCopies(output, copied, edits) {
|
|
22
|
+
const touched = [...new Set([...Object.keys(output.columns), ...edits.map(({ column }) => column)])];
|
|
23
|
+
if (copied.truncated && touched.length > 0) {
|
|
24
|
+
throw new Error(`[typo3-playwright-toolkit] The translation copied too many references to report, so ` +
|
|
25
|
+
`${touched.join(', ')} cannot be changed without losing their order. Set fields only, ` +
|
|
26
|
+
'or give the origin fewer references.');
|
|
27
|
+
}
|
|
28
|
+
const records = {};
|
|
29
|
+
mergeRecords(records, output.records);
|
|
30
|
+
for (const { column, position, fields } of edits) {
|
|
31
|
+
refuseWiredColumns(fields);
|
|
32
|
+
const copies = copied.references[column] ?? [];
|
|
33
|
+
const copy = copies[position];
|
|
34
|
+
if (undefined === copy) {
|
|
35
|
+
throw new Error(`[typo3-playwright-toolkit] The translation copied ${copies.length} references in ${column}, ` +
|
|
36
|
+
`so there is none at position ${position}. Positions count from 0.`);
|
|
37
|
+
}
|
|
38
|
+
mergeRecords(records, { sys_file_reference: { [String(copy)]: fields } });
|
|
39
|
+
}
|
|
40
|
+
const columns = Object.fromEntries(touched.map((column) => {
|
|
41
|
+
const added = output.columns[column] ? output.columns[column].split(',') : [];
|
|
42
|
+
return [column, [...(copied.references[column] ?? []).map(String), ...added].join(',')];
|
|
43
|
+
}));
|
|
44
|
+
return { columns, records };
|
|
45
|
+
}
|
|
46
|
+
function refuseWiredColumns(fields) {
|
|
47
|
+
const wired = Object.keys(fields).filter((column) => WIRED_COLUMNS.includes(column));
|
|
48
|
+
if (wired.length > 0) {
|
|
49
|
+
throw new Error(`[typo3-playwright-toolkit] ${wired.join(', ')} cannot be set on a relation — ` +
|
|
50
|
+
'the toolkit writes it, and a value of your own would point the row ' +
|
|
51
|
+
'somewhere the parent column does not.');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
17
54
|
export class ChildRecord {
|
|
18
55
|
fields = {};
|
|
19
56
|
relations;
|
|
@@ -52,7 +89,7 @@ export class RelationSet {
|
|
|
52
89
|
this.isColumnSet = isColumnSet;
|
|
53
90
|
}
|
|
54
91
|
withFileReference(column, file, fields = {}) {
|
|
55
|
-
|
|
92
|
+
refuseWiredColumns(fields);
|
|
56
93
|
this.claim(column, 'sys_file_reference');
|
|
57
94
|
this.references.push({ column, identifier: newRecordIdentifier(), fileUid: mediaUid(file), fields });
|
|
58
95
|
return this;
|
|
@@ -120,13 +157,5 @@ export class RelationSet {
|
|
|
120
157
|
}
|
|
121
158
|
this.claims.set(column, table);
|
|
122
159
|
}
|
|
123
|
-
refuseWiredColumns(fields) {
|
|
124
|
-
const wired = Object.keys(fields).filter((column) => WIRED_COLUMNS.includes(column));
|
|
125
|
-
if (wired.length > 0) {
|
|
126
|
-
throw new Error(`[typo3-playwright-toolkit] ${wired.join(', ')} cannot be set on a relation — ` +
|
|
127
|
-
'the toolkit writes it, and a value of your own would point the row ' +
|
|
128
|
-
'somewhere the parent column does not.');
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
160
|
}
|
|
132
161
|
//# sourceMappingURL=relations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relations.js","sourceRoot":"","sources":["../../src/builders/relations.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"relations.js","sourceRoot":"","sources":["../../src/builders/relations.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,8 @@ export interface RequestContext {
|
|
|
10
10
|
testId: string;
|
|
11
11
|
/** For `record_edit`; the session endpoint hands it out. */
|
|
12
12
|
routeToken: string;
|
|
13
|
+
/** For `tce_db`, which runs a command such as a translation. */
|
|
14
|
+
commandToken?: string;
|
|
13
15
|
replayFolder?: ReplayFolder;
|
|
14
16
|
/** Slugs this scenario already created. */
|
|
15
17
|
usedSlugs?: Set<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/builders/request-context.ts"],"names":[],"mappings":"AAIA,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,8FAA8F;IAC9F,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,uGAAuG;AACvG,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIhF;AAED,MAAM,WAAW,oBAAoB;IACjC,GAAG,IAAI,MAAM,CAAA;IACb,OAAO,IAAI,OAAO,CAAA;CACrB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAM5E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAWnF;AAED,wBAAgB,qBAAqB,CACjC,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,GAAE,OAAO,CAAC,cAAc,CAAM,GACvC,cAAc,
|
|
1
|
+
{"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/builders/request-context.ts"],"names":[],"mappings":"AAIA,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,8FAA8F;IAC9F,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAA;IAClB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,uGAAuG;AACvG,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIhF;AAED,MAAM,WAAW,oBAAoB;IACjC,GAAG,IAAI,MAAM,CAAA;IACb,OAAO,IAAI,OAAO,CAAA;CACrB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAM5E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAWnF;AAED,wBAAgB,qBAAqB,CACjC,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,GAAE,OAAO,CAAC,cAAc,CAAM,GACvC,cAAc,CAahB"}
|
|
@@ -34,6 +34,7 @@ export function resolveRequestContext(page, explicit = {}) {
|
|
|
34
34
|
backendPath: explicit.backendPath ?? getToolkitConfig().backendPath ?? DEFAULT_BACKEND_PATH,
|
|
35
35
|
testId: requireTestId(page, explicit.testId),
|
|
36
36
|
routeToken: explicit.routeToken ?? '',
|
|
37
|
+
commandToken: explicit.commandToken ?? '',
|
|
37
38
|
};
|
|
38
39
|
}
|
|
39
40
|
//# sourceMappingURL=request-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/builders/request-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/builders/request-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAuB1D,uGAAuG;AACvG,MAAM,UAAU,cAAc,CAAC,OAAuB,EAAE,QAAgB;IACpE,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAA;IAEnC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;AAC1E,CAAC;AAOD;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAA0B;IACpD,OAAO,CACF,IAAkC,CAAC,MAAM;QACzC,IAAI,CAAC,OAAO,EAAwB,CAAC,MAAM;QAC5C,SAAS,CACZ,CAAA;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAA0B,EAAE,QAAiB;IACvE,MAAM,MAAM,GAAG,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAEpD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACX,8FAA8F;YAC1F,gFAAgF,CACvF,CAAA;IACL,CAAC;IAED,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,qBAAqB,CACjC,IAA0B,EAC1B,WAAoC,EAAE;IAEtC,OAAO;QACH,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,2EAA2E;QAC3E,2EAA2E;QAC3E,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,gBAAgB,EAAE,CAAC,UAAU;QAC1D,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,gBAAgB,EAAE,CAAC,WAAW,IAAI,oBAAoB;QAC3F,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;QAC5C,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,EAAE;QACrC,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,EAAE;KAC5C,CAAA;AACL,CAAC"}
|
package/dist/contract.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export declare const TEST_ID_PATTERN: RegExp;
|
|
|
4
4
|
/** JSON, so a value stays ASCII in a header field and a later field needs no second header. */
|
|
5
5
|
export declare const SAVED_RECORD_HEADER = "X-Playwright-Saved-Record";
|
|
6
6
|
export declare const RECORD_DIAGNOSTICS_HEADER = "X-Playwright-Record-Diagnostics";
|
|
7
|
+
export declare const TRANSLATED_RECORD_HEADER = "X-Playwright-Translated-Record";
|
|
7
8
|
export declare const SKIP_FORM_RULES_HEADER = "X-Playwright-Skip-Form-Rules";
|
|
8
9
|
export declare const PROBE_HEADER = "X-Playwright-Probe";
|
|
9
10
|
/** Replay's own test ID; the extension maps it to the throwaway base database. */
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAGhD,eAAO,MAAM,cAAc,yBAAyB,CAAA;AACpD,eAAO,MAAM,eAAe,QAAmB,CAAA;AAE/C,+FAA+F;AAC/F,eAAO,MAAM,mBAAmB,8BAA8B,CAAA;AAC9D,eAAO,MAAM,yBAAyB,oCAAoC,CAAA;AAC1E,eAAO,MAAM,sBAAsB,iCAAiC,CAAA;AACpE,eAAO,MAAM,YAAY,uBAAuB,CAAA;AAEhD,kFAAkF;AAClF,eAAO,MAAM,cAAc,qBAAqB,CAAA;AAKhD,wBAAgB,cAAc,IAAI,MAAM,CAMvC;AAED,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAK5F;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAErE"}
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAGhD,eAAO,MAAM,cAAc,yBAAyB,CAAA;AACpD,eAAO,MAAM,eAAe,QAAmB,CAAA;AAE/C,+FAA+F;AAC/F,eAAO,MAAM,mBAAmB,8BAA8B,CAAA;AAC9D,eAAO,MAAM,yBAAyB,oCAAoC,CAAA;AAC1E,eAAO,MAAM,wBAAwB,mCAAmC,CAAA;AACxE,eAAO,MAAM,sBAAsB,iCAAiC,CAAA;AACpE,eAAO,MAAM,YAAY,uBAAuB,CAAA;AAEhD,kFAAkF;AAClF,eAAO,MAAM,cAAc,qBAAqB,CAAA;AAKhD,wBAAgB,cAAc,IAAI,MAAM,CAMvC;AAED,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAK5F;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAErE"}
|
package/dist/contract.js
CHANGED
|
@@ -5,6 +5,7 @@ export const TEST_ID_PATTERN = /^[A-Z0-9]{16}$/;
|
|
|
5
5
|
/** JSON, so a value stays ASCII in a header field and a later field needs no second header. */
|
|
6
6
|
export const SAVED_RECORD_HEADER = 'X-Playwright-Saved-Record';
|
|
7
7
|
export const RECORD_DIAGNOSTICS_HEADER = 'X-Playwright-Record-Diagnostics';
|
|
8
|
+
export const TRANSLATED_RECORD_HEADER = 'X-Playwright-Translated-Record';
|
|
8
9
|
export const SKIP_FORM_RULES_HEADER = 'X-Playwright-Skip-Form-Rules';
|
|
9
10
|
export const PROBE_HEADER = 'X-Playwright-Probe';
|
|
10
11
|
/** Replay's own test ID; the extension maps it to the throwaway base database. */
|
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEtE,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAA;AACpD,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAA;AAE/C,+FAA+F;AAC/F,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAA;AAC9D,MAAM,CAAC,MAAM,yBAAyB,GAAG,iCAAiC,CAAA;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,8BAA8B,CAAA;AACpE,MAAM,CAAC,MAAM,YAAY,GAAG,oBAAoB,CAAA;AAEhD,kFAAkF;AAClF,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAA;AAEhD,MAAM,gBAAgB,GAAG,sCAAsC,CAAA;AAC/D,MAAM,cAAc,GAAG,EAAE,CAAA;AAEzB,MAAM,UAAU,cAAc;IAC1B,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAA;IACzE,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,cAAc,CAAC,MAAqB,EAAE,MAAc;IAChE,OAAO;QACH,GAAG,cAAc,CAAC,MAAM,CAAC;QACzB,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC;KAC5C,CAAA;AACL,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAC,MAAc;IACzC,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;AACvC,CAAC"}
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEtE,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAA;AACpD,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAA;AAE/C,+FAA+F;AAC/F,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAA;AAC9D,MAAM,CAAC,MAAM,yBAAyB,GAAG,iCAAiC,CAAA;AAC1E,MAAM,CAAC,MAAM,wBAAwB,GAAG,gCAAgC,CAAA;AACxE,MAAM,CAAC,MAAM,sBAAsB,GAAG,8BAA8B,CAAA;AACpE,MAAM,CAAC,MAAM,YAAY,GAAG,oBAAoB,CAAA;AAEhD,kFAAkF;AAClF,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAA;AAEhD,MAAM,gBAAgB,GAAG,sCAAsC,CAAA;AAC/D,MAAM,cAAc,GAAG,EAAE,CAAA;AAEzB,MAAM,UAAU,cAAc;IAC1B,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAA;IACzE,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,cAAc,CAAC,MAAqB,EAAE,MAAc;IAChE,OAAO;QACH,GAAG,cAAc,CAAC,MAAM,CAAC;QACzB,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC;KAC5C,CAAA;AACL,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAC,MAAc;IACzC,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;AACvC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-setup.d.ts","sourceRoot":"","sources":["../src/global-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAMlE,OAAO,
|
|
1
|
+
{"version":3,"file":"global-setup.d.ts","sourceRoot":"","sources":["../src/global-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAMlE,OAAO,EAA+C,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAKpG,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAK7D;AAED,qDAAqD;AACrD,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAElC,UAAU,cAAc;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE,OAAO,CAAA;IACX,IAAI,EAAE;QAAE,EAAE,CAAC,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,EAAE,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CACnH;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE,OAAO,KAAK,EACrB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GACxC,OAAO,CAAC,cAAc,CAAC,CA6BzB;AAkBD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAClC,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GAC3C,OAAO,CAAC,MAAM,CAAC,CA0CjB;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D;AAiBD,wBAAsB,cAAc,CAChC,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GAC7E,OAAO,CAAC,IAAI,CAAC,CAsCf;AAED,iBAAe,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA6C1C;AAiBD,eAAe,WAAW,CAAA"}
|
package/dist/global-setup.js
CHANGED
|
@@ -4,7 +4,7 @@ import { prepareRun } from './state/run-namespace.js';
|
|
|
4
4
|
import { announceSetupCache } from './setup-cache/announce.js';
|
|
5
5
|
import { REPLAY_TEST_ID, TEST_ID_HEADER, generateTestId } from './contract.js';
|
|
6
6
|
import { SECRET_HEADER, resolveApiSecret } from './http/api-secret.js';
|
|
7
|
-
import { testApiUrl } from './http/test-api.js';
|
|
7
|
+
import { healthTimeoutMs, requestFailure, testApiUrl } from './http/test-api.js';
|
|
8
8
|
import { registerSetupAttempt } from './state/attempt-registry.js';
|
|
9
9
|
import { parseDiscoveredSites, writeSitesFile } from './sites/registry.js';
|
|
10
10
|
import { probeSite } from './sites/probe.js';
|
|
@@ -25,14 +25,14 @@ export async function readHealth(healthUrl, headers, doFetch, unreachable) {
|
|
|
25
25
|
try {
|
|
26
26
|
response = await doFetch(healthUrl, {
|
|
27
27
|
method: 'GET',
|
|
28
|
-
signal: AbortSignal.timeout(
|
|
28
|
+
signal: AbortSignal.timeout(healthTimeoutMs()),
|
|
29
29
|
headers,
|
|
30
30
|
// A custom header survives a cross-origin redirect, secret included.
|
|
31
31
|
redirect: 'manual',
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
34
|
catch (error) {
|
|
35
|
-
throw new Error(unreachable(
|
|
35
|
+
throw new Error(unreachable(requestFailure(error)));
|
|
36
36
|
}
|
|
37
37
|
const text = await response.text();
|
|
38
38
|
try {
|
package/dist/global-setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-setup.js","sourceRoot":"","sources":["../src/global-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAsB,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,EAAE,UAAU,EAAsB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"global-setup.js","sourceRoot":"","sources":["../src/global-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { BrowserContext } from '@playwright/test';
|
|
2
|
-
import type
|
|
1
|
+
import type { APIResponse, BrowserContext, Route } from '@playwright/test';
|
|
2
|
+
import { type ToolkitConfig } from '../config.js';
|
|
3
3
|
/**
|
|
4
4
|
* Adds the test ID for the site under test, and takes both toolkit headers off
|
|
5
5
|
* anything else. Routing rather than extraHTTPHeaders: a context-wide header also
|
|
@@ -10,4 +10,10 @@ import type { ToolkitConfig } from '../config.js';
|
|
|
10
10
|
* `continue` would end the chain and silently disable them.
|
|
11
11
|
*/
|
|
12
12
|
export declare function applyToolkitHeaders(context: BrowserContext, config: ToolkitConfig, testId: string, origins?: ReadonlySet<string>): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* route.fetch() with the test ID, for a test's own page.route() handler. That handler
|
|
15
|
+
* runs before the toolkit adds the ID, so a plain fetch would reach the site's normal
|
|
16
|
+
* database. Like every other request, only the site under test gets the ID.
|
|
17
|
+
*/
|
|
18
|
+
export declare function fetchForTest(route: Route, testId: string, options?: NonNullable<Parameters<Route['fetch']>[0]>): Promise<APIResponse>;
|
|
13
19
|
//# sourceMappingURL=off-site-headers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"off-site-headers.d.ts","sourceRoot":"","sources":["../../src/http/off-site-headers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"off-site-headers.d.ts","sourceRoot":"","sources":["../../src/http/off-site-headers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAG1E,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAOnE;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACrC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,WAAW,CAAC,MAAM,CAA0B,GACtD,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CACxB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAM,GACzD,OAAO,CAAC,WAAW,CAAC,CAUtB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SECRET_HEADER } from './api-secret.js';
|
|
2
2
|
import { TEST_ID_HEADER, browserHeaders } from '../contract.js';
|
|
3
|
+
import { getToolkitConfig } from '../config.js';
|
|
3
4
|
import { testingOrigins } from '../sites/registry.js';
|
|
4
5
|
import { toolkitRequest } from './toolkit-request.js';
|
|
5
6
|
const TOOLKIT_HEADERS = [TEST_ID_HEADER.toLowerCase(), SECRET_HEADER.toLowerCase()];
|
|
@@ -14,18 +15,39 @@ const TOOLKIT_HEADERS = [TEST_ID_HEADER.toLowerCase(), SECRET_HEADER.toLowerCase
|
|
|
14
15
|
*/
|
|
15
16
|
export async function applyToolkitHeaders(context, config, testId, origins = testingOrigins(config)) {
|
|
16
17
|
await context.route(() => true, async (route) => {
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
await route.fallback({ headers: { ...headers, ...browserHeaders(testId) } });
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
for (const name of TOOLKIT_HEADERS) {
|
|
23
|
-
delete headers[name];
|
|
24
|
-
}
|
|
25
|
-
await route.fallback({ headers });
|
|
18
|
+
const request = route.request();
|
|
19
|
+
await route.fallback({ headers: routedHeaders(request.url(), request.headers(), testId, origins) });
|
|
26
20
|
});
|
|
27
21
|
const request = toolkitRequest(context.request, config, testId, context.site);
|
|
28
22
|
Object.defineProperty(context, 'request', { value: request });
|
|
29
23
|
context.on('page', (page) => Object.defineProperty(page, 'request', { value: request }));
|
|
30
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* route.fetch() with the test ID, for a test's own page.route() handler. That handler
|
|
27
|
+
* runs before the toolkit adds the ID, so a plain fetch would reach the site's normal
|
|
28
|
+
* database. Like every other request, only the site under test gets the ID.
|
|
29
|
+
*/
|
|
30
|
+
export function fetchForTest(route, testId, options = {}) {
|
|
31
|
+
const request = route.request();
|
|
32
|
+
const headers = { ...request.headers(), ...options.headers };
|
|
33
|
+
// The options may send the request to another address; that address decides
|
|
34
|
+
const url = options.url ?? request.url();
|
|
35
|
+
return route.fetch({
|
|
36
|
+
...options,
|
|
37
|
+
headers: routedHeaders(url, headers, testId, testingOrigins(getToolkitConfig())),
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function routedHeaders(url, requested, testId, origins) {
|
|
41
|
+
const headers = { ...requested };
|
|
42
|
+
if (origins.has(new URL(url).origin)) {
|
|
43
|
+
return { ...headers, ...browserHeaders(testId) };
|
|
44
|
+
}
|
|
45
|
+
// Header names a test passes may be spelled in any case
|
|
46
|
+
for (const name of Object.keys(headers)) {
|
|
47
|
+
if (TOOLKIT_HEADERS.includes(name.toLowerCase())) {
|
|
48
|
+
delete headers[name];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return headers;
|
|
52
|
+
}
|
|
31
53
|
//# sourceMappingURL=off-site-headers.js.map
|