@unotest/web 0.44.0 → 0.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +73 -3
- package/README.md +2 -0
- package/dist/config/schema.d.ts +385 -46
- package/dist/config/schema.js +1 -1
- package/dist/driver/index.d.ts +12 -2
- package/dist/driver/index.js +1 -1
- package/dist/dsl/index.d.ts +37 -2
- package/dist/dsl/index.js +1 -1
- package/dist/dsl/web-dsl-language-service.js +1 -1
- package/dist/inspection/page-inject.d.ts +1 -1
- package/dist/{interfaces-DEmGI704.d.ts → interfaces-CYoL4Taq.d.ts} +189 -6
- package/dist/mcp/server.js +1 -1
- package/dist/runner/cli.js +1 -1
- package/dist/runner/init/chrome-probe.js +1 -1
- package/dist/runner/init.js +1 -1
- package/dist/runner/install-chromium.js +1 -1
- package/dist/runner/prepare-fix.js +1 -1
- package/dist/runner/scaffold-workspace.js +1 -1
- package/dist/runner/serve-fixture.js +1 -1
- package/dist/runner/web-runner-adapter.js +1 -1
- package/guides/dsl-reference.md +653 -5
- package/package.json +9 -8
- package/types/unotest-dsl.d.ts +218 -8
package/dist/config/schema.d.ts
CHANGED
|
@@ -42,10 +42,10 @@ declare const RetryConfigSchema: z.ZodObject<{
|
|
|
42
42
|
on: z.ZodArray<z.ZodEnum<["transient", "network", "crash"]>, "many">;
|
|
43
43
|
}, "strict", z.ZodTypeAny, {
|
|
44
44
|
count: number;
|
|
45
|
-
on: ("
|
|
45
|
+
on: ("transient" | "network" | "crash")[];
|
|
46
46
|
}, {
|
|
47
47
|
count: number;
|
|
48
|
-
on: ("
|
|
48
|
+
on: ("transient" | "network" | "crash")[];
|
|
49
49
|
}>;
|
|
50
50
|
type RetryConfig = z.infer<typeof RetryConfigSchema>;
|
|
51
51
|
declare const FailureBundleConfigSchema: z.ZodObject<{
|
|
@@ -109,19 +109,19 @@ declare const FailureBundleConfigSchema: z.ZodObject<{
|
|
|
109
109
|
type FailureBundleConfig = z.infer<typeof FailureBundleConfigSchema>;
|
|
110
110
|
declare const DialogPolicySchema: z.ZodEnum<["accept", "dismiss", "manual"]>;
|
|
111
111
|
type DialogPolicy = z.infer<typeof DialogPolicySchema>;
|
|
112
|
-
declare const LinterRuleIdSchema: z.ZodEnum<["lint:deep-css", "lint:xpath", "lint:obfuscated-class", "lint:pause-explicit", "lint:disambig-by-index", "lint:evaluate-discouraged", "lint:scenario-in-root", "lint:mustache-in-dsl", "lint:goto-concat", "lint:regex-invalid", "lint:echo-assert", "lint:api-call-file-body", "lint:lint-ok-missing-reason", "lint:flow-returns-value", "lint:legacy-layout", "lint:external-variable-undeclared", "lint:env-host-from-base", "lint:one-test-per-file", "lint:shadows-dsl-function", "validator:unknown-function", "validator:arity", "validator:arg-kind", "validator:step-coverage", "validator:step-shape", "validator:meta-shape", "validator:function-shape", "validator:for-shape", "validator:if-shape", "validator:var-shape", "validator:unsupported-statement", "validator:unsupported-expression", "validator:string-concat", "validator:semantic-loss", "validator:list-arg", "validator:wrapped-format"]>;
|
|
112
|
+
declare const LinterRuleIdSchema: z.ZodEnum<["lint:deep-css", "lint:xpath", "lint:obfuscated-class", "lint:pause-explicit", "lint:disambig-by-index", "lint:evaluate-discouraged", "lint:scenario-in-root", "lint:mustache-in-dsl", "lint:goto-concat", "lint:regex-invalid", "lint:echo-assert", "lint:api-call-file-body", "lint:lint-ok-missing-reason", "lint:flow-returns-value", "lint:legacy-layout", "lint:external-variable-undeclared", "lint:env-host-from-base", "lint:one-test-per-file", "lint:shadows-dsl-function", "lint:skip-outside-test", "lint:set-test-timeout-outside-test", "validator:unknown-function", "validator:arity", "validator:arg-kind", "validator:step-coverage", "validator:step-shape", "validator:meta-shape", "validator:function-shape", "validator:for-shape", "validator:if-shape", "validator:var-shape", "validator:unsupported-statement", "validator:unsupported-expression", "validator:string-concat", "validator:semantic-loss", "validator:list-arg", "validator:wrapped-format"]>;
|
|
113
113
|
type LinterRuleId = z.infer<typeof LinterRuleIdSchema>;
|
|
114
114
|
declare const LinterSeveritySchema: z.ZodEnum<["off", "warn", "error"]>;
|
|
115
115
|
type LinterSeverity = z.infer<typeof LinterSeveritySchema>;
|
|
116
116
|
declare const LinterConfigSchema: z.ZodObject<{
|
|
117
117
|
enabled: z.ZodBoolean;
|
|
118
|
-
rules: z.ZodRecord<z.ZodEnum<["lint:deep-css", "lint:xpath", "lint:obfuscated-class", "lint:pause-explicit", "lint:disambig-by-index", "lint:evaluate-discouraged", "lint:scenario-in-root", "lint:mustache-in-dsl", "lint:goto-concat", "lint:regex-invalid", "lint:echo-assert", "lint:api-call-file-body", "lint:lint-ok-missing-reason", "lint:flow-returns-value", "lint:legacy-layout", "lint:external-variable-undeclared", "lint:env-host-from-base", "lint:one-test-per-file", "lint:shadows-dsl-function", "validator:unknown-function", "validator:arity", "validator:arg-kind", "validator:step-coverage", "validator:step-shape", "validator:meta-shape", "validator:function-shape", "validator:for-shape", "validator:if-shape", "validator:var-shape", "validator:unsupported-statement", "validator:unsupported-expression", "validator:string-concat", "validator:semantic-loss", "validator:list-arg", "validator:wrapped-format"]>, z.ZodEnum<["off", "warn", "error"]>>;
|
|
118
|
+
rules: z.ZodRecord<z.ZodEnum<["lint:deep-css", "lint:xpath", "lint:obfuscated-class", "lint:pause-explicit", "lint:disambig-by-index", "lint:evaluate-discouraged", "lint:scenario-in-root", "lint:mustache-in-dsl", "lint:goto-concat", "lint:regex-invalid", "lint:echo-assert", "lint:api-call-file-body", "lint:lint-ok-missing-reason", "lint:flow-returns-value", "lint:legacy-layout", "lint:external-variable-undeclared", "lint:env-host-from-base", "lint:one-test-per-file", "lint:shadows-dsl-function", "lint:skip-outside-test", "lint:set-test-timeout-outside-test", "validator:unknown-function", "validator:arity", "validator:arg-kind", "validator:step-coverage", "validator:step-shape", "validator:meta-shape", "validator:function-shape", "validator:for-shape", "validator:if-shape", "validator:var-shape", "validator:unsupported-statement", "validator:unsupported-expression", "validator:string-concat", "validator:semantic-loss", "validator:list-arg", "validator:wrapped-format"]>, z.ZodEnum<["off", "warn", "error"]>>;
|
|
119
119
|
}, "strict", z.ZodTypeAny, {
|
|
120
120
|
enabled: boolean;
|
|
121
|
-
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:env-host-from-base" | "lint:one-test-per-file" | "lint:shadows-dsl-function" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
121
|
+
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:env-host-from-base" | "lint:one-test-per-file" | "lint:shadows-dsl-function" | "lint:skip-outside-test" | "lint:set-test-timeout-outside-test" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
122
122
|
}, {
|
|
123
123
|
enabled: boolean;
|
|
124
|
-
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:env-host-from-base" | "lint:one-test-per-file" | "lint:shadows-dsl-function" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
124
|
+
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:env-host-from-base" | "lint:one-test-per-file" | "lint:shadows-dsl-function" | "lint:skip-outside-test" | "lint:set-test-timeout-outside-test" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
125
125
|
}>;
|
|
126
126
|
type LinterConfig = z.infer<typeof LinterConfigSchema>;
|
|
127
127
|
declare const QueueConfigSchema: z.ZodObject<{
|
|
@@ -201,6 +201,11 @@ declare const SandboxConfigSchema: z.ZodObject<{
|
|
|
201
201
|
* against it and may not escape it. Defaults to the project root
|
|
202
202
|
* (the runner's cwd). */
|
|
203
203
|
uploadDir: z.ZodOptional<z.ZodString>;
|
|
204
|
+
/** More directories a scenario may read files from, beside the project
|
|
205
|
+
* and the run's downloads: `readFile`, `waitForFile` and the other file
|
|
206
|
+
* oracles. For a file a background process writes outside the project.
|
|
207
|
+
* Relative entries resolve against `shellCwd`. */
|
|
208
|
+
readRoots: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
204
209
|
}, "strict", z.ZodTypeAny, {
|
|
205
210
|
shellCwd?: string | undefined;
|
|
206
211
|
shellTimeoutMs?: number | undefined;
|
|
@@ -208,6 +213,7 @@ declare const SandboxConfigSchema: z.ZodObject<{
|
|
|
208
213
|
database?: string | undefined;
|
|
209
214
|
apiBaseUrl?: string | undefined;
|
|
210
215
|
uploadDir?: string | undefined;
|
|
216
|
+
readRoots?: string[] | undefined;
|
|
211
217
|
}, {
|
|
212
218
|
shellCwd?: string | undefined;
|
|
213
219
|
shellTimeoutMs?: number | undefined;
|
|
@@ -215,6 +221,7 @@ declare const SandboxConfigSchema: z.ZodObject<{
|
|
|
215
221
|
database?: string | undefined;
|
|
216
222
|
apiBaseUrl?: string | undefined;
|
|
217
223
|
uploadDir?: string | undefined;
|
|
224
|
+
readRoots?: string[] | undefined;
|
|
218
225
|
}>;
|
|
219
226
|
type SandboxConfig = z.infer<typeof SandboxConfigSchema>;
|
|
220
227
|
declare const WebServerConfigSchema: z.ZodObject<{
|
|
@@ -234,17 +241,104 @@ declare const WebServerConfigSchema: z.ZodObject<{
|
|
|
234
241
|
/** How long to wait for the URL to come up after spawning. */
|
|
235
242
|
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
236
243
|
}, "strict", z.ZodTypeAny, {
|
|
244
|
+
command: string;
|
|
245
|
+
url: string;
|
|
246
|
+
reuseExistingServer: boolean;
|
|
247
|
+
timeoutMs: number;
|
|
248
|
+
}, {
|
|
249
|
+
command: string;
|
|
250
|
+
url: string;
|
|
251
|
+
reuseExistingServer?: boolean | undefined;
|
|
252
|
+
timeoutMs?: number | undefined;
|
|
253
|
+
}>;
|
|
254
|
+
type WebServerConfig = z.infer<typeof WebServerConfigSchema>;
|
|
255
|
+
/** `webServer`: one server, or several (a front and its fake backends),
|
|
256
|
+
* each with its own readiness URL. Always a list once parsed, so no
|
|
257
|
+
* consumer asks which form it got. Two entries on one URL would probe
|
|
258
|
+
* the same server twice and start neither for sure — refused. */
|
|
259
|
+
declare const WebServersConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodObject<{
|
|
260
|
+
/** Shell command that starts the app under test (`npm run dev`,
|
|
261
|
+
* `python manage.py runserver`, …). Runs in the user's shell from the
|
|
262
|
+
* project root. */
|
|
263
|
+
command: z.ZodString;
|
|
264
|
+
/** URL probed for readiness — any HTTP response counts as up. Usually
|
|
265
|
+
* equals `baseUrl`; declared explicitly because a dev server may
|
|
266
|
+
* answer on a different path/port than the tests navigate to. */
|
|
267
|
+
url: z.ZodString;
|
|
268
|
+
/** When the URL is already up, reuse that server instead of spawning a
|
|
269
|
+
* second one (default true — covers a dev server the user or the
|
|
270
|
+
* viewer already started). `false` makes an occupied URL an error,
|
|
271
|
+
* Playwright-style for CI strictness. */
|
|
272
|
+
reuseExistingServer: z.ZodDefault<z.ZodBoolean>;
|
|
273
|
+
/** How long to wait for the URL to come up after spawning. */
|
|
274
|
+
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
275
|
+
}, "strict", z.ZodTypeAny, {
|
|
276
|
+
command: string;
|
|
237
277
|
url: string;
|
|
278
|
+
reuseExistingServer: boolean;
|
|
238
279
|
timeoutMs: number;
|
|
280
|
+
}, {
|
|
281
|
+
command: string;
|
|
282
|
+
url: string;
|
|
283
|
+
reuseExistingServer?: boolean | undefined;
|
|
284
|
+
timeoutMs?: number | undefined;
|
|
285
|
+
}>, z.ZodArray<z.ZodObject<{
|
|
286
|
+
/** Shell command that starts the app under test (`npm run dev`,
|
|
287
|
+
* `python manage.py runserver`, …). Runs in the user's shell from the
|
|
288
|
+
* project root. */
|
|
289
|
+
command: z.ZodString;
|
|
290
|
+
/** URL probed for readiness — any HTTP response counts as up. Usually
|
|
291
|
+
* equals `baseUrl`; declared explicitly because a dev server may
|
|
292
|
+
* answer on a different path/port than the tests navigate to. */
|
|
293
|
+
url: z.ZodString;
|
|
294
|
+
/** When the URL is already up, reuse that server instead of spawning a
|
|
295
|
+
* second one (default true — covers a dev server the user or the
|
|
296
|
+
* viewer already started). `false` makes an occupied URL an error,
|
|
297
|
+
* Playwright-style for CI strictness. */
|
|
298
|
+
reuseExistingServer: z.ZodDefault<z.ZodBoolean>;
|
|
299
|
+
/** How long to wait for the URL to come up after spawning. */
|
|
300
|
+
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
301
|
+
}, "strict", z.ZodTypeAny, {
|
|
239
302
|
command: string;
|
|
303
|
+
url: string;
|
|
240
304
|
reuseExistingServer: boolean;
|
|
305
|
+
timeoutMs: number;
|
|
241
306
|
}, {
|
|
307
|
+
command: string;
|
|
308
|
+
url: string;
|
|
309
|
+
reuseExistingServer?: boolean | undefined;
|
|
310
|
+
timeoutMs?: number | undefined;
|
|
311
|
+
}>, "many">]>, {
|
|
312
|
+
command: string;
|
|
313
|
+
url: string;
|
|
314
|
+
reuseExistingServer: boolean;
|
|
315
|
+
timeoutMs: number;
|
|
316
|
+
}[], {
|
|
317
|
+
command: string;
|
|
318
|
+
url: string;
|
|
319
|
+
reuseExistingServer?: boolean | undefined;
|
|
320
|
+
timeoutMs?: number | undefined;
|
|
321
|
+
} | {
|
|
322
|
+
command: string;
|
|
242
323
|
url: string;
|
|
324
|
+
reuseExistingServer?: boolean | undefined;
|
|
325
|
+
timeoutMs?: number | undefined;
|
|
326
|
+
}[]>, {
|
|
327
|
+
command: string;
|
|
328
|
+
url: string;
|
|
329
|
+
reuseExistingServer: boolean;
|
|
330
|
+
timeoutMs: number;
|
|
331
|
+
}[], {
|
|
243
332
|
command: string;
|
|
333
|
+
url: string;
|
|
334
|
+
reuseExistingServer?: boolean | undefined;
|
|
244
335
|
timeoutMs?: number | undefined;
|
|
336
|
+
} | {
|
|
337
|
+
command: string;
|
|
338
|
+
url: string;
|
|
245
339
|
reuseExistingServer?: boolean | undefined;
|
|
246
|
-
|
|
247
|
-
|
|
340
|
+
timeoutMs?: number | undefined;
|
|
341
|
+
}[]>;
|
|
248
342
|
declare const EnvConfigSchema: z.ZodObject<{
|
|
249
343
|
/** Variable names whose base `.env` value is deliberately shared by
|
|
250
344
|
* every environment. Only names that become a HOST are checked, so
|
|
@@ -256,13 +350,13 @@ declare const EnvConfigSchema: z.ZodObject<{
|
|
|
256
350
|
shared?: string[] | undefined;
|
|
257
351
|
}>;
|
|
258
352
|
type EnvConfig = z.infer<typeof EnvConfigSchema>;
|
|
259
|
-
declare const UnotestConfigSchema: z.ZodObject<{
|
|
353
|
+
declare const UnotestConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
260
354
|
baseUrl: z.ZodOptional<z.ZodString>;
|
|
261
355
|
/** Dev-server lifecycle for the app under test (M-12). Unset → the app
|
|
262
356
|
* is expected to be running already (current behaviour). When set, the
|
|
263
357
|
* CLI ensures it per run; `npx @unotest/web app-server` / the viewer
|
|
264
358
|
* hold a long-lived instance and runs then reuse it. */
|
|
265
|
-
webServer: z.ZodOptional<z.ZodObject<{
|
|
359
|
+
webServer: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodObject<{
|
|
266
360
|
/** Shell command that starts the app under test (`npm run dev`,
|
|
267
361
|
* `python manage.py runserver`, …). Runs in the user's shell from the
|
|
268
362
|
* project root. */
|
|
@@ -279,19 +373,75 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
279
373
|
/** How long to wait for the URL to come up after spawning. */
|
|
280
374
|
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
281
375
|
}, "strict", z.ZodTypeAny, {
|
|
376
|
+
command: string;
|
|
282
377
|
url: string;
|
|
378
|
+
reuseExistingServer: boolean;
|
|
283
379
|
timeoutMs: number;
|
|
380
|
+
}, {
|
|
381
|
+
command: string;
|
|
382
|
+
url: string;
|
|
383
|
+
reuseExistingServer?: boolean | undefined;
|
|
384
|
+
timeoutMs?: number | undefined;
|
|
385
|
+
}>, z.ZodArray<z.ZodObject<{
|
|
386
|
+
/** Shell command that starts the app under test (`npm run dev`,
|
|
387
|
+
* `python manage.py runserver`, …). Runs in the user's shell from the
|
|
388
|
+
* project root. */
|
|
389
|
+
command: z.ZodString;
|
|
390
|
+
/** URL probed for readiness — any HTTP response counts as up. Usually
|
|
391
|
+
* equals `baseUrl`; declared explicitly because a dev server may
|
|
392
|
+
* answer on a different path/port than the tests navigate to. */
|
|
393
|
+
url: z.ZodString;
|
|
394
|
+
/** When the URL is already up, reuse that server instead of spawning a
|
|
395
|
+
* second one (default true — covers a dev server the user or the
|
|
396
|
+
* viewer already started). `false` makes an occupied URL an error,
|
|
397
|
+
* Playwright-style for CI strictness. */
|
|
398
|
+
reuseExistingServer: z.ZodDefault<z.ZodBoolean>;
|
|
399
|
+
/** How long to wait for the URL to come up after spawning. */
|
|
400
|
+
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
401
|
+
}, "strict", z.ZodTypeAny, {
|
|
284
402
|
command: string;
|
|
403
|
+
url: string;
|
|
285
404
|
reuseExistingServer: boolean;
|
|
405
|
+
timeoutMs: number;
|
|
286
406
|
}, {
|
|
407
|
+
command: string;
|
|
408
|
+
url: string;
|
|
409
|
+
reuseExistingServer?: boolean | undefined;
|
|
410
|
+
timeoutMs?: number | undefined;
|
|
411
|
+
}>, "many">]>, {
|
|
412
|
+
command: string;
|
|
287
413
|
url: string;
|
|
414
|
+
reuseExistingServer: boolean;
|
|
415
|
+
timeoutMs: number;
|
|
416
|
+
}[], {
|
|
288
417
|
command: string;
|
|
418
|
+
url: string;
|
|
419
|
+
reuseExistingServer?: boolean | undefined;
|
|
289
420
|
timeoutMs?: number | undefined;
|
|
421
|
+
} | {
|
|
422
|
+
command: string;
|
|
423
|
+
url: string;
|
|
290
424
|
reuseExistingServer?: boolean | undefined;
|
|
291
|
-
|
|
425
|
+
timeoutMs?: number | undefined;
|
|
426
|
+
}[]>, {
|
|
427
|
+
command: string;
|
|
428
|
+
url: string;
|
|
429
|
+
reuseExistingServer: boolean;
|
|
430
|
+
timeoutMs: number;
|
|
431
|
+
}[], {
|
|
432
|
+
command: string;
|
|
433
|
+
url: string;
|
|
434
|
+
reuseExistingServer?: boolean | undefined;
|
|
435
|
+
timeoutMs?: number | undefined;
|
|
436
|
+
} | {
|
|
437
|
+
command: string;
|
|
438
|
+
url: string;
|
|
439
|
+
reuseExistingServer?: boolean | undefined;
|
|
440
|
+
timeoutMs?: number | undefined;
|
|
441
|
+
}[]>>;
|
|
292
442
|
browsers: z.ZodArray<z.ZodEnum<["chromium", "firefox", "webkit"]>, "many">;
|
|
293
443
|
channel: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["chrome", "msedge", "chrome-beta", "chromium"]>, z.ZodEffects<z.ZodLiteral<"bundled">, null, "bundled">, z.ZodNull]>>;
|
|
294
|
-
viewport: z.ZodOptional<z.ZodObject<{
|
|
444
|
+
viewport: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
295
445
|
width: z.ZodOptional<z.ZodNumber>;
|
|
296
446
|
height: z.ZodOptional<z.ZodNumber>;
|
|
297
447
|
/** CSS pixel → device pixel ratio: 2 makes a 390×844 page a 780×1688
|
|
@@ -305,7 +455,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
305
455
|
width?: number | undefined;
|
|
306
456
|
height?: number | undefined;
|
|
307
457
|
deviceScaleFactor?: number | undefined;
|
|
308
|
-
}
|
|
458
|
+
}>>>;
|
|
309
459
|
/** A device preset by its Playwright name (`"iPhone 14"`, `"Pixel 7"`):
|
|
310
460
|
* size, scale, touch, mobile mode and user agent at once. `viewport`
|
|
311
461
|
* next to it overrides the preset's size. The name is checked by the
|
|
@@ -329,23 +479,26 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
329
479
|
* context per scenario. */
|
|
330
480
|
launch: z.ZodOptional<z.ZodObject<{
|
|
331
481
|
userDataDir: z.ZodOptional<z.ZodString>;
|
|
482
|
+
profile: z.ZodOptional<z.ZodLiteral<"per-test">>;
|
|
332
483
|
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
333
484
|
}, "strict", z.ZodTypeAny, {
|
|
334
|
-
args?: string[] | undefined;
|
|
335
485
|
userDataDir?: string | undefined;
|
|
336
|
-
|
|
486
|
+
profile?: "per-test" | undefined;
|
|
337
487
|
args?: string[] | undefined;
|
|
488
|
+
}, {
|
|
338
489
|
userDataDir?: string | undefined;
|
|
490
|
+
profile?: "per-test" | undefined;
|
|
491
|
+
args?: string[] | undefined;
|
|
339
492
|
}>>;
|
|
340
493
|
retry: z.ZodObject<{
|
|
341
494
|
count: z.ZodNumber;
|
|
342
495
|
on: z.ZodArray<z.ZodEnum<["transient", "network", "crash"]>, "many">;
|
|
343
496
|
}, "strict", z.ZodTypeAny, {
|
|
344
497
|
count: number;
|
|
345
|
-
on: ("
|
|
498
|
+
on: ("transient" | "network" | "crash")[];
|
|
346
499
|
}, {
|
|
347
500
|
count: number;
|
|
348
|
-
on: ("
|
|
501
|
+
on: ("transient" | "network" | "crash")[];
|
|
349
502
|
}>;
|
|
350
503
|
failureBundle: z.ZodObject<{
|
|
351
504
|
/** Tier 1 is always on by D-16. Schema lock — not user-toggleable. */
|
|
@@ -432,6 +585,11 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
432
585
|
* Unset → 60000. A pass cut by it leaves the rest of the stand as the
|
|
433
586
|
* test set it, and the run result says which blocks did not finish. */
|
|
434
587
|
teardownTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
588
|
+
/** Wall-clock budget of one test, a deadline: an action still running
|
|
589
|
+
* when it runs out is cut there and the test fails, its teardown blocks
|
|
590
|
+
* still play. Unset → 300000. `UNOTEST_MAX_DURATION_MS` overrides it for
|
|
591
|
+
* a run; `setTestTimeout(ms)` inside a test overrides both for that test. */
|
|
592
|
+
testTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
435
593
|
/** Cross-environment declarations (`.env.<name>` overlays). */
|
|
436
594
|
env: z.ZodObject<{
|
|
437
595
|
/** Variable names whose base `.env` value is deliberately shared by
|
|
@@ -445,13 +603,13 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
445
603
|
}>;
|
|
446
604
|
linter: z.ZodObject<{
|
|
447
605
|
enabled: z.ZodBoolean;
|
|
448
|
-
rules: z.ZodRecord<z.ZodEnum<["lint:deep-css", "lint:xpath", "lint:obfuscated-class", "lint:pause-explicit", "lint:disambig-by-index", "lint:evaluate-discouraged", "lint:scenario-in-root", "lint:mustache-in-dsl", "lint:goto-concat", "lint:regex-invalid", "lint:echo-assert", "lint:api-call-file-body", "lint:lint-ok-missing-reason", "lint:flow-returns-value", "lint:legacy-layout", "lint:external-variable-undeclared", "lint:env-host-from-base", "lint:one-test-per-file", "lint:shadows-dsl-function", "validator:unknown-function", "validator:arity", "validator:arg-kind", "validator:step-coverage", "validator:step-shape", "validator:meta-shape", "validator:function-shape", "validator:for-shape", "validator:if-shape", "validator:var-shape", "validator:unsupported-statement", "validator:unsupported-expression", "validator:string-concat", "validator:semantic-loss", "validator:list-arg", "validator:wrapped-format"]>, z.ZodEnum<["off", "warn", "error"]>>;
|
|
606
|
+
rules: z.ZodRecord<z.ZodEnum<["lint:deep-css", "lint:xpath", "lint:obfuscated-class", "lint:pause-explicit", "lint:disambig-by-index", "lint:evaluate-discouraged", "lint:scenario-in-root", "lint:mustache-in-dsl", "lint:goto-concat", "lint:regex-invalid", "lint:echo-assert", "lint:api-call-file-body", "lint:lint-ok-missing-reason", "lint:flow-returns-value", "lint:legacy-layout", "lint:external-variable-undeclared", "lint:env-host-from-base", "lint:one-test-per-file", "lint:shadows-dsl-function", "lint:skip-outside-test", "lint:set-test-timeout-outside-test", "validator:unknown-function", "validator:arity", "validator:arg-kind", "validator:step-coverage", "validator:step-shape", "validator:meta-shape", "validator:function-shape", "validator:for-shape", "validator:if-shape", "validator:var-shape", "validator:unsupported-statement", "validator:unsupported-expression", "validator:string-concat", "validator:semantic-loss", "validator:list-arg", "validator:wrapped-format"]>, z.ZodEnum<["off", "warn", "error"]>>;
|
|
449
607
|
}, "strict", z.ZodTypeAny, {
|
|
450
608
|
enabled: boolean;
|
|
451
|
-
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:env-host-from-base" | "lint:one-test-per-file" | "lint:shadows-dsl-function" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
609
|
+
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:env-host-from-base" | "lint:one-test-per-file" | "lint:shadows-dsl-function" | "lint:skip-outside-test" | "lint:set-test-timeout-outside-test" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
452
610
|
}, {
|
|
453
611
|
enabled: boolean;
|
|
454
|
-
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:env-host-from-base" | "lint:one-test-per-file" | "lint:shadows-dsl-function" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
612
|
+
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:env-host-from-base" | "lint:one-test-per-file" | "lint:shadows-dsl-function" | "lint:skip-outside-test" | "lint:set-test-timeout-outside-test" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
455
613
|
}>;
|
|
456
614
|
mcp: z.ZodObject<{
|
|
457
615
|
transport: z.ZodLiteral<"stdio">;
|
|
@@ -528,6 +686,11 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
528
686
|
* against it and may not escape it. Defaults to the project root
|
|
529
687
|
* (the runner's cwd). */
|
|
530
688
|
uploadDir: z.ZodOptional<z.ZodString>;
|
|
689
|
+
/** More directories a scenario may read files from, beside the project
|
|
690
|
+
* and the run's downloads: `readFile`, `waitForFile` and the other file
|
|
691
|
+
* oracles. For a file a background process writes outside the project.
|
|
692
|
+
* Relative entries resolve against `shellCwd`. */
|
|
693
|
+
readRoots: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
531
694
|
}, "strict", z.ZodTypeAny, {
|
|
532
695
|
shellCwd?: string | undefined;
|
|
533
696
|
shellTimeoutMs?: number | undefined;
|
|
@@ -535,6 +698,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
535
698
|
database?: string | undefined;
|
|
536
699
|
apiBaseUrl?: string | undefined;
|
|
537
700
|
uploadDir?: string | undefined;
|
|
701
|
+
readRoots?: string[] | undefined;
|
|
538
702
|
}, {
|
|
539
703
|
shellCwd?: string | undefined;
|
|
540
704
|
shellTimeoutMs?: number | undefined;
|
|
@@ -542,14 +706,16 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
542
706
|
database?: string | undefined;
|
|
543
707
|
apiBaseUrl?: string | undefined;
|
|
544
708
|
uploadDir?: string | undefined;
|
|
709
|
+
readRoots?: string[] | undefined;
|
|
545
710
|
}>;
|
|
546
711
|
}, "strict", z.ZodTypeAny, {
|
|
547
|
-
|
|
548
|
-
|
|
712
|
+
env: {
|
|
713
|
+
shared: string[];
|
|
714
|
+
};
|
|
549
715
|
browsers: ("chromium" | "firefox" | "webkit")[];
|
|
550
716
|
retry: {
|
|
551
717
|
count: number;
|
|
552
|
-
on: ("
|
|
718
|
+
on: ("transient" | "network" | "crash")[];
|
|
553
719
|
};
|
|
554
720
|
failureBundle: {
|
|
555
721
|
tier1: true;
|
|
@@ -568,12 +734,11 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
568
734
|
dialogPolicy: "accept" | "dismiss" | "manual";
|
|
569
735
|
testDir: string;
|
|
570
736
|
helpersDir: string;
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
};
|
|
737
|
+
defaultTimeoutMs: number;
|
|
738
|
+
defaultNavigationTimeoutMs: number;
|
|
574
739
|
linter: {
|
|
575
740
|
enabled: boolean;
|
|
576
|
-
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:env-host-from-base" | "lint:one-test-per-file" | "lint:shadows-dsl-function" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
741
|
+
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:env-host-from-base" | "lint:one-test-per-file" | "lint:shadows-dsl-function" | "lint:skip-outside-test" | "lint:set-test-timeout-outside-test" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
577
742
|
};
|
|
578
743
|
mcp: {
|
|
579
744
|
transport: "stdio";
|
|
@@ -595,39 +760,128 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
595
760
|
database?: string | undefined;
|
|
596
761
|
apiBaseUrl?: string | undefined;
|
|
597
762
|
uploadDir?: string | undefined;
|
|
763
|
+
readRoots?: string[] | undefined;
|
|
598
764
|
};
|
|
599
|
-
locale?: string | undefined;
|
|
600
|
-
timezone?: string | undefined;
|
|
601
765
|
baseUrl?: string | undefined;
|
|
602
766
|
webServer?: {
|
|
603
|
-
url: string;
|
|
604
|
-
timeoutMs: number;
|
|
605
767
|
command: string;
|
|
768
|
+
url: string;
|
|
606
769
|
reuseExistingServer: boolean;
|
|
607
|
-
|
|
608
|
-
|
|
770
|
+
timeoutMs: number;
|
|
771
|
+
}[] | undefined;
|
|
772
|
+
channel?: "chromium" | "chrome" | "msedge" | "chrome-beta" | null | undefined;
|
|
609
773
|
viewport?: {
|
|
610
774
|
width?: number | undefined;
|
|
611
775
|
height?: number | undefined;
|
|
612
776
|
deviceScaleFactor?: number | undefined;
|
|
613
|
-
} | undefined;
|
|
777
|
+
} | null | undefined;
|
|
614
778
|
device?: string | undefined;
|
|
779
|
+
timezone?: string | undefined;
|
|
780
|
+
locale?: string | undefined;
|
|
615
781
|
maxContexts?: number | undefined;
|
|
616
782
|
launch?: {
|
|
617
|
-
args?: string[] | undefined;
|
|
618
783
|
userDataDir?: string | undefined;
|
|
784
|
+
profile?: "per-test" | undefined;
|
|
785
|
+
args?: string[] | undefined;
|
|
619
786
|
} | undefined;
|
|
620
787
|
storageState?: string | undefined;
|
|
621
788
|
teardownTimeoutMs?: number | undefined;
|
|
789
|
+
testTimeoutMs?: number | undefined;
|
|
622
790
|
}, {
|
|
791
|
+
env: {
|
|
792
|
+
shared?: string[] | undefined;
|
|
793
|
+
};
|
|
794
|
+
browsers: ("chromium" | "firefox" | "webkit")[];
|
|
795
|
+
retry: {
|
|
796
|
+
count: number;
|
|
797
|
+
on: ("transient" | "network" | "crash")[];
|
|
798
|
+
};
|
|
799
|
+
failureBundle: {
|
|
800
|
+
tier2: boolean;
|
|
801
|
+
tier3: {
|
|
802
|
+
network: boolean;
|
|
803
|
+
video: boolean;
|
|
804
|
+
};
|
|
805
|
+
retention: {
|
|
806
|
+
runs: number;
|
|
807
|
+
days: number;
|
|
808
|
+
};
|
|
809
|
+
storageDir: string;
|
|
810
|
+
pageHtml: "redacted" | "full";
|
|
811
|
+
tier1?: true | undefined;
|
|
812
|
+
};
|
|
813
|
+
dialogPolicy: "accept" | "dismiss" | "manual";
|
|
814
|
+
testDir: string;
|
|
815
|
+
helpersDir: string;
|
|
623
816
|
defaultTimeoutMs: number;
|
|
624
817
|
defaultNavigationTimeoutMs: number;
|
|
818
|
+
linter: {
|
|
819
|
+
enabled: boolean;
|
|
820
|
+
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:env-host-from-base" | "lint:one-test-per-file" | "lint:shadows-dsl-function" | "lint:skip-outside-test" | "lint:set-test-timeout-outside-test" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
821
|
+
};
|
|
822
|
+
mcp: {
|
|
823
|
+
transport: "stdio";
|
|
824
|
+
};
|
|
825
|
+
queue: {
|
|
826
|
+
enabled?: boolean | undefined;
|
|
827
|
+
concurrency?: number | undefined;
|
|
828
|
+
};
|
|
829
|
+
sandbox: {
|
|
830
|
+
shellCwd?: string | undefined;
|
|
831
|
+
shellTimeoutMs?: number | undefined;
|
|
832
|
+
exportSecrets?: string[] | undefined;
|
|
833
|
+
database?: string | undefined;
|
|
834
|
+
apiBaseUrl?: string | undefined;
|
|
835
|
+
uploadDir?: string | undefined;
|
|
836
|
+
readRoots?: string[] | undefined;
|
|
837
|
+
};
|
|
838
|
+
baseUrl?: string | undefined;
|
|
839
|
+
webServer?: {
|
|
840
|
+
command: string;
|
|
841
|
+
url: string;
|
|
842
|
+
reuseExistingServer?: boolean | undefined;
|
|
843
|
+
timeoutMs?: number | undefined;
|
|
844
|
+
} | {
|
|
845
|
+
command: string;
|
|
846
|
+
url: string;
|
|
847
|
+
reuseExistingServer?: boolean | undefined;
|
|
848
|
+
timeoutMs?: number | undefined;
|
|
849
|
+
}[] | undefined;
|
|
850
|
+
channel?: "chromium" | "chrome" | "msedge" | "chrome-beta" | "bundled" | null | undefined;
|
|
851
|
+
viewport?: {
|
|
852
|
+
width?: number | undefined;
|
|
853
|
+
height?: number | undefined;
|
|
854
|
+
deviceScaleFactor?: number | undefined;
|
|
855
|
+
} | null | undefined;
|
|
856
|
+
device?: string | undefined;
|
|
857
|
+
timezone?: string | undefined;
|
|
858
|
+
locale?: string | undefined;
|
|
859
|
+
maxContexts?: number | undefined;
|
|
860
|
+
launch?: {
|
|
861
|
+
userDataDir?: string | undefined;
|
|
862
|
+
profile?: "per-test" | undefined;
|
|
863
|
+
args?: string[] | undefined;
|
|
864
|
+
} | undefined;
|
|
865
|
+
storageState?: string | undefined;
|
|
866
|
+
teardownTimeoutMs?: number | undefined;
|
|
867
|
+
testTimeoutMs?: number | undefined;
|
|
868
|
+
schedules?: {
|
|
869
|
+
collection: string;
|
|
870
|
+
cron: string;
|
|
871
|
+
env?: string | undefined;
|
|
872
|
+
prepare?: string | undefined;
|
|
873
|
+
}[] | undefined;
|
|
874
|
+
}>, {
|
|
875
|
+
env: {
|
|
876
|
+
shared: string[];
|
|
877
|
+
};
|
|
625
878
|
browsers: ("chromium" | "firefox" | "webkit")[];
|
|
626
879
|
retry: {
|
|
627
880
|
count: number;
|
|
628
|
-
on: ("
|
|
881
|
+
on: ("transient" | "network" | "crash")[];
|
|
629
882
|
};
|
|
630
883
|
failureBundle: {
|
|
884
|
+
tier1: true;
|
|
631
885
|
tier2: boolean;
|
|
632
886
|
tier3: {
|
|
633
887
|
network: boolean;
|
|
@@ -639,17 +893,94 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
639
893
|
};
|
|
640
894
|
storageDir: string;
|
|
641
895
|
pageHtml: "redacted" | "full";
|
|
642
|
-
tier1?: true | undefined;
|
|
643
896
|
};
|
|
644
897
|
dialogPolicy: "accept" | "dismiss" | "manual";
|
|
645
898
|
testDir: string;
|
|
646
899
|
helpersDir: string;
|
|
900
|
+
defaultTimeoutMs: number;
|
|
901
|
+
defaultNavigationTimeoutMs: number;
|
|
902
|
+
linter: {
|
|
903
|
+
enabled: boolean;
|
|
904
|
+
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:env-host-from-base" | "lint:one-test-per-file" | "lint:shadows-dsl-function" | "lint:skip-outside-test" | "lint:set-test-timeout-outside-test" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
905
|
+
};
|
|
906
|
+
mcp: {
|
|
907
|
+
transport: "stdio";
|
|
908
|
+
};
|
|
909
|
+
queue: {
|
|
910
|
+
enabled: boolean;
|
|
911
|
+
concurrency: number;
|
|
912
|
+
};
|
|
913
|
+
schedules: {
|
|
914
|
+
collection: string;
|
|
915
|
+
cron: string;
|
|
916
|
+
env?: string | undefined;
|
|
917
|
+
prepare?: string | undefined;
|
|
918
|
+
}[];
|
|
919
|
+
sandbox: {
|
|
920
|
+
shellCwd?: string | undefined;
|
|
921
|
+
shellTimeoutMs?: number | undefined;
|
|
922
|
+
exportSecrets?: string[] | undefined;
|
|
923
|
+
database?: string | undefined;
|
|
924
|
+
apiBaseUrl?: string | undefined;
|
|
925
|
+
uploadDir?: string | undefined;
|
|
926
|
+
readRoots?: string[] | undefined;
|
|
927
|
+
};
|
|
928
|
+
baseUrl?: string | undefined;
|
|
929
|
+
webServer?: {
|
|
930
|
+
command: string;
|
|
931
|
+
url: string;
|
|
932
|
+
reuseExistingServer: boolean;
|
|
933
|
+
timeoutMs: number;
|
|
934
|
+
}[] | undefined;
|
|
935
|
+
channel?: "chromium" | "chrome" | "msedge" | "chrome-beta" | null | undefined;
|
|
936
|
+
viewport?: {
|
|
937
|
+
width?: number | undefined;
|
|
938
|
+
height?: number | undefined;
|
|
939
|
+
deviceScaleFactor?: number | undefined;
|
|
940
|
+
} | null | undefined;
|
|
941
|
+
device?: string | undefined;
|
|
942
|
+
timezone?: string | undefined;
|
|
943
|
+
locale?: string | undefined;
|
|
944
|
+
maxContexts?: number | undefined;
|
|
945
|
+
launch?: {
|
|
946
|
+
userDataDir?: string | undefined;
|
|
947
|
+
profile?: "per-test" | undefined;
|
|
948
|
+
args?: string[] | undefined;
|
|
949
|
+
} | undefined;
|
|
950
|
+
storageState?: string | undefined;
|
|
951
|
+
teardownTimeoutMs?: number | undefined;
|
|
952
|
+
testTimeoutMs?: number | undefined;
|
|
953
|
+
}, {
|
|
647
954
|
env: {
|
|
648
955
|
shared?: string[] | undefined;
|
|
649
956
|
};
|
|
957
|
+
browsers: ("chromium" | "firefox" | "webkit")[];
|
|
958
|
+
retry: {
|
|
959
|
+
count: number;
|
|
960
|
+
on: ("transient" | "network" | "crash")[];
|
|
961
|
+
};
|
|
962
|
+
failureBundle: {
|
|
963
|
+
tier2: boolean;
|
|
964
|
+
tier3: {
|
|
965
|
+
network: boolean;
|
|
966
|
+
video: boolean;
|
|
967
|
+
};
|
|
968
|
+
retention: {
|
|
969
|
+
runs: number;
|
|
970
|
+
days: number;
|
|
971
|
+
};
|
|
972
|
+
storageDir: string;
|
|
973
|
+
pageHtml: "redacted" | "full";
|
|
974
|
+
tier1?: true | undefined;
|
|
975
|
+
};
|
|
976
|
+
dialogPolicy: "accept" | "dismiss" | "manual";
|
|
977
|
+
testDir: string;
|
|
978
|
+
helpersDir: string;
|
|
979
|
+
defaultTimeoutMs: number;
|
|
980
|
+
defaultNavigationTimeoutMs: number;
|
|
650
981
|
linter: {
|
|
651
982
|
enabled: boolean;
|
|
652
|
-
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:env-host-from-base" | "lint:one-test-per-file" | "lint:shadows-dsl-function" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
983
|
+
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:env-host-from-base" | "lint:one-test-per-file" | "lint:shadows-dsl-function" | "lint:skip-outside-test" | "lint:set-test-timeout-outside-test" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
653
984
|
};
|
|
654
985
|
mcp: {
|
|
655
986
|
transport: "stdio";
|
|
@@ -665,30 +996,38 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
665
996
|
database?: string | undefined;
|
|
666
997
|
apiBaseUrl?: string | undefined;
|
|
667
998
|
uploadDir?: string | undefined;
|
|
999
|
+
readRoots?: string[] | undefined;
|
|
668
1000
|
};
|
|
669
|
-
locale?: string | undefined;
|
|
670
|
-
timezone?: string | undefined;
|
|
671
1001
|
baseUrl?: string | undefined;
|
|
672
1002
|
webServer?: {
|
|
673
|
-
url: string;
|
|
674
1003
|
command: string;
|
|
1004
|
+
url: string;
|
|
1005
|
+
reuseExistingServer?: boolean | undefined;
|
|
675
1006
|
timeoutMs?: number | undefined;
|
|
1007
|
+
} | {
|
|
1008
|
+
command: string;
|
|
1009
|
+
url: string;
|
|
676
1010
|
reuseExistingServer?: boolean | undefined;
|
|
677
|
-
|
|
678
|
-
|
|
1011
|
+
timeoutMs?: number | undefined;
|
|
1012
|
+
}[] | undefined;
|
|
1013
|
+
channel?: "chromium" | "chrome" | "msedge" | "chrome-beta" | "bundled" | null | undefined;
|
|
679
1014
|
viewport?: {
|
|
680
1015
|
width?: number | undefined;
|
|
681
1016
|
height?: number | undefined;
|
|
682
1017
|
deviceScaleFactor?: number | undefined;
|
|
683
|
-
} | undefined;
|
|
1018
|
+
} | null | undefined;
|
|
684
1019
|
device?: string | undefined;
|
|
1020
|
+
timezone?: string | undefined;
|
|
1021
|
+
locale?: string | undefined;
|
|
685
1022
|
maxContexts?: number | undefined;
|
|
686
1023
|
launch?: {
|
|
687
|
-
args?: string[] | undefined;
|
|
688
1024
|
userDataDir?: string | undefined;
|
|
1025
|
+
profile?: "per-test" | undefined;
|
|
1026
|
+
args?: string[] | undefined;
|
|
689
1027
|
} | undefined;
|
|
690
1028
|
storageState?: string | undefined;
|
|
691
1029
|
teardownTimeoutMs?: number | undefined;
|
|
1030
|
+
testTimeoutMs?: number | undefined;
|
|
692
1031
|
schedules?: {
|
|
693
1032
|
collection: string;
|
|
694
1033
|
cron: string;
|
|
@@ -700,4 +1039,4 @@ type UnotestConfig = z.infer<typeof UnotestConfigSchema>;
|
|
|
700
1039
|
type UnotestConfigInput = z.input<typeof UnotestConfigSchema>;
|
|
701
1040
|
declare const DEFAULT_CONFIG: UnotestConfig;
|
|
702
1041
|
|
|
703
|
-
export { BROWSER_CHANNEL_WORDS, type Browser, type BrowserChannel, BrowserChannelSchema, BrowserSchema, DEFAULT_CONFIG, type DialogPolicy, DialogPolicySchema, type EnvConfig, EnvConfigSchema, type FailureBundleConfig, FailureBundleConfigSchema, type LinterConfig, LinterConfigSchema, type LinterRuleId, LinterRuleIdSchema, type LinterSeverity, LinterSeveritySchema, type McpConfig, McpConfigSchema, type QueueConfig, QueueConfigSchema, type RetryConfig, RetryConfigSchema, type RetryReason, RetryReasonSchema, SYSTEM_BROWSER_CHANNELS, type SandboxConfig, SandboxConfigSchema, type ScheduleConfig, ScheduleSchema, type UnotestConfig, type UnotestConfigInput, UnotestConfigSchema, type Viewport, ViewportSchema, type WebServerConfig, WebServerConfigSchema };
|
|
1042
|
+
export { BROWSER_CHANNEL_WORDS, type Browser, type BrowserChannel, BrowserChannelSchema, BrowserSchema, DEFAULT_CONFIG, type DialogPolicy, DialogPolicySchema, type EnvConfig, EnvConfigSchema, type FailureBundleConfig, FailureBundleConfigSchema, type LinterConfig, LinterConfigSchema, type LinterRuleId, LinterRuleIdSchema, type LinterSeverity, LinterSeveritySchema, type McpConfig, McpConfigSchema, type QueueConfig, QueueConfigSchema, type RetryConfig, RetryConfigSchema, type RetryReason, RetryReasonSchema, SYSTEM_BROWSER_CHANNELS, type SandboxConfig, SandboxConfigSchema, type ScheduleConfig, ScheduleSchema, type UnotestConfig, type UnotestConfigInput, UnotestConfigSchema, type Viewport, ViewportSchema, type WebServerConfig, WebServerConfigSchema, WebServersConfigSchema };
|