@plan2net/typo3-playwright-toolkit 0.7.0 → 0.9.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 CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="../playwright-toolkit/Resources/Public/Icons/Extension.svg" alt="" width="96" height="96">
2
+ <img src="https://raw.githubusercontent.com/plan2net/typo3-playwright-toolkit/main/packages/playwright-toolkit/Resources/Public/Icons/Extension.svg" alt="" width="96" height="96">
3
3
  </p>
4
4
  <h1 align="center">@plan2net/typo3-playwright-toolkit</h1>
5
5
  <p align="center"><em>Playwright fixtures and content builders for TYPO3, one test database per test file.</em></p>
@@ -149,27 +149,38 @@ can add more. Navigate with the returned value, never with the string you passed
149
149
  The setup runs once per file, even when the file runs in several browser projects.
150
150
  The other projects use the state and the test database that the first one created.
151
151
 
152
- ```mermaid
153
- flowchart TD
154
- F["one test file"]
155
- S["setup — runs once<br>builds content through the backend"]
156
- D["state + its own test database"]
157
- X["tests skip, with the reason"]
158
- P1["chromium-desktop"]
159
- P2["firefox"]
160
- P3["webkit"]
161
-
162
- F --> S
163
- S -->|built| D
164
- S -->|failed| X
165
- D --> P1 & P2 & P3
166
-
167
- classDef ok fill:#2ea04326,stroke:#2ea043b3
168
- classDef bad fill:#f8514926,stroke:#f85149b3
169
- class D ok
170
- class X bad
152
+ ### When something fails, TYPO3 says why
153
+
154
+ A failing test now prints what TYPO3 wrote to its log while that test ran, under the
155
+ failure itself:
156
+
157
+ ```
158
+ Error: expect(locator).toBeVisible() failed
159
+ Locator: locator('.teaser figure img')
160
+
161
+ Error: [typo3-playwright-toolkit] TYPO3 recorded 2 errors for scenario
162
+ "tests/teaser.spec.ts" (test 2C8F069F788D3F20):
163
+
164
+ 1. log error
165
+ No page configured for type=99999.
166
+
167
+ 2. DataHandler sys_file_reference
168
+ Attempt to insert a record on page '/gallery' (127) where this table is not allowed
171
169
  ```
172
170
 
171
+ The same list is attached to the test as `typo3-errors.json`. A message that repeats
172
+ is counted, not printed again. A failing setup shows the same list next to its own
173
+ error.
174
+
175
+ If TYPO3 refuses a record while a builder saves it, the builder stops at that line.
176
+ Before, the save looked fine and the test failed later, somewhere unrelated.
177
+
178
+ <picture>
179
+ <source media="(max-width: 700px)" srcset="https://raw.githubusercontent.com/plan2net/typo3-playwright-toolkit/main/diagrams/scenario-fan-out-narrow.svg">
180
+ <img width="880" src="https://raw.githubusercontent.com/plan2net/typo3-playwright-toolkit/main/diagrams/scenario-fan-out.svg"
181
+ alt="One test file runs its setup once. If the setup succeeds it produces state and a test database of its own, which every browser project then reuses. If the setup fails, the tests of that file are skipped with the reason rather than failing individually.">
182
+ </picture>
183
+
173
184
  Besides `builders`, the setup receives `testId` (the database this attempt runs
174
185
  against), `attempt` (`1` on the first try), `signal` (aborted when the attempt times
175
186
  out, so pass it to your own long requests), and a `page` and `request` that already
@@ -265,6 +276,19 @@ await builders.content().onPage(page.id).ofType('textmedia')
265
276
  Fill a column from one place only. Both the content type and the test, or `withField`
266
277
  on top, fails.
267
278
 
279
+ A setter that changes the reference, such as a crop, may run after the one that
280
+ attaches the file. Write the reference at the end then, and hand the rest to `super`:
281
+
282
+ ```ts
283
+ import type { RelationOwner, RelationOutput } from '@plan2net/typo3-playwright-toolkit'
284
+
285
+ override getRelations(owner: RelationOwner): RelationOutput {
286
+ this.withFileReference('image', this.fileUid, { crop: imageCrop({ ratio: this.ratio }) })
287
+
288
+ return super.getRelations(owner)
289
+ }
290
+ ```
291
+
268
292
  ### Calling the site directly
269
293
 
270
294
  The `request` client — the one `defineScenario` hands your setup, and the `request`
@@ -468,15 +492,39 @@ imageCrop({ ratio: '16:9' })
468
492
  imageCrop({ area: { x: 0.1, y: 0, width: 0.5, height: 1 } })
469
493
  ```
470
494
 
471
- A flexform column takes `flexForm()`, because the form posts one field per value
472
- rather than one for the column:
495
+ Where the column declares `cropVariants`, name each one with `imageCrops()`:
496
+
497
+ ```ts
498
+ imageCrops({ mobile: { ratio: '9:16' }, desktop: { ratio: '16:9' } })
499
+ ```
500
+
501
+ A plugin's settings go through `withSetting`, one call per setting:
473
502
 
474
503
  ```ts
475
- element.withField('pi_flexform', flexForm({ 'settings.limit': 10 }))
504
+ element.withSetting('limit', 10).withSetting('order', 'title')
476
505
  ```
477
506
 
478
- Plain values land on the single sheet a structure without named ones has. Where it
479
- has several, name one per group: `flexForm({ sDEF: {…}, sFilter: {…} })`.
507
+ Each one becomes a `settings.` entry and they are written to `pi_flexform` together,
508
+ so two calls never overwrite each other. That is what a builder for your own plugin
509
+ uses:
510
+
511
+ ```ts
512
+ export class EventListContent extends CoreContent {
513
+ readonly type = 'myext_eventlist'
514
+
515
+ upcomingOnly(): this {
516
+ return this.withSetting('onlyUpcoming', '1')
517
+ }
518
+ }
519
+ ```
520
+
521
+ For a structure with named sheets, or a key outside `settings.`, write the column
522
+ yourself with `flexForm()` — the form posts one field per value, not one for the
523
+ column:
524
+
525
+ ```ts
526
+ element.withField('pi_flexform', flexForm({ sDEF: {…}, sFilter: {…} }))
527
+ ```
480
528
 
481
529
  ### The inspect command
482
530
 
@@ -39,6 +39,7 @@ export declare abstract class CoreContent implements ContentBuilderInterface {
39
39
  abstract readonly type: string;
40
40
  protected fields: ContentFields;
41
41
  protected readonly relations: RelationSet;
42
+ private readonly settings;
42
43
  withHeader(header: string, level?: HeadingLevel): this;
43
44
  withSubheader(subheader: string): this;
44
45
  /** 0 is "hidden", 1–5 are h1–h5 in a stock fluid_styled_content install. */
@@ -47,6 +48,8 @@ export declare abstract class CoreContent implements ContentBuilderInterface {
47
48
  withColPos(colPos: number): this;
48
49
  setHidden(hidden?: boolean): this;
49
50
  /** Any column the typed setters do not cover, including your own. */
51
+ /** Collected, so a second call does not drop the first. */
52
+ withSetting(name: string, value: string | number | boolean): this;
50
53
  withField(column: string, value: ContentFields[string]): this;
51
54
  withFileReference(column: string, fileUid: number, fields?: ContentFields): this;
52
55
  withFileReferences(column: string, fileUids: number[], fields?: ContentFields): this;
@@ -1 +1 @@
1
- {"version":3,"file":"core-content.d.ts","sourceRoot":"","sources":["../../src/builders/core-content.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core-content.d.ts","sourceRoot":"","sources":["../../src/builders/core-content.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { flexForm } from './fields.js';
1
2
  import { RelationSet, } from './relations.js';
2
3
  const HEADING_LEVELS = { h1: 1, h2: 2, h3: 3, h4: 4, h5: 5, hidden: 100 };
3
4
  const BULLET_TYPES = { bullets: 0, numbers: 1, definition: 2 };
@@ -17,6 +18,7 @@ const IMAGE_ORIENTATIONS = {
17
18
  export class CoreContent {
18
19
  fields = {};
19
20
  relations = new RelationSet('tt_content', (column) => column in this.fields);
21
+ settings = {};
20
22
  withHeader(header, level) {
21
23
  this.set('header', header);
22
24
  return undefined === level ? this : this.withHeaderLayout(HEADING_LEVELS[level]);
@@ -38,6 +40,11 @@ export class CoreContent {
38
40
  return this.set('hidden', hidden);
39
41
  }
40
42
  /** Any column the typed setters do not cover, including your own. */
43
+ /** Collected, so a second call does not drop the first. */
44
+ withSetting(name, value) {
45
+ this.settings[`settings.${name}`] = value;
46
+ return this;
47
+ }
41
48
  withField(column, value) {
42
49
  return this.set(column, value);
43
50
  }
@@ -61,7 +68,12 @@ export class CoreContent {
61
68
  return this.relations.materialise(owner);
62
69
  }
63
70
  getFields() {
64
- return { CType: this.type, ...this.fields };
71
+ // Before the fields, so withField('pi_flexform', …) still wins.
72
+ return {
73
+ ...(0 === Object.keys(this.settings).length ? {} : { pi_flexform: flexForm(this.settings) }),
74
+ CType: this.type,
75
+ ...this.fields,
76
+ };
65
77
  }
66
78
  set(column, value) {
67
79
  this.relations.refuseColumnHeld(column);
@@ -1 +1 @@
1
- {"version":3,"file":"core-content.js","sourceRoot":"","sources":["../../src/builders/core-content.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core-content.js","sourceRoot":"","sources":["../../src/builders/core-content.ts"],"names":[],"mappings":"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"}
@@ -5,15 +5,18 @@ export interface CropRectangle {
5
5
  width: number;
6
6
  height: number;
7
7
  }
8
+ export interface CropOptions {
9
+ ratio?: string;
10
+ area?: CropRectangle;
11
+ focus?: CropRectangle | null;
12
+ }
8
13
  /**
9
14
  * The `crop` column of a file reference, which holds JSON text. Without an area it
10
15
  * keeps the whole image, which is what a ratio on its own means.
11
16
  */
12
- export declare function imageCrop(options?: {
13
- ratio?: string;
14
- area?: CropRectangle;
15
- focus?: CropRectangle | null;
16
- }): string;
17
+ export declare function imageCrop(options?: CropOptions): string;
18
+ /** One entry per name in the column's `cropVariants`, for a project that configured them. */
19
+ export declare function imageCrops(variants: Record<string, CropOptions>): string;
17
20
  export type FlexFormValues = Record<string, string | number | boolean>;
18
21
  /**
19
22
  * A flexform column, for `withField('pi_flexform', flexForm({...}))`. Plain values
@@ -1 +1 @@
1
- {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/builders/fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,MAAM,WAAW,aAAa;IAC1B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACjB;AAID;;;GAGG;AACH,wBAAgB,SAAS,CACrB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;CAAO,GACrF,MAAM,CAQR;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;AAEtE;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAAA;AAC9D,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,YAAY,CAAA;AAoB9E;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAevF"}
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/builders/fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,MAAM,WAAW,aAAa;IAC1B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACjB;AAID,MAAM,WAAW,WAAW;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,aAAa,CAAA;IACpB,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;CAC/B;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,WAAgB,GAAG,MAAM,CAE3D;AAED,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,MAAM,CAYxE;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;AAEtE;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAAA;AAC9D,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,YAAY,CAAA;AAoB9E;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAevF"}
@@ -4,13 +4,19 @@ const WHOLE_IMAGE = { x: 0, y: 0, width: 1, height: 1 };
4
4
  * keeps the whole image, which is what a ratio on its own means.
5
5
  */
6
6
  export function imageCrop(options = {}) {
7
- return JSON.stringify({
8
- default: {
7
+ return imageCrops({ default: options });
8
+ }
9
+ /** One entry per name in the column's `cropVariants`, for a project that configured them. */
10
+ export function imageCrops(variants) {
11
+ const crops = {};
12
+ for (const [name, options] of Object.entries(variants)) {
13
+ crops[name] = {
9
14
  cropArea: options.area ?? WHOLE_IMAGE,
10
15
  selectedRatio: options.ratio ?? 'NaN',
11
16
  focusArea: options.focus ?? null,
12
- },
13
- });
17
+ };
18
+ }
19
+ return JSON.stringify(crops);
14
20
  }
15
21
  export function flexForm(input) {
16
22
  const sheets = Object.values(input).every((value) => 'object' === typeof value)
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/builders/fields.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,GAAkB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;AAEtE;;;GAGG;AACH,MAAM,UAAU,SAAS,CACrB,UAAkF,EAAE;IAEpF,OAAO,IAAI,CAAC,SAAS,CAAC;QAClB,OAAO,EAAE;YACL,QAAQ,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW;YACrC,aAAa,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;YACrC,SAAS,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;SACnC;KACJ,CAAC,CAAA;AACN,CAAC;AAUD,MAAM,UAAU,QAAQ,CACpB,KAAsD;IAEtD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,KAAK,OAAO,KAAK,CAAC;QAC3E,CAAC,CAAE,KAAwC;QAC3C,CAAC,CAAC,EAAE,IAAI,EAAE,KAAuB,EAAE,CAAA;IAEvC,MAAM,IAAI,GAAiB,EAAE,CAAA;IAC7B,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,MAAM,MAAM,GAAiB,EAAE,CAAA;QAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;QAClC,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IAClC,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,CAAA;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAA+B;IAC1D,MAAM,MAAM,GAA4B,EAAE,CAAA;IAE1C,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,SAAQ;QACZ,CAAC;QACD,IAAI,SAAS,KAAK,OAAO,KAAK,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC9B,SAAQ;QACZ,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAA;IAC1B,CAAC;IAED,OAAO,MAAM,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/builders/fields.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,GAAkB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;AAQtE;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,UAAuB,EAAE;IAC/C,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;AAC3C,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,UAAU,CAAC,QAAqC;IAC5D,MAAM,KAAK,GAA4B,EAAE,CAAA;IAEzC,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,GAAG;YACV,QAAQ,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW;YACrC,aAAa,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;YACrC,SAAS,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;SACnC,CAAA;IACL,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AAChC,CAAC;AAUD,MAAM,UAAU,QAAQ,CACpB,KAAsD;IAEtD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,KAAK,OAAO,KAAK,CAAC;QAC3E,CAAC,CAAE,KAAwC;QAC3C,CAAC,CAAC,EAAE,IAAI,EAAE,KAAuB,EAAE,CAAA;IAEvC,MAAM,IAAI,GAAiB,EAAE,CAAA;IAC7B,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,MAAM,MAAM,GAAiB,EAAE,CAAA;QAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;QAClC,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IAClC,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,CAAA;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAA+B;IAC1D,MAAM,MAAM,GAA4B,EAAE,CAAA;IAE1C,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,SAAQ;QACZ,CAAC;QACD,IAAI,SAAS,KAAK,OAAO,KAAK,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC9B,SAAQ;QACZ,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAA;IAC1B,CAAC;IAED,OAAO,MAAM,CAAA;AACjB,CAAC"}
@@ -3,6 +3,7 @@ export declare const TEST_ID_HEADER = "X-Playwright-Test-Id";
3
3
  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
+ export declare const RECORD_DIAGNOSTICS_HEADER = "X-Playwright-Record-Diagnostics";
6
7
  /** Replay's own test ID; the extension maps it to the throwaway base database. */
7
8
  export declare const REPLAY_TEST_ID = "REPLAY0000000000";
8
9
  export declare function generateTestId(): string;
@@ -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;AAE9D,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;AAE1E,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
@@ -4,6 +4,7 @@ export const TEST_ID_HEADER = 'X-Playwright-Test-Id';
4
4
  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
+ export const RECORD_DIAGNOSTICS_HEADER = 'X-Playwright-Record-Diagnostics';
7
8
  /** Replay's own test ID; the extension maps it to the throwaway base database. */
8
9
  export const REPLAY_TEST_ID = 'REPLAY0000000000';
9
10
  const TEST_ID_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
@@ -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;AAE9D,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;AAE1E,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":"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,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;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;CACtB;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,CAyCtB"}
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,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;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;CACtB;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,CA2CtB"}
@@ -1,5 +1,5 @@
1
1
  import { getToolkitConfig } from '../config.js';
2
- import { SAVED_RECORD_HEADER, toolkitHeaders } from '../contract.js';
2
+ import { RECORD_DIAGNOSTICS_HEADER, SAVED_RECORD_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
5
  /** saveRecord with the poster and context already bound. */
@@ -34,6 +34,7 @@ export async function saveRecord(poster, context, record) {
34
34
  `The backend answers a rejected save with a page, not a redirect: ` +
35
35
  `${(await response.text()).slice(0, 300)}`);
36
36
  }
37
+ refuseWhatTypo3Rejected(headers, record.table);
37
38
  const uid = uidFrom(location, record.table);
38
39
  if (undefined === uid) {
39
40
  throw new Error(`[typo3-playwright-toolkit] The save of ${record.table} redirected to no uid — ` +
@@ -41,6 +42,22 @@ export async function saveRecord(poster, context, record) {
41
42
  }
42
43
  return { uid, ...savedRecord(headers) };
43
44
  }
45
+ /**
46
+ * A refused child leaves the parent saved, so the request looks like a success
47
+ * and the failure would only show up much later, somewhere else.
48
+ */
49
+ function refuseWhatTypo3Rejected(headers, table) {
50
+ const raw = header(headers, RECORD_DIAGNOSTICS_HEADER);
51
+ if (undefined === raw) {
52
+ return;
53
+ }
54
+ const { errors, count } = JSON.parse(raw);
55
+ const first = errors[0];
56
+ const more = count > 1 ? `\n(and ${count - 1} more, see /typo3/test-api/errors)` : '';
57
+ throw new Error(`[typo3-playwright-toolkit] TYPO3 refused a record while saving ${table}.\n` +
58
+ ` table: ${first.table}\n` +
59
+ ` message: ${first.message}${more}`);
60
+ }
44
61
  /** `data[table][identifier][field]`, the names FormEngine gives its inputs. */
45
62
  function formFields(data) {
46
63
  const fields = {};
@@ -1 +1 @@
1
- {"version":3,"file":"record-edit.js","sourceRoot":"","sources":["../../src/http/record-edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpE,2EAA2E;AAC3E,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAA;AA+B/C,4DAA4D;AAC5D,MAAM,UAAU,WAAW,CACvB,MAAkB,EAClB,OAAoB;IAEpB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAC1D,CAAC;AAWD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC5B,MAAkB,EAClB,OAAoB,EACpB,MAAoB;IAEpB,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACX,wFAAwF;YACpF,kFAAkF;YAClF,oDAAoD,CAC3D,CAAA;IACL,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAA;IACnE,MAAM,GAAG,GACL,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,iBAAiB,EAAE;QAC9D,WAAW,MAAM,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,OAAO,MAAM,EAAE;QAC5D,UAAU,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAA;IAEtD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACpC,OAAO,EAAE,cAAc,CAAC,gBAAgB,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC;QAC3D,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;QAClC,kEAAkE;QAClE,YAAY,EAAE,CAAC;KAClB,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAA;IAClC,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAA;IAC3D,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACX,8BAA8B,MAAM,CAAC,KAAK,yBAAyB,QAAQ,CAAC,MAAM,EAAE,KAAK;YACrF,mEAAmE;YACnE,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACjD,CAAA;IACL,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAC3C,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACX,0CAA0C,MAAM,CAAC,KAAK,0BAA0B;YAC5E,8EAA8E,QAAQ,EAAE,CAC/F,CAAA;IACL,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,CAAA;AAC3C,CAAC;AAED,+EAA+E;AAC/E,SAAS,UAAU,CAAC,IAAmB;IACnC,MAAM,MAAM,GAA2B,EAAE,CAAA;IAEzC,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,KAAK,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChD,QAAQ,CAAC,MAAM,EAAE,QAAQ,KAAK,KAAK,UAAU,KAAK,MAAM,GAAG,EAAE,KAAK,CAAC,CAAA;YACvE,CAAC;QACL,CAAC;IACL,CAAC;IAED,MAAM,CAAC,MAAM,GAAG,GAAG,CAAA;IACnB,2EAA2E;IAC3E,uCAAuC;IACvC,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAA;IAErB,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,SAAS,QAAQ,CAAC,MAA8B,EAAE,IAAY,EAAE,KAAc;IAC1E,IAAI,SAAS,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACxC,OAAM;IACV,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,MAAM,CAAC,CAAA;QAC/C,CAAC;QAED,OAAM;IACV,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;AACnC,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC7B,IAAI,QAAQ,KAAK,OAAO,KAAK,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAA;IAChB,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,KAAK,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACxB,CAAC;IACD,IAAI,SAAS,KAAK,OAAO,KAAK,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;IAC5B,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;AACtC,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,OAA+B;IACnE,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;QAChC,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;AACtC,CAAC;AAED,SAAS,MAAM,CAAC,OAA+B,EAAE,IAAY;IACzD,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;AACvD,CAAC;AAED,mFAAmF;AACnF,SAAS,WAAW,CAAC,OAA+B;IAChD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAA;IAClD,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO,EAAE,CAAA;IACb,CAAC;IAED,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAuB,CAAA;QAEtD,OAAO,QAAQ,KAAK,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACvE,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAA;IACb,CAAC;AACL,CAAC;AAED,4EAA4E;AAC5E,SAAS,OAAO,CAAC,QAAgB,EAAE,KAAa;IAC5C,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,KAAK,iBAAiB,CAAC,CAAC,CAAA;IAC9F,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACjB,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAE5B,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;AAC7D,CAAC"}
1
+ {"version":3,"file":"record-edit.js","sourceRoot":"","sources":["../../src/http/record-edit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { ToolkitConfig } from '../config.js';
2
+ export interface RecordedError {
3
+ uid: number;
4
+ source: string;
5
+ at: string;
6
+ message: string;
7
+ count: number;
8
+ level?: string;
9
+ component?: string;
10
+ table?: string;
11
+ recordUid?: number;
12
+ class?: string;
13
+ code?: number;
14
+ file?: string;
15
+ line?: number;
16
+ }
17
+ export interface RecordedErrorReport {
18
+ testId: string;
19
+ truncated: boolean;
20
+ errors: RecordedError[];
21
+ }
22
+ export declare function formatRecordedErrors(scenarioKey: string, report: RecordedErrorReport): string;
23
+ export declare function fetchRecordedErrors(config: ToolkitConfig, testId: string, options?: {
24
+ fetchImpl?: typeof fetch;
25
+ timeoutMs?: number;
26
+ secret?: string;
27
+ }): Promise<RecordedErrorReport | undefined>;
28
+ //# sourceMappingURL=recorded-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recorded-errors.d.ts","sourceRoot":"","sources":["../../src/http/recorded-errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,MAAM,WAAW,aAAa;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,aAAa,EAAE,CAAA;CAC1B;AAQD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAc7F;AAED,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChF,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CA8B1C"}
@@ -0,0 +1,43 @@
1
+ import { SECRET_HEADER, resolveApiSecret } from './api-secret.js';
2
+ /** The wire keeps TYPO3's own spelling; only the report shows the proper names. */
3
+ const SOURCE_NAMES = {
4
+ php: 'PHP',
5
+ datahandler: 'DataHandler',
6
+ };
7
+ export function formatRecordedErrors(scenarioKey, report) {
8
+ const entries = report.errors.map((error, index) => {
9
+ const source = SOURCE_NAMES[error.source] ?? error.source;
10
+ const origin = [source, error.level, error.table].filter(Boolean).join(' ');
11
+ const repeats = error.count > 1 ? ` (${error.count}x)` : '';
12
+ return ` ${index + 1}. ${origin}${repeats}\n ${error.message}`;
13
+ });
14
+ return (`[typo3-playwright-toolkit] TYPO3 recorded ${report.errors.length} ` +
15
+ `${1 === report.errors.length ? 'error' : 'errors'} for scenario "${scenarioKey}" ` +
16
+ `(test ${report.testId}):\n\n${entries.join('\n\n')}`);
17
+ }
18
+ export async function fetchRecordedErrors(config, testId, options = {}) {
19
+ const doFetch = options.fetchImpl ?? fetch;
20
+ // The test has already failed; a problem here must not add a second one.
21
+ try {
22
+ // No test-ID header: it would provision the database on the way in, so
23
+ // asking about a test that never ran would create it.
24
+ const response = await doFetch(`${config.testingURL}/typo3/test-api/errors?id=${encodeURIComponent(testId)}`, {
25
+ method: 'GET',
26
+ headers: { [SECRET_HEADER]: options.secret ?? resolveApiSecret(config) },
27
+ signal: AbortSignal.timeout(options.timeoutMs ?? 5000),
28
+ });
29
+ if (!response.ok) {
30
+ return undefined;
31
+ }
32
+ const body = (await response.json());
33
+ return {
34
+ testId: body.testId ?? testId,
35
+ truncated: body.truncated ?? false,
36
+ errors: Array.isArray(body.errors) ? body.errors : [],
37
+ };
38
+ }
39
+ catch {
40
+ return undefined;
41
+ }
42
+ }
43
+ //# sourceMappingURL=recorded-errors.js.map
@@ -0,0 +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;AAwBjE,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,GAAG,MAAM,CAAC,UAAU,6BAA6B,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAC7E;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;SACzD,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"}
package/dist/index.d.ts CHANGED
@@ -4,10 +4,11 @@ export { defineToolkitConfig, getToolkitConfig, type ToolkitConfig, type Toolkit
4
4
  export { defineBasePlaywrightConfig, type BasePlaywrightOverrides } from './playwright/base-config.js';
5
5
  export { ContentBuilder } from './builders/content-builder.js';
6
6
  export { PageBuilder } from './builders/page-builder.js';
7
+ export type { ChildRecord, RelationOwner, RelationOutput } from './builders/relations.js';
7
8
  export { CoreContent, HeaderContent, TextContent, TextmediaContent, TextpicContent, ImageContent, BulletsContent, TableContent, UploadsContent, HtmlContent, DividerContent, ShortcutContent, MenuContent, type ContentTypeMap, type CoreContentTypeMap, } from './builders/core-content.js';
8
9
  export type { RecordDataMap, RecordToSave } from './http/record-edit.js';
9
10
  export { newRecordIdentifier } from './builders/identifier.js';
10
- export { flexForm, imageCrop } from './builders/fields.js';
11
+ export { flexForm, imageCrop, imageCrops } from './builders/fields.js';
11
12
  export { expectScreenshot, waitForAnimations } from './checks/screenshot.js';
12
13
  export { runAccessibilityScan, scanAccessibility, DEFAULT_SCAN_TAGS, type AccessibilityScanOptions, } from './checks/accessibility.js';
13
14
  export { CspVerifier, type CspMode, type CspViolation } from './checks/csp.js';
@@ -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,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,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,MAAM,sBAAsB,CAAA;AAE1D,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,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACjE,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,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,MAAM,+BAA+B,CAAA;AAC9D,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,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACjE,YAAY,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AACxF,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA"}
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ export { ContentBuilder } from './builders/content-builder.js';
6
6
  export { PageBuilder } from './builders/page-builder.js';
7
7
  export { CoreContent, HeaderContent, TextContent, TextmediaContent, TextpicContent, ImageContent, BulletsContent, TableContent, UploadsContent, HtmlContent, DividerContent, ShortcutContent, MenuContent, } from './builders/core-content.js';
8
8
  export { newRecordIdentifier } from './builders/identifier.js';
9
- export { flexForm, imageCrop } from './builders/fields.js';
9
+ export { flexForm, imageCrop, imageCrops } from './builders/fields.js';
10
10
  export { expectScreenshot, waitForAnimations } from './checks/screenshot.js';
11
11
  export { runAccessibilityScan, scanAccessibility, DEFAULT_SCAN_TAGS, } from './checks/accessibility.js';
12
12
  export { CspVerifier } from './checks/csp.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,GAIjB,MAAM,eAAe,CAAA;AACtB,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,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,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,MAAM,sBAAsB,CAAA;AAE1D,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,GAIjB,MAAM,eAAe,CAAA;AACtB,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,EAAE,MAAM,+BAA+B,CAAA;AAC9D,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"}
@@ -0,0 +1,18 @@
1
+ import type { TestInfo } from '@playwright/test';
2
+ import type { ToolkitConfig } from '../config.js';
3
+ import { type RecordedErrorReport } from '../http/recorded-errors.js';
4
+ import { type ScenarioFailureRecord } from '../state/scenario-state.js';
5
+ export type RecordedErrorFetcher = (config: ToolkitConfig, testId: string) => Promise<RecordedErrorReport | undefined>;
6
+ /** Thrown, not only attached, so it prints beside the failure already there. */
7
+ export declare function reportRecordedErrors(config: ToolkitConfig, scenarioKey: string, testId: string, testInfo: TestInfo, fetcher?: RecordedErrorFetcher): Promise<void>;
8
+ /** A retry that died before provisioning has no database to ask about. */
9
+ export declare function failedAttemptTestId(record: ScenarioFailureRecord | undefined): string;
10
+ /**
11
+ * The setup already failed with an error worth keeping, so its message and its
12
+ * frames are carried over rather than replaced.
13
+ */
14
+ export declare function reportSetupFailure(config: ToolkitConfig, scenarioKey: string, testInfo: TestInfo, original: unknown, options?: {
15
+ testId?: string;
16
+ fetcher?: RecordedErrorFetcher;
17
+ }): Promise<never>;
18
+ //# sourceMappingURL=recorded-error-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recorded-error-report.d.ts","sourceRoot":"","sources":["../../src/report/recorded-error-report.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAGH,KAAK,mBAAmB,EAC3B,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAuB,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAE5F,MAAM,MAAM,oBAAoB,GAAG,CAC/B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,KACb,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAA;AAE7C,gFAAgF;AAChF,wBAAsB,oBAAoB,CACtC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,oBAA0C,GACpD,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,qBAAqB,GAAG,SAAS,GAAG,MAAM,CAIrF;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACpC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,OAAO,EACjB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,oBAAoB,CAAA;CAAO,GAClE,OAAO,CAAC,KAAK,CAAC,CAmBhB"}
@@ -0,0 +1,47 @@
1
+ import * as path from 'path';
2
+ import { fetchRecordedErrors, formatRecordedErrors, } from '../http/recorded-errors.js';
3
+ import { readScenarioFailure } from '../state/scenario-state.js';
4
+ /** Thrown, not only attached, so it prints beside the failure already there. */
5
+ export async function reportRecordedErrors(config, scenarioKey, testId, testInfo, fetcher = fetchRecordedErrors) {
6
+ const summary = await collectSummary(config, scenarioKey, testId, testInfo, fetcher);
7
+ if (summary) {
8
+ throw new Error(summary);
9
+ }
10
+ }
11
+ /** A retry that died before provisioning has no database to ask about. */
12
+ export function failedAttemptTestId(record) {
13
+ const withDatabase = (record?.attempts ?? []).filter((attempt) => attempt.testId);
14
+ return withDatabase.at(-1)?.testId ?? '';
15
+ }
16
+ /**
17
+ * The setup already failed with an error worth keeping, so its message and its
18
+ * frames are carried over rather than replaced.
19
+ */
20
+ export async function reportSetupFailure(config, scenarioKey, testInfo, original, options = {}) {
21
+ const testId = options.testId ?? failedAttemptTestId(readScenarioFailure(config, scenarioKey));
22
+ const summary = await collectSummary(config, scenarioKey, testId, testInfo, options.fetcher ?? fetchRecordedErrors);
23
+ if (!summary || !(original instanceof Error)) {
24
+ throw original;
25
+ }
26
+ const enriched = new Error(`${original.message}\n\n${summary}`);
27
+ const frames = (original.stack ?? '').split('\n').slice(1).join('\n');
28
+ enriched.stack = `${enriched.message}\n${frames}`;
29
+ throw enriched;
30
+ }
31
+ async function collectSummary(config, scenarioKey, testId, testInfo, fetcher) {
32
+ if (!testId || config.replay) {
33
+ return undefined;
34
+ }
35
+ const report = await fetcher(config, testId);
36
+ if (!report || 0 === report.errors.length) {
37
+ return undefined;
38
+ }
39
+ await testInfo.attach('typo3-errors.json', {
40
+ body: Buffer.from(JSON.stringify(report, null, 2)),
41
+ contentType: 'application/json',
42
+ });
43
+ // The scenario key is a sanitised absolute path; the spec file reads better.
44
+ const label = testInfo.file ? path.relative(config.paths.consumerRoot, testInfo.file) : scenarioKey;
45
+ return formatRecordedErrors(label, report);
46
+ }
47
+ //# sourceMappingURL=recorded-error-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recorded-error-report.js","sourceRoot":"","sources":["../../src/report/recorded-error-report.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
- import { type APIRequestContext, type Browser, type Page } from '@playwright/test';
1
+ import { type APIRequestContext, type Browser, 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 } from './builders/content-builder.js';
6
6
  import { PageBuilder } from './builders/page-builder.js';
7
+ type SetupFailureReporter = (config: ToolkitConfig, scenarioKey: string, testInfo: TestInfo, error: unknown) => Promise<never>;
8
+ /** A failed setup throws out of ensureState, so it never reaches the fixture's end. */
9
+ export declare function resolveSetupOutcome<T>(config: ToolkitConfig, scenarioKey: string, testInfo: TestInfo, run: () => Promise<T>, report?: SetupFailureReporter): Promise<T>;
7
10
  export interface ScenarioBuilders {
8
11
  page(): PageBuilder;
9
12
  content(): ContentBuilder;
@@ -1 +1 @@
1
- {"version":3,"file":"scenario.d.ts","sourceRoot":"","sources":["../src/scenario.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,iBAAiB,EAAE,KAAK,OAAO,EAAE,KAAK,IAAI,EAAiB,MAAM,kBAAkB,CAAA;AAE/G,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAIlE,OAAO,EAGH,KAAK,YAAY,EACjB,KAAK,cAAc,EACtB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAe,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAOxD,MAAM,WAAW,gBAAgB;IAC7B,IAAI,IAAI,WAAW,CAAA;IACnB,OAAO,IAAI,cAAc,CAAA;CAC5B;AAED,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,WAAW,CAAA;IACnB,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,iBAAiB,CAAA;IAC1B,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,qCAAqC;IACrC,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;CACzD;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAA;IACR,MAAM,EAAE,MAAM,CAAA;CACjB;AAED,UAAU,gBAAgB,CAAC,CAAC;IACxB,IAAI,EAAE,CAAC,CAAA;IACP,MAAM,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;AAKD,+EAA+E;AAC/E,wBAAsB,oBAAoB,CACtC,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,EACvC,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CAWvB;AAED,wBAAsB,oBAAoB,CACtC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EACpD,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAelC;AAED,wBAAsB,qBAAqB,CACvC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,EACd,IAAI,SAAK,GACV,OAAO,CAAC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAgD9F;AAID,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAenE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC;sBAIjD,gBAAgB,CAAC,CAAC,CAAC;gCAA8B,IAAI;yGA8FtG"}
1
+ {"version":3,"file":"scenario.d.ts","sourceRoot":"","sources":["../src/scenario.ts"],"names":[],"mappings":"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"}
package/dist/scenario.js CHANGED
@@ -12,6 +12,16 @@ import { applyToolkitHeaders } from './http/off-site-headers.js';
12
12
  import { prepareScenarioContext } from './http/prepare-context.js';
13
13
  import { toolkitRequest } from './http/toolkit-request.js';
14
14
  import { runAccessibilityScan, shouldScanAutomatically } from './checks/accessibility.js';
15
+ import { reportRecordedErrors, reportSetupFailure } from './report/recorded-error-report.js';
16
+ /** A failed setup throws out of ensureState, so it never reaches the fixture's end. */
17
+ export async function resolveSetupOutcome(config, scenarioKey, testInfo, run, report = reportSetupFailure) {
18
+ try {
19
+ return await run();
20
+ }
21
+ catch (error) {
22
+ return await report(config, scenarioKey, testInfo, error);
23
+ }
24
+ }
15
25
  /**
16
26
  * What the backend shows beside the site name, so whoever opens an inspect link
17
27
  * can tell which scenario they are looking at. The scenario key cannot do that
@@ -115,7 +125,7 @@ export function defineScenario(setup) {
115
125
  const config = getToolkitConfig();
116
126
  const key = sanitizeScenarioKey(testInfo.file);
117
127
  const name = scenarioName(testInfo.file);
118
- const outcome = await ensureState(config, {
128
+ const outcome = await resolveSetupOutcome(config, key, testInfo, () => ensureState(config, {
119
129
  key,
120
130
  name,
121
131
  triggerId: testInfo.testId,
@@ -144,11 +154,12 @@ export function defineScenario(setup) {
144
154
  await session.close();
145
155
  }
146
156
  },
147
- });
157
+ }));
148
158
  const data = applyScenarioOutcome(outcome, (reason) => testInfo.skip(true, reason), config.replay);
149
159
  await use({ data, testId: outcome.status === 'ready' ? outcome.testId : '' });
150
160
  if (testInfo.status !== testInfo.expectedStatus) {
151
161
  recordTestFailure(config, key, testInfo.error?.message ?? `test ${testInfo.status}`);
162
+ await reportRecordedErrors(config, key, outcome.status === 'ready' ? outcome.testId : '', testInfo);
152
163
  }
153
164
  },
154
165
  state: async ({ resolvedScenario }, use) => {
@@ -1 +1 @@
1
- {"version":3,"file":"scenario.js","sourceRoot":"","sources":["../src/scenario.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,IAAI,EAAkE,MAAM,kBAAkB,CAAA;AAC/G,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAsB,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EACH,oBAAoB,EACpB,qBAAqB,GAGxB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,WAAW,EAAuC,MAAM,uBAAuB,CAAA;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AA4BzF;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAA;IAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAA;IAEtE,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;AAChD,CAAC;AAED,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAC7B,MAAM,eAAe,GAAG,CAAC,CAAA;AAEzB,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,IAAU,EACV,cAAuC,EACvC,IAAY;IAEZ,MAAM,MAAM,GAAG,MAAM,IAAI,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC;SACrD,SAAS,CAAC,IAAI,CAAC;SACf,SAAS,CAAC,SAAS,EAAE,iBAAiB,CAAC;QACxC,mEAAmE;QACnE,8CAA8C;SAC7C,SAAS,CAAC,MAAM,EAAE,WAAW,IAAI,EAAE,CAAC;SACpC,UAAU,CAAC,eAAe,CAAC;SAC3B,MAAM,EAAE,CAAA;IAEb,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,CAAA;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,IAAU,EACV,MAAqB,EACrB,OAAoD,EACpD,MAAc,EACd,IAAY;IAEZ,MAAM,OAAO,GAA4B;QACrC,MAAM;QACN,OAAO,EAAE,MAAM,CAAC,UAAU;QAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,SAAS,EAAE,IAAI,GAAG,EAAE;KACvB,CAAA;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,OAAO,CAAA;IAClB,CAAC;IAED,uEAAuE;IACvE,OAAO,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAA;AACxF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACvC,OAAgB,EAChB,MAAqB,EACrB,MAAc,EACd,IAAI,GAAG,EAAE;IAET,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAA;IAErE,qFAAqF;IACrF,IAAI,CAAC;QACD,MAAM,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CACjD;QAAC,OAA6B,CAAC,MAAM,GAAG,MAAM,CAAA;QAE/C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CACnC;QAAC,IAAuB,CAAC,MAAM,GAAG,MAAM,CAAA;QAEzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,yBAAyB,EAAE;YACpF,OAAO;YACP,IAAI,EAAE,EAAE,IAAI,EAAE;SACjB,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QACvG,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAKrC,CAAA;QACD,MAAM,OAAO,CAAC,UAAU,CAAC;YACrB;gBACI,IAAI,EAAE,OAAO,CAAC,UAAU;gBACxB,KAAK,EAAE,OAAO,CAAC,WAAW;gBAC1B,MAAM,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ;gBAC3C,IAAI,EAAE,GAAG;gBACT,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,QAAQ;aACrB;SACJ,CAAC,CAAA;QAEF,OAAO;YACH,IAAI;YACJ,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,IAAI,EAAE;YAC7C,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,oBAAoB;YACxD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE;SAC/B,CAAA;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,OAAO,CAAC,KAAK,EAAE,CAAA;QAErB,MAAM,KAAK,CAAA;IACf,CAAC;AACL,CAAC;AAED,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;AAEhD,2EAA2E;AAC3E,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,KAAa;IACzD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACxC,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QACxB,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAE/B,OAAM;IACV,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACX,8BAA8B,IAAI,wCAAwC;YACtE,4EAA4E;YAC5E,4EAA4E,CACnF,CAAA;IACL,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAA4B,KAAyC;IAC/F,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;IAEhC,OAAO,IAAI,CAAC,MAAM,CAEhB;QACE,gBAAgB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,QAAkB,EAAE,EAAE;YAC7D,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAEvC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAA;YACjC,MAAM,GAAG,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAExC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAI,MAAM,EAAE;gBACzC,GAAG;gBACH,IAAI;gBACJ,SAAS,EAAE,QAAQ,CAAC,MAAM;gBAC1B,KAAK,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;oBACzC,IAAI,CAAC,KAAK,EAAE,CAAC;wBACT,OAAO,EAAO,CAAA;oBAClB,CAAC;oBAED,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;oBACxD,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;oBAC3E,IAAI,CAAC;wBACD,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAC7C,OAAO,CAAC,IAAI,EACZ,MAAM,EACN,OAAO,EACP,MAAM,EACN,IAAI,CACP,CAAA;wBAED,OAAO,MAAM,KAAK,CAAC;4BACf,MAAM;4BACN,OAAO;4BACP,MAAM;4BACN,IAAI,EAAE,OAAO,CAAC,IAAI;4BAClB,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;4BAC7D,QAAQ,EAAE;gCACN,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC;gCACzD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC;6BAClE;4BACD,UAAU,EAAE,WAAW,CACnB,OAAO,CAAC,IAAI,CAAC,OAAO,EACpB,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CACtD;yBACJ,CAAC,CAAA;oBACN,CAAC;4BAAS,CAAC;wBACP,MAAM,OAAO,CAAC,KAAK,EAAE,CAAA;oBACzB,CAAC;gBACL,CAAC;aACJ,CAAC,CAAA;YAEF,MAAM,IAAI,GAAG,oBAAoB,CAC7B,OAAO,EACP,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EACvC,MAAM,CAAC,MAAM,CAChB,CAAA;YAED,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAE7E,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC9C,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;YACxF,CAAC;QACL,CAAC;QAED,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE,EAAE;YACvC,MAAM,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACpC,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE,EAAE;YACxC,MAAM,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;QACtC,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE;YACxC,MAAM,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,MAAM,CAAC,CAAA;YACjE,MAAM,GAAG,CAAC,OAAO,CAAC,CAAA;QACtB,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE;YACxC,MAAM,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAA;QAClE,CAAC;QAED,0BAA0B,EAAE;YACxB,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,QAAkB,EAAE,EAAE;gBACxC,MAAM,GAAG,EAAE,CAAA;gBAEX,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAA;gBACjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;gBAE/C,IAAI,uBAAuB,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC9F,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAA;gBACpC,CAAC;YACL,CAAC;YACD,EAAE,IAAI,EAAE,IAAI,EAAE;SACjB;KACJ,CAAC,CAAA;AACN,CAAC"}
1
+ {"version":3,"file":"scenario.js","sourceRoot":"","sources":["../src/scenario.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plan2net/typo3-playwright-toolkit",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "Playwright toolkit for TYPO3 end-to-end tests: fixtures, content builders, per-test databases.",
5
5
  "keywords": [
6
6
  "typo3",