@plan2net/typo3-playwright-toolkit 0.22.0 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/README.md +39 -5
  2. package/dist/builders/content-builder.d.ts +4 -0
  3. package/dist/builders/content-builder.d.ts.map +1 -1
  4. package/dist/builders/content-builder.js +10 -1
  5. package/dist/builders/content-builder.js.map +1 -1
  6. package/dist/builders/core-content.d.ts +1 -1
  7. package/dist/builders/core-content.d.ts.map +1 -1
  8. package/dist/builders/core-content.js +1 -1
  9. package/dist/builders/core-content.js.map +1 -1
  10. package/dist/builders/page-builder.d.ts +3 -1
  11. package/dist/builders/page-builder.d.ts.map +1 -1
  12. package/dist/builders/page-builder.js +18 -14
  13. package/dist/builders/page-builder.js.map +1 -1
  14. package/dist/builders/relations.d.ts.map +1 -1
  15. package/dist/builders/relations.js +3 -2
  16. package/dist/builders/relations.js.map +1 -1
  17. package/dist/builders/request-context.d.ts +1 -2
  18. package/dist/builders/request-context.d.ts.map +1 -1
  19. package/dist/builders/request-context.js +3 -3
  20. package/dist/builders/request-context.js.map +1 -1
  21. package/dist/checks/csp.d.ts.map +1 -1
  22. package/dist/checks/csp.js +4 -1
  23. package/dist/checks/csp.js.map +1 -1
  24. package/dist/checks/screenshot.d.ts +5 -2
  25. package/dist/checks/screenshot.d.ts.map +1 -1
  26. package/dist/checks/screenshot.js +35 -40
  27. package/dist/checks/screenshot.js.map +1 -1
  28. package/dist/clean/cli.js +16 -11
  29. package/dist/clean/cli.js.map +1 -1
  30. package/dist/config.d.ts +5 -5
  31. package/dist/config.d.ts.map +1 -1
  32. package/dist/config.js +4 -9
  33. package/dist/config.js.map +1 -1
  34. package/dist/contract.d.ts +2 -0
  35. package/dist/contract.d.ts.map +1 -1
  36. package/dist/contract.js +2 -0
  37. package/dist/contract.js.map +1 -1
  38. package/dist/doctor/reporter.d.ts.map +1 -1
  39. package/dist/doctor/reporter.js +2 -1
  40. package/dist/doctor/reporter.js.map +1 -1
  41. package/dist/global-setup.d.ts +4 -1
  42. package/dist/global-setup.d.ts.map +1 -1
  43. package/dist/global-setup.js +34 -8
  44. package/dist/global-setup.js.map +1 -1
  45. package/dist/global-teardown.d.ts +5 -1
  46. package/dist/global-teardown.d.ts.map +1 -1
  47. package/dist/global-teardown.js +19 -42
  48. package/dist/global-teardown.js.map +1 -1
  49. package/dist/http/cleanup-client.d.ts.map +1 -1
  50. package/dist/http/cleanup-client.js +2 -1
  51. package/dist/http/cleanup-client.js.map +1 -1
  52. package/dist/http/off-site-headers.d.ts +1 -1
  53. package/dist/http/off-site-headers.d.ts.map +1 -1
  54. package/dist/http/off-site-headers.js +3 -3
  55. package/dist/http/off-site-headers.js.map +1 -1
  56. package/dist/http/record-edit.d.ts +1 -0
  57. package/dist/http/record-edit.d.ts.map +1 -1
  58. package/dist/http/record-edit.js +51 -5
  59. package/dist/http/record-edit.js.map +1 -1
  60. package/dist/http/recorded-errors.d.ts.map +1 -1
  61. package/dist/http/recorded-errors.js +2 -1
  62. package/dist/http/recorded-errors.js.map +1 -1
  63. package/dist/http/test-api.d.ts +9 -0
  64. package/dist/http/test-api.d.ts.map +1 -0
  65. package/dist/http/test-api.js +29 -0
  66. package/dist/http/test-api.js.map +1 -0
  67. package/dist/http/toolkit-request.d.ts +2 -1
  68. package/dist/http/toolkit-request.d.ts.map +1 -1
  69. package/dist/http/toolkit-request.js +14 -4
  70. package/dist/http/toolkit-request.js.map +1 -1
  71. package/dist/index.d.ts +2 -1
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +1 -0
  74. package/dist/index.js.map +1 -1
  75. package/dist/inspect/cli.js +4 -4
  76. package/dist/inspect/cli.js.map +1 -1
  77. package/dist/inspect/links.d.ts +0 -2
  78. package/dist/inspect/links.d.ts.map +1 -1
  79. package/dist/inspect/links.js +25 -17
  80. package/dist/inspect/links.js.map +1 -1
  81. package/dist/inspect/replay-target.d.ts +3 -2
  82. package/dist/inspect/replay-target.d.ts.map +1 -1
  83. package/dist/inspect/replay-target.js +5 -12
  84. package/dist/inspect/replay-target.js.map +1 -1
  85. package/dist/inspect/token.d.ts +2 -1
  86. package/dist/inspect/token.d.ts.map +1 -1
  87. package/dist/inspect/token.js +3 -4
  88. package/dist/inspect/token.js.map +1 -1
  89. package/dist/scenario.d.ts +10 -4
  90. package/dist/scenario.d.ts.map +1 -1
  91. package/dist/scenario.js +60 -44
  92. package/dist/scenario.js.map +1 -1
  93. package/dist/setup-cache/client.d.ts.map +1 -1
  94. package/dist/setup-cache/client.js +2 -1
  95. package/dist/setup-cache/client.js.map +1 -1
  96. package/dist/sites/probe.d.ts +8 -0
  97. package/dist/sites/probe.d.ts.map +1 -0
  98. package/dist/sites/probe.js +50 -0
  99. package/dist/sites/probe.js.map +1 -0
  100. package/dist/sites/registry.d.ts +31 -0
  101. package/dist/sites/registry.d.ts.map +1 -0
  102. package/dist/sites/registry.js +97 -0
  103. package/dist/sites/registry.js.map +1 -0
  104. package/dist/state/attempt-registry.d.ts +5 -0
  105. package/dist/state/attempt-registry.d.ts.map +1 -1
  106. package/dist/state/attempt-registry.js +3 -0
  107. package/dist/state/attempt-registry.js.map +1 -1
  108. package/dist/state/run-namespace.d.ts.map +1 -1
  109. package/dist/state/run-namespace.js +3 -0
  110. package/dist/state/run-namespace.js.map +1 -1
  111. package/dist/state/testing-url.d.ts +4 -0
  112. package/dist/state/testing-url.d.ts.map +1 -0
  113. package/dist/state/testing-url.js +14 -0
  114. package/dist/state/testing-url.js.map +1 -0
  115. package/dist/types/playwright-extensions.d.ts +2 -0
  116. package/dist/types/playwright-extensions.d.ts.map +1 -1
  117. package/package.json +2 -2
package/dist/scenario.js CHANGED
@@ -1,4 +1,4 @@
1
- import { test as base } from '@playwright/test';
1
+ import { test as base, } from '@playwright/test';
2
2
  import * as path from 'path';
3
3
  import { toolkitHeaders } from './contract.js';
4
4
  import { setupCacheUse } from './setup-cache/use.js';
@@ -6,7 +6,8 @@ import { getToolkitConfig } from './config.js';
6
6
  import { ensureState, setupFixtureTimeout } from './state/ensure-state.js';
7
7
  import { applyScenarioOutcome, recordTestFailure } from './state/scenario-outcome.js';
8
8
  import { sanitizeScenarioKey } from './state/run-namespace.js';
9
- import { DEFAULT_BACKEND_PATH, resolveRequestContext, } from './builders/request-context.js';
9
+ import { DEFAULT_BACKEND_PATH, testApiUrl } from './http/test-api.js';
10
+ import { resolveRequestContext, } from './builders/request-context.js';
10
11
  import { recordSaver } from './http/record-edit.js';
11
12
  import { ContentBuilder, saveBatch } from './builders/content-builder.js';
12
13
  import { PageBuilder } from './builders/page-builder.js';
@@ -14,6 +15,7 @@ import { applyToolkitHeaders } from './http/off-site-headers.js';
14
15
  import { prepareScenarioContext } from './http/prepare-context.js';
15
16
  import { toolkitRequest } from './http/toolkit-request.js';
16
17
  import { runAccessibilityScan, shouldScanAutomatically } from './checks/accessibility.js';
18
+ import { readSitesFile, resolveScenarioSite, siteCacheKey } from './sites/registry.js';
17
19
  import { reportRecordedErrors, reportSetupFailure } from './report/recorded-error-report.js';
18
20
  /** A failed setup throws out of ensureState, so it never reaches the fixture's end. */
19
21
  export async function resolveSetupOutcome(config, scenarioKey, testInfo, run, report = reportSetupFailure) {
@@ -44,17 +46,18 @@ export async function createScenarioFolder(page, builderContext, name) {
44
46
  // Or TYPO3 derives one from the title and the scenario's own page,
45
47
  // wanting "/news" too, has to take "/news-1".
46
48
  .withField('slug', `/replay-${name}`)
47
- .atParentId(FIXTURE_ROOT_ID)
49
+ .atParentId(builderContext.rootPageId ?? FIXTURE_ROOT_ID)
48
50
  .create();
49
51
  return { id: folder.id, ownPages: new Set() };
50
52
  }
51
- export async function buildScenarioContext(page, config, session, testId, name) {
53
+ export async function buildScenarioContext(page, config, session, testId, name, site) {
52
54
  const context = {
53
55
  testId,
54
56
  baseUrl: config.testingURL,
55
57
  backendPath: session.backendPath,
56
58
  routeToken: session.routeToken,
57
59
  usedSlugs: new Set(),
60
+ rootPageId: site?.rootPageId,
58
61
  };
59
62
  if (!config.replay) {
60
63
  return context;
@@ -62,9 +65,9 @@ export async function buildScenarioContext(page, config, session, testId, name)
62
65
  // Built from a context with no folder, or it would land inside itself.
63
66
  return { ...context, replayFolder: await createScenarioFolder(page, context, name) };
64
67
  }
65
- export async function openAuthenticatedPage(browser, config, testId, name = '') {
68
+ export async function openAuthenticatedPage(browser, config, testId, name = '', site, projectOptions = {}) {
66
69
  const headers = toolkitHeaders(config, testId);
67
- const context = await browser.newContext({ ignoreHTTPSErrors: true });
70
+ const context = await browser.newContext({ ...projectOptions, baseURL: site?.base, serviceWorkers: 'block' });
68
71
  // The close handle is only returned on success, so a failure closes its own context.
69
72
  try {
70
73
  await applyToolkitHeaders(context, config, testId);
@@ -72,7 +75,7 @@ export async function openAuthenticatedPage(browser, config, testId, name = '')
72
75
  const page = await context.newPage();
73
76
  page.testId = testId;
74
77
  // Playwright would re-send the secret to whatever the redirect names.
75
- const response = await page.request.post(`${config.testingURL}/typo3/test-api/session`, {
78
+ const response = await page.request.post(testApiUrl(config, 'session'), {
76
79
  headers,
77
80
  data: { name },
78
81
  maxRedirects: 0,
@@ -129,46 +132,54 @@ export function claimScenarioFile(file, owner) {
129
132
  * One test file is one scenario: the first test that needs state runs the setup,
130
133
  * the rest wait for it or are skipped if it failed.
131
134
  */
132
- export function defineScenario(setup) {
135
+ export function defineScenario(setup, options = {}) {
133
136
  const owner = Symbol('scenario');
134
137
  return base.extend({
135
- resolvedScenario: [async ({ browser }, use, testInfo) => {
138
+ resolvedScenario: [async ({ browser, ignoreHTTPSErrors, httpCredentials, proxy }, use, testInfo) => {
136
139
  claimScenarioFile(testInfo.file, owner);
137
140
  const config = getToolkitConfig();
138
141
  const key = sanitizeScenarioKey(testInfo.file);
139
142
  const name = scenarioName(testInfo.file);
140
- const outcome = await resolveSetupOutcome(config, key, testInfo, () => ensureState(config, {
141
- key,
142
- name,
143
- triggerId: testInfo.testId,
144
- setupCache: setupCacheUse(config, suiteRootOf(testInfo), key),
145
- setup: async ({ testId, attempt, signal }) => {
146
- if (!setup) {
147
- return {};
148
- }
149
- const label = attempt > 1 ? `${name} #${attempt}` : name;
150
- const session = await openAuthenticatedPage(browser, config, testId, label);
151
- try {
152
- const builderContext = await buildScenarioContext(session.page, config, session, testId, name);
153
- return await setup({
154
- testId,
155
- attempt,
156
- signal,
157
- page: session.page,
158
- request: toolkitRequest(session.page.request, config, testId),
159
- builders: {
160
- page: () => new PageBuilder(session.page, builderContext),
161
- content: () => new ContentBuilder(session.page, builderContext),
162
- batch: (...queued) => saveBatch(session.page, builderContext, queued),
163
- },
164
- saveRecord: recordSaver(session.page.request, resolveRequestContext(session.page, builderContext)),
143
+ const { outcome, site } = await resolveSetupOutcome(config, key, testInfo, async () => {
144
+ const site = resolveScenarioSite(config, readSitesFile(config), options.site);
145
+ const outcome = await ensureState(config, {
146
+ key,
147
+ name,
148
+ triggerId: testInfo.testId,
149
+ setupCache: setupCacheUse(config, suiteRootOf(testInfo), siteCacheKey(key, site)),
150
+ setup: async ({ testId, attempt, signal }) => {
151
+ if (!setup) {
152
+ return {};
153
+ }
154
+ const label = attempt > 1 ? `${name} #${attempt}` : name;
155
+ const session = await openAuthenticatedPage(browser, config, testId, label, site, {
156
+ ignoreHTTPSErrors,
157
+ httpCredentials,
158
+ proxy,
165
159
  });
166
- }
167
- finally {
168
- await session.close();
169
- }
170
- },
171
- }));
160
+ try {
161
+ const builderContext = await buildScenarioContext(session.page, config, session, testId, name, site);
162
+ return await setup({
163
+ testId,
164
+ attempt,
165
+ signal,
166
+ page: session.page,
167
+ request: toolkitRequest(session.page.request, config, testId, site),
168
+ builders: {
169
+ page: () => new PageBuilder(session.page, builderContext),
170
+ content: () => new ContentBuilder(session.page, builderContext),
171
+ batch: (...queued) => saveBatch(session.page, builderContext, queued),
172
+ },
173
+ saveRecord: recordSaver(session.page.request, resolveRequestContext(session.page, builderContext)),
174
+ });
175
+ }
176
+ finally {
177
+ await session.close();
178
+ }
179
+ },
180
+ });
181
+ return { outcome, site };
182
+ });
172
183
  const data = applyScenarioOutcome(outcome, (reason) => testInfo.skip(true, reason), config.replay);
173
184
  if (outcome.status === 'ready') {
174
185
  // The fixture's own timeout keeps this out of the test's duration,
@@ -178,7 +189,7 @@ export function defineScenario(setup) {
178
189
  description: setupAnnotation(outcome.setupMs, outcome.setupRan),
179
190
  });
180
191
  }
181
- await use({ data, testId: outcome.status === 'ready' ? outcome.testId : '' });
192
+ await use({ data, testId: outcome.status === 'ready' ? outcome.testId : '', site });
182
193
  if (testInfo.status !== testInfo.expectedStatus) {
183
194
  recordTestFailure(config, key, testInfo.error?.message ?? `test ${testInfo.status}`);
184
195
  await reportRecordedErrors(config, key, outcome.status === 'ready' ? outcome.testId : '', testInfo);
@@ -190,12 +201,17 @@ export function defineScenario(setup) {
190
201
  testId: async ({ resolvedScenario }, use) => {
191
202
  await use(resolvedScenario.testId);
192
203
  },
193
- context: async ({ context, testId }, use) => {
204
+ baseURL: async ({ resolvedScenario }, use) => {
205
+ await use(resolvedScenario.site.base);
206
+ },
207
+ context: async ({ context, testId, resolvedScenario }, use) => {
208
+ ;
209
+ context.site = resolvedScenario.site;
194
210
  await prepareScenarioContext(context, getToolkitConfig(), testId);
195
211
  await use(context);
196
212
  },
197
- request: async ({ request, testId }, use) => {
198
- await use(toolkitRequest(request, getToolkitConfig(), testId));
213
+ request: async ({ request, testId, resolvedScenario }, use) => {
214
+ await use(toolkitRequest(request, getToolkitConfig(), testId, resolvedScenario.site));
199
215
  },
200
216
  automaticAccessibilityScan: [
201
217
  async ({ page }, use, testInfo) => {
@@ -1 +1 @@
1
- {"version":3,"file":"scenario.js","sourceRoot":"","sources":["../src/scenario.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scenario.js","sourceRoot":"","sources":["../src/scenario.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,IAAI,IAAI,IAAI,GAMf,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAsB,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC1E,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,EACH,qBAAqB,GAGxB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,WAAW,EAAuC,MAAM,uBAAuB,CAAA;AACxF,OAAO,EAAE,cAAc,EAAE,SAAS,EAAsB,MAAM,+BAA+B,CAAA;AAC7F,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;AACzF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,YAAY,EAAqB,MAAM,qBAAqB,CAAA;AACzG,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAS5F,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,MAAqB,EACrB,WAAmB,EACnB,QAAkB,EAClB,GAAqB,EACrB,SAA+B,kBAAkB;IAEjD,IAAI,CAAC;QACD,OAAO,MAAM,GAAG,EAAE,CAAA;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,MAAM,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;IAC7D,CAAC;AACL,CAAC;AAuCD;;;;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,cAAc,CAAC,UAAU,IAAI,eAAe,CAAC;SACxD,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,EACZ,IAAmB;IAEnB,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;QACpB,UAAU,EAAE,IAAI,EAAE,UAAU;KAC/B,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;AAID,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACvC,OAAgB,EAChB,MAAqB,EACrB,MAAc,EACd,IAAI,GAAG,EAAE,EACT,IAAmB,EACnB,iBAAwC,EAAE;IAE1C,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAA;IAE7G,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,sEAAsE;QACtE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;YACpE,OAAO;YACP,IAAI,EAAE,EAAE,IAAI,EAAE;YACd,YAAY,EAAE,CAAC;SAClB,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,UAAU,WAAW,CAAC,QAAkB;IAC1C,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAA;IAE7C,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AACzF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,QAAiB;IAC9D,MAAM,OAAO,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAE3C,OAAO,QAAQ,CAAC,CAAC,CAAC,YAAY,OAAO,GAAG,CAAC,CAAC,CAAC,oBAAoB,OAAO,GAAG,CAAA;AAC7E,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,CAC1B,KAAyC,EACzC,UAA2B,EAAE;IAE7B,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;IAEhC,OAAO,IAAI,CAAC,MAAM,CAEhB;QACE,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,QAAkB,EAAE,EAAE;gBACzG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;gBAEvC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAA;gBACjC,MAAM,GAAG,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;gBAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;gBAExC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE;oBAClF,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;oBAC7E,MAAM,OAAO,GAAG,MAAM,WAAW,CAAI,MAAM,EAAE;wBAC7C,GAAG;wBACH,IAAI;wBACJ,SAAS,EAAE,QAAQ,CAAC,MAAM;wBAC1B,UAAU,EAAE,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;wBACjF,KAAK,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;4BACzC,IAAI,CAAC,KAAK,EAAE,CAAC;gCACT,OAAO,EAAO,CAAA;4BAClB,CAAC;4BAED,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;4BACxD,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;gCAC9E,iBAAiB;gCACjB,eAAe;gCACf,KAAK;6BACR,CAAC,CAAA;4BACF,IAAI,CAAC;gCACD,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAC7C,OAAO,CAAC,IAAI,EACZ,MAAM,EACN,OAAO,EACP,MAAM,EACN,IAAI,EACJ,IAAI,CACP,CAAA;gCAED,OAAO,MAAM,KAAK,CAAC;oCACf,MAAM;oCACN,OAAO;oCACP,MAAM;oCACN,IAAI,EAAE,OAAO,CAAC,IAAI;oCAClB,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;oCACnE,QAAQ,EAAE;wCACN,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC;wCACzD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC;wCAC/D,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC;qCACxE;oCACD,UAAU,EAAE,WAAW,CACnB,OAAO,CAAC,IAAI,CAAC,OAAO,EACpB,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CACtD;iCACJ,CAAC,CAAA;4BACN,CAAC;oCAAS,CAAC;gCACP,MAAM,OAAO,CAAC,KAAK,EAAE,CAAA;4BACzB,CAAC;wBACL,CAAC;qBACA,CAAC,CAAA;oBAEF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;gBAC5B,CAAC,CAAC,CAAA;gBAEF,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;gBAED,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;oBAC7B,mEAAmE;oBACnE,uCAAuC;oBACvC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;wBACtB,IAAI,EAAE,OAAO;wBACb,WAAW,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC;qBAClE,CAAC,CAAA;gBACN,CAAC;gBAED,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;gBAEnF,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,cAAc,EAAE,CAAC;oBAC9C,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;oBACpF,MAAM,oBAAoB,CACtB,MAAM,EACN,GAAG,EACH,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAChD,QAAQ,CACX,CAAA;gBACL,CAAC;YACL,CAAC,EAAE,EAAE,OAAO,EAAE,mBAAmB,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC;QAExD,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,gBAAgB,EAAE,EAAE,GAAG,EAAE,EAAE;YACzC,MAAM,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzC,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE,EAAE;YAC1D,CAAC;YAAC,OAA6B,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAA;YAC5D,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,gBAAgB,EAAE,EAAE,GAAG,EAAE,EAAE;YAC1D,MAAM,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAA;QACzF,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 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/setup-cache/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAA;AAE3E,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,iBAAiB,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IAC5D,KAAK,CACD,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,aAAa,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,iBAAiB,CAAC,CAAA;CAChC;AAED,wBAAgB,cAAc,CAC1B,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/D,gBAAgB,CA6ClB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/setup-cache/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAIjD,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAA;AAE3E,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,iBAAiB,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IAC5D,KAAK,CACD,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,aAAa,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,iBAAiB,CAAC,CAAA;CAChC;AAED,wBAAgB,cAAc,CAC1B,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/D,gBAAgB,CA6ClB"}
@@ -1,9 +1,10 @@
1
1
  import { SECRET_HEADER, resolveApiSecret } from '../http/api-secret.js';
2
+ import { testApiUrl } from '../http/test-api.js';
2
3
  export function httpSetupCache(config, options = {}) {
3
4
  const doFetch = options.fetchImpl ?? fetch;
4
5
  const timeoutMs = options.timeoutMs ?? (Number(process.env.PW_CLEANUP_TIMEOUT_MS) || 30000);
5
6
  async function post(operation, payload) {
6
- const url = `${config.testingURL}/typo3/test-api/setup-cache/${operation}`;
7
+ const url = testApiUrl(config, `setup-cache/${operation}`);
7
8
  const response = await doFetch(url, {
8
9
  method: 'POST',
9
10
  headers: {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/setup-cache/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAqBvE,MAAM,UAAU,cAAc,CAC1B,MAAqB,EACrB,UAA4D,EAAE;IAE9D,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAA;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,CAAA;IAE3F,KAAK,UAAU,IAAI,CAAC,SAAiB,EAAE,OAAgC;QACnE,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,UAAU,+BAA+B,SAAS,EAAE,CAAA;QAE1E,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC;aAC5C;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;YACtC,QAAQ,EAAE,QAAQ;SACrB,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,aAAa,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;QACzD,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA4B,CAAA;IAC7D,CAAC;IAED,OAAO;QACH,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,GAAW;YACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAErD,OAAO;gBACH,OAAO,EAAE,MAAM,CAAC,OAA4B;gBAC5C,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAA4B;gBACtD,MAAM,EAAE,QAAQ,KAAK,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;aACjE,CAAA;QACL,CAAC;QAED,KAAK,CAAC,KAAK,CACP,MAAc,EACd,GAAW,EACX,KAA8B,EAC9B,aAAa,GAAG,KAAK;YAErB,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,OAA4B,CAAA;QACpG,CAAC;KACJ,CAAA;AACL,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/setup-cache/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAqBhD,MAAM,UAAU,cAAc,CAC1B,MAAqB,EACrB,UAA4D,EAAE;IAE9D,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAA;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,CAAA;IAE3F,KAAK,UAAU,IAAI,CAAC,SAAiB,EAAE,OAAgC;QACnE,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE,eAAe,SAAS,EAAE,CAAC,CAAA;QAE1D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC;aAC5C;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;YACtC,QAAQ,EAAE,QAAQ;SACrB,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,aAAa,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;QACzD,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA4B,CAAA;IAC7D,CAAC;IAED,OAAO;QACH,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,GAAW;YACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAErD,OAAO;gBACH,OAAO,EAAE,MAAM,CAAC,OAA4B;gBAC5C,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAA4B;gBACtD,MAAM,EAAE,QAAQ,KAAK,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;aACjE,CAAA;QACL,CAAC;QAED,KAAK,CAAC,KAAK,CACP,MAAc,EACd,GAAW,EACX,KAA8B,EAC9B,aAAa,GAAG,KAAK;YAErB,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,OAA4B,CAAA;QACpG,CAAC;KACJ,CAAA;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { DiscoveredSite, SiteEntry } from './registry.js';
2
+ export declare function probeSignature(secret: string, testId: string): string;
3
+ export declare function probeSite(site: DiscoveredSite, options: {
4
+ testId: string;
5
+ secret: string;
6
+ fetchImpl?: typeof fetch;
7
+ }): Promise<SiteEntry>;
8
+ //# sourceMappingURL=probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe.d.ts","sourceRoot":"","sources":["../../src/sites/probe.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAI9D,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAsB,SAAS,CAC3B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAE,GACtE,OAAO,CAAC,SAAS,CAAC,CAqCpB"}
@@ -0,0 +1,50 @@
1
+ import { createHmac } from 'node:crypto';
2
+ import { PROBE_HEADER, TEST_ID_HEADER } from '../contract.js';
3
+ const PURPOSE = 'probe';
4
+ export function probeSignature(secret, testId) {
5
+ return createHmac('sha256', secret).update(`${PURPOSE}:${testId}`).digest('hex');
6
+ }
7
+ export async function probeSite(site, options) {
8
+ const unavailable = (reason) => ({ ...site, available: false, reason });
9
+ let response;
10
+ try {
11
+ response = await (options.fetchImpl ?? fetch)(site.base, {
12
+ method: 'GET',
13
+ redirect: 'manual',
14
+ signal: AbortSignal.timeout(Number(process.env.PW_HEALTH_TIMEOUT_MS) || 5000),
15
+ headers: {
16
+ [TEST_ID_HEADER]: options.testId,
17
+ [PROBE_HEADER]: probeSignature(options.secret, options.testId),
18
+ },
19
+ });
20
+ }
21
+ catch (error) {
22
+ return unavailable(error instanceof Error ? error.message : String(error));
23
+ }
24
+ if (response.status >= 300 && response.status < 400) {
25
+ return unavailable(`it redirects to ${response.headers.get('location') ?? '(no location)'}`);
26
+ }
27
+ if (response.status >= 500) {
28
+ return unavailable(`it answered ${response.status}`);
29
+ }
30
+ const answer = await readAnswer(response);
31
+ if (undefined === answer || answer.testId !== options.testId) {
32
+ return unavailable('no toolkit answered: the host is not in the Testing context, or it is another installation');
33
+ }
34
+ if ('string' !== typeof answer.database) {
35
+ return unavailable('another installation answered: the test database is not selected there');
36
+ }
37
+ if (answer.site !== site.identifier) {
38
+ return unavailable(`this host serves the site "${String(answer.site)}"`);
39
+ }
40
+ return { ...site, available: true };
41
+ }
42
+ async function readAnswer(response) {
43
+ try {
44
+ return (await response.json());
45
+ }
46
+ catch {
47
+ return undefined;
48
+ }
49
+ }
50
+ //# sourceMappingURL=probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/sites/probe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAG7D,MAAM,OAAO,GAAG,OAAO,CAAA;AAEvB,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,MAAc;IACzD,OAAO,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACpF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC3B,IAAoB,EACpB,OAAqE;IAErE,MAAM,WAAW,GAAG,CAAC,MAAc,EAAa,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IAE1F,IAAI,QAAkB,CAAA;IACtB,IAAI,CAAC;QACD,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;YACrD,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC;YAC7E,OAAO,EAAE;gBACL,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM;gBAChC,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;aACjE;SACJ,CAAC,CAAA;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,WAAW,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9E,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QAClD,OAAO,WAAW,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,eAAe,EAAE,CAAC,CAAA;IAChG,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QACzB,OAAO,WAAW,CAAC,eAAe,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IACxD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAA;IACzC,IAAI,SAAS,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QAC3D,OAAO,WAAW,CAAC,4FAA4F,CAAC,CAAA;IACpH,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,OAAO,WAAW,CAAC,wEAAwE,CAAC,CAAA;IAChG,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO,WAAW,CAAC,8BAA8B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5E,CAAC;IAED,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;AACvC,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,QAAkB;IACxC,IAAI,CAAC;QACD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA4B,CAAA;IAC7D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAA;IACpB,CAAC;AACL,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { type ToolkitConfig } from '../config.js';
2
+ export interface DiscoveredSite {
3
+ identifier: string;
4
+ rootPageId: number;
5
+ base: string;
6
+ }
7
+ export type SiteEntry = DiscoveredSite & ({
8
+ available: true;
9
+ } | {
10
+ available: false;
11
+ reason: string;
12
+ });
13
+ export type SitesFile = {
14
+ sites: SiteEntry[];
15
+ } | {
16
+ skipped: string;
17
+ };
18
+ export interface ScenarioSite {
19
+ identifier: string;
20
+ rootPageId: number;
21
+ base: string;
22
+ origin: string;
23
+ }
24
+ export declare function parseDiscoveredSites(value: unknown, testingURL: string): DiscoveredSite[];
25
+ export declare function writeSitesFile(config: ToolkitConfig, file: SitesFile): void;
26
+ export declare function readSitesFile(config: ToolkitConfig): SitesFile | undefined;
27
+ export declare function resolveScenarioSite(config: ToolkitConfig, file: SitesFile | undefined, requested?: string): ScenarioSite;
28
+ export declare function testingOrigins(config: ToolkitConfig, file?: SitesFile | undefined): Set<string>;
29
+ export declare function siteURL(identifier: string, target?: string): string;
30
+ export declare function siteCacheKey(scenarioKey: string, site: ScenarioSite): string;
31
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/sites/registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAGnE,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,CAAC;IAAE,SAAS,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAErG,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpE,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACjB;AAKD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE,CAazF;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAE3E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,CAM1E;AAMD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAgCxH;AA+BD,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,GAAE,SAAS,GAAG,SAAiC,GAAG,GAAG,CAAC,MAAM,CAAC,CAWtH;AAED,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,MAAM,CAI/D;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,CAE5E"}
@@ -0,0 +1,97 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { getToolkitConfig } from '../config.js';
4
+ import { runPaths } from '../state/run-namespace.js';
5
+ const SITES_FILE = 'sites.json';
6
+ const FALLBACK_ROOT_PAGE_ID = 1;
7
+ export function parseDiscoveredSites(value, testingURL) {
8
+ if (!Array.isArray(value)) {
9
+ return [];
10
+ }
11
+ return value.flatMap((entry) => {
12
+ const { identifier, rootPageId, base } = (entry ?? {});
13
+ if ('string' !== typeof identifier || 'number' !== typeof rootPageId || 'string' !== typeof base) {
14
+ return [];
15
+ }
16
+ return [{ identifier, rootPageId, base: new URL(base, `${testingURL}/`).toString() }];
17
+ });
18
+ }
19
+ export function writeSitesFile(config, file) {
20
+ fs.writeFileSync(sitesFile(config), JSON.stringify(file, null, 2));
21
+ }
22
+ export function readSitesFile(config) {
23
+ try {
24
+ return JSON.parse(fs.readFileSync(sitesFile(config), 'utf8'));
25
+ }
26
+ catch {
27
+ return undefined;
28
+ }
29
+ }
30
+ function sitesFile(config) {
31
+ return path.join(runPaths(config).runDir, SITES_FILE);
32
+ }
33
+ export function resolveScenarioSite(config, file, requested) {
34
+ if (undefined === file || 'skipped' in file) {
35
+ if (undefined === requested) {
36
+ return fallbackSite(config);
37
+ }
38
+ const why = undefined === file
39
+ ? 'this run has no site list, so its global setup did not run'
40
+ : `site discovery was skipped (${file.skipped})`;
41
+ throw new Error(`[typo3-playwright-toolkit] This scenario names the site "${requested}", but ${why}.`);
42
+ }
43
+ if (undefined === requested && 0 === file.sites.length) {
44
+ return fallbackSite(config);
45
+ }
46
+ const site = undefined === requested
47
+ ? defaultSite(config, file.sites)
48
+ : file.sites.find((entry) => entry.identifier === requested);
49
+ if (undefined === site) {
50
+ throw new Error(`[typo3-playwright-toolkit] This installation has no site "${requested}". Its sites: ${names(file.sites)}.`);
51
+ }
52
+ if (!site.available) {
53
+ throw new Error(`[typo3-playwright-toolkit] The site "${site.identifier}" (${site.base}) is unavailable: ${site.reason}.`);
54
+ }
55
+ return { identifier: site.identifier, rootPageId: site.rootPageId, base: site.base, origin: new URL(site.base).origin };
56
+ }
57
+ function fallbackSite(config) {
58
+ return {
59
+ identifier: '',
60
+ rootPageId: FALLBACK_ROOT_PAGE_ID,
61
+ base: `${config.testingURL}/`,
62
+ origin: new URL(config.testingURL).origin,
63
+ };
64
+ }
65
+ function defaultSite(config, sites) {
66
+ if (1 === sites.length) {
67
+ return sites[0];
68
+ }
69
+ const host = new URL(config.testingURL).host;
70
+ const matching = sites.filter((entry) => new URL(entry.base).host === host);
71
+ if (1 !== matching.length) {
72
+ throw new Error(`[typo3-playwright-toolkit] This installation has several sites. Name one with \`site\`: ${names(sites)}.`);
73
+ }
74
+ return matching[0];
75
+ }
76
+ function names(sites) {
77
+ return sites.map((site) => site.identifier).join(', ');
78
+ }
79
+ export function testingOrigins(config, file = readSitesFile(config)) {
80
+ const origins = new Set([new URL(config.testingURL).origin]);
81
+ if (undefined !== file && 'sites' in file) {
82
+ for (const site of file.sites) {
83
+ if (site.available) {
84
+ origins.add(new URL(site.base).origin);
85
+ }
86
+ }
87
+ }
88
+ return origins;
89
+ }
90
+ export function siteURL(identifier, target = '') {
91
+ const config = getToolkitConfig();
92
+ return new URL(target.replace(/^\/+/, ''), resolveScenarioSite(config, readSitesFile(config), identifier).base).toString();
93
+ }
94
+ export function siteCacheKey(scenarioKey, site) {
95
+ return '' === site.identifier ? scenarioKey : `${scenarioKey}@${site.base}#${site.rootPageId}`;
96
+ }
97
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/sites/registry.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,10 @@ export interface AttemptOutcomeRecord {
17
17
  durationMs: number;
18
18
  endedAt: string;
19
19
  }
20
+ export interface DroppedRecord {
21
+ type: 'dropped';
22
+ testId: string;
23
+ }
20
24
  export declare function registerAttempt(config: ToolkitConfig, input: {
21
25
  key: string;
22
26
  name?: string;
@@ -30,6 +34,7 @@ export declare function recordAttemptOutcome(config: ToolkitConfig, input: {
30
34
  outcome: AttemptOutcome;
31
35
  durationMs: number;
32
36
  }): void;
37
+ export declare function recordDropped(config: ToolkitConfig, testId: string): void;
33
38
  export declare function readAttemptsFrom(attemptsFile: string): AttemptRecord[];
34
39
  export declare function readAttempts(config: ToolkitConfig): AttemptRecord[];
35
40
  export declare function readRegisteredTestIds(config: ToolkitConfig): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"attempt-registry.d.ts","sourceRoot":"","sources":["../../src/state/attempt-registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAA;AAEjE,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,SAAS,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAClB;AAQD,wBAAgB,eAAe,CAC3B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtF,IAAI,CAYN;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE7F;AAED,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACvE,IAAI,CAUN;AAWD,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,EAAE,CAqBtE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,EAAE,CAEnE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAErE"}
1
+ {"version":3,"file":"attempt-registry.d.ts","sourceRoot":"","sources":["../../src/state/attempt-registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAA;AAEjE,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,SAAS,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACjB;AAQD,wBAAgB,eAAe,CAC3B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtF,IAAI,CAYN;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE7F;AAED,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACvE,IAAI,CAUN;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAEzE;AAWD,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,EAAE,CAqBtE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,EAAE,CAEnE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAErE"}
@@ -31,6 +31,9 @@ export function recordAttemptOutcome(config, input) {
31
31
  endedAt: new Date().toISOString(),
32
32
  });
33
33
  }
34
+ export function recordDropped(config, testId) {
35
+ appendLine(ensureRunNamespace(config), { type: 'dropped', testId });
36
+ }
34
37
  function isAttemptRecord(value) {
35
38
  if (typeof value !== 'object' || value === null) {
36
39
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"attempt-registry.js","sourceRoot":"","sources":["../../src/state/attempt-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attempt-registry.js","sourceRoot":"","sources":["../../src/state/attempt-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AAExB,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,gBAAgB,EAAiB,MAAM,oBAAoB,CAAA;AA4BlG,8EAA8E;AAC9E,SAAS,UAAU,CAAC,KAAe,EAAE,MAA4D;IAC7F,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;IAClF,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,eAAe,CAC3B,MAAqB,EACrB,KAAqF;IAErF,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAExC,UAAU,CAAC,KAAK,EAAE;QACd,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG;QAC7B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC,CAAA;AACN,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAqB,EAAE,GAAW,EAAE,MAAc;IACnF,eAAe,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AAChG,CAAC;AAED,MAAM,UAAU,oBAAoB,CAChC,MAAqB,EACrB,KAAsE;IAEtE,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAExC,UAAU,CAAC,KAAK,EAAE;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC,CAAA;AACN,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAqB,EAAE,MAAc;IAC/D,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA;AACvE,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAA;IAChB,CAAC;IACD,MAAM,MAAM,GAAG,KAA+B,CAAA;IAE9C,OAAO,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAA;AAC3G,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,YAAoB;IACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAA;IACb,CAAC;IAED,MAAM,OAAO,GAAoB,EAAE,CAAA;IACnC,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACrB,SAAQ;QACZ,CAAC;QACD,IAAI,CAAC;YACD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACxC,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACxB,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,gDAAgD;QACpD,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAqB;IAC9C,OAAO,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAA;AAC1D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAqB;IACvD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC5E,CAAC"}
@@ -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;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"}
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;AAIjD,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,CAuB1D;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"}
@@ -2,6 +2,7 @@ import { createHash, randomBytes } from 'node:crypto';
2
2
  import * as fs from 'fs';
3
3
  import * as path from 'path';
4
4
  import { resolveRunId, RUN_ID_PATTERN } from './run-id.js';
5
+ import { recordTestingUrl } from './testing-url.js';
5
6
  export function runsRoot(stateDir) {
6
7
  return path.join(stateDir, 'runs');
7
8
  }
@@ -30,12 +31,14 @@ export const OWNER_ACTIVE_MS = 30_000;
30
31
  export function prepareRun(config) {
31
32
  const paths = ensureRunNamespace(config);
32
33
  assertNamespaceIsFree(paths);
34
+ recordTestingUrl(config.paths.stateDir, config);
33
35
  if (!fs.existsSync(paths.metaFile)) {
34
36
  fs.writeFileSync(paths.metaFile, JSON.stringify({
35
37
  runId: paths.runId,
36
38
  startedAt: new Date().toISOString(),
37
39
  ownerPid: process.pid,
38
40
  testingURL: config.testingURL,
41
+ backendPath: config.backendPath,
39
42
  }, null, 2));
40
43
  }
41
44
  return 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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"}
@@ -0,0 +1,4 @@
1
+ import { type TestApiTarget } from '../http/test-api.js';
2
+ export declare function recordTestingUrl(stateDir: string, target: TestApiTarget): void;
3
+ export declare function recordedTestApiTarget(stateDir: string): TestApiTarget | undefined;
4
+ //# sourceMappingURL=testing-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing-url.d.ts","sourceRoot":"","sources":["../../src/state/testing-url.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAO3E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAK9E;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEjF"}
@@ -0,0 +1,14 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { readTestApiTarget } from '../http/test-api.js';
4
+ // Outside runs/: a passing run removes its run directory.
5
+ function testingUrlFile(stateDir) {
6
+ return path.join(stateDir, 'testing-url.json');
7
+ }
8
+ export function recordTestingUrl(stateDir, target) {
9
+ fs.writeFileSync(testingUrlFile(stateDir), JSON.stringify({ testingURL: target.testingURL, backendPath: target.backendPath }));
10
+ }
11
+ export function recordedTestApiTarget(stateDir) {
12
+ return readTestApiTarget(testingUrlFile(stateDir));
13
+ }
14
+ //# sourceMappingURL=testing-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing-url.js","sourceRoot":"","sources":["../../src/state/testing-url.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAsB,MAAM,qBAAqB,CAAA;AAE3E,0DAA0D;AAC1D,SAAS,cAAc,CAAC,QAAgB;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,MAAqB;IACpE,EAAE,CAAC,aAAa,CACZ,cAAc,CAAC,QAAQ,CAAC,EACxB,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CACrF,CAAA;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IAClD,OAAO,iBAAiB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAA;AACtD,CAAC"}