@unotest/web 0.18.0 → 0.20.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.
@@ -466,6 +466,24 @@ built-in DSL functions.
466
466
  (`camelCase`); `test_*` is reserved for entry functions; `flow_*` for
467
467
  composite multi-step helpers.
468
468
 
469
+ **A helper that READS is not a flow.** `flow_*` is executable on its own —
470
+ the runner accepts it as an entry and `explore_run_flow` replays it — so
471
+ that prefix is for journeys worth replaying. Anything that reads state and
472
+ hands back a value is a plain `snake_case` helper:
473
+
474
+ ```js
475
+ // unotest/e2e/_helpers/viewer.js
476
+ function overview_header_width() {
477
+ return evaluate('(() => document.querySelector("header").getBoundingClientRect().width)()');
478
+ }
479
+ ```
480
+
481
+ `return` is legal in either helper kind, and NOT in a `test_*` entry —
482
+ there it would mean the scenario silently ended halfway. A `flow_*` that
483
+ returns a value gets a `lint:flow-returns-value` warning: fine when the flow
484
+ acts and yields its result (`email = flow_signup()`), a rename hint when it
485
+ only reads.
486
+
469
487
  **Saved test structure.** Every step in a `test_*` entry must sit inside a
470
488
  `step("description", () => { … })` block (linter enforces). The title is the
471
489
  plain-English intent of the group; when a step later breaks you read it
@@ -597,6 +597,24 @@ built-in DSL functions.
597
597
  (`camelCase`); `test_*` is reserved for entry functions; `flow_*` for
598
598
  composite multi-step helpers.
599
599
 
600
+ **A helper that READS is not a flow.** `flow_*` is executable on its own —
601
+ the runner accepts it as an entry and `explore_run_flow` replays it — so
602
+ that prefix is for journeys worth replaying. Anything that reads state and
603
+ hands back a value is a plain `snake_case` helper:
604
+
605
+ ```js
606
+ // unotest/e2e/_helpers/viewer.js
607
+ function overview_header_width() {
608
+ return evaluate('(() => document.querySelector("header").getBoundingClientRect().width)()');
609
+ }
610
+ ```
611
+
612
+ `return` is legal in either helper kind, and NOT in a `test_*` entry —
613
+ there it would mean the scenario silently ended halfway. A `flow_*` that
614
+ returns a value gets a `lint:flow-returns-value` warning: fine when the flow
615
+ acts and yields its result (`email = flow_signup()`), a rename hint when it
616
+ only reads.
617
+
600
618
  **Saved test structure.** Every step in a `test_*` entry must sit inside a
601
619
  `step("description", () => { … })` block (linter enforces). The title is the
602
620
  plain-English intent of the group; when a step later breaks you read it
package/CHANGELOG.md CHANGED
@@ -1,5 +1,144 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.20.0] - 2026-08-24
4
+
5
+ ### Minor Changes
6
+
7
+ - c6efd92: Value helpers: `return` is no longer tied to the `flow_` prefix
8
+
9
+ A helper that reads state and returns a value had to be named `flow_*` —
10
+ the only place the validator accepted `return`. But `flow_*` is an
11
+ executable entry: the runner accepts it as a scenario and flow discovery
12
+ offers it to the agent to replay while recording, so a width getter showed
13
+ up in the list of reusable flows.
14
+
15
+ The boundary now keys off `test_*` instead. `return` is legal in any
16
+ helper — `flow_*` composites and plain `snake_case` value helpers alike —
17
+ and still rejected in a `test_*` entry, where it would mean the scenario
18
+ silently ended halfway.
19
+
20
+ ```js
21
+ // unotest/e2e/_helpers/viewer.js
22
+ function overview_header_width() {
23
+ return evaluate(
24
+ '(() => document.querySelector("header").getBoundingClientRect().width)()'
25
+ );
26
+ }
27
+ ```
28
+
29
+ New linter rule `lint:flow-returns-value` (warning) flags a `flow_*` that
30
+ returns a value: legitimate when the flow acts and yields its result
31
+ (`email = flow_signup()`), a rename hint when it only reads. Override it
32
+ under `linter.rules` like any other rule.
33
+
34
+ No migration needed — existing `flow_*` helpers that return keep working.
35
+
36
+ ### Patch Changes
37
+
38
+ - aab65a5: A failure in the first test of a file is no longer lost, and the dashboard no longer waits for F5.
39
+
40
+ **One run, one `run:finished`.** The event was written by the executor's
41
+ per-entry tap, so a file with four `test_*()` functions left four terminal
42
+ events in `steps.jsonl`. Every consumer reads the last one — so `collection`
43
+ reported a scenario green whenever the final function passed and the first
44
+ one failed. The runner now writes the event once, folding the outcomes of
45
+ every entry: `failed` > `interrupted` > `aborted` > `completed`. A run that
46
+ never got started (no entry function, browser failed to launch) writes a
47
+ terminal event too — its artifact used to read as "the process died".
48
+
49
+ **The viewer asks for the index again.** The first `load()` could land while
50
+ the server was still rebuilding the run index: the answer was "no runs", and
51
+ nobody asked again — WS only reports a run starting and finishing. On a
52
+ project with history the whole overview showed "never run" until a page
53
+ reload. `indexReady: false` now schedules a retry with a 0.5s → 30s backoff,
54
+ until the first ready answer.
55
+
56
+ - Updated dependencies [7957469]
57
+ - Updated dependencies [aab65a5]
58
+ - Updated dependencies [c6efd92]
59
+ - @unotest/protocol@0.20.0
60
+ - @unotest/viewer@0.20.0
61
+ - @unotest/dsl@0.20.0
62
+ - @unotest/core@0.20.0
63
+ - @unotest/grounder-client@0.20.0
64
+
65
+ ## [0.19.0] - 2026-08-23
66
+
67
+ ### Patch Changes
68
+
69
+ - The CLI passes termination on to the process it runs. `unotest-web` is a
70
+ dispatcher that spawns the real entry (`viewer`, a scenario run, the MCP
71
+ server) and waits; killing the dispatcher used to leave that process alive,
72
+ reparented to init and still holding its port. Ctrl-C hid it — a terminal
73
+ signals the whole foreground group — so it only bit tooling that kills the
74
+ process it started: each such call leaked one server. SIGTERM / SIGINT /
75
+ SIGHUP now reach the child, and the exit code still comes from it.
76
+
77
+ ### Minor Changes
78
+
79
+ - dfb3991: Per-collection parallelism via a `workers:` field in the collection YAML.
80
+
81
+ - `workers: N` (integer ≥ 1) in `unotest/e2e/_collections/*.yaml` sets how
82
+ many scenarios of that collection run concurrently; omitted = serial.
83
+ - Precedence: CLI `--workers=N` flag > manifest `workers:` > 1.
84
+ - Viewer: the collection header shows an editable `workers` value; the
85
+ setting is stored in the YAML, so CLI and CI runs pick it up too.
86
+ - `CollectionMeta` (protocol) gains a `workers: number | null` field.
87
+
88
+ - Run history scales: runs are filed under daily shards and the viewer stops
89
+ polling history it is not showing.
90
+
91
+ - New on-disk layout `unotest/.runs/<YYYY>/<MM>/<DD>/<runId>/` (UTC date the
92
+ run started). The shard is a pure function of the `runId`, which already
93
+ carries the timestamp — a direct link to a run keeps working even with the
94
+ index deleted. Existing flat `.runs/<runId>/` history is migrated
95
+ automatically (see the `runs migrate` entry).
96
+ - The viewer's watcher polls only LIVE runs; finished history never touches
97
+ it. Discovery watches the current day's directory with native `fs.watch`
98
+ and re-attaches at UTC midnight.
99
+ - A JSONL index per day and per scenario backs the history list. It is fully
100
+ rebuildable — rebuilt on start, non-blocking — so a corrupted or missing
101
+ index degrades the listing, never the runs themselves.
102
+ - `@unotest/protocol`: new `run-shard` and `run-index` modules (shard path
103
+ derivation, index record shapes) exported from the root entry.
104
+
105
+ - Step screenshots are stored once and shared, and old runs expire on their
106
+ own — a long history stops growing without bound.
107
+
108
+ - Identical frames are content-addressed in `unotest/.runs/_blobs/` and
109
+ hardlinked into each run. `du` and ordinary copies see whole files;
110
+ `cp -a` / `rsync -H` preserve the sharing. On one dogfood suite: 45
111
+ frames, 2.04 MB by apparent size, 0.96 MB on disk.
112
+ - Reference counting is the filesystem's (`st_nlink`), so nothing to keep in
113
+ sync. Blob generations keep the dedup honest past ext4's 65 000-link
114
+ ceiling, and a fresh blob is untouchable for an hour so the window between
115
+ writing it and linking it is never mistaken for garbage.
116
+ - Retention: `UNOTEST_RUNS_RETENTION_DAYS` (whole days, default 180) sweeps
117
+ runs older than the window at the end of a collection run. It never
118
+ changes the exit code — a failed sweep is reported, not fatal.
119
+ - `@unotest/protocol`: new `run-blobs` module exported from the root entry.
120
+
121
+ - Upgrading moves existing run history to the new layout by itself, and
122
+ Playwright moves to 1.62.
123
+
124
+ - The flat `.runs/<runId>/` history is migrated on the first run of the new
125
+ version. Default is to remove old runs (nobody asked to keep them);
126
+ `UNOTEST_RUNS_LEGACY=keep` re-files them into date shards instead. The
127
+ completion marker is written last, so an interrupted or failed move is
128
+ retried on the next start rather than silently marked done.
129
+ - New command `unotest-web runs migrate [--dry-run]` — the same migration,
130
+ runnable FIRST, with a report-only mode. A migration nobody can look at
131
+ before it happens is one that runs unannounced on someone else's machine.
132
+ - `playwright` moves to `^1.62.0` in `@unotest/web` and `@unotest/viewer`.
133
+ Run `npx playwright install` once after upgrading if your browser cache
134
+ predates it.
135
+ - Frame capture is now format-parameterised internally, still PNG. WebP was
136
+ measured and rejected: Chromium's lossless `type: "webp"` is pixel-exact
137
+ but 1.5× LARGER than PNG on real frames (3.17 MB vs 2.04 MB on one suite).
138
+ - Fix: the viewer served step screenshots as 403 after the layout change —
139
+ its asset allow-list still expected the flat layout. The route now has
140
+ tests.
141
+
3
142
  ## [0.18.0] - 2026-08-23
4
143
 
5
144
  ### Minor Changes
@@ -158,6 +158,24 @@ if (existsSync(distPath)) {
158
158
  }
159
159
 
160
160
  const child = spawn(cmd, cmdArgs, { stdio: "inherit" });
161
+
162
+ // Pass termination on to the child. This dispatcher is a thin wrapper: kill
163
+ // IT and the real process — the viewer server, a running scenario — has to
164
+ // go too, or it is orphaned to init and keeps its port for the rest of the
165
+ // day. Ctrl-C in a terminal hid the bug (the signal goes to the whole
166
+ // foreground group, so both died); every programmatic
167
+ // `child.kill("SIGTERM")` leaked one viewer per call, which is how a
168
+ // machine ended up with thirty of them and every release run failed its own
169
+ // viewer precondition.
170
+ //
171
+ // The child's own `exit` handler below still decides this process's exit
172
+ // code — we only forward and wait.
173
+ for (const sig of ["SIGTERM", "SIGINT", "SIGHUP"]) {
174
+ process.on(sig, () => {
175
+ if (child.exitCode === null && child.signalCode === null) child.kill(sig);
176
+ });
177
+ }
178
+
161
179
  // Surface spawn failures explicitly — empty stderr on a silent exit makes
162
180
  // debugging miserable for consumers. Reviewers hit this in a prior round.
163
181
  child.on("error", (err) => {
@@ -90,19 +90,19 @@ declare const FailureBundleConfigSchema: z.ZodObject<{
90
90
  type FailureBundleConfig = z.infer<typeof FailureBundleConfigSchema>;
91
91
  declare const DialogPolicySchema: z.ZodEnum<["accept", "dismiss", "manual"]>;
92
92
  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", "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"]>;
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", "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
94
  type LinterRuleId = z.infer<typeof LinterRuleIdSchema>;
95
95
  declare const LinterSeveritySchema: z.ZodEnum<["off", "warn", "error"]>;
96
96
  type LinterSeverity = z.infer<typeof LinterSeveritySchema>;
97
97
  declare const LinterConfigSchema: z.ZodObject<{
98
98
  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", "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"]>>;
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", "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
100
  }, "strip", z.ZodTypeAny, {
101
101
  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" | "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">>;
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" | "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
103
  }, {
104
104
  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" | "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">>;
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" | "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
106
  }>;
107
107
  type LinterConfig = z.infer<typeof LinterConfigSchema>;
108
108
  declare const McpConfigSchema: z.ZodObject<{
@@ -172,15 +172,15 @@ declare const WebServerConfigSchema: z.ZodObject<{
172
172
  /** How long to wait for the URL to come up after spawning. */
173
173
  timeoutMs: z.ZodDefault<z.ZodNumber>;
174
174
  }, "strip", z.ZodTypeAny, {
175
- command: string;
176
175
  url: string;
177
- reuseExistingServer: boolean;
178
176
  timeoutMs: number;
179
- }, {
180
177
  command: string;
178
+ reuseExistingServer: boolean;
179
+ }, {
181
180
  url: string;
182
- reuseExistingServer?: boolean | undefined;
181
+ command: string;
183
182
  timeoutMs?: number | undefined;
183
+ reuseExistingServer?: boolean | undefined;
184
184
  }>;
185
185
  type WebServerConfig = z.infer<typeof WebServerConfigSchema>;
186
186
  declare const UnotestConfigSchema: z.ZodObject<{
@@ -206,15 +206,15 @@ declare const UnotestConfigSchema: z.ZodObject<{
206
206
  /** How long to wait for the URL to come up after spawning. */
207
207
  timeoutMs: z.ZodDefault<z.ZodNumber>;
208
208
  }, "strip", z.ZodTypeAny, {
209
- command: string;
210
209
  url: string;
211
- reuseExistingServer: boolean;
212
210
  timeoutMs: number;
213
- }, {
214
211
  command: string;
212
+ reuseExistingServer: boolean;
213
+ }, {
215
214
  url: string;
216
- reuseExistingServer?: boolean | undefined;
215
+ command: string;
217
216
  timeoutMs?: number | undefined;
217
+ reuseExistingServer?: boolean | undefined;
218
218
  }>>;
219
219
  browsers: z.ZodArray<z.ZodEnum<["chromium", "firefox", "webkit"]>, "many">;
220
220
  channel: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"chrome">, z.ZodLiteral<"msedge">, z.ZodLiteral<"chrome-beta">, z.ZodNull]>>;
@@ -312,13 +312,13 @@ declare const UnotestConfigSchema: z.ZodObject<{
312
312
  defaultNavigationTimeoutMs: z.ZodNumber;
313
313
  linter: z.ZodObject<{
314
314
  enabled: z.ZodBoolean;
315
- 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", "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"]>>;
315
+ 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", "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"]>>;
316
316
  }, "strip", z.ZodTypeAny, {
317
317
  enabled: boolean;
318
- 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" | "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">>;
318
+ 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" | "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">>;
319
319
  }, {
320
320
  enabled: boolean;
321
- 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" | "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">>;
321
+ 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" | "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">>;
322
322
  }>;
323
323
  mcp: z.ZodObject<{
324
324
  transport: z.ZodLiteral<"stdio">;
@@ -398,7 +398,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
398
398
  defaultNavigationTimeoutMs: number;
399
399
  linter: {
400
400
  enabled: boolean;
401
- 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" | "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">>;
401
+ 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" | "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">>;
402
402
  };
403
403
  mcp: {
404
404
  transport: "stdio";
@@ -413,10 +413,10 @@ declare const UnotestConfigSchema: z.ZodObject<{
413
413
  };
414
414
  baseUrl?: string | undefined;
415
415
  webServer?: {
416
- command: string;
417
416
  url: string;
418
- reuseExistingServer: boolean;
419
417
  timeoutMs: number;
418
+ command: string;
419
+ reuseExistingServer: boolean;
420
420
  } | undefined;
421
421
  channel?: "chrome" | "msedge" | "chrome-beta" | null | undefined;
422
422
  storageState?: string | undefined;
@@ -450,7 +450,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
450
450
  defaultNavigationTimeoutMs: number;
451
451
  linter: {
452
452
  enabled: boolean;
453
- 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" | "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">>;
453
+ 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" | "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">>;
454
454
  };
455
455
  mcp: {
456
456
  transport: "stdio";
@@ -465,10 +465,10 @@ declare const UnotestConfigSchema: z.ZodObject<{
465
465
  };
466
466
  baseUrl?: string | undefined;
467
467
  webServer?: {
468
- command: string;
469
468
  url: string;
470
- reuseExistingServer?: boolean | undefined;
469
+ command: string;
471
470
  timeoutMs?: number | undefined;
471
+ reuseExistingServer?: boolean | undefined;
472
472
  } | undefined;
473
473
  channel?: "chrome" | "msedge" | "chrome-beta" | null | undefined;
474
474
  storageState?: string | undefined;
@@ -1 +1 @@
1
- function _0x439a(_0x5d0797,_0xebc588){_0x5d0797=_0x5d0797-0x1ef;var _0x20af53=_0x20af();var _0x439a5c=_0x20af53[_0x5d0797];if(_0x439a['bPfXEB']===undefined){var _0x20b772=function(_0x4caff7){var _0xb5e016='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x58df6d='',_0x271f3c='';for(var _0x5605f4=0x0,_0xff243,_0x12b7a5,_0x12b7f2=0x0;_0x12b7a5=_0x4caff7['charAt'](_0x12b7f2++);~_0x12b7a5&&(_0xff243=_0x5605f4%0x4?_0xff243*0x40+_0x12b7a5:_0x12b7a5,_0x5605f4++%0x4)?_0x58df6d+=String['fromCharCode'](0xff&_0xff243>>(-0x2*_0x5605f4&0x6)):0x0){_0x12b7a5=_0xb5e016['indexOf'](_0x12b7a5);}for(var _0x4a2f79=0x0,_0x2b1f10=_0x58df6d['length'];_0x4a2f79<_0x2b1f10;_0x4a2f79++){_0x271f3c+='%'+('00'+_0x58df6d['charCodeAt'](_0x4a2f79)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x271f3c);};_0x439a['YNwgsS']=_0x20b772,_0x439a['rYluct']={},_0x439a['bPfXEB']=!![];}var _0x23a33f=_0x20af53[0x0],_0xdde0b2=_0x5d0797+_0x23a33f,_0x53eee6=_0x439a['rYluct'][_0xdde0b2];return!_0x53eee6?(_0x439a5c=_0x439a['YNwgsS'](_0x439a5c),_0x439a['rYluct'][_0xdde0b2]=_0x439a5c):_0x439a5c=_0x53eee6,_0x439a5c;}var _0x4ba6ed=_0x439a;function _0x20af(){var _0x50cda3=['zgvMyxvSDa','BgLUDdPKAxnHBwjPzY1IEs1PBMrLEa','Cg9ZAxrPDMu','B2zM','BgLUDdPKzwvWlwnZCW','Dw5VDgvZDc9LmMuVx2HLBhbLCNm','mJG1mtHnr2D2Bhe','ndu2mZa2ogXrq05Hsa','BgLUDdPLDMfSDwf0zs1KAxnJB3vYywDLza','BxnLzgDL','y2HYB21PDw0','BwLU','zw51Bq','BgLUDdPZy2vUyxjPBY1PBI1YB290','BwfUDwfS','Bwf4','C3rYAw5N','BgLUDdPNB3rVlwnVBMnHDa','lNvUB3rLC3qVzMfPBhvYzxm','mZm3mZeZqKvjthPQ','BgLUDdPSAw50lw9Rlw1PC3nPBMCTCMvHC29U','BgLUDdPHCgKTy2fSBc1MAwXLlwjVzhK','DxjS','DMfSAwrHDg9YoNn0zxaTC2HHCgu','B2jQzwn0','DMfSAwrHDg9YoM1LDgeTC2HHCgu','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlwv4ChjLC3nPB24','DMfSAwrHDg9YoMLMlxnOyxbL','zMLYzwzVEa','yM9VBgvHBG','y2HYB21L','DMfSAwrHDg9YoMXPC3qTyxjN','BMv0D29YAW','DMfSAwrHDg9YoNzHCI1ZAgfWzq','BgL0zxjHBa','DMfSAwrHDg9YoNn0CMLUzY1JB25Jyxq','y3jHC2G','DMfSAwrHDg9YoNDYyxbWzwqTzM9YBwf0','zgLZBwLZCW','BgLUDdPLy2HVlwfZC2vYDa','DMfSAwrHDg9YoNnLBwfUDgLJlwXVC3m','BNvTyMvY','DMfSAwrHDg9YoMfYzY1RAw5K','DhjHBNnPzw50','D2vIA2L0','DMfSAwrHDg9YoMz1BMn0Aw9UlxnOyxbL','BgLUDdPYzwDLEc1PBNzHBgLK','B3b0Aw9UywW','BgLUDdPWyxvZzs1LEhbSAwnPDa','mJi3ndu4mdHXqKL1thC','C3rKAw8','nZmWmZqXnwPdqvzvCq','BNvSBa','BgLUDdPTDxn0ywnOzs1PBI1KC2W','BgLUDdP4Cgf0Aa','CMvJB3jK','yxjYyxK','mZaXodK0mhvXsxHtBG','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlxn0yxrLBwvUDa','Aw50','D2fYBG','zxjYB3i','ntuXntyXngfiChbvCW','DMfSAwrHDg9YoMzVCI1ZAgfWzq','mtiWmgLKz0rVsq','ywnJzxb0'];_0x20af=function(){return _0x50cda3;};return _0x20af();}(function(_0x51f801,_0xa7d92b){var _0x31bb77={_0x58b0b4:0x1f9,_0x148ffb:0x1fe,_0x277a77:0x200,_0x3b8be4:0x208,_0x1a67da:0x1f3},_0x3b0f32=_0x439a,_0x4f00d2=_0x51f801();while(!![]){try{var _0x571e89=-parseInt(_0x3b0f32(0x215))/0x1+parseInt(_0x3b0f32(_0x31bb77._0x58b0b4))/0x2+-parseInt(_0x3b0f32(_0x31bb77._0x148ffb))/0x3+-parseInt(_0x3b0f32(0x209))/0x4+parseInt(_0x3b0f32(_0x31bb77._0x277a77))/0x5*(-parseInt(_0x3b0f32(_0x31bb77._0x3b8be4))/0x6)+parseInt(_0x3b0f32(_0x31bb77._0x1a67da))/0x7+parseInt(_0x3b0f32(0x1f1))/0x8;if(_0x571e89===_0xa7d92b)break;else _0x4f00d2['push'](_0x4f00d2['shift']());}catch(_0x3292c9){_0x4f00d2['push'](_0x4f00d2['shift']());}}}(_0x20af,0xe52cf));import{z}from'zod';var BrowserSchema=z[_0x4ba6ed(0x20e)]([_0x4ba6ed(0x20c),_0x4ba6ed(0x21e),_0x4ba6ed(0x22e)]),BrowserChannelSchema=z['union']([z[_0x4ba6ed(0x224)](_0x4ba6ed(0x220)),z[_0x4ba6ed(0x224)](_0x4ba6ed(0x20b)),z['literal']('chrome-beta'),z[_0x4ba6ed(0x1f4)]()])[_0x4ba6ed(0x1ef)](),ViewportSchema=z[_0x4ba6ed(0x21a)]({'width':z['number']()[_0x4ba6ed(0x1fb)]()[_0x4ba6ed(0x204)](),'height':z['number']()[_0x4ba6ed(0x1fb)]()['positive']()}),RetryReasonSchema=z['enum']([_0x4ba6ed(0x22d),_0x4ba6ed(0x222),_0x4ba6ed(0x226)]),RetryConfigSchema=z['object']({'count':z['number']()[_0x4ba6ed(0x1fb)]()['min'](0x0)[_0x4ba6ed(0x211)](0xa),'on':z[_0x4ba6ed(0x1f8)](RetryReasonSchema)}),FailureBundleConfigSchema=z[_0x4ba6ed(0x21a)]({'tier1':z['literal'](!![])[_0x4ba6ed(0x202)](!![]),'tier2':z[_0x4ba6ed(0x21f)](),'tier3':z[_0x4ba6ed(0x21a)]({'network':z['boolean'](),'video':z['boolean']()}),'retention':z[_0x4ba6ed(0x21a)]({'runs':z[_0x4ba6ed(0x22b)]()[_0x4ba6ed(0x1fb)]()[_0x4ba6ed(0x204)](),'days':z[_0x4ba6ed(0x22b)]()[_0x4ba6ed(0x1fb)]()[_0x4ba6ed(0x204)]()}),'storageDir':z[_0x4ba6ed(0x212)]()[_0x4ba6ed(0x20d)](0x1)}),DialogPolicySchema=z['enum']([_0x4ba6ed(0x201),_0x4ba6ed(0x228),_0x4ba6ed(0x210)]),LinterRuleIdSchema=z[_0x4ba6ed(0x20e)]([_0x4ba6ed(0x206),_0x4ba6ed(0x1f6),'lint:obfuscated-class',_0x4ba6ed(0x1f0),_0x4ba6ed(0x203),_0x4ba6ed(0x20a),_0x4ba6ed(0x20f),_0x4ba6ed(0x1f5),_0x4ba6ed(0x213),_0x4ba6ed(0x230),_0x4ba6ed(0x229),_0x4ba6ed(0x217),_0x4ba6ed(0x216),'validator:unknown-function','validator:arity',_0x4ba6ed(0x22c),'validator:step-coverage',_0x4ba6ed(0x219),_0x4ba6ed(0x21b),_0x4ba6ed(0x22f),_0x4ba6ed(0x1ff),_0x4ba6ed(0x21d),_0x4ba6ed(0x223),_0x4ba6ed(0x1fa),_0x4ba6ed(0x21c),_0x4ba6ed(0x225),_0x4ba6ed(0x22a),_0x4ba6ed(0x221),_0x4ba6ed(0x227)]),LinterSeveritySchema=z[_0x4ba6ed(0x20e)](['off',_0x4ba6ed(0x1fc),_0x4ba6ed(0x1fd)]),LinterConfigSchema=z[_0x4ba6ed(0x21a)]({'enabled':z[_0x4ba6ed(0x21f)](),'rules':z[_0x4ba6ed(0x1f7)](LinterRuleIdSchema,LinterSeveritySchema)}),McpConfigSchema=z[_0x4ba6ed(0x21a)]({'transport':z['literal'](_0x4ba6ed(0x1f2))}),SandboxConfigSchema=z['object']({'shellCwd':z[_0x4ba6ed(0x212)]()['optional'](),'shellTimeoutMs':z[_0x4ba6ed(0x22b)]()['int']()[_0x4ba6ed(0x204)]()['optional'](),'exportSecrets':z[_0x4ba6ed(0x1f8)](z[_0x4ba6ed(0x212)]())[_0x4ba6ed(0x1ef)](),'database':z[_0x4ba6ed(0x212)]()['optional'](),'apiBaseUrl':z[_0x4ba6ed(0x212)]()[_0x4ba6ed(0x218)]()[_0x4ba6ed(0x1ef)](),'uploadDir':z[_0x4ba6ed(0x212)]()[_0x4ba6ed(0x1ef)]()}),WebServerConfigSchema=z[_0x4ba6ed(0x21a)]({'command':z[_0x4ba6ed(0x212)]()[_0x4ba6ed(0x20d)](0x1),'url':z[_0x4ba6ed(0x212)]()['url'](),'reuseExistingServer':z[_0x4ba6ed(0x21f)]()[_0x4ba6ed(0x202)](!![]),'timeoutMs':z[_0x4ba6ed(0x22b)]()[_0x4ba6ed(0x1fb)]()[_0x4ba6ed(0x204)]()['default'](0xea60)}),UnotestConfigSchema=z[_0x4ba6ed(0x21a)]({'baseUrl':z[_0x4ba6ed(0x212)]()[_0x4ba6ed(0x218)]()['optional'](),'webServer':WebServerConfigSchema[_0x4ba6ed(0x1ef)](),'browsers':z[_0x4ba6ed(0x1f8)](BrowserSchema)[_0x4ba6ed(0x20d)](0x1),'channel':BrowserChannelSchema,'viewport':ViewportSchema,'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':z[_0x4ba6ed(0x212)]()['optional'](),'testDir':z[_0x4ba6ed(0x212)]()[_0x4ba6ed(0x20d)](0x1),'helpersDir':z['string']()[_0x4ba6ed(0x20d)](0x1),'defaultTimeoutMs':z[_0x4ba6ed(0x22b)]()[_0x4ba6ed(0x1fb)]()['positive'](),'defaultNavigationTimeoutMs':z[_0x4ba6ed(0x22b)]()[_0x4ba6ed(0x1fb)]()[_0x4ba6ed(0x204)](),'linter':LinterConfigSchema,'mcp':McpConfigSchema,'sandbox':SandboxConfigSchema}),DEFAULT_CONFIG={'browsers':[_0x4ba6ed(0x20c)],'viewport':{'width':0x500,'height':0x2d0},'retry':{'count':0x0,'on':['transient']},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':_0x4ba6ed(0x214)},'dialogPolicy':_0x4ba6ed(0x201),'testDir':'unotest/e2e','helpersDir':_0x4ba6ed(0x207),'defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x7530,'linter':{'enabled':!![],'rules':{'lint:deep-css':_0x4ba6ed(0x1fc),'lint:xpath':_0x4ba6ed(0x1fc),'lint:obfuscated-class':_0x4ba6ed(0x1fc),'lint:pause-explicit':_0x4ba6ed(0x1fc),'lint:disambig-by-index':_0x4ba6ed(0x205),'lint:evaluate-discouraged':_0x4ba6ed(0x1fc),'lint:scenario-in-root':_0x4ba6ed(0x1fd),'lint:mustache-in-dsl':'error','lint:goto-concat':_0x4ba6ed(0x1fc),'lint:regex-invalid':_0x4ba6ed(0x1fd),'lint:echo-assert':_0x4ba6ed(0x1fc),'lint:lint-ok-missing-reason':'warn','validator:unknown-function':'error'}},'mcp':{'transport':_0x4ba6ed(0x1f2)},'sandbox':{}};export{BrowserChannelSchema,BrowserSchema,DEFAULT_CONFIG,DialogPolicySchema,FailureBundleConfigSchema,LinterConfigSchema,LinterRuleIdSchema,LinterSeveritySchema,McpConfigSchema,RetryConfigSchema,RetryReasonSchema,SandboxConfigSchema,UnotestConfigSchema,ViewportSchema,WebServerConfigSchema};
1
+ var _0x46bc37=_0x1520;function _0x1520(_0x1e138b,_0x3fe2dc){_0x1e138b=_0x1e138b-0x1d5;var _0x2628d7=_0x2628();var _0x1520b5=_0x2628d7[_0x1e138b];if(_0x1520['HWTvfP']===undefined){var _0x58a648=function(_0x14bac4){var _0x4f6b4b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x2f3e12='',_0x2c56a1='';for(var _0xa1357a=0x0,_0x97dbb1,_0x2e2067,_0x2f0c8d=0x0;_0x2e2067=_0x14bac4['charAt'](_0x2f0c8d++);~_0x2e2067&&(_0x97dbb1=_0xa1357a%0x4?_0x97dbb1*0x40+_0x2e2067:_0x2e2067,_0xa1357a++%0x4)?_0x2f3e12+=String['fromCharCode'](0xff&_0x97dbb1>>(-0x2*_0xa1357a&0x6)):0x0){_0x2e2067=_0x4f6b4b['indexOf'](_0x2e2067);}for(var _0x2894f9=0x0,_0x4eab9f=_0x2f3e12['length'];_0x2894f9<_0x4eab9f;_0x2894f9++){_0x2c56a1+='%'+('00'+_0x2f3e12['charCodeAt'](_0x2894f9)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2c56a1);};_0x1520['MHSHDg']=_0x58a648,_0x1520['pzNqwX']={},_0x1520['HWTvfP']=!![];}var _0x572f3d=_0x2628d7[0x0],_0x2fd094=_0x1e138b+_0x572f3d,_0x43b0bf=_0x1520['pzNqwX'][_0x2fd094];return!_0x43b0bf?(_0x1520b5=_0x1520['MHSHDg'](_0x1520b5),_0x1520['pzNqwX'][_0x2fd094]=_0x1520b5):_0x1520b5=_0x43b0bf,_0x1520b5;}(function(_0x46b2eb,_0x144cdf){var _0x5bc503={_0x22e52f:0x20f,_0x5521db:0x1f1,_0x470521:0x1da,_0x489891:0x1d7,_0x4523c5:0x1d6},_0x1ba952=_0x1520,_0x3b6d95=_0x46b2eb();while(!![]){try{var _0xa1ae14=parseInt(_0x1ba952(0x1f8))/0x1*(-parseInt(_0x1ba952(_0x5bc503._0x22e52f))/0x2)+-parseInt(_0x1ba952(0x20c))/0x3+parseInt(_0x1ba952(0x213))/0x4*(-parseInt(_0x1ba952(_0x5bc503._0x5521db))/0x5)+-parseInt(_0x1ba952(0x1f5))/0x6*(parseInt(_0x1ba952(_0x5bc503._0x470521))/0x7)+parseInt(_0x1ba952(0x214))/0x8*(-parseInt(_0x1ba952(0x20a))/0x9)+-parseInt(_0x1ba952(_0x5bc503._0x489891))/0xa*(parseInt(_0x1ba952(0x1d8))/0xb)+-parseInt(_0x1ba952(_0x5bc503._0x4523c5))/0xc*(-parseInt(_0x1ba952(0x1ec))/0xd);if(_0xa1ae14===_0x144cdf)break;else _0x3b6d95['push'](_0x3b6d95['shift']());}catch(_0x4bc25b){_0x3b6d95['push'](_0x3b6d95['shift']());}}}(_0x2628,0x853fe));import{z}from'zod';var BrowserSchema=z[_0x46bc37(0x208)]([_0x46bc37(0x1e5),_0x46bc37(0x1ef),_0x46bc37(0x1f9)]),BrowserChannelSchema=z[_0x46bc37(0x215)]([z[_0x46bc37(0x1ed)]('chrome'),z[_0x46bc37(0x1ed)](_0x46bc37(0x20d)),z[_0x46bc37(0x1ed)](_0x46bc37(0x1fb)),z[_0x46bc37(0x1dc)]()])['optional'](),ViewportSchema=z[_0x46bc37(0x1de)]({'width':z[_0x46bc37(0x212)]()[_0x46bc37(0x1ee)]()[_0x46bc37(0x200)](),'height':z[_0x46bc37(0x212)]()[_0x46bc37(0x1ee)]()[_0x46bc37(0x200)]()}),RetryReasonSchema=z[_0x46bc37(0x208)](['transient',_0x46bc37(0x1e0),_0x46bc37(0x1e6)]),RetryConfigSchema=z[_0x46bc37(0x1de)]({'count':z[_0x46bc37(0x212)]()[_0x46bc37(0x1ee)]()['min'](0x0)[_0x46bc37(0x1fd)](0xa),'on':z[_0x46bc37(0x1eb)](RetryReasonSchema)}),FailureBundleConfigSchema=z[_0x46bc37(0x1de)]({'tier1':z[_0x46bc37(0x1ed)](!![])['default'](!![]),'tier2':z[_0x46bc37(0x207)](),'tier3':z['object']({'network':z['boolean'](),'video':z[_0x46bc37(0x207)]()}),'retention':z[_0x46bc37(0x1de)]({'runs':z['number']()['int']()['positive'](),'days':z[_0x46bc37(0x212)]()[_0x46bc37(0x1ee)]()['positive']()}),'storageDir':z[_0x46bc37(0x1e9)]()[_0x46bc37(0x210)](0x1)}),DialogPolicySchema=z['enum']([_0x46bc37(0x1fc),_0x46bc37(0x206),_0x46bc37(0x1ea)]),LinterRuleIdSchema=z[_0x46bc37(0x208)](['lint:deep-css',_0x46bc37(0x1f3),_0x46bc37(0x1e2),_0x46bc37(0x1ff),_0x46bc37(0x1f6),_0x46bc37(0x1f0),_0x46bc37(0x1e4),_0x46bc37(0x1e8),_0x46bc37(0x1e1),_0x46bc37(0x20b),_0x46bc37(0x20e),_0x46bc37(0x1fe),_0x46bc37(0x205),'lint:flow-returns-value',_0x46bc37(0x203),'validator:arity','validator:arg-kind',_0x46bc37(0x201),'validator:step-shape',_0x46bc37(0x202),'validator:function-shape',_0x46bc37(0x1f7),_0x46bc37(0x1f2),_0x46bc37(0x218),_0x46bc37(0x1dd),_0x46bc37(0x1f4),_0x46bc37(0x1df),'validator:semantic-loss','validator:list-arg','validator:wrapped-format']),LinterSeveritySchema=z['enum']([_0x46bc37(0x1d9),'warn',_0x46bc37(0x1db)]),LinterConfigSchema=z[_0x46bc37(0x1de)]({'enabled':z[_0x46bc37(0x207)](),'rules':z[_0x46bc37(0x216)](LinterRuleIdSchema,LinterSeveritySchema)}),McpConfigSchema=z[_0x46bc37(0x1de)]({'transport':z[_0x46bc37(0x1ed)](_0x46bc37(0x1fa))}),SandboxConfigSchema=z['object']({'shellCwd':z[_0x46bc37(0x1e9)]()[_0x46bc37(0x1e3)](),'shellTimeoutMs':z[_0x46bc37(0x212)]()[_0x46bc37(0x1ee)]()[_0x46bc37(0x200)]()[_0x46bc37(0x1e3)](),'exportSecrets':z['array'](z[_0x46bc37(0x1e9)]())[_0x46bc37(0x1e3)](),'database':z[_0x46bc37(0x1e9)]()[_0x46bc37(0x1e3)](),'apiBaseUrl':z[_0x46bc37(0x1e9)]()[_0x46bc37(0x1d5)]()[_0x46bc37(0x1e3)](),'uploadDir':z[_0x46bc37(0x1e9)]()[_0x46bc37(0x1e3)]()}),WebServerConfigSchema=z['object']({'command':z[_0x46bc37(0x1e9)]()[_0x46bc37(0x210)](0x1),'url':z['string']()[_0x46bc37(0x1d5)](),'reuseExistingServer':z[_0x46bc37(0x207)]()['default'](!![]),'timeoutMs':z['number']()['int']()[_0x46bc37(0x200)]()[_0x46bc37(0x217)](0xea60)}),UnotestConfigSchema=z['object']({'baseUrl':z[_0x46bc37(0x1e9)]()[_0x46bc37(0x1d5)]()[_0x46bc37(0x1e3)](),'webServer':WebServerConfigSchema[_0x46bc37(0x1e3)](),'browsers':z[_0x46bc37(0x1eb)](BrowserSchema)['min'](0x1),'channel':BrowserChannelSchema,'viewport':ViewportSchema,'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':z[_0x46bc37(0x1e9)]()['optional'](),'testDir':z['string']()['min'](0x1),'helpersDir':z[_0x46bc37(0x1e9)]()[_0x46bc37(0x210)](0x1),'defaultTimeoutMs':z[_0x46bc37(0x212)]()[_0x46bc37(0x1ee)]()[_0x46bc37(0x200)](),'defaultNavigationTimeoutMs':z[_0x46bc37(0x212)]()[_0x46bc37(0x1ee)]()[_0x46bc37(0x200)](),'linter':LinterConfigSchema,'mcp':McpConfigSchema,'sandbox':SandboxConfigSchema}),DEFAULT_CONFIG={'browsers':[_0x46bc37(0x1e5)],'viewport':{'width':0x500,'height':0x2d0},'retry':{'count':0x0,'on':[_0x46bc37(0x209)]},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':'.unotest/failures'},'dialogPolicy':_0x46bc37(0x1fc),'testDir':_0x46bc37(0x1e7),'helpersDir':_0x46bc37(0x211),'defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x7530,'linter':{'enabled':!![],'rules':{'lint:deep-css':_0x46bc37(0x204),'lint:xpath':_0x46bc37(0x204),'lint:obfuscated-class':_0x46bc37(0x204),'lint:pause-explicit':'warn','lint:disambig-by-index':_0x46bc37(0x1d9),'lint:evaluate-discouraged':'warn','lint:scenario-in-root':_0x46bc37(0x1db),'lint:mustache-in-dsl':'error','lint:goto-concat':_0x46bc37(0x204),'lint:regex-invalid':'error','lint:echo-assert':_0x46bc37(0x204),'lint:lint-ok-missing-reason':_0x46bc37(0x204),'lint:flow-returns-value':'warn','validator:unknown-function':_0x46bc37(0x1db)}},'mcp':{'transport':'stdio'},'sandbox':{}};function _0x2628(){var _0x759f83=['mJGWndK2ngz1EMn0sa','ntbouhrnsMi','mZu3otqWD3joCuTw','B2zM','mJuWmZeZrKreqxnX','zxjYB3i','BNvSBa','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlxn0yxrLBwvUDa','B2jQzwn0','DMfSAwrHDg9YoNn0CMLUzY1JB25Jyxq','BMv0D29YAW','BgLUDdPNB3rVlwnVBMnHDa','BgLUDdPVyMz1C2nHDgvKlwnSyxnZ','B3b0Aw9UywW','BgLUDdPZy2vUyxjPBY1PBI1YB290','y2HYB21PDw0','y3jHC2G','Dw5VDgvZDc9LmMu','BgLUDdPTDxn0ywnOzs1PBI1KC2W','C3rYAw5N','BwfUDwfS','yxjYyxK','mtqZyMzivLLd','BgL0zxjHBa','Aw50','zMLYzwzVEa','BgLUDdPLDMfSDwf0zs1KAxnJB3vYywDLza','mJv1B1nuBuy','DMfSAwrHDg9YoMLMlxnOyxbL','BgLUDdP4Cgf0Aa','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlwv4ChjLC3nPB24','nMLiu3rqAW','BgLUDdPKAxnHBwjPzY1IEs1PBMrLEa','DMfSAwrHDg9YoMzVCI1ZAgfWzq','m1DKzgHpAW','D2vIA2L0','C3rKAw8','y2HYB21LlwjLDge','ywnJzxb0','Bwf4','BgLUDdPHCgKTy2fSBc1MAwXLlwjVzhK','BgLUDdPWyxvZzs1LEhbSAwnPDa','Cg9ZAxrPDMu','DMfSAwrHDg9YoNn0zxaTy292zxjHz2u','DMfSAwrHDg9YoM1LDgeTC2HHCgu','DMfSAwrHDg9YoNvUA25VD24TzNvUy3rPB24','D2fYBG','BgLUDdPSAw50lw9Rlw1PC3nPBMCTCMvHC29U','zgLZBwLZCW','yM9VBgvHBG','zw51Bq','DhjHBNnPzw50','nZjwAwrPAKe','BgLUDdPYzwDLEc1PBNzHBgLK','mJu4mZm3nunJz0vsvG','BxnLzgDL','BgLUDdPLy2HVlwfZC2vYDa','nteXmZjLrNjevMG','BwLU','Dw5VDgvZDc9LmMuVx2HLBhbLCNm','BNvTyMvY','nJK5nJa0t3b3tKPv','mtq2ndbMz1bhwLC','Dw5PB24','CMvJB3jK','zgvMyxvSDa','DMfSAwrHDg9YoNzHCI1ZAgfWzq','DxjS'];_0x2628=function(){return _0x759f83;};return _0x2628();}export{BrowserChannelSchema,BrowserSchema,DEFAULT_CONFIG,DialogPolicySchema,FailureBundleConfigSchema,LinterConfigSchema,LinterRuleIdSchema,LinterSeveritySchema,McpConfigSchema,RetryConfigSchema,RetryReasonSchema,SandboxConfigSchema,UnotestConfigSchema,ViewportSchema,WebServerConfigSchema};
@@ -1,5 +1,5 @@
1
- import { E as ElementHint, N as NetworkEntry, W as WebDriver, L as LaunchOptions, C as ContextOptions, D as DriverContext } from '../interfaces-elRn0llQ.js';
2
- export { A as ActionTimeout, a as CheckOptions, b as ClickOptions, c as CookieOptions, d as DriverPage, F as FillOptions, G as GotoOptions, H as HoverOptions, e as NavigationOptions, P as PressOptions, R as ReloadOptions, S as ScreenshotOptions, f as SelectOptions, V as Viewport, g as WaitOptions, h as WaitState } from '../interfaces-elRn0llQ.js';
1
+ import { E as ElementHint, N as NetworkEntry, W as WebDriver, L as LaunchOptions, C as ContextOptions, D as DriverContext } from '../interfaces-B-FxA_qn.js';
2
+ export { A as ActionTimeout, a as CheckOptions, b as ClickOptions, c as CookieOptions, d as DriverPage, F as FillOptions, G as GotoOptions, H as HoverOptions, e as NavigationOptions, P as PressOptions, R as ReloadOptions, S as ScreenshotOptions, f as SelectOptions, V as Viewport, g as WaitOptions, h as WaitState } from '../interfaces-B-FxA_qn.js';
3
3
  import '@unotest/protocol';
4
4
  import '../config/schema.js';
5
5
  import 'zod';
@@ -1 +1 @@
1
- const _0x5ef1c7=_0x1ac4;(function(_0x1f6861,_0xad6a1f){const _0x2ba2c2={_0x492d7c:0x118,_0x553607:0x126,_0x18137f:0x14c,_0x5a0f45:0xe9,_0x35fee2:0x143},_0x50a7d7=_0x1ac4,_0x2510a7=_0x1f6861();while(!![]){try{const _0x36e2e7=-parseInt(_0x50a7d7(_0x2ba2c2._0x492d7c))/0x1*(-parseInt(_0x50a7d7(0xff))/0x2)+-parseInt(_0x50a7d7(_0x2ba2c2._0x553607))/0x3+-parseInt(_0x50a7d7(_0x2ba2c2._0x18137f))/0x4*(-parseInt(_0x50a7d7(0x12b))/0x5)+-parseInt(_0x50a7d7(_0x2ba2c2._0x5a0f45))/0x6+parseInt(_0x50a7d7(_0x2ba2c2._0x35fee2))/0x7+parseInt(_0x50a7d7(0x108))/0x8+parseInt(_0x50a7d7(0x120))/0x9;if(_0x36e2e7===_0xad6a1f)break;else _0x2510a7['push'](_0x2510a7['shift']());}catch(_0x13ec8f){_0x2510a7['push'](_0x2510a7['shift']());}}}(_0x36db,0x9c9fc));var __defProp=Object['defineProperty'],__name=(_0x2d1598,_0x5836a5)=>__defProp(_0x2d1598,_0x5ef1c7(0xe4),{'value':_0x5836a5,'configurable':!![]});function subscribe(_0x4264db,_0x315307){const _0x4ce769={_0x216136:0x12e},_0x309d2f=_0x5ef1c7;return _0x4264db[_0x309d2f(0x117)](_0x315307),()=>{const _0x3cafe2=_0x309d2f;_0x4264db[_0x3cafe2(_0x4ce769._0x216136)](_0x315307);};}__name(subscribe,'subscribe');import{UnotestError}from'@unotest/core';var DriverError=class extends UnotestError{static{__name(this,'DriverError');}},LocatorError=class extends UnotestError{static{__name(this,'LocatorError');}};function _0x1ac4(_0x1d7119,_0x52c572){_0x1d7119=_0x1d7119-0xdd;const _0x36dbdf=_0x36db();let _0x1ac44c=_0x36dbdf[_0x1d7119];if(_0x1ac4['PyNIkS']===undefined){var _0x4168aa=function(_0x41d436){const _0x496872='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2d1598='',_0x5836a5='';for(let _0x4264db=0x0,_0x315307,_0x1e7c1a,_0x4e2e01=0x0;_0x1e7c1a=_0x41d436['charAt'](_0x4e2e01++);~_0x1e7c1a&&(_0x315307=_0x4264db%0x4?_0x315307*0x40+_0x1e7c1a:_0x1e7c1a,_0x4264db++%0x4)?_0x2d1598+=String['fromCharCode'](0xff&_0x315307>>(-0x2*_0x4264db&0x6)):0x0){_0x1e7c1a=_0x496872['indexOf'](_0x1e7c1a);}for(let _0x29d321=0x0,_0x43bba1=_0x2d1598['length'];_0x29d321<_0x43bba1;_0x29d321++){_0x5836a5+='%'+('00'+_0x2d1598['charCodeAt'](_0x29d321)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5836a5);};_0x1ac4['hTBAeO']=_0x4168aa,_0x1ac4['MggviT']={},_0x1ac4['PyNIkS']=!![];}const _0x318aac=_0x36dbdf[0x0],_0x13316a=_0x1d7119+_0x318aac,_0x3b8c52=_0x1ac4['MggviT'][_0x13316a];return!_0x3b8c52?(_0x1ac44c=_0x1ac4['hTBAeO'](_0x1ac44c),_0x1ac4['MggviT'][_0x13316a]=_0x1ac44c):_0x1ac44c=_0x3b8c52,_0x1ac44c;}function createRecorder(){const _0x3eb109=_0x5ef1c7,_0x1e7c1a=[];let _0x4e2e01=0x0;return{'push':__name(_0x29d321=>_0x1e7c1a['push']({..._0x29d321,'seq':_0x4e2e01++}),_0x3eb109(0x14b)),'calls':__name(()=>_0x1e7c1a,'calls')};}__name(createRecorder,_0x5ef1c7(0x124));function _0x36db(){const _0x135e97=['pgrPDIbKyxrHlxvUB3rLC3qTCMvMpsi','CgfNzsbPBMrLEcbVDxqGB2yGCMfUz2u','ntiXnJuYoef2wLbdEG','rMfRzunVBNrLEhq','zxHPDezYyw1L','AxneAxnHyMXLzej5rgvMyxvSDa','Aw5PDgLHBfvYBa','yMvOyxzPB3i','ywn0AxzLugfNzq','Cg9W','D2fPDezVCG','BMv3q29UDgv4DcbJywXSzwqGyMvMB3jLigXHDw5JAcGP','Bwf5yMvuAhjVDW','BgvUz3rO','BMv0D29YA0vUDhjPzxm','lNbHz2uW','zg91yMXLq2XPy2S','ywrK','ndmXotq4sgzRy3Dg','y29UBMvJDfnOyxjLza','C2nVCgu','zxHPDezYyw1LignHBgXLzcb3AxrOig5VigzYyw1Lig9UihrOzsbZDgfJAW','y291BNq','DxbSB2fKrMLSzq','C2nYzwvUC2HVDa','Bgf1BMnO','mtaYmZC1mhHQzhDjrG','y2XVC2u','Cg9WDxbpBKnSAwnR','zNjHBwvtDgfJAW','y3jLyxrLuMvJB3jKzxi','Ag92zxi','mZGYode0nfvSr1jMDW','yxr0ywnOrxHPC3rPBMC','z2v0tg9JywXtDg9YywDL','zMfRzs1WBMC','BM8Gywn0AxzLihbHz2uGAw4Gy29UDgv4Da','nwfftu5dDW','zxzHBhvHDgvpBKXVy2f0B3i','DgL0Bgu','zgvSzxrL','Dgv4DenVBNrLBNq','Dw5JAgvJAW','zMfRzsb0AxrSzq','Aw5ZCgvJDevSzw1LBNq','yxr0CMLIDxrLC0j5rgvMyxvSDa','B25ozxDqywDL','iJ48l2rPDJ4','y29VA2LLCW','D2fPDezVCLrLEhq','y2HLy2S','y2XVC2vgywTLugfNzq','zhjHz0fUzerYB3a','y29VA2LLu3rHDgu','CMvJB3jKzxi','zMLSDgvY','BMv3q29UDgv4Da','zw1PDezHA2vqB3b1Ca','y29UC29SzuvUDhjPzxm','Aw5WDxrwywX1zuj5rgvMyxvSDa','Bgf1BMnOzwq','odq5odu5nvLsu05TEG','zNjVBq','ChjLC3m','zMLSBa','z29gB3j3yxjK','C2v0tg9JywXtDg9YywDL','y2HLy2TLzfn0yxrL','yxr0ywnOrxHPC3rPBMCGBM90ihn1ChbVCNrLzcbIEsbgywTLv2vIrhjPDMvY','ChvZAa','mJKWntiYohPjyuHhDG','C2v0q29VA2LL','C2v0qwn0AxzLugfNzq','C3bSAwnL','BMv3ugfNzuXPC3rLBMvYCW','zwXLBwvUDeHPBNrcEvjLzG','CMvM','z2v0qxr0CMLIDxrL','B3v0zxjive1m','CMvJB3jK','BMfTzq','B25bzNrLCKnSAwnR','AxneAxnHyMXLza','D2fPDezVCLvYBa','zxjYB3jpBK5LEhrby3rPB24','nZmYmZq1nNzTDxbfyq','D2fPDezVCKXVywrtDgf0zq','B3v0zxjiDg1SqNLszwy','Bg9JywXtDg9YywDL','zhjPDMvY','Aw5WDxrwywX1zq','C2nYB2XSsw50B1zPzxC','CMvSB2fK','zxzHBhvHDgu','y29UDgv4Dhm','y2fSBhngB3i','y291BNrcEurLzMf1Bhq','z29cywnR','y3vYCMvUDfvYBa','y29UBMvJDfnOyxjLzcbUB3qGC3vWCg9YDgvKigj5iezHA2vxzwjeCML2zxi','C3rLChm','y2XPCgjVyxjKugfZDgu','Bg9JywXtDg9YywDLu3rHDgu','AxnwAxnPyMXL','zw50zxjgCMfTzq','A2LUza','Dgv4DenVBNrLBNrcEurLzMf1Bhq','mMDnuxrYtq','D2fPDezVCK5HDMLNyxrPB24','C2f2zvn0B3jHz2vtDgf0zq','CgfNzuXPC3q','y2XPy2S','y2fSBhm','ywn0AxzLswr4'];_0x36db=function(){return _0x135e97;};return _0x36db();}var FakePage=class{constructor(_0x43bba1,_0x594be1,_0xe33cc6,_0x2c237a){const _0x33a24e={_0x526321:0x13c,_0x2d6c79:0xf6},_0x323948=_0x5ef1c7;this[_0x323948(_0x33a24e._0x526321)]=_0x43bba1,this[_0x323948(0x10d)]=_0x594be1,this[_0x323948(0x11a)]=_0xe33cc6,this[_0x323948(_0x33a24e._0x2d6c79)]=_0x2c237a;}[_0x5ef1c7(0x13c)];['behavior'];[_0x5ef1c7(0x11a)];static{__name(this,'FakePage');}[_0x5ef1c7(0xf6)];['onAfterClick'];[_0x5ef1c7(0xe3)](_0x46729c,_0x1a9069){const _0x55f825={_0x91d446:0x13c},_0x4477de=_0x5ef1c7;this[_0x4477de(_0x55f825._0x91d446)]['push']({'scope':this[_0x4477de(0x11a)],'method':_0x46729c,'args':_0x1a9069});}['maybeThrow'](){const _0x1c3b08={_0x25302c:0xe8,_0x251154:0xe8},_0x436676=_0x5ef1c7;if(this['behavior'][_0x436676(_0x1c3b08._0x25302c)]){const _0xee8aec=this['behavior'][_0x436676(_0x1c3b08._0x251154)];this[_0x436676(0x10d)]['errorOnNextAction']=void 0x0;throw _0xee8aec;}}['url'](){const _0x485a1f=_0x5ef1c7;return this[_0x485a1f(0xf6)];}async[_0x5ef1c7(0x12d)](){const _0x46f617={_0x15d862:0xe3,_0x55afb6:0x12d,_0x4af636:0x131},_0x34713f=_0x5ef1c7;return this[_0x34713f(_0x46f617._0x15d862)](_0x34713f(_0x46f617._0x55afb6),[]),_0x34713f(_0x46f617._0x4af636);}async[_0x5ef1c7(0x103)](_0x1f2c00,_0x37a49f){const _0x40b7a6={_0x3d1535:0xe5},_0x54129e=_0x5ef1c7;this['record']('click',[_0x1f2c00,_0x37a49f]),this['maybeThrow'](),this[_0x54129e(_0x40b7a6._0x3d1535)]?.();}async[_0x5ef1c7(0x116)](_0x26a52b,_0x226ff1){const _0x4f3892={_0xf2609:0xe3,_0x59cde5:0x116,_0x30c667:0x112},_0x4f9ee9=_0x5ef1c7;this[_0x4f9ee9(_0x4f3892._0xf2609)](_0x4f9ee9(_0x4f3892._0x59cde5),[_0x26a52b,_0x226ff1]),this[_0x4f9ee9(_0x4f3892._0x30c667)]();}async[_0x5ef1c7(0x146)](_0x3e8889,_0x52dc52,_0xcc1de4){const _0x5b4548=_0x5ef1c7;this[_0x5b4548(0xe3)](_0x5b4548(0x146),[_0x3e8889,_0x52dc52,_0xcc1de4]),this['maybeThrow']();}async[_0x5ef1c7(0x145)](_0x1befc7,_0x20a8e3,_0x4d0c9c){const _0x1ad9f9={_0x2c08dd:0xe3},_0x5049c6=_0x5ef1c7;this[_0x5049c6(_0x1ad9f9._0x2c08dd)]('press',[_0x1befc7,_0x20a8e3,_0x4d0c9c]),this[_0x5049c6(0x112)]();}async['check'](_0x310605,_0x519315){const _0x3147da={_0x4b4aa9:0xe3,_0x783ea:0x112},_0x2e3f39=_0x5ef1c7;this[_0x2e3f39(_0x3147da._0x4b4aa9)](_0x2e3f39(0x138),[_0x310605,_0x519315]),this[_0x2e3f39(_0x3147da._0x783ea)]();}async[_0x5ef1c7(0x130)](_0x3ccfc6,_0x101805){const _0x3f1a55={_0x1c87ac:0x130,_0xfb21c9:0x112},_0x245ac0=_0x5ef1c7;this['record'](_0x245ac0(_0x3f1a55._0x1c87ac),[_0x3ccfc6,_0x101805]),this[_0x245ac0(_0x3f1a55._0xfb21c9)]();}async['selectOption'](_0x3d7214,_0x16125b,_0x3f3f5f){const _0x5925cd={_0x17d73c:0xe3},_0x465797=_0x5ef1c7;this[_0x465797(_0x5925cd._0x17d73c)]('selectOption',[_0x3d7214,_0x16125b,_0x3f3f5f]),this[_0x465797(0x112)]();}async['hover'](_0x21e559,_0x345e31){const _0x160ab0={_0x522168:0x112},_0x216bec=_0x5ef1c7;this[_0x216bec(0xe3)](_0x216bec(0x125),[_0x21e559,_0x345e31]),this[_0x216bec(_0x160ab0._0x522168)]();}async[_0x5ef1c7(0xef)](_0x3bf220){const _0x51c3ff=_0x5ef1c7;this[_0x51c3ff(0xe3)](_0x51c3ff(0xef),[_0x3bf220]),this[_0x51c3ff(0x112)]();}async['dragAndDrop'](_0x11bb4b,_0x21469d,_0x41999d){const _0x2befbd=_0x5ef1c7;this[_0x2befbd(0xe3)](_0x2befbd(0x13a),[_0x11bb4b,_0x21469d,_0x41999d]),this['maybeThrow']();}async[_0x5ef1c7(0x11d)](_0x5c2a93,_0x2d42aa){const _0x247504={_0x11cc8e:0x11d},_0x13eec6=_0x5ef1c7;this[_0x13eec6(0xe3)](_0x13eec6(_0x247504._0x11cc8e),[_0x5c2a93,_0x2d42aa]),this[_0x13eec6(0x112)]();}async[_0x5ef1c7(0xf9)](_0x50714d,_0x5d8db9){const _0xc83465={_0x4f3db9:0xe3,_0x7a1009:0xf9,_0x5206b9:0x112},_0x3d9f4f=_0x5ef1c7;this[_0x3d9f4f(_0xc83465._0x4f3db9)](_0x3d9f4f(_0xc83465._0x7a1009),[_0x50714d,_0x5d8db9]),this[_0x3d9f4f(_0xc83465._0x5206b9)]();}async[_0x5ef1c7(0x11c)](_0x20aeae){const _0x1e037b={_0x3bf0cc:0x10d},_0x1cba4f=_0x5ef1c7;return this[_0x1cba4f(0xe3)]('count',[_0x20aeae]),this[_0x1cba4f(_0x1e037b._0x3bf0cc)][_0x1cba4f(0xf4)]??0x1;}async[_0x5ef1c7(0x12f)](_0x487b93){const _0x406a5f={_0xd0a36d:0xe3,_0x55395f:0x12f,_0x135f22:0x10d,_0x3a532b:0xfe},_0x311b0e=_0x5ef1c7;return this[_0x311b0e(_0x406a5f._0xd0a36d)](_0x311b0e(_0x406a5f._0x55395f),[_0x487b93]),this[_0x311b0e(_0x406a5f._0x135f22)][_0x311b0e(_0x406a5f._0x3a532b)]??'';}async['inputValue'](_0xb7c8e2){const _0x5a5e64={_0x485e06:0x141},_0x56ddcf=_0x5ef1c7;return this['record'](_0x56ddcf(0xee),[_0xb7c8e2]),this[_0x56ddcf(0x10d)][_0x56ddcf(_0x5a5e64._0x485e06)]??'';}async['checkedState'](_0x1cf53b){const _0x5bb36e={_0x44348d:0xe3,_0x2d2450:0x10d},_0x16eba3=_0x5ef1c7;return this[_0x16eba3(_0x5bb36e._0x44348d)](_0x16eba3(0x149),[_0x1cf53b]),this[_0x16eba3(_0x5bb36e._0x2d2450)]['checkedStateByDefault']??null;}async[_0x5ef1c7(0xfb)](_0x94843c){const _0x483388={_0x21f7db:0xfb},_0xbf9dbb=_0x5ef1c7;return this['record'](_0xbf9dbb(_0x483388._0x21f7db),[_0x94843c]),this[_0xbf9dbb(0x10d)]['isVisibleByDefault']??!![];}async[_0x5ef1c7(0xe6)](_0x186573){const _0x2ddea0={_0x27149f:0xe3,_0x2830a5:0xe6,_0x52fc5f:0x10d},_0x37bc01=_0x5ef1c7;return this[_0x37bc01(_0x2ddea0._0x27149f)](_0x37bc01(_0x2ddea0._0x2830a5),[_0x186573]),this[_0x37bc01(_0x2ddea0._0x52fc5f)][_0x37bc01(0x10b)]??![];}async[_0x5ef1c7(0xe1)](_0x42779d,_0x5781f9){const _0x197834={_0x3d60af:0xe1,_0x106a8a:0x10d},_0x23ab12=_0x5ef1c7;return this[_0x23ab12(0xe3)](_0x23ab12(_0x197834._0x3d60af),[_0x42779d,_0x5781f9]),this[_0x23ab12(_0x197834._0x106a8a)][_0x23ab12(0x133)]?.[_0x5781f9]??null;}async[_0x5ef1c7(0x110)](_0x32dd18,_0x1bba1e){const _0x2b9900={_0x2ce504:0xe3},_0x22752e=_0x5ef1c7;this[_0x22752e(_0x2b9900._0x2ce504)](_0x22752e(0x110),[_0x32dd18,_0x1bba1e]);}async[_0x5ef1c7(0xe7)](_0x41d282,_0x590dc9){const _0x496235={_0x3a3dd0:0xe3},_0x1e1825=_0x5ef1c7;this[_0x1e1825(_0x496235._0x3a3dd0)]('waitForUrl',[_0x41d282,_0x590dc9]);}async[_0x5ef1c7(0x137)](_0x4da993,_0x2678e2){const _0xb09860=_0x5ef1c7;this[_0xb09860(0xe3)](_0xb09860(0x137),[_0x4da993,_0x2678e2]);}async[_0x5ef1c7(0x100)](_0x49d674){const _0x5827f3={_0x962182:0xe3},_0x32e1d9=_0x5ef1c7;this[_0x32e1d9(_0x5827f3._0x962182)]('waitForNavigation',[_0x49d674]);}async[_0x5ef1c7(0xea)](_0x36598d,_0x298812){this['record']('waitForLoadState',[_0x36598d,_0x298812]);}async['goto'](_0x3cbe60,_0x576c11){const _0x48ade7={_0x18eded:0xe3,_0x418dd6:0xf6},_0xc3a05b=_0x5ef1c7;this[_0xc3a05b(_0x48ade7._0x18eded)]('goto',[_0x3cbe60,_0x576c11]),this[_0xc3a05b(_0x48ade7._0x418dd6)]=_0x3cbe60;}async[_0x5ef1c7(0xf0)](_0x2fff9c){this['record']('reload',[_0x2fff9c]);}async[_0x5ef1c7(0xf5)](_0x23855c){const _0x1a06c3={_0x5cb215:0xf5},_0x3289c1=_0x5ef1c7;this[_0x3289c1(0xe3)](_0x3289c1(_0x1a06c3._0x5cb215),[_0x23855c]);}async[_0x5ef1c7(0x147)](_0x430d84){const _0x5123d7={_0x575493:0xe3},_0x2f5b70=_0x5ef1c7;this[_0x2f5b70(_0x5123d7._0x575493)](_0x2f5b70(0x147),[_0x430d84]);}async[_0x5ef1c7(0xf1)](_0x406d15){const _0xc58b4={_0x4e2e72:0xe3},_0x242c7c=_0x5ef1c7;return this[_0x242c7c(_0xc58b4._0x4e2e72)](_0x242c7c(0xf1),[_0x406d15]),void 0x0;}async[_0x5ef1c7(0x12c)](_0x5c9064,_0x2368dd){const _0x2bf7f8={_0x2d7dac:0x12c},_0x14f01f=_0x5ef1c7;return this[_0x14f01f(0xe3)](_0x14f01f(_0x2bf7f8._0x2d7dac),[_0x5c9064,_0x2368dd]),void 0x0;}async[_0x5ef1c7(0x132)](_0x2a8087){const _0x330cde={_0x381869:0xf8,_0x41358a:0xe0},_0x1c6f58=_0x5ef1c7;this['record'](_0x1c6f58(0x132),[_0x2a8087]);if(_0x2a8087['steps']['length']!==0x1||_0x2a8087[_0x1c6f58(0xf8)][0x0][_0x1c6f58(0xfd)]!==_0x1c6f58(0xe0))return null;const _0x4dad57=_0x2a8087[_0x1c6f58(_0x330cde._0x381869)][0x0][_0x1c6f58(_0x330cde._0x41358a)],_0x57371a=this[_0x1c6f58(0x10d)][_0x1c6f58(0xdf)]?.[_0x4dad57];return _0x57371a??null;}async[_0x5ef1c7(0x11e)](_0x368b26){const _0x4e4ba3={_0x5793a8:0x129},_0x3e6665=_0x5ef1c7;return this[_0x3e6665(0xe3)]('screenshot',[_0x368b26]),Buffer[_0x3e6665(0x144)](_0x3e6665(_0x4e4ba3._0x5793a8));}async['outerHTML'](_0x75ead){const _0x282862={_0x3b1f60:0xe2,_0x313da7:0xe0,_0x490b4c:0x10d,_0x54e874:0x106},_0x3ecc13=_0x5ef1c7;this['record'](_0x3ecc13(_0x282862._0x3b1f60),[_0x75ead]);if(_0x75ead['steps']['length']===0x1&&_0x75ead[_0x3ecc13(0xf8)][0x0]['kind']===_0x3ecc13(_0x282862._0x313da7)){const _0x1a3f2f=_0x75ead['steps'][0x0]['ref'];return this[_0x3ecc13(_0x282862._0x490b4c)][_0x3ecc13(0xeb)]?.[_0x1a3f2f]??_0x3ecc13(_0x282862._0x54e874)+_0x1a3f2f+_0x3ecc13(0x135);}return'<div></div>';}},FakeContext=class{constructor(_0x519843,_0x5f5ded,_0x32f37a){const _0x585be4={_0x1a8cdc:0x13c,_0xb35ed8:0x11a,_0x44b365:0x10c,_0x5d95d8:0xe5,_0x220a57:0x102,_0x2c0078:0xec,_0x20ebb6:0x136},_0x5bb59f=_0x5ef1c7;this[_0x5bb59f(_0x585be4._0x1a8cdc)]=_0x519843,this['behavior']=_0x5f5ded,this[_0x5bb59f(_0x585be4._0xb35ed8)]=_0x32f37a;const _0x4efe5a=new FakePage(_0x519843,_0x5f5ded,_0x32f37a+_0x5bb59f(0x115),_0x5f5ded[_0x5bb59f(_0x585be4._0x44b365)]??'about:blank');_0x5f5ded[_0x5bb59f(0x122)]&&(_0x4efe5a[_0x5bb59f(_0x585be4._0x5d95d8)]=()=>{const _0x11ebd2=_0x5bb59f;this[_0x11ebd2(0x13f)](_0x5f5ded['popupOnClick']);}),this[_0x5bb59f(_0x585be4._0x220a57)]=[_0x4efe5a],this['localStorageState']={..._0x5f5ded[_0x5bb59f(_0x585be4._0x2c0078)]??{}},this[_0x5bb59f(0x13b)]={..._0x5f5ded[_0x5bb59f(_0x585be4._0x20ebb6)]??{}};}[_0x5ef1c7(0x13c)];[_0x5ef1c7(0x10d)];[_0x5ef1c7(0x11a)];static{__name(this,_0x5ef1c7(0x109));}[_0x5ef1c7(0x102)];['activeIdx']=0x0;[_0x5ef1c7(0x123)]=[];[_0x5ef1c7(0xfa)];['cookieState'];['newPageListeners']=new Set();[_0x5ef1c7(0xe3)](_0x3a9149,_0x4d2dcd){const _0x3f2886={_0x1b4e86:0x13c},_0x45b326=_0x5ef1c7;this[_0x45b326(_0x3f2886._0x1b4e86)][_0x45b326(0x14b)]({'scope':this[_0x45b326(0x11a)],'method':_0x3a9149,'args':_0x4d2dcd});}['pages'](){return this['pageList'];}[_0x5ef1c7(0x10e)](){const _0x1638a5={_0x2b07ac:0x105,_0x4518de:0x12a},_0xb67fdc=_0x5ef1c7,_0x35d194=this['pageList'][this[_0xb67fdc(_0x1638a5._0x2b07ac)]];if(!_0x35d194)throw new DriverError(_0xb67fdc(_0x1638a5._0x4518de),{'activeIdx':this['activeIdx']});return _0x35d194;}[_0x5ef1c7(0x140)](){const _0x2feb37=_0x5ef1c7;return this[_0x2feb37(0x10d)][_0x2feb37(0x140)]??[];}['networkEntries'](){const _0x44675e={_0x36dfdb:0x10d},_0x5ef5cc=_0x5ef1c7;return this[_0x5ef5cc(_0x44675e._0x36dfdb)][_0x5ef5cc(0x114)]??[];}async[_0x5ef1c7(0x14e)](_0x1d32c7){const _0x2036fb={_0x2c5a7e:0xe3,_0x47fff7:0x107,_0xd059ed:0x105},_0xe72eea=_0x5ef1c7;this[_0xe72eea(_0x2036fb._0x2c5a7e)]('setActivePage',[_0x1d32c7]);if(_0x1d32c7<0x0||_0x1d32c7>=this['pageList'][_0xe72eea(0x113)])throw new DriverError(_0xe72eea(_0x2036fb._0x47fff7),{'index':_0x1d32c7,'available':this[_0xe72eea(0x102)][_0xe72eea(0x113)]});this[_0xe72eea(_0x2036fb._0xd059ed)]=_0x1d32c7,this[_0xe72eea(0x123)][_0xe72eea(0x113)]=0x0;}[_0x5ef1c7(0x134)](_0xce436c){return subscribe(this['newPageListeners'],_0xce436c);}['emitFakePopup'](_0x477c08){const _0x2c5e51={_0x4998a4:0x113},_0x38dd8a=_0x5ef1c7,_0x4892be=this[_0x38dd8a(0x11a)]+'.page'+this[_0x38dd8a(0x102)][_0x38dd8a(_0x2c5e51._0x4998a4)],_0x491edb=new FakePage(this[_0x38dd8a(0x13c)],this[_0x38dd8a(0x10d)],_0x4892be,_0x477c08);this['pageList']['push'](_0x491edb);const _0x3dfd6f=this['pageList']['length']-0x1;for(const _0x3cb892 of this[_0x38dd8a(0xde)]){try{_0x3cb892({'index':_0x3dfd6f,'url':_0x477c08});}catch{}}return _0x3dfd6f;}[_0x5ef1c7(0x139)](_0x9900f9){const _0x163128={_0xec899f:0x102,_0x41e713:0xdd},_0x4351c8=_0x5ef1c7;if(_0x9900f9<0x0||_0x9900f9>=this[_0x4351c8(_0x163128._0xec899f)]['length'])throw new DriverError(_0x4351c8(0x107),{'index':_0x9900f9,'available':this[_0x4351c8(_0x163128._0xec899f)]['length']});this['pageList'][_0x4351c8(_0x163128._0x41e713)](_0x9900f9,0x1);}async[_0x5ef1c7(0xfc)](_0x4aedf6){const _0x37e56d={_0x142166:0xf8,_0x57fcdd:0x123},_0x3cfdad=_0x5ef1c7;this[_0x3cfdad(0xe3)](_0x3cfdad(0xfc),[_0x4aedf6]);if(!_0x4aedf6[_0x3cfdad(_0x37e56d._0x142166)]['length'])throw new LocatorError('enterFrame\x20called\x20with\x20empty\x20locator',{'locator':_0x4aedf6});this[_0x3cfdad(_0x37e56d._0x57fcdd)][_0x3cfdad(0x14b)](_0x4aedf6);}async[_0x5ef1c7(0x10a)](){const _0x5cd0ff={_0x5ad418:0xe3},_0x5da9db=_0x5ef1c7;this[_0x5da9db(_0x5cd0ff._0x5ad418)](_0x5da9db(0x10a),[]);if(this['frameStack'][_0x5da9db(0x113)]===0x0)throw new DriverError(_0x5da9db(0x11b),{});this['frameStack'][_0x5da9db(0x10f)]();}async[_0x5ef1c7(0x148)](_0x33eab4,_0x123c79){const _0x4198db={_0x609fe:0xfa},_0x2474cb=_0x5ef1c7;this[_0x2474cb(0xe3)]('setLocalStorage',[_0x33eab4,_0x123c79]),this[_0x2474cb(_0x4198db._0x609fe)][_0x33eab4]=_0x123c79;}async[_0x5ef1c7(0x128)](_0x5703a2){const _0xe1827b=_0x5ef1c7;return this['record'](_0xe1827b(0x128),[_0x5703a2]),this[_0xe1827b(0xfa)][_0x5703a2]??null;}async['setCookie'](_0x5b0a8b,_0x44fbe1,_0x54bf6a){const _0xb818a7=_0x5ef1c7;this['record'](_0xb818a7(0x14d),[_0x5b0a8b,_0x44fbe1,_0x54bf6a]),this[_0xb818a7(0x13b)][_0x5b0a8b]=_0x44fbe1;}async['getCookie'](_0x581a5f){const _0x4a72a7={_0x1b33cf:0xe3,_0x42828:0x13b},_0x457c71=_0x5ef1c7;return this[_0x457c71(_0x4a72a7._0x1b33cf)]('getCookie',[_0x581a5f]),this[_0x457c71(_0x4a72a7._0x42828)][_0x581a5f]??null;}async[_0x5ef1c7(0x101)](_0x4401cd){const _0x40ea34={_0x2b0bd2:0x101},_0x2cdc26=_0x5ef1c7;this['record'](_0x2cdc26(_0x40ea34._0x2b0bd2),[_0x4401cd]);}async[_0x5ef1c7(0xf1)](_0x204ce2){const _0x330b93=_0x5ef1c7;return this[_0x330b93(0xe3)]('evaluate',[_0x204ce2]),void 0x0;}async[_0x5ef1c7(0x121)](){const _0x416fcc={_0x38b05d:0xe3},_0xca9078=_0x5ef1c7;this[_0xca9078(_0x416fcc._0x38b05d)]('close',[]);}['frameDepth'](){const _0x61906a={_0x508c8c:0x123,_0x31c039:0x113},_0x240b08=_0x5ef1c7;return this[_0x240b08(_0x61906a._0x508c8c)][_0x240b08(_0x61906a._0x31c039)];}},FakeWebDriver=class{constructor(_0x2dcc75={}){const _0x470e60={_0x55f651:0x13c},_0x1f8aa3=_0x5ef1c7;this[_0x1f8aa3(0x10d)]=_0x2dcc75,this[_0x1f8aa3(_0x470e60._0x55f651)]=createRecorder();}[_0x5ef1c7(0x10d)];static{__name(this,'FakeWebDriver');}[_0x5ef1c7(0x142)]=![];['recorder'];['contexts']=[];async[_0x5ef1c7(0x11f)](_0x8010d9){const _0x76d9ad={_0x2aa92c:0x13c,_0x5e17ae:0xed,_0x3bfa32:0x11f,_0x8a3919:0x142},_0x59493a=_0x5ef1c7;this[_0x59493a(_0x76d9ad._0x2aa92c)]['push']({'scope':_0x59493a(_0x76d9ad._0x5e17ae),'method':_0x59493a(_0x76d9ad._0x3bfa32),'args':[_0x8010d9]}),this[_0x59493a(_0x76d9ad._0x8a3919)]=!![];}async['newContext'](_0x2f35dc){const _0x4d9074={_0x2aec05:0x14b,_0x2c7fee:0xed,_0xef406e:0x142,_0x491486:0x10d,_0x587707:0xf2,_0x12b2a5:0x14b},_0x4ab4f9=_0x5ef1c7;this[_0x4ab4f9(0x13c)][_0x4ab4f9(_0x4d9074._0x2aec05)]({'scope':_0x4ab4f9(_0x4d9074._0x2c7fee),'method':_0x4ab4f9(0x13e),'args':[_0x2f35dc]});if(!this[_0x4ab4f9(_0x4d9074._0xef406e)])throw new DriverError(_0x4ab4f9(0x111),{});const _0x47821c=new FakeContext(this['recorder'],this[_0x4ab4f9(_0x4d9074._0x491486)],'ctx'+this['contexts']['length']);return this[_0x4ab4f9(_0x4d9074._0x587707)][_0x4ab4f9(_0x4d9074._0x12b2a5)](_0x47821c),_0x47821c;}async['close'](){const _0x19d031={_0x209b2a:0x13c},_0x29b058=_0x5ef1c7;this[_0x29b058(_0x19d031._0x209b2a)][_0x29b058(0x14b)]({'scope':_0x29b058(0xed),'method':'close','args':[]}),this[_0x29b058(0x142)]=![];}['wsEndpoint'](){return void 0x0;}async[_0x5ef1c7(0x119)](){const _0x19c785={_0x15736e:0xf7},_0x3db724=_0x5ef1c7;throw new DriverError(_0x3db724(_0x19c785._0x15736e),{});}[_0x5ef1c7(0x127)](){const _0x53b4b7=_0x5ef1c7;throw new DriverError(_0x53b4b7(0x14a),{});}['calls'](){const _0x25ac56={_0x58efd0:0x13c},_0x2e1948=_0x5ef1c7;return this[_0x2e1948(_0x25ac56._0x58efd0)]['calls']();}[_0x5ef1c7(0xf3)](_0x5b3444){const _0x5cc665={_0x4ca5aa:0x13c,_0x2c4c4b:0x13d},_0x83bd23=_0x5ef1c7;return this[_0x83bd23(_0x5cc665._0x4ca5aa)][_0x83bd23(0x104)]()[_0x83bd23(_0x5cc665._0x2c4c4b)](_0x14dbff=>_0x14dbff['method']===_0x5b3444);}};export{FakeWebDriver};
1
+ const _0x52c021=_0x3364;(function(_0x1367ee,_0x5054ed){const _0x3a5583={_0xaa0af0:0x199,_0x29fa33:0x174,_0x539e87:0x15f,_0x24d00a:0x184,_0x23f773:0x156},_0x4bbc8b=_0x3364,_0x40ce43=_0x1367ee();while(!![]){try{const _0xbb7339=parseInt(_0x4bbc8b(0x188))/0x1*(-parseInt(_0x4bbc8b(_0x3a5583._0xaa0af0))/0x2)+parseInt(_0x4bbc8b(_0x3a5583._0x29fa33))/0x3+parseInt(_0x4bbc8b(_0x3a5583._0x539e87))/0x4+-parseInt(_0x4bbc8b(0x1bf))/0x5*(parseInt(_0x4bbc8b(0x189))/0x6)+parseInt(_0x4bbc8b(_0x3a5583._0x24d00a))/0x7+parseInt(_0x4bbc8b(_0x3a5583._0x23f773))/0x8+parseInt(_0x4bbc8b(0x15d))/0x9*(parseInt(_0x4bbc8b(0x1a8))/0xa);if(_0xbb7339===_0x5054ed)break;else _0x40ce43['push'](_0x40ce43['shift']());}catch(_0x25ded0){_0x40ce43['push'](_0x40ce43['shift']());}}}(_0x1da8,0x59672));function _0x1da8(){const _0x1e989b=['zgvMAw5LuhjVCgvYDhK','CMvJB3jK','Bg9JywXtDg9YywDL','rMfRzunVBNrLEhq','y3vYCMvUDfvYBa','y291BNrcEurLzMf1Bhq','D2fPDezVCK5HDMLNyxrPB24','Bg9JywXtDg9YywDLu3rHDgu','mtK5oti0mfPTDNvKAa','CMvM','BMv3q29UDgv4DcbJywXSzwqGyMvMB3jLigXHDw5JAcGP','z2v0q29VA2LL','C2nVCgu','BMv0D29YA0vUDhjPzxm','Dgv4DenVBNrLBNrcEurLzMf1Bhq','nta0ovHLuwXiqG','zNjHBwvezxb0Aa','mti1oda0ne9zyLHvuq','Bgf1BMnO','ywn0AxzLswr4','yxr0ywnOrxHPC3rPBMCGBM90ihn1ChbVCNrLzcbIEsbgywTLv2vIrhjPDMvY','BMv3ugfNzuXPC3rLBMvYCW','y29VA2LLu3rHDgu','ywrK','y291BNq','A2LUza','z29cywnR','Aw5WDxrwywX1zuj5rgvMyxvSDa','y3jLyxrLuMvJB3jKzxi','y3r4','AxneAxnHyMXLzej5rgvMyxvSDa','AxneAxnHyMXLza','yxr0ywnOrxHPC3rPBMC','C2nYzwvUC2HVDa','y29UBMvJDfnOyxjLza','zMfRzsb0AxrSzq','y2XVC2u','BMv3q29UDgv4Da','mtG3mdi5DK9trM1m','Cg9W','y2HLy2TLzfn0yxrL','C2nYB2XSsw50B1zPzxC','zxjYB3jpBK5LEhrby3rPB24','yMvOyxzPB3i','zxzHBhvHDgu','zw50zxjgCMfTzq','C2vSzwn0t3b0Aw9U','zg91yMXLq2XPy2S','y29UC29SzuvUDhjPzxm','ywjVDxq6yMXHBMS','C3rLChm','BM8Gywn0AxzLihbHz2uGAw4Gy29UDgv4Da','yxr0CMLIDxrLC0j5rgvMyxvSDa','DxbSB2fKrMLSzq','mJiZnZK0mNfvEgjnva','z29gB3j3yxjK','y2XVC2vgywTLugfNzq','DxjS','mtq2nev0C1v5Ba','mZy1mdq4neTSu0rxAW','zMLSDgvY','Bgf1BMnOzwq','C2v0tg9JywXtDg9YywDL','y29VA2LLCW','Ag92zxi','zgvSzxrL','C3bSAwnL','CMvSB2fK','rMfRzvbHz2u','zw50zxjgCMfTzsbJywXSzwqGD2L0AcbLBxb0EsbSB2nHDg9Y','zMfRzs1WBMC','Cg9WDxbpBKnSAwnR','zxHPDezYyw1L','Bwf5yMvuAhjVDW','ChvZAa','mJK4D1r1v1HM','zhjHz0fUzerYB3a','D2fPDezVCG','D2fPDezVCLrLEhq','tg9JyxrVCKvYCM9Y','zhjPDMvY','rMfRzvDLyKrYAxzLCG','y29UDgv4Dhm','CgfNzsbPBMrLEcbVDxqGB2yGCMfUz2u','B25ozxDqywDL','pgrPDIbKyxrHlxvUB3rLC3qTCMvMpsi','zw1PDezHA2vqB3b1Ca','Bwv0Ag9K','CgfNzxm','C2v0q29VA2LL','ndm5mhnHAvDUvG','C2f2zvn0B3jHz2vtDgf0zq','BMfTzq','y2fSBhm','Aw5WDxrwywX1zq','DgL0Bgu','z2v0qxr0CMLIDxrL','B3v0zxjive1m','lNbHz2uW','y2fSBhngB3i','C2v0qwn0AxzLugfNzq','z2v0tg9JywXtDg9YywDL','z290BW','CMvJB3jKzxi','BgvUz3rO','Aw5ZCgvJDevSzw1LBNq','AxnwAxnPyMXLqNLezwzHDwX0','Dgv4DenVBNrLBNq','y2XPCgjVyxjKugfZDgu','pgrPDJ48l2rPDJ4','zMLSBa','D2fPDezVCKXVywrtDgf0zq','y2XPy2S','nwfRwvLRuq','zNjHBwvtDgfJAW','B25bzNrLCKnSAwnR','Dw5JAgvJAW','Aw5PDgLHBfvYBa','CgfNzuXPC3q'];_0x1da8=function(){return _0x1e989b;};return _0x1da8();}var __defProp=Object[_0x52c021(0x1c5)],__name=(_0x31dc01,_0x380419)=>__defProp(_0x31dc01,_0x52c021(0x1aa),{'value':_0x380419,'configurable':!![]});function _0x3364(_0x24858a,_0x13a66c){_0x24858a=_0x24858a-0x155;const _0x1da80b=_0x1da8();let _0x33642=_0x1da80b[_0x24858a];if(_0x3364['YkVUqF']===undefined){var _0x469b2e=function(_0x3434d4){const _0x57d7b9='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x31dc01='',_0x380419='';for(let _0x4010ce=0x0,_0xcf4d41,_0x1b0f9b,_0x302514=0x0;_0x1b0f9b=_0x3434d4['charAt'](_0x302514++);~_0x1b0f9b&&(_0xcf4d41=_0x4010ce%0x4?_0xcf4d41*0x40+_0x1b0f9b:_0x1b0f9b,_0x4010ce++%0x4)?_0x31dc01+=String['fromCharCode'](0xff&_0xcf4d41>>(-0x2*_0x4010ce&0x6)):0x0){_0x1b0f9b=_0x57d7b9['indexOf'](_0x1b0f9b);}for(let _0x285d05=0x0,_0x69bbd2=_0x31dc01['length'];_0x285d05<_0x69bbd2;_0x285d05++){_0x380419+='%'+('00'+_0x31dc01['charCodeAt'](_0x285d05)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x380419);};_0x3364['FnzSyH']=_0x469b2e,_0x3364['rpMRdm']={},_0x3364['YkVUqF']=!![];}const _0x29c228=_0x1da80b[0x0],_0x3afdfe=_0x24858a+_0x29c228,_0x2097c3=_0x3364['rpMRdm'][_0x3afdfe];return!_0x2097c3?(_0x33642=_0x3364['FnzSyH'](_0x33642),_0x3364['rpMRdm'][_0x3afdfe]=_0x33642):_0x33642=_0x2097c3,_0x33642;}function subscribe(_0x4010ce,_0xcf4d41){const _0x395a87=_0x52c021;return _0x4010ce[_0x395a87(0x165)](_0xcf4d41),()=>{const _0x3d4521=_0x395a87;_0x4010ce[_0x3d4521(0x18f)](_0xcf4d41);};}__name(subscribe,'subscribe');import{UnotestError}from'@unotest/core';var DriverError=class extends UnotestError{static{__name(this,'DriverError');}},LocatorError=class extends UnotestError{static{__name(this,_0x52c021(0x19d));}};function createRecorder(){const _0x443078={_0x8c8f81:0x198},_0x139502=_0x52c021,_0x1b0f9b=[];let _0x302514=0x0;return{'push':__name(_0x285d05=>_0x1b0f9b[_0x139502(0x198)]({..._0x285d05,'seq':_0x302514++}),_0x139502(_0x443078._0x8c8f81)),'calls':__name(()=>_0x1b0f9b,'calls')};}__name(createRecorder,_0x52c021(0x16a));var FakePage=class{constructor(_0x69bbd2,_0x40c350,_0x1b65dc,_0x3e83ef){const _0x57b17c={_0x121d79:0x1b5,_0x4590c7:0x179},_0x379df5=_0x52c021;this[_0x379df5(_0x57b17c._0x121d79)]=_0x69bbd2,this[_0x379df5(_0x57b17c._0x4590c7)]=_0x40c350,this['scope']=_0x1b65dc,this['currentUrl']=_0x3e83ef;}[_0x52c021(0x1b5)];[_0x52c021(0x179)];[_0x52c021(0x15a)];static{__name(this,_0x52c021(0x192));}['currentUrl'];[_0x52c021(0x1c1)];[_0x52c021(0x1c6)](_0x57f1a8,_0x14b55b){const _0x486fa0={_0x8255a0:0x198},_0x43f1b4=_0x52c021;this[_0x43f1b4(0x1b5)][_0x43f1b4(_0x486fa0._0x8255a0)]({'scope':this[_0x43f1b4(0x15a)],'method':_0x57f1a8,'args':_0x14b55b});}[_0x52c021(0x197)](){const _0x575c3d={_0x3a7194:0x179,_0x2042df:0x178},_0x188377=_0x52c021;if(this[_0x188377(_0x575c3d._0x3a7194)][_0x188377(_0x575c3d._0x2042df)]){const _0x52d9da=this[_0x188377(0x179)][_0x188377(0x178)];this[_0x188377(_0x575c3d._0x3a7194)][_0x188377(0x178)]=void 0x0;throw _0x52d9da;}}[_0x52c021(0x187)](){const _0x11b607=_0x52c021;return this[_0x11b607(0x1c9)];}async[_0x52c021(0x1ad)](){const _0x4316f1={_0x156766:0x1ad,_0x57fb45:0x171},_0xc24147=_0x52c021;return this['record'](_0xc24147(_0x4316f1._0x156766),[]),_0xc24147(_0x4316f1._0x57fb45);}async[_0x52c021(0x1be)](_0x502256,_0x51d4c8){const _0x187438={_0x97da5a:0x1c1},_0x2b84c3=_0x52c021;this['record']('click',[_0x502256,_0x51d4c8]),this[_0x2b84c3(0x197)](),this[_0x2b84c3(_0x187438._0x97da5a)]?.();}async[_0x52c021(0x17d)](_0x313c74,_0x355fee){const _0x485b73={_0x449fe3:0x17d},_0x240f82=_0x52c021;this[_0x240f82(0x1c6)](_0x240f82(_0x485b73._0x449fe3),[_0x313c74,_0x355fee]),this[_0x240f82(0x197)]();}async[_0x52c021(0x1bc)](_0x4fd6df,_0x14d774,_0x2c1674){const _0xe4c1e5={_0x19f77d:0x197},_0x414d01=_0x52c021;this[_0x414d01(0x1c6)](_0x414d01(0x1bc),[_0x4fd6df,_0x14d774,_0x2c1674]),this[_0x414d01(_0xe4c1e5._0x19f77d)]();}async['press'](_0x2b354b,_0xbcdf16,_0x3a488b){const _0xa1b45d=_0x52c021;this[_0xa1b45d(0x1c6)]('press',[_0x2b354b,_0xbcdf16,_0x3a488b]),this[_0xa1b45d(0x197)]();}async['check'](_0x277aee,_0x50095f){const _0xa63ca1={_0x59d3f7:0x197},_0x2de57e=_0x52c021;this['record']('check',[_0x277aee,_0x50095f]),this[_0x2de57e(_0xa63ca1._0x59d3f7)]();}async[_0x52c021(0x1c2)](_0x35c463,_0x3c1016){const _0x1154de={_0x4fb2ef:0x1c2},_0x216c7d=_0x52c021;this[_0x216c7d(0x1c6)](_0x216c7d(_0x1154de._0x4fb2ef),[_0x35c463,_0x3c1016]),this[_0x216c7d(0x197)]();}async[_0x52c021(0x17c)](_0x56c750,_0x381f67,_0x4189b1){const _0x332f95={_0x404c35:0x1c6,_0x1188f0:0x17c},_0x6ee13b=_0x52c021;this[_0x6ee13b(_0x332f95._0x404c35)](_0x6ee13b(_0x332f95._0x1188f0),[_0x56c750,_0x381f67,_0x4189b1]),this[_0x6ee13b(0x197)]();}async['hover'](_0x63d655,_0x3fdda4){const _0x77494c={_0x3b6272:0x18e},_0x1355af=_0x52c021;this[_0x1355af(0x1c6)](_0x1355af(_0x77494c._0x3b6272),[_0x63d655,_0x3fdda4]),this[_0x1355af(0x197)]();}async[_0x52c021(0x177)](_0x4a2b17){const _0x351722={_0x502d39:0x1c6,_0x3e45aa:0x197},_0x2e66ba=_0x52c021;this[_0x2e66ba(_0x351722._0x502d39)]('scrollIntoView',[_0x4a2b17]),this[_0x2e66ba(_0x351722._0x3e45aa)]();}async[_0x52c021(0x19a)](_0x463eed,_0x284abf,_0x38137b){const _0x42af95={_0x4ee080:0x1c6},_0x3b72a6=_0x52c021;this[_0x3b72a6(_0x42af95._0x4ee080)](_0x3b72a6(0x19a),[_0x463eed,_0x284abf,_0x38137b]),this['maybeThrow']();}async[_0x52c021(0x183)](_0x497c84,_0x741198){this['record']('uploadFile',[_0x497c84,_0x741198]),this['maybeThrow']();}async[_0x52c021(0x1ba)](_0x40fa4c,_0x153315){const _0xff496e={_0x52bb37:0x1ba},_0xd918ee=_0x52c021;this['record'](_0xd918ee(_0xff496e._0x52bb37),[_0x40fa4c,_0x153315]),this[_0xd918ee(0x197)]();}async['count'](_0x254eb4){const _0x47a614={_0x2b0dcb:0x1c6,_0x165ba6:0x166,_0x411c98:0x179},_0x15a189=_0x52c021;return this[_0x15a189(_0x47a614._0x2b0dcb)](_0x15a189(_0x47a614._0x165ba6),[_0x254eb4]),this[_0x15a189(_0x47a614._0x411c98)][_0x15a189(0x1ca)]??0x1;}async[_0x52c021(0x1b9)](_0x4714b4){const _0x37a4b5={_0x257a8a:0x1c6,_0x1b2640:0x1b9,_0xfe59d6:0x15c},_0x585d20=_0x52c021;return this[_0x585d20(_0x37a4b5._0x257a8a)](_0x585d20(_0x37a4b5._0x1b2640),[_0x4714b4]),this['behavior'][_0x585d20(_0x37a4b5._0xfe59d6)]??'';}async[_0x52c021(0x1ac)](_0x2316b7){const _0x4eb901={_0x3ceb18:0x1ac,_0x120916:0x179},_0x51e356=_0x52c021;return this['record'](_0x51e356(_0x4eb901._0x3ceb18),[_0x2316b7]),this[_0x51e356(_0x4eb901._0x120916)][_0x51e356(0x169)]??'';}async[_0x52c021(0x176)](_0x251a27){const _0x200d48={_0x465238:0x1c6},_0x45f560=_0x52c021;return this[_0x45f560(_0x200d48._0x465238)]('checkedState',[_0x251a27]),this['behavior']['checkedStateByDefault']??null;}async['isVisible'](_0x9f3e3a){const _0x1540f0={_0x342141:0x1c6},_0x52fac5=_0x52c021;return this[_0x52fac5(_0x1540f0._0x342141)]('isVisible',[_0x9f3e3a]),this[_0x52fac5(0x179)][_0x52fac5(0x1b8)]??!![];}async[_0x52c021(0x16d)](_0x2edc96){const _0x2f88a0={_0x22f033:0x1c6},_0x2ce636=_0x52c021;return this[_0x2ce636(_0x2f88a0._0x22f033)](_0x2ce636(0x16d),[_0x2edc96]),this[_0x2ce636(0x179)][_0x2ce636(0x16c)]??![];}async[_0x52c021(0x1ae)](_0x2731a0,_0x1e8eb1){const _0x1faca7={_0x1458b1:0x182},_0x199a47=_0x52c021;return this[_0x199a47(0x1c6)](_0x199a47(0x1ae),[_0x2731a0,_0x1e8eb1]),this[_0x199a47(0x179)][_0x199a47(_0x1faca7._0x1458b1)]?.[_0x1e8eb1]??null;}async[_0x52c021(0x19b)](_0x143139,_0x5a12ad){const _0x555e22={_0x45864e:0x19b},_0x4d04e8=_0x52c021;this[_0x4d04e8(0x1c6)](_0x4d04e8(_0x555e22._0x45864e),[_0x143139,_0x5a12ad]);}async['waitForUrl'](_0x221325,_0x2bf5eb){const _0x401605={_0x120256:0x1c6},_0x2a78b0=_0x52c021;this[_0x2a78b0(_0x401605._0x120256)]('waitForUrl',[_0x221325,_0x2bf5eb]);}async[_0x52c021(0x19c)](_0x4d13f7,_0xce3480){const _0x39578c=_0x52c021;this[_0x39578c(0x1c6)]('waitForText',[_0x4d13f7,_0xce3480]);}async[_0x52c021(0x1cb)](_0x2c5a02){const _0x31b94b={_0x4130ca:0x1c6},_0x4ea98a=_0x52c021;this[_0x4ea98a(_0x31b94b._0x4130ca)](_0x4ea98a(0x1cb),[_0x2c5a02]);}async[_0x52c021(0x1bd)](_0x526445,_0x39ed86){const _0x420363={_0x258e71:0x1c6,_0x50a4d4:0x1bd},_0xc3e9aa=_0x52c021;this[_0xc3e9aa(_0x420363._0x258e71)](_0xc3e9aa(_0x420363._0x50a4d4),[_0x526445,_0x39ed86]);}async[_0x52c021(0x1b4)](_0x5e8962,_0x32a1ab){const _0x207a51={_0x32d2b8:0x1b4},_0x318403=_0x52c021;this['record'](_0x318403(_0x207a51._0x32d2b8),[_0x5e8962,_0x32a1ab]),this[_0x318403(0x1c9)]=_0x5e8962;}async['reload'](_0x383f5b){const _0x2319fe={_0x41d05f:0x1c6},_0x62b933=_0x52c021;this[_0x62b933(_0x2319fe._0x41d05f)](_0x62b933(0x191),[_0x383f5b]);}async[_0x52c021(0x168)](_0x391806){const _0x165186=_0x52c021;this[_0x165186(0x1c6)](_0x165186(0x168),[_0x391806]);}async[_0x52c021(0x185)](_0x326321){const _0x1d04a7={_0x3d90c3:0x1c6},_0x4734a1=_0x52c021;this[_0x4734a1(_0x1d04a7._0x3d90c3)](_0x4734a1(0x185),[_0x326321]);}async[_0x52c021(0x17a)](_0x1f9fc3){const _0x4786a4={_0x2f5bb4:0x17a},_0x14a54f=_0x52c021;return this[_0x14a54f(0x1c6)](_0x14a54f(_0x4786a4._0x2f5bb4),[_0x1f9fc3]),void 0x0;}async['evaluateOnLocator'](_0x407b4b,_0x22a352){return this['record']('evaluateOnLocator',[_0x407b4b,_0x22a352]),void 0x0;}async['inspectElement'](_0x11a950){const _0x2ca4a2={_0x5d423e:0x1c6,_0x1d7b56:0x1b7,_0x5ee336:0x180,_0x1a4fd9:0x167,_0x51418b:0x157,_0x17178e:0x179},_0x307c4a=_0x52c021;this[_0x307c4a(_0x2ca4a2._0x5d423e)](_0x307c4a(_0x2ca4a2._0x1d7b56),[_0x11a950]);if(_0x11a950[_0x307c4a(_0x2ca4a2._0x5ee336)]['length']!==0x1||_0x11a950[_0x307c4a(0x180)][0x0][_0x307c4a(_0x2ca4a2._0x1a4fd9)]!==_0x307c4a(_0x2ca4a2._0x51418b))return null;const _0x3c6bd8=_0x11a950['steps'][0x0][_0x307c4a(0x157)],_0x31a3b2=this[_0x307c4a(_0x2ca4a2._0x17178e)]['elementHintByRef']?.[_0x3c6bd8];return _0x31a3b2??null;}async[_0x52c021(0x16f)](_0x44f43c){const _0x4df695={_0x44dbc1:0x194},_0x5b0323=_0x52c021;return this['record'](_0x5b0323(0x16f),[_0x44f43c]),Buffer['from'](_0x5b0323(_0x4df695._0x44dbc1));}async['outerHTML'](_0x58c977){const _0x27865a={_0x13996d:0x180,_0x19563a:0x157,_0x2ba1b8:0x180,_0x19850c:0x1a3},_0x1c2ec2=_0x52c021;this['record'](_0x1c2ec2(0x1af),[_0x58c977]);if(_0x58c977[_0x1c2ec2(0x180)]['length']===0x1&&_0x58c977[_0x1c2ec2(_0x27865a._0x13996d)][0x0][_0x1c2ec2(0x167)]===_0x1c2ec2(_0x27865a._0x19563a)){const _0x265d10=_0x58c977[_0x1c2ec2(_0x27865a._0x2ba1b8)][0x0][_0x1c2ec2(0x157)];return this['behavior']['outerHtmlByRef']?.[_0x265d10]??_0x1c2ec2(_0x27865a._0x19850c)+_0x265d10+'\x22></div>';}return _0x1c2ec2(0x1bb);}},FakeContext=class{constructor(_0x39a27c,_0x976d90,_0x26d345){const _0x406c64={_0x35f2bc:0x17f,_0x22afed:0x1c1,_0x52f461:0x155,_0x2649db:0x18d},_0x5cc3e6={_0x192dfd:0x195},_0xa081d4=_0x52c021;this['recorder']=_0x39a27c,this[_0xa081d4(0x179)]=_0x976d90,this[_0xa081d4(0x15a)]=_0x26d345;const _0x1cb77c=new FakePage(_0x39a27c,_0x976d90,_0x26d345+_0xa081d4(0x1b0),_0x976d90[_0xa081d4(0x1c3)]??_0xa081d4(_0x406c64._0x35f2bc));_0x976d90[_0xa081d4(0x195)]&&(_0x1cb77c[_0xa081d4(_0x406c64._0x22afed)]=()=>{const _0x372903=_0xa081d4;this[_0x372903(0x1a4)](_0x976d90[_0x372903(_0x5cc3e6._0x192dfd)]);}),this['pageList']=[_0x1cb77c],this[_0xa081d4(_0x406c64._0x52f461)]={..._0x976d90[_0xa081d4(0x1c7)]??{}},this[_0xa081d4(0x164)]={..._0x976d90[_0xa081d4(_0x406c64._0x2649db)]??{}};}['recorder'];[_0x52c021(0x179)];[_0x52c021(0x15a)];static{__name(this,_0x52c021(0x1c8));}[_0x52c021(0x1c4)];[_0x52c021(0x161)]=0x0;['frameStack']=[];[_0x52c021(0x155)];[_0x52c021(0x164)];['newPageListeners']=new Set();[_0x52c021(0x1c6)](_0xf53240,_0x354f44){const _0x437022=_0x52c021;this[_0x437022(0x1b5)][_0x437022(0x198)]({'scope':this[_0x437022(0x15a)],'method':_0xf53240,'args':_0x354f44});}[_0x52c021(0x1a6)](){const _0x24522c=_0x52c021;return this[_0x24522c(0x1c4)];}['activePage'](){const _0x311ac1={_0x1d10c5:0x181},_0x2c4344=_0x52c021,_0x13edc1=this['pageList'][this[_0x2c4344(0x161)]];if(!_0x13edc1)throw new DriverError(_0x2c4344(_0x311ac1._0x1d10c5),{'activeIdx':this['activeIdx']});return _0x13edc1;}[_0x52c021(0x17e)](){const _0x4fc670={_0x582a7b:0x179,_0x3cc64a:0x17e},_0x353cb1=_0x52c021;return this[_0x353cb1(_0x4fc670._0x582a7b)][_0x353cb1(_0x4fc670._0x3cc64a)]??[];}[_0x52c021(0x15b)](){const _0x225d6e={_0x1d42ee:0x179},_0x336cd6=_0x52c021;return this[_0x336cd6(_0x225d6e._0x1d42ee)][_0x336cd6(0x15b)]??[];}async[_0x52c021(0x1b2)](_0x405bc8){const _0x2956d7={_0x2bf2b7:0x1b2,_0x20afd6:0x1b6,_0x591248:0x1c4},_0x575698=_0x52c021;this['record'](_0x575698(_0x2956d7._0x2bf2b7),[_0x405bc8]);if(_0x405bc8<0x0||_0x405bc8>=this['pageList'][_0x575698(_0x2956d7._0x20afd6)])throw new DriverError('page\x20index\x20out\x20of\x20range',{'index':_0x405bc8,'available':this[_0x575698(_0x2956d7._0x591248)][_0x575698(0x1b6)]});this['activeIdx']=_0x405bc8,this['frameStack'][_0x575698(0x1b6)]=0x0;}[_0x52c021(0x1a2)](_0x382afa){const _0x2d5ef4=_0x52c021;return subscribe(this[_0x2d5ef4(0x163)],_0x382afa);}[_0x52c021(0x1a4)](_0x52f939){const _0x1df817={_0x3ac624:0x15a,_0x15285f:0x198,_0x5292e2:0x163},_0x135542=_0x52c021,_0xa7ea2a=this[_0x135542(_0x1df817._0x3ac624)]+'.page'+this['pageList'][_0x135542(0x1b6)],_0x701ef2=new FakePage(this[_0x135542(0x1b5)],this['behavior'],_0xa7ea2a,_0x52f939);this['pageList'][_0x135542(_0x1df817._0x15285f)](_0x701ef2);const _0x2fce5b=this[_0x135542(0x1c4)][_0x135542(0x1b6)]-0x1;for(const _0x108722 of this[_0x135542(_0x1df817._0x5292e2)]){try{_0x108722({'index':_0x2fce5b,'url':_0x52f939});}catch{}}return _0x2fce5b;}[_0x52c021(0x186)](_0x387d60){const _0x497fae={_0x13ffbf:0x1b6},_0x1b3d30=_0x52c021;if(_0x387d60<0x0||_0x387d60>=this[_0x1b3d30(0x1c4)][_0x1b3d30(_0x497fae._0x13ffbf)])throw new DriverError(_0x1b3d30(0x1a1),{'index':_0x387d60,'available':this[_0x1b3d30(0x1c4)][_0x1b3d30(0x1b6)]});this[_0x1b3d30(0x1c4)][_0x1b3d30(0x190)](_0x387d60,0x1);}async[_0x52c021(0x17b)](_0x52a341){const _0x123fa4={_0x5d2416:0x17b,_0x3d6718:0x1b6,_0x1689b2:0x193,_0x591f35:0x198},_0x2711e7=_0x52c021;this['record'](_0x2711e7(_0x123fa4._0x5d2416),[_0x52a341]);if(!_0x52a341['steps'][_0x2711e7(_0x123fa4._0x3d6718)])throw new LocatorError(_0x2711e7(_0x123fa4._0x1689b2),{'locator':_0x52a341});this[_0x2711e7(0x1c0)][_0x2711e7(_0x123fa4._0x591f35)](_0x52a341);}async[_0x52c021(0x196)](){const _0x43c25d={_0x1f8889:0x1c0},_0x2d90dd=_0x52c021;this['record'](_0x2d90dd(0x196),[]);if(this[_0x2d90dd(_0x43c25d._0x1f8889)][_0x2d90dd(0x1b6)]===0x0)throw new DriverError('exitFrame\x20called\x20with\x20no\x20frame\x20on\x20the\x20stack',{});this[_0x2d90dd(_0x43c25d._0x1f8889)][_0x2d90dd(0x175)]();}async[_0x52c021(0x18c)](_0xfd358c,_0x543ed2){const _0x5f00b4=_0x52c021;this[_0x5f00b4(0x1c6)]('setLocalStorage',[_0xfd358c,_0x543ed2]),this[_0x5f00b4(0x155)][_0xfd358c]=_0x543ed2;}async[_0x52c021(0x1b3)](_0x26a536){const _0x5a16e3={_0x7d4cb9:0x155},_0x4b089f=_0x52c021;return this[_0x4b089f(0x1c6)]('getLocalStorage',[_0x26a536]),this[_0x4b089f(_0x5a16e3._0x7d4cb9)][_0x26a536]??null;}async['setCookie'](_0x29774e,_0x5accd9,_0x526e76){const _0x2bb793={_0x5d8e77:0x1a7,_0x5df0fa:0x164},_0x3b4540=_0x52c021;this[_0x3b4540(0x1c6)](_0x3b4540(_0x2bb793._0x5d8e77),[_0x29774e,_0x5accd9,_0x526e76]),this[_0x3b4540(_0x2bb793._0x5df0fa)][_0x29774e]=_0x5accd9;}async[_0x52c021(0x159)](_0x9b1aab){const _0x155b3c={_0x36b49e:0x159,_0x46af90:0x164},_0x4cb4cc=_0x52c021;return this[_0x4cb4cc(0x1c6)](_0x4cb4cc(_0x155b3c._0x36b49e),[_0x9b1aab]),this[_0x4cb4cc(_0x155b3c._0x46af90)][_0x9b1aab]??null;}async[_0x52c021(0x1a9)](_0x569eaa){const _0x421143={_0x1c88a9:0x1a9},_0x43b315=_0x52c021;this['record'](_0x43b315(_0x421143._0x1c88a9),[_0x569eaa]);}async[_0x52c021(0x17a)](_0x3330a9){const _0x4d5c6a=_0x52c021;return this[_0x4d5c6a(0x1c6)](_0x4d5c6a(0x17a),[_0x3330a9]),void 0x0;}async[_0x52c021(0x172)](){const _0x5cd845={_0x310f1f:0x1c6,_0x1e68ec:0x172},_0x13ef6d=_0x52c021;this[_0x13ef6d(_0x5cd845._0x310f1f)](_0x13ef6d(_0x5cd845._0x1e68ec),[]);}[_0x52c021(0x15e)](){const _0x4d4c4a={_0x42a2a5:0x1c0},_0x1377a5=_0x52c021;return this[_0x1377a5(_0x4d4c4a._0x42a2a5)]['length'];}},FakeWebDriver=class{constructor(_0x35c6f4={}){const _0x56689f={_0x46c9e6:0x1b5},_0x2be6d7=_0x52c021;this[_0x2be6d7(0x179)]=_0x35c6f4,this[_0x2be6d7(_0x56689f._0x46c9e6)]=createRecorder();}[_0x52c021(0x179)];static{__name(this,_0x52c021(0x19f));}['launched']=![];[_0x52c021(0x1b5)];['contexts']=[];async[_0x52c021(0x160)](_0x4bd1f7){const _0x3fd216={_0x1fb655:0x1b5,_0x42e4c9:0x198,_0x53e94f:0x19e,_0x19fc11:0x160,_0x212be7:0x18b},_0x5c1158=_0x52c021;this[_0x5c1158(_0x3fd216._0x1fb655)][_0x5c1158(_0x3fd216._0x42e4c9)]({'scope':_0x5c1158(_0x3fd216._0x53e94f),'method':_0x5c1158(_0x3fd216._0x19fc11),'args':[_0x4bd1f7]}),this[_0x5c1158(_0x3fd216._0x212be7)]=!![];}async[_0x52c021(0x173)](_0x47107a){const _0x21aaa6={_0x4e39a1:0x1b5,_0x47fc93:0x158,_0x377405:0x1b5,_0x9bc756:0x179,_0x439028:0x1a0,_0x13950a:0x1b6},_0x765e6=_0x52c021;this[_0x765e6(_0x21aaa6._0x4e39a1)][_0x765e6(0x198)]({'scope':'driver','method':_0x765e6(0x173),'args':[_0x47107a]});if(!this[_0x765e6(0x18b)])throw new DriverError(_0x765e6(_0x21aaa6._0x47fc93),{});const _0x285555=new FakeContext(this[_0x765e6(_0x21aaa6._0x377405)],this[_0x765e6(_0x21aaa6._0x9bc756)],_0x765e6(0x16b)+this[_0x765e6(_0x21aaa6._0x439028)][_0x765e6(_0x21aaa6._0x13950a)]);return this['contexts'][_0x765e6(0x198)](_0x285555),_0x285555;}async[_0x52c021(0x172)](){const _0x4f05b3={_0x53f398:0x19e,_0x30812e:0x18b},_0x8cb9eb=_0x52c021;this['recorder'][_0x8cb9eb(0x198)]({'scope':_0x8cb9eb(_0x4f05b3._0x53f398),'method':'close','args':[]}),this[_0x8cb9eb(_0x4f05b3._0x30812e)]=![];}['wsEndpoint'](){return void 0x0;}async[_0x52c021(0x170)](){throw new DriverError('connectShared\x20not\x20supported\x20by\x20FakeWebDriver',{});}[_0x52c021(0x16e)](){const _0x461262={_0x4ac6b7:0x162},_0x51ba82=_0x52c021;throw new DriverError(_0x51ba82(_0x461262._0x4ac6b7),{});}[_0x52c021(0x1ab)](){const _0x2d395d={_0x24c166:0x1b5,_0x42e9a5:0x1ab},_0x5f05d0=_0x52c021;return this[_0x5f05d0(_0x2d395d._0x24c166)][_0x5f05d0(_0x2d395d._0x42e9a5)]();}[_0x52c021(0x1b1)](_0x54c081){const _0x3162c6={_0x57c81f:0x18a},_0x3340f2=_0x52c021;return this[_0x3340f2(0x1b5)]['calls']()[_0x3340f2(_0x3162c6._0x57c81f)](_0x3164e1=>_0x3164e1[_0x3340f2(0x1a5)]===_0x54c081);}};export{FakeWebDriver};
@@ -1,5 +1,5 @@
1
- import { i as LocatorValue, W as WebDriver, D as DriverContext, d as DriverPage } from '../interfaces-elRn0llQ.js';
2
- export { j as LocatorStep, k as appendStep, l as describeLocator, m as isLocatorValue, r as rootedAt } from '../interfaces-elRn0llQ.js';
1
+ import { i as LocatorValue, W as WebDriver, D as DriverContext, d as DriverPage } from '../interfaces-B-FxA_qn.js';
2
+ export { j as LocatorStep, k as appendStep, l as describeLocator, m as isLocatorValue, r as rootedAt } from '../interfaces-B-FxA_qn.js';
3
3
  import { Matcher, RegexLiteral } from '@unotest/protocol';
4
4
  import { ExecutionWalker, ExecutionEvent, RunResult, RunOptions } from '@unotest/dsl/executor';
5
5
  export { ExecutionError, ExecutionEvent, RunOptions, RunResult } from '@unotest/dsl/executor';
@@ -88,10 +88,14 @@ interface Logger {
88
88
  child(prefix: string): Logger;
89
89
  }
90
90
 
91
+ type FrameFormat = "png" | "webp";
92
+
91
93
  interface ScreenshotSink {
92
- /** Persist one PNG capture. Returns the project-relative path the
93
- * artifact landed at. */
94
- save(name: string, png: Buffer): Promise<string>;
94
+ /** Persist one capture. `format` names the bytes so the sink can file
95
+ * them under the right extension instead of assuming — a `.png` that
96
+ * holds webp is the kind of thing nobody notices until a tool tries
97
+ * to read it. Returns the project-relative path it landed at. */
98
+ save(name: string, bytes: Buffer, format: FrameFormat): Promise<string>;
95
99
  }
96
100
 
97
101
  type DslPrimitive = string | number | boolean | null;