@unotest/web 0.45.0 → 0.47.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 +83 -3
- package/README.md +7 -0
- package/dist/config/schema.d.ts +260 -73
- package/dist/config/schema.js +1 -1
- package/dist/driver/index.d.ts +10 -2
- package/dist/driver/index.js +1 -1
- package/dist/dsl/index.d.ts +24 -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 +10 -2
- package/dist/inspection/page-inject.js +12 -0
- package/dist/{interfaces-OvnJKELk.d.ts → interfaces-LE6GsJ0c.d.ts} +64 -3
- 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 +416 -17
- package/package.json +9 -8
- package/types/unotest-dsl.d.ts +122 -10
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: ("network" | "transient" | "crash")[];
|
|
46
46
|
}, {
|
|
47
47
|
count: number;
|
|
48
|
-
on: ("
|
|
48
|
+
on: ("network" | "transient" | "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
|
+
url: string;
|
|
245
|
+
timeoutMs: number;
|
|
237
246
|
command: string;
|
|
247
|
+
reuseExistingServer: boolean;
|
|
248
|
+
}, {
|
|
238
249
|
url: string;
|
|
250
|
+
command: string;
|
|
251
|
+
timeoutMs?: number | undefined;
|
|
252
|
+
reuseExistingServer?: boolean | 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
|
+
url: string;
|
|
277
|
+
timeoutMs: number;
|
|
278
|
+
command: string;
|
|
239
279
|
reuseExistingServer: boolean;
|
|
280
|
+
}, {
|
|
281
|
+
url: string;
|
|
282
|
+
command: string;
|
|
283
|
+
timeoutMs?: number | undefined;
|
|
284
|
+
reuseExistingServer?: boolean | 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, {
|
|
302
|
+
url: string;
|
|
240
303
|
timeoutMs: number;
|
|
304
|
+
command: string;
|
|
305
|
+
reuseExistingServer: boolean;
|
|
241
306
|
}, {
|
|
307
|
+
url: string;
|
|
242
308
|
command: string;
|
|
309
|
+
timeoutMs?: number | undefined;
|
|
310
|
+
reuseExistingServer?: boolean | undefined;
|
|
311
|
+
}>, "many">]>, {
|
|
243
312
|
url: string;
|
|
313
|
+
timeoutMs: number;
|
|
314
|
+
command: string;
|
|
315
|
+
reuseExistingServer: boolean;
|
|
316
|
+
}[], {
|
|
317
|
+
url: string;
|
|
318
|
+
command: string;
|
|
319
|
+
timeoutMs?: number | undefined;
|
|
244
320
|
reuseExistingServer?: boolean | undefined;
|
|
321
|
+
} | {
|
|
322
|
+
url: string;
|
|
323
|
+
command: string;
|
|
245
324
|
timeoutMs?: number | undefined;
|
|
246
|
-
|
|
247
|
-
|
|
325
|
+
reuseExistingServer?: boolean | undefined;
|
|
326
|
+
}[]>, {
|
|
327
|
+
url: string;
|
|
328
|
+
timeoutMs: number;
|
|
329
|
+
command: string;
|
|
330
|
+
reuseExistingServer: boolean;
|
|
331
|
+
}[], {
|
|
332
|
+
url: string;
|
|
333
|
+
command: string;
|
|
334
|
+
timeoutMs?: number | undefined;
|
|
335
|
+
reuseExistingServer?: boolean | undefined;
|
|
336
|
+
} | {
|
|
337
|
+
url: string;
|
|
338
|
+
command: string;
|
|
339
|
+
timeoutMs?: number | undefined;
|
|
340
|
+
reuseExistingServer?: boolean | 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
|
|
@@ -262,7 +356,7 @@ declare const UnotestConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
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,16 +373,72 @@ declare const UnotestConfigSchema: z.ZodEffects<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, {
|
|
282
|
-
command: string;
|
|
283
376
|
url: string;
|
|
377
|
+
timeoutMs: number;
|
|
378
|
+
command: string;
|
|
284
379
|
reuseExistingServer: boolean;
|
|
380
|
+
}, {
|
|
381
|
+
url: string;
|
|
382
|
+
command: string;
|
|
383
|
+
timeoutMs?: number | undefined;
|
|
384
|
+
reuseExistingServer?: boolean | 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, {
|
|
402
|
+
url: string;
|
|
285
403
|
timeoutMs: number;
|
|
404
|
+
command: string;
|
|
405
|
+
reuseExistingServer: boolean;
|
|
286
406
|
}, {
|
|
407
|
+
url: string;
|
|
408
|
+
command: string;
|
|
409
|
+
timeoutMs?: number | undefined;
|
|
410
|
+
reuseExistingServer?: boolean | undefined;
|
|
411
|
+
}>, "many">]>, {
|
|
412
|
+
url: string;
|
|
413
|
+
timeoutMs: number;
|
|
414
|
+
command: string;
|
|
415
|
+
reuseExistingServer: boolean;
|
|
416
|
+
}[], {
|
|
417
|
+
url: string;
|
|
287
418
|
command: string;
|
|
419
|
+
timeoutMs?: number | undefined;
|
|
420
|
+
reuseExistingServer?: boolean | undefined;
|
|
421
|
+
} | {
|
|
288
422
|
url: string;
|
|
423
|
+
command: string;
|
|
424
|
+
timeoutMs?: number | undefined;
|
|
289
425
|
reuseExistingServer?: boolean | undefined;
|
|
426
|
+
}[]>, {
|
|
427
|
+
url: string;
|
|
428
|
+
timeoutMs: number;
|
|
429
|
+
command: string;
|
|
430
|
+
reuseExistingServer: boolean;
|
|
431
|
+
}[], {
|
|
432
|
+
url: string;
|
|
433
|
+
command: string;
|
|
290
434
|
timeoutMs?: number | undefined;
|
|
291
|
-
|
|
435
|
+
reuseExistingServer?: boolean | undefined;
|
|
436
|
+
} | {
|
|
437
|
+
url: string;
|
|
438
|
+
command: string;
|
|
439
|
+
timeoutMs?: number | undefined;
|
|
440
|
+
reuseExistingServer?: boolean | 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
444
|
viewport: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
@@ -329,23 +479,26 @@ declare const UnotestConfigSchema: z.ZodEffects<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
|
-
userDataDir?: string | undefined;
|
|
335
485
|
args?: string[] | undefined;
|
|
336
|
-
}, {
|
|
337
486
|
userDataDir?: string | undefined;
|
|
487
|
+
profile?: "per-test" | undefined;
|
|
488
|
+
}, {
|
|
338
489
|
args?: string[] | undefined;
|
|
490
|
+
userDataDir?: string | undefined;
|
|
491
|
+
profile?: "per-test" | 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: ("network" | "transient" | "crash")[];
|
|
346
499
|
}, {
|
|
347
500
|
count: number;
|
|
348
|
-
on: ("
|
|
501
|
+
on: ("network" | "transient" | "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.ZodEffects<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.ZodEffects<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.ZodEffects<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.ZodEffects<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,15 +706,15 @@ declare const UnotestConfigSchema: z.ZodEffects<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
|
-
|
|
549
|
-
};
|
|
712
|
+
defaultTimeoutMs: number;
|
|
713
|
+
defaultNavigationTimeoutMs: number;
|
|
550
714
|
browsers: ("chromium" | "firefox" | "webkit")[];
|
|
551
715
|
retry: {
|
|
552
716
|
count: number;
|
|
553
|
-
on: ("
|
|
717
|
+
on: ("network" | "transient" | "crash")[];
|
|
554
718
|
};
|
|
555
719
|
failureBundle: {
|
|
556
720
|
tier1: true;
|
|
@@ -569,11 +733,12 @@ declare const UnotestConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
569
733
|
dialogPolicy: "accept" | "dismiss" | "manual";
|
|
570
734
|
testDir: string;
|
|
571
735
|
helpersDir: string;
|
|
572
|
-
|
|
573
|
-
|
|
736
|
+
env: {
|
|
737
|
+
shared: string[];
|
|
738
|
+
};
|
|
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,38 +760,40 @@ declare const UnotestConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
595
760
|
database?: string | undefined;
|
|
596
761
|
apiBaseUrl?: string | undefined;
|
|
597
762
|
uploadDir?: string | undefined;
|
|
763
|
+
readRoots?: string[] | undefined;
|
|
598
764
|
};
|
|
765
|
+
locale?: string | undefined;
|
|
766
|
+
timezone?: string | undefined;
|
|
767
|
+
testTimeoutMs?: number | undefined;
|
|
599
768
|
baseUrl?: string | undefined;
|
|
600
769
|
webServer?: {
|
|
601
|
-
command: string;
|
|
602
770
|
url: string;
|
|
603
|
-
reuseExistingServer: boolean;
|
|
604
771
|
timeoutMs: number;
|
|
605
|
-
|
|
606
|
-
|
|
772
|
+
command: string;
|
|
773
|
+
reuseExistingServer: boolean;
|
|
774
|
+
}[] | undefined;
|
|
775
|
+
channel?: "chrome" | "msedge" | "chrome-beta" | "chromium" | null | undefined;
|
|
607
776
|
viewport?: {
|
|
608
777
|
width?: number | undefined;
|
|
609
778
|
height?: number | undefined;
|
|
610
779
|
deviceScaleFactor?: number | undefined;
|
|
611
780
|
} | null | undefined;
|
|
612
781
|
device?: string | undefined;
|
|
613
|
-
timezone?: string | undefined;
|
|
614
|
-
locale?: string | undefined;
|
|
615
782
|
maxContexts?: number | undefined;
|
|
616
783
|
launch?: {
|
|
617
|
-
userDataDir?: string | undefined;
|
|
618
784
|
args?: string[] | undefined;
|
|
785
|
+
userDataDir?: string | undefined;
|
|
786
|
+
profile?: "per-test" | undefined;
|
|
619
787
|
} | undefined;
|
|
620
788
|
storageState?: string | undefined;
|
|
621
789
|
teardownTimeoutMs?: number | undefined;
|
|
622
790
|
}, {
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
};
|
|
791
|
+
defaultTimeoutMs: number;
|
|
792
|
+
defaultNavigationTimeoutMs: number;
|
|
626
793
|
browsers: ("chromium" | "firefox" | "webkit")[];
|
|
627
794
|
retry: {
|
|
628
795
|
count: number;
|
|
629
|
-
on: ("
|
|
796
|
+
on: ("network" | "transient" | "crash")[];
|
|
630
797
|
};
|
|
631
798
|
failureBundle: {
|
|
632
799
|
tier2: boolean;
|
|
@@ -645,11 +812,12 @@ declare const UnotestConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
645
812
|
dialogPolicy: "accept" | "dismiss" | "manual";
|
|
646
813
|
testDir: string;
|
|
647
814
|
helpersDir: string;
|
|
648
|
-
|
|
649
|
-
|
|
815
|
+
env: {
|
|
816
|
+
shared?: string[] | undefined;
|
|
817
|
+
};
|
|
650
818
|
linter: {
|
|
651
819
|
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">>;
|
|
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">>;
|
|
653
821
|
};
|
|
654
822
|
mcp: {
|
|
655
823
|
transport: "stdio";
|
|
@@ -665,27 +833,35 @@ declare const UnotestConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
665
833
|
database?: string | undefined;
|
|
666
834
|
apiBaseUrl?: string | undefined;
|
|
667
835
|
uploadDir?: string | undefined;
|
|
836
|
+
readRoots?: string[] | undefined;
|
|
668
837
|
};
|
|
838
|
+
locale?: string | undefined;
|
|
839
|
+
timezone?: string | undefined;
|
|
840
|
+
testTimeoutMs?: number | undefined;
|
|
669
841
|
baseUrl?: string | undefined;
|
|
670
842
|
webServer?: {
|
|
671
|
-
command: string;
|
|
672
843
|
url: string;
|
|
844
|
+
command: string;
|
|
845
|
+
timeoutMs?: number | undefined;
|
|
673
846
|
reuseExistingServer?: boolean | undefined;
|
|
847
|
+
} | {
|
|
848
|
+
url: string;
|
|
849
|
+
command: string;
|
|
674
850
|
timeoutMs?: number | undefined;
|
|
675
|
-
|
|
676
|
-
|
|
851
|
+
reuseExistingServer?: boolean | undefined;
|
|
852
|
+
}[] | undefined;
|
|
853
|
+
channel?: "chrome" | "msedge" | "chrome-beta" | "chromium" | "bundled" | null | undefined;
|
|
677
854
|
viewport?: {
|
|
678
855
|
width?: number | undefined;
|
|
679
856
|
height?: number | undefined;
|
|
680
857
|
deviceScaleFactor?: number | undefined;
|
|
681
858
|
} | null | undefined;
|
|
682
859
|
device?: string | undefined;
|
|
683
|
-
timezone?: string | undefined;
|
|
684
|
-
locale?: string | undefined;
|
|
685
860
|
maxContexts?: number | undefined;
|
|
686
861
|
launch?: {
|
|
687
|
-
userDataDir?: string | undefined;
|
|
688
862
|
args?: string[] | undefined;
|
|
863
|
+
userDataDir?: string | undefined;
|
|
864
|
+
profile?: "per-test" | undefined;
|
|
689
865
|
} | undefined;
|
|
690
866
|
storageState?: string | undefined;
|
|
691
867
|
teardownTimeoutMs?: number | undefined;
|
|
@@ -696,13 +872,12 @@ declare const UnotestConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
696
872
|
prepare?: string | undefined;
|
|
697
873
|
}[] | undefined;
|
|
698
874
|
}>, {
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
};
|
|
875
|
+
defaultTimeoutMs: number;
|
|
876
|
+
defaultNavigationTimeoutMs: number;
|
|
702
877
|
browsers: ("chromium" | "firefox" | "webkit")[];
|
|
703
878
|
retry: {
|
|
704
879
|
count: number;
|
|
705
|
-
on: ("
|
|
880
|
+
on: ("network" | "transient" | "crash")[];
|
|
706
881
|
};
|
|
707
882
|
failureBundle: {
|
|
708
883
|
tier1: true;
|
|
@@ -721,11 +896,12 @@ declare const UnotestConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
721
896
|
dialogPolicy: "accept" | "dismiss" | "manual";
|
|
722
897
|
testDir: string;
|
|
723
898
|
helpersDir: string;
|
|
724
|
-
|
|
725
|
-
|
|
899
|
+
env: {
|
|
900
|
+
shared: string[];
|
|
901
|
+
};
|
|
726
902
|
linter: {
|
|
727
903
|
enabled: boolean;
|
|
728
|
-
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">>;
|
|
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">>;
|
|
729
905
|
};
|
|
730
906
|
mcp: {
|
|
731
907
|
transport: "stdio";
|
|
@@ -747,38 +923,40 @@ declare const UnotestConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
747
923
|
database?: string | undefined;
|
|
748
924
|
apiBaseUrl?: string | undefined;
|
|
749
925
|
uploadDir?: string | undefined;
|
|
926
|
+
readRoots?: string[] | undefined;
|
|
750
927
|
};
|
|
928
|
+
locale?: string | undefined;
|
|
929
|
+
timezone?: string | undefined;
|
|
930
|
+
testTimeoutMs?: number | undefined;
|
|
751
931
|
baseUrl?: string | undefined;
|
|
752
932
|
webServer?: {
|
|
753
|
-
command: string;
|
|
754
933
|
url: string;
|
|
755
|
-
reuseExistingServer: boolean;
|
|
756
934
|
timeoutMs: number;
|
|
757
|
-
|
|
758
|
-
|
|
935
|
+
command: string;
|
|
936
|
+
reuseExistingServer: boolean;
|
|
937
|
+
}[] | undefined;
|
|
938
|
+
channel?: "chrome" | "msedge" | "chrome-beta" | "chromium" | null | undefined;
|
|
759
939
|
viewport?: {
|
|
760
940
|
width?: number | undefined;
|
|
761
941
|
height?: number | undefined;
|
|
762
942
|
deviceScaleFactor?: number | undefined;
|
|
763
943
|
} | null | undefined;
|
|
764
944
|
device?: string | undefined;
|
|
765
|
-
timezone?: string | undefined;
|
|
766
|
-
locale?: string | undefined;
|
|
767
945
|
maxContexts?: number | undefined;
|
|
768
946
|
launch?: {
|
|
769
|
-
userDataDir?: string | undefined;
|
|
770
947
|
args?: string[] | undefined;
|
|
948
|
+
userDataDir?: string | undefined;
|
|
949
|
+
profile?: "per-test" | undefined;
|
|
771
950
|
} | undefined;
|
|
772
951
|
storageState?: string | undefined;
|
|
773
952
|
teardownTimeoutMs?: number | undefined;
|
|
774
953
|
}, {
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
};
|
|
954
|
+
defaultTimeoutMs: number;
|
|
955
|
+
defaultNavigationTimeoutMs: number;
|
|
778
956
|
browsers: ("chromium" | "firefox" | "webkit")[];
|
|
779
957
|
retry: {
|
|
780
958
|
count: number;
|
|
781
|
-
on: ("
|
|
959
|
+
on: ("network" | "transient" | "crash")[];
|
|
782
960
|
};
|
|
783
961
|
failureBundle: {
|
|
784
962
|
tier2: boolean;
|
|
@@ -797,11 +975,12 @@ declare const UnotestConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
797
975
|
dialogPolicy: "accept" | "dismiss" | "manual";
|
|
798
976
|
testDir: string;
|
|
799
977
|
helpersDir: string;
|
|
800
|
-
|
|
801
|
-
|
|
978
|
+
env: {
|
|
979
|
+
shared?: string[] | undefined;
|
|
980
|
+
};
|
|
802
981
|
linter: {
|
|
803
982
|
enabled: boolean;
|
|
804
|
-
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">>;
|
|
805
984
|
};
|
|
806
985
|
mcp: {
|
|
807
986
|
transport: "stdio";
|
|
@@ -817,27 +996,35 @@ declare const UnotestConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
817
996
|
database?: string | undefined;
|
|
818
997
|
apiBaseUrl?: string | undefined;
|
|
819
998
|
uploadDir?: string | undefined;
|
|
999
|
+
readRoots?: string[] | undefined;
|
|
820
1000
|
};
|
|
1001
|
+
locale?: string | undefined;
|
|
1002
|
+
timezone?: string | undefined;
|
|
1003
|
+
testTimeoutMs?: number | undefined;
|
|
821
1004
|
baseUrl?: string | undefined;
|
|
822
1005
|
webServer?: {
|
|
823
|
-
command: string;
|
|
824
1006
|
url: string;
|
|
1007
|
+
command: string;
|
|
1008
|
+
timeoutMs?: number | undefined;
|
|
825
1009
|
reuseExistingServer?: boolean | undefined;
|
|
1010
|
+
} | {
|
|
1011
|
+
url: string;
|
|
1012
|
+
command: string;
|
|
826
1013
|
timeoutMs?: number | undefined;
|
|
827
|
-
|
|
828
|
-
|
|
1014
|
+
reuseExistingServer?: boolean | undefined;
|
|
1015
|
+
}[] | undefined;
|
|
1016
|
+
channel?: "chrome" | "msedge" | "chrome-beta" | "chromium" | "bundled" | null | undefined;
|
|
829
1017
|
viewport?: {
|
|
830
1018
|
width?: number | undefined;
|
|
831
1019
|
height?: number | undefined;
|
|
832
1020
|
deviceScaleFactor?: number | undefined;
|
|
833
1021
|
} | null | undefined;
|
|
834
1022
|
device?: string | undefined;
|
|
835
|
-
timezone?: string | undefined;
|
|
836
|
-
locale?: string | undefined;
|
|
837
1023
|
maxContexts?: number | undefined;
|
|
838
1024
|
launch?: {
|
|
839
|
-
userDataDir?: string | undefined;
|
|
840
1025
|
args?: string[] | undefined;
|
|
1026
|
+
userDataDir?: string | undefined;
|
|
1027
|
+
profile?: "per-test" | undefined;
|
|
841
1028
|
} | undefined;
|
|
842
1029
|
storageState?: string | undefined;
|
|
843
1030
|
teardownTimeoutMs?: number | undefined;
|
|
@@ -852,4 +1039,4 @@ type UnotestConfig = z.infer<typeof UnotestConfigSchema>;
|
|
|
852
1039
|
type UnotestConfigInput = z.input<typeof UnotestConfigSchema>;
|
|
853
1040
|
declare const DEFAULT_CONFIG: UnotestConfig;
|
|
854
1041
|
|
|
855
|
-
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 };
|