@unotest/web 0.41.0 → 0.43.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 +590 -3
- package/README.md +68 -6
- package/dist/config/schema.d.ts +111 -55
- package/dist/config/schema.js +1 -1
- package/dist/driver/index.d.ts +2 -2
- package/dist/driver/index.js +1 -1
- package/dist/dsl/index.d.ts +68 -4
- package/dist/dsl/index.js +1 -1
- package/dist/dsl/web-dsl-language-service.d.ts +1 -1
- package/dist/dsl/web-dsl-language-service.js +1 -1
- package/dist/inspection/page-inject.d.ts +1 -1
- package/dist/{interfaces-B34N4rfI.d.ts → interfaces-7nMNCr2h.d.ts} +6 -0
- package/dist/{linter-Yf4gPe5J.d.ts → linter-BWSAYBQy.d.ts} +24 -0
- package/dist/mcp/server.js +1 -1
- package/dist/runner/cli.d.ts +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/agent-integration.md +109 -7
- package/guides/dsl-reference.md +19 -0
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -34,6 +34,11 @@ self-installs on the first `lint` / `e2e` run after upgrading; refresh by
|
|
|
34
34
|
hand with `npx @unotest/web types`. Details: the "Editor setup" section of
|
|
35
35
|
`node_modules/@unotest/web/guides/dsl-reference.md`.
|
|
36
36
|
|
|
37
|
+
Testing a browser extension? `launch` in `unotest.config` starts the browser
|
|
38
|
+
with a profile (`userDataDir`) and extra arguments (`args`, e.g.
|
|
39
|
+
`--load-extension=./ext`; Chromium only). On a profile every scenario shares
|
|
40
|
+
one browser context — no isolation between them, and the run log says so.
|
|
41
|
+
|
|
37
42
|
## 2. Open the viewer
|
|
38
43
|
|
|
39
44
|
```sh
|
|
@@ -147,15 +152,47 @@ npx @unotest/web box create # rents a box named after the project, size S
|
|
|
147
152
|
boxes — and keeps the key in `~/.config/unotest/credentials.json`
|
|
148
153
|
(mode 0600). `box create` creates the box with the environments the
|
|
149
154
|
suite already runs locally (each `unotest/.env.<name>` and its
|
|
150
|
-
`APP_BASE_URL`),
|
|
151
|
-
the Checkout link and waits for the payment), waits for the box, writes
|
|
155
|
+
`APP_BASE_URL`), waits for the box, writes
|
|
152
156
|
`UNOTEST_BOX_URL` to `unotest/.env` and the push and read tokens to
|
|
153
157
|
`unotest/.secrets`, pushes the suite and prints the viewer's address.
|
|
154
158
|
The tokens live thirty days; `bundle push` and `box …` re-mint them
|
|
155
159
|
through the cloud when a box says they have expired, and `box access`
|
|
156
|
-
does it on demand. `box
|
|
157
|
-
|
|
158
|
-
`
|
|
160
|
+
does it on demand. `box list` shows every box on the account, `box status`
|
|
161
|
+
one of them, and `box logs` the end of a box's own log without logging in to
|
|
162
|
+
it; `box destroy` does what it says, and `whoami` and `logout` complete the
|
|
163
|
+
set. In CI, export `UNOTEST_CLOUD_TOKEN` instead of signing in.
|
|
164
|
+
|
|
165
|
+
Credit is added in the cabinet, by card, under "Add credit" on its home page
|
|
166
|
+
— never from the terminal. When the balance does not cover a new box's first
|
|
167
|
+
hour, `box create` says how much is missing (as far as the key may read the
|
|
168
|
+
balance) and where to add it, and exits 75 with nothing created and nothing
|
|
169
|
+
charged; run it again once the credit is there.
|
|
170
|
+
|
|
171
|
+
Anything that spends money or cannot be undone — creating a box, deleting
|
|
172
|
+
one, switching the Picker on — **waits for a person** unless the key is a CI
|
|
173
|
+
key. The CLI prints where to approve it and how long the request lives, waits
|
|
174
|
+
there, and then carries on exactly as if the call had gone straight through.
|
|
175
|
+
Nobody answers in ten minutes: exit code 75, nothing created and nothing
|
|
176
|
+
charged, run the command again. Somebody declines: exit code 2. `--yes` does
|
|
177
|
+
not change any of this — the flag says the terminal need not ask, not that
|
|
178
|
+
the account need not.
|
|
179
|
+
`approvals` lists what is waiting, and `approvals <id>` says what became of
|
|
180
|
+
one.
|
|
181
|
+
|
|
182
|
+
An agent does the same through the MCP server's `cloud_*` tools — listing,
|
|
183
|
+
renting, deleting, logs, the balance — with the same key and the same rules:
|
|
184
|
+
a rent or a delete comes back as a request to wait on, and
|
|
185
|
+
`cloud_approval_wait` waits for the person's answer.
|
|
186
|
+
|
|
187
|
+
A key carries **permissions**. `login` asks for enough to see the
|
|
188
|
+
account's boxes and work with them, never its money, and the approval
|
|
189
|
+
page in the browser is where you can narrow that further; `login` and
|
|
190
|
+
`whoami` print what the key ended up with. A key that may not read the
|
|
191
|
+
balance is still a working key — `whoami` says the balance is not
|
|
192
|
+
visible to it instead of failing — and a call it may not make comes
|
|
193
|
+
back as `insufficient-scope`, which no amount of signing in again will
|
|
194
|
+
change. Keys for an agent are issued in the cabinet, with the
|
|
195
|
+
permissions ticked there.
|
|
159
196
|
|
|
160
197
|
The **Picker** — grounding intent locators on the box's grounder — comes
|
|
161
198
|
with the box today: it lists at €0.05–€0.13 an hour depending on size,
|
|
@@ -182,6 +219,27 @@ Picker is on — which models the cloud grounds with: `Our GPU` or
|
|
|
182
219
|
`UNOTEST_GROUNDER_MODE`; a cloud that has not heard from its grounder
|
|
183
220
|
prints nothing rather than a guess.
|
|
184
221
|
|
|
222
|
+
**How a suite got installed is visible too.** `box envs` prints, under
|
|
223
|
+
each environment, how long the box took to install its bundle and where
|
|
224
|
+
the packages came from — `installed in 12.3s from this box's cache (252
|
|
225
|
+
of 252 from cache)`. `box run <id>` prints the same line for the bundle
|
|
226
|
+
that run came from, while the environment still serves it. The source is
|
|
227
|
+
the box's own measurement (what its npm cache already held of what the
|
|
228
|
+
lockfile names), not a reading of npm's output: on a fast registry a cold
|
|
229
|
+
install and a warm one take the same number of seconds, so the time alone
|
|
230
|
+
proves nothing. A box that says nothing about installs — one older than
|
|
231
|
+
this — prints nothing extra.
|
|
232
|
+
|
|
233
|
+
**A box never updates itself.** `box status` prints its version — what it
|
|
234
|
+
runs, and what its channel offers when the two differ. A new release is an
|
|
235
|
+
offer: the box keeps running what it is on until somebody presses **Update**
|
|
236
|
+
on its card in the cabinet, or an agent calls
|
|
237
|
+
`POST /api/v1/boxes/<name>/update` with the version it was offered (a
|
|
238
|
+
version that has since been overtaken is refused, with the one that is on
|
|
239
|
+
offer now). There is no `box update` command: the decision is a person's,
|
|
240
|
+
and the cabinet is where it is made. A cloud that reports no versions leaves
|
|
241
|
+
`box status` silent about them.
|
|
242
|
+
|
|
185
243
|
**Without a box.** An account can have the Picker on with no box rented
|
|
186
244
|
at all; the switch and the price for that live in the cabinet, and
|
|
187
245
|
`picker on` connects THIS project to it — it fetches the project's own
|
|
@@ -336,7 +394,11 @@ and can be revoked. Either way it is read-only whatever your role on the
|
|
|
336
394
|
box — it cannot start a run or change a value. `UNOTEST_BOX_TOKEN` is the
|
|
337
395
|
project's push credential and cannot read runs. `box envs` lists the
|
|
338
396
|
environments the box serves — an empty list means the box has none yet,
|
|
339
|
-
not that the token is too weak to see them.
|
|
397
|
+
not that the token is too weak to see them. The commands that name one
|
|
398
|
+
(`box runs`, `box queue`, `box run`, …) say the same thing rather than
|
|
399
|
+
sending the name to a box that has nothing to match it against: a box
|
|
400
|
+
that names none has none configured, which is ours to put right. A run
|
|
401
|
+
you have just ordered may take a moment to appear.
|
|
340
402
|
|
|
341
403
|
## 5. Watch it run — the viewer
|
|
342
404
|
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -10,12 +10,19 @@ type Browser = z.infer<typeof BrowserSchema>;
|
|
|
10
10
|
* Ignored for firefox / webkit browsers (Playwright has no system
|
|
11
11
|
* channel for those). Chosen at init time via the browser prompt;
|
|
12
12
|
* user can flip later in unotest.config.{mjs,js,ts}. */
|
|
13
|
-
declare const
|
|
13
|
+
declare const SYSTEM_BROWSER_CHANNELS: readonly ["chrome", "msedge", "chrome-beta", "chromium"];
|
|
14
|
+
/** Every word either input accepts, in one place: this schema and the
|
|
15
|
+
* reader of `UNOTEST_BROWSER_CHANNEL` (`runner-env.ts`) take the same
|
|
16
|
+
* list. They used to keep two — `bundled` was a word the variable knew
|
|
17
|
+
* and the config refused, while the `.env` template promised the
|
|
18
|
+
* variable merely "overrides channel" (#209). */
|
|
19
|
+
declare const BROWSER_CHANNEL_WORDS: readonly ["chrome", "msedge", "chrome-beta", "chromium", "bundled"];
|
|
20
|
+
declare const BrowserChannelSchema: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["chrome", "msedge", "chrome-beta", "chromium"]>, z.ZodEffects<z.ZodLiteral<"bundled">, null, "bundled">, z.ZodNull]>>;
|
|
14
21
|
type BrowserChannel = z.infer<typeof BrowserChannelSchema>;
|
|
15
22
|
declare const ViewportSchema: z.ZodObject<{
|
|
16
23
|
width: z.ZodNumber;
|
|
17
24
|
height: z.ZodNumber;
|
|
18
|
-
}, "
|
|
25
|
+
}, "strict", z.ZodTypeAny, {
|
|
19
26
|
width: number;
|
|
20
27
|
height: number;
|
|
21
28
|
}, {
|
|
@@ -28,12 +35,12 @@ type RetryReason = z.infer<typeof RetryReasonSchema>;
|
|
|
28
35
|
declare const RetryConfigSchema: z.ZodObject<{
|
|
29
36
|
count: z.ZodNumber;
|
|
30
37
|
on: z.ZodArray<z.ZodEnum<["transient", "network", "crash"]>, "many">;
|
|
31
|
-
}, "
|
|
38
|
+
}, "strict", z.ZodTypeAny, {
|
|
32
39
|
count: number;
|
|
33
|
-
on: ("
|
|
40
|
+
on: ("transient" | "network" | "crash")[];
|
|
34
41
|
}, {
|
|
35
42
|
count: number;
|
|
36
|
-
on: ("
|
|
43
|
+
on: ("transient" | "network" | "crash")[];
|
|
37
44
|
}>;
|
|
38
45
|
type RetryConfig = z.infer<typeof RetryConfigSchema>;
|
|
39
46
|
declare const FailureBundleConfigSchema: z.ZodObject<{
|
|
@@ -44,7 +51,7 @@ declare const FailureBundleConfigSchema: z.ZodObject<{
|
|
|
44
51
|
tier3: z.ZodObject<{
|
|
45
52
|
network: z.ZodBoolean;
|
|
46
53
|
video: z.ZodBoolean;
|
|
47
|
-
}, "
|
|
54
|
+
}, "strict", z.ZodTypeAny, {
|
|
48
55
|
network: boolean;
|
|
49
56
|
video: boolean;
|
|
50
57
|
}, {
|
|
@@ -54,7 +61,7 @@ declare const FailureBundleConfigSchema: z.ZodObject<{
|
|
|
54
61
|
retention: z.ZodObject<{
|
|
55
62
|
runs: z.ZodNumber;
|
|
56
63
|
days: z.ZodNumber;
|
|
57
|
-
}, "
|
|
64
|
+
}, "strict", z.ZodTypeAny, {
|
|
58
65
|
runs: number;
|
|
59
66
|
days: number;
|
|
60
67
|
}, {
|
|
@@ -62,7 +69,7 @@ declare const FailureBundleConfigSchema: z.ZodObject<{
|
|
|
62
69
|
days: number;
|
|
63
70
|
}>;
|
|
64
71
|
storageDir: z.ZodString;
|
|
65
|
-
}, "
|
|
72
|
+
}, "strict", z.ZodTypeAny, {
|
|
66
73
|
tier1: true;
|
|
67
74
|
tier2: boolean;
|
|
68
75
|
tier3: {
|
|
@@ -90,19 +97,19 @@ declare const FailureBundleConfigSchema: z.ZodObject<{
|
|
|
90
97
|
type FailureBundleConfig = z.infer<typeof FailureBundleConfigSchema>;
|
|
91
98
|
declare const DialogPolicySchema: z.ZodEnum<["accept", "dismiss", "manual"]>;
|
|
92
99
|
type DialogPolicy = z.infer<typeof DialogPolicySchema>;
|
|
93
|
-
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:one-test-per-file", "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"]>;
|
|
100
|
+
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", "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"]>;
|
|
94
101
|
type LinterRuleId = z.infer<typeof LinterRuleIdSchema>;
|
|
95
102
|
declare const LinterSeveritySchema: z.ZodEnum<["off", "warn", "error"]>;
|
|
96
103
|
type LinterSeverity = z.infer<typeof LinterSeveritySchema>;
|
|
97
104
|
declare const LinterConfigSchema: z.ZodObject<{
|
|
98
105
|
enabled: z.ZodBoolean;
|
|
99
|
-
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:one-test-per-file", "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"]>>;
|
|
100
|
-
}, "
|
|
106
|
+
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", "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"]>>;
|
|
107
|
+
}, "strict", z.ZodTypeAny, {
|
|
101
108
|
enabled: boolean;
|
|
102
|
-
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:one-test-per-file" | "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">>;
|
|
109
|
+
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" | "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">>;
|
|
103
110
|
}, {
|
|
104
111
|
enabled: boolean;
|
|
105
|
-
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:one-test-per-file" | "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">>;
|
|
112
|
+
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" | "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">>;
|
|
106
113
|
}>;
|
|
107
114
|
type LinterConfig = z.infer<typeof LinterConfigSchema>;
|
|
108
115
|
declare const QueueConfigSchema: z.ZodObject<{
|
|
@@ -112,7 +119,7 @@ declare const QueueConfigSchema: z.ZodObject<{
|
|
|
112
119
|
/** How many runs may be in flight for one environment. 1 (the default)
|
|
113
120
|
* is strict FIFO — the machine runs one thing at a time. */
|
|
114
121
|
concurrency: z.ZodDefault<z.ZodNumber>;
|
|
115
|
-
}, "
|
|
122
|
+
}, "strict", z.ZodTypeAny, {
|
|
116
123
|
enabled: boolean;
|
|
117
124
|
concurrency: number;
|
|
118
125
|
}, {
|
|
@@ -136,7 +143,7 @@ declare const ScheduleSchema: z.ZodObject<{
|
|
|
136
143
|
* — seeding a database, resetting a fixture. Its failure is reported
|
|
137
144
|
* as "the environment was not prepared", not as a red suite. */
|
|
138
145
|
prepare: z.ZodOptional<z.ZodString>;
|
|
139
|
-
}, "
|
|
146
|
+
}, "strict", z.ZodTypeAny, {
|
|
140
147
|
collection: string;
|
|
141
148
|
cron: string;
|
|
142
149
|
env?: string | undefined;
|
|
@@ -150,7 +157,7 @@ declare const ScheduleSchema: z.ZodObject<{
|
|
|
150
157
|
type ScheduleConfig = z.infer<typeof ScheduleSchema>;
|
|
151
158
|
declare const McpConfigSchema: z.ZodObject<{
|
|
152
159
|
transport: z.ZodLiteral<"stdio">;
|
|
153
|
-
}, "
|
|
160
|
+
}, "strict", z.ZodTypeAny, {
|
|
154
161
|
transport: "stdio";
|
|
155
162
|
}, {
|
|
156
163
|
transport: "stdio";
|
|
@@ -182,7 +189,7 @@ declare const SandboxConfigSchema: z.ZodObject<{
|
|
|
182
189
|
* against it and may not escape it. Defaults to the project root
|
|
183
190
|
* (the runner's cwd). */
|
|
184
191
|
uploadDir: z.ZodOptional<z.ZodString>;
|
|
185
|
-
}, "
|
|
192
|
+
}, "strict", z.ZodTypeAny, {
|
|
186
193
|
shellCwd?: string | undefined;
|
|
187
194
|
shellTimeoutMs?: number | undefined;
|
|
188
195
|
exportSecrets?: string[] | undefined;
|
|
@@ -214,18 +221,29 @@ declare const WebServerConfigSchema: z.ZodObject<{
|
|
|
214
221
|
reuseExistingServer: z.ZodDefault<z.ZodBoolean>;
|
|
215
222
|
/** How long to wait for the URL to come up after spawning. */
|
|
216
223
|
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
217
|
-
}, "
|
|
218
|
-
url: string;
|
|
219
|
-
timeoutMs: number;
|
|
224
|
+
}, "strict", z.ZodTypeAny, {
|
|
220
225
|
command: string;
|
|
226
|
+
url: string;
|
|
221
227
|
reuseExistingServer: boolean;
|
|
228
|
+
timeoutMs: number;
|
|
222
229
|
}, {
|
|
223
|
-
url: string;
|
|
224
230
|
command: string;
|
|
225
|
-
|
|
231
|
+
url: string;
|
|
226
232
|
reuseExistingServer?: boolean | undefined;
|
|
233
|
+
timeoutMs?: number | undefined;
|
|
227
234
|
}>;
|
|
228
235
|
type WebServerConfig = z.infer<typeof WebServerConfigSchema>;
|
|
236
|
+
declare const EnvConfigSchema: z.ZodObject<{
|
|
237
|
+
/** Variable names whose base `.env` value is deliberately shared by
|
|
238
|
+
* every environment. Only names that become a HOST are checked, so
|
|
239
|
+
* listing anything else has no effect. */
|
|
240
|
+
shared: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
241
|
+
}, "strict", z.ZodTypeAny, {
|
|
242
|
+
shared: string[];
|
|
243
|
+
}, {
|
|
244
|
+
shared?: string[] | undefined;
|
|
245
|
+
}>;
|
|
246
|
+
type EnvConfig = z.infer<typeof EnvConfigSchema>;
|
|
229
247
|
declare const UnotestConfigSchema: z.ZodObject<{
|
|
230
248
|
baseUrl: z.ZodOptional<z.ZodString>;
|
|
231
249
|
/** Dev-server lifecycle for the app under test (M-12). Unset → the app
|
|
@@ -248,38 +266,51 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
248
266
|
reuseExistingServer: z.ZodDefault<z.ZodBoolean>;
|
|
249
267
|
/** How long to wait for the URL to come up after spawning. */
|
|
250
268
|
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
251
|
-
}, "
|
|
252
|
-
url: string;
|
|
253
|
-
timeoutMs: number;
|
|
269
|
+
}, "strict", z.ZodTypeAny, {
|
|
254
270
|
command: string;
|
|
271
|
+
url: string;
|
|
255
272
|
reuseExistingServer: boolean;
|
|
273
|
+
timeoutMs: number;
|
|
256
274
|
}, {
|
|
257
|
-
url: string;
|
|
258
275
|
command: string;
|
|
259
|
-
|
|
276
|
+
url: string;
|
|
260
277
|
reuseExistingServer?: boolean | undefined;
|
|
278
|
+
timeoutMs?: number | undefined;
|
|
261
279
|
}>>;
|
|
262
280
|
browsers: z.ZodArray<z.ZodEnum<["chromium", "firefox", "webkit"]>, "many">;
|
|
263
|
-
channel: z.ZodOptional<z.ZodUnion<[z.
|
|
281
|
+
channel: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["chrome", "msedge", "chrome-beta", "chromium"]>, z.ZodEffects<z.ZodLiteral<"bundled">, null, "bundled">, z.ZodNull]>>;
|
|
264
282
|
viewport: z.ZodObject<{
|
|
265
283
|
width: z.ZodNumber;
|
|
266
284
|
height: z.ZodNumber;
|
|
267
|
-
}, "
|
|
285
|
+
}, "strict", z.ZodTypeAny, {
|
|
268
286
|
width: number;
|
|
269
287
|
height: number;
|
|
270
288
|
}, {
|
|
271
289
|
width: number;
|
|
272
290
|
height: number;
|
|
273
291
|
}>;
|
|
292
|
+
/** How the browser is started: a profile and extra arguments
|
|
293
|
+
* (`config/launch.ts`). Unset → as before: a fresh browser, a fresh
|
|
294
|
+
* context per scenario. */
|
|
295
|
+
launch: z.ZodOptional<z.ZodObject<{
|
|
296
|
+
userDataDir: z.ZodOptional<z.ZodString>;
|
|
297
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
298
|
+
}, "strict", z.ZodTypeAny, {
|
|
299
|
+
userDataDir?: string | undefined;
|
|
300
|
+
args?: string[] | undefined;
|
|
301
|
+
}, {
|
|
302
|
+
userDataDir?: string | undefined;
|
|
303
|
+
args?: string[] | undefined;
|
|
304
|
+
}>>;
|
|
274
305
|
retry: z.ZodObject<{
|
|
275
306
|
count: z.ZodNumber;
|
|
276
307
|
on: z.ZodArray<z.ZodEnum<["transient", "network", "crash"]>, "many">;
|
|
277
|
-
}, "
|
|
308
|
+
}, "strict", z.ZodTypeAny, {
|
|
278
309
|
count: number;
|
|
279
|
-
on: ("
|
|
310
|
+
on: ("transient" | "network" | "crash")[];
|
|
280
311
|
}, {
|
|
281
312
|
count: number;
|
|
282
|
-
on: ("
|
|
313
|
+
on: ("transient" | "network" | "crash")[];
|
|
283
314
|
}>;
|
|
284
315
|
failureBundle: z.ZodObject<{
|
|
285
316
|
/** Tier 1 is always on by D-16. Schema lock — not user-toggleable. */
|
|
@@ -289,7 +320,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
289
320
|
tier3: z.ZodObject<{
|
|
290
321
|
network: z.ZodBoolean;
|
|
291
322
|
video: z.ZodBoolean;
|
|
292
|
-
}, "
|
|
323
|
+
}, "strict", z.ZodTypeAny, {
|
|
293
324
|
network: boolean;
|
|
294
325
|
video: boolean;
|
|
295
326
|
}, {
|
|
@@ -299,7 +330,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
299
330
|
retention: z.ZodObject<{
|
|
300
331
|
runs: z.ZodNumber;
|
|
301
332
|
days: z.ZodNumber;
|
|
302
|
-
}, "
|
|
333
|
+
}, "strict", z.ZodTypeAny, {
|
|
303
334
|
runs: number;
|
|
304
335
|
days: number;
|
|
305
336
|
}, {
|
|
@@ -307,7 +338,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
307
338
|
days: number;
|
|
308
339
|
}>;
|
|
309
340
|
storageDir: z.ZodString;
|
|
310
|
-
}, "
|
|
341
|
+
}, "strict", z.ZodTypeAny, {
|
|
311
342
|
tier1: true;
|
|
312
343
|
tier2: boolean;
|
|
313
344
|
tier3: {
|
|
@@ -353,19 +384,30 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
353
384
|
* slow-but-correct navigation.
|
|
354
385
|
* Override via `UNOTEST_DEFAULT_NAVIGATION_TIMEOUT_MS`. */
|
|
355
386
|
defaultNavigationTimeoutMs: z.ZodNumber;
|
|
387
|
+
/** Cross-environment declarations (`.env.<name>` overlays). */
|
|
388
|
+
env: z.ZodObject<{
|
|
389
|
+
/** Variable names whose base `.env` value is deliberately shared by
|
|
390
|
+
* every environment. Only names that become a HOST are checked, so
|
|
391
|
+
* listing anything else has no effect. */
|
|
392
|
+
shared: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
393
|
+
}, "strict", z.ZodTypeAny, {
|
|
394
|
+
shared: string[];
|
|
395
|
+
}, {
|
|
396
|
+
shared?: string[] | undefined;
|
|
397
|
+
}>;
|
|
356
398
|
linter: z.ZodObject<{
|
|
357
399
|
enabled: z.ZodBoolean;
|
|
358
|
-
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:one-test-per-file", "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"]>>;
|
|
359
|
-
}, "
|
|
400
|
+
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", "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"]>>;
|
|
401
|
+
}, "strict", z.ZodTypeAny, {
|
|
360
402
|
enabled: boolean;
|
|
361
|
-
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:one-test-per-file" | "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">>;
|
|
403
|
+
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" | "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">>;
|
|
362
404
|
}, {
|
|
363
405
|
enabled: boolean;
|
|
364
|
-
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:one-test-per-file" | "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">>;
|
|
406
|
+
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" | "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">>;
|
|
365
407
|
}>;
|
|
366
408
|
mcp: z.ZodObject<{
|
|
367
409
|
transport: z.ZodLiteral<"stdio">;
|
|
368
|
-
}, "
|
|
410
|
+
}, "strict", z.ZodTypeAny, {
|
|
369
411
|
transport: "stdio";
|
|
370
412
|
}, {
|
|
371
413
|
transport: "stdio";
|
|
@@ -377,7 +419,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
377
419
|
/** How many runs may be in flight for one environment. 1 (the default)
|
|
378
420
|
* is strict FIFO — the machine runs one thing at a time. */
|
|
379
421
|
concurrency: z.ZodDefault<z.ZodNumber>;
|
|
380
|
-
}, "
|
|
422
|
+
}, "strict", z.ZodTypeAny, {
|
|
381
423
|
enabled: boolean;
|
|
382
424
|
concurrency: number;
|
|
383
425
|
}, {
|
|
@@ -401,7 +443,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
401
443
|
* — seeding a database, resetting a fixture. Its failure is reported
|
|
402
444
|
* as "the environment was not prepared", not as a red suite. */
|
|
403
445
|
prepare: z.ZodOptional<z.ZodString>;
|
|
404
|
-
}, "
|
|
446
|
+
}, "strict", z.ZodTypeAny, {
|
|
405
447
|
collection: string;
|
|
406
448
|
cron: string;
|
|
407
449
|
env?: string | undefined;
|
|
@@ -438,7 +480,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
438
480
|
* against it and may not escape it. Defaults to the project root
|
|
439
481
|
* (the runner's cwd). */
|
|
440
482
|
uploadDir: z.ZodOptional<z.ZodString>;
|
|
441
|
-
}, "
|
|
483
|
+
}, "strict", z.ZodTypeAny, {
|
|
442
484
|
shellCwd?: string | undefined;
|
|
443
485
|
shellTimeoutMs?: number | undefined;
|
|
444
486
|
exportSecrets?: string[] | undefined;
|
|
@@ -453,7 +495,10 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
453
495
|
apiBaseUrl?: string | undefined;
|
|
454
496
|
uploadDir?: string | undefined;
|
|
455
497
|
}>;
|
|
456
|
-
}, "
|
|
498
|
+
}, "strict", z.ZodTypeAny, {
|
|
499
|
+
env: {
|
|
500
|
+
shared: string[];
|
|
501
|
+
};
|
|
457
502
|
browsers: ("chromium" | "firefox" | "webkit")[];
|
|
458
503
|
viewport: {
|
|
459
504
|
width: number;
|
|
@@ -461,7 +506,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
461
506
|
};
|
|
462
507
|
retry: {
|
|
463
508
|
count: number;
|
|
464
|
-
on: ("
|
|
509
|
+
on: ("transient" | "network" | "crash")[];
|
|
465
510
|
};
|
|
466
511
|
failureBundle: {
|
|
467
512
|
tier1: true;
|
|
@@ -483,7 +528,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
483
528
|
defaultNavigationTimeoutMs: number;
|
|
484
529
|
linter: {
|
|
485
530
|
enabled: boolean;
|
|
486
|
-
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:one-test-per-file" | "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">>;
|
|
531
|
+
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" | "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">>;
|
|
487
532
|
};
|
|
488
533
|
mcp: {
|
|
489
534
|
transport: "stdio";
|
|
@@ -508,14 +553,21 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
508
553
|
};
|
|
509
554
|
baseUrl?: string | undefined;
|
|
510
555
|
webServer?: {
|
|
511
|
-
url: string;
|
|
512
|
-
timeoutMs: number;
|
|
513
556
|
command: string;
|
|
557
|
+
url: string;
|
|
514
558
|
reuseExistingServer: boolean;
|
|
559
|
+
timeoutMs: number;
|
|
560
|
+
} | undefined;
|
|
561
|
+
channel?: "chromium" | "chrome" | "msedge" | "chrome-beta" | null | undefined;
|
|
562
|
+
launch?: {
|
|
563
|
+
userDataDir?: string | undefined;
|
|
564
|
+
args?: string[] | undefined;
|
|
515
565
|
} | undefined;
|
|
516
|
-
channel?: "chrome" | "msedge" | "chrome-beta" | null | undefined;
|
|
517
566
|
storageState?: string | undefined;
|
|
518
567
|
}, {
|
|
568
|
+
env: {
|
|
569
|
+
shared?: string[] | undefined;
|
|
570
|
+
};
|
|
519
571
|
browsers: ("chromium" | "firefox" | "webkit")[];
|
|
520
572
|
viewport: {
|
|
521
573
|
width: number;
|
|
@@ -523,7 +575,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
523
575
|
};
|
|
524
576
|
retry: {
|
|
525
577
|
count: number;
|
|
526
|
-
on: ("
|
|
578
|
+
on: ("transient" | "network" | "crash")[];
|
|
527
579
|
};
|
|
528
580
|
failureBundle: {
|
|
529
581
|
tier2: boolean;
|
|
@@ -545,7 +597,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
545
597
|
defaultNavigationTimeoutMs: number;
|
|
546
598
|
linter: {
|
|
547
599
|
enabled: boolean;
|
|
548
|
-
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:one-test-per-file" | "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">>;
|
|
600
|
+
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" | "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">>;
|
|
549
601
|
};
|
|
550
602
|
mcp: {
|
|
551
603
|
transport: "stdio";
|
|
@@ -564,12 +616,16 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
564
616
|
};
|
|
565
617
|
baseUrl?: string | undefined;
|
|
566
618
|
webServer?: {
|
|
567
|
-
url: string;
|
|
568
619
|
command: string;
|
|
569
|
-
|
|
620
|
+
url: string;
|
|
570
621
|
reuseExistingServer?: boolean | undefined;
|
|
622
|
+
timeoutMs?: number | undefined;
|
|
623
|
+
} | undefined;
|
|
624
|
+
channel?: "chromium" | "chrome" | "msedge" | "chrome-beta" | "bundled" | null | undefined;
|
|
625
|
+
launch?: {
|
|
626
|
+
userDataDir?: string | undefined;
|
|
627
|
+
args?: string[] | undefined;
|
|
571
628
|
} | undefined;
|
|
572
|
-
channel?: "chrome" | "msedge" | "chrome-beta" | null | undefined;
|
|
573
629
|
storageState?: string | undefined;
|
|
574
630
|
schedules?: {
|
|
575
631
|
collection: string;
|
|
@@ -582,4 +638,4 @@ type UnotestConfig = z.infer<typeof UnotestConfigSchema>;
|
|
|
582
638
|
type UnotestConfigInput = z.input<typeof UnotestConfigSchema>;
|
|
583
639
|
declare const DEFAULT_CONFIG: UnotestConfig;
|
|
584
640
|
|
|
585
|
-
export { type Browser, type BrowserChannel, BrowserChannelSchema, BrowserSchema, DEFAULT_CONFIG, type DialogPolicy, DialogPolicySchema, type FailureBundleConfig, FailureBundleConfigSchema, type LinterConfig, LinterConfigSchema, type LinterRuleId, LinterRuleIdSchema, type LinterSeverity, LinterSeveritySchema, type McpConfig, McpConfigSchema, type QueueConfig, QueueConfigSchema, type RetryConfig, RetryConfigSchema, type RetryReason, RetryReasonSchema, type SandboxConfig, SandboxConfigSchema, type ScheduleConfig, ScheduleSchema, type UnotestConfig, type UnotestConfigInput, UnotestConfigSchema, type Viewport, ViewportSchema, type WebServerConfig, WebServerConfigSchema };
|
|
641
|
+
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 };
|
package/dist/config/schema.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var _0x11147f=_0x3619;(function(_0x45534e,_0x5d9f5d){var _0x4e7a9c={_0x1edeea:0x147,_0x2da4f1:0x15b,_0x45797b:0x14c,_0x6aa242:0x163,_0x31fb5d:0x145,_0x49e31d:0x156,_0x286bde:0x177},_0xeb1bb2=_0x3619,_0x55ddb3=_0x45534e();while(!![]){try{var _0x25cd55=-parseInt(_0xeb1bb2(_0x4e7a9c._0x1edeea))/0x1+-parseInt(_0xeb1bb2(_0x4e7a9c._0x2da4f1))/0x2*(-parseInt(_0xeb1bb2(0x16c))/0x3)+-parseInt(_0xeb1bb2(_0x4e7a9c._0x45797b))/0x4+-parseInt(_0xeb1bb2(0x16f))/0x5*(-parseInt(_0xeb1bb2(0x155))/0x6)+-parseInt(_0xeb1bb2(0x154))/0x7+parseInt(_0xeb1bb2(_0x4e7a9c._0x6aa242))/0x8*(-parseInt(_0xeb1bb2(_0x4e7a9c._0x31fb5d))/0x9)+parseInt(_0xeb1bb2(_0x4e7a9c._0x49e31d))/0xa*(parseInt(_0xeb1bb2(_0x4e7a9c._0x286bde))/0xb);if(_0x25cd55===_0x5d9f5d)break;else _0x55ddb3['push'](_0x55ddb3['shift']());}catch(_0x27d78b){_0x55ddb3['push'](_0x55ddb3['shift']());}}}(_0x5ebe,0xda387));import{z}from'zod';var BrowserSchema=z['enum']([_0x11147f(0x159),_0x11147f(0x166),_0x11147f(0x167)]),BrowserChannelSchema=z[_0x11147f(0x15a)]([z[_0x11147f(0x14f)](_0x11147f(0x153)),z['literal'](_0x11147f(0x13d)),z[_0x11147f(0x14f)](_0x11147f(0x171)),z[_0x11147f(0x149)]()])[_0x11147f(0x161)](),ViewportSchema=z[_0x11147f(0x148)]({'width':z['number']()[_0x11147f(0x141)]()[_0x11147f(0x14b)](),'height':z[_0x11147f(0x16e)]()['int']()[_0x11147f(0x14b)]()}),RetryReasonSchema=z['enum']([_0x11147f(0x168),_0x11147f(0x16b),'crash']),RetryConfigSchema=z[_0x11147f(0x148)]({'count':z[_0x11147f(0x16e)]()['int']()[_0x11147f(0x15f)](0x0)['max'](0xa),'on':z[_0x11147f(0x176)](RetryReasonSchema)}),FailureBundleConfigSchema=z[_0x11147f(0x148)]({'tier1':z[_0x11147f(0x14f)](!![])[_0x11147f(0x13b)](!![]),'tier2':z['boolean'](),'tier3':z[_0x11147f(0x148)]({'network':z[_0x11147f(0x144)](),'video':z[_0x11147f(0x144)]()}),'retention':z[_0x11147f(0x148)]({'runs':z['number']()[_0x11147f(0x141)]()['positive'](),'days':z[_0x11147f(0x16e)]()[_0x11147f(0x141)]()[_0x11147f(0x14b)]()}),'storageDir':z['string']()[_0x11147f(0x15f)](0x1)}),DialogPolicySchema=z['enum'](['accept',_0x11147f(0x175),_0x11147f(0x165)]),LinterRuleIdSchema=z['enum'](['lint:deep-css',_0x11147f(0x13f),_0x11147f(0x14e),_0x11147f(0x14d),_0x11147f(0x13e),_0x11147f(0x143),'lint:scenario-in-root',_0x11147f(0x158),'lint:goto-concat',_0x11147f(0x15d),'lint:echo-assert',_0x11147f(0x179),'lint:lint-ok-missing-reason',_0x11147f(0x142),_0x11147f(0x170),_0x11147f(0x169),'lint:one-test-per-file',_0x11147f(0x174),_0x11147f(0x17a),_0x11147f(0x14a),'validator:step-coverage',_0x11147f(0x17b),_0x11147f(0x152),'validator:function-shape',_0x11147f(0x151),_0x11147f(0x16d),'validator:var-shape',_0x11147f(0x146),'validator:unsupported-expression',_0x11147f(0x160),_0x11147f(0x162),_0x11147f(0x15e),_0x11147f(0x164)]),LinterSeveritySchema=z['enum']([_0x11147f(0x172),'warn',_0x11147f(0x157)]),LinterConfigSchema=z[_0x11147f(0x148)]({'enabled':z[_0x11147f(0x144)](),'rules':z[_0x11147f(0x178)](LinterRuleIdSchema,LinterSeveritySchema)}),QueueConfigSchema=z[_0x11147f(0x148)]({'enabled':z[_0x11147f(0x144)]()[_0x11147f(0x13b)](!![]),'concurrency':z[_0x11147f(0x16e)]()['int']()[_0x11147f(0x14b)]()[_0x11147f(0x13b)](0x1)}),ScheduleSchema=z['object']({'collection':z[_0x11147f(0x15c)]()['min'](0x1),'cron':z[_0x11147f(0x15c)]()[_0x11147f(0x15f)](0x1),'env':z[_0x11147f(0x15c)]()[_0x11147f(0x15f)](0x1)[_0x11147f(0x161)](),'prepare':z['string']()['min'](0x1)[_0x11147f(0x161)]()}),McpConfigSchema=z[_0x11147f(0x148)]({'transport':z['literal'](_0x11147f(0x173))}),SandboxConfigSchema=z[_0x11147f(0x148)]({'shellCwd':z[_0x11147f(0x15c)]()['optional'](),'shellTimeoutMs':z[_0x11147f(0x16e)]()[_0x11147f(0x141)]()['positive']()[_0x11147f(0x161)](),'exportSecrets':z[_0x11147f(0x176)](z['string']())['optional'](),'database':z[_0x11147f(0x15c)]()[_0x11147f(0x161)](),'apiBaseUrl':z['string']()[_0x11147f(0x140)]()[_0x11147f(0x161)](),'uploadDir':z[_0x11147f(0x15c)]()[_0x11147f(0x161)]()}),WebServerConfigSchema=z[_0x11147f(0x148)]({'command':z[_0x11147f(0x15c)]()[_0x11147f(0x15f)](0x1),'url':z[_0x11147f(0x15c)]()['url'](),'reuseExistingServer':z[_0x11147f(0x144)]()['default'](!![]),'timeoutMs':z[_0x11147f(0x16e)]()[_0x11147f(0x141)]()[_0x11147f(0x14b)]()[_0x11147f(0x13b)](0xea60)}),UnotestConfigSchema=z[_0x11147f(0x148)]({'baseUrl':z['string']()[_0x11147f(0x140)]()[_0x11147f(0x161)](),'webServer':WebServerConfigSchema[_0x11147f(0x161)](),'browsers':z[_0x11147f(0x176)](BrowserSchema)[_0x11147f(0x15f)](0x1),'channel':BrowserChannelSchema,'viewport':ViewportSchema,'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':z[_0x11147f(0x15c)]()[_0x11147f(0x161)](),'testDir':z[_0x11147f(0x15c)]()[_0x11147f(0x15f)](0x1),'helpersDir':z[_0x11147f(0x15c)]()[_0x11147f(0x15f)](0x1),'defaultTimeoutMs':z[_0x11147f(0x16e)]()[_0x11147f(0x141)]()[_0x11147f(0x14b)](),'defaultNavigationTimeoutMs':z[_0x11147f(0x16e)]()['int']()[_0x11147f(0x14b)](),'linter':LinterConfigSchema,'mcp':McpConfigSchema,'queue':QueueConfigSchema,'schedules':z['array'](ScheduleSchema)[_0x11147f(0x13b)]([]),'sandbox':SandboxConfigSchema}),DEFAULT_CONFIG={'browsers':[_0x11147f(0x159)],'viewport':{'width':0x500,'height':0x2d0},'retry':{'count':0x0,'on':['transient']},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':'.unotest/failures'},'dialogPolicy':'accept','testDir':_0x11147f(0x13c),'helpersDir':_0x11147f(0x150),'defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x7530,'linter':{'enabled':!![],'rules':{'lint:deep-css':_0x11147f(0x16a),'lint:xpath':_0x11147f(0x16a),'lint:obfuscated-class':_0x11147f(0x16a),'lint:pause-explicit':_0x11147f(0x16a),'lint:disambig-by-index':_0x11147f(0x172),'lint:evaluate-discouraged':'warn','lint:scenario-in-root':'error','lint:mustache-in-dsl':_0x11147f(0x157),'lint:goto-concat':_0x11147f(0x16a),'lint:regex-invalid':_0x11147f(0x157),'lint:echo-assert':_0x11147f(0x16a),'lint:lint-ok-missing-reason':_0x11147f(0x16a),'lint:flow-returns-value':_0x11147f(0x16a),'lint:legacy-layout':_0x11147f(0x16a),'lint:external-variable-undeclared':_0x11147f(0x157),'lint:one-test-per-file':'warn','validator:unknown-function':_0x11147f(0x157)}},'mcp':{'transport':_0x11147f(0x173)},'queue':{'enabled':!![],'concurrency':0x1},'schedules':[],'sandbox':{}};function _0x5ebe(){var _0x544887=['Dw5PB24','mJeYzLn6vNfd','C3rYAw5N','BgLUDdPYzwDLEc1PBNzHBgLK','DMfSAwrHDg9YoMXPC3qTyxjN','BwLU','DMfSAwrHDg9YoNn0CMLUzY1JB25Jyxq','B3b0Aw9UywW','DMfSAwrHDg9YoNnLBwfUDgLJlwXVC3m','ntuYodHbD21Mq00','DMfSAwrHDg9YoNDYyxbWzwqTzM9YBwf0','BwfUDwfS','zMLYzwzVEa','D2vIA2L0','DhjHBNnPzw50','BgLUDdPLEhrLCM5HBc12yxjPywjSzs11BMrLy2XHCMvK','D2fYBG','BMv0D29YAW','ndC4odzzB0vOAfa','DMfSAwrHDg9YoMLMlxnOyxbL','BNvTyMvY','mty5mZiXmhjNteLUDq','BgLUDdPSzwDHy3KTBgf5B3v0','y2HYB21LlwjLDge','B2zM','C3rKAw8','DMfSAwrHDg9YoNvUA25VD24TzNvUy3rPB24','zgLZBwLZCW','yxjYyxK','mtC1nJmWmtHJuxbxwuC','CMvJB3jK','BgLUDdPHCgKTy2fSBc1MAwXLlwjVzhK','DMfSAwrHDg9YoMfYAxr5','DMfSAwrHDg9YoNn0zxaTC2HHCgu','zgvMyxvSDa','Dw5VDgvZDc9LmMu','BxnLzgDL','BgLUDdPKAxnHBwjPzY1IEs1PBMrLEa','BgLUDdP4Cgf0Aa','DxjS','Aw50','BgLUDdPMBg93lxjLDhvYBNmTDMfSDwu','BgLUDdPLDMfSDwf0zs1KAxnJB3vYywDLza','yM9VBgvHBG','mtmYm3LKBwPszG','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlxn0yxrLBwvUDa','odi1nZy0AfbMBe9j','B2jQzwn0','BNvSBa','DMfSAwrHDg9YoMfYzY1RAw5K','Cg9ZAxrPDMu','mtKZnJqYmgjmsK5bsG','BgLUDdPWyxvZzs1LEhbSAwnPDa','BgLUDdPVyMz1C2nHDgvKlwnSyxnZ','BgL0zxjHBa','Dw5VDgvZDc9LmMuVx2HLBhbLCNm','DMfSAwrHDg9YoMzVCI1ZAgfWzq','DMfSAwrHDg9YoM1LDgeTC2HHCgu','y2HYB21L','mtiZmZu0mJfSCgLMDw4','mZbQr2zMyLi','mtbzwNneD1O','zxjYB3i','BgLUDdPTDxn0ywnOzs1PBI1KC2W','y2HYB21PDw0'];_0x5ebe=function(){return _0x544887;};return _0x5ebe();}function _0x3619(_0x5f06b7,_0x5e1052){_0x5f06b7=_0x5f06b7-0x13b;var _0x5ebe27=_0x5ebe();var _0x36198e=_0x5ebe27[_0x5f06b7];if(_0x3619['MsaDYg']===undefined){var _0x47f406=function(_0x209b55){var _0x5a1961='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x541e51='',_0x19aa18='';for(var _0x5cd0b5=0x0,_0x22c6e0,_0x5cd928,_0xb0454=0x0;_0x5cd928=_0x209b55['charAt'](_0xb0454++);~_0x5cd928&&(_0x22c6e0=_0x5cd0b5%0x4?_0x22c6e0*0x40+_0x5cd928:_0x5cd928,_0x5cd0b5++%0x4)?_0x541e51+=String['fromCharCode'](0xff&_0x22c6e0>>(-0x2*_0x5cd0b5&0x6)):0x0){_0x5cd928=_0x5a1961['indexOf'](_0x5cd928);}for(var _0x1497c4=0x0,_0x595653=_0x541e51['length'];_0x1497c4<_0x595653;_0x1497c4++){_0x19aa18+='%'+('00'+_0x541e51['charCodeAt'](_0x1497c4)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x19aa18);};_0x3619['QCOiuC']=_0x47f406,_0x3619['VkmBKP']={},_0x3619['MsaDYg']=!![];}var _0x3ca301=_0x5ebe27[0x0],_0xb0a50f=_0x5f06b7+_0x3ca301,_0x3ad402=_0x3619['VkmBKP'][_0xb0a50f];return!_0x3ad402?(_0x36198e=_0x3619['QCOiuC'](_0x36198e),_0x3619['VkmBKP'][_0xb0a50f]=_0x36198e):_0x36198e=_0x3ad402,_0x36198e;}export{BrowserChannelSchema,BrowserSchema,DEFAULT_CONFIG,DialogPolicySchema,FailureBundleConfigSchema,LinterConfigSchema,LinterRuleIdSchema,LinterSeveritySchema,McpConfigSchema,QueueConfigSchema,RetryConfigSchema,RetryReasonSchema,SandboxConfigSchema,ScheduleSchema,UnotestConfigSchema,ViewportSchema,WebServerConfigSchema};
|
|
1
|
+
var _0x35f08b=_0x7b5c;(function(_0x3900aa,_0x651d58){var _0x520f7d={_0x45de20:0xbf,_0x2347bd:0x96,_0x2f1497:0xc0,_0x442d3a:0x97,_0x54c77c:0xab,_0x5f9c1d:0xa8},_0x475de5=_0x7b5c,_0xb9069f=_0x3900aa();while(!![]){try{var _0x310fed=parseInt(_0x475de5(0xcb))/0x1*(-parseInt(_0x475de5(_0x520f7d._0x45de20))/0x2)+-parseInt(_0x475de5(_0x520f7d._0x2347bd))/0x3+-parseInt(_0x475de5(0x88))/0x4*(-parseInt(_0x475de5(_0x520f7d._0x2f1497))/0x5)+-parseInt(_0x475de5(0x87))/0x6+parseInt(_0x475de5(0xb3))/0x7+parseInt(_0x475de5(_0x520f7d._0x442d3a))/0x8*(-parseInt(_0x475de5(0xc8))/0x9)+parseInt(_0x475de5(_0x520f7d._0x54c77c))/0xa*(parseInt(_0x475de5(_0x520f7d._0x5f9c1d))/0xb);if(_0x310fed===_0x651d58)break;else _0xb9069f['push'](_0xb9069f['shift']());}catch(_0x4295da){_0xb9069f['push'](_0xb9069f['shift']());}}}(_0x2812,0x7d199));var __defProp=Object[_0x35f08b(0x95)],__name=(_0x30e000,_0x2700d4)=>__defProp(_0x30e000,_0x35f08b(0x8b),{'value':_0x2700d4,'configurable':!![]});function _0x7b5c(_0x3dece4,_0x17b132){_0x3dece4=_0x3dece4-0x86;var _0x281288=_0x2812();var _0x7b5ccb=_0x281288[_0x3dece4];if(_0x7b5c['kaiKbm']===undefined){var _0x3d5535=function(_0x2ddd68){var _0x390cca='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x5661df='',_0x44e8fb='';for(var _0x30e000=0x0,_0x2700d4,_0x15c8ac,_0x57d7dc=0x0;_0x15c8ac=_0x2ddd68['charAt'](_0x57d7dc++);~_0x15c8ac&&(_0x2700d4=_0x30e000%0x4?_0x2700d4*0x40+_0x15c8ac:_0x15c8ac,_0x30e000++%0x4)?_0x5661df+=String['fromCharCode'](0xff&_0x2700d4>>(-0x2*_0x30e000&0x6)):0x0){_0x15c8ac=_0x390cca['indexOf'](_0x15c8ac);}for(var _0x37c423=0x0,_0x2fe3da=_0x5661df['length'];_0x37c423<_0x2fe3da;_0x37c423++){_0x44e8fb+='%'+('00'+_0x5661df['charCodeAt'](_0x37c423)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x44e8fb);};_0x7b5c['PMKyob']=_0x3d5535,_0x7b5c['IyQLRU']={},_0x7b5c['kaiKbm']=!![];}var _0x8655f0=_0x281288[0x0],_0x57828f=_0x3dece4+_0x8655f0,_0x1862e9=_0x7b5c['IyQLRU'][_0x57828f];return!_0x1862e9?(_0x7b5ccb=_0x7b5c['PMKyob'](_0x7b5ccb),_0x7b5c['IyQLRU'][_0x57828f]=_0x7b5ccb):_0x7b5ccb=_0x1862e9,_0x7b5ccb;}import{z as _0x5661df}from'zod';import{z}from'zod';function _0x2812(){var _0x5e448c=['DMfSAwrHDg9YoNn0zxaTC2HHCgu','iIdIGjqGzgLKihLVDsbTzwfUici','y2HYB21PDw0','BgLUDdPNB3rVlwnVBMnHDa','Dg9mB3DLCKnHC2u','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlxn0yxrLBwvUDa','BgLUDdPTDxn0ywnOzs1PBI1KC2W','D2fYBG','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlwv4ChjLC3nPB24','BgLUDdPLEhrLCM5HBc12yxjPywjSzs11BMrLy2XHCMvK','C3rYAw5N','A2v5','DxjS','zw51Bq','Cg9ZAxrPDMu','mtyXmda5mdLYtKveyxC','BwfUDwfS','BNvTyMvY','mtbVs1fQrNC','yxjYyxK','BgLUDdPLBNyTAg9ZDc1MCM9TlwjHC2u','zgLZDgfUy2u','y2HYB21L','Dw5RBM93BKTLEu1LC3nHz2u','ywnJzxb0','C3rYAwn0','mZC3mZeYnKLcr1npwG','zMLYzwzVEa','CMvJB3jK','A2v5CW','BgL0zxjHBa','DhjHBNnMB3jT','DMfSAwrHDg9YoM1LDgeTC2HHCgu','DMfSAwrHDg9YoNzHCI1ZAgfWzq','B3b0Aw9UywW','Dw5VDgvZDc9LmMu','BMv0D29YAW','B2zM','nJC0v1DtCKzU','mtyZmtvQA0zmyKi','zxjYB3i','y3jHC2G','AM9PBG','BgLUDdPWyxvZzs1LEhbSAwnPDa','Dw5PB24','BgLUDdPHCgKTy2fSBc1MAwXLlwjVzhK','DMfSAwrHDg9YoMfYAxr5','ovb3CKrjuW','DMfSAwrHDg9YoMz1BMn0Aw9UlxnOyxbL','zgvMyxvSDa','mtG1ohL3C2TLDG','wM9KsxnZDwvdB2rL','C3rYAwn0t2jQzwn0','zgvMyxvSDevYCM9Y','DMfSAwrHDg9YoNn0CMLUzY1JB25Jyxq','BgLUDdPVyMz1C2nHDgvKlwnSyxnZ','Dw5RBM93BIbRzxKGiG','y2XVC2vZDeTLEq','BgLUDdPVBMuTDgvZDc1WzxiTzMLSzq','B2jQzwn0','BgLUDdP4Cgf0Aa','Aw50','DMfSAwrHDg9YoNn0zxaTy292zxjHz2u','DMfSAwrHDg9YoMLMlxnOyxbL','iIdIGjqGBM90igeGy29UzMLNigTLEtSGy2HLy2SGEw91CIbaDw5VDgvZDc93zwiGDMvYC2LVBIbPzIbPDcbJB21LCYbMCM9TigeGBMv3zxiGCMvSzwfZzq','DMfSAwrHDg9YoNDYyxbWzwqTzM9YBwf0','lNvUB3rLC3qVzMfPBhvYzxm','mtiWmdKXmNDrtg9nDG','otiWvKveDxjf','BgLUDdPSzwDHy3KTBgf5B3v0','y2HYB21LlwjLDge','BMfTzq','zgLZBwLZCW','BwLU','DMfSAwrHDg9YoMfYzY1RAw5K','C3rKAw8','DMfSAwrHDg9YoNnLBwfUDgLJlwXVC3m','BwfW','DMfSAwrHDg9YoNvUA25VD24TzNvUy3rPB24','yM9VBgvHBG','Dw5YzwnVz25PEMvKx2TLExm','zgvMAw5LuhjVCgvYDhK','mJq0mJm4n1rICwfzua','ndGWmZeYogTLBKzPAq','DhjHBNnPzw50'];_0x2812=function(){return _0x5e448c;};return _0x2812();}import{levenshteinDistance}from'@unotest/core';var MAX_EDITS=0x2;function closestKey(_0x15c8ac,_0x57d7dc){var _0x5262b6={_0x332b2b:0xae},_0x239085=_0x35f08b;let _0x37c423;for(const _0x2fe3da of _0x57d7dc){const _0x3252b9=levenshteinDistance(_0x15c8ac[_0x239085(0x9d)](),_0x2fe3da['toLowerCase']());if(_0x3252b9>MAX_EDITS)continue;if(_0x37c423===void 0x0||_0x3252b9<_0x37c423[_0x239085(_0x5262b6._0x332b2b)])_0x37c423={'key':_0x2fe3da,'distance':_0x3252b9};}return _0x37c423?.[_0x239085(0xa4)];}__name(closestKey,_0x35f08b(0xd2));function unknownKeyMessage(_0x31285d,_0x1d6e68){var _0x30a5cc={_0x229a78:0x91},_0x29f31f={_0x5dc2b9:0xd1,_0x5d6059:0xd9},_0x4f978a=_0x35f08b;return _0x31285d[_0x4f978a(_0x30a5cc._0x229a78)](_0x5e4c63=>{var _0x2aa1e6=_0x4f978a;const _0x52c28f=closestKey(_0x5e4c63,_0x1d6e68);return _0x52c28f===void 0x0?_0x2aa1e6(_0x29f31f._0x5dc2b9)+_0x5e4c63+_0x2aa1e6(_0x29f31f._0x5d6059):_0x2aa1e6(_0x29f31f._0x5dc2b9)+_0x5e4c63+_0x2aa1e6(0x9a)+_0x52c28f+'\x22?';})[_0x4f978a(0xc3)](';\x20');}__name(unknownKeyMessage,_0x35f08b(0xb0));function strictObject(_0x22229c){var _0x155f9a=_0x35f08b;const _0x1b9138=Object['keys'](_0x22229c);return z['object'](_0x22229c,{'errorMap':__name((_0x2204d5,_0x32e550)=>_0x2204d5['code']===z[_0x155f9a(0xcc)][_0x155f9a(0x94)]?{'message':unknownKeyMessage(_0x2204d5[_0x155f9a(0xb6)],_0x1b9138)}:{'message':_0x32e550[_0x155f9a(0xce)]},'errorMap')})[_0x155f9a(0xb2)]();}__name(strictObject,_0x35f08b(0xcd));import{BUNDLED_BROWSER_CHANNEL}from'@unotest/protocol';import{z as _0x44e8fb}from'zod';import{UnotestError}from'@unotest/core';var LaunchConfigSchema=_0x44e8fb[_0x35f08b(0xd4)]({'userDataDir':_0x44e8fb[_0x35f08b(0xa3)]()['min'](0x1)[_0x35f08b(0xbb)](),'args':_0x44e8fb['array'](_0x44e8fb[_0x35f08b(0xa3)]()[_0x35f08b(0x8d)](0x1))[_0x35f08b(0xbb)]()})['strict'](),BrowserSchema=_0x5661df[_0x35f08b(0xa6)]([_0x35f08b(0x9b),_0x35f08b(0xb4),'webkit']),SYSTEM_BROWSER_CHANNELS=[_0x35f08b(0xaf),'msedge',_0x35f08b(0x8a),_0x35f08b(0x9b)],BROWSER_CHANNEL_WORDS=[...SYSTEM_BROWSER_CHANNELS,BUNDLED_BROWSER_CHANNEL],BrowserChannelSchema=_0x5661df[_0x35f08b(0xc5)]([_0x5661df[_0x35f08b(0xa6)](SYSTEM_BROWSER_CHANNELS),_0x5661df['literal'](BUNDLED_BROWSER_CHANNEL)[_0x35f08b(0xb8)](()=>null),_0x5661df['null']()])['optional'](),ViewportSchema=strictObject({'width':_0x5661df[_0x35f08b(0xaa)]()[_0x35f08b(0xd6)]()['positive'](),'height':_0x5661df[_0x35f08b(0xaa)]()[_0x35f08b(0xd6)]()[_0x35f08b(0xa7)]()}),RetryReasonSchema=_0x5661df[_0x35f08b(0xa6)]([_0x35f08b(0x98),_0x35f08b(0xbd),_0x35f08b(0xc2)]),RetryConfigSchema=strictObject({'count':_0x5661df[_0x35f08b(0xaa)]()['int']()[_0x35f08b(0x8d)](0x0)['max'](0xa),'on':_0x5661df[_0x35f08b(0xac)](RetryReasonSchema)}),FailureBundleConfigSchema=strictObject({'tier1':_0x5661df[_0x35f08b(0xb7)](!![])['default'](!![]),'tier2':_0x5661df['boolean'](),'tier3':strictObject({'network':_0x5661df[_0x35f08b(0x93)](),'video':_0x5661df['boolean']()}),'retention':strictObject({'runs':_0x5661df['number']()[_0x35f08b(0xd6)]()[_0x35f08b(0xa7)](),'days':_0x5661df[_0x35f08b(0xaa)]()[_0x35f08b(0xd6)]()[_0x35f08b(0xa7)]()}),'storageDir':_0x5661df[_0x35f08b(0xa3)]()['min'](0x1)}),DialogPolicySchema=_0x5661df[_0x35f08b(0xa6)](['accept',_0x35f08b(0x8c),_0x35f08b(0xa9)]),LinterRuleIdSchema=_0x5661df[_0x35f08b(0xa6)](['lint:deep-css',_0x35f08b(0xd5),_0x35f08b(0xd0),_0x35f08b(0xc4),'lint:disambig-by-index','lint:evaluate-discouraged','lint:scenario-in-root',_0x35f08b(0x9f),_0x35f08b(0x9c),'lint:regex-invalid','lint:echo-assert',_0x35f08b(0xc6),'lint:lint-ok-missing-reason','lint:flow-returns-value',_0x35f08b(0x89),_0x35f08b(0xa2),_0x35f08b(0xad),_0x35f08b(0xd3),_0x35f08b(0x92),_0x35f08b(0xc7),_0x35f08b(0x8e),_0x35f08b(0xd7),_0x35f08b(0x99),_0x35f08b(0xb9),_0x35f08b(0xc9),'validator:for-shape',_0x35f08b(0xd8),_0x35f08b(0xba),_0x35f08b(0x9e),_0x35f08b(0xa1),_0x35f08b(0xcf),_0x35f08b(0x90),'validator:list-arg',_0x35f08b(0xda)]),LinterSeveritySchema=_0x5661df[_0x35f08b(0xa6)](['off',_0x35f08b(0xa0),_0x35f08b(0xc1)]),LinterConfigSchema=strictObject({'enabled':_0x5661df['boolean'](),'rules':_0x5661df[_0x35f08b(0xb5)](LinterRuleIdSchema,LinterSeveritySchema)}),QueueConfigSchema=strictObject({'enabled':_0x5661df[_0x35f08b(0x93)]()[_0x35f08b(0xca)](!![]),'concurrency':_0x5661df['number']()[_0x35f08b(0xd6)]()[_0x35f08b(0xa7)]()[_0x35f08b(0xca)](0x1)}),ScheduleSchema=strictObject({'collection':_0x5661df[_0x35f08b(0xa3)]()[_0x35f08b(0x8d)](0x1),'cron':_0x5661df[_0x35f08b(0xa3)]()[_0x35f08b(0x8d)](0x1),'env':_0x5661df['string']()[_0x35f08b(0x8d)](0x1)[_0x35f08b(0xbb)](),'prepare':_0x5661df[_0x35f08b(0xa3)]()[_0x35f08b(0x8d)](0x1)[_0x35f08b(0xbb)]()}),McpConfigSchema=strictObject({'transport':_0x5661df[_0x35f08b(0xb7)](_0x35f08b(0x8f))}),SandboxConfigSchema=strictObject({'shellCwd':_0x5661df[_0x35f08b(0xa3)]()[_0x35f08b(0xbb)](),'shellTimeoutMs':_0x5661df[_0x35f08b(0xaa)]()[_0x35f08b(0xd6)]()[_0x35f08b(0xa7)]()[_0x35f08b(0xbb)](),'exportSecrets':_0x5661df[_0x35f08b(0xac)](_0x5661df[_0x35f08b(0xa3)]())['optional'](),'database':_0x5661df[_0x35f08b(0xa3)]()['optional'](),'apiBaseUrl':_0x5661df[_0x35f08b(0xa3)]()[_0x35f08b(0xa5)]()['optional'](),'uploadDir':_0x5661df[_0x35f08b(0xa3)]()[_0x35f08b(0xbb)]()}),WebServerConfigSchema=strictObject({'command':_0x5661df[_0x35f08b(0xa3)]()[_0x35f08b(0x8d)](0x1),'url':_0x5661df[_0x35f08b(0xa3)]()[_0x35f08b(0xa5)](),'reuseExistingServer':_0x5661df[_0x35f08b(0x93)]()[_0x35f08b(0xca)](!![]),'timeoutMs':_0x5661df[_0x35f08b(0xaa)]()[_0x35f08b(0xd6)]()[_0x35f08b(0xa7)]()[_0x35f08b(0xca)](0xea60)}),EnvConfigSchema=strictObject({'shared':_0x5661df[_0x35f08b(0xac)](_0x5661df['string']())[_0x35f08b(0xca)]([])}),UnotestConfigSchema=strictObject({'baseUrl':_0x5661df[_0x35f08b(0xa3)]()[_0x35f08b(0xa5)]()[_0x35f08b(0xbb)](),'webServer':WebServerConfigSchema[_0x35f08b(0xbb)](),'browsers':_0x5661df['array'](BrowserSchema)[_0x35f08b(0x8d)](0x1),'channel':BrowserChannelSchema,'viewport':ViewportSchema,'launch':LaunchConfigSchema[_0x35f08b(0xbb)](),'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':_0x5661df['string']()[_0x35f08b(0xbb)](),'testDir':_0x5661df['string']()[_0x35f08b(0x8d)](0x1),'helpersDir':_0x5661df[_0x35f08b(0xa3)]()['min'](0x1),'defaultTimeoutMs':_0x5661df[_0x35f08b(0xaa)]()[_0x35f08b(0xd6)]()['positive'](),'defaultNavigationTimeoutMs':_0x5661df[_0x35f08b(0xaa)]()[_0x35f08b(0xd6)]()[_0x35f08b(0xa7)](),'env':EnvConfigSchema,'linter':LinterConfigSchema,'mcp':McpConfigSchema,'queue':QueueConfigSchema,'schedules':_0x5661df[_0x35f08b(0xac)](ScheduleSchema)[_0x35f08b(0xca)]([]),'sandbox':SandboxConfigSchema}),DEFAULT_CONFIG={'browsers':['chromium'],'viewport':{'width':0x500,'height':0x2d0},'retry':{'count':0x0,'on':['transient']},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':_0x35f08b(0x86)},'dialogPolicy':_0x35f08b(0xb1),'testDir':_0x35f08b(0xbc),'helpersDir':'unotest/e2e/_helpers','defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x7530,'linter':{'enabled':!![],'rules':{'lint:deep-css':_0x35f08b(0xa0),'lint:xpath':_0x35f08b(0xa0),'lint:obfuscated-class':_0x35f08b(0xa0),'lint:pause-explicit':'warn','lint:disambig-by-index':_0x35f08b(0xbe),'lint:evaluate-discouraged':_0x35f08b(0xa0),'lint:scenario-in-root':_0x35f08b(0xc1),'lint:mustache-in-dsl':'error','lint:goto-concat':_0x35f08b(0xa0),'lint:regex-invalid':_0x35f08b(0xc1),'lint:echo-assert':_0x35f08b(0xa0),'lint:lint-ok-missing-reason':_0x35f08b(0xa0),'lint:flow-returns-value':_0x35f08b(0xa0),'lint:legacy-layout':_0x35f08b(0xa0),'lint:external-variable-undeclared':'error','lint:env-host-from-base':_0x35f08b(0xc1),'lint:one-test-per-file':'warn','validator:unknown-function':'error'}},'env':{'shared':[]},'mcp':{'transport':'stdio'},'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, N as NetworkEntry, W as WebDriver, L as LaunchOptions, C as ContextOptions, D as DriverContext, A as AttachOptions } from '../interfaces-
|
|
2
|
-
export { a as ActionTimeout, b as CheckOptions, c as ClickOptions, d as CookieOptions, e as DriverPage, F as FillOptions, G as GotoOptions, H as HoverOptions, f as NavigationOptions, P as PressOptions, R as ReloadOptions, g as SelectOptions, V as Viewport, h as WaitOptions, i as WaitState } from '../interfaces-
|
|
1
|
+
import { E as ElementHint, S as ScreenshotOptions, N as NetworkEntry, W as WebDriver, L as LaunchOptions, C as ContextOptions, D as DriverContext, A as AttachOptions } from '../interfaces-7nMNCr2h.js';
|
|
2
|
+
export { a as ActionTimeout, b as CheckOptions, c as ClickOptions, d as CookieOptions, e as DriverPage, F as FillOptions, G as GotoOptions, H as HoverOptions, f as NavigationOptions, P as PressOptions, R as ReloadOptions, g as SelectOptions, V as Viewport, h as WaitOptions, i as WaitState } from '../interfaces-7nMNCr2h.js';
|
|
3
3
|
import '@unotest/protocol';
|
|
4
4
|
import '../config/schema.js';
|
|
5
5
|
import 'zod';
|