@unotest/web 0.44.0 → 0.45.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 +39 -3
- package/dist/config/schema.d.ts +191 -39
- package/dist/config/schema.js +1 -1
- package/dist/driver/index.d.ts +9 -2
- package/dist/driver/index.js +1 -1
- package/dist/dsl/index.d.ts +20 -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-OvnJKELk.d.ts} +148 -5
- 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 +413 -1
- package/package.json +8 -8
- package/types/unotest-dsl.d.ts +150 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.45.0] - 2026-10-01
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- f8ed64e: Browser extensions in scenarios: `waitForServiceWorker({timeoutMs?, url?})` returns the URL of an MV3 extension's service worker, `evaluateInServiceWorker(js, ...args)` runs JS in it — the way to `chrome.storage`, `chrome.tabs` and `chrome.runtime`, with the same argument and return rules as `evaluate` — and `extensionId()` gives the id for `chrome-extension://<id>/popup.html`. Every call finds the worker anew, so a worker MV3 put to sleep does not go stale. Extensions load only into a browser started with `launch.userDataDir`; without it the calls fail at once and say so. `mockRoute` also answers the worker's own requests on a freshly opened profile.
|
|
8
|
+
- fabfa22: Two reads of one element: `boundingBox(loc)` returns `{x, y, width, height}` in viewport CSS pixels, or `null` when the element is not rendered; `evaluateOnLocator(loc, js, ...args)` runs JS on the matched element — the body gets the element first, then the extra arguments by the same rules as `evaluate`.
|
|
9
|
+
- 1f5441c: Network mocks in scenarios: `mockRoute(glob, response)` gives requests matching a Playwright URL glob a fixed answer for the rest of the scenario — a response (`{status?, body?, headers?, contentType?}`, an object body goes as JSON), `{abort: true}` or `{continue: true}`. Where several masks match, the one mocked last answers, so `mockRoute('**/*', {abort: true})` followed by `mockRoute('**/localhost:*/**', {continue: true})` is a network allowlist. `unmockRoute(glob?)` takes mocks off. `waitForRequest(glob, {timeoutMs?})` returns the request with `url`, `method`, `headers`, `postData` and `postDataJson`; on a mocked mask it also finds a request sent before the call. `{abort: true, record: true}` keeps what it stopped, and `assertNoRequest(glob, {since?})` fails naming those requests. A fixed response to `**/*` is refused, and the site's own page is never aborted. Captured network entries of mocked requests carry `mocked: true`.
|
|
10
|
+
- eead45c: New DSL functions `newPage(url?)` and `closePage(index?)`: a scenario opens and closes its own tabs. `newPage` opens a tab in the active browser context, makes it active and returns its index; with a url the tab opens it, a relative path resolving against the base URL as in `goto`. `waitForPage` never returns a tab `newPage` opened. `closePage` closes the active tab, or tab `index`. Closing the active tab makes the tab that was active before it active again, or the tab at the index below when that one is gone. Closing another tab keeps the steps where they are. The only open tab cannot be closed: the step fails with `cannot close the only open tab`.
|
|
11
|
+
- 0cb5c62: Four new DSL functions for reading and comparing values inside a scenario:
|
|
12
|
+
|
|
13
|
+
- `textMatches(text, /re/)` returns `false` on a miss, or `[whole, group1, …]` for the first match. A group that took no part is `null`. A string pattern is refused with a pointer to `textContains`.
|
|
14
|
+
- `parseJson(text)` parses a JSON string into a value you walk with `.` and `[]`. Invalid JSON, including an empty string, fails the step and quotes the input.
|
|
15
|
+
- `urlParam(url, key)` returns a decoded query parameter: `null` when the key is absent, `''` when it is empty. A path without a host works too.
|
|
16
|
+
- `assertEqual(actual, expected)` compares two values deeply, the way JSON does: key order does not count, and a missing key differs from a `null` one. A failure names the first differing path with both values (`values differ at panel.devices[1]: expected "ipad", got "iphone"`), followed by a line diff of the two sides.
|
|
17
|
+
|
|
18
|
+
- 1b833cf: New DSL functions `readFile(path, {encoding})` and `readFileInfo(path)`. `readFile` returns a file's text, or its bytes as base64 with `{encoding: 'base64'}`. `readFileInfo` returns `{size}` and, for a PNG, `png: {width, height}` read from the header, so a test can check an exported image without reading it whole. Both take a path relative to `sandbox.shellCwd` (the project root by default), an absolute path inside it, or the `path` that `waitForDownload()` returns, so a test can check the file a page downloaded. Any other path is refused, and so is a symlink inside the project that points out of it. `readJson` and `upload` now refuse such a symlink too; before, they followed it. The docs gain a "Files" section in "From @playwright/test".
|
|
19
|
+
- f2cabfa: New DSL function `readJson(path)`: reads a whole JSON file once and returns the parsed value, so a scenario can walk it with `.` and `[]`. It is meant for constants your app keeps in source: a small script exports them to JSON, and the scenario reads that file instead of repeating the values by hand. The path is relative to `sandbox.shellCwd` (the project root by default), the same base `readJsonLine` uses, and must stay inside it: an absolute path or one that climbs out with `../` is refused. A missing file or a file that is not valid JSON fails the step at once. The docs gain a "From @playwright/test" section on moving helpers and constants.
|
|
20
|
+
- 554891a: `setPage(index, {activate: false})` switches the tab the steps act on without bringing it to front, so a scenario can drive an extension panel in the background while the site stays the visible tab. Without the option `setPage` behaves as before and brings the tab to front. New DSL function `bringToFront(index?)` shows a tab explicitly and leaves the steps on the active tab; with no index it shows the active tab. An unknown option or a non-boolean `activate` fails the step instead of being ignored.
|
|
21
|
+
- d25af6b: `viewport: null` in the config turns size emulation off: the page is as wide as the real browser window (headless: the size from `--window-size` in `launch.args`). A `device` next to it is refused, and so is `setViewport(null)` in a scenario — Playwright keeps a size it set on an open page, so the real window is chosen in the config.
|
|
22
|
+
- 3bc4c8f: New DSL function `waitForDownload(options?)`: returns the first file the page downloaded that the scenario has not taken yet, as `{path, name}`. `path` is the absolute path of the saved copy; read it with `waitForFile`. `name` is the file name the site suggested. Downloads are recorded from the moment the browser opens, so clicking first and asking afterwards loses nothing. `{timeoutMs}` defaults to the navigation timeout. `{name}` takes a substring or regex of the file name; a download that doesn't match stays for a later call. In a run the file is saved with the run and the viewer lists it under the step that took it, as a link to the file. Outside a run it is saved under `~/.cache/unotest/web/downloads/`. The run journal has a new `download` event kind.
|
|
23
|
+
- 155ad28: New DSL function `waitForPage(options?)`: waits for a tab the scenario has not received yet, makes it active and returns its index. Use it for a tab whose index you don't know up front: one a browser extension opens, or one that opens next to tabs already there. A tab that opened before the call still counts, even when the click was a step earlier. No tab is returned twice: a tab counts as received when it was open at the start, when `setPage` switched to it, or when an earlier `waitForPage` returned it. `{timeoutMs}` defaults to the navigation timeout. When no new tab arrives in time, the step fails with `no new tab within N ms, N tabs open`. This replaces the `pause(ms)` workaround the docs used to recommend.
|
|
24
|
+
- a5a3825: `waitUntil(() => condition, {timeoutMs?, intervalMs?, label?})` polls a condition until it is truthy and returns that value — Playwright's `expect.poll`. The body is an expression or a block that returns its value; calls inside it (`apiCall`, `evaluate`, `textContent`) run on every try. `timeoutMs` defaults to the run's wait timeout, `intervalMs` to 250. Only a falsy value is retried: an error in the body fails the step at once. On timeout the step fails naming the label, the number of tries and the last value.
|
|
25
|
+
|
|
26
|
+
### Patch Changes
|
|
27
|
+
|
|
28
|
+
- a987021: Object literals in scenarios take a reserved word as a key, as in JavaScript: `mockRoute(glob, {continue: true})` used to fail to parse with `Expected property key (word or string)`, and so did any key such as `if`, `for`, `return` or `step`. Quoting the key (`{"continue": true}`) is no longer needed. Dot access by a reserved word (`a.continue`) still does not parse; use `a["continue"]`.
|
|
29
|
+
- f79f29b: `timeoutMs` is now accepted wherever `timeout` is: in actions (`click`, `fill`, `press`, `hover`, `selectOption`, `dragAndDrop` and the rest), navigation (`goto`, `reload`, `goBack`, `goForward`, `waitForUrl`, `waitForNavigation`), waits (`waitFor`, `waitForText`, `waitForCount`) and assertions (`assertText`, `assertVisible`, `assertHidden`, `assertValue`, `assertCount`, `assertUrl`). Before, `{timeoutMs: 5000}` there — the name the newer functions use — was ignored without a word and the call waited its default. Giving both `timeout` and `timeoutMs` in one call is refused.
|
|
30
|
+
- Updated dependencies [a987021]
|
|
31
|
+
- Updated dependencies [3bc4c8f]
|
|
32
|
+
- Updated dependencies [a5a3825]
|
|
33
|
+
- @unotest/dsl@0.45.0
|
|
34
|
+
- @unotest/protocol@0.45.0
|
|
35
|
+
- @unotest/viewer@0.45.0
|
|
36
|
+
- @unotest/core@0.45.0
|
|
37
|
+
- @unotest/grounder-client@0.45.0
|
|
38
|
+
|
|
3
39
|
## [0.44.0] - 2026-09-30
|
|
4
40
|
|
|
5
41
|
### Minor Changes
|
|
@@ -1454,7 +1490,7 @@ picker on` fetches this project's own access and writes the three grounder
|
|
|
1454
1490
|
|
|
1455
1491
|
That screen named one command:
|
|
1456
1492
|
|
|
1457
|
-
|
|
1493
|
+
npx @unotest/web bundle push --run --env ENVIRONMENT
|
|
1458
1494
|
|
|
1459
1495
|
In a project that has just been created, the command refuses with `no box
|
|
1460
1496
|
address` before it does anything: the project holds neither the box's address
|
|
@@ -1463,8 +1499,8 @@ address` before it does anything: the project holds neither the box's address
|
|
|
1463
1499
|
|
|
1464
1500
|
The screen now names both steps, in the order they have to happen:
|
|
1465
1501
|
|
|
1466
|
-
|
|
1467
|
-
|
|
1502
|
+
npx @unotest/web box access larch
|
|
1503
|
+
npx @unotest/web bundle push --run --env ENVIRONMENT
|
|
1468
1504
|
|
|
1469
1505
|
The box's own name is filled in when its licence carries one. `box access`
|
|
1470
1506
|
with no name refuses, and its refusal offers to create a box — to somebody who
|
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<{
|
|
@@ -234,15 +234,15 @@ declare const WebServerConfigSchema: z.ZodObject<{
|
|
|
234
234
|
/** How long to wait for the URL to come up after spawning. */
|
|
235
235
|
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
236
236
|
}, "strict", z.ZodTypeAny, {
|
|
237
|
-
url: string;
|
|
238
|
-
timeoutMs: number;
|
|
239
237
|
command: string;
|
|
238
|
+
url: string;
|
|
240
239
|
reuseExistingServer: boolean;
|
|
240
|
+
timeoutMs: number;
|
|
241
241
|
}, {
|
|
242
|
-
url: string;
|
|
243
242
|
command: string;
|
|
244
|
-
|
|
243
|
+
url: string;
|
|
245
244
|
reuseExistingServer?: boolean | undefined;
|
|
245
|
+
timeoutMs?: number | undefined;
|
|
246
246
|
}>;
|
|
247
247
|
type WebServerConfig = z.infer<typeof WebServerConfigSchema>;
|
|
248
248
|
declare const EnvConfigSchema: z.ZodObject<{
|
|
@@ -256,7 +256,7 @@ declare const EnvConfigSchema: z.ZodObject<{
|
|
|
256
256
|
shared?: string[] | undefined;
|
|
257
257
|
}>;
|
|
258
258
|
type EnvConfig = z.infer<typeof EnvConfigSchema>;
|
|
259
|
-
declare const UnotestConfigSchema: z.ZodObject<{
|
|
259
|
+
declare const UnotestConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
260
260
|
baseUrl: z.ZodOptional<z.ZodString>;
|
|
261
261
|
/** Dev-server lifecycle for the app under test (M-12). Unset → the app
|
|
262
262
|
* is expected to be running already (current behaviour). When set, the
|
|
@@ -279,19 +279,19 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
279
279
|
/** How long to wait for the URL to come up after spawning. */
|
|
280
280
|
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
281
281
|
}, "strict", z.ZodTypeAny, {
|
|
282
|
-
url: string;
|
|
283
|
-
timeoutMs: number;
|
|
284
282
|
command: string;
|
|
283
|
+
url: string;
|
|
285
284
|
reuseExistingServer: boolean;
|
|
285
|
+
timeoutMs: number;
|
|
286
286
|
}, {
|
|
287
|
-
url: string;
|
|
288
287
|
command: string;
|
|
289
|
-
|
|
288
|
+
url: string;
|
|
290
289
|
reuseExistingServer?: boolean | undefined;
|
|
290
|
+
timeoutMs?: number | undefined;
|
|
291
291
|
}>>;
|
|
292
292
|
browsers: z.ZodArray<z.ZodEnum<["chromium", "firefox", "webkit"]>, "many">;
|
|
293
293
|
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<{
|
|
294
|
+
viewport: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
295
295
|
width: z.ZodOptional<z.ZodNumber>;
|
|
296
296
|
height: z.ZodOptional<z.ZodNumber>;
|
|
297
297
|
/** CSS pixel → device pixel ratio: 2 makes a 390×844 page a 780×1688
|
|
@@ -305,7 +305,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
305
305
|
width?: number | undefined;
|
|
306
306
|
height?: number | undefined;
|
|
307
307
|
deviceScaleFactor?: number | undefined;
|
|
308
|
-
}
|
|
308
|
+
}>>>;
|
|
309
309
|
/** A device preset by its Playwright name (`"iPhone 14"`, `"Pixel 7"`):
|
|
310
310
|
* size, scale, touch, mobile mode and user agent at once. `viewport`
|
|
311
311
|
* next to it overrides the preset's size. The name is checked by the
|
|
@@ -331,21 +331,21 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
331
331
|
userDataDir: z.ZodOptional<z.ZodString>;
|
|
332
332
|
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
333
333
|
}, "strict", z.ZodTypeAny, {
|
|
334
|
-
args?: string[] | undefined;
|
|
335
334
|
userDataDir?: string | undefined;
|
|
336
|
-
}, {
|
|
337
335
|
args?: string[] | undefined;
|
|
336
|
+
}, {
|
|
338
337
|
userDataDir?: string | undefined;
|
|
338
|
+
args?: string[] | undefined;
|
|
339
339
|
}>>;
|
|
340
340
|
retry: z.ZodObject<{
|
|
341
341
|
count: z.ZodNumber;
|
|
342
342
|
on: z.ZodArray<z.ZodEnum<["transient", "network", "crash"]>, "many">;
|
|
343
343
|
}, "strict", z.ZodTypeAny, {
|
|
344
344
|
count: number;
|
|
345
|
-
on: ("
|
|
345
|
+
on: ("transient" | "network" | "crash")[];
|
|
346
346
|
}, {
|
|
347
347
|
count: number;
|
|
348
|
-
on: ("
|
|
348
|
+
on: ("transient" | "network" | "crash")[];
|
|
349
349
|
}>;
|
|
350
350
|
failureBundle: z.ZodObject<{
|
|
351
351
|
/** Tier 1 is always on by D-16. Schema lock — not user-toggleable. */
|
|
@@ -544,12 +544,13 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
544
544
|
uploadDir?: string | undefined;
|
|
545
545
|
}>;
|
|
546
546
|
}, "strict", z.ZodTypeAny, {
|
|
547
|
-
|
|
548
|
-
|
|
547
|
+
env: {
|
|
548
|
+
shared: string[];
|
|
549
|
+
};
|
|
549
550
|
browsers: ("chromium" | "firefox" | "webkit")[];
|
|
550
551
|
retry: {
|
|
551
552
|
count: number;
|
|
552
|
-
on: ("
|
|
553
|
+
on: ("transient" | "network" | "crash")[];
|
|
553
554
|
};
|
|
554
555
|
failureBundle: {
|
|
555
556
|
tier1: true;
|
|
@@ -568,9 +569,8 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
568
569
|
dialogPolicy: "accept" | "dismiss" | "manual";
|
|
569
570
|
testDir: string;
|
|
570
571
|
helpersDir: string;
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
};
|
|
572
|
+
defaultTimeoutMs: number;
|
|
573
|
+
defaultNavigationTimeoutMs: number;
|
|
574
574
|
linter: {
|
|
575
575
|
enabled: boolean;
|
|
576
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">>;
|
|
@@ -596,38 +596,116 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
596
596
|
apiBaseUrl?: string | undefined;
|
|
597
597
|
uploadDir?: string | undefined;
|
|
598
598
|
};
|
|
599
|
-
locale?: string | undefined;
|
|
600
|
-
timezone?: string | undefined;
|
|
601
599
|
baseUrl?: string | undefined;
|
|
602
600
|
webServer?: {
|
|
603
|
-
url: string;
|
|
604
|
-
timeoutMs: number;
|
|
605
601
|
command: string;
|
|
602
|
+
url: string;
|
|
606
603
|
reuseExistingServer: boolean;
|
|
604
|
+
timeoutMs: number;
|
|
607
605
|
} | undefined;
|
|
608
|
-
channel?: "chrome" | "msedge" | "chrome-beta" |
|
|
606
|
+
channel?: "chromium" | "chrome" | "msedge" | "chrome-beta" | null | undefined;
|
|
609
607
|
viewport?: {
|
|
610
608
|
width?: number | undefined;
|
|
611
609
|
height?: number | undefined;
|
|
612
610
|
deviceScaleFactor?: number | undefined;
|
|
613
|
-
} | undefined;
|
|
611
|
+
} | null | undefined;
|
|
614
612
|
device?: string | undefined;
|
|
613
|
+
timezone?: string | undefined;
|
|
614
|
+
locale?: string | undefined;
|
|
615
615
|
maxContexts?: number | undefined;
|
|
616
616
|
launch?: {
|
|
617
|
-
args?: string[] | undefined;
|
|
618
617
|
userDataDir?: string | undefined;
|
|
618
|
+
args?: string[] | undefined;
|
|
619
619
|
} | undefined;
|
|
620
620
|
storageState?: string | undefined;
|
|
621
621
|
teardownTimeoutMs?: number | undefined;
|
|
622
622
|
}, {
|
|
623
|
+
env: {
|
|
624
|
+
shared?: string[] | undefined;
|
|
625
|
+
};
|
|
626
|
+
browsers: ("chromium" | "firefox" | "webkit")[];
|
|
627
|
+
retry: {
|
|
628
|
+
count: number;
|
|
629
|
+
on: ("transient" | "network" | "crash")[];
|
|
630
|
+
};
|
|
631
|
+
failureBundle: {
|
|
632
|
+
tier2: boolean;
|
|
633
|
+
tier3: {
|
|
634
|
+
network: boolean;
|
|
635
|
+
video: boolean;
|
|
636
|
+
};
|
|
637
|
+
retention: {
|
|
638
|
+
runs: number;
|
|
639
|
+
days: number;
|
|
640
|
+
};
|
|
641
|
+
storageDir: string;
|
|
642
|
+
pageHtml: "redacted" | "full";
|
|
643
|
+
tier1?: true | undefined;
|
|
644
|
+
};
|
|
645
|
+
dialogPolicy: "accept" | "dismiss" | "manual";
|
|
646
|
+
testDir: string;
|
|
647
|
+
helpersDir: string;
|
|
623
648
|
defaultTimeoutMs: number;
|
|
624
649
|
defaultNavigationTimeoutMs: number;
|
|
650
|
+
linter: {
|
|
651
|
+
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">>;
|
|
653
|
+
};
|
|
654
|
+
mcp: {
|
|
655
|
+
transport: "stdio";
|
|
656
|
+
};
|
|
657
|
+
queue: {
|
|
658
|
+
enabled?: boolean | undefined;
|
|
659
|
+
concurrency?: number | undefined;
|
|
660
|
+
};
|
|
661
|
+
sandbox: {
|
|
662
|
+
shellCwd?: string | undefined;
|
|
663
|
+
shellTimeoutMs?: number | undefined;
|
|
664
|
+
exportSecrets?: string[] | undefined;
|
|
665
|
+
database?: string | undefined;
|
|
666
|
+
apiBaseUrl?: string | undefined;
|
|
667
|
+
uploadDir?: string | undefined;
|
|
668
|
+
};
|
|
669
|
+
baseUrl?: string | undefined;
|
|
670
|
+
webServer?: {
|
|
671
|
+
command: string;
|
|
672
|
+
url: string;
|
|
673
|
+
reuseExistingServer?: boolean | undefined;
|
|
674
|
+
timeoutMs?: number | undefined;
|
|
675
|
+
} | undefined;
|
|
676
|
+
channel?: "chromium" | "chrome" | "msedge" | "chrome-beta" | "bundled" | null | undefined;
|
|
677
|
+
viewport?: {
|
|
678
|
+
width?: number | undefined;
|
|
679
|
+
height?: number | undefined;
|
|
680
|
+
deviceScaleFactor?: number | undefined;
|
|
681
|
+
} | null | undefined;
|
|
682
|
+
device?: string | undefined;
|
|
683
|
+
timezone?: string | undefined;
|
|
684
|
+
locale?: string | undefined;
|
|
685
|
+
maxContexts?: number | undefined;
|
|
686
|
+
launch?: {
|
|
687
|
+
userDataDir?: string | undefined;
|
|
688
|
+
args?: string[] | undefined;
|
|
689
|
+
} | undefined;
|
|
690
|
+
storageState?: string | undefined;
|
|
691
|
+
teardownTimeoutMs?: number | undefined;
|
|
692
|
+
schedules?: {
|
|
693
|
+
collection: string;
|
|
694
|
+
cron: string;
|
|
695
|
+
env?: string | undefined;
|
|
696
|
+
prepare?: string | undefined;
|
|
697
|
+
}[] | undefined;
|
|
698
|
+
}>, {
|
|
699
|
+
env: {
|
|
700
|
+
shared: string[];
|
|
701
|
+
};
|
|
625
702
|
browsers: ("chromium" | "firefox" | "webkit")[];
|
|
626
703
|
retry: {
|
|
627
704
|
count: number;
|
|
628
|
-
on: ("
|
|
705
|
+
on: ("transient" | "network" | "crash")[];
|
|
629
706
|
};
|
|
630
707
|
failureBundle: {
|
|
708
|
+
tier1: true;
|
|
631
709
|
tier2: boolean;
|
|
632
710
|
tier3: {
|
|
633
711
|
network: boolean;
|
|
@@ -639,14 +717,88 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
639
717
|
};
|
|
640
718
|
storageDir: string;
|
|
641
719
|
pageHtml: "redacted" | "full";
|
|
642
|
-
tier1?: true | undefined;
|
|
643
720
|
};
|
|
644
721
|
dialogPolicy: "accept" | "dismiss" | "manual";
|
|
645
722
|
testDir: string;
|
|
646
723
|
helpersDir: string;
|
|
724
|
+
defaultTimeoutMs: number;
|
|
725
|
+
defaultNavigationTimeoutMs: number;
|
|
726
|
+
linter: {
|
|
727
|
+
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">>;
|
|
729
|
+
};
|
|
730
|
+
mcp: {
|
|
731
|
+
transport: "stdio";
|
|
732
|
+
};
|
|
733
|
+
queue: {
|
|
734
|
+
enabled: boolean;
|
|
735
|
+
concurrency: number;
|
|
736
|
+
};
|
|
737
|
+
schedules: {
|
|
738
|
+
collection: string;
|
|
739
|
+
cron: string;
|
|
740
|
+
env?: string | undefined;
|
|
741
|
+
prepare?: string | undefined;
|
|
742
|
+
}[];
|
|
743
|
+
sandbox: {
|
|
744
|
+
shellCwd?: string | undefined;
|
|
745
|
+
shellTimeoutMs?: number | undefined;
|
|
746
|
+
exportSecrets?: string[] | undefined;
|
|
747
|
+
database?: string | undefined;
|
|
748
|
+
apiBaseUrl?: string | undefined;
|
|
749
|
+
uploadDir?: string | undefined;
|
|
750
|
+
};
|
|
751
|
+
baseUrl?: string | undefined;
|
|
752
|
+
webServer?: {
|
|
753
|
+
command: string;
|
|
754
|
+
url: string;
|
|
755
|
+
reuseExistingServer: boolean;
|
|
756
|
+
timeoutMs: number;
|
|
757
|
+
} | undefined;
|
|
758
|
+
channel?: "chromium" | "chrome" | "msedge" | "chrome-beta" | null | undefined;
|
|
759
|
+
viewport?: {
|
|
760
|
+
width?: number | undefined;
|
|
761
|
+
height?: number | undefined;
|
|
762
|
+
deviceScaleFactor?: number | undefined;
|
|
763
|
+
} | null | undefined;
|
|
764
|
+
device?: string | undefined;
|
|
765
|
+
timezone?: string | undefined;
|
|
766
|
+
locale?: string | undefined;
|
|
767
|
+
maxContexts?: number | undefined;
|
|
768
|
+
launch?: {
|
|
769
|
+
userDataDir?: string | undefined;
|
|
770
|
+
args?: string[] | undefined;
|
|
771
|
+
} | undefined;
|
|
772
|
+
storageState?: string | undefined;
|
|
773
|
+
teardownTimeoutMs?: number | undefined;
|
|
774
|
+
}, {
|
|
647
775
|
env: {
|
|
648
776
|
shared?: string[] | undefined;
|
|
649
777
|
};
|
|
778
|
+
browsers: ("chromium" | "firefox" | "webkit")[];
|
|
779
|
+
retry: {
|
|
780
|
+
count: number;
|
|
781
|
+
on: ("transient" | "network" | "crash")[];
|
|
782
|
+
};
|
|
783
|
+
failureBundle: {
|
|
784
|
+
tier2: boolean;
|
|
785
|
+
tier3: {
|
|
786
|
+
network: boolean;
|
|
787
|
+
video: boolean;
|
|
788
|
+
};
|
|
789
|
+
retention: {
|
|
790
|
+
runs: number;
|
|
791
|
+
days: number;
|
|
792
|
+
};
|
|
793
|
+
storageDir: string;
|
|
794
|
+
pageHtml: "redacted" | "full";
|
|
795
|
+
tier1?: true | undefined;
|
|
796
|
+
};
|
|
797
|
+
dialogPolicy: "accept" | "dismiss" | "manual";
|
|
798
|
+
testDir: string;
|
|
799
|
+
helpersDir: string;
|
|
800
|
+
defaultTimeoutMs: number;
|
|
801
|
+
defaultNavigationTimeoutMs: number;
|
|
650
802
|
linter: {
|
|
651
803
|
enabled: boolean;
|
|
652
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">>;
|
|
@@ -666,26 +818,26 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
666
818
|
apiBaseUrl?: string | undefined;
|
|
667
819
|
uploadDir?: string | undefined;
|
|
668
820
|
};
|
|
669
|
-
locale?: string | undefined;
|
|
670
|
-
timezone?: string | undefined;
|
|
671
821
|
baseUrl?: string | undefined;
|
|
672
822
|
webServer?: {
|
|
673
|
-
url: string;
|
|
674
823
|
command: string;
|
|
675
|
-
|
|
824
|
+
url: string;
|
|
676
825
|
reuseExistingServer?: boolean | undefined;
|
|
826
|
+
timeoutMs?: number | undefined;
|
|
677
827
|
} | undefined;
|
|
678
|
-
channel?: "chrome" | "msedge" | "chrome-beta" | "
|
|
828
|
+
channel?: "chromium" | "chrome" | "msedge" | "chrome-beta" | "bundled" | null | undefined;
|
|
679
829
|
viewport?: {
|
|
680
830
|
width?: number | undefined;
|
|
681
831
|
height?: number | undefined;
|
|
682
832
|
deviceScaleFactor?: number | undefined;
|
|
683
|
-
} | undefined;
|
|
833
|
+
} | null | undefined;
|
|
684
834
|
device?: string | undefined;
|
|
835
|
+
timezone?: string | undefined;
|
|
836
|
+
locale?: string | undefined;
|
|
685
837
|
maxContexts?: number | undefined;
|
|
686
838
|
launch?: {
|
|
687
|
-
args?: string[] | undefined;
|
|
688
839
|
userDataDir?: string | undefined;
|
|
840
|
+
args?: string[] | undefined;
|
|
689
841
|
} | undefined;
|
|
690
842
|
storageState?: string | undefined;
|
|
691
843
|
teardownTimeoutMs?: number | undefined;
|
package/dist/config/schema.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var _0x32c00a=_0x43f6;function _0x4910(){var _0x3628ac=['D2fYBG','B3b0Aw9UywW','ntmYmJzKsxrmAeW','lNvUB3rLC3qVzMfPBhvYzxm','DMfSAwrHDg9YoNn0zxaTC2HHCgu','A2v5CW','CMvKywn0zwq','mtGYBvrcrMjS','zw4Tvvm','AxnuAw1LwM9Uzq','zMLYzwzVEa','DhjHBNnPzw50','DMfSAwrHDg9YoNn0zxaTy292zxjHz2u','C3rKAw8','y29Kzq','BgLUDdPLy2HVlwfZC2vYDa','y2HYB21LlwjLDge','BgLUDdPSzwDHy3KTBgf5B3v0','Dw5VDgvZDc9LmMuVx2HLBhbLCNm','z2v0q2fUB25Py2fStg9JywXLCW','BgLUDdP4Cgf0Aa','DxjS','AM9PBG','mta4mJG2ntz3rhvdB2C','BgLUDdPSAw50lw9Rlw1PC3nPBMCTCMvHC29U','DMfSAwrHDg9YoMz1BMn0Aw9UlxnOyxbL','BMfTzq','y3jHC2G','y2XVC2vZDeTLEq','Bwf4','Dw5RBM93BKTLEu1LC3nHz2u','Dg9mB3DLCKnHC2u','BgL0zxjHBa','yxjYyxK','iIdIGjqGzgLKihLVDsbTzwfUici','DMfSAwrHDg9YoNnLBwfUDgLJlwXVC3m','BgLUDdPNB3rVlwnVBMnHDa','Aw50','mJC4mdCYtKPxAxHi','CMvMAw5L','D2vIA2L0','zgLZBwLZCW','BgLUDdPKAxnHBwjPzY1IEs1PBMrLEa','DMfSAwrHDg9YoMfYAxr5','y2HYB21PDw0','B2zM','BgLUDdPWyxvZzs1LEhbSAwnPDa','DMfSAwrHDg9YoMfYzY1RAw5K','Dw5RBM93BIb0Aw1LihPVBMuGiG','BgLUDdPKzwvWlwnZCW','Aw52ywXPzcbSB2nHBguGiG','C3rYAw5N','mJaXmJCZndb0DM9KvhG','DMfSAwrHDg9YoNzHCI1ZAgfWzq','BgLUDdPMBg93lxjLDhvYBNmTDMfSDwu','iIdIGjqGBM90igeGy29UzMLNigTLEtSGy2HLy2SGEw91CIbaDw5VDgvZDc93zwiGDMvYC2LVBIbPzIbPDcbJB21LCYbMCM9TigeGBMv3zxiGCMvSzwfZzq','B2jQzwn0','BwfUDwfS','BgLUDdPLDMfSDwf0zs1KAxnJB3vYywDLza','ntD1zfHYzNu','C3rYAwn0','BgLUDdPTDxn0ywnOzs1PBI1KC2W','Dw5YzwnVz25PEMvKx2TLExm','yM9VBgvHBG','zNvSBa','zw51Bq','zxjYB3i','mJC2otuZnwDprwfbyq','Dw5RBM93BIbRzxKGiG','mZiWmtu2mufPvLbcEG','BgLUDdPZAgfKB3DZlwrZBc1MDw5JDgLVBG','y2HYB21L','BwLU','mJK4m3jgq25fva','zgvMyxvSDa','BNvTyMvY','iIdIGjqGzxHWzwn0zwqGysbcq1aGndCGDgfNihn1y2GGyxmGiMvZluvtiG','Dw5VDgvZDc9LmMu','rgf0zvrPBwvgB3jTyxq','zgvMyxvSDevYCM9Y','BMv0D29YAW','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlxn0yxrLBwvUDa','Cg9ZAxrPDMu','BgLUDdPHCgKTy2fSBc1MAwXLlwjVzhK','DMfSAwrHDg9YoM1LDgeTC2HHCgu','BgvUz3rO','DMfSAwrHDg9YoNn0CMLUzY1JB25Jyxq','DMfSAwrHDg9YoMzVCI1ZAgfWzq','zxjYB3jnyxa','ywnJzxb0','Dw5PB24','BNvSBa','DhjHBNnMB3jT','ntG4u2P4DMTg','wM9KsxnZDwvdB2rL','BwfW'];_0x4910=function(){return _0x3628ac;};return _0x4910();}(function(_0x300d7d,_0x67953b){var _0x4f4178={_0x1514f2:0x1b9,_0x351651:0x1ab,_0x2981fe:0x1f6,_0x28160a:0x1b3,_0x3fc955:0x1d2,_0x4a19a2:0x1cd,_0x4096cb:0x1b5,_0x5d026d:0x1a4},_0xcd2be5=_0x43f6,_0x314730=_0x300d7d();while(!![]){try{var _0x542432=-parseInt(_0xcd2be5(_0x4f4178._0x1514f2))/0x1*(parseInt(_0xcd2be5(0x1d7))/0x2)+parseInt(_0xcd2be5(_0x4f4178._0x351651))/0x3*(-parseInt(_0xcd2be5(_0x4f4178._0x2981fe))/0x4)+parseInt(_0xcd2be5(_0x4f4178._0x28160a))/0x5+-parseInt(_0xcd2be5(_0x4f4178._0x3fc955))/0x6*(-parseInt(_0xcd2be5(_0x4f4178._0x4a19a2))/0x7)+-parseInt(_0xcd2be5(0x1e7))/0x8+parseInt(_0xcd2be5(_0x4f4178._0x4096cb))/0x9+parseInt(_0xcd2be5(_0x4f4178._0x5d026d))/0xa;if(_0x542432===_0x67953b)break;else _0x314730['push'](_0x314730['shift']());}catch(_0x554763){_0x314730['push'](_0x314730['shift']());}}}(_0x4910,0xb02f9));var __defProp=Object['defineProperty'],__name=(_0x3c45ba,_0x136f19)=>__defProp(_0x3c45ba,_0x32c00a(0x1ea),{'value':_0x136f19,'configurable':!![]});import{z as _0x33899a}from'zod';import{z}from'zod';import{levenshteinDistance}from'@unotest/core';function _0x43f6(_0x86bb5c,_0x53fb5c){_0x86bb5c=_0x86bb5c-0x19b;var _0x49106b=_0x4910();var _0x43f672=_0x49106b[_0x86bb5c];if(_0x43f6['xFzhzD']===undefined){var _0x14bca3=function(_0x220514){var _0x56dd52='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x33899a='',_0x48ce05='';for(var _0x3c45ba=0x0,_0x136f19,_0x24c1a6,_0x2b042b=0x0;_0x24c1a6=_0x220514['charAt'](_0x2b042b++);~_0x24c1a6&&(_0x136f19=_0x3c45ba%0x4?_0x136f19*0x40+_0x24c1a6:_0x24c1a6,_0x3c45ba++%0x4)?_0x33899a+=String['fromCharCode'](0xff&_0x136f19>>(-0x2*_0x3c45ba&0x6)):0x0){_0x24c1a6=_0x56dd52['indexOf'](_0x24c1a6);}for(var _0x363e62=0x0,_0x3689bc=_0x33899a['length'];_0x363e62<_0x3689bc;_0x363e62++){_0x48ce05+='%'+('00'+_0x33899a['charCodeAt'](_0x363e62)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x48ce05);};_0x43f6['blRxvG']=_0x14bca3,_0x43f6['vvICZV']={},_0x43f6['xFzhzD']=!![];}var _0x3e06bb=_0x49106b[0x0],_0xa097c4=_0x86bb5c+_0x3e06bb,_0xfe4b8e=_0x43f6['vvICZV'][_0xa097c4];return!_0xfe4b8e?(_0x43f672=_0x43f6['blRxvG'](_0x43f672),_0x43f6['vvICZV'][_0xa097c4]=_0x43f672):_0x43f672=_0xfe4b8e,_0x43f672;}var MAX_EDITS=0x2;function closestKey(_0x24c1a6,_0x2b042b){var _0x41d52c=_0x32c00a;let _0x363e62;for(const _0x3689bc of _0x2b042b){const _0x2a902d=levenshteinDistance(_0x24c1a6['toLowerCase'](),_0x3689bc[_0x41d52c(0x1ef)]());if(_0x2a902d>MAX_EDITS)continue;if(_0x363e62===void 0x0||_0x2a902d<_0x363e62['distance'])_0x363e62={'key':_0x3689bc,'distance':_0x2a902d};}return _0x363e62?.['key'];}__name(closestKey,_0x32c00a(0x1ec));function unknownKeyMessage(_0x255510,_0x3a4104){var _0x2c838a={_0x1273a1:0x1cf,_0x1daa18:0x1e6},_0x643b54={_0x144c96:0x1f2},_0xdbd611=_0x32c00a;return _0x255510[_0xdbd611(_0x2c838a._0x1273a1)](_0x9b8d36=>{var _0x519a3f=_0xdbd611;const _0x303ceb=closestKey(_0x9b8d36,_0x3a4104);return _0x303ceb===void 0x0?_0x519a3f(0x1b4)+_0x9b8d36+_0x519a3f(0x1a7):_0x519a3f(0x1b4)+_0x9b8d36+_0x519a3f(_0x643b54._0x144c96)+_0x303ceb+'\x22?';})[_0xdbd611(_0x2c838a._0x1daa18)](';\x20');}__name(unknownKeyMessage,_0x32c00a(0x1ee));function strictObject(_0x9473b0){var _0x341213={_0x5d286b:0x1ac},_0x3f9421=_0x32c00a;const _0x42a9b6=Object[_0x3f9421(0x1d5)](_0x9473b0);return z[_0x3f9421(0x1a8)](_0x9473b0,{'errorMap':__name((_0xc35d31,_0x4b1314)=>_0xc35d31[_0x3f9421(0x1de)]===z[_0x3f9421(0x1ce)][_0x3f9421(0x1ae)]?{'message':unknownKeyMessage(_0xc35d31[_0x3f9421(0x1d5)],_0x42a9b6)}:{'message':_0x4b1314[_0x3f9421(0x1bf)]},_0x3f9421(0x1c8))})[_0x3f9421(_0x341213._0x5d286b)]();}__name(strictObject,'strictObject');import{BUNDLED_BROWSER_CHANNEL}from'@unotest/protocol';import{z as _0x48ce05}from'zod';import{UnotestError}from'@unotest/core';var LaunchConfigSchema=_0x48ce05[_0x32c00a(0x1a8)]({'userDataDir':_0x48ce05[_0x32c00a(0x1a3)]()[_0x32c00a(0x1b8)](0x1)[_0x32c00a(0x1d1)](),'args':_0x48ce05[_0x32c00a(0x1f1)](_0x48ce05[_0x32c00a(0x1a3)]()[_0x32c00a(0x1b8)](0x1))['optional']()})[_0x32c00a(0x1ac)](),BrowserSchema=_0x33899a[_0x32c00a(0x1b1)](['chromium',_0x32c00a(0x1da),_0x32c00a(0x1f8)]),SYSTEM_BROWSER_CHANNELS=[_0x32c00a(0x1b7),'msedge',_0x32c00a(0x1e0),_0x32c00a(0x19c)],BROWSER_CHANNEL_WORDS=[...SYSTEM_BROWSER_CHANNELS,BUNDLED_BROWSER_CHANNEL],BrowserChannelSchema=_0x33899a[_0x32c00a(0x1ca)]([_0x33899a[_0x32c00a(0x1b1)](SYSTEM_BROWSER_CHANNELS),_0x33899a[_0x32c00a(0x1f0)](BUNDLED_BROWSER_CHANNEL)[_0x32c00a(0x1cc)](()=>null),_0x33899a[_0x32c00a(0x1cb)]()])[_0x32c00a(0x1d1)](),ViewportSchema=strictObject({'width':_0x33899a[_0x32c00a(0x1bb)]()[_0x32c00a(0x1f5)]()[_0x32c00a(0x1c2)]()[_0x32c00a(0x1d1)](),'height':_0x33899a[_0x32c00a(0x1bb)]()[_0x32c00a(0x1f5)]()[_0x32c00a(0x1c2)]()[_0x32c00a(0x1d1)](),'deviceScaleFactor':_0x33899a[_0x32c00a(0x1bb)]()[_0x32c00a(0x1c2)]()[_0x32c00a(0x1d1)]()}),RetryReasonSchema=_0x33899a[_0x32c00a(0x1b1)]([_0x32c00a(0x1db),_0x32c00a(0x1c0),_0x32c00a(0x1eb)]),RetryConfigSchema=strictObject({'count':_0x33899a[_0x32c00a(0x1bb)]()['int']()[_0x32c00a(0x1b8)](0x0)[_0x32c00a(0x1ed)](0xa),'on':_0x33899a[_0x32c00a(0x1f1)](RetryReasonSchema)}),FailureBundleConfigSchema=strictObject({'tier1':_0x33899a[_0x32c00a(0x1f0)](!![])['default'](!![]),'tier2':_0x33899a['boolean'](),'tier3':strictObject({'network':_0x33899a[_0x32c00a(0x1af)](),'video':_0x33899a[_0x32c00a(0x1af)]()}),'retention':strictObject({'runs':_0x33899a['number']()[_0x32c00a(0x1f5)]()[_0x32c00a(0x1c2)](),'days':_0x33899a[_0x32c00a(0x1bb)]()[_0x32c00a(0x1f5)]()['positive']()}),'storageDir':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1b8)](0x1),'pageHtml':_0x33899a[_0x32c00a(0x1b1)]([_0x32c00a(0x1d6),_0x32c00a(0x1b0)])}),DialogPolicySchema=_0x33899a[_0x32c00a(0x1b1)]([_0x32c00a(0x1c9),_0x32c00a(0x1f9),_0x32c00a(0x1a9)]),LinterRuleIdSchema=_0x33899a[_0x32c00a(0x1b1)]([_0x32c00a(0x1a1),_0x32c00a(0x1e4),'lint:obfuscated-class',_0x32c00a(0x19e),_0x32c00a(0x1fa),_0x32c00a(0x1aa),'lint:scenario-in-root',_0x32c00a(0x1ad),_0x32c00a(0x1f4),'lint:regex-invalid',_0x32c00a(0x1df),_0x32c00a(0x1c3),_0x32c00a(0x1e8),_0x32c00a(0x1a6),_0x32c00a(0x1e1),'lint:external-variable-undeclared','lint:env-host-from-base','lint:one-test-per-file',_0x32c00a(0x1b6),'validator:unknown-function',_0x32c00a(0x19b),_0x32c00a(0x19f),_0x32c00a(0x1dc),_0x32c00a(0x1d4),_0x32c00a(0x1c4),_0x32c00a(0x1e9),_0x32c00a(0x1c7),'validator:if-shape',_0x32c00a(0x1a5),_0x32c00a(0x1c1),'validator:unsupported-expression',_0x32c00a(0x1c6),_0x32c00a(0x1f3),'validator:list-arg','validator:wrapped-format']),LinterSeveritySchema=_0x33899a[_0x32c00a(0x1b1)](['off',_0x32c00a(0x1d0),_0x32c00a(0x1b2)]),LinterConfigSchema=strictObject({'enabled':_0x33899a[_0x32c00a(0x1af)](),'rules':_0x33899a['record'](LinterRuleIdSchema,LinterSeveritySchema)}),QueueConfigSchema=strictObject({'enabled':_0x33899a[_0x32c00a(0x1af)]()['default'](!![]),'concurrency':_0x33899a['number']()[_0x32c00a(0x1f5)]()[_0x32c00a(0x1c2)]()[_0x32c00a(0x1ba)](0x1)}),ScheduleSchema=strictObject({'collection':_0x33899a['string']()[_0x32c00a(0x1b8)](0x1),'cron':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1b8)](0x1),'env':_0x33899a[_0x32c00a(0x1a3)]()['min'](0x1)['optional'](),'prepare':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1b8)](0x1)['optional']()}),McpConfigSchema=strictObject({'transport':_0x33899a['literal'](_0x32c00a(0x1dd))}),SandboxConfigSchema=strictObject({'shellCwd':_0x33899a['string']()['optional'](),'shellTimeoutMs':_0x33899a['number']()[_0x32c00a(0x1f5)]()[_0x32c00a(0x1c2)]()[_0x32c00a(0x1d1)](),'exportSecrets':_0x33899a[_0x32c00a(0x1f1)](_0x33899a['string']())['optional'](),'database':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1d1)](),'apiBaseUrl':_0x33899a[_0x32c00a(0x1a3)]()['url']()[_0x32c00a(0x1d1)](),'uploadDir':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1d1)]()}),WebServerConfigSchema=strictObject({'command':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1b8)](0x1),'url':_0x33899a['string']()[_0x32c00a(0x1e5)](),'reuseExistingServer':_0x33899a[_0x32c00a(0x1af)]()[_0x32c00a(0x1ba)](!![]),'timeoutMs':_0x33899a[_0x32c00a(0x1bb)]()[_0x32c00a(0x1f5)]()[_0x32c00a(0x1c2)]()['default'](0xea60)}),EnvConfigSchema=strictObject({'shared':_0x33899a[_0x32c00a(0x1f1)](_0x33899a[_0x32c00a(0x1a3)]())[_0x32c00a(0x1ba)]([])}),UnotestConfigSchema=strictObject({'baseUrl':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1e5)]()['optional'](),'webServer':WebServerConfigSchema[_0x32c00a(0x1d1)](),'browsers':_0x33899a[_0x32c00a(0x1f1)](BrowserSchema)['min'](0x1),'channel':BrowserChannelSchema,'viewport':ViewportSchema[_0x32c00a(0x1d1)](),'device':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1b8)](0x1)[_0x32c00a(0x1d1)](),'timezone':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1f7)](isTimeZone,_0x3f0f7c=>({'message':_0x32c00a(0x1a0)+_0x3f0f7c+'\x22\x20—\x20expected\x20an\x20IANA\x20name\x20such\x20as\x20\x22Europe/Madrid\x22'}))[_0x32c00a(0x1d1)](),'locale':_0x33899a[_0x32c00a(0x1a3)]()['refine'](isLocale,_0xc58387=>({'message':_0x32c00a(0x1a2)+_0xc58387+_0x32c00a(0x1bc)}))[_0x32c00a(0x1d1)](),'maxContexts':_0x33899a[_0x32c00a(0x1bb)]()[_0x32c00a(0x1f5)]()['positive']()[_0x32c00a(0x1d1)](),'launch':LaunchConfigSchema['optional'](),'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1d1)](),'testDir':_0x33899a[_0x32c00a(0x1a3)]()['min'](0x1),'helpersDir':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1b8)](0x1),'defaultTimeoutMs':_0x33899a[_0x32c00a(0x1bb)]()[_0x32c00a(0x1f5)]()[_0x32c00a(0x1c2)](),'defaultNavigationTimeoutMs':_0x33899a[_0x32c00a(0x1bb)]()[_0x32c00a(0x1f5)]()[_0x32c00a(0x1c2)](),'teardownTimeoutMs':_0x33899a[_0x32c00a(0x1bb)]()[_0x32c00a(0x1f5)]()['positive']()['optional'](),'env':EnvConfigSchema,'linter':LinterConfigSchema,'mcp':McpConfigSchema,'queue':QueueConfigSchema,'schedules':_0x33899a['array'](ScheduleSchema)['default']([]),'sandbox':SandboxConfigSchema});function isTimeZone(_0x176131){var _0x13ca01={_0x4ecf53:0x1c5},_0x85de29=_0x32c00a;try{return new Intl[(_0x85de29(0x1be))](_0x85de29(0x1d8),{'timeZone':_0x176131}),_0x176131[_0x85de29(_0x13ca01._0x4ecf53)]>0x0;}catch{return![];}}__name(isTimeZone,_0x32c00a(0x1d9));function isLocale(_0x57657b){var _0x2f153c=_0x32c00a;try{return Intl[_0x2f153c(0x1e3)](_0x57657b)[_0x2f153c(0x1c5)]===0x1;}catch{return![];}}__name(isLocale,'isLocale');var DEFAULT_CONFIG={'browsers':[_0x32c00a(0x19c)],'retry':{'count':0x0,'on':['transient']},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':_0x32c00a(0x1d3),'pageHtml':'redacted'},'dialogPolicy':_0x32c00a(0x1c9),'testDir':_0x32c00a(0x1bd),'helpersDir':_0x32c00a(0x1e2),'defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x7530,'linter':{'enabled':!![],'rules':{'lint:deep-css':'warn','lint:xpath':_0x32c00a(0x1d0),'lint:obfuscated-class':_0x32c00a(0x1d0),'lint:pause-explicit':_0x32c00a(0x1d0),'lint:disambig-by-index':_0x32c00a(0x19d),'lint:evaluate-discouraged':'warn','lint:scenario-in-root':_0x32c00a(0x1b2),'lint:mustache-in-dsl':_0x32c00a(0x1b2),'lint:goto-concat':'warn','lint:regex-invalid':_0x32c00a(0x1b2),'lint:echo-assert':_0x32c00a(0x1d0),'lint:lint-ok-missing-reason':_0x32c00a(0x1d0),'lint:flow-returns-value':'warn','lint:legacy-layout':_0x32c00a(0x1d0),'lint:external-variable-undeclared':_0x32c00a(0x1b2),'lint:env-host-from-base':_0x32c00a(0x1b2),'lint:one-test-per-file':_0x32c00a(0x1d0),'lint:shadows-dsl-function':_0x32c00a(0x1d0),'validator:unknown-function':'error'}},'env':{'shared':[]},'mcp':{'transport':_0x32c00a(0x1dd)},'queue':{'enabled':!![],'concurrency':0x1},'schedules':[],'sandbox':{}};export{BROWSER_CHANNEL_WORDS,BrowserChannelSchema,BrowserSchema,DEFAULT_CONFIG,DialogPolicySchema,EnvConfigSchema,FailureBundleConfigSchema,LinterConfigSchema,LinterRuleIdSchema,LinterSeveritySchema,McpConfigSchema,QueueConfigSchema,RetryConfigSchema,RetryReasonSchema,SYSTEM_BROWSER_CHANNELS,SandboxConfigSchema,ScheduleSchema,UnotestConfigSchema,ViewportSchema,WebServerConfigSchema};
|
|
1
|
+
var _0x12781d=_0x4bc7;(function(_0xdbd49f,_0x278b24){var _0x3774ee={_0x5c849a:0x1f0,_0x5c6364:0x1da,_0x54e50f:0x1f5,_0x540327:0x1d7,_0x283de6:0x1ef},_0x3fa77f=_0x4bc7,_0x500eb9=_0xdbd49f();while(!![]){try{var _0x521e04=parseInt(_0x3fa77f(_0x3774ee._0x5c849a))/0x1*(parseInt(_0x3fa77f(0x204))/0x2)+-parseInt(_0x3fa77f(0x1dd))/0x3+parseInt(_0x3fa77f(0x205))/0x4*(parseInt(_0x3fa77f(0x207))/0x5)+-parseInt(_0x3fa77f(0x221))/0x6*(parseInt(_0x3fa77f(_0x3774ee._0x5c6364))/0x7)+parseInt(_0x3fa77f(_0x3774ee._0x54e50f))/0x8*(-parseInt(_0x3fa77f(_0x3774ee._0x540327))/0x9)+parseInt(_0x3fa77f(0x1f9))/0xa+parseInt(_0x3fa77f(_0x3774ee._0x283de6))/0xb;if(_0x521e04===_0x278b24)break;else _0x500eb9['push'](_0x500eb9['shift']());}catch(_0x1f774b){_0x500eb9['push'](_0x500eb9['shift']());}}}(_0x5cef,0x2569c));var __defProp=Object[_0x12781d(0x216)],__name=(_0x22b034,_0x541f24)=>__defProp(_0x22b034,_0x12781d(0x20a),{'value':_0x541f24,'configurable':!![]});import{z as _0x3f8e0e}from'zod';import{z}from'zod';import{levenshteinDistance}from'@unotest/core';var MAX_EDITS=0x2;function closestKey(_0x1b5ff1,_0x432b5c){var _0x23fcc6={_0x5b13ba:0x1dc},_0x1261c3=_0x12781d;let _0xacd35;for(const _0x38f171 of _0x432b5c){const _0x267873=levenshteinDistance(_0x1b5ff1[_0x1261c3(_0x23fcc6._0x5b13ba)](),_0x38f171[_0x1261c3(0x1dc)]());if(_0x267873>MAX_EDITS)continue;if(_0xacd35===void 0x0||_0x267873<_0xacd35['distance'])_0xacd35={'key':_0x38f171,'distance':_0x267873};}return _0xacd35?.['key'];}function _0x5cef(){var _0x49220b=['DMfSAwrHDg9YoNvUC3vWCg9YDgvKlwv4ChjLC3nPB24','BwLU','ywnJzxb0','DMfSAwrHDg9YoMfYAxr5','BgLUDdPLBNyTAg9ZDc1MCM9TlwjHC2u','ndGWnZK0nMjyyvrNqG','nePfAwftra','iIdIGjqGzgLKihLVDsbTzwfUici','DMfSAwrHDg9YoMzVCI1ZAgfWzq','BgLUDdPVyMz1C2nHDgvKlwnSyxnZ','BgLUDdPKzwvWlwnZCW','mteZmJCYmfnWzNL0va','B2zM','CMvKywn0zwq','Dw5RBM93BKTLEu1LC3nHz2u','mJa5oduWuxL6sgz0','BNvTyMvY','D2fYBG','BgvUz3rO','rgf0zvrPBwvgB3jTyxq','DMfSAwrHDg9YoNzHCI1ZAgfWzq','lNvUB3rLC3qVzMfPBhvYzxm','BNvSBa','y2HYB21PDw0','CMvJB3jK','zw4Tvvm','nJq5ntrQzffeBvO','mtuWnJHLwu5tC3G','Dw5VDgvZDc9LmMu','mtq1D1nbvhDd','DMfSAwrHDg9YoNn0zxaTy292zxjHz2u','DhjHBNnPzw50','BMfTzq','DMfSAwrHDg9YoNnLBwfUDgLJlwXVC3m','BgLUDdPLEhrLCM5HBc12yxjPywjSzs11BMrLy2XHCMvK','DMfSAwrHDg9YoNDYyxbWzwqTzM9YBwf0','BgLUDdPMBg93lxjLDhvYBNmTDMfSDwu','DMfSAwrHDg9YoNn0zxaTC2HHCgu','zgLZBwLZCW','BgLUDdPYzwDLEc1PBNzHBgLK','BgLUDdPSAw50lw9Rlw1PC3nPBMCTCMvHC29U','BgLUDdPHCgKTy2fSBc1MAwXLlwjVzhK','BgLUDdP4Cgf0Aa','yM9VBgvHBG','zgvMAw5LuhjVCgvYDhK','C3rYAwn0t2jQzwn0','Dw5VDgvZDc9LmMuVx2HLBhbLCNm','y2XVC2vZDeTLEq','iIdIGjqGzxHWzwn0zwqGyw4GsufoqsbUyw1Lihn1y2GGyxmGiKv1CM9Wzs9nywrYAwqI','Aw50','AM9PBG','DxjS','zgvMyxvSDa','AxnuAw1LwM9Uzq','C3rKAw8','nMTLyK9YEq','BgLUDdPWyxvZzs1LEhbSAwnPDa','B3b0Aw9UywW','y3vZDg9T','B2jQzwn0','yxjYyxK','CMvMAw5L','ywrKsxnZDwu','DMfSAwrHDg9YoMz1BMn0Aw9UlxnOyxbL','A2v5CW','zxjYB3i','zgvMyxvSDevYCM9Y','DMfSAwrHDg9YoNn0CMLUzY1JB25Jyxq','zgv2AwnL','BxnLzgDL','Dw5RBM93BIbRzxKGiG','BgLUDdPVBMuTDgvZDc1WzxiTzMLSzq','DMLLD3bVCNq','zw51Bq','BgLUDdPSzwDHy3KTBgf5B3v0','y29Kzq','BgLUDdPZAgfKB3DZlwrZBc1MDw5JDgLVBG','oxjfsvHdvW','BgLUDdPKAxnHBwjPzY1IEs1PBMrLEa','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlxn0yxrLBwvUDa','mtCWnZK3oxDmww5dAq','Bwf4','Dg9mB3DLCKnHC2u','ndC1mtCZy2jXALrY','DMLLD3bVCNq6ig51BgWGA2vLChmGDgHLihjLywWGyNjVD3nLCIb3Aw5KB3CSigfUzcbKzxzPy2uGiG','BgLUDdPTDxn0ywnOzs1PBI1KC2W','BgLUDdPZy2vUyxjPBY1PBI1YB290','wM9KsxnZDwvdB2rL','C3rYAw5N','BwfUDwfS','y2HYB21L','BgL0zxjHBa','BwfW','Cg9ZAxrPDMu','y2HYB21LlwjLDge','Dw5YzwnVz25PEMvKx2TLExm'];_0x5cef=function(){return _0x49220b;};return _0x5cef();}__name(closestKey,_0x12781d(0x219));function unknownKeyMessage(_0x2d0d75,_0x3618de){var _0x12d474={_0x5baa6a:0x21c},_0x7bd79f={_0x369b7f:0x1d0,_0x1d0233:0x1f1},_0x100a71=_0x12781d;return _0x2d0d75[_0x100a71(0x1e6)](_0x545dad=>{var _0x363ebe=_0x100a71;const _0x39b1f9=closestKey(_0x545dad,_0x3618de);return _0x39b1f9===void 0x0?_0x363ebe(_0x7bd79f._0x369b7f)+_0x545dad+'\x22\x20—\x20not\x20a\x20config\x20key;\x20check\x20your\x20@unotest/web\x20version\x20if\x20it\x20comes\x20from\x20a\x20newer\x20release':_0x363ebe(_0x7bd79f._0x369b7f)+_0x545dad+_0x363ebe(_0x7bd79f._0x1d0233)+_0x39b1f9+'\x22?';})[_0x100a71(_0x12d474._0x5baa6a)](';\x20');}__name(unknownKeyMessage,_0x12781d(0x1f8));function strictObject(_0x5d9e02){var _0x274583=_0x12781d;const _0x40a6cf=Object['keys'](_0x5d9e02);return z[_0x274583(0x225)](_0x5d9e02,{'errorMap':__name((_0x51ebbb,_0x292145)=>_0x51ebbb[_0x274583(0x1d5)]===z['ZodIssueCode'][_0x274583(0x1e9)]?{'message':unknownKeyMessage(_0x51ebbb[_0x274583(0x22a)],_0x40a6cf)}:{'message':_0x292145[_0x274583(0x1cc)]},'errorMap')})['strict']();}__name(strictObject,_0x12781d(0x217));import{BUNDLED_BROWSER_CHANNEL}from'@unotest/protocol';import{z as _0x48b82e}from'zod';import{UnotestError}from'@unotest/core';var LaunchConfigSchema=_0x48b82e['object']({'userDataDir':_0x48b82e[_0x12781d(0x1e2)]()[_0x12781d(0x1eb)](0x1)[_0x12781d(0x223)](),'args':_0x48b82e[_0x12781d(0x226)](_0x48b82e[_0x12781d(0x1e2)]()[_0x12781d(0x1eb)](0x1))[_0x12781d(0x223)]()})['strict'](),BrowserSchema=_0x3f8e0e[_0x12781d(0x1d3)]([_0x12781d(0x201),'firefox','webkit']),SYSTEM_BROWSER_CHANNELS=[_0x12781d(0x1e4),_0x12781d(0x1cf),_0x12781d(0x1e8),_0x12781d(0x201)],BROWSER_CHANNEL_WORDS=[...SYSTEM_BROWSER_CHANNELS,BUNDLED_BROWSER_CHANNEL],BrowserChannelSchema=_0x3f8e0e['union']([_0x3f8e0e['enum'](SYSTEM_BROWSER_CHANNELS),_0x3f8e0e[_0x12781d(0x1e5)](BUNDLED_BROWSER_CHANNEL)['transform'](()=>null),_0x3f8e0e[_0x12781d(0x200)]()])['optional'](),ViewportSchema=strictObject({'width':_0x3f8e0e[_0x12781d(0x1fa)]()[_0x12781d(0x21b)]()[_0x12781d(0x1e7)]()[_0x12781d(0x223)](),'height':_0x3f8e0e[_0x12781d(0x1fa)]()[_0x12781d(0x21b)]()[_0x12781d(0x1e7)]()[_0x12781d(0x223)](),'deviceScaleFactor':_0x3f8e0e[_0x12781d(0x1fa)]()[_0x12781d(0x1e7)]()[_0x12781d(0x223)]()}),ConfigViewportSchema=ViewportSchema['nullable'](),RetryReasonSchema=_0x3f8e0e[_0x12781d(0x1d3)]([_0x12781d(0x209),'network','crash']),RetryConfigSchema=strictObject({'count':_0x3f8e0e['number']()[_0x12781d(0x21b)]()[_0x12781d(0x1eb)](0x0)[_0x12781d(0x1db)](0xa),'on':_0x3f8e0e[_0x12781d(0x226)](RetryReasonSchema)}),FailureBundleConfigSchema=strictObject({'tier1':_0x3f8e0e['literal'](!![])[_0x12781d(0x21e)](!![]),'tier2':_0x3f8e0e[_0x12781d(0x215)](),'tier3':strictObject({'network':_0x3f8e0e[_0x12781d(0x215)](),'video':_0x3f8e0e[_0x12781d(0x215)]()}),'retention':strictObject({'runs':_0x3f8e0e['number']()[_0x12781d(0x21b)]()['positive'](),'days':_0x3f8e0e[_0x12781d(0x1fa)]()['int']()[_0x12781d(0x1e7)]()}),'storageDir':_0x3f8e0e[_0x12781d(0x1e2)]()['min'](0x1),'pageHtml':_0x3f8e0e['enum'](['redacted','full'])}),DialogPolicySchema=_0x3f8e0e[_0x12781d(0x1d3)]([_0x12781d(0x1ec),_0x12781d(0x210),_0x12781d(0x1e3)]),LinterRuleIdSchema=_0x3f8e0e['enum']([_0x12781d(0x1f4),_0x12781d(0x214),_0x12781d(0x1f3),_0x12781d(0x222),_0x12781d(0x1d8),'lint:evaluate-discouraged',_0x12781d(0x1e0),_0x12781d(0x1df),'lint:goto-concat',_0x12781d(0x211),'lint:echo-assert',_0x12781d(0x213),_0x12781d(0x212),_0x12781d(0x20e),_0x12781d(0x1d4),_0x12781d(0x20c),_0x12781d(0x1ee),_0x12781d(0x1d1),_0x12781d(0x1d6),'validator:unknown-function',_0x12781d(0x1ed),'validator:arg-kind',_0x12781d(0x208),_0x12781d(0x20f),'validator:meta-shape',_0x12781d(0x229),_0x12781d(0x1f2),'validator:if-shape',_0x12781d(0x1fe),_0x12781d(0x1d9),_0x12781d(0x1ea),_0x12781d(0x1cd),_0x12781d(0x20b),'validator:list-arg',_0x12781d(0x20d)]),LinterSeveritySchema=_0x3f8e0e[_0x12781d(0x1d3)]([_0x12781d(0x1f6),'warn',_0x12781d(0x22b)]),LinterConfigSchema=strictObject({'enabled':_0x3f8e0e[_0x12781d(0x215)](),'rules':_0x3f8e0e[_0x12781d(0x202)](LinterRuleIdSchema,LinterSeveritySchema)}),QueueConfigSchema=strictObject({'enabled':_0x3f8e0e[_0x12781d(0x215)]()[_0x12781d(0x21e)](!![]),'concurrency':_0x3f8e0e[_0x12781d(0x1fa)]()[_0x12781d(0x21b)]()[_0x12781d(0x1e7)]()['default'](0x1)}),ScheduleSchema=strictObject({'collection':_0x3f8e0e[_0x12781d(0x1e2)]()['min'](0x1),'cron':_0x3f8e0e[_0x12781d(0x1e2)]()['min'](0x1),'env':_0x3f8e0e[_0x12781d(0x1e2)]()[_0x12781d(0x1eb)](0x1)[_0x12781d(0x223)](),'prepare':_0x3f8e0e[_0x12781d(0x1e2)]()[_0x12781d(0x1eb)](0x1)[_0x12781d(0x223)]()}),McpConfigSchema=strictObject({'transport':_0x3f8e0e[_0x12781d(0x1e5)](_0x12781d(0x220))}),SandboxConfigSchema=strictObject({'shellCwd':_0x3f8e0e['string']()[_0x12781d(0x223)](),'shellTimeoutMs':_0x3f8e0e[_0x12781d(0x1fa)]()['int']()[_0x12781d(0x1e7)]()[_0x12781d(0x223)](),'exportSecrets':_0x3f8e0e[_0x12781d(0x226)](_0x3f8e0e[_0x12781d(0x1e2)]())['optional'](),'database':_0x3f8e0e['string']()[_0x12781d(0x223)](),'apiBaseUrl':_0x3f8e0e[_0x12781d(0x1e2)]()[_0x12781d(0x21d)]()['optional'](),'uploadDir':_0x3f8e0e[_0x12781d(0x1e2)]()['optional']()}),WebServerConfigSchema=strictObject({'command':_0x3f8e0e[_0x12781d(0x1e2)]()[_0x12781d(0x1eb)](0x1),'url':_0x3f8e0e['string']()[_0x12781d(0x21d)](),'reuseExistingServer':_0x3f8e0e[_0x12781d(0x215)]()[_0x12781d(0x21e)](!![]),'timeoutMs':_0x3f8e0e['number']()[_0x12781d(0x21b)]()['positive']()['default'](0xea60)}),EnvConfigSchema=strictObject({'shared':_0x3f8e0e[_0x12781d(0x226)](_0x3f8e0e[_0x12781d(0x1e2)]())['default']([])}),UnotestConfigSchema=strictObject({'baseUrl':_0x3f8e0e[_0x12781d(0x1e2)]()[_0x12781d(0x21d)]()[_0x12781d(0x223)](),'webServer':WebServerConfigSchema['optional'](),'browsers':_0x3f8e0e[_0x12781d(0x226)](BrowserSchema)[_0x12781d(0x1eb)](0x1),'channel':BrowserChannelSchema,'viewport':ConfigViewportSchema['optional'](),'device':_0x3f8e0e['string']()[_0x12781d(0x1eb)](0x1)['optional'](),'timezone':_0x3f8e0e[_0x12781d(0x1e2)]()[_0x12781d(0x227)](isTimeZone,_0x3634e0=>({'message':'unknown\x20time\x20zone\x20\x22'+_0x3634e0+_0x12781d(0x21a)}))[_0x12781d(0x223)](),'locale':_0x3f8e0e[_0x12781d(0x1e2)]()[_0x12781d(0x227)](isLocale,_0x2df1b8=>({'message':'invalid\x20locale\x20\x22'+_0x2df1b8+'\x22\x20—\x20expected\x20a\x20BCP\x2047\x20tag\x20such\x20as\x20\x22es-ES\x22'}))[_0x12781d(0x223)](),'maxContexts':_0x3f8e0e[_0x12781d(0x1fa)]()[_0x12781d(0x21b)]()[_0x12781d(0x1e7)]()[_0x12781d(0x223)](),'launch':LaunchConfigSchema[_0x12781d(0x223)](),'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':_0x3f8e0e[_0x12781d(0x1e2)]()['optional'](),'testDir':_0x3f8e0e[_0x12781d(0x1e2)]()[_0x12781d(0x1eb)](0x1),'helpersDir':_0x3f8e0e[_0x12781d(0x1e2)]()[_0x12781d(0x1eb)](0x1),'defaultTimeoutMs':_0x3f8e0e[_0x12781d(0x1fa)]()['int']()[_0x12781d(0x1e7)](),'defaultNavigationTimeoutMs':_0x3f8e0e[_0x12781d(0x1fa)]()[_0x12781d(0x21b)]()[_0x12781d(0x1e7)](),'teardownTimeoutMs':_0x3f8e0e[_0x12781d(0x1fa)]()[_0x12781d(0x21b)]()[_0x12781d(0x1e7)]()[_0x12781d(0x223)](),'env':EnvConfigSchema,'linter':LinterConfigSchema,'mcp':McpConfigSchema,'queue':QueueConfigSchema,'schedules':_0x3f8e0e['array'](ScheduleSchema)['default']([]),'sandbox':SandboxConfigSchema})['superRefine']((_0x2c92a9,_0x2c848d)=>{var _0x35d3a6={_0x5d198e:0x228,_0x2fc226:0x1e1},_0x29f5e8=_0x12781d;_0x2c92a9['viewport']===null&&_0x2c92a9[_0x29f5e8(0x1ce)]!==void 0x0&&_0x2c848d[_0x29f5e8(_0x35d3a6._0x5d198e)]({'code':_0x3f8e0e[_0x29f5e8(_0x35d3a6._0x2fc226)][_0x29f5e8(0x224)],'path':[_0x29f5e8(0x1d2)],'message':_0x29f5e8(0x1de)+_0x2c92a9[_0x29f5e8(0x1ce)]+'\x22\x20sets\x20its\x20own\x20size\x20and\x20scale\x20—\x20drop\x20one\x20of\x20them.'});});function isTimeZone(_0x32c3da){var _0x544df2={_0x4b1885:0x1fd,_0x9905e3:0x1fc},_0x169910=_0x12781d;try{return new Intl[(_0x169910(_0x544df2._0x4b1885))](_0x169910(0x203),{'timeZone':_0x32c3da}),_0x32c3da[_0x169910(_0x544df2._0x9905e3)]>0x0;}catch{return![];}}function _0x4bc7(_0x588736,_0xc6f124){_0x588736=_0x588736-0x1cc;var _0x5cefe6=_0x5cef();var _0x4bc70a=_0x5cefe6[_0x588736];if(_0x4bc7['PTIemz']===undefined){var _0x57d7f6=function(_0x103f5a){var _0x4cc2ac='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x3f8e0e='',_0x48b82e='';for(var _0x22b034=0x0,_0x541f24,_0x1b5ff1,_0x432b5c=0x0;_0x1b5ff1=_0x103f5a['charAt'](_0x432b5c++);~_0x1b5ff1&&(_0x541f24=_0x22b034%0x4?_0x541f24*0x40+_0x1b5ff1:_0x1b5ff1,_0x22b034++%0x4)?_0x3f8e0e+=String['fromCharCode'](0xff&_0x541f24>>(-0x2*_0x22b034&0x6)):0x0){_0x1b5ff1=_0x4cc2ac['indexOf'](_0x1b5ff1);}for(var _0xacd35=0x0,_0x38f171=_0x3f8e0e['length'];_0xacd35<_0x38f171;_0xacd35++){_0x48b82e+='%'+('00'+_0x3f8e0e['charCodeAt'](_0xacd35)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x48b82e);};_0x4bc7['ZlpNzz']=_0x57d7f6,_0x4bc7['DcZVCo']={},_0x4bc7['PTIemz']=!![];}var _0x1a90df=_0x5cefe6[0x0],_0x3982b7=_0x588736+_0x1a90df,_0x7ce58e=_0x4bc7['DcZVCo'][_0x3982b7];return!_0x7ce58e?(_0x4bc70a=_0x4bc7['ZlpNzz'](_0x4bc70a),_0x4bc7['DcZVCo'][_0x3982b7]=_0x4bc70a):_0x4bc70a=_0x7ce58e,_0x4bc70a;}__name(isTimeZone,_0x12781d(0x21f));function isLocale(_0x1ba508){try{return Intl['getCanonicalLocales'](_0x1ba508)['length']===0x1;}catch{return![];}}__name(isLocale,'isLocale');var DEFAULT_CONFIG={'browsers':[_0x12781d(0x201)],'retry':{'count':0x0,'on':[_0x12781d(0x209)]},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':_0x12781d(0x1ff),'pageHtml':_0x12781d(0x1f7)},'dialogPolicy':_0x12781d(0x1ec),'testDir':_0x12781d(0x206),'helpersDir':_0x12781d(0x218),'defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x7530,'linter':{'enabled':!![],'rules':{'lint:deep-css':'warn','lint:xpath':_0x12781d(0x1fb),'lint:obfuscated-class':_0x12781d(0x1fb),'lint:pause-explicit':_0x12781d(0x1fb),'lint:disambig-by-index':_0x12781d(0x1f6),'lint:evaluate-discouraged':'warn','lint:scenario-in-root':_0x12781d(0x22b),'lint:mustache-in-dsl':'error','lint:goto-concat':_0x12781d(0x1fb),'lint:regex-invalid':'error','lint:echo-assert':_0x12781d(0x1fb),'lint:lint-ok-missing-reason':'warn','lint:flow-returns-value':_0x12781d(0x1fb),'lint:legacy-layout':_0x12781d(0x1fb),'lint:external-variable-undeclared':_0x12781d(0x22b),'lint:env-host-from-base':_0x12781d(0x22b),'lint:one-test-per-file':_0x12781d(0x1fb),'lint:shadows-dsl-function':_0x12781d(0x1fb),'validator:unknown-function':_0x12781d(0x22b)}},'env':{'shared':[]},'mcp':{'transport':_0x12781d(0x220)},'queue':{'enabled':!![],'concurrency':0x1},'schedules':[],'sandbox':{}};export{BROWSER_CHANNEL_WORDS,BrowserChannelSchema,BrowserSchema,DEFAULT_CONFIG,DialogPolicySchema,EnvConfigSchema,FailureBundleConfigSchema,LinterConfigSchema,LinterRuleIdSchema,LinterSeveritySchema,McpConfigSchema,QueueConfigSchema,RetryConfigSchema,RetryReasonSchema,SYSTEM_BROWSER_CHANNELS,SandboxConfigSchema,ScheduleSchema,UnotestConfigSchema,ViewportSchema,WebServerConfigSchema};
|
package/dist/driver/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { E as ElementHint, S as ScreenshotOptions, L as LocatorValue, C as CaptureFrame, a as CaptureRect, N as NetworkEntry, W as WebDriver, b as LaunchOptions, c as ContextOptions, D as DriverContext, A as AttachOptions } from '../interfaces-
|
|
2
|
-
export { d as ActionTimeout, e as CheckOptions, f as ClickOptions, g as CookieOptions, h as DriverPage, F as FillOptions, G as GotoOptions, H as HoverOptions, i as NavigationOptions, P as PressOptions, R as ReloadOptions, j as SelectOptions, V as Viewport, k as ViewportSize, l as WaitOptions, m as WaitState } from '../interfaces-
|
|
1
|
+
import { B as BoundingBox, E as ElementHint, S as ScreenshotOptions, L as LocatorValue, C as CaptureFrame, a as CaptureRect, N as NetworkEntry, W as WebDriver, b as LaunchOptions, c as ContextOptions, D as DriverContext, A as AttachOptions } from '../interfaces-OvnJKELk.js';
|
|
2
|
+
export { d as ActionTimeout, e as CheckOptions, f as ClickOptions, g as CookieOptions, h as DriverPage, F as FillOptions, G as GotoOptions, H as HoverOptions, i as NavigationOptions, P as PressOptions, R as ReloadOptions, j as SelectOptions, V as Viewport, k as ViewportSize, l as WaitOptions, m as WaitState } from '../interfaces-OvnJKELk.js';
|
|
3
3
|
import '@unotest/protocol';
|
|
4
4
|
import '../config/schema.js';
|
|
5
5
|
import 'zod';
|
|
@@ -30,6 +30,8 @@ interface FakeBehavior {
|
|
|
30
30
|
inputValueByDefault?: string;
|
|
31
31
|
/** Default isVisible() response. Default: true. */
|
|
32
32
|
isVisibleByDefault?: boolean;
|
|
33
|
+
/** Default boundingBox() response. Default: a 100×20 box at the origin. */
|
|
34
|
+
boundingBoxByDefault?: BoundingBox | null;
|
|
33
35
|
/** Default isDisabled() response. Default: false. */
|
|
34
36
|
isDisabledByDefault?: boolean;
|
|
35
37
|
/** Default checkedState() response — null = "not a checkable element",
|
|
@@ -75,6 +77,11 @@ interface FakeBehavior {
|
|
|
75
77
|
* integration tests so the FakeContext's `click` becomes a tab
|
|
76
78
|
* opener without touching production drivers. */
|
|
77
79
|
popupOnClick?: string;
|
|
80
|
+
/** The context stands for a browser profile (`launch.userDataDir`) —
|
|
81
|
+
* the only kind where extension service workers exist. Default: false. */
|
|
82
|
+
profile?: boolean;
|
|
83
|
+
/** URLs of the service workers running when the context opens. */
|
|
84
|
+
serviceWorkers?: ReadonlyArray<string>;
|
|
78
85
|
}
|
|
79
86
|
declare class FakeWebDriver implements WebDriver {
|
|
80
87
|
private readonly behavior;
|