@unotest/web 0.17.0 → 0.19.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.
@@ -65,6 +65,11 @@ outside this list — they won't tell you anything Phase 1+ doesn't.
65
65
  3. **`unotest/.env`** — Read it. Pulls `APP_BASE_URL`,
66
66
  `DATABASE_URL`, etc. that the scenario will reach for.
67
67
 
68
+ `unotest/jsconfig.json` and `.unotest/types/` are GENERATED editor
69
+ typings (regenerated on every lint/run from the DSL vocabulary and the
70
+ `.env`/`.secrets` keys) — never edit them and never mine them for the
71
+ DSL surface; the reference above is the source of truth.
72
+
68
73
  Then move to Phase 1. Three files in, exploration done.
69
74
 
70
75
  ### Phase 1 — start the exploration
@@ -90,6 +90,11 @@ outside this list — they won't tell you anything Phase 1+ doesn't.
90
90
  3. **`unotest/.env`** — Read it. Pulls `APP_BASE_URL`,
91
91
  `DATABASE_URL`, etc. that the scenario will reach for.
92
92
 
93
+ `unotest/jsconfig.json` and `.unotest/types/` are GENERATED editor
94
+ typings (regenerated on every lint/run from the DSL vocabulary and the
95
+ `.env`/`.secrets` keys) — never edit them and never mine them for the
96
+ DSL surface; the reference above is the source of truth.
97
+
93
98
  Then move to Phase 1. Three files in, exploration done.
94
99
 
95
100
  ### Phase 1 — start the exploration
package/CHANGELOG.md CHANGED
@@ -1,5 +1,138 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.19.0] - 2026-08-23
4
+
5
+ ### Patch Changes
6
+
7
+ - The CLI passes termination on to the process it runs. `unotest-web` is a
8
+ dispatcher that spawns the real entry (`viewer`, a scenario run, the MCP
9
+ server) and waits; killing the dispatcher used to leave that process alive,
10
+ reparented to init and still holding its port. Ctrl-C hid it — a terminal
11
+ signals the whole foreground group — so it only bit tooling that kills the
12
+ process it started: each such call leaked one server. SIGTERM / SIGINT /
13
+ SIGHUP now reach the child, and the exit code still comes from it.
14
+
15
+ ### Minor Changes
16
+
17
+ - dfb3991: Per-collection parallelism via a `workers:` field in the collection YAML.
18
+
19
+ - `workers: N` (integer ≥ 1) in `unotest/e2e/_collections/*.yaml` sets how
20
+ many scenarios of that collection run concurrently; omitted = serial.
21
+ - Precedence: CLI `--workers=N` flag > manifest `workers:` > 1.
22
+ - Viewer: the collection header shows an editable `workers` value; the
23
+ setting is stored in the YAML, so CLI and CI runs pick it up too.
24
+ - `CollectionMeta` (protocol) gains a `workers: number | null` field.
25
+
26
+ - Run history scales: runs are filed under daily shards and the viewer stops
27
+ polling history it is not showing.
28
+
29
+ - New on-disk layout `unotest/.runs/<YYYY>/<MM>/<DD>/<runId>/` (UTC date the
30
+ run started). The shard is a pure function of the `runId`, which already
31
+ carries the timestamp — a direct link to a run keeps working even with the
32
+ index deleted. Existing flat `.runs/<runId>/` history is migrated
33
+ automatically (see the `runs migrate` entry).
34
+ - The viewer's watcher polls only LIVE runs; finished history never touches
35
+ it. Discovery watches the current day's directory with native `fs.watch`
36
+ and re-attaches at UTC midnight.
37
+ - A JSONL index per day and per scenario backs the history list. It is fully
38
+ rebuildable — rebuilt on start, non-blocking — so a corrupted or missing
39
+ index degrades the listing, never the runs themselves.
40
+ - `@unotest/protocol`: new `run-shard` and `run-index` modules (shard path
41
+ derivation, index record shapes) exported from the root entry.
42
+
43
+ - Step screenshots are stored once and shared, and old runs expire on their
44
+ own — a long history stops growing without bound.
45
+
46
+ - Identical frames are content-addressed in `unotest/.runs/_blobs/` and
47
+ hardlinked into each run. `du` and ordinary copies see whole files;
48
+ `cp -a` / `rsync -H` preserve the sharing. On one dogfood suite: 45
49
+ frames, 2.04 MB by apparent size, 0.96 MB on disk.
50
+ - Reference counting is the filesystem's (`st_nlink`), so nothing to keep in
51
+ sync. Blob generations keep the dedup honest past ext4's 65 000-link
52
+ ceiling, and a fresh blob is untouchable for an hour so the window between
53
+ writing it and linking it is never mistaken for garbage.
54
+ - Retention: `UNOTEST_RUNS_RETENTION_DAYS` (whole days, default 180) sweeps
55
+ runs older than the window at the end of a collection run. It never
56
+ changes the exit code — a failed sweep is reported, not fatal.
57
+ - `@unotest/protocol`: new `run-blobs` module exported from the root entry.
58
+
59
+ - Upgrading moves existing run history to the new layout by itself, and
60
+ Playwright moves to 1.62.
61
+
62
+ - The flat `.runs/<runId>/` history is migrated on the first run of the new
63
+ version. Default is to remove old runs (nobody asked to keep them);
64
+ `UNOTEST_RUNS_LEGACY=keep` re-files them into date shards instead. The
65
+ completion marker is written last, so an interrupted or failed move is
66
+ retried on the next start rather than silently marked done.
67
+ - New command `unotest-web runs migrate [--dry-run]` — the same migration,
68
+ runnable FIRST, with a report-only mode. A migration nobody can look at
69
+ before it happens is one that runs unannounced on someone else's machine.
70
+ - `playwright` moves to `^1.62.0` in `@unotest/web` and `@unotest/viewer`.
71
+ Run `npx playwright install` once after upgrading if your browser cache
72
+ predates it.
73
+ - Frame capture is now format-parameterised internally, still PNG. WebP was
74
+ measured and rejected: Chromium's lossless `type: "webp"` is pixel-exact
75
+ but 1.5× LARGER than PNG on real frames (3.17 MB vs 2.04 MB on one suite).
76
+ - Fix: the viewer served step screenshots as 403 after the layout change —
77
+ its asset allow-list still expected the flat layout. The route now has
78
+ tests.
79
+
80
+ ## [0.18.0] - 2026-08-23
81
+
82
+ ### Minor Changes
83
+
84
+ - 44f5d6c: Editor typings for scenarios — `.js` files stop looking like broken
85
+ JavaScript in VS Code / WebStorm: autocomplete, hover docs, signature
86
+ help and locator-chain resolution, without turning on a second
87
+ type-checker (`checkJs` stays off; diagnostics remain the DSL
88
+ validator's job).
89
+
90
+ - New shipped file `types/unotest-dsl.d.ts` — ambient declarations for
91
+ every DSL function, generated from the same contracts the validator
92
+ uses (`buildDslVocab()`), so it can never drift from the installed
93
+ version.
94
+ - New CLI command `unotest-web types` — creates `unotest/jsconfig.json`
95
+ if missing and regenerates the `.unotest/types/env.d.ts` cache
96
+ (variable NAMES from `unotest/.env` / `.secrets`; values never leave
97
+ those files).
98
+ - `init` scaffolds the jsconfig + env cache; `scaffoldWorkspace()` now
99
+ includes the jsconfig too.
100
+ - Upgrade path is automatic: `lint` and `e2e` create a missing
101
+ `unotest/jsconfig.json` on the fly (one announcement line) and
102
+ silently refresh the env cache. Skipped under CI. No action needed
103
+ after upgrading — run any test or `unotest-web lint` once and the
104
+ editor comes alive. If you keep a custom `unotest/jsconfig.json`, it
105
+ is never overwritten (re-run `init --force` to reset it).
106
+ - `@unotest/protocol`: additive optional fields on the DSL vocab —
107
+ `DslVocabArg.enumValues` (literal members behind `kind: "enum"`) and
108
+ `DslVocabEntry.variadic`.
109
+
110
+ - a088bac: New package `@unotest/eslint-plugin` — unotest DSL scenarios as
111
+ first-class ESLint citizens. One rule (`@unotest/dsl`) delegates every
112
+ check to the validator inside the installed `@unotest/web` (parser,
113
+ vocabulary, linter rules, `linter.rules` severities from
114
+ unotest.config), so `npx eslint unotest/e2e` and `unotest-web lint`
115
+ report identical diagnostics; a new validator rule needs zero plugin
116
+ changes. `configs.recommended()` (async factory, flat config) wires
117
+ `unotest/e2e/**/*.js`, turns `no-undef` off (implicit globals are the
118
+ DSL's design; unknown names are the engine's job) and declares globals
119
+ for the vocabulary, your helpers and your `.env`/`.secrets` variable
120
+ names.
121
+
122
+ `@unotest/web`: the `@unotest/web/dsl` subpath now exports
123
+ `loadLintProjectContext()` (config severities + helper discovery +
124
+ variable names) and `linterRulesToSeverity()` — the same loader the CLI
125
+ `lint` command now uses, so the two frontends cannot drift.
126
+
127
+ ### Patch Changes
128
+
129
+ - 5ab7bd5: `screenshot()` appears in the DSL vocab (completion, hover, signature
130
+ help, generated editor typings). It always had a validator contract, but
131
+ its diagnostics contract group was missing from the vocab builder, so
132
+ every vocab consumer silently lacked it. A parity test now pins the vocab
133
+ to the contract registry, so a future contract group cannot be forgotten
134
+ again. `@unotest/protocol`: new `DslVocabCategory` value `"diagnostic"`.
135
+
3
136
  ## [0.17.0] - 2026-08-20
4
137
 
5
138
  ### Minor Changes
package/README.md CHANGED
@@ -22,6 +22,13 @@ during the prompt), and wires the MCP config so Claude Code / Cursor / Codex
22
22
  pick the server up automatically. Re-run anytime to update — it never
23
23
  overwrites your edits.
24
24
 
25
+ It also wires editor typings (`unotest/jsconfig.json` + generated `.d.ts`
26
+ files), so scenarios get autocomplete, hover docs and signature help in
27
+ VS Code / WebStorm instead of red squiggles. On an existing project this
28
+ self-installs on the first `lint` / `e2e` run after upgrading; refresh by
29
+ hand with `npx @unotest/web types`. Details: the "Editor setup" section of
30
+ `node_modules/@unotest/web/guides/dsl-reference.md`.
31
+
25
32
  ## 2. Open the viewer
26
33
 
27
34
  ```sh
@@ -115,6 +122,7 @@ alongside it in `guides/`).
115
122
  | [`@unotest/viewer`](https://www.npmjs.com/package/@unotest/viewer) | local results browser |
116
123
  | [`@unotest/protocol`](https://www.npmjs.com/package/@unotest/protocol) | shared types |
117
124
  | [`@unotest/dsl`](https://www.npmjs.com/package/@unotest/dsl) | scenario parser + validator engine |
125
+ | [`@unotest/eslint-plugin`](https://www.npmjs.com/package/@unotest/eslint-plugin) | the same scenario diagnostics through ESLint |
118
126
 
119
127
  ## License
120
128
 
@@ -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) => {
@@ -1 +1 @@
1
- var _0x2052e0=_0x1715;(function(_0x1b4eb8,_0x39d252){var _0x46022c={_0x3f8f66:0x204,_0x478011:0x1fa,_0x444cea:0x1f4,_0x2b0078:0x1fd},_0x206d9f=_0x1715,_0x1ff9af=_0x1b4eb8();while(!![]){try{var _0x33e783=-parseInt(_0x206d9f(0x1cc))/0x1+parseInt(_0x206d9f(_0x46022c._0x3f8f66))/0x2*(-parseInt(_0x206d9f(0x1ce))/0x3)+-parseInt(_0x206d9f(0x1eb))/0x4+-parseInt(_0x206d9f(_0x46022c._0x478011))/0x5+parseInt(_0x206d9f(0x1d1))/0x6*(parseInt(_0x206d9f(0x1dd))/0x7)+parseInt(_0x206d9f(_0x46022c._0x444cea))/0x8+parseInt(_0x206d9f(_0x46022c._0x2b0078))/0x9;if(_0x33e783===_0x39d252)break;else _0x1ff9af['push'](_0x1ff9af['shift']());}catch(_0x3a65ea){_0x1ff9af['push'](_0x1ff9af['shift']());}}}(_0x262b,0xd8442));import{z}from'zod';var BrowserSchema=z['enum']([_0x2052e0(0x1d9),_0x2052e0(0x1ca),_0x2052e0(0x1d6)]),BrowserChannelSchema=z['union']([z['literal']('chrome'),z['literal'](_0x2052e0(0x205)),z[_0x2052e0(0x1f6)](_0x2052e0(0x1f0)),z['null']()])['optional'](),ViewportSchema=z['object']({'width':z[_0x2052e0(0x1e9)]()[_0x2052e0(0x1e8)]()[_0x2052e0(0x1d2)](),'height':z[_0x2052e0(0x1e9)]()['int']()['positive']()}),RetryReasonSchema=z['enum']([_0x2052e0(0x1ed),_0x2052e0(0x1f1),_0x2052e0(0x1e2)]),RetryConfigSchema=z['object']({'count':z[_0x2052e0(0x1e9)]()[_0x2052e0(0x1e8)]()[_0x2052e0(0x1e7)](0x0)[_0x2052e0(0x200)](0xa),'on':z['array'](RetryReasonSchema)}),FailureBundleConfigSchema=z[_0x2052e0(0x1c8)]({'tier1':z['literal'](!![])[_0x2052e0(0x1fe)](!![]),'tier2':z['boolean'](),'tier3':z[_0x2052e0(0x1c8)]({'network':z[_0x2052e0(0x1d4)](),'video':z['boolean']()}),'retention':z[_0x2052e0(0x1c8)]({'runs':z[_0x2052e0(0x1e9)]()[_0x2052e0(0x1e8)]()[_0x2052e0(0x1d2)](),'days':z[_0x2052e0(0x1e9)]()[_0x2052e0(0x1e8)]()[_0x2052e0(0x1d2)]()}),'storageDir':z[_0x2052e0(0x1ec)]()[_0x2052e0(0x1e7)](0x1)}),DialogPolicySchema=z[_0x2052e0(0x1da)]([_0x2052e0(0x1fc),_0x2052e0(0x1fb),'manual']),LinterRuleIdSchema=z[_0x2052e0(0x1da)]([_0x2052e0(0x1d3),_0x2052e0(0x1ea),_0x2052e0(0x1f5),_0x2052e0(0x1de),'lint:disambig-by-index',_0x2052e0(0x202),_0x2052e0(0x1dc),_0x2052e0(0x1ff),'lint:goto-concat',_0x2052e0(0x1ef),_0x2052e0(0x1e6),'lint:api-call-file-body','lint:lint-ok-missing-reason',_0x2052e0(0x203),_0x2052e0(0x1cd),_0x2052e0(0x1e0),_0x2052e0(0x1e1),_0x2052e0(0x1e3),_0x2052e0(0x1e5),_0x2052e0(0x1f3),_0x2052e0(0x1f8),_0x2052e0(0x1c6),_0x2052e0(0x1cf),_0x2052e0(0x1f9),_0x2052e0(0x1df),_0x2052e0(0x1e4),_0x2052e0(0x1d5),_0x2052e0(0x1db),_0x2052e0(0x1c9)]),LinterSeveritySchema=z['enum']([_0x2052e0(0x1d7),'warn',_0x2052e0(0x1d0)]),LinterConfigSchema=z['object']({'enabled':z[_0x2052e0(0x1d4)](),'rules':z['record'](LinterRuleIdSchema,LinterSeveritySchema)}),McpConfigSchema=z['object']({'transport':z[_0x2052e0(0x1f6)](_0x2052e0(0x1f7))}),SandboxConfigSchema=z[_0x2052e0(0x1c8)]({'shellCwd':z['string']()[_0x2052e0(0x1c7)](),'shellTimeoutMs':z[_0x2052e0(0x1e9)]()[_0x2052e0(0x1e8)]()[_0x2052e0(0x1d2)]()[_0x2052e0(0x1c7)](),'exportSecrets':z['array'](z[_0x2052e0(0x1ec)]())[_0x2052e0(0x1c7)](),'database':z['string']()[_0x2052e0(0x1c7)](),'apiBaseUrl':z['string']()[_0x2052e0(0x1d8)]()[_0x2052e0(0x1c7)](),'uploadDir':z[_0x2052e0(0x1ec)]()['optional']()}),WebServerConfigSchema=z[_0x2052e0(0x1c8)]({'command':z[_0x2052e0(0x1ec)]()[_0x2052e0(0x1e7)](0x1),'url':z['string']()[_0x2052e0(0x1d8)](),'reuseExistingServer':z['boolean']()[_0x2052e0(0x1fe)](!![]),'timeoutMs':z[_0x2052e0(0x1e9)]()[_0x2052e0(0x1e8)]()[_0x2052e0(0x1d2)]()[_0x2052e0(0x1fe)](0xea60)}),UnotestConfigSchema=z[_0x2052e0(0x1c8)]({'baseUrl':z[_0x2052e0(0x1ec)]()['url']()[_0x2052e0(0x1c7)](),'webServer':WebServerConfigSchema['optional'](),'browsers':z[_0x2052e0(0x201)](BrowserSchema)['min'](0x1),'channel':BrowserChannelSchema,'viewport':ViewportSchema,'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':z[_0x2052e0(0x1ec)]()[_0x2052e0(0x1c7)](),'testDir':z['string']()[_0x2052e0(0x1e7)](0x1),'helpersDir':z['string']()[_0x2052e0(0x1e7)](0x1),'defaultTimeoutMs':z[_0x2052e0(0x1e9)]()['int']()[_0x2052e0(0x1d2)](),'defaultNavigationTimeoutMs':z[_0x2052e0(0x1e9)]()['int']()[_0x2052e0(0x1d2)](),'linter':LinterConfigSchema,'mcp':McpConfigSchema,'sandbox':SandboxConfigSchema}),DEFAULT_CONFIG={'browsers':[_0x2052e0(0x1d9)],'viewport':{'width':0x500,'height':0x2d0},'retry':{'count':0x0,'on':['transient']},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':_0x2052e0(0x1f2)},'dialogPolicy':_0x2052e0(0x1fc),'testDir':_0x2052e0(0x1cb),'helpersDir':_0x2052e0(0x1c5),'defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x7530,'linter':{'enabled':!![],'rules':{'lint:deep-css':_0x2052e0(0x1ee),'lint:xpath':'warn','lint:obfuscated-class':_0x2052e0(0x1ee),'lint:pause-explicit':_0x2052e0(0x1ee),'lint:disambig-by-index':_0x2052e0(0x1d7),'lint:evaluate-discouraged':_0x2052e0(0x1ee),'lint:scenario-in-root':_0x2052e0(0x1d0),'lint:mustache-in-dsl':_0x2052e0(0x1d0),'lint:goto-concat':_0x2052e0(0x1ee),'lint:regex-invalid':'error','lint:echo-assert':_0x2052e0(0x1ee),'lint:lint-ok-missing-reason':_0x2052e0(0x1ee),'validator:unknown-function':_0x2052e0(0x1d0)}},'mcp':{'transport':_0x2052e0(0x1f7)},'sandbox':{}};function _0x1715(_0x593def,_0x37b950){_0x593def=_0x593def-0x1c5;var _0x262b96=_0x262b();var _0x1715af=_0x262b96[_0x593def];if(_0x1715['lLVLre']===undefined){var _0x30a692=function(_0x5354b5){var _0x323d53='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x534531='',_0x284bb5='';for(var _0x2a8b8e=0x0,_0x1149f0,_0x66e7a,_0x44c211=0x0;_0x66e7a=_0x5354b5['charAt'](_0x44c211++);~_0x66e7a&&(_0x1149f0=_0x2a8b8e%0x4?_0x1149f0*0x40+_0x66e7a:_0x66e7a,_0x2a8b8e++%0x4)?_0x534531+=String['fromCharCode'](0xff&_0x1149f0>>(-0x2*_0x2a8b8e&0x6)):0x0){_0x66e7a=_0x323d53['indexOf'](_0x66e7a);}for(var _0x4d2463=0x0,_0x91063c=_0x534531['length'];_0x4d2463<_0x91063c;_0x4d2463++){_0x284bb5+='%'+('00'+_0x534531['charCodeAt'](_0x4d2463)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x284bb5);};_0x1715['jZfduB']=_0x30a692,_0x1715['nLaBVY']={},_0x1715['lLVLre']=!![];}var _0x57b3de=_0x262b96[0x0],_0x1b3020=_0x593def+_0x57b3de,_0x494e7f=_0x1715['nLaBVY'][_0x1b3020];return!_0x494e7f?(_0x1715af=_0x1715['jZfduB'](_0x1715af),_0x1715['nLaBVY'][_0x1b3020]=_0x1715af):_0x1715af=_0x494e7f,_0x1715af;}export{BrowserChannelSchema,BrowserSchema,DEFAULT_CONFIG,DialogPolicySchema,FailureBundleConfigSchema,LinterConfigSchema,LinterRuleIdSchema,LinterSeveritySchema,McpConfigSchema,RetryConfigSchema,RetryReasonSchema,SandboxConfigSchema,UnotestConfigSchema,ViewportSchema,WebServerConfigSchema};function _0x262b(){var _0x134d3a=['BNvTyMvY','BgLUDdP4Cgf0Aa','nduXodm1nNfkA3jMra','C3rYAw5N','DhjHBNnPzw50','D2fYBG','BgLUDdPYzwDLEc1PBNzHBgLK','y2HYB21LlwjLDge','BMv0D29YAW','lNvUB3rLC3qVzMfPBhvYzxm','DMfSAwrHDg9YoMz1BMn0Aw9UlxnOyxbL','odC1ntuWnejZt0j3zG','BgLUDdPVyMz1C2nHDgvKlwnSyxnZ','BgL0zxjHBa','C3rKAw8','DMfSAwrHDg9YoMzVCI1ZAgfWzq','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlxn0yxrLBwvUDa','odC4ntm1mhLiweHwyG','zgLZBwLZCW','ywnJzxb0','mJeYndG2ndbSDvvvugq','zgvMyxvSDa','BgLUDdPTDxn0ywnOzs1PBI1KC2W','Bwf4','yxjYyxK','BgLUDdPLDMfSDwf0zs1KAxnJB3vYywDLza','DMfSAwrHDg9YoNvUA25VD24TzNvUy3rPB24','mtKXmte2BezbAunJ','BxnLzgDL','Dw5VDgvZDc9LmMuVx2HLBhbLCNm','DMfSAwrHDg9YoMLMlxnOyxbL','B3b0Aw9UywW','B2jQzwn0','DMfSAwrHDg9YoNDYyxbWzwqTzM9YBwf0','zMLYzwzVEa','Dw5VDgvZDc9LmMu','mJC0nZaWuLbOsK5Z','DMfSAwrHDg9YoMfYAxr5','nM1YuwXPCq','DMfSAwrHDg9YoNzHCI1ZAgfWzq','zxjYB3i','nJC5oev1z0LOva','Cg9ZAxrPDMu','BgLUDdPKzwvWlwnZCW','yM9VBgvHBG','DMfSAwrHDg9YoNnLBwfUDgLJlwXVC3m','D2vIA2L0','B2zM','DxjS','y2HYB21PDw0','zw51Bq','DMfSAwrHDg9YoMXPC3qTyxjN','BgLUDdPZy2vUyxjPBY1PBI1YB290','ndGZn051ugT6Ca','BgLUDdPWyxvZzs1LEhbSAwnPDa','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlwv4ChjLC3nPB24','DMfSAwrHDg9YoMfYzY1RAw5K','DMfSAwrHDg9YoNn0zxaTy292zxjHz2u','y3jHC2G','DMfSAwrHDg9YoNn0zxaTC2HHCgu','DMfSAwrHDg9YoNn0CMLUzY1JB25Jyxq','DMfSAwrHDg9YoM1LDgeTC2HHCgu','BgLUDdPLy2HVlwfZC2vYDa','BwLU','Aw50'];_0x262b=function(){return _0x134d3a;};return _0x262b();}
1
+ function _0x24cf(_0x477f62,_0x1eaa9a){_0x477f62=_0x477f62-0x111;var _0x17e137=_0x17e1();var _0x24cf04=_0x17e137[_0x477f62];if(_0x24cf['HAEBEm']===undefined){var _0x5a4b8d=function(_0x5e2fc4){var _0xeac736='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x433503='',_0x52efdf='';for(var _0x116ffc=0x0,_0x1fe7a7,_0x427744,_0x5d0aae=0x0;_0x427744=_0x5e2fc4['charAt'](_0x5d0aae++);~_0x427744&&(_0x1fe7a7=_0x116ffc%0x4?_0x1fe7a7*0x40+_0x427744:_0x427744,_0x116ffc++%0x4)?_0x433503+=String['fromCharCode'](0xff&_0x1fe7a7>>(-0x2*_0x116ffc&0x6)):0x0){_0x427744=_0xeac736['indexOf'](_0x427744);}for(var _0x4094ba=0x0,_0x4b21e0=_0x433503['length'];_0x4094ba<_0x4b21e0;_0x4094ba++){_0x52efdf+='%'+('00'+_0x433503['charCodeAt'](_0x4094ba)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x52efdf);};_0x24cf['JmhbWk']=_0x5a4b8d,_0x24cf['aMnMKM']={},_0x24cf['HAEBEm']=!![];}var _0x42f2eb=_0x17e137[0x0],_0x29b9df=_0x477f62+_0x42f2eb,_0x26e0dd=_0x24cf['aMnMKM'][_0x29b9df];return!_0x26e0dd?(_0x24cf04=_0x24cf['JmhbWk'](_0x24cf04),_0x24cf['aMnMKM'][_0x29b9df]=_0x24cf04):_0x24cf04=_0x26e0dd,_0x24cf04;}var _0x240191=_0x24cf;(function(_0x3296fc,_0x5e66e2){var _0x22d313={_0x14e0e7:0x132,_0x106738:0x13e,_0x72158f:0x119,_0x2a6e5b:0x11c},_0x5d43c5=_0x24cf,_0x353ea6=_0x3296fc();while(!![]){try{var _0x4be76a=-parseInt(_0x5d43c5(0x11f))/0x1*(-parseInt(_0x5d43c5(_0x22d313._0x14e0e7))/0x2)+-parseInt(_0x5d43c5(_0x22d313._0x106738))/0x3+-parseInt(_0x5d43c5(_0x22d313._0x72158f))/0x4+parseInt(_0x5d43c5(0x150))/0x5+parseInt(_0x5d43c5(0x126))/0x6*(parseInt(_0x5d43c5(0x134))/0x7)+parseInt(_0x5d43c5(0x14b))/0x8+-parseInt(_0x5d43c5(_0x22d313._0x2a6e5b))/0x9;if(_0x4be76a===_0x5e66e2)break;else _0x353ea6['push'](_0x353ea6['shift']());}catch(_0x2a14e1){_0x353ea6['push'](_0x353ea6['shift']());}}}(_0x17e1,0xb340b));import{z}from'zod';var BrowserSchema=z[_0x240191(0x141)]([_0x240191(0x12a),_0x240191(0x138),_0x240191(0x13a)]),BrowserChannelSchema=z[_0x240191(0x143)]([z[_0x240191(0x147)](_0x240191(0x123)),z[_0x240191(0x147)](_0x240191(0x120)),z[_0x240191(0x147)](_0x240191(0x14a)),z[_0x240191(0x14d)]()])['optional'](),ViewportSchema=z[_0x240191(0x131)]({'width':z['number']()['int']()[_0x240191(0x148)](),'height':z[_0x240191(0x142)]()[_0x240191(0x135)]()[_0x240191(0x148)]()}),RetryReasonSchema=z[_0x240191(0x141)]([_0x240191(0x121),_0x240191(0x12c),_0x240191(0x125)]),RetryConfigSchema=z[_0x240191(0x131)]({'count':z[_0x240191(0x142)]()[_0x240191(0x135)]()[_0x240191(0x13b)](0x0)[_0x240191(0x139)](0xa),'on':z[_0x240191(0x145)](RetryReasonSchema)}),FailureBundleConfigSchema=z[_0x240191(0x131)]({'tier1':z[_0x240191(0x147)](!![])[_0x240191(0x144)](!![]),'tier2':z[_0x240191(0x111)](),'tier3':z[_0x240191(0x131)]({'network':z['boolean'](),'video':z[_0x240191(0x111)]()}),'retention':z[_0x240191(0x131)]({'runs':z[_0x240191(0x142)]()[_0x240191(0x135)]()[_0x240191(0x148)](),'days':z[_0x240191(0x142)]()[_0x240191(0x135)]()['positive']()}),'storageDir':z['string']()[_0x240191(0x13b)](0x1)}),DialogPolicySchema=z['enum']([_0x240191(0x122),_0x240191(0x113),_0x240191(0x128)]),LinterRuleIdSchema=z['enum'](['lint:deep-css',_0x240191(0x13c),'lint:obfuscated-class',_0x240191(0x140),_0x240191(0x124),_0x240191(0x12d),'lint:scenario-in-root',_0x240191(0x127),_0x240191(0x136),_0x240191(0x14f),_0x240191(0x12f),'lint:api-call-file-body',_0x240191(0x13f),_0x240191(0x11a),_0x240191(0x11d),_0x240191(0x14c),_0x240191(0x130),_0x240191(0x129),'validator:meta-shape',_0x240191(0x137),_0x240191(0x116),'validator:if-shape',_0x240191(0x11b),'validator:unsupported-statement',_0x240191(0x112),'validator:string-concat','validator:semantic-loss',_0x240191(0x133),'validator:wrapped-format']),LinterSeveritySchema=z[_0x240191(0x141)](['off',_0x240191(0x114),'error']),LinterConfigSchema=z[_0x240191(0x131)]({'enabled':z['boolean'](),'rules':z[_0x240191(0x14e)](LinterRuleIdSchema,LinterSeveritySchema)}),McpConfigSchema=z['object']({'transport':z[_0x240191(0x147)]('stdio')}),SandboxConfigSchema=z[_0x240191(0x131)]({'shellCwd':z[_0x240191(0x12e)]()[_0x240191(0x11e)](),'shellTimeoutMs':z[_0x240191(0x142)]()[_0x240191(0x135)]()[_0x240191(0x148)]()[_0x240191(0x11e)](),'exportSecrets':z[_0x240191(0x145)](z[_0x240191(0x12e)]())[_0x240191(0x11e)](),'database':z[_0x240191(0x12e)]()[_0x240191(0x11e)](),'apiBaseUrl':z[_0x240191(0x12e)]()[_0x240191(0x13d)]()['optional'](),'uploadDir':z[_0x240191(0x12e)]()[_0x240191(0x11e)]()}),WebServerConfigSchema=z[_0x240191(0x131)]({'command':z['string']()['min'](0x1),'url':z[_0x240191(0x12e)]()[_0x240191(0x13d)](),'reuseExistingServer':z['boolean']()['default'](!![]),'timeoutMs':z[_0x240191(0x142)]()[_0x240191(0x135)]()[_0x240191(0x148)]()[_0x240191(0x144)](0xea60)}),UnotestConfigSchema=z['object']({'baseUrl':z[_0x240191(0x12e)]()[_0x240191(0x13d)]()[_0x240191(0x11e)](),'webServer':WebServerConfigSchema[_0x240191(0x11e)](),'browsers':z['array'](BrowserSchema)['min'](0x1),'channel':BrowserChannelSchema,'viewport':ViewportSchema,'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':z[_0x240191(0x12e)]()['optional'](),'testDir':z[_0x240191(0x12e)]()[_0x240191(0x13b)](0x1),'helpersDir':z[_0x240191(0x12e)]()['min'](0x1),'defaultTimeoutMs':z[_0x240191(0x142)]()[_0x240191(0x135)]()['positive'](),'defaultNavigationTimeoutMs':z[_0x240191(0x142)]()[_0x240191(0x135)]()[_0x240191(0x148)](),'linter':LinterConfigSchema,'mcp':McpConfigSchema,'sandbox':SandboxConfigSchema}),DEFAULT_CONFIG={'browsers':['chromium'],'viewport':{'width':0x500,'height':0x2d0},'retry':{'count':0x0,'on':[_0x240191(0x121)]},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':_0x240191(0x12b)},'dialogPolicy':_0x240191(0x122),'testDir':_0x240191(0x118),'helpersDir':_0x240191(0x117),'defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x7530,'linter':{'enabled':!![],'rules':{'lint:deep-css':_0x240191(0x114),'lint:xpath':'warn','lint:obfuscated-class':_0x240191(0x114),'lint:pause-explicit':_0x240191(0x114),'lint:disambig-by-index':_0x240191(0x115),'lint:evaluate-discouraged':_0x240191(0x114),'lint:scenario-in-root':_0x240191(0x146),'lint:mustache-in-dsl':'error','lint:goto-concat':_0x240191(0x114),'lint:regex-invalid':_0x240191(0x146),'lint:echo-assert':_0x240191(0x114),'lint:lint-ok-missing-reason':'warn','validator:unknown-function':'error'}},'mcp':{'transport':_0x240191(0x149)},'sandbox':{}};function _0x17e1(){var _0x184576=['DxjS','mJC5nta1nwDkEM55ra','BgLUDdPSAw50lw9Rlw1PC3nPBMCTCMvHC29U','BgLUDdPWyxvZzs1LEhbSAwnPDa','zw51Bq','BNvTyMvY','Dw5PB24','zgvMyxvSDa','yxjYyxK','zxjYB3i','BgL0zxjHBa','Cg9ZAxrPDMu','C3rKAw8','y2HYB21LlwjLDge','nde2mJeWnfHxzMPeDq','DMfSAwrHDg9YoMfYzY1RAw5K','BNvSBa','CMvJB3jK','BgLUDdPYzwDLEc1PBNzHBgLK','mJG5mtu3nwfJEfjrsW','yM9VBgvHBG','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlwv4ChjLC3nPB24','zgLZBwLZCW','D2fYBG','B2zM','DMfSAwrHDg9YoMzVCI1ZAgfWzq','Dw5VDgvZDc9LmMuVx2HLBhbLCNm','Dw5VDgvZDc9LmMu','mtK0ndq0mgDnDxzIrG','DMfSAwrHDg9YoNvUA25VD24TzNvUy3rPB24','DMfSAwrHDg9YoNzHCI1ZAgfWzq','mti4nJa3nZvsrxLlDg8','DMfSAwrHDg9YoMfYAxr5','B3b0Aw9UywW','mZnOzwnpzve','BxnLzgDL','DhjHBNnPzw50','ywnJzxb0','y2HYB21L','BgLUDdPKAxnHBwjPzY1IEs1PBMrLEa','y3jHC2G','odm4mdG2mgjove1dua','BgLUDdPTDxn0ywnOzs1PBI1KC2W','BwfUDwfS','DMfSAwrHDg9YoNn0zxaTC2HHCgu','y2HYB21PDw0','lNvUB3rLC3qVzMfPBhvYzxm','BMv0D29YAW','BgLUDdPLDMfSDwf0zs1KAxnJB3vYywDLza','C3rYAw5N','BgLUDdPLy2HVlwfZC2vYDa','DMfSAwrHDg9YoNn0zxaTy292zxjHz2u','B2jQzwn0','nJu3otrpwerQsvu','DMfSAwrHDg9YoMXPC3qTyxjN','n2XHrLfSta','Aw50','BgLUDdPNB3rVlwnVBMnHDa','DMfSAwrHDg9YoMz1BMn0Aw9UlxnOyxbL','zMLYzwzVEa','Bwf4','D2vIA2L0','BwLU','BgLUDdP4Cgf0Aa'];_0x17e1=function(){return _0x184576;};return _0x17e1();}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 _0x2744d9=_0x2fd3;(function(_0x4f30cd,_0x57fa0e){const _0x35341a={_0x162357:0x143,_0x1260df:0x128,_0x2ce412:0x160,_0x1753b0:0x14c,_0x507c20:0x10d},_0x157ce7=_0x2fd3,_0x22ed87=_0x4f30cd();while(!![]){try{const _0x55603d=parseInt(_0x157ce7(_0x35341a._0x162357))/0x1*(-parseInt(_0x157ce7(0x165))/0x2)+-parseInt(_0x157ce7(_0x35341a._0x1260df))/0x3*(parseInt(_0x157ce7(_0x35341a._0x2ce412))/0x4)+-parseInt(_0x157ce7(_0x35341a._0x1753b0))/0x5*(-parseInt(_0x157ce7(0x115))/0x6)+-parseInt(_0x157ce7(_0x35341a._0x507c20))/0x7+-parseInt(_0x157ce7(0x118))/0x8+parseInt(_0x157ce7(0x109))/0x9+parseInt(_0x157ce7(0x125))/0xa;if(_0x55603d===_0x57fa0e)break;else _0x22ed87['push'](_0x22ed87['shift']());}catch(_0x1ad6e5){_0x22ed87['push'](_0x22ed87['shift']());}}}(_0x32ef,0x5da95));var __defProp=Object[_0x2744d9(0x107)],__name=(_0x22bfc2,_0x236a12)=>__defProp(_0x22bfc2,_0x2744d9(0x134),{'value':_0x236a12,'configurable':!![]});function subscribe(_0xa0461c,_0x3b47dc){return _0xa0461c['add'](_0x3b47dc),()=>{_0xa0461c['delete'](_0x3b47dc);};}__name(subscribe,_0x2744d9(0x106));import{UnotestError}from'@unotest/core';var DriverError=class extends UnotestError{static{__name(this,_0x2744d9(0xfc));}},LocatorError=class extends UnotestError{static{__name(this,'LocatorError');}};function _0x2fd3(_0x3b88e9,_0x551163){_0x3b88e9=_0x3b88e9-0xf5;const _0x32ef4c=_0x32ef();let _0x2fd313=_0x32ef4c[_0x3b88e9];if(_0x2fd3['Hmavpk']===undefined){var _0x30098e=function(_0x31b4c8){const _0x5daf38='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x22bfc2='',_0x236a12='';for(let _0xa0461c=0x0,_0x3b47dc,_0x4ea2de,_0x50df5f=0x0;_0x4ea2de=_0x31b4c8['charAt'](_0x50df5f++);~_0x4ea2de&&(_0x3b47dc=_0xa0461c%0x4?_0x3b47dc*0x40+_0x4ea2de:_0x4ea2de,_0xa0461c++%0x4)?_0x22bfc2+=String['fromCharCode'](0xff&_0x3b47dc>>(-0x2*_0xa0461c&0x6)):0x0){_0x4ea2de=_0x5daf38['indexOf'](_0x4ea2de);}for(let _0x245578=0x0,_0x406471=_0x22bfc2['length'];_0x245578<_0x406471;_0x245578++){_0x236a12+='%'+('00'+_0x22bfc2['charCodeAt'](_0x245578)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x236a12);};_0x2fd3['WGwyZP']=_0x30098e,_0x2fd3['UgNFac']={},_0x2fd3['Hmavpk']=!![];}const _0x56420=_0x32ef4c[0x0],_0x211c26=_0x3b88e9+_0x56420,_0x32399f=_0x2fd3['UgNFac'][_0x211c26];return!_0x32399f?(_0x2fd313=_0x2fd3['WGwyZP'](_0x2fd313),_0x2fd3['UgNFac'][_0x211c26]=_0x2fd313):_0x2fd313=_0x32399f,_0x2fd313;}function createRecorder(){const _0x5dd118=_0x2744d9,_0x4ea2de=[];let _0x50df5f=0x0;return{'push':__name(_0x245578=>_0x4ea2de['push']({..._0x245578,'seq':_0x50df5f++}),'push'),'calls':__name(()=>_0x4ea2de,_0x5dd118(0x159))};}__name(createRecorder,'createRecorder');var FakePage=class{constructor(_0x406471,_0xa97cc2,_0x549614,_0x5e605b){const _0xbcfaa6={_0x493182:0x121},_0x40f148=_0x2744d9;this[_0x40f148(0x123)]=_0x406471,this[_0x40f148(_0xbcfaa6._0x493182)]=_0xa97cc2,this['scope']=_0x549614,this[_0x40f148(0x10f)]=_0x5e605b;}['recorder'];[_0x2744d9(0x121)];[_0x2744d9(0x16f)];static{__name(this,_0x2744d9(0xf6));}['currentUrl'];[_0x2744d9(0x137)];[_0x2744d9(0x12c)](_0x25cf5a,_0x3572a6){const _0x2417e0={_0x1f0d9e:0xf7},_0x539e65=_0x2744d9;this['recorder'][_0x539e65(_0x2417e0._0x1f0d9e)]({'scope':this[_0x539e65(0x16f)],'method':_0x25cf5a,'args':_0x3572a6});}[_0x2744d9(0x140)](){const _0x2c3556={_0x4303c2:0x117,_0x52ec0a:0x117},_0x92e4bd=_0x2744d9;if(this[_0x92e4bd(0x121)][_0x92e4bd(0x117)]){const _0x29dd18=this[_0x92e4bd(0x121)][_0x92e4bd(_0x2c3556._0x4303c2)];this[_0x92e4bd(0x121)][_0x92e4bd(_0x2c3556._0x52ec0a)]=void 0x0;throw _0x29dd18;}}[_0x2744d9(0x10b)](){const _0xe0c41a=_0x2744d9;return this[_0xe0c41a(0x10f)];}async['title'](){const _0x405251={_0x303a7a:0x119},_0x29023d=_0x2744d9;return this['record']('title',[]),_0x29023d(_0x405251._0x303a7a);}async['click'](_0x10808b,_0x601c72){const _0x44ca71={_0x5e3025:0x12c,_0x5b5f86:0xfd,_0x58757a:0x137},_0x58180a=_0x2744d9;this[_0x58180a(_0x44ca71._0x5e3025)](_0x58180a(_0x44ca71._0x5b5f86),[_0x10808b,_0x601c72]),this[_0x58180a(0x140)](),this[_0x58180a(_0x44ca71._0x58757a)]?.();}async[_0x2744d9(0x108)](_0x1c6715,_0x3549e0){const _0x1f2ef2={_0x377bed:0x12c,_0x1bfb3a:0x108},_0x40c14f=_0x2744d9;this[_0x40c14f(_0x1f2ef2._0x377bed)](_0x40c14f(_0x1f2ef2._0x1bfb3a),[_0x1c6715,_0x3549e0]),this[_0x40c14f(0x140)]();}async['fill'](_0x5690dc,_0x68d980,_0x273caa){const _0x4e2bf5={_0x4b1a8d:0x12c,_0x278037:0x136},_0x295102=_0x2744d9;this[_0x295102(_0x4e2bf5._0x4b1a8d)](_0x295102(_0x4e2bf5._0x278037),[_0x5690dc,_0x68d980,_0x273caa]),this[_0x295102(0x140)]();}async['press'](_0x5ca742,_0x1044e0,_0x458270){const _0x44d179=_0x2744d9;this['record'](_0x44d179(0x12b),[_0x5ca742,_0x1044e0,_0x458270]),this[_0x44d179(0x140)]();}async[_0x2744d9(0x13f)](_0x3c0055,_0x2f9508){const _0x35d8d5={_0x2b552b:0x13f,_0x4b70ab:0x140},_0x4ee69a=_0x2744d9;this[_0x4ee69a(0x12c)](_0x4ee69a(_0x35d8d5._0x2b552b),[_0x3c0055,_0x2f9508]),this[_0x4ee69a(_0x35d8d5._0x4b70ab)]();}async[_0x2744d9(0x133)](_0xf2f7d1,_0x4e8248){const _0x32c81e={_0x3bc508:0x12c,_0x38b4aa:0x133},_0x5dd047=_0x2744d9;this[_0x5dd047(_0x32c81e._0x3bc508)](_0x5dd047(_0x32c81e._0x38b4aa),[_0xf2f7d1,_0x4e8248]),this[_0x5dd047(0x140)]();}async[_0x2744d9(0xfa)](_0x2062a4,_0x377342,_0x3a699f){const _0x45e84b={_0x20518a:0x12c},_0x566e68=_0x2744d9;this[_0x566e68(_0x45e84b._0x20518a)]('selectOption',[_0x2062a4,_0x377342,_0x3a699f]),this[_0x566e68(0x140)]();}async['hover'](_0x7d5f30,_0x3d7b2b){const _0x6e690a=_0x2744d9;this['record']('hover',[_0x7d5f30,_0x3d7b2b]),this[_0x6e690a(0x140)]();}async[_0x2744d9(0x151)](_0x26cd0c){const _0x4e83a7=_0x2744d9;this[_0x4e83a7(0x12c)]('scrollIntoView',[_0x26cd0c]),this['maybeThrow']();}async[_0x2744d9(0x148)](_0x1313b4,_0x59d359,_0x438e76){const _0xed5c71={_0x185b11:0x148},_0x2f9f14=_0x2744d9;this[_0x2f9f14(0x12c)](_0x2f9f14(_0xed5c71._0x185b11),[_0x1313b4,_0x59d359,_0x438e76]),this['maybeThrow']();}async['uploadFile'](_0x26856d,_0xca32c1){const _0xe78ab4={_0x32590b:0x12c,_0x2139c6:0x12f},_0x3a05e1=_0x2744d9;this[_0x3a05e1(_0xe78ab4._0x32590b)](_0x3a05e1(_0xe78ab4._0x2139c6),[_0x26856d,_0xca32c1]),this['maybeThrow']();}async[_0x2744d9(0x141)](_0x16cb80,_0x2e5cd2){const _0x26e76e={_0x52a1f0:0x12c},_0x36fa14=_0x2744d9;this[_0x36fa14(_0x26e76e._0x52a1f0)]('clipboardPaste',[_0x16cb80,_0x2e5cd2]),this[_0x36fa14(0x140)]();}async[_0x2744d9(0x11c)](_0x22915e){const _0x50a661={_0xf3c61f:0x121,_0x1dcd41:0x166},_0x2ea1bd=_0x2744d9;return this['record'](_0x2ea1bd(0x11c),[_0x22915e]),this[_0x2ea1bd(_0x50a661._0xf3c61f)][_0x2ea1bd(_0x50a661._0x1dcd41)]??0x1;}async['textContent'](_0x4ea5dd){const _0x26efa9={_0x5dfbdb:0x135},_0x4e43ee=_0x2744d9;return this[_0x4e43ee(0x12c)](_0x4e43ee(0x100),[_0x4ea5dd]),this['behavior'][_0x4e43ee(_0x26efa9._0x5dfbdb)]??'';}async['inputValue'](_0x50cc56){const _0x15d9ee={_0x3f74c0:0x167},_0x1d4aed=_0x2744d9;return this['record'](_0x1d4aed(_0x15d9ee._0x3f74c0),[_0x50cc56]),this[_0x1d4aed(0x121)][_0x1d4aed(0x130)]??'';}async[_0x2744d9(0x142)](_0x58ffc8){const _0x33cc9f={_0x37b926:0x142},_0x36de92=_0x2744d9;return this['record'](_0x36de92(_0x33cc9f._0x37b926),[_0x58ffc8]),this['behavior'][_0x36de92(0x139)]??null;}async[_0x2744d9(0x105)](_0x1b5bed){const _0x719927={_0x3d43ca:0x105,_0x10b377:0x121},_0xbdeb82=_0x2744d9;return this['record'](_0xbdeb82(_0x719927._0x3d43ca),[_0x1b5bed]),this[_0xbdeb82(_0x719927._0x10b377)][_0xbdeb82(0xf5)]??!![];}async[_0x2744d9(0x131)](_0x350b40){const _0x12779c={_0x21fff9:0x12c,_0x4fca11:0x11f},_0x2957d8=_0x2744d9;return this[_0x2957d8(_0x12779c._0x21fff9)](_0x2957d8(0x131),[_0x350b40]),this[_0x2957d8(0x121)][_0x2957d8(_0x12779c._0x4fca11)]??![];}async[_0x2744d9(0x155)](_0x2d80aa,_0xe489bd){const _0x4aa72b={_0x4a3f75:0x138},_0x586afd=_0x2744d9;return this['record']('getAttribute',[_0x2d80aa,_0xe489bd]),this['behavior'][_0x586afd(_0x4aa72b._0x4a3f75)]?.[_0xe489bd]??null;}async['waitFor'](_0x36447d,_0x35cb37){const _0x5d9120=_0x2744d9;this[_0x5d9120(0x12c)]('waitFor',[_0x36447d,_0x35cb37]);}async[_0x2744d9(0x103)](_0x231691,_0x17b83c){const _0x1f596e={_0x1d897a:0x103},_0x4ccc90=_0x2744d9;this[_0x4ccc90(0x12c)](_0x4ccc90(_0x1f596e._0x1d897a),[_0x231691,_0x17b83c]);}async[_0x2744d9(0x12d)](_0x2ca592,_0x2fcbb0){const _0xc8b07d={_0x31f8b4:0x12c,_0x3d8f98:0x12d},_0x43cd71=_0x2744d9;this[_0x43cd71(_0xc8b07d._0x31f8b4)](_0x43cd71(_0xc8b07d._0x3d8f98),[_0x2ca592,_0x2fcbb0]);}async[_0x2744d9(0xff)](_0x3bc807){const _0x1a9447=_0x2744d9;this[_0x1a9447(0x12c)](_0x1a9447(0xff),[_0x3bc807]);}async[_0x2744d9(0x101)](_0x3a6416,_0x13a39a){const _0x3c47b6=_0x2744d9;this[_0x3c47b6(0x12c)](_0x3c47b6(0x101),[_0x3a6416,_0x13a39a]);}async[_0x2744d9(0x150)](_0x419d89,_0x44d519){const _0x1f5e72={_0x1aa88e:0x150},_0x39ee47=_0x2744d9;this[_0x39ee47(0x12c)](_0x39ee47(_0x1f5e72._0x1aa88e),[_0x419d89,_0x44d519]),this['currentUrl']=_0x419d89;}async['reload'](_0x4f3f4b){const _0x14f936=_0x2744d9;this[_0x14f936(0x12c)](_0x14f936(0x113),[_0x4f3f4b]);}async['goBack'](_0x1b02cb){const _0x4c187c={_0x4a908e:0x10a},_0x1e28ca=_0x2744d9;this[_0x1e28ca(0x12c)](_0x1e28ca(_0x4c187c._0x4a908e),[_0x1b02cb]);}async[_0x2744d9(0x146)](_0x537aa8){const _0x2c5560=_0x2744d9;this[_0x2c5560(0x12c)]('goForward',[_0x537aa8]);}async[_0x2744d9(0x124)](_0x4ae6dd){const _0x82051b={_0x3dc10a:0x12c},_0x1573fe=_0x2744d9;return this[_0x1573fe(_0x82051b._0x3dc10a)](_0x1573fe(0x124),[_0x4ae6dd]),void 0x0;}async[_0x2744d9(0x147)](_0x160d35,_0x28f83b){const _0x5d6c66=_0x2744d9;return this[_0x5d6c66(0x12c)](_0x5d6c66(0x147),[_0x160d35,_0x28f83b]),void 0x0;}async['inspectElement'](_0x4c8f38){const _0x30d94b={_0x23dcfc:0xfe,_0x2b2148:0xf9,_0x29554f:0x121,_0x8c7867:0x13b},_0x3db668=_0x2744d9;this[_0x3db668(0x12c)](_0x3db668(0xf8),[_0x4c8f38]);if(_0x4c8f38[_0x3db668(_0x30d94b._0x23dcfc)]['length']!==0x1||_0x4c8f38[_0x3db668(0xfe)][0x0]['kind']!==_0x3db668(0xf9))return null;const _0x4c4626=_0x4c8f38['steps'][0x0][_0x3db668(_0x30d94b._0x2b2148)],_0x1c9d9f=this[_0x3db668(_0x30d94b._0x29554f)][_0x3db668(_0x30d94b._0x8c7867)]?.[_0x4c4626];return _0x1c9d9f??null;}async['screenshot'](_0x18a5e0){const _0x511be0={_0x2ce0fd:0x12c},_0xb6a034=_0x2744d9;return this[_0xb6a034(_0x511be0._0x2ce0fd)]('screenshot',[_0x18a5e0]),Buffer[_0xb6a034(0x162)](_0xb6a034(0x112));}async[_0x2744d9(0x169)](_0x157ddb){const _0xdb3b53={_0x57b55a:0x114,_0x41f39d:0xfe,_0xe49c7:0x15d,_0x3894be:0x126,_0x2df2da:0x15b},_0x160bc5=_0x2744d9;this['record']('outerHTML',[_0x157ddb]);if(_0x157ddb[_0x160bc5(0xfe)][_0x160bc5(0x163)]===0x1&&_0x157ddb[_0x160bc5(0xfe)][0x0][_0x160bc5(_0xdb3b53._0x57b55a)]===_0x160bc5(0xf9)){const _0x130628=_0x157ddb[_0x160bc5(_0xdb3b53._0x41f39d)][0x0][_0x160bc5(0xf9)];return this[_0x160bc5(0x121)][_0x160bc5(_0xdb3b53._0xe49c7)]?.[_0x130628]??_0x160bc5(0x16d)+_0x130628+_0x160bc5(_0xdb3b53._0x3894be);}return _0x160bc5(_0xdb3b53._0x2df2da);}},FakeContext=class{constructor(_0x188664,_0x3b39f5,_0x159076){const _0x224515={_0x30a986:0x16b},_0x6f811e={_0x23b8e4:0xfb},_0x17575a=_0x2744d9;this['recorder']=_0x188664,this[_0x17575a(0x121)]=_0x3b39f5,this['scope']=_0x159076;const _0x5cd04b=new FakePage(_0x188664,_0x3b39f5,_0x159076+'.page0',_0x3b39f5[_0x17575a(_0x224515._0x30a986)]??_0x17575a(0x122));_0x3b39f5['popupOnClick']&&(_0x5cd04b['onAfterClick']=()=>{const _0x2201fe=_0x17575a;this[_0x2201fe(0x127)](_0x3b39f5[_0x2201fe(_0x6f811e._0x23b8e4)]);}),this[_0x17575a(0x15c)]=[_0x5cd04b],this[_0x17575a(0x158)]={..._0x3b39f5[_0x17575a(0x12e)]??{}},this[_0x17575a(0x11b)]={..._0x3b39f5[_0x17575a(0x164)]??{}};}[_0x2744d9(0x123)];[_0x2744d9(0x121)];[_0x2744d9(0x16f)];static{__name(this,_0x2744d9(0x161));}[_0x2744d9(0x15c)];[_0x2744d9(0x110)]=0x0;[_0x2744d9(0x13c)]=[];[_0x2744d9(0x158)];[_0x2744d9(0x11b)];['newPageListeners']=new Set();['record'](_0x398101,_0x54bdff){const _0x151061={_0x294384:0xf7},_0x2bd661=_0x2744d9;this[_0x2bd661(0x123)][_0x2bd661(_0x151061._0x294384)]({'scope':this['scope'],'method':_0x398101,'args':_0x54bdff});}[_0x2744d9(0x129)](){const _0x2f2346=_0x2744d9;return this[_0x2f2346(0x15c)];}[_0x2744d9(0x145)](){const _0x1ae790={_0x59df2e:0x10e},_0x1240df=_0x2744d9,_0x1a5044=this['pageList'][this[_0x1240df(0x110)]];if(!_0x1a5044)throw new DriverError(_0x1240df(_0x1ae790._0x59df2e),{'activeIdx':this['activeIdx']});return _0x1a5044;}[_0x2744d9(0x11a)](){const _0x413117={_0x4c1c0e:0x11a},_0x2a0f2a=_0x2744d9;return this['behavior'][_0x2a0f2a(_0x413117._0x4c1c0e)]??[];}[_0x2744d9(0x116)](){const _0x197c8f={_0x375f17:0x116},_0x199bc3=_0x2744d9;return this['behavior'][_0x199bc3(_0x197c8f._0x375f17)]??[];}async['setActivePage'](_0x5585b4){const _0x156dc8={_0x4d8575:0x163},_0x105643=_0x2744d9;this[_0x105643(0x12c)]('setActivePage',[_0x5585b4]);if(_0x5585b4<0x0||_0x5585b4>=this[_0x105643(0x15c)][_0x105643(0x163)])throw new DriverError('page\x20index\x20out\x20of\x20range',{'index':_0x5585b4,'available':this['pageList'][_0x105643(_0x156dc8._0x4d8575)]});this[_0x105643(0x110)]=_0x5585b4,this[_0x105643(0x13c)]['length']=0x0;}[_0x2744d9(0x14e)](_0x536378){const _0x3ef4ab={_0x3549ad:0x156},_0x136cc9=_0x2744d9;return subscribe(this[_0x136cc9(_0x3ef4ab._0x3549ad)],_0x536378);}[_0x2744d9(0x127)](_0x3f5946){const _0x53f61b={_0x1cb35b:0x16f,_0x3e2e73:0x15c,_0x23eb57:0x121,_0x5c12b9:0x156},_0x1bfc9d=_0x2744d9,_0x1b8212=this[_0x1bfc9d(_0x53f61b._0x1cb35b)]+_0x1bfc9d(0x132)+this[_0x1bfc9d(_0x53f61b._0x3e2e73)][_0x1bfc9d(0x163)],_0xf77111=new FakePage(this[_0x1bfc9d(0x123)],this[_0x1bfc9d(_0x53f61b._0x23eb57)],_0x1b8212,_0x3f5946);this[_0x1bfc9d(0x15c)][_0x1bfc9d(0xf7)](_0xf77111);const _0x21edf9=this['pageList']['length']-0x1;for(const _0x4db783 of this[_0x1bfc9d(_0x53f61b._0x5c12b9)]){try{_0x4db783({'index':_0x21edf9,'url':_0x3f5946});}catch{}}return _0x21edf9;}[_0x2744d9(0x13d)](_0x45bd76){const _0x3e8ba6={_0x53c357:0x163,_0x52aeee:0x15c,_0x3e60ee:0x14d},_0x4f3e19=_0x2744d9;if(_0x45bd76<0x0||_0x45bd76>=this[_0x4f3e19(0x15c)][_0x4f3e19(_0x3e8ba6._0x53c357)])throw new DriverError('page\x20index\x20out\x20of\x20range',{'index':_0x45bd76,'available':this['pageList']['length']});this[_0x4f3e19(_0x3e8ba6._0x52aeee)][_0x4f3e19(_0x3e8ba6._0x3e60ee)](_0x45bd76,0x1);}async[_0x2744d9(0x11e)](_0x39758c){const _0x5bcaa5={_0x24de1c:0xfe,_0x380cb1:0x163},_0xc26018=_0x2744d9;this['record'](_0xc26018(0x11e),[_0x39758c]);if(!_0x39758c[_0xc26018(_0x5bcaa5._0x24de1c)][_0xc26018(_0x5bcaa5._0x380cb1)])throw new LocatorError(_0xc26018(0x120),{'locator':_0x39758c});this[_0xc26018(0x13c)][_0xc26018(0xf7)](_0x39758c);}async[_0x2744d9(0x154)](){const _0x3b518b={_0x5628a1:0x12c,_0x3e7197:0x13c,_0x566d69:0x163},_0x59c2cf=_0x2744d9;this[_0x59c2cf(_0x3b518b._0x5628a1)]('exitFrame',[]);if(this[_0x59c2cf(_0x3b518b._0x3e7197)][_0x59c2cf(_0x3b518b._0x566d69)]===0x0)throw new DriverError(_0x59c2cf(0x149),{});this[_0x59c2cf(0x13c)]['pop']();}async['setLocalStorage'](_0x6916b1,_0x402c2a){const _0x2d1acf={_0x3e19f0:0x12c,_0x95ab15:0x158},_0x43b6ca=_0x2744d9;this[_0x43b6ca(_0x2d1acf._0x3e19f0)]('setLocalStorage',[_0x6916b1,_0x402c2a]),this[_0x43b6ca(_0x2d1acf._0x95ab15)][_0x6916b1]=_0x402c2a;}async[_0x2744d9(0x10c)](_0x36eb97){const _0xc2a0da={_0x5a0b6a:0x12c},_0x23a3c9=_0x2744d9;return this[_0x23a3c9(_0xc2a0da._0x5a0b6a)](_0x23a3c9(0x10c),[_0x36eb97]),this[_0x23a3c9(0x158)][_0x36eb97]??null;}async[_0x2744d9(0x102)](_0xf84c33,_0x42b4d1,_0xf5a4fa){this['record']('setCookie',[_0xf84c33,_0x42b4d1,_0xf5a4fa]),this['cookieState'][_0xf84c33]=_0x42b4d1;}async[_0x2744d9(0x144)](_0x26b696){const _0x431f69={_0x2ca6ad:0x11b},_0xe6d61c=_0x2744d9;return this['record']('getCookie',[_0x26b696]),this[_0xe6d61c(_0x431f69._0x2ca6ad)][_0x26b696]??null;}async['saveStorageState'](_0x4dabb8){const _0x30d2f0={_0x15b1c9:0x157},_0x40438c=_0x2744d9;this['record'](_0x40438c(_0x30d2f0._0x15b1c9),[_0x4dabb8]);}async[_0x2744d9(0x124)](_0x3fc5ec){const _0x1cb4ee={_0x209f41:0x12c},_0xd3b58d=_0x2744d9;return this[_0xd3b58d(_0x1cb4ee._0x209f41)]('evaluate',[_0x3fc5ec]),void 0x0;}async['close'](){const _0x4fe5bc={_0x499098:0x12c,_0x121da2:0x16a},_0xa50dff=_0x2744d9;this[_0xa50dff(_0x4fe5bc._0x499098)](_0xa50dff(_0x4fe5bc._0x121da2),[]);}[_0x2744d9(0x14b)](){const _0x10ce59=_0x2744d9;return this[_0x10ce59(0x13c)]['length'];}},FakeWebDriver=class{constructor(_0x1940fc={}){const _0x430d10={_0x198b2c:0x121,_0x46805e:0x123},_0x43a9da=_0x2744d9;this[_0x43a9da(_0x430d10._0x198b2c)]=_0x1940fc,this[_0x43a9da(_0x430d10._0x46805e)]=createRecorder();}[_0x2744d9(0x121)];static{__name(this,_0x2744d9(0x16e));}[_0x2744d9(0x11d)]=![];[_0x2744d9(0x123)];[_0x2744d9(0x14f)]=[];async[_0x2744d9(0x15e)](_0x360794){const _0x16f928={_0x2daba5:0x15e,_0x2791ad:0x11d},_0x551ff2=_0x2744d9;this[_0x551ff2(0x123)]['push']({'scope':_0x551ff2(0x15f),'method':_0x551ff2(_0x16f928._0x2daba5),'args':[_0x360794]}),this[_0x551ff2(_0x16f928._0x2791ad)]=!![];}async[_0x2744d9(0x168)](_0x367b53){const _0x21b55d={_0x454f5c:0x123,_0x46d6c2:0xf7,_0x23ae84:0x123,_0xbb3741:0x14f},_0xf3c93c=_0x2744d9;this[_0xf3c93c(_0x21b55d._0x454f5c)][_0xf3c93c(_0x21b55d._0x46d6c2)]({'scope':_0xf3c93c(0x15f),'method':_0xf3c93c(0x168),'args':[_0x367b53]});if(!this[_0xf3c93c(0x11d)])throw new DriverError(_0xf3c93c(0x14a),{});const _0x33aa78=new FakeContext(this[_0xf3c93c(_0x21b55d._0x23ae84)],this['behavior'],_0xf3c93c(0x153)+this[_0xf3c93c(0x14f)][_0xf3c93c(0x163)]);return this[_0xf3c93c(_0x21b55d._0xbb3741)][_0xf3c93c(_0x21b55d._0x46d6c2)](_0x33aa78),_0x33aa78;}async['close'](){const _0x856c46={_0x1bf2ef:0x16a,_0x29b5dc:0x11d},_0x2a9264=_0x2744d9;this['recorder']['push']({'scope':_0x2a9264(0x15f),'method':_0x2a9264(_0x856c46._0x1bf2ef),'args':[]}),this[_0x2a9264(_0x856c46._0x29b5dc)]=![];}[_0x2744d9(0x15a)](){return void 0x0;}async[_0x2744d9(0x152)](){const _0xb45271={_0x12b557:0x111},_0x449f72=_0x2744d9;throw new DriverError(_0x449f72(_0xb45271._0x12b557),{});}[_0x2744d9(0x12a)](){const _0x324596={_0x3f674b:0x16c},_0x5a2d97=_0x2744d9;throw new DriverError(_0x5a2d97(_0x324596._0x3f674b),{});}[_0x2744d9(0x159)](){const _0x130a54={_0x10dbfa:0x123},_0x4e5cac=_0x2744d9;return this[_0x4e5cac(_0x130a54._0x10dbfa)]['calls']();}[_0x2744d9(0x13e)](_0x25f68){const _0x1c02ec=_0x2744d9;return this['recorder'][_0x1c02ec(0x159)]()[_0x1c02ec(0x13a)](_0x3e28e3=>_0x3e28e3[_0x1c02ec(0x104)]===_0x25f68);}};function _0x32ef(){const _0x16e0bc=['BMv3q29UDgv4Da','B3v0zxjive1m','y2XVC2u','Aw5PDgLHBfvYBa','yxr0ywnOrxHPC3rPBMCGBM90ihn1ChbVCNrLzcbIEsbgywTLv2vIrhjPDMvY','pgrPDIbKyxrHlxvUB3rLC3qTCMvMpsi','rMfRzvDLyKrYAxzLCG','C2nVCgu','AxnwAxnPyMXLqNLezwzHDwX0','rMfRzvbHz2u','ChvZAa','Aw5ZCgvJDevSzw1LBNq','CMvM','C2vSzwn0t3b0Aw9U','Cg9WDxbpBKnSAwnR','rhjPDMvYrxjYB3i','y2XPy2S','C3rLChm','D2fPDezVCK5HDMLNyxrPB24','Dgv4DenVBNrLBNq','D2fPDezVCKXVywrtDgf0zq','C2v0q29VA2LL','D2fPDezVCLvYBa','Bwv0Ag9K','AxnwAxnPyMXL','C3vIC2nYAwjL','zgvMAw5LuhjVCgvYDhK','zg91yMXLq2XPy2S','nta0nJK2nMfIzeL5DG','z29cywnR','DxjS','z2v0tg9JywXtDg9YywDL','mte2ndq5mMDpqvzHrq','BM8Gywn0AxzLihbHz2uGAw4Gy29UDgv4Da','y3vYCMvUDfvYBa','ywn0AxzLswr4','y29UBMvJDfnOyxjLzcbUB3qGC3vWCg9YDgvKigj5iezHA2vxzwjeCML2zxi','zMfRzs1WBMC','CMvSB2fK','A2LUza','nta2mdr4zNDoEhO','BMv0D29YA0vUDhjPzxm','zxjYB3jpBK5LEhrby3rPB24','nJa4ndbZELvZt2u','zMfRzsb0AxrSzq','y29UC29SzuvUDhjPzxm','y29VA2LLu3rHDgu','y291BNq','Bgf1BMnOzwq','zw50zxjgCMfTzq','AxneAxnHyMXLzej5rgvMyxvSDa','zw50zxjgCMfTzsbJywXSzwqGD2L0AcbLBxb0EsbSB2nHDg9Y','yMvOyxzPB3i','ywjVDxq6yMXHBMS','CMvJB3jKzxi','zxzHBhvHDgu','odCWnJGWmfvArNfvsq','iJ48l2rPDJ4','zw1PDezHA2vqB3b1Ca','odf4wLfws0i','CgfNzxm','yxr0ywnOrxHPC3rPBMC','ChjLC3m','CMvJB3jK','D2fPDezVCLrLEhq','Bg9JywXtDg9YywDL','DxbSB2fKrMLSzq','Aw5WDxrwywX1zuj5rgvMyxvSDa','AxneAxnHyMXLza','lNbHz2u','Dw5JAgvJAW','BMfTzq','Dgv4DenVBNrLBNrcEurLzMf1Bhq','zMLSBa','B25bzNrLCKnSAwnR','yxr0CMLIDxrLC0j5rgvMyxvSDa','y2HLy2TLzfn0yxrLqNLezwzHDwX0','zMLSDgvY','zwXLBwvUDeHPBNrcEvjLzG','zNjHBwvtDgfJAW','y2XVC2vgywTLugfNzq','y2fSBhngB3i','y2HLy2S','Bwf5yMvuAhjVDW','y2XPCgjVyxjKugfZDgu','y2HLy2TLzfn0yxrL','nJC4EvLlB3fe','z2v0q29VA2LL','ywn0AxzLugfNzq','z29gB3j3yxjK','zxzHBhvHDgvpBKXVy2f0B3i','zhjHz0fUzerYB3a','zxHPDezYyw1LignHBgXLzcb3AxrOig5VigzYyw1Lig9UihrOzsbZDgfJAW','BMv3q29UDgv4DcbJywXSzwqGyMvMB3jLigXHDw5JAcGP','zNjHBwvezxb0Aa','mte1Afjbyvjy','C3bSAwnL','B25ozxDqywDL','y29UDgv4Dhm','z290BW','C2nYB2XSsw50B1zPzxC','y29UBMvJDfnOyxjLza','y3r4','zxHPDezYyw1L','z2v0qxr0CMLIDxrL','BMv3ugfNzuXPC3rLBMvYCW','C2f2zvn0B3jHz2vtDgf0zq','Bg9JywXtDg9YywDLu3rHDgu','y2fSBhm','D3nfBMrWB2LUDa','pgrPDJ48l2rPDJ4','CgfNzuXPC3q','B3v0zxjiDg1SqNLszwy','Bgf1BMnO','zhjPDMvY','nJe4nZjzu2HcAxO','rMfRzunVBNrLEhq','zNjVBq','BgvUz3rO','y29VA2LLCW','mtKXoeXQzvzfqG','y291BNrcEurLzMf1Bhq','Aw5WDxrwywX1zq'];_0x32ef=function(){return _0x16e0bc;};return _0x32ef();}export{FakeWebDriver};
1
+ const _0x7a0933=_0x440a;(function(_0x594c07,_0x1c8224){const _0x52b488={_0x3ea6a2:0x163,_0x1dcb73:0x193,_0x4e5348:0x16c,_0x1261de:0x167,_0x2b3c1f:0x182},_0x4564bb=_0x440a,_0x4a5a8b=_0x594c07();while(!![]){try{const _0x11df7e=-parseInt(_0x4564bb(0x197))/0x1+parseInt(_0x4564bb(_0x52b488._0x3ea6a2))/0x2+parseInt(_0x4564bb(_0x52b488._0x1dcb73))/0x3*(-parseInt(_0x4564bb(0x1a3))/0x4)+parseInt(_0x4564bb(_0x52b488._0x4e5348))/0x5+parseInt(_0x4564bb(0x194))/0x6*(-parseInt(_0x4564bb(0x19b))/0x7)+-parseInt(_0x4564bb(_0x52b488._0x1261de))/0x8*(-parseInt(_0x4564bb(_0x52b488._0x2b3c1f))/0x9)+-parseInt(_0x4564bb(0x17c))/0xa;if(_0x11df7e===_0x1c8224)break;else _0x4a5a8b['push'](_0x4a5a8b['shift']());}catch(_0x527752){_0x4a5a8b['push'](_0x4a5a8b['shift']());}}}(_0x4bf1,0xeb972));var __defProp=Object[_0x7a0933(0x1a9)],__name=(_0x962db1,_0x11af7e)=>__defProp(_0x962db1,'name',{'value':_0x11af7e,'configurable':!![]});function subscribe(_0x1fdba8,_0x4e4bb3){const _0x850cc1=_0x7a0933;return _0x1fdba8[_0x850cc1(0x18d)](_0x4e4bb3),()=>{const _0x35272c=_0x850cc1;_0x1fdba8[_0x35272c(0x1d2)](_0x4e4bb3);};}__name(subscribe,_0x7a0933(0x1b6));import{UnotestError}from'@unotest/core';var DriverError=class extends UnotestError{static{__name(this,_0x7a0933(0x176));}},LocatorError=class extends UnotestError{static{__name(this,_0x7a0933(0x1cb));}};function _0x4bf1(){const _0x3947bb=['D3nfBMrWB2LUDa','rhjPDMvYrxjYB3i','Bwf5yMvuAhjVDW','Dw5JAgvJAW','C2f2zvn0B3jHz2vtDgf0zq','zxzHBhvHDgu','Bg9JywXtDg9YywDL','otG4mJmWwwrvzxz5','y29UDgv4Dhm','Dgv4DenVBNrLBNrcEurLzMf1Bhq','zxHPDezYyw1L','yxr0ywnOrxHPC3rPBMCGBM90ihn1ChbVCNrLzcbIEsbgywTLv2vIrhjPDMvY','Aw5ZCgvJDevSzw1LBNq','mJGXmtG0m2riz2vhuq','zw50zxjgCMfTzq','y29VA2LLu3rHDgu','Bgf1BMnO','yxr0CMLIDxrLC0j5rgvMyxvSDa','y29UBMvJDfnOyxjLza','DgL0Bgu','B3v0zxjiDg1SqNLszwy','zNjVBq','zMLSDgvY','BMv3ugfNzuXPC3rLBMvYCW','ywrK','C2v0q29VA2LL','y291BNrcEurLzMf1Bhq','ChvZAa','z2v0qxr0CMLIDxrL','ywn0AxzLugfNzq','ouTpAK9IzW','mJC4nJK4mMjWzLjYyG','z29gB3j3yxjK','D2fPDezVCG','nZGZotCWrgjZrwPe','y291BNq','y3r4','Cg9W','n21Pq2v6vW','B3v0zxjive1m','z2v0q29VA2LL','zxHPDezYyw1LignHBgXLzcb3AxrOig5VigzYyw1Lig9UihrOzsbZDgfJAW','y29UBMvJDfnOyxjLzcbUB3qGC3vWCg9YDgvKigj5iezHA2vxzwjeCML2zxi','y29VA2LLCW','zg91yMXLq2XPy2S','C2nYzwvUC2HVDa','mta4oty3mM9MzxjOzq','CMvSB2fK','B25bzNrLCKnSAwnR','Cg9WDxbpBKnSAwnR','y3vYCMvUDfvYBa','AxneAxnHyMXLzej5rgvMyxvSDa','zgvMAw5LuhjVCgvYDhK','rMfRzunVBNrLEhq','C3rLChm','CgfNzuXPC3q','zxjYB3jpBK5LEhrby3rPB24','y2XVC2vgywTLugfNzq','Ag92zxi','Bg9JywXtDg9YywDLu3rHDgu','zhjHz0fUzerYB3a','CMvJB3jK','zw1PDezHA2vqB3b1Ca','z2v0tg9JywXtDg9YywDL','ChjLC3m','C3vIC2nYAwjL','zxzHBhvHDgvpBKXVy2f0B3i','Bwv0Ag9K','DxjS','CMvJB3jKzxi','D2fPDezVCKXVywrtDgf0zq','y2HLy2TLzfn0yxrL','zNjHBwvtDgfJAW','Aw5PDgLHBfvYBa','C2vSzwn0t3b0Aw9U','rMfRzvbHz2u','y2XPy2S','pgrPDJ48l2rPDJ4','AxneAxnHyMXLza','zhjPDMvY','D2fPDezVCLrLEhq','C2v0qwn0AxzLugfNzq','BMv0D29YA0vUDhjPzxm','y2fSBhm','lNbHz2u','AxnwAxnPyMXL','tg9JyxrVCKvYCM9Y','y2fSBhngB3i','yMvOyxzPB3i','CgfNzsbPBMrLEcbVDxqGB2yGCMfUz2u','zMfRzsb0AxrSzq','ywn0AxzLswr4','CMvM','zgvSzxrL','y2XPCgjVyxjKugfZDgu','z29cywnR','B25ozxDqywDL','mZu2nJm3oeLhsxj3AW','C2nVCgu','zMLSBa','zwXLBwvUDeHPBNrcEvjLzG','mJrqzMHszKG','Bgf1BMnOzwq','Dgv4DenVBNrLBNq','y2HLy2S','D2fPDezVCLvYBa','mJa0nti2mgTys3HszG','DxbSB2fKrMLSzq','z290BW','BgvUz3rO','zNjHBwvezxb0Aa','BMv3q29UDgv4Da','D2fPDezVCK5HDMLNyxrPB24','y2XVC2u','ywjVDxq6yMXHBMS'];_0x4bf1=function(){return _0x3947bb;};return _0x4bf1();}function createRecorder(){const _0x1c88da={_0x449ac8:0x190},_0xc90fa6=_0x7a0933,_0x3f38c0=[];let _0x1d5681=0x0;return{'push':__name(_0x18c799=>_0x3f38c0[_0xc90fa6(0x190)]({..._0x18c799,'seq':_0x1d5681++}),_0xc90fa6(_0x1c88da._0x449ac8)),'calls':__name(()=>_0x3f38c0,'calls')};}__name(createRecorder,'createRecorder');var FakePage=class{constructor(_0x271a05,_0x55b5ae,_0x2a4655,_0x5d137e){const _0x442618={_0x67e071:0x1ba,_0x4b2ba8:0x164},_0x296ced=_0x7a0933;this[_0x296ced(_0x442618._0x67e071)]=_0x271a05,this['behavior']=_0x55b5ae,this[_0x296ced(_0x442618._0x4b2ba8)]=_0x2a4655,this['currentUrl']=_0x5d137e;}['recorder'];[_0x7a0933(0x1cd)];[_0x7a0933(0x164)];static{__name(this,_0x7a0933(0x1c0));}[_0x7a0933(0x1a7)];['onAfterClick'];[_0x7a0933(0x1b2)](_0x493b31,_0x113485){const _0x5909fc={_0x52584f:0x1ba},_0x3ed655=_0x7a0933;this[_0x3ed655(_0x5909fc._0x52584f)][_0x3ed655(0x190)]({'scope':this[_0x3ed655(0x164)],'method':_0x493b31,'args':_0x113485});}[_0x7a0933(0x177)](){const _0x4b9e8a={_0x159bfe:0x1cd,_0x74933f:0x1ad},_0x3dfbf9=_0x7a0933;if(this[_0x3dfbf9(0x1cd)][_0x3dfbf9(0x1ad)]){const _0x5781b8=this[_0x3dfbf9(_0x4b9e8a._0x159bfe)][_0x3dfbf9(_0x4b9e8a._0x74933f)];this['behavior'][_0x3dfbf9(_0x4b9e8a._0x74933f)]=void 0x0;throw _0x5781b8;}}[_0x7a0933(0x1b9)](){return this['currentUrl'];}async['title'](){const _0x3a0925={_0x2ac7d4:0x188},_0x208020=_0x7a0933;return this[_0x208020(0x1b2)](_0x208020(_0x3a0925._0x2ac7d4),[]),_0x208020(0x1cf);}async['click'](_0x26bc52,_0x4ae588){const _0xc5b7ac={_0x23b2f8:0x177,_0x257fbe:0x1a5},_0x99e210=_0x7a0933;this[_0x99e210(0x1b2)](_0x99e210(0x1c1),[_0x26bc52,_0x4ae588]),this[_0x99e210(_0xc5b7ac._0x23b2f8)](),this[_0x99e210(_0xc5b7ac._0x257fbe)]?.();}async[_0x7a0933(0x1a1)](_0x3dd882,_0x15f14b){const _0x564770={_0x8a510f:0x1b2},_0x55edbd=_0x7a0933;this[_0x55edbd(_0x564770._0x8a510f)](_0x55edbd(0x1a1),[_0x3dd882,_0x15f14b]),this['maybeThrow']();}async[_0x7a0933(0x165)](_0x179ee6,_0x5cfbff,_0x560c3b){const _0x5ac622={_0x6dc1a1:0x165,_0x457e32:0x177},_0x1280a9=_0x7a0933;this[_0x1280a9(0x1b2)](_0x1280a9(_0x5ac622._0x6dc1a1),[_0x179ee6,_0x5cfbff,_0x560c3b]),this[_0x1280a9(_0x5ac622._0x457e32)]();}async[_0x7a0933(0x1b5)](_0x4877e9,_0x127683,_0x4dd527){const _0x23c16b={_0xdb0795:0x1b2},_0x2405b0=_0x7a0933;this[_0x2405b0(_0x23c16b._0xdb0795)](_0x2405b0(0x1b5),[_0x4877e9,_0x127683,_0x4dd527]),this[_0x2405b0(0x177)]();}async['check'](_0x3891f3,_0x53a48c){const _0x58f08b={_0x57cc8e:0x1b2,_0x194047:0x16a,_0x2d99ac:0x177},_0x4e93ac=_0x7a0933;this[_0x4e93ac(_0x58f08b._0x57cc8e)](_0x4e93ac(_0x58f08b._0x194047),[_0x3891f3,_0x53a48c]),this[_0x4e93ac(_0x58f08b._0x2d99ac)]();}async[_0x7a0933(0x178)](_0x1a5810,_0x2b7b63){const _0x1e7600=_0x7a0933;this[_0x1e7600(0x1b2)](_0x1e7600(0x178),[_0x1a5810,_0x2b7b63]),this['maybeThrow']();}async[_0x7a0933(0x1bf)](_0x4f40a8,_0x756413,_0x3c0741){const _0x5c1f6c=_0x7a0933;this[_0x5c1f6c(0x1b2)](_0x5c1f6c(0x1bf),[_0x4f40a8,_0x756413,_0x3c0741]),this['maybeThrow']();}async[_0x7a0933(0x1af)](_0x550380,_0x2722b5){const _0x4b0423=_0x7a0933;this['record'](_0x4b0423(0x1af),[_0x550380,_0x2722b5]),this[_0x4b0423(0x177)]();}async['scrollIntoView'](_0x2d0134){const _0x4ece83={_0x3e0374:0x177},_0x35f012=_0x7a0933;this['record']('scrollIntoView',[_0x2d0134]),this[_0x35f012(_0x4ece83._0x3e0374)]();}async[_0x7a0933(0x1b1)](_0x470e81,_0x56fcd1,_0xc38555){const _0x5cb475={_0x4132c2:0x1b1,_0x46daea:0x177},_0x52412a=_0x7a0933;this[_0x52412a(0x1b2)](_0x52412a(_0x5cb475._0x4132c2),[_0x470e81,_0x56fcd1,_0xc38555]),this[_0x52412a(_0x5cb475._0x46daea)]();}async['uploadFile'](_0x170742,_0xcec988){const _0x1b141b=_0x7a0933;this[_0x1b141b(0x1b2)](_0x1b141b(0x16d),[_0x170742,_0xcec988]),this['maybeThrow']();}async['clipboardPaste'](_0x4b49f,_0x5b3a59){const _0x41ab91={_0xcdca68:0x1b2,_0x4951d8:0x1d3},_0x3d513b=_0x7a0933;this[_0x3d513b(_0x41ab91._0xcdca68)](_0x3d513b(_0x41ab91._0x4951d8),[_0x4b49f,_0x5b3a59]),this[_0x3d513b(0x177)]();}async[_0x7a0933(0x198)](_0x3bf283){const _0x1d9a45={_0x176877:0x1b2,_0x446624:0x1cd,_0x196121:0x18f},_0x4ce7a1=_0x7a0933;return this[_0x4ce7a1(_0x1d9a45._0x176877)](_0x4ce7a1(0x198),[_0x3bf283]),this[_0x4ce7a1(_0x1d9a45._0x446624)][_0x4ce7a1(_0x1d9a45._0x196121)]??0x1;}async['textContent'](_0x154c6f){const _0x44ab38={_0x6969a3:0x17e},_0x424992=_0x7a0933;return this[_0x424992(0x1b2)](_0x424992(0x169),[_0x154c6f]),this[_0x424992(0x1cd)][_0x424992(_0x44ab38._0x6969a3)]??'';}async['inputValue'](_0x74db80){const _0x3bdbc8={_0x58ba72:0x1b2,_0x57ae52:0x1cd},_0x44349a=_0x7a0933;return this[_0x44349a(_0x3bdbc8._0x58ba72)]('inputValue',[_0x74db80]),this[_0x44349a(_0x3bdbc8._0x57ae52)]['inputValueByDefault']??'';}async[_0x7a0933(0x1bc)](_0x50f143){const _0xca0b4d={_0x13cb10:0x1bc},_0x37a7bf=_0x7a0933;return this['record'](_0x37a7bf(_0xca0b4d._0x13cb10),[_0x50f143]),this['behavior']['checkedStateByDefault']??null;}async['isVisible'](_0x2c8d21){const _0x14c874={_0xa91be9:0x1cd},_0x5f34ed=_0x7a0933;return this[_0x5f34ed(0x1b2)](_0x5f34ed(0x1ca),[_0x2c8d21]),this[_0x5f34ed(_0x14c874._0xa91be9)]['isVisibleByDefault']??!![];}async[_0x7a0933(0x1c3)](_0xcffa63){const _0x415e96={_0x3fe1f2:0x1b2,_0x356042:0x1c3},_0x53e0ca=_0x7a0933;return this[_0x53e0ca(_0x415e96._0x3fe1f2)](_0x53e0ca(_0x415e96._0x356042),[_0xcffa63]),this['behavior'][_0x53e0ca(0x1a8)]??![];}async[_0x7a0933(0x191)](_0x231d3b,_0xd35877){const _0x1eeb80={_0x571f35:0x1b2},_0x529667=_0x7a0933;return this[_0x529667(_0x1eeb80._0x571f35)]('getAttribute',[_0x231d3b,_0xd35877]),this[_0x529667(0x1cd)][_0x529667(0x186)]?.[_0xd35877]??null;}async[_0x7a0933(0x196)](_0x56f7a7,_0x169030){const _0x143b4b={_0x2ae24c:0x196},_0x4d671c=_0x7a0933;this[_0x4d671c(0x1b2)](_0x4d671c(_0x143b4b._0x2ae24c),[_0x56f7a7,_0x169030]);}async[_0x7a0933(0x16b)](_0x2d9b30,_0x8d2b58){const _0x4a2288=_0x7a0933;this[_0x4a2288(0x1b2)]('waitForUrl',[_0x2d9b30,_0x8d2b58]);}async[_0x7a0933(0x1c5)](_0x41f15d,_0x28587f){const _0x2bbcec={_0x3ba2b4:0x1b2},_0x10cc7e=_0x7a0933;this[_0x10cc7e(_0x2bbcec._0x3ba2b4)](_0x10cc7e(0x1c5),[_0x41f15d,_0x28587f]);}async[_0x7a0933(0x172)](_0x1ee508){const _0x3ab1d3=_0x7a0933;this[_0x3ab1d3(0x1b2)](_0x3ab1d3(0x172),[_0x1ee508]);}async[_0x7a0933(0x1bb)](_0x17b686,_0x1c391d){const _0x120294=_0x7a0933;this[_0x120294(0x1b2)](_0x120294(0x1bb),[_0x17b686,_0x1c391d]);}async[_0x7a0933(0x16e)](_0x293c96,_0x3a514a){const _0x516777=_0x7a0933;this[_0x516777(0x1b2)](_0x516777(0x16e),[_0x293c96,_0x3a514a]),this[_0x516777(0x1a7)]=_0x293c96;}async[_0x7a0933(0x1a4)](_0x49b328){const _0x438121={_0x520267:0x1b2,_0xf69845:0x1a4},_0x17b795=_0x7a0933;this[_0x17b795(_0x438121._0x520267)](_0x17b795(_0x438121._0xf69845),[_0x49b328]);}async[_0x7a0933(0x1d4)](_0x531e61){const _0x29f6aa={_0x54b173:0x1b2},_0x458dd1=_0x7a0933;this[_0x458dd1(_0x29f6aa._0x54b173)]('goBack',[_0x531e61]);}async[_0x7a0933(0x195)](_0x243554){const _0xb271c8={_0x46081a:0x195},_0x85dca4=_0x7a0933;this['record'](_0x85dca4(_0xb271c8._0x46081a),[_0x243554]);}async[_0x7a0933(0x17a)](_0x3cb83f){const _0x4fced9={_0x383351:0x1b2},_0x3841e3=_0x7a0933;return this[_0x3841e3(_0x4fced9._0x383351)](_0x3841e3(0x17a),[_0x3cb83f]),void 0x0;}async[_0x7a0933(0x1b7)](_0x29434f,_0x36dc8a){const _0x362446={_0x38345e:0x1b7},_0x9f203b=_0x7a0933;return this['record'](_0x9f203b(_0x362446._0x38345e),[_0x29434f,_0x36dc8a]),void 0x0;}async[_0x7a0933(0x181)](_0x1ca755){const _0x5b4e3b={_0x4fa835:0x1ab,_0x2f6bce:0x1cd,_0x379264:0x166},_0x27f2d6=_0x7a0933;this['record']('inspectElement',[_0x1ca755]);if(_0x1ca755[_0x27f2d6(0x1ab)][_0x27f2d6(0x16f)]!==0x1||_0x1ca755[_0x27f2d6(_0x5b4e3b._0x4fa835)][0x0]['kind']!=='ref')return null;const _0x476568=_0x1ca755[_0x27f2d6(0x1ab)][0x0][_0x27f2d6(0x1d1)],_0x24c87e=this[_0x27f2d6(_0x5b4e3b._0x2f6bce)][_0x27f2d6(_0x5b4e3b._0x379264)]?.[_0x476568];return _0x24c87e??null;}async[_0x7a0933(0x1a2)](_0x3accde){const _0xb33f3a=_0x7a0933;return this['record'](_0xb33f3a(0x1a2),[_0x3accde]),Buffer[_0xb33f3a(0x18a)]('fake-png');}async[_0x7a0933(0x19c)](_0x1f2123){const _0x284d50={_0x16fc33:0x16f},_0x287100=_0x7a0933;this['record']('outerHTML',[_0x1f2123]);if(_0x1f2123[_0x287100(0x1ab)][_0x287100(_0x284d50._0x16fc33)]===0x1&&_0x1f2123[_0x287100(0x1ab)][0x0]['kind']==='ref'){const _0x47ce78=_0x1f2123[_0x287100(0x1ab)][0x0][_0x287100(0x1d1)];return this[_0x287100(0x1cd)][_0x287100(0x189)]?.[_0x47ce78]??'<div\x20data-unotest-ref=\x22'+_0x47ce78+'\x22></div>';}return _0x287100(0x1c2);}},FakeContext=class{constructor(_0x354287,_0x254b97,_0x5c92e7){const _0x5ac958={_0xbbe951:0x1ba,_0x2cf86a:0x1cd,_0x34bba2:0x1be,_0x34e54b:0x174,_0xfd12d6:0x1ac,_0x24c1c8:0x17b,_0x191c5b:0x184,_0x367fc1:0x1a0},_0x3fb672=_0x7a0933;this[_0x3fb672(_0x5ac958._0xbbe951)]=_0x354287,this[_0x3fb672(_0x5ac958._0x2cf86a)]=_0x254b97,this['scope']=_0x5c92e7;const _0x2f8316=new FakePage(_0x354287,_0x254b97,_0x5c92e7+'.page0',_0x254b97[_0x3fb672(_0x5ac958._0x34bba2)]??_0x3fb672(_0x5ac958._0x34e54b));_0x254b97['popupOnClick']&&(_0x2f8316[_0x3fb672(0x1a5)]=()=>{const _0xfb624f=_0x3fb672;this[_0xfb624f(0x1b3)](_0x254b97[_0xfb624f(0x1a6)]);}),this[_0x3fb672(_0x5ac958._0xfd12d6)]=[_0x2f8316],this[_0x3fb672(0x1b0)]={..._0x254b97[_0x3fb672(_0x5ac958._0x24c1c8)]??{}},this[_0x3fb672(_0x5ac958._0x191c5b)]={..._0x254b97[_0x3fb672(_0x5ac958._0x367fc1)]??{}};}[_0x7a0933(0x1ba)];[_0x7a0933(0x1cd)];[_0x7a0933(0x164)];static{__name(this,_0x7a0933(0x1aa));}[_0x7a0933(0x1ac)];[_0x7a0933(0x1d0)]=0x0;[_0x7a0933(0x1bd)]=[];[_0x7a0933(0x1b0)];['cookieState'];[_0x7a0933(0x18c)]=new Set();['record'](_0x453aa1,_0x3a7e7a){const _0x271b86={_0xabe298:0x1ba},_0xd41675=_0x7a0933;this[_0xd41675(_0x271b86._0xabe298)][_0xd41675(0x190)]({'scope':this[_0xd41675(0x164)],'method':_0x453aa1,'args':_0x3a7e7a});}['pages'](){return this['pageList'];}[_0x7a0933(0x192)](){const _0x3802f3={_0xd4865b:0x1ac,_0x27caf8:0x1d0},_0x4c451e=_0x7a0933,_0x1df0e5=this[_0x4c451e(_0x3802f3._0xd4865b)][this[_0x4c451e(_0x3802f3._0x27caf8)]];if(!_0x1df0e5)throw new DriverError('no\x20active\x20page\x20in\x20context',{'activeIdx':this[_0x4c451e(0x1d0)]});return _0x1df0e5;}['consoleEntries'](){const _0x475f36=_0x7a0933;return this[_0x475f36(0x1cd)]['consoleEntries']??[];}['networkEntries'](){const _0x5a6850=_0x7a0933;return this[_0x5a6850(0x1cd)][_0x5a6850(0x1c7)]??[];}async[_0x7a0933(0x1c6)](_0x3a8b67){const _0x5334ae={_0x4d6569:0x1b2,_0x4e7341:0x1ac,_0x3fd106:0x16f,_0x369501:0x1ac,_0x54ceda:0x1d0},_0x18551f=_0x7a0933;this[_0x18551f(_0x5334ae._0x4d6569)](_0x18551f(0x1c6),[_0x3a8b67]);if(_0x3a8b67<0x0||_0x3a8b67>=this[_0x18551f(_0x5334ae._0x4e7341)][_0x18551f(_0x5334ae._0x3fd106)])throw new DriverError(_0x18551f(0x1ce),{'index':_0x3a8b67,'available':this[_0x18551f(_0x5334ae._0x369501)][_0x18551f(0x16f)]});this[_0x18551f(_0x5334ae._0x54ceda)]=_0x3a8b67,this[_0x18551f(0x1bd)][_0x18551f(_0x5334ae._0x3fd106)]=0x0;}[_0x7a0933(0x162)](_0x171e68){return subscribe(this['newPageListeners'],_0x171e68);}['emitFakePopup'](_0x4bf6cc){const _0x6c3f8e={_0x15731a:0x164,_0x388e38:0x1c9,_0x1c70de:0x1ac,_0x2e10d3:0x16f,_0x205df3:0x1cd,_0x4005bd:0x1ac},_0x52fa17=_0x7a0933,_0x510aef=this[_0x52fa17(_0x6c3f8e._0x15731a)]+_0x52fa17(_0x6c3f8e._0x388e38)+this[_0x52fa17(_0x6c3f8e._0x1c70de)][_0x52fa17(_0x6c3f8e._0x2e10d3)],_0x393c45=new FakePage(this[_0x52fa17(0x1ba)],this[_0x52fa17(_0x6c3f8e._0x205df3)],_0x510aef,_0x4bf6cc);this[_0x52fa17(_0x6c3f8e._0x4005bd)]['push'](_0x393c45);const _0x322772=this[_0x52fa17(0x1ac)][_0x52fa17(0x16f)]-0x1;for(const _0x40dcfd of this['newPageListeners']){try{_0x40dcfd({'index':_0x322772,'url':_0x4bf6cc});}catch{}}return _0x322772;}[_0x7a0933(0x1ae)](_0x45b008){const _0x16497c={_0x3ce9ed:0x1ce,_0x1c40c8:0x1ac},_0x28fe73=_0x7a0933;if(_0x45b008<0x0||_0x45b008>=this[_0x28fe73(0x1ac)][_0x28fe73(0x16f)])throw new DriverError(_0x28fe73(_0x16497c._0x3ce9ed),{'index':_0x45b008,'available':this['pageList']['length']});this[_0x28fe73(_0x16497c._0x1c40c8)]['splice'](_0x45b008,0x1);}async['enterFrame'](_0x5d502b){const _0x58bebe={_0x422cfb:0x183,_0x1d0b20:0x1ab},_0x386295=_0x7a0933;this['record'](_0x386295(_0x58bebe._0x422cfb),[_0x5d502b]);if(!_0x5d502b[_0x386295(_0x58bebe._0x1d0b20)][_0x386295(0x16f)])throw new LocatorError('enterFrame\x20called\x20with\x20empty\x20locator',{'locator':_0x5d502b});this['frameStack'][_0x386295(0x190)](_0x5d502b);}async[_0x7a0933(0x17f)](){const _0x17adcf={_0x279f3c:0x19e,_0x50d61c:0x19a},_0x396d73=_0x7a0933;this['record'](_0x396d73(0x17f),[]);if(this['frameStack'][_0x396d73(0x16f)]===0x0)throw new DriverError(_0x396d73(_0x17adcf._0x279f3c),{});this['frameStack'][_0x396d73(_0x17adcf._0x50d61c)]();}async['setLocalStorage'](_0x1b3779,_0x548f9f){const _0x40d4da={_0x537f8a:0x1b0},_0x1d43fe=_0x7a0933;this[_0x1d43fe(0x1b2)]('setLocalStorage',[_0x1b3779,_0x548f9f]),this[_0x1d43fe(_0x40d4da._0x537f8a)][_0x1b3779]=_0x548f9f;}async[_0x7a0933(0x1b4)](_0x2ef722){const _0x51b5ee={_0x102714:0x1b2},_0x116487=_0x7a0933;return this[_0x116487(_0x51b5ee._0x102714)](_0x116487(0x1b4),[_0x2ef722]),this[_0x116487(0x1b0)][_0x2ef722]??null;}async[_0x7a0933(0x18e)](_0x25ca6c,_0x35b34c,_0x166917){const _0x3c1a38=_0x7a0933;this['record'](_0x3c1a38(0x18e),[_0x25ca6c,_0x35b34c,_0x166917]),this['cookieState'][_0x25ca6c]=_0x35b34c;}async['getCookie'](_0xb43db0){const _0x153fec={_0x295f13:0x19d},_0x5ef9a2=_0x7a0933;return this['record'](_0x5ef9a2(_0x153fec._0x295f13),[_0xb43db0]),this[_0x5ef9a2(0x184)][_0xb43db0]??null;}async[_0x7a0933(0x179)](_0x45c65a){const _0x22baf6={_0x465ed0:0x1b2},_0x5e6f14=_0x7a0933;this[_0x5e6f14(_0x22baf6._0x465ed0)]('saveStorageState',[_0x45c65a]);}async[_0x7a0933(0x17a)](_0x3de16d){const _0x116eb9={_0x927707:0x1b2,_0x242573:0x17a},_0xc477b8=_0x7a0933;return this[_0xc477b8(_0x116eb9._0x927707)](_0xc477b8(_0x116eb9._0x242573),[_0x3de16d]),void 0x0;}async[_0x7a0933(0x173)](){const _0x35f539={_0x306227:0x1b2},_0x4d1c00=_0x7a0933;this[_0x4d1c00(_0x35f539._0x306227)]('close',[]);}[_0x7a0933(0x170)](){const _0x6f991e=_0x7a0933;return this[_0x6f991e(0x1bd)]['length'];}},FakeWebDriver=class{constructor(_0x3870f5={}){const _0x4471d1={_0x1a300b:0x1ba},_0x46b688=_0x7a0933;this['behavior']=_0x3870f5,this[_0x46b688(_0x4471d1._0x1a300b)]=createRecorder();}[_0x7a0933(0x1cd)];static{__name(this,'FakeWebDriver');}['launched']=![];[_0x7a0933(0x1ba)];['contexts']=[];async[_0x7a0933(0x185)](_0x4f2bc3){const _0x139b27={_0x2e79eb:0x185},_0x5cd387=_0x7a0933;this[_0x5cd387(0x1ba)][_0x5cd387(0x190)]({'scope':'driver','method':_0x5cd387(_0x139b27._0x2e79eb),'args':[_0x4f2bc3]}),this['launched']=!![];}async['newContext'](_0x19019b){const _0x344590={_0x3383d7:0x171,_0x279bb6:0x168,_0x17280b:0x199,_0x375354:0x17d,_0x303eb5:0x16f},_0x213045=_0x7a0933;this['recorder'][_0x213045(0x190)]({'scope':'driver','method':_0x213045(_0x344590._0x3383d7),'args':[_0x19019b]});if(!this[_0x213045(_0x344590._0x279bb6)])throw new DriverError('newContext\x20called\x20before\x20launch()',{});const _0x2bc605=new FakeContext(this[_0x213045(0x1ba)],this['behavior'],_0x213045(_0x344590._0x17280b)+this[_0x213045(_0x344590._0x375354)][_0x213045(_0x344590._0x303eb5)]);return this['contexts']['push'](_0x2bc605),_0x2bc605;}async['close'](){const _0x3bcf3c={_0x4b19b2:0x1c4,_0xcae4bf:0x168},_0x455290=_0x7a0933;this['recorder'][_0x455290(0x190)]({'scope':_0x455290(_0x3bcf3c._0x4b19b2),'method':'close','args':[]}),this[_0x455290(_0x3bcf3c._0xcae4bf)]=![];}[_0x7a0933(0x175)](){return void 0x0;}async[_0x7a0933(0x187)](){const _0x875285={_0x2fd09e:0x19f},_0x4b8d67=_0x7a0933;throw new DriverError(_0x4b8d67(_0x875285._0x2fd09e),{});}['attachExisting'](){const _0x3d4562={_0x5d3810:0x180},_0x3aae8f=_0x7a0933;throw new DriverError(_0x3aae8f(_0x3d4562._0x5d3810),{});}[_0x7a0933(0x1c8)](){const _0x1c226d={_0x107032:0x1ba,_0x50ce66:0x1c8},_0x1a2021=_0x7a0933;return this[_0x1a2021(_0x1c226d._0x107032)][_0x1a2021(_0x1c226d._0x50ce66)]();}[_0x7a0933(0x1cc)](_0x390ab7){const _0x334ff1={_0x3b5eab:0x1ba,_0x4f6d27:0x1c8},_0x35a2c1=_0x7a0933;return this[_0x35a2c1(_0x334ff1._0x3b5eab)][_0x35a2c1(_0x334ff1._0x4f6d27)]()[_0x35a2c1(0x18b)](_0x5d820f=>_0x5d820f[_0x35a2c1(0x1b8)]===_0x390ab7);}};function _0x440a(_0x5e85e3,_0x389b6c){_0x5e85e3=_0x5e85e3-0x162;const _0x4bf198=_0x4bf1();let _0x440a29=_0x4bf198[_0x5e85e3];if(_0x440a['WIgSSK']===undefined){var _0x518c42=function(_0x53c32b){const _0x3c6ec4='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x962db1='',_0x11af7e='';for(let _0x1fdba8=0x0,_0x4e4bb3,_0x3f38c0,_0x1d5681=0x0;_0x3f38c0=_0x53c32b['charAt'](_0x1d5681++);~_0x3f38c0&&(_0x4e4bb3=_0x1fdba8%0x4?_0x4e4bb3*0x40+_0x3f38c0:_0x3f38c0,_0x1fdba8++%0x4)?_0x962db1+=String['fromCharCode'](0xff&_0x4e4bb3>>(-0x2*_0x1fdba8&0x6)):0x0){_0x3f38c0=_0x3c6ec4['indexOf'](_0x3f38c0);}for(let _0x18c799=0x0,_0x271a05=_0x962db1['length'];_0x18c799<_0x271a05;_0x18c799++){_0x11af7e+='%'+('00'+_0x962db1['charCodeAt'](_0x18c799)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x11af7e);};_0x440a['LoceJl']=_0x518c42,_0x440a['FWtZcV']={},_0x440a['WIgSSK']=!![];}const _0x25a815=_0x4bf198[0x0],_0x1b5f11=_0x5e85e3+_0x25a815,_0x51ff8b=_0x440a['FWtZcV'][_0x1b5f11];return!_0x51ff8b?(_0x440a29=_0x440a['LoceJl'](_0x440a29),_0x440a['FWtZcV'][_0x1b5f11]=_0x440a29):_0x440a29=_0x51ff8b,_0x440a29;}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;