@plan2net/typo3-playwright-toolkit 0.15.0 → 0.16.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.
Files changed (38) hide show
  1. package/README.md +59 -4
  2. package/dist/checks/screenshot.d.ts +7 -0
  3. package/dist/checks/screenshot.d.ts.map +1 -1
  4. package/dist/checks/screenshot.js +113 -8
  5. package/dist/checks/screenshot.js.map +1 -1
  6. package/dist/clean/cli.d.ts +3 -0
  7. package/dist/clean/cli.d.ts.map +1 -0
  8. package/dist/clean/cli.js +32 -0
  9. package/dist/clean/cli.js.map +1 -0
  10. package/dist/doctor/cli.d.ts +3 -0
  11. package/dist/doctor/cli.d.ts.map +1 -0
  12. package/dist/doctor/cli.js +41 -0
  13. package/dist/doctor/cli.js.map +1 -0
  14. package/dist/doctor/reporter.d.ts +22 -0
  15. package/dist/doctor/reporter.d.ts.map +1 -0
  16. package/dist/doctor/reporter.js +223 -0
  17. package/dist/doctor/reporter.js.map +1 -0
  18. package/dist/global-setup.d.ts +18 -0
  19. package/dist/global-setup.d.ts.map +1 -1
  20. package/dist/global-setup.js +6 -3
  21. package/dist/global-setup.js.map +1 -1
  22. package/dist/http/api-secret.js +1 -1
  23. package/dist/http/record-edit.d.ts.map +1 -1
  24. package/dist/http/record-edit.js +7 -6
  25. package/dist/http/record-edit.js.map +1 -1
  26. package/dist/inspect/cli.js +2 -2
  27. package/dist/inspect/links.d.ts +2 -0
  28. package/dist/inspect/links.d.ts.map +1 -1
  29. package/dist/inspect/links.js +8 -0
  30. package/dist/inspect/links.js.map +1 -1
  31. package/dist/playwright/base-config.d.ts.map +1 -1
  32. package/dist/playwright/base-config.js +3 -0
  33. package/dist/playwright/base-config.js.map +1 -1
  34. package/dist/state/run-namespace.d.ts +2 -0
  35. package/dist/state/run-namespace.d.ts.map +1 -1
  36. package/dist/state/run-namespace.js +1 -1
  37. package/dist/state/run-namespace.js.map +1 -1
  38. package/package.json +3 -1
package/README.md CHANGED
@@ -204,7 +204,9 @@ is counted, not printed again. A failing setup shows the same list next to its o
204
204
  error.
205
205
 
206
206
  If TYPO3 refuses a record while a builder saves it, the builder stops at that line,
207
- so the failure points at the save and not at a later assertion.
207
+ so the failure points at the save and not at a later assertion. A `withField()` column
208
+ that TCA does not have fails there too, naming the closest column that exists: TYPO3
209
+ would drop such a field without saying so, leaving the test without its content.
208
210
 
209
211
  <picture>
210
212
  <source media="(max-width: 700px)" srcset="https://raw.githubusercontent.com/plan2net/typo3-playwright-toolkit/main/diagrams/scenario-fan-out-narrow.svg">
@@ -414,7 +416,16 @@ To skip the build once, set `PW_SKIP_BUILD=1`, which is what
414
416
  ### Screenshots
415
417
 
416
418
  `expectScreenshot` waits for fonts, images and animations, hides the selectors from
417
- `hideBeforeScreenshot`, and then compares against the stored image.
419
+ `hideBeforeScreenshot`, and then compares against the stored image. An image that has
420
+ still not decoded when that wait runs out is named in a warning, because it would
421
+ otherwise be blank in the picture and, on a first run, blank in the new baseline.
422
+
423
+ For the duration of the shot each image is pinned to the file it resolved to, and released
424
+ again afterwards. Chromium collapses the viewport to 1×1 while it captures anything taller
425
+ than the viewport, and a `<source media="(max-width: …)">` flips while it is collapsed, which
426
+ drops the decoded image and leaves a blank. Pinning it is invisible to a test, including one
427
+ that narrows the viewport between two shots. A `background-image` behind a width query is
428
+ not covered.
418
429
 
419
430
  ```ts
420
431
  import { expectScreenshot } from '@plan2net/typo3-playwright-toolkit'
@@ -629,6 +640,32 @@ column:
629
640
  element.withField('pi_flexform', flexForm({ sDEF: {…}, sFilter: {…} }))
630
641
  ```
631
642
 
643
+ ### The doctor command
644
+
645
+ The package installs `typo3-playwright-doctor`. Run it from the directory holding
646
+ your Playwright config to see whether the project can run tests: browser launch or
647
+ remote connection, access to `testingURL`, API credentials and version
648
+ compatibility, then a throwaway database and its backend session:
649
+
650
+ ```bash
651
+ npx typo3-playwright-doctor
652
+ npx typo3-playwright-doctor --project chromium
653
+ npx typo3-playwright-doctor --config playwright.local.config.ts
654
+ ```
655
+
656
+ Every check prints success, failure or the reason it was skipped. Exit code `0` means
657
+ ready, `1` means a check failed. `--project` accepts wildcards and can be repeated;
658
+ omit it to check every project.
659
+
660
+ It runs no tests, setup hooks, builds or repairs, and touches neither your existing
661
+ results nor a kept test database. The one database it creates is its own, and it
662
+ drops that again even after a failed check. On DDEV, `ddev playwright doctor` wraps
663
+ it.
664
+
665
+ It also checks nothing about your installation. The TYPO3 extension has a wizard for
666
+ that, `playwright:setup`, which reads your files, versions and settings and writes
667
+ what is missing.
668
+
632
669
  ### The inspect command
633
670
 
634
671
  The package installs `typo3-playwright-inspect`. Run it from your project root
@@ -641,18 +678,36 @@ npx typo3-playwright-inspect accordion # only matching test files
641
678
  ```
642
679
 
643
680
  It reads the API secret from `var/playwright/api-secret` or from
644
- `PLAYWRIGHT_TOOLKIT_SECRET`. On DDEV, `ddev playwright-inspect` wraps it. The links
681
+ `PLAYWRIGHT_TOOLKIT_SECRET`. On DDEV, `ddev playwright inspect` wraps it. The links
645
682
  log in as the pre-seeded backend user and live 15 minutes.
646
683
 
647
684
  `--replay` prints a link into the database a replay run built, instead of the kept
648
685
  test databases. Use it when the link that run printed has expired; it mints a new
649
686
  one rather than rebuilding anything.
650
687
 
688
+ ### The clean command
689
+
690
+ The package installs `typo3-playwright-clean`. Run it from your project root after a
691
+ run you stopped, to drop the test databases and run state it left behind:
692
+
693
+ ```bash
694
+ npx typo3-playwright-clean
695
+ ```
696
+
697
+ Teardown reclaims those by itself, but only once they are `cleanup.orphanAgeMs` old,
698
+ a day by default. This does it now. A run whose state was touched in the last 30
699
+ seconds counts as still going: its databases go into the sweep's keep list and its
700
+ run directory stays, so a suite running in another terminal is safe. The template and
701
+ the replay database are never dropped. On DDEV, `ddev playwright clean` wraps it.
702
+
703
+ Databases kept for `typo3-playwright-inspect` are dropped too, since nothing marks
704
+ them as worth keeping. Read what you need from them first.
705
+
651
706
  ### Replay mode
652
707
 
653
708
  `PW_REPLAY=1` runs every scenario's setup into one shared database rather than a
654
709
  per-test one, so all the content the suite builds ends up in a single place you can
655
- browse and export. `ddev playwright-replay` sets it, rebuilds that database from the
710
+ browse and export. `ddev playwright replay` sets it, rebuilds that database from the
656
711
  template first, and prints a backend link when the run ends.
657
712
 
658
713
  What changes while it is set: every scenario uses the one fixed test ID
@@ -28,6 +28,13 @@ export declare function buildHideStyles(selectors: string[]): string;
28
28
  */
29
29
  export declare function waitForAnimations(page: Page, selector?: string, timeout?: number): Promise<void>;
30
30
  export declare function loadLazyElements(page: Page): Promise<void>;
31
+ export declare function freezeResponsiveImages(page: Page): Promise<void>;
32
+ export declare function prepareImagesForCapture(page: Page): Promise<string[]>;
33
+ export declare function restoreResponsiveImages(page: Page): Promise<void>;
34
+ /** @returns the sources of the images that never decoded, empty when all did */
35
+ export declare function waitForImagesDecoded(page: Page, timeout?: number): Promise<string[]>;
36
+ /** An undecoded image is blank, and a first run writes that blank as the baseline. */
37
+ export declare function warnAboutUndecodedImages(stalled: string[], timeout: number): void;
31
38
  export declare function resolveScreenshotTarget(target: Page | Locator, include?: string): {
32
39
  shot: Page | Locator;
33
40
  wholePage: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../src/checks/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAGxD,+CAA+C;AAC/C,MAAM,WAAW,2BAA2B;IACxC,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,IAAI,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;IACxB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB;AAUD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAM3D;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBpG;AAID,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAMhE;AA6DD,wBAAgB,uBAAuB,CACnC,MAAM,EAAE,IAAI,GAAG,OAAO,EACtB,OAAO,CAAC,EAAE,MAAM,GACjB;IAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAM9C;AAED,MAAM,WAAW,iBAAkB,SAAQ,2BAA2B;IAClE,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAEzG;AAED,wBAAsB,gBAAgB,CAClC,MAAM,EAAE,IAAI,GAAG,OAAO,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,iBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED,wBAAgB,iBAAiB,CAC7B,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,2BAA2B,GACrC,2BAA2B,CAO7B"}
1
+ {"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../src/checks/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAGxD,+CAA+C;AAC/C,MAAM,WAAW,2BAA2B;IACxC,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,IAAI,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;IACxB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB;AAUD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAM3D;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBpG;AAID,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAMhE;AAID,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCtE;AAID,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAM3E;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBvE;AAID,gFAAgF;AAChF,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,SAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAalG;AA0CD,sFAAsF;AACtF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAMjF;AAuCD,wBAAgB,uBAAuB,CACnC,MAAM,EAAE,IAAI,GAAG,OAAO,EACtB,OAAO,CAAC,EAAE,MAAM,GACjB;IAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAM9C;AAED,MAAM,WAAW,iBAAkB,SAAQ,2BAA2B;IAClE,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAEzG;AAED,wBAAsB,gBAAgB,CAClC,MAAM,EAAE,IAAI,GAAG,OAAO,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,iBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED,wBAAgB,iBAAiB,CAC7B,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,2BAA2B,GACrC,2BAA2B,CAO7B"}
@@ -42,12 +42,93 @@ export async function loadLazyElements(page) {
42
42
  .querySelectorAll('[loading="lazy"]')
43
43
  .forEach((element) => (element.loading = 'eager')));
44
44
  }
45
- async function waitForImagesDecoded(page, timeout = 15000) {
46
- await page.evaluate(async (timeout) => {
45
+ // A capture reaching past the viewport collapses it to 1x1 first, and a width-based
46
+ // `media` on a `<source>` flips while it is collapsed, dropping the decoded image.
47
+ export async function freezeResponsiveImages(page) {
48
+ await page.evaluate(() => {
49
+ document.querySelectorAll('img').forEach((image) => {
50
+ const resolved = image.currentSrc;
51
+ if (!resolved) {
52
+ return;
53
+ }
54
+ image.dataset.toolkitFrozen = JSON.stringify({
55
+ src: image.getAttribute('src'),
56
+ srcset: image.getAttribute('srcset'),
57
+ sizes: image.getAttribute('sizes'),
58
+ width: image.getAttribute('width'),
59
+ height: image.getAttribute('height'),
60
+ });
61
+ const sources = Array.from(image.closest('picture')?.querySelectorAll('source') ?? []);
62
+ // width and height on the chosen source lay the img out, and disabling it
63
+ // would drop them.
64
+ const chosen = sources.find((source) => !source.media || matchMedia(source.media).matches);
65
+ for (const dimension of ['width', 'height']) {
66
+ const value = chosen?.getAttribute(dimension);
67
+ if (null != value) {
68
+ image.setAttribute(dimension, value);
69
+ }
70
+ }
71
+ sources.forEach((source) => {
72
+ source.dataset.toolkitFrozen = JSON.stringify({ media: source.getAttribute('media') });
73
+ // Never matches, so selection falls through to the img below.
74
+ source.media = 'not all';
75
+ });
76
+ image.removeAttribute('srcset');
77
+ image.removeAttribute('sizes');
78
+ if (image.src !== resolved) {
79
+ image.src = resolved;
80
+ }
81
+ });
82
+ });
83
+ }
84
+ // Settle first, or a loading image has no currentSrc to pin it to; settle again,
85
+ // because pinning a <picture> starts a load of its own.
86
+ export async function prepareImagesForCapture(page) {
87
+ const stalled = await waitForImagesDecoded(page);
88
+ await freezeResponsiveImages(page);
89
+ await waitForImagesDecoded(page);
90
+ return stalled;
91
+ }
92
+ export async function restoreResponsiveImages(page) {
93
+ await page.evaluate(() => {
94
+ const put = (element, name, value) => null === value ? element.removeAttribute(name) : element.setAttribute(name, value);
95
+ document.querySelectorAll('img[data-toolkit-frozen]').forEach((image) => {
96
+ image
97
+ .closest('picture')
98
+ ?.querySelectorAll('source[data-toolkit-frozen]')
99
+ .forEach((source) => {
100
+ const { media } = JSON.parse(source.dataset.toolkitFrozen ?? '{}');
101
+ put(source, 'media', media);
102
+ delete source.dataset.toolkitFrozen;
103
+ });
104
+ const frozen = JSON.parse(image.dataset.toolkitFrozen ?? '{}');
105
+ Object.entries(frozen).forEach(([name, value]) => put(image, name, value));
106
+ delete image.dataset.toolkitFrozen;
107
+ });
108
+ });
109
+ }
110
+ const DECODE_TIMEOUT = 15000;
111
+ /** @returns the sources of the images that never decoded, empty when all did */
112
+ export async function waitForImagesDecoded(page, timeout = DECODE_TIMEOUT) {
113
+ const deadline = Date.now() + timeout;
114
+ const stalled = await settleImages(page, timeout);
115
+ const left = deadline - Date.now();
116
+ // Out of budget, so a second round would settle nothing and report every image.
117
+ if (left <= 0) {
118
+ return stalled;
119
+ }
120
+ // A load that starts during a round is not waited for by it, which is how
121
+ // applyDeferredStylesheets re-selects a source after the image read as complete.
122
+ return settleImages(page, left);
123
+ }
124
+ function settleImages(page, timeout) {
125
+ return page.evaluate(async (timeout) => {
47
126
  const images = Array.from(document.querySelectorAll('img'));
127
+ const stalled = new Set(images);
48
128
  const settle = (image) => new Promise((resolve) => {
49
129
  const finish = async () => {
50
130
  await image.decode().catch(() => { });
131
+ stalled.delete(image);
51
132
  resolve();
52
133
  };
53
134
  if (image.complete) {
@@ -55,13 +136,29 @@ async function waitForImagesDecoded(page, timeout = 15000) {
55
136
  return;
56
137
  }
57
138
  image.addEventListener('load', () => void finish(), { once: true });
58
- image.addEventListener('error', () => resolve(), { once: true });
139
+ image.addEventListener('error', () => {
140
+ stalled.delete(image);
141
+ resolve();
142
+ }, { once: true });
59
143
  });
60
144
  const timeoutPromise = new Promise((resolve) => setTimeout(resolve, timeout));
61
145
  await Promise.race([Promise.all(images.map(settle)), timeoutPromise]);
62
146
  await new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(() => resolve())));
147
+ // The snapshot above predates anything that started loading since.
148
+ document.querySelectorAll('img').forEach((image) => {
149
+ if (!image.complete) {
150
+ stalled.add(image);
151
+ }
152
+ });
153
+ return Array.from(stalled, (image) => image.currentSrc || image.src);
63
154
  }, timeout);
64
155
  }
156
+ /** An undecoded image is blank, and a first run writes that blank as the baseline. */
157
+ export function warnAboutUndecodedImages(stalled, timeout) {
158
+ console.warn(`[typo3-playwright-toolkit] ${stalled.length} ${1 === stalled.length ? 'image' : 'images'} ` +
159
+ `did not decode within ${timeout}ms and will be blank in the screenshot:\n ` +
160
+ stalled.join('\n '));
161
+ }
65
162
  /**
66
163
  * Finishes the `media="print"` async-CSS trick by hand. A stylesheet loaded as
67
164
  * print and swapped to `all` on load is not applied while it is still print, so
@@ -113,11 +210,19 @@ export async function expectScreenshot(target, name, options = {}) {
113
210
  await page.evaluate(() => document.fonts.ready);
114
211
  await waitForAnimations(page, undefined, 3000);
115
212
  await loadLazyElements(page);
116
- await waitForImagesDecoded(page);
117
- // Playwright creates a missing reference itself and has --update-snapshots
118
- // for the rest; hand-building the snapshot path got the platform suffix
119
- // wrong off Linux.
120
- await expect(shot).toHaveScreenshot(`${name}.png`, comparisonOptions(wholePage, screenshotOptions));
213
+ const stalled = await prepareImagesForCapture(page);
214
+ if (stalled.length > 0) {
215
+ warnAboutUndecodedImages(stalled, DECODE_TIMEOUT);
216
+ }
217
+ try {
218
+ // Playwright creates a missing reference itself and has --update-snapshots
219
+ // for the rest; hand-building the snapshot path got the platform suffix
220
+ // wrong off Linux.
221
+ await expect(shot).toHaveScreenshot(`${name}.png`, comparisonOptions(wholePage, screenshotOptions));
222
+ }
223
+ finally {
224
+ await restoreResponsiveImages(page);
225
+ }
121
226
  }
122
227
  export function comparisonOptions(wholePage, perCall) {
123
228
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../src/checks/screenshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../src/checks/screenshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/clean/cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env node
2
+ import * as path from 'path';
3
+ import { sweepOrphans } from '../global-teardown.js';
4
+ import { httpCleanup } from '../http/cleanup-client.js';
5
+ import { findStateDir, recordedTestingUrl } from '../inspect/links.js';
6
+ import { OWNER_ACTIVE_MS } from '../state/run-namespace.js';
7
+ if (process.argv.includes('--help') || process.argv.includes('-h')) {
8
+ console.log('Usage: typo3-playwright-clean');
9
+ console.log('Drops the test databases and run state a stopped run left behind.');
10
+ process.exit(0);
11
+ }
12
+ const stateDir = findStateDir(process.cwd());
13
+ if (undefined === stateDir) {
14
+ console.log('Nothing to clean: no .test-state directory here.');
15
+ process.exit(0);
16
+ }
17
+ const testingURL = recordedTestingUrl(stateDir);
18
+ if (undefined === testingURL) {
19
+ console.log('Nothing to clean: no run recorded a testing URL.');
20
+ process.exit(0);
21
+ }
22
+ const consumerRoot = path.dirname(stateDir);
23
+ const config = {
24
+ testingURL,
25
+ paths: { consumerRoot, stateDir, sessionDir: path.join(consumerRoot, 'var/session') },
26
+ // The window prepareRun uses to decide another process owns a run, so a run
27
+ // younger than it keeps its databases and state.
28
+ cleanup: { orphanAgeMs: OWNER_ACTIVE_MS },
29
+ };
30
+ const reclaimed = await sweepOrphans(config, httpCleanup(config));
31
+ console.log(`Dropped ${reclaimed} test database${1 === reclaimed ? '' : 's'}.`);
32
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/clean/cli.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;IAC5C,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAA;IAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC;AAED,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;AAC5C,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;IAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;AAC/C,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;IAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC;AAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;AAC3C,MAAM,MAAM,GAAkB;IAC1B,UAAU;IACV,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE;IACrF,4EAA4E;IAC5E,iDAAiD;IACjD,OAAO,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE;CAC5C,CAAA;AAED,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;AAEjE,OAAO,CAAC,GAAG,CAAC,WAAW,SAAS,iBAAiB,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/doctor/cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env node
2
+ import { mkdtempSync, rmSync } from 'node:fs';
3
+ import { createRequire } from 'node:module';
4
+ import { tmpdir } from 'node:os';
5
+ import { join } from 'node:path';
6
+ import { fileURLToPath, pathToFileURL } from 'node:url';
7
+ import { parseArgs } from 'node:util';
8
+ try {
9
+ const { values } = parseArgs({ options: {
10
+ help: { type: 'boolean', short: 'h' },
11
+ config: { type: 'string', short: 'c' },
12
+ project: { type: 'string', multiple: true },
13
+ } });
14
+ if (values.help) {
15
+ console.log('Usage: typo3-playwright-doctor [--project name] [--config file]');
16
+ console.log('Checks browsers and TYPO3 without running tests, builds, or repairs.');
17
+ }
18
+ else {
19
+ const require = createRequire(import.meta.url);
20
+ // Playwright 1.44 writes .last-run.json even in list mode, into an output
21
+ // directory it creates first, so the project's own test-results survives
22
+ // only if that directory is a throwaway.
23
+ const outputDir = mkdtempSync(join(tmpdir(), 'typo3-playwright-doctor-'));
24
+ process.on('exit', () => rmSync(outputDir, { recursive: true, force: true }));
25
+ const args = ['test', '--list', '--pass-with-no-tests', '--output', outputDir,
26
+ '--reporter', fileURLToPath(new URL('./reporter.js', import.meta.url))];
27
+ if (values.config)
28
+ args.push('--config', values.config);
29
+ for (const project of values.project ?? [])
30
+ args.push('--project', project);
31
+ const playwrightCli = require.resolve('@playwright/test/cli');
32
+ process.env.PW_DOCTOR_PROJECTS = JSON.stringify(values.project ?? []);
33
+ process.argv = [process.execPath, playwrightCli, ...args];
34
+ await import(pathToFileURL(playwrightCli).href);
35
+ }
36
+ }
37
+ catch (error) {
38
+ console.error(`✗ ${error.message}`);
39
+ process.exitCode = 1;
40
+ }
41
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/doctor/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,IAAI,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE;YACpC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;YACrC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;YACtC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC9C,EAAE,CAAC,CAAA;IACJ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAA;QAC9E,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAA;IACvF,CAAC;SAAM,CAAC;QACJ,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAE9C,0EAA0E;QAC1E,yEAAyE;QACzE,yCAAyC;QACzC,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,0BAA0B,CAAC,CAAC,CAAA;QACzE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QAE7E,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,sBAAsB,EAAE,UAAU,EAAE,SAAS;YACzE,YAAY,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC3E,IAAI,MAAM,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QACvD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE;YAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QAC3E,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAA;QAC7D,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;QACrE,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,CAAA;QACzD,MAAM,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAA;IACnD,CAAC;AACL,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACb,OAAO,CAAC,KAAK,CAAC,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;IAC9C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;AACxB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { FullConfig, FullResult, Reporter, TestError } from '@playwright/test/reporter';
2
+ export default class DoctorReporter implements Reporter {
3
+ private config?;
4
+ private failed;
5
+ printsToStdio(): boolean;
6
+ onBegin(config: FullConfig): void;
7
+ onError(error: TestError): void;
8
+ onEnd(result: FullResult): Promise<{
9
+ status: FullResult['status'];
10
+ }>;
11
+ /**
12
+ * A reporter's config lists every project whatever --project selected, and the
13
+ * run's suites hold only projects that already have a test file. So the
14
+ * selection is applied here, with Playwright's wildcard and case rules.
15
+ */
16
+ private selectedProjects;
17
+ private checkBrowser;
18
+ private checkApi;
19
+ private fail;
20
+ private skip;
21
+ }
22
+ //# sourceMappingURL=reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/doctor/reporter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAe,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAWzG,MAAM,CAAC,OAAO,OAAO,cAAe,YAAW,QAAQ;IACnD,OAAO,CAAC,MAAM,CAAC,CAAY;IAC3B,OAAO,CAAC,MAAM,CAAI;IAElB,aAAa,IAAI,OAAO;IAIxB,OAAO,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAIjC,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAIzB,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;KAAE,CAAC;IAyB1E;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;YAWV,YAAY;YA8BZ,QAAQ;IA8FtB,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,IAAI;CAGf"}
@@ -0,0 +1,223 @@
1
+ import { chromium, firefox, webkit } from '@playwright/test';
2
+ import { getToolkitConfig } from '../config.js';
3
+ import { generateTestId, TEST_ID_HEADER } from '../contract.js';
4
+ import { resolveApiSecret, SECRET_HEADER } from '../http/api-secret.js';
5
+ import { httpCleanup } from '../http/cleanup-client.js';
6
+ import { isTestingContext, MINIMUM_API_VERSION, readHealth } from '../global-setup.js';
7
+ const BROWSERS = { chromium, firefox, webkit };
8
+ const BROWSER_TIMEOUT_MS = 10000;
9
+ export default class DoctorReporter {
10
+ config;
11
+ failed = 0;
12
+ printsToStdio() {
13
+ return true;
14
+ }
15
+ onBegin(config) {
16
+ this.config = config;
17
+ }
18
+ onError(error) {
19
+ console.error(`✗ Playwright config: ${error.message ?? error.value}`);
20
+ }
21
+ async onEnd(result) {
22
+ if (!this.config || result.status !== 'passed') {
23
+ return { status: 'failed' };
24
+ }
25
+ console.log(`✓ Playwright config loaded: ${this.config.configFile}`);
26
+ let toolkit;
27
+ try {
28
+ toolkit = getToolkitConfig();
29
+ }
30
+ catch (error) {
31
+ this.fail('Toolkit configuration', error.message);
32
+ return { status: 'failed' };
33
+ }
34
+ for (const project of this.selectedProjects(this.config)) {
35
+ await this.checkBrowser(project, toolkit);
36
+ }
37
+ await this.checkApi(toolkit);
38
+ console.log(this.failed ? `Not ready: ${this.failed} check(s) failed.` : 'Ready to run tests.');
39
+ return { status: this.failed ? 'failed' : 'passed' };
40
+ }
41
+ /**
42
+ * A reporter's config lists every project whatever --project selected, and the
43
+ * run's suites hold only projects that already have a test file. So the
44
+ * selection is applied here, with Playwright's wildcard and case rules.
45
+ */
46
+ selectedProjects(config) {
47
+ const names = JSON.parse(process.env.PW_DOCTOR_PROJECTS ?? '[]');
48
+ if (!names.length) {
49
+ return config.projects;
50
+ }
51
+ const patterns = names.map((name) => new RegExp(`^${name.split('*')
52
+ .map((part) => part.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('.*')}$`, 'i'));
53
+ return config.projects.filter((project) => patterns.some((pattern) => pattern.test(project.name)));
54
+ }
55
+ async checkBrowser(project, toolkit) {
56
+ const browserName = project.use.browserName ?? 'chromium';
57
+ const label = project.name || browserName;
58
+ const connect = connectOptions(project);
59
+ let browser;
60
+ try {
61
+ const launch = { ...project.use.launchOptions };
62
+ if (project.use.headless !== undefined)
63
+ launch.headless = project.use.headless;
64
+ if (project.use.channel !== undefined)
65
+ launch.channel = project.use.channel;
66
+ browser = connect
67
+ ? await BROWSERS[browserName].connect(connect.wsEndpoint, { timeout: BROWSER_TIMEOUT_MS, ...connect })
68
+ : await BROWSERS[browserName].launch({ timeout: BROWSER_TIMEOUT_MS, ...launch });
69
+ }
70
+ catch (error) {
71
+ this.fail(`Browser [${label}]`, error.message);
72
+ return;
73
+ }
74
+ console.log(`✓ Browser [${label}] ${connect ? 'connected' : 'launched'}`);
75
+ try {
76
+ const page = await browser.newPage(pageOptions(project));
77
+ await page.goto(toolkit.testingURL, { timeout: BROWSER_TIMEOUT_MS, waitUntil: 'domcontentloaded' });
78
+ console.log(`✓ Browser access [${label}]: testing URL reachable`);
79
+ }
80
+ catch (error) {
81
+ this.fail(`Browser access [${label}]`, error.message);
82
+ }
83
+ finally {
84
+ await browser.close();
85
+ }
86
+ }
87
+ async checkApi(config) {
88
+ let secret;
89
+ try {
90
+ secret = resolveApiSecret(config);
91
+ }
92
+ catch (error) {
93
+ this.fail('API secret', error.message);
94
+ this.skip('API authentication', 'API compatibility', 'Database and session checks');
95
+ return;
96
+ }
97
+ const url = `${config.testingURL}/typo3/test-api/health`;
98
+ const headers = { [SECRET_HEADER]: secret };
99
+ let preflight;
100
+ try {
101
+ preflight = await readHealth(url, headers, fetch, (reason) => `Unreachable: ${reason}. Check the testing hostname and web server.`);
102
+ }
103
+ catch (error) {
104
+ this.fail('Testing URL', error.message);
105
+ this.skip('API authentication', 'API compatibility', 'Database and session checks');
106
+ return;
107
+ }
108
+ console.log(`✓ Testing URL reachable: ${config.testingURL}`);
109
+ if (preflight.status === 401 || preflight.status === 403) {
110
+ this.fail('API secret', 'Request refused. Check PLAYWRIGHT_TOOLKIT_SECRET or run ddev playwright prepare.');
111
+ this.skip('API compatibility', 'Database and session checks');
112
+ return;
113
+ }
114
+ if (!answered(preflight.status)) {
115
+ this.fail('Test API', `HTTP ${preflight.status}. Check the Testing site's PHP and web-server logs.`);
116
+ this.skip('API compatibility', 'Database and session checks');
117
+ return;
118
+ }
119
+ console.log('✓ API secret accepted');
120
+ if (typeof preflight.body?.api !== 'number' || !Number.isInteger(preflight.body.api) || preflight.body.api < MINIMUM_API_VERSION) {
121
+ this.fail('Toolkit API version', 'Run composer update plan2net/playwright-toolkit.');
122
+ this.skip('Database and session checks');
123
+ return;
124
+ }
125
+ console.log('✓ Toolkit API versions compatible');
126
+ if (!confirmsTestingContext(preflight.body.checks?.context)) {
127
+ this.fail('Testing context', 'Point testingURL at the hostname configured with TYPO3_CONTEXT=Testing.');
128
+ this.skip('Database and session checks');
129
+ return;
130
+ }
131
+ const testId = generateTestId();
132
+ try {
133
+ const health = await readHealth(url, { ...headers, [TEST_ID_HEADER]: testId }, fetch, (reason) => `Diagnostic request failed: ${reason}`);
134
+ if (!answered(health.status)) {
135
+ this.fail('Test API', `HTTP ${health.status}. Check the Testing site's PHP and web-server logs.`);
136
+ this.skip('Database and session checks');
137
+ return;
138
+ }
139
+ if (!confirmsTestingContext(health.body?.checks?.context)) {
140
+ this.fail('Testing context', 'The diagnostic response did not confirm a Testing context.');
141
+ this.skip('Database and session checks');
142
+ return;
143
+ }
144
+ const failuresBefore = this.failed;
145
+ for (const [name, label] of [
146
+ ['database', 'Test database created from template'],
147
+ ['session', 'Backend session usable'],
148
+ ]) {
149
+ const check = health.body.checks?.[name];
150
+ if (check?.ok === true) {
151
+ console.log(`✓ ${label}`);
152
+ }
153
+ else {
154
+ this.fail(label, `${check?.detail ?? 'No check result returned'}. Run ddev playwright prepare --force.`);
155
+ if (name === 'database')
156
+ this.skip('Backend session check');
157
+ break;
158
+ }
159
+ }
160
+ if (this.failed === failuresBefore && (!health.ok || health.body.ok !== true)) {
161
+ this.fail('Test API', 'The health response reports failure without a failed check. Check the PHP logs.');
162
+ }
163
+ }
164
+ catch (error) {
165
+ this.fail('Test database', error.message);
166
+ }
167
+ finally {
168
+ const [cleanup] = await httpCleanup(config).drop([testId]);
169
+ if (cleanup?.outcome === 'dropped' || cleanup?.outcome === 'absent') {
170
+ console.log('✓ Diagnostic database removed');
171
+ }
172
+ else {
173
+ this.fail('Diagnostic database cleanup', `db${testId}: ${cleanup?.outcome ?? 'no result'}`);
174
+ }
175
+ }
176
+ }
177
+ fail(check, detail) {
178
+ console.error(`✗ ${check}: ${detail}`);
179
+ this.failed++;
180
+ }
181
+ skip(...checks) {
182
+ for (const check of checks)
183
+ console.log(`– ${check} skipped`);
184
+ }
185
+ }
186
+ /** Playwright's own environment override wins, the way it does for a test run. */
187
+ function connectOptions(project) {
188
+ if (!process.env.PW_TEST_CONNECT_WS_ENDPOINT) {
189
+ return project.use.connectOptions;
190
+ }
191
+ return {
192
+ wsEndpoint: process.env.PW_TEST_CONNECT_WS_ENDPOINT,
193
+ headers: process.env.PW_TEST_CONNECT_HEADERS
194
+ ? JSON.parse(process.env.PW_TEST_CONNECT_HEADERS)
195
+ : undefined,
196
+ exposeNetwork: process.env.PW_TEST_CONNECT_EXPOSE_NETWORK,
197
+ };
198
+ }
199
+ /** A toolkit header a consumer configured context-wide must not ride along on a browser request. */
200
+ function pageOptions(project) {
201
+ const options = { ...project.use.contextOptions };
202
+ options.extraHTTPHeaders = { ...(project.use.extraHTTPHeaders ?? options.extraHTTPHeaders) };
203
+ for (const header of Object.keys(options.extraHTTPHeaders)) {
204
+ if ([SECRET_HEADER.toLowerCase(), TEST_ID_HEADER.toLowerCase()].includes(header.toLowerCase())) {
205
+ delete options.extraHTTPHeaders[header];
206
+ }
207
+ }
208
+ if (project.use.ignoreHTTPSErrors !== undefined)
209
+ options.ignoreHTTPSErrors = project.use.ignoreHTTPSErrors;
210
+ if (project.use.httpCredentials !== undefined)
211
+ options.httpCredentials = project.use.httpCredentials;
212
+ if (project.use.proxy !== undefined)
213
+ options.proxy = project.use.proxy;
214
+ return options;
215
+ }
216
+ /** 200 is healthy and 503 is a reported check failure; anything else is the site breaking. */
217
+ function answered(status) {
218
+ return status === 200 || status === 503;
219
+ }
220
+ function confirmsTestingContext(check) {
221
+ return check?.ok === true && isTestingContext(check.detail);
222
+ }
223
+ //# sourceMappingURL=reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/doctor/reporter.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,23 @@ import { type ToolkitConfig } from './config.js';
2
2
  export declare function preflightTestId(config: ToolkitConfig): string;
3
3
  /** The oldest extension this toolkit can talk to. */
4
4
  export declare const MINIMUM_API_VERSION = 1;
5
+ interface HealthResponse {
6
+ status: number;
7
+ ok: boolean;
8
+ body: {
9
+ ok?: boolean;
10
+ api?: unknown;
11
+ checks?: Record<string, {
12
+ ok: boolean;
13
+ detail: string;
14
+ }>;
15
+ };
16
+ }
17
+ /**
18
+ * The body is read whatever the status: an unhealthy site still reports its
19
+ * version, and "too old" is a different problem from "unhealthy".
20
+ */
21
+ export declare function readHealth(healthUrl: string, headers: Record<string, string>, doFetch: typeof fetch, unreachable: (reason: string) => string): Promise<HealthResponse>;
5
22
  /**
6
23
  * Sends no test ID, and runs before any test ID exists. A request with one makes
7
24
  * the extension create a database, and an extension this old has no endpoint to
@@ -10,6 +27,7 @@ export declare const MINIMUM_API_VERSION = 1;
10
27
  export declare function verifyApiVersion(config: ToolkitConfig, options?: {
11
28
  fetchImpl?: typeof fetch;
12
29
  }): Promise<number>;
30
+ export declare function isTestingContext(reported: string): boolean;
13
31
  export declare function runHealthCheck(testingURL: string, options?: {
14
32
  testId?: string;
15
33
  secret?: string;
@@ -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;AAOlE,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAK7D;AAED,qDAAqD;AACrD,eAAO,MAAM,mBAAmB,IAAI,CAAA;AA4DpC;;;;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;AAiBD,wBAAsB,cAAc,CAChC,UAAU,EAAE,MAAM,EAClB,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,CAqB1C;AAED,eAAe,WAAW,CAAA"}
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;AAOlE,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAK7D;AAED,qDAAqD;AACrD,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC,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,CAAA;KAAE,CAAA;CAClG;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,CA2BzB;AAgBD;;;;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,UAAU,EAAE,MAAM,EAClB,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,CAqB1C;AAED,eAAe,WAAW,CAAA"}
@@ -15,7 +15,7 @@ export const MINIMUM_API_VERSION = 1;
15
15
  * The body is read whatever the status: an unhealthy site still reports its
16
16
  * version, and "too old" is a different problem from "unhealthy".
17
17
  */
18
- async function readHealth(healthUrl, headers, doFetch, unreachable) {
18
+ export async function readHealth(healthUrl, headers, doFetch, unreachable) {
19
19
  let response;
20
20
  try {
21
21
  response = await doFetch(healthUrl, {
@@ -69,7 +69,7 @@ export async function verifyApiVersion(config, options = {}) {
69
69
  'The toolkit secret does not match the one the extension expects.',
70
70
  '',
71
71
  'Under DDEV both sides read var/playwright/api-secret, which',
72
- '`ddev playwright-prepare` writes. Run it, or set PLAYWRIGHT_TOOLKIT_SECRET',
72
+ '`ddev playwright prepare` writes. Run it, or set PLAYWRIGHT_TOOLKIT_SECRET',
73
73
  'to the same value on both sides when PHP and Node run in separate containers.',
74
74
  ].join('\n'));
75
75
  }
@@ -87,9 +87,12 @@ export async function verifyApiVersion(config, options = {}) {
87
87
  }
88
88
  return reported;
89
89
  }
90
+ export function isTestingContext(reported) {
91
+ return /^Testing(\/|$)/.test(reported);
92
+ }
90
93
  /** Cannot fail while the endpoint itself is gated: here so a moved gate stops the run. */
91
94
  function assertTestingContext(healthUrl, reported) {
92
- if (undefined === reported || /^Testing(\/|$)/.test(reported)) {
95
+ if (undefined === reported || isTestingContext(reported)) {
93
96
  return;
94
97
  }
95
98
  throw new Error([
@@ -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,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAElE,MAAM,UAAU,eAAe,CAAC,MAAqB;IACjD,MAAM,MAAM,GAAG,cAAc,EAAE,CAAA;IAC/B,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;IAEjD,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,qDAAqD;AACrD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAQpC;;;GAGG;AACH,KAAK,UAAU,UAAU,CACrB,SAAiB,EACjB,OAA+B,EAC/B,OAAqB,EACrB,WAAuC;IAEvC,IAAI,QAAkB,CAAA;IACtB,IAAI,CAAC;QACD,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE;YAChC,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC;YAC7E,OAAO;SACV,CAAC,CAAA;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACxF,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAClC,IAAI,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAA2B,EAAE,CAAA;IACzG,CAAC;IAAC,MAAM,CAAC;QACL,MAAM,IAAI,KAAK,CACX;YACI,qBAAqB,SAAS,8BAA8B,QAAQ,CAAC,MAAM,IAAI;YAC/E,gFAAgF;YAChF,wCAAwC;YACxC,OAAO,CAAC,IAAI,CAAC;YACb,EAAE;YACF,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE,CAAC,IAAI,CAAC,IAAI,CAAC,CACf,CAAA;IACL,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,SAAiB;IAC1C,OAAO;QACH,+DAA+D,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;QAC1F,oFAAoF;QACpF,mDAAmD;KACtD,CAAA;AACL,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IACzB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IAE3E,OAAO,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,cAAc,CAAA;AAC/F,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,MAAqB,EACrB,UAAwC,EAAE;IAE1C,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,UAAU,wBAAwB,CAAA;IAE9D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CACrC,SAAS,EACT,EAAE,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,EAC7C,OAAO,CAAC,SAAS,IAAI,KAAK,EAC1B,CAAC,MAAM,EAAE,EAAE,CAAC,yDAAyD,SAAS,KAAK,MAAM,IAAI,CAChG,CAAA;IAED,gFAAgF;IAChF,oDAAoD;IACpD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACX;YACI,qBAAqB,SAAS,uBAAuB;YACrD,kEAAkE;YAClE,EAAE;YACF,6DAA6D;YAC7D,4EAA4E;YAC5E,+EAA+E;SAClF,CAAC,IAAI,CAAC,IAAI,CAAC,CACf,CAAA;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAA;IAEzB,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,GAAG,mBAAmB,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CACX;YACI,oEAAoE;YACpE,eAAe,mBAAmB,kBAAkB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YAC9E,EAAE;YACF,+DAA+D;YAC/D,EAAE;YACF,sEAAsE;YACtE,oBAAoB;SACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CACf,CAAA;IACL,CAAC;IAED,OAAO,QAAQ,CAAA;AACnB,CAAC;AAED,0FAA0F;AAC1F,SAAS,oBAAoB,CAAC,SAAiB,EAAE,QAA4B;IACzE,IAAI,SAAS,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5D,OAAM;IACV,CAAC;IAED,MAAM,IAAI,KAAK,CACX;QACI,qBAAqB,SAAS,oBAAoB,QAAQ,wBAAwB;QAClF,EAAE;QACF,GAAG,mBAAmB,CAAC,SAAS,CAAC;KACpC,CAAC,IAAI,CAAC,IAAI,CAAC,CACf,CAAA;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,UAAkB,EAClB,UAA0E,EAAE;IAE5E,MAAM,SAAS,GAAG,GAAG,UAAU,wBAAwB,CAAA;IACvD,MAAM,OAAO,GAA2B,EAAE,CAAA;IAC1C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,MAAM,CAAA;IAC5C,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,MAAM,CAAA;IAC3C,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CACrG;QACI,qBAAqB,SAAS,iBAAiB,MAAM,IAAI;QACzD,gBAAgB;QAChB,yCAAyC;QACzC,+CAA+C;KAClD,CAAC,IAAI,CAAC,IAAI,CAAC,CACf,CAAA;IAED,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QAChB,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QAE7D,OAAM;IACV,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;SAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;SACtD,IAAI,CAAC,IAAI,CAAC,CAAA;IAEf,MAAM,IAAI,KAAK,CACX;QACI,0BAA0B,MAAM,IAAI;QACpC,MAAM,IAAI,sEAAsE;QAChF,EAAE;QACF,+FAA+F;KAClG,CAAC,IAAI,CAAC,IAAI,CAAC,CACf,CAAA;AACL,CAAC;AAED,KAAK,UAAU,WAAW;IACtB,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAA;IAEjC,gEAAgE;IAChE,QAAQ,CAAC,MAAM,CAAC,CAAA;IAEhB,UAAU,CAAC,MAAM,CAAC,CAAA;IAElB,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,GAAG,EAAE,CAAC;QACrC,OAAM;IACV,CAAC;IAED,8EAA8E;IAC9E,kDAAkD;IAClD,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAE9B,4EAA4E;IAC5E,MAAM,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE;QACpC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC;QAChE,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC;KACnC,CAAC,CAAA;AACN,CAAC;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"global-setup.js","sourceRoot":"","sources":["../src/global-setup.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@ export function resolveApiSecret(config) {
20
20
  if (fromFile) {
21
21
  return fromFile;
22
22
  }
23
- throw new Error(`[typo3-playwright-toolkit] No test API secret. Run \`ddev playwright-prepare\` ` +
23
+ throw new Error(`[typo3-playwright-toolkit] No test API secret. Run \`ddev playwright prepare\` ` +
24
24
  `(or \`typo3 playwright:prepare\`) to create ${file}, or set ${SECRET_ENV} ` +
25
25
  'to the same value when PHP and Node do not share a filesystem.');
26
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"record-edit.d.ts","sourceRoot":"","sources":["../../src/http/record-edit.ts"],"names":[],"mappings":"AAGA,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,iBAAiB,CAAA;AAE/C,sEAAsE;AACtE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;AAEnF,MAAM,WAAW,YAAY;IACzB,MAAM,IAAI,MAAM,CAAA;IAChB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CAC1B;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,CACA,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GACtG,OAAO,CAAC,YAAY,CAAC,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,kFAAkF;IAClF,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CACvB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,GACrB,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAEhD;AAED,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAA;IAClB,8FAA8F;IAC9F,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,aAAa,CAAA;CACtB;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,CA8CtB"}
1
+ {"version":3,"file":"record-edit.d.ts","sourceRoot":"","sources":["../../src/http/record-edit.ts"],"names":[],"mappings":"AAGA,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,iBAAiB,CAAA;AAE/C,sEAAsE;AACtE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;AAEnF,MAAM,WAAW,YAAY;IACzB,MAAM,IAAI,MAAM,CAAA;IAChB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CAC1B;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,CACA,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GACtG,OAAO,CAAC,YAAY,CAAC,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,kFAAkF;IAClF,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CACvB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,GACrB,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAEhD;AAED,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAA;IAClB,8FAA8F;IAC9F,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,aAAa,CAAA;CACtB;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,CAgDtB"}
@@ -28,13 +28,14 @@ export async function saveRecord(poster, context, record) {
28
28
  maxRedirects: 0,
29
29
  });
30
30
  const headers = response.headers();
31
+ // A refusal carries no Location, so the redirect check would win over it.
32
+ refuseWhatTypo3Rejected(headers, record.table);
31
33
  const location = redirectTarget(response.status(), headers);
32
34
  if (undefined === location) {
33
35
  throw new Error(`[typo3-playwright-toolkit] ${record.table} did not save (status ${response.status()}). ` +
34
36
  `The backend answers a rejected save with a page, not a redirect: ` +
35
37
  `${(await response.text()).slice(0, 300)}`);
36
38
  }
37
- refuseWhatTypo3Rejected(headers, record.table);
38
39
  const uids = uidsFrom(location, record.table);
39
40
  if (0 === uids.length) {
40
41
  throw new Error(`[typo3-playwright-toolkit] The save of ${record.table} redirected to no uid — ` +
@@ -80,11 +81,11 @@ function refuseWhatTypo3Rejected(headers, table) {
80
81
  return;
81
82
  }
82
83
  const { errors, count } = JSON.parse(raw);
83
- const first = errors[0];
84
- const more = count > 1 ? `\n(and ${count - 1} more, see /typo3/test-api/errors)` : '';
85
- throw new Error(`[typo3-playwright-toolkit] TYPO3 refused a record while saving ${table}.\n` +
86
- ` table: ${first.table}\n` +
87
- ` message: ${first.message}${more}`);
84
+ const listed = errors
85
+ .map((error) => ` table: ${error.table}\n message: ${error.message}`)
86
+ .join('\n');
87
+ const more = count > errors.length ? `\n(and ${count - errors.length} more)` : '';
88
+ throw new Error(`[typo3-playwright-toolkit] TYPO3 refused a record while saving ${table}.\n${listed}${more}`);
88
89
  }
89
90
  /** `data[table][identifier][field]`, the names FormEngine gives its inputs. */
90
91
  function formFields(data) {
@@ -1 +1 @@
1
- {"version":3,"file":"record-edit.js","sourceRoot":"","sources":["../../src/http/record-edit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"record-edit.js","sourceRoot":"","sources":["../../src/http/record-edit.ts"],"names":[],"mappings":"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"}
@@ -21,14 +21,14 @@ if (undefined === stateDir) {
21
21
  }
22
22
  const secret = readSecret(stateDir);
23
23
  if ('' === secret) {
24
- console.error('No API secret found. Run "ddev playwright-prepare" first.');
24
+ console.error('No API secret found. Run "ddev playwright prepare" first.');
25
25
  process.exit(1);
26
26
  }
27
27
  // The link a replay run printed expires, and its run state is gone by then.
28
28
  if (process.argv.includes('--replay')) {
29
29
  const testingURL = replayTestingUrl(stateDir);
30
30
  if (undefined === testingURL) {
31
- console.error('No replay recorded. Run "ddev playwright-replay" first.');
31
+ console.error('No replay recorded. Run "ddev playwright replay" first.');
32
32
  process.exit(1);
33
33
  }
34
34
  console.log(`Logs you into the replayed database, for ${INSPECT_TOKEN_LIFETIME_MS / 60_000} minutes.\n`);
@@ -7,4 +7,6 @@ export interface InspectLink {
7
7
  }
8
8
  export declare function findStateDir(from: string): string | undefined;
9
9
  export declare function inspectLinks(stateDir: string, secret: string, now?: number): InspectLink[];
10
+ /** Every run of a project records the same URL, so the newest one that has it wins. */
11
+ export declare function recordedTestingUrl(stateDir: string): string | undefined;
10
12
  //# sourceMappingURL=links.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/inspect/links.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiB7D;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,WAAW,EAAE,CAqBtG"}
1
+ {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/inspect/links.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiB7D;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,WAAW,EAAE,CAqBtG;AAED,uFAAuF;AACvF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMvE"}
@@ -39,6 +39,14 @@ export function inspectLinks(stateDir, secret, now = Date.now()) {
39
39
  }));
40
40
  });
41
41
  }
42
+ /** Every run of a project records the same URL, so the newest one that has it wins. */
43
+ export function recordedTestingUrl(stateDir) {
44
+ return listRunIds(stateDir)
45
+ .map((runId) => path.join(runsRoot(stateDir), runId))
46
+ .sort((a, b) => runLastActiveMs(b) - runLastActiveMs(a))
47
+ .map((runDir) => readTestingUrl(path.join(runDir, 'meta.json')))
48
+ .find((url) => undefined !== url);
49
+ }
42
50
  function readTestingUrl(metaFile) {
43
51
  try {
44
52
  const meta = JSON.parse(fs.readFileSync(metaFile, 'utf-8'));
@@ -1 +1 @@
1
- {"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/inspect/links.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/inspect/links.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"base-config.d.ts","sourceRoot":"","sources":["../../src/playwright/base-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAKjD,KAAK,UAAU,GAAG,WAAW,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAA;AAC1D,KAAK,aAAa,GAAG,WAAW,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1E,KAAK,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,gBAAgB,CAAC,CAAA;AAElE;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,oBAAoB,EAAE,aAAa,GAAG,gBAAgB,GAAG,KAAK,GAAG,UAAU,CAAC,GAAG;IACtH,GAAG,CAAC,EAAE,YAAY,CAAA;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG;QAAE,GAAG,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC,CAAA;CACxE,CAAA;AAED,wBAAgB,0BAA0B,CACtC,aAAa,EAAE,aAAa,EAC5B,SAAS,GAAE,uBAA4B,GACxC,oBAAoB,CAiCtB"}
1
+ {"version":3,"file":"base-config.d.ts","sourceRoot":"","sources":["../../src/playwright/base-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAKjD,KAAK,UAAU,GAAG,WAAW,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAA;AAC1D,KAAK,aAAa,GAAG,WAAW,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1E,KAAK,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,gBAAgB,CAAC,CAAA;AAElE;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,oBAAoB,EAAE,aAAa,GAAG,gBAAgB,GAAG,KAAK,GAAG,UAAU,CAAC,GAAG;IACtH,GAAG,CAAC,EAAE,YAAY,CAAA;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG;QAAE,GAAG,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC,CAAA;CACxE,CAAA;AAED,wBAAgB,0BAA0B,CACtC,aAAa,EAAE,aAAa,EAC5B,SAAS,GAAE,uBAA4B,GACxC,oBAAoB,CAoCtB"}
@@ -10,6 +10,9 @@ export function defineBasePlaywrightConfig(toolkitConfig, overrides = {}) {
10
10
  fullyParallel: true,
11
11
  forbidOnly: !!process.env.CI,
12
12
  workers: 2,
13
+ // Playwright's own default writes no report, leaving the add-on's report port
14
+ // and `show-report` nothing to serve. Never opened: the container has no browser.
15
+ reporter: [['list'], ['html', { open: 'never' }]],
13
16
  ...rest,
14
17
  globalSetup: GLOBAL_SETUP,
15
18
  globalTeardown: GLOBAL_TEARDOWN,
@@ -1 +1 @@
1
- {"version":3,"file":"base-config.js","sourceRoot":"","sources":["../../src/playwright/base-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA6B,MAAM,kBAAkB,CAAA;AAG1E,MAAM,YAAY,GAAG,iDAAiD,CAAA;AACtE,MAAM,eAAe,GAAG,oDAAoD,CAAA;AAkB5E,MAAM,UAAU,0BAA0B,CACtC,aAA4B,EAC5B,YAAqC,EAAE;IAEvC,wBAAwB,CAAC,SAAS,CAAC,CAAA;IAEnC,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,EAAE,SAAS,IAAI,GAAG,CAAA;IAC5D,MAAM,iBAAiB,GAAG,aAAa,CAAC,UAAU,EAAE,iBAAiB,IAAI,KAAK,CAAA;IAE9E,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,SAAS,CAAA;IAE1C,OAAO,YAAY,CAAC;QAChB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC5B,OAAO,EAAE,CAAC;QACV,GAAG,IAAI;QACP,WAAW,EAAE,YAAY;QACzB,cAAc,EAAE,eAAe;QAC/B,sEAAsE;QACtE,4EAA4E;QAC5E,sDAAsD;QACtD,MAAM,EAAE;YACJ,OAAO,EAAE,IAAI;YACb,GAAG,MAAM;YACT,gBAAgB,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,gBAAgB,EAAE;YAC/E,eAAe,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,eAAe,EAAE;SAChF;QACD,GAAG,EAAE;YACD,iBAAiB,EAAE,IAAI;YACvB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAE,mBAA6B,CAAC,CAAC,CAAE,gBAA0B;YACpF,GAAG,GAAG;YACN,OAAO,EAAE,aAAa,CAAC,UAAU;YACjC,qEAAqE;YACrE,cAAc,EAAE,OAAgB;SACnC;KACJ,CAAC,CAAA;AACN,CAAC;AAED,6EAA6E;AAC7E,SAAS,wBAAwB,CAAC,SAAkC;IAChE,MAAM,MAAM,GAAG,SAAiC,CAAA;IAChD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,CAAC,aAAa,EAAE,gJAAgJ,CAAC,CAAA;IAC3K,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,CAAC,gBAAgB,EAAE,yFAAyF,CAAC,CAAA;IACvH,CAAC;IACD,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;IACrC,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/D,kBAAkB,CAAC,YAAY,KAAK,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IAC7D,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,GAA2B;IAClE,IAAI,GAAG,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,KAAK,UAAU,EAAE,2DAA2D,CAAC,CAAA;IAC3F,CAAC;IACD,IAAI,GAAG,EAAE,cAAc,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,KAAK,iBAAiB,EAAE,uFAAuF,CAAC,CAAA;IAC9H,CAAC;AACL,CAAC;AAED,SAAS,MAAM,CAAC,MAAc,EAAE,GAAW;IACvC,MAAM,IAAI,KAAK,CAAC,wCAAwC,MAAM,0BAA0B,GAAG,EAAE,CAAC,CAAA;AAClG,CAAC"}
1
+ {"version":3,"file":"base-config.js","sourceRoot":"","sources":["../../src/playwright/base-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA6B,MAAM,kBAAkB,CAAA;AAG1E,MAAM,YAAY,GAAG,iDAAiD,CAAA;AACtE,MAAM,eAAe,GAAG,oDAAoD,CAAA;AAkB5E,MAAM,UAAU,0BAA0B,CACtC,aAA4B,EAC5B,YAAqC,EAAE;IAEvC,wBAAwB,CAAC,SAAS,CAAC,CAAA;IAEnC,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,EAAE,SAAS,IAAI,GAAG,CAAA;IAC5D,MAAM,iBAAiB,GAAG,aAAa,CAAC,UAAU,EAAE,iBAAiB,IAAI,KAAK,CAAA;IAE9E,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,SAAS,CAAA;IAE1C,OAAO,YAAY,CAAC;QAChB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC5B,OAAO,EAAE,CAAC;QACV,8EAA8E;QAC9E,kFAAkF;QAClF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACjD,GAAG,IAAI;QACP,WAAW,EAAE,YAAY;QACzB,cAAc,EAAE,eAAe;QAC/B,sEAAsE;QACtE,4EAA4E;QAC5E,sDAAsD;QACtD,MAAM,EAAE;YACJ,OAAO,EAAE,IAAI;YACb,GAAG,MAAM;YACT,gBAAgB,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,gBAAgB,EAAE;YAC/E,eAAe,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,eAAe,EAAE;SAChF;QACD,GAAG,EAAE;YACD,iBAAiB,EAAE,IAAI;YACvB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAE,mBAA6B,CAAC,CAAC,CAAE,gBAA0B;YACpF,GAAG,GAAG;YACN,OAAO,EAAE,aAAa,CAAC,UAAU;YACjC,qEAAqE;YACrE,cAAc,EAAE,OAAgB;SACnC;KACJ,CAAC,CAAA;AACN,CAAC;AAED,6EAA6E;AAC7E,SAAS,wBAAwB,CAAC,SAAkC;IAChE,MAAM,MAAM,GAAG,SAAiC,CAAA;IAChD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,CAAC,aAAa,EAAE,gJAAgJ,CAAC,CAAA;IAC3K,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,CAAC,gBAAgB,EAAE,yFAAyF,CAAC,CAAA;IACvH,CAAC;IACD,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;IACrC,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/D,kBAAkB,CAAC,YAAY,KAAK,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IAC7D,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,GAA2B;IAClE,IAAI,GAAG,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,KAAK,UAAU,EAAE,2DAA2D,CAAC,CAAA;IAC3F,CAAC;IACD,IAAI,GAAG,EAAE,cAAc,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,KAAK,iBAAiB,EAAE,uFAAuF,CAAC,CAAA;IAC9H,CAAC;AACL,CAAC;AAED,SAAS,MAAM,CAAC,MAAc,EAAE,GAAW;IACvC,MAAM,IAAI,KAAK,CAAC,wCAAwC,MAAM,0BAA0B,GAAG,EAAE,CAAC,CAAA;AAClG,CAAC"}
@@ -11,6 +11,8 @@ export interface RunPaths {
11
11
  export declare function runsRoot(stateDir: string): string;
12
12
  export declare function runPaths(config: ToolkitConfig): RunPaths;
13
13
  export declare function ensureRunNamespace(config: ToolkitConfig): RunPaths;
14
+ /** How long after its last sign of life a run still counts as running. */
15
+ export declare const OWNER_ACTIVE_MS = 30000;
14
16
  export declare function prepareRun(config: ToolkitConfig): RunPaths;
15
17
  /**
16
18
  * The random value every test ID of this run is built from. Without it the IDs
@@ -1 +1 @@
1
- {"version":3,"file":"run-namespace.d.ts","sourceRoot":"","sources":["../../src/state/run-namespace.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,MAAM,WAAW,QAAQ;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAaxD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAQlE;AAKD,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAqB1D;AA0CD;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAUrD;AAED,eAAO,MAAM,aAAa,aAAa,CAAA;AAEvC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAMrD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWtD;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAYrD;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKvD"}
1
+ {"version":3,"file":"run-namespace.d.ts","sourceRoot":"","sources":["../../src/state/run-namespace.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,MAAM,WAAW,QAAQ;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAaxD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAQlE;AAED,0EAA0E;AAC1E,eAAO,MAAM,eAAe,QAAS,CAAA;AAErC,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAqB1D;AA0CD;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAUrD;AAED,eAAO,MAAM,aAAa,aAAa,CAAA;AAEvC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAMrD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWtD;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAYrD;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKvD"}
@@ -26,7 +26,7 @@ export function ensureRunNamespace(config) {
26
26
  return paths;
27
27
  }
28
28
  /** How long after its last sign of life a run still counts as running. */
29
- const OWNER_ACTIVE_MS = 30_000;
29
+ export const OWNER_ACTIVE_MS = 30_000;
30
30
  export function prepareRun(config) {
31
31
  const paths = ensureRunNamespace(config);
32
32
  assertNamespaceIsFree(paths);
@@ -1 +1 @@
1
- {"version":3,"file":"run-namespace.js","sourceRoot":"","sources":["../../src/state/run-namespace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-namespace.js","sourceRoot":"","sources":["../../src/state/run-namespace.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.15.0",
3
+ "version": "0.16.0",
4
4
  "description": "Playwright toolkit for TYPO3 end-to-end tests: fixtures, content builders, per-test databases.",
5
5
  "keywords": [
6
6
  "typo3",
@@ -30,6 +30,8 @@
30
30
  "#src/*": "./src/*"
31
31
  },
32
32
  "bin": {
33
+ "typo3-playwright-clean": "./dist/clean/cli.js",
34
+ "typo3-playwright-doctor": "./dist/doctor/cli.js",
33
35
  "typo3-playwright-inspect": "./dist/inspect/cli.js"
34
36
  },
35
37
  "exports": {