@unotest/web 0.22.0 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,135 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.24.0] - 2026-08-26
4
+
5
+ ### Minor Changes
6
+
7
+ - Judge: rendered text, one env namespace, preamble and majority vote.
8
+
9
+ **Breaking (judge env, no aliases).** Every `JUDGE_*` variable of the
10
+ `@unotest/judge` service is now `UNOTEST_JUDGE_*`, matching the client-side
11
+ names `@unotest/web` already used. `@unotest/judge` shipped a day before
12
+ this change with no known installs outside the monorepo, so the rename lands
13
+ without a deprecation window — the window would never be cheaper. Migration:
14
+
15
+ | Old | New |
16
+ | --------------------------- | ------------------------------------------- |
17
+ | `JUDGE_PROVIDER` | `UNOTEST_JUDGE_PROVIDER` |
18
+ | `JUDGE_MODEL` | `UNOTEST_JUDGE_MODEL` |
19
+ | `JUDGE_RETRIES` | `UNOTEST_JUDGE_RETRIES` |
20
+ | `JUDGE_TIMEOUT_MS` | `UNOTEST_JUDGE_CALL_TIMEOUT_MS` |
21
+ | `JUDGE_ACCESS_TOKEN` | `UNOTEST_JUDGE_ACCESS_TOKEN` |
22
+ | `JUDGE_CLAUDE_BIN` | `UNOTEST_JUDGE_CLAUDE_BIN` |
23
+ | `JUDGE_HOST` / `JUDGE_PORT` | `UNOTEST_JUDGE_HOST` / `UNOTEST_JUDGE_PORT` |
24
+ | `JUDGE_TOKEN` | `UNOTEST_JUDGE_TOKEN` |
25
+
26
+ Two names were deliberately not a straight prefixing. The service's per-call
27
+ budget became `UNOTEST_JUDGE_CALL_TIMEOUT_MS` because `UNOTEST_JUDGE_TIMEOUT_MS`
28
+ was already taken by the client's whole-request budget — same family, different
29
+ question. And the service's bearer token merged into the client's
30
+ `UNOTEST_JUDGE_TOKEN`: it is one secret, and in a shared overlay the two ends
31
+ have to carry the same value anyway.
32
+
33
+ **Behavioral fix: rendered text.** `assertJudge` and the DSL query
34
+ `getInnerText(loc)` now read `innerText`, not `textContent`. Both promised
35
+ rendered text and delivered the raw source-order concatenation: line breaks
36
+ gone, `display:none` subtrees and `<script>` contents folded in. A rubric
37
+ about structure ("the answer is three bullets") was unjudgeable, and
38
+ `getInnerText` returned text no user can see. Scenarios that relied on
39
+ hidden text reaching these two functions will now see it excluded.
40
+
41
+ **Vertex fixes.** `google-auth-library` moved from optional peer to a regular
42
+ dependency: as a peer it did not resolve under `npx @unotest/judge` at all,
43
+ which broke the advertised keyless path for anyone who never installs the
44
+ package locally. It is still loaded lazily, so non-vertex runs pay nothing.
45
+ Expired Application Default Credentials now produce
46
+ "run `gcloud auth application-default login`" instead of a raw Google OAuth
47
+ blob, read off the structured response body rather than message text.
48
+
49
+ **New: `UNOTEST_JUDGE_PREAMBLE`** (web side) — text prepended to every rubric
50
+ in the project, for standing context ("the app under test is a support bot,
51
+ Russian UI") that would otherwise be copy-pasted into each rubric. It applies
52
+ in both local and remote mode; a remote judge stays project-agnostic.
53
+
54
+ **New: `UNOTEST_JUDGE_VOTE=N`** (service side, odd N, default 1 = off) — N
55
+ independent calls decided by majority. It replaces `UNOTEST_JUDGE_RETRIES`
56
+ rather than stacking with it: re-asking is a deliberate bias toward `pass`,
57
+ a vote is deliberately symmetric, and running both would quietly restore the
58
+ bias the vote was chosen to remove. Ballots run concurrently, so a vote costs
59
+ N provider calls but roughly one call of wall-clock.
60
+
61
+ **Wire protocol.** New error code `config` on the judge's error responses:
62
+ the service's own setup is broken (bad env, expired credentials) and the
63
+ message carries the fix. `@unotest/web` surfaces it as a `ConfigError`
64
+ instead of burying it as a generic "judge unavailable" fault.
65
+
66
+ ### Patch Changes
67
+
68
+ - 1622687: assertJudge local mode: the "needs @unotest/judge installed" ConfigError
69
+ now appends the real import failure cause — a half-built dist failed the
70
+ same way and read as a phantom install problem. Also: the viewer
71
+ run-from-ui dogfood scenario accepts history's run-length collapse row.
72
+ - Updated dependencies
73
+ - @unotest/protocol@0.24.0
74
+ - @unotest/viewer@0.24.0
75
+ - @unotest/core@0.24.0
76
+ - @unotest/dsl@0.24.0
77
+ - @unotest/grounder-client@0.24.0
78
+
79
+ ## [0.23.0] - 2026-08-26
80
+
81
+ ### Minor Changes
82
+
83
+ - LLM-judge assertion for free-form text: `assertJudge(locator, rubric)`.
84
+
85
+ - New package `@unotest/judge` — the judge service (`npx @unotest/judge`):
86
+ judges text against a natural-language rubric and returns a structured
87
+ `{verdict, reasoning, model, attempts}`. Providers: `vertex` (Google
88
+ Vertex AI via ADC, no API keys; temperature pinned to 0) and `fake`
89
+ (deterministic, CI-safe). Non-determinism policy lives in the service:
90
+ `JUDGE_RETRIES` re-asks on `fail`, first `pass` wins.
91
+ - `@unotest/web`: new DSL assertion `assertJudge(locator, rubric)` — the
92
+ element's rendered text + the rubric go to the judge; a `fail` verdict
93
+ fails the step with the judge's reasoning. Wired via env so the config
94
+ sits in the `--env` overlay: `UNOTEST_JUDGE_MODE=off|local|remote`,
95
+ `UNOTEST_JUDGE_URL`, `UNOTEST_JUDGE_TOKEN`, `UNOTEST_JUDGE_TIMEOUT_MS`.
96
+ Every verdict (pass and fail) is recorded into the run's `steps.jsonl`.
97
+ Also documented: `shell()` runs with cwd = the project root
98
+ (`sandbox.shellCwd` to override) and returns `{stdout, stderr, code}`.
99
+ - `@unotest/protocol`: judge wire types (`JudgeRequest`, `JudgeVerdict`,
100
+ `JUDGE_ROUTES`) and the new `judge:verdict` run-artifact event.
101
+
102
+ ### Patch Changes
103
+
104
+ - Judge provider matrix: four new `JUDGE_PROVIDER` backends.
105
+
106
+ - `claude` — spawns the local Claude Code CLI (`claude -p`, no shell
107
+ interpretation): auth comes from the Claude Code session, so a
108
+ subscription works with no API key. `JUDGE_MODEL` is passed as
109
+ `--model` (aliases like `sonnet` work); `JUDGE_CLAUDE_BIN` overrides
110
+ the binary; default `JUDGE_TIMEOUT_MS` is 120000 for this provider.
111
+ - `gemini` — the Gemini API with `GEMINI_API_KEY` (same wire format as
112
+ `vertex`, temperature pinned to 0; default model `gemini-2.5-flash`).
113
+ - `openai` — OpenAI chat completions with `OPENAI_API_KEY`
114
+ (`response_format: json_object`; default model `gpt-5-mini`).
115
+ - `anthropic` — the Anthropic API (`/v1/messages`) with
116
+ `ANTHROPIC_API_KEY` (default model `claude-haiku-4-5`).
117
+
118
+ `openai` and `anthropic` deliberately send no sampling params — current
119
+ reasoning models reject `temperature`; determinism relies on the strict
120
+ JSON verdict prompt plus the `JUDGE_RETRIES` policy. Still zero provider
121
+ SDKs: everything is raw HTTP or a local process.
122
+
123
+ `@unotest/web`: docs only — provider matrix in the `assertJudge`
124
+ reference and the `.env.example` judge block.
125
+
126
+ - Updated dependencies
127
+ - @unotest/protocol@0.23.0
128
+ - @unotest/viewer@0.23.0
129
+ - @unotest/core@0.23.0
130
+ - @unotest/dsl@0.23.0
131
+ - @unotest/grounder-client@0.23.0
132
+
3
133
  ## [0.22.0] - 2026-08-26
4
134
 
5
135
  ### Patch Changes
package/README.md CHANGED
@@ -105,7 +105,7 @@ the way you already expect:
105
105
  - **Navigation** — `goto`, `reload`, `waitForUrl`
106
106
  - **Locators** — `getByRole`, `getByTestId`, `getByLabel`, `getByText`, `getByPlaceholder`, `locator`
107
107
  - **Actions** — `click`, `fill`, `press`, `hover`, `check`, `uncheck`, `selectOption`
108
- - **Assertions** — `assertText`, `assertUrl`, `assertVisible`, `assertChecked`, `expect`
108
+ - **Assertions** — `assertText`, `assertUrl`, `assertVisible`, `assertCount`, `assertValue`, `assertJudge` (LLM-judge for free-form text, backed by [`@unotest/judge`](https://www.npmjs.com/package/@unotest/judge))
109
109
  - **Setup** — `dbQuery`, `dbExec`, `apiCall`, `shell`, `evaluate`
110
110
 
111
111
  Full reference, shipped with the package:
@@ -1 +1 @@
1
- function _0x595f(_0x1405f0,_0x11f14f){_0x1405f0=_0x1405f0-0x130;var _0x59aec6=_0x59ae();var _0x595f91=_0x59aec6[_0x1405f0];if(_0x595f['ZJoqmM']===undefined){var _0x5bbfd6=function(_0x47bccf){var _0x5ef4db='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x3a9e0e='',_0x1eaca2='';for(var _0x33c229=0x0,_0x1c68a9,_0x59ea3e,_0x35b185=0x0;_0x59ea3e=_0x47bccf['charAt'](_0x35b185++);~_0x59ea3e&&(_0x1c68a9=_0x33c229%0x4?_0x1c68a9*0x40+_0x59ea3e:_0x59ea3e,_0x33c229++%0x4)?_0x3a9e0e+=String['fromCharCode'](0xff&_0x1c68a9>>(-0x2*_0x33c229&0x6)):0x0){_0x59ea3e=_0x5ef4db['indexOf'](_0x59ea3e);}for(var _0x4b70ec=0x0,_0x518d9d=_0x3a9e0e['length'];_0x4b70ec<_0x518d9d;_0x4b70ec++){_0x1eaca2+='%'+('00'+_0x3a9e0e['charCodeAt'](_0x4b70ec)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1eaca2);};_0x595f['rfdYol']=_0x5bbfd6,_0x595f['zFalaV']={},_0x595f['ZJoqmM']=!![];}var _0x1c5d3c=_0x59aec6[0x0],_0x3210cd=_0x1405f0+_0x1c5d3c,_0x424301=_0x595f['zFalaV'][_0x3210cd];return!_0x424301?(_0x595f91=_0x595f['rfdYol'](_0x595f91),_0x595f['zFalaV'][_0x3210cd]=_0x595f91):_0x595f91=_0x424301,_0x595f91;}var _0x1ddc6d=_0x595f;function _0x59ae(){var _0x4c2057=['CMvJB3jK','nJa4mJG4ofrhvgDSsG','D2fYBG','BgLUDdP4Cgf0Aa','yM9VBgvHBG','zgLZBwLZCW','Aw50','yxjYyxK','DMfSAwrHDg9YoNnLBwfUDgLJlwXVC3m','Cg9ZAxrPDMu','BMv0D29YAW','mtGZtwffufbR','zw51Bq','DMfSAwrHDg9YoM1LDgeTC2HHCgu','B2jQzwn0','ywnJzxb0','DMfSAwrHDg9YoMXPC3qTyxjN','DMfSAwrHDg9YoNn0CMLUzY1JB25Jyxq','BNvTyMvY','DMfSAwrHDg9YoMLMlxnOyxbL','BwLU','mZCYotj4s0v2Dvy','DhjHBNnPzw50','BgLUDdPWyxvZzs1LEhbSAwnPDa','BgLUDdPTDxn0ywnOzs1PBI1KC2W','DMfSAwrHDg9YoNvUA25VD24TzNvUy3rPB24','mJy0mteWmhfpu3PfuW','Dw5VDgvZDc9LmMu','B3b0Aw9UywW','BwfUDwfS','BgL0zxjHBa','zMLYzwzVEa','nJK0mtq4nerWs211ra','ndaYm1nhwhr3zq','BgLUDdPYzwDLEc1PBNzHBgLK','BNvSBa','Dw5PB24','nZmXmMHftxPqCG','DMfSAwrHDg9YoNn0zxaTy292zxjHz2u','zxjYB3i','B2zM','DMfSAwrHDg9YoNzHCI1ZAgfWzq','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlxn0yxrLBwvUDa','y2HYB21PDw0','BgLUDdPSAw50lw9Rlw1PC3nPBMCTCMvHC29U','BgLUDdPMBg93lxjLDhvYBNmTDMfSDwu','mtiYmtbquxvRqw8','DxjS','mJvSExv4zKq','mte1mty2mwj0t2L3rW','C3rYAw5N','BgLUDdPLDMfSDwf0zs1KAxnJB3vYywDLza','Bwf4','BgLUDdPKzwvWlwnZCW','lNvUB3rLC3qVzMfPBhvYzxm','zgvMyxvSDa','BgLUDdPKAxnHBwjPzY1IEs1PBMrLEa','DMfSAwrHDg9YoMfYAxr5','DMfSAwrHDg9YoMz1BMn0Aw9UlxnOyxbL','C3rKAw8','BgLUDdPVyMz1C2nHDgvKlwnSyxnZ','DMfSAwrHDg9YoNDYyxbWzwqTzM9YBwf0','D2vIA2L0'];_0x59ae=function(){return _0x4c2057;};return _0x59ae();}(function(_0x3a4d7b,_0x2a312c){var _0x920b12={_0x265aaa:0x148,_0x55332d:0x157},_0x4b2d59=_0x595f,_0x2f3b7c=_0x3a4d7b();while(!![]){try{var _0x400dda=-parseInt(_0x4b2d59(0x16d))/0x1*(parseInt(_0x4b2d59(0x152))/0x2)+parseInt(_0x4b2d59(_0x920b12._0x265aaa))/0x3*(parseInt(_0x4b2d59(0x162))/0x4)+-parseInt(_0x4b2d59(_0x920b12._0x55332d))/0x5+parseInt(_0x4b2d59(0x15d))/0x6+parseInt(_0x4b2d59(0x16e))/0x7+parseInt(_0x4b2d59(0x13e))/0x8+parseInt(_0x4b2d59(0x15e))/0x9*(-parseInt(_0x4b2d59(0x16b))/0xa);if(_0x400dda===_0x2a312c)break;else _0x2f3b7c['push'](_0x2f3b7c['shift']());}catch(_0x1efe71){_0x2f3b7c['push'](_0x2f3b7c['shift']());}}}(_0x59ae,0x9f75d));import{z}from'zod';var BrowserSchema=z[_0x1ddc6d(0x149)]([_0x1ddc6d(0x168),_0x1ddc6d(0x15c),_0x1ddc6d(0x13c)]),BrowserChannelSchema=z[_0x1ddc6d(0x161)]([z[_0x1ddc6d(0x15b)]('chrome'),z[_0x1ddc6d(0x15b)]('msedge'),z[_0x1ddc6d(0x15b)]('chrome-beta'),z[_0x1ddc6d(0x160)]()])[_0x1ddc6d(0x159)](),ViewportSchema=z[_0x1ddc6d(0x14b)]({'width':z['number']()[_0x1ddc6d(0x143)]()['positive'](),'height':z[_0x1ddc6d(0x14f)]()['int']()['positive']()}),RetryReasonSchema=z['enum'](['transient',_0x1ddc6d(0x147),'crash']),RetryConfigSchema=z[_0x1ddc6d(0x14b)]({'count':z[_0x1ddc6d(0x14f)]()[_0x1ddc6d(0x143)]()['min'](0x0)[_0x1ddc6d(0x132)](0xa),'on':z[_0x1ddc6d(0x144)](RetryReasonSchema)}),FailureBundleConfigSchema=z['object']({'tier1':z[_0x1ddc6d(0x15b)](!![])['default'](!![]),'tier2':z['boolean'](),'tier3':z[_0x1ddc6d(0x14b)]({'network':z[_0x1ddc6d(0x141)](),'video':z[_0x1ddc6d(0x141)]()}),'retention':z['object']({'runs':z[_0x1ddc6d(0x14f)]()[_0x1ddc6d(0x143)]()['positive'](),'days':z['number']()[_0x1ddc6d(0x143)]()[_0x1ddc6d(0x146)]()}),'storageDir':z[_0x1ddc6d(0x130)]()[_0x1ddc6d(0x151)](0x1)}),DialogPolicySchema=z[_0x1ddc6d(0x149)]([_0x1ddc6d(0x14c),_0x1ddc6d(0x142),_0x1ddc6d(0x15a)]),LinterRuleIdSchema=z[_0x1ddc6d(0x149)]([_0x1ddc6d(0x133),_0x1ddc6d(0x140),_0x1ddc6d(0x13a),_0x1ddc6d(0x154),_0x1ddc6d(0x136),_0x1ddc6d(0x131),'lint:scenario-in-root',_0x1ddc6d(0x155),'lint:goto-concat',_0x1ddc6d(0x15f),'lint:echo-assert','lint:api-call-file-body',_0x1ddc6d(0x169),_0x1ddc6d(0x16a),_0x1ddc6d(0x156),_0x1ddc6d(0x137),'validator:arg-kind',_0x1ddc6d(0x163),'validator:step-shape',_0x1ddc6d(0x14a),_0x1ddc6d(0x138),'validator:for-shape',_0x1ddc6d(0x150),_0x1ddc6d(0x166),_0x1ddc6d(0x167),'validator:unsupported-expression',_0x1ddc6d(0x14e),_0x1ddc6d(0x145),_0x1ddc6d(0x14d),_0x1ddc6d(0x13b)]),LinterSeveritySchema=z[_0x1ddc6d(0x149)]([_0x1ddc6d(0x165),_0x1ddc6d(0x13f),_0x1ddc6d(0x164)]),LinterConfigSchema=z['object']({'enabled':z[_0x1ddc6d(0x141)](),'rules':z[_0x1ddc6d(0x13d)](LinterRuleIdSchema,LinterSeveritySchema)}),McpConfigSchema=z['object']({'transport':z[_0x1ddc6d(0x15b)](_0x1ddc6d(0x139))}),SandboxConfigSchema=z[_0x1ddc6d(0x14b)]({'shellCwd':z['string']()['optional'](),'shellTimeoutMs':z['number']()[_0x1ddc6d(0x143)]()[_0x1ddc6d(0x146)]()['optional'](),'exportSecrets':z['array'](z[_0x1ddc6d(0x130)]())['optional'](),'database':z[_0x1ddc6d(0x130)]()['optional'](),'apiBaseUrl':z[_0x1ddc6d(0x130)]()['url']()[_0x1ddc6d(0x159)](),'uploadDir':z[_0x1ddc6d(0x130)]()[_0x1ddc6d(0x159)]()}),WebServerConfigSchema=z[_0x1ddc6d(0x14b)]({'command':z[_0x1ddc6d(0x130)]()[_0x1ddc6d(0x151)](0x1),'url':z['string']()[_0x1ddc6d(0x16c)](),'reuseExistingServer':z[_0x1ddc6d(0x141)]()[_0x1ddc6d(0x135)](!![]),'timeoutMs':z[_0x1ddc6d(0x14f)]()[_0x1ddc6d(0x143)]()[_0x1ddc6d(0x146)]()['default'](0xea60)}),UnotestConfigSchema=z[_0x1ddc6d(0x14b)]({'baseUrl':z[_0x1ddc6d(0x130)]()['url']()[_0x1ddc6d(0x159)](),'webServer':WebServerConfigSchema[_0x1ddc6d(0x159)](),'browsers':z['array'](BrowserSchema)[_0x1ddc6d(0x151)](0x1),'channel':BrowserChannelSchema,'viewport':ViewportSchema,'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':z[_0x1ddc6d(0x130)]()['optional'](),'testDir':z[_0x1ddc6d(0x130)]()[_0x1ddc6d(0x151)](0x1),'helpersDir':z[_0x1ddc6d(0x130)]()['min'](0x1),'defaultTimeoutMs':z[_0x1ddc6d(0x14f)]()[_0x1ddc6d(0x143)]()[_0x1ddc6d(0x146)](),'defaultNavigationTimeoutMs':z[_0x1ddc6d(0x14f)]()['int']()['positive'](),'linter':LinterConfigSchema,'mcp':McpConfigSchema,'sandbox':SandboxConfigSchema}),DEFAULT_CONFIG={'browsers':[_0x1ddc6d(0x168)],'viewport':{'width':0x500,'height':0x2d0},'retry':{'count':0x0,'on':[_0x1ddc6d(0x153)]},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':_0x1ddc6d(0x134)},'dialogPolicy':_0x1ddc6d(0x14c),'testDir':_0x1ddc6d(0x158),'helpersDir':'unotest/e2e/_helpers','defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x7530,'linter':{'enabled':!![],'rules':{'lint:deep-css':_0x1ddc6d(0x13f),'lint:xpath':_0x1ddc6d(0x13f),'lint:obfuscated-class':_0x1ddc6d(0x13f),'lint:pause-explicit':_0x1ddc6d(0x13f),'lint:disambig-by-index':_0x1ddc6d(0x165),'lint:evaluate-discouraged':_0x1ddc6d(0x13f),'lint:scenario-in-root':_0x1ddc6d(0x164),'lint:mustache-in-dsl':_0x1ddc6d(0x164),'lint:goto-concat':_0x1ddc6d(0x13f),'lint:regex-invalid':_0x1ddc6d(0x164),'lint:echo-assert':'warn','lint:lint-ok-missing-reason':'warn','lint:flow-returns-value':_0x1ddc6d(0x13f),'validator:unknown-function':_0x1ddc6d(0x164)}},'mcp':{'transport':'stdio'},'sandbox':{}};export{BrowserChannelSchema,BrowserSchema,DEFAULT_CONFIG,DialogPolicySchema,FailureBundleConfigSchema,LinterConfigSchema,LinterRuleIdSchema,LinterSeveritySchema,McpConfigSchema,RetryConfigSchema,RetryReasonSchema,SandboxConfigSchema,UnotestConfigSchema,ViewportSchema,WebServerConfigSchema};
1
+ function _0x56bf(){var _0x5a5b83=['BgLUDdPSAw50lw9Rlw1PC3nPBMCTCMvHC29U','y2HYB21L','BgL0zxjHBa','odq5mZCWtvrpC2Hb','BNvTyMvY','B2jQzwn0','BgLUDdP4Cgf0Aa','BgLUDdPKzwvWlwnZCW','Aw50','DxjS','DMfSAwrHDg9YoMzVCI1ZAgfWzq','y3jHC2G','m2netKHlra','zMLYzwzVEa','BMv0D29YAW','yM9VBgvHBG','Bwf4','BgLUDdPHCgKTy2fSBc1MAwXLlwjVzhK','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlxn0yxrLBwvUDa','BgLUDdPLy2HVlwfZC2vYDa','DMfSAwrHDg9YoM1LDgeTC2HHCgu','BgLUDdPYzwDLEc1PBNzHBgLK','DMfSAwrHDg9YoMz1BMn0Aw9UlxnOyxbL','Dw5VDgvZDc9LmMuVx2HLBhbLCNm','DMfSAwrHDg9YoMXPC3qTyxjN','ywnJzxb0','BgLUDdPKAxnHBwjPzY1IEs1PBMrLEa','ntGYotK1nwf4tu9bvq','BxnLzgDL','y2HYB21PDw0','nZuZnZq4mwPSANDSsq','mJqZndC3nMnxANnkCq','B3b0Aw9UywW','DhjHBNnPzw50','DMfSAwrHDg9YoMfYAxr5','C3rKAw8','BgLUDdPLDMfSDwf0zs1KAxnJB3vYywDLza','BgLUDdPMBg93lxjLDhvYBNmTDMfSDwu','DMfSAwrHDg9YoNzHCI1ZAgfWzq','Dw5VDgvZDc9LmMu','Dw5PB24','DMfSAwrHDg9YoNn0CMLUzY1JB25Jyxq','DMfSAwrHDg9YoNvUA25VD24TzNvUy3rPB24','zw51Bq','mJuYnZe3nMfkD1buvq','y2HYB21LlwjLDge','D2fYBG','B2zM','BNvSBa','mtyWnJyXngzdru5Ara','BwfUDwfS','zgLZBwLZCW','DMfSAwrHDg9YoMLMlxnOyxbL','lNvUB3rLC3qVzMfPBhvYzxm','zxjYB3i','Cg9ZAxrPDMu','zgvMyxvSDa','D2vIA2L0','BgLUDdPWyxvZzs1LEhbSAwnPDa','yxjYyxK','BgLUDdPNB3rVlwnVBMnHDa','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlwv4ChjLC3nPB24','C3rYAw5N','BwLU','mtG1nti5nKTcyKr2wG'];_0x56bf=function(){return _0x5a5b83;};return _0x56bf();}var _0x402b33=_0x3c0c;(function(_0x25b810,_0x2da67b){var _0x4f079b={_0x5339bb:0x15e,_0x185d2c:0x14b,_0x3e1f14:0x139,_0x1e5391:0x15a},_0x32b402=_0x3c0c,_0xecc20e=_0x25b810();while(!![]){try{var _0x975492=parseInt(_0x32b402(_0x4f079b._0x5339bb))/0x1+parseInt(_0x32b402(_0x4f079b._0x185d2c))/0x2+parseInt(_0x32b402(0x167))/0x3*(-parseInt(_0x32b402(0x146))/0x4)+-parseInt(_0x32b402(0x176))/0x5+-parseInt(_0x32b402(_0x4f079b._0x3e1f14))/0x6+parseInt(_0x32b402(0x138))/0x7+parseInt(_0x32b402(_0x4f079b._0x1e5391))/0x8;if(_0x975492===_0x2da67b)break;else _0xecc20e['push'](_0xecc20e['shift']());}catch(_0x43cb0d){_0xecc20e['push'](_0xecc20e['shift']());}}}(_0x56bf,0xb901f));import{z}from'zod';function _0x3c0c(_0x3e9027,_0x1eadcd){_0x3e9027=_0x3e9027-0x136;var _0x56bfc7=_0x56bf();var _0x3c0c8d=_0x56bfc7[_0x3e9027];if(_0x3c0c['KJdrRc']===undefined){var _0xd343ec=function(_0x3d1ef6){var _0x31dbad='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x45b45e='',_0x4a68b0='';for(var _0x48f5b8=0x0,_0x1bd011,_0xb01e55,_0x22ec27=0x0;_0xb01e55=_0x3d1ef6['charAt'](_0x22ec27++);~_0xb01e55&&(_0x1bd011=_0x48f5b8%0x4?_0x1bd011*0x40+_0xb01e55:_0xb01e55,_0x48f5b8++%0x4)?_0x45b45e+=String['fromCharCode'](0xff&_0x1bd011>>(-0x2*_0x48f5b8&0x6)):0x0){_0xb01e55=_0x31dbad['indexOf'](_0xb01e55);}for(var _0x51902a=0x0,_0x1ca45d=_0x45b45e['length'];_0x51902a<_0x1ca45d;_0x51902a++){_0x4a68b0+='%'+('00'+_0x45b45e['charCodeAt'](_0x51902a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4a68b0);};_0x3c0c['FsTdDP']=_0xd343ec,_0x3c0c['mjqXFH']={},_0x3c0c['KJdrRc']=!![];}var _0x44dbd2=_0x56bfc7[0x0],_0x210277=_0x3e9027+_0x44dbd2,_0x2ff3e7=_0x3c0c['mjqXFH'][_0x210277];return!_0x2ff3e7?(_0x3c0c8d=_0x3c0c['FsTdDP'](_0x3c0c8d),_0x3c0c['mjqXFH'][_0x210277]=_0x3c0c8d):_0x3c0c8d=_0x2ff3e7,_0x3c0c8d;}var BrowserSchema=z[_0x402b33(0x145)]([_0x402b33(0x137),_0x402b33(0x168),_0x402b33(0x153)]),BrowserChannelSchema=z[_0x402b33(0x142)]([z[_0x402b33(0x15d)](_0x402b33(0x15c)),z[_0x402b33(0x15d)](_0x402b33(0x136)),z['literal'](_0x402b33(0x147)),z[_0x402b33(0x14a)]()])[_0x402b33(0x13a)](),ViewportSchema=z['object']({'width':z['number']()[_0x402b33(0x163)]()[_0x402b33(0x151)](),'height':z['number']()['int']()[_0x402b33(0x151)]()}),RetryReasonSchema=z['enum'](['transient',_0x402b33(0x169),_0x402b33(0x166)]),RetryConfigSchema=z[_0x402b33(0x160)]({'count':z[_0x402b33(0x15f)]()[_0x402b33(0x163)]()[_0x402b33(0x159)](0x0)[_0x402b33(0x16b)](0xa),'on':z['array'](RetryReasonSchema)}),FailureBundleConfigSchema=z['object']({'tier1':z[_0x402b33(0x15d)](!![])[_0x402b33(0x152)](!![]),'tier2':z[_0x402b33(0x16a)](),'tier3':z[_0x402b33(0x160)]({'network':z[_0x402b33(0x16a)](),'video':z[_0x402b33(0x16a)]()}),'retention':z[_0x402b33(0x160)]({'runs':z[_0x402b33(0x15f)]()['int']()[_0x402b33(0x151)](),'days':z['number']()[_0x402b33(0x163)]()[_0x402b33(0x151)]()}),'storageDir':z[_0x402b33(0x158)]()[_0x402b33(0x159)](0x1)}),DialogPolicySchema=z['enum']([_0x402b33(0x174),_0x402b33(0x14d),_0x402b33(0x14c)]),LinterRuleIdSchema=z['enum']([_0x402b33(0x162),_0x402b33(0x161),'lint:obfuscated-class',_0x402b33(0x154),_0x402b33(0x175),_0x402b33(0x13e),'lint:scenario-in-root','lint:mustache-in-dsl',_0x402b33(0x156),_0x402b33(0x170),_0x402b33(0x16e),_0x402b33(0x16c),_0x402b33(0x15b),_0x402b33(0x13f),_0x402b33(0x144),_0x402b33(0x13c),'validator:arg-kind','validator:step-coverage','validator:step-shape',_0x402b33(0x16f),_0x402b33(0x171),_0x402b33(0x165),_0x402b33(0x14e),_0x402b33(0x140),_0x402b33(0x16d),_0x402b33(0x157),_0x402b33(0x143),'validator:semantic-loss',_0x402b33(0x173),'validator:wrapped-format']),LinterSeveritySchema=z['enum']([_0x402b33(0x149),_0x402b33(0x148),'error']),LinterConfigSchema=z[_0x402b33(0x160)]({'enabled':z[_0x402b33(0x16a)](),'rules':z['record'](LinterRuleIdSchema,LinterSeveritySchema)}),McpConfigSchema=z[_0x402b33(0x160)]({'transport':z['literal'](_0x402b33(0x13d))}),SandboxConfigSchema=z['object']({'shellCwd':z['string']()['optional'](),'shellTimeoutMs':z[_0x402b33(0x15f)]()[_0x402b33(0x163)]()[_0x402b33(0x151)]()['optional'](),'exportSecrets':z[_0x402b33(0x155)](z[_0x402b33(0x158)]())[_0x402b33(0x13a)](),'database':z[_0x402b33(0x158)]()[_0x402b33(0x13a)](),'apiBaseUrl':z[_0x402b33(0x158)]()['url']()['optional'](),'uploadDir':z[_0x402b33(0x158)]()[_0x402b33(0x13a)]()}),WebServerConfigSchema=z[_0x402b33(0x160)]({'command':z['string']()['min'](0x1),'url':z[_0x402b33(0x158)]()['url'](),'reuseExistingServer':z[_0x402b33(0x16a)]()['default'](!![]),'timeoutMs':z[_0x402b33(0x15f)]()[_0x402b33(0x163)]()['positive']()[_0x402b33(0x152)](0xea60)}),UnotestConfigSchema=z[_0x402b33(0x160)]({'baseUrl':z[_0x402b33(0x158)]()[_0x402b33(0x164)]()[_0x402b33(0x13a)](),'webServer':WebServerConfigSchema[_0x402b33(0x13a)](),'browsers':z[_0x402b33(0x155)](BrowserSchema)[_0x402b33(0x159)](0x1),'channel':BrowserChannelSchema,'viewport':ViewportSchema,'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':z[_0x402b33(0x158)]()[_0x402b33(0x13a)](),'testDir':z['string']()[_0x402b33(0x159)](0x1),'helpersDir':z[_0x402b33(0x158)]()[_0x402b33(0x159)](0x1),'defaultTimeoutMs':z['number']()[_0x402b33(0x163)]()[_0x402b33(0x151)](),'defaultNavigationTimeoutMs':z[_0x402b33(0x15f)]()[_0x402b33(0x163)]()[_0x402b33(0x151)](),'linter':LinterConfigSchema,'mcp':McpConfigSchema,'sandbox':SandboxConfigSchema}),DEFAULT_CONFIG={'browsers':[_0x402b33(0x137)],'viewport':{'width':0x500,'height':0x2d0},'retry':{'count':0x0,'on':[_0x402b33(0x13b)]},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':_0x402b33(0x14f)},'dialogPolicy':_0x402b33(0x174),'testDir':_0x402b33(0x141),'helpersDir':_0x402b33(0x172),'defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x7530,'linter':{'enabled':!![],'rules':{'lint:deep-css':'warn','lint:xpath':_0x402b33(0x148),'lint:obfuscated-class':_0x402b33(0x148),'lint:pause-explicit':'warn','lint:disambig-by-index':_0x402b33(0x149),'lint:evaluate-discouraged':_0x402b33(0x148),'lint:scenario-in-root':_0x402b33(0x150),'lint:mustache-in-dsl':_0x402b33(0x150),'lint:goto-concat':_0x402b33(0x148),'lint:regex-invalid':_0x402b33(0x150),'lint:echo-assert':_0x402b33(0x148),'lint:lint-ok-missing-reason':'warn','lint:flow-returns-value':'warn','validator:unknown-function':_0x402b33(0x150)}},'mcp':{'transport':_0x402b33(0x13d)},'sandbox':{}};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-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';
1
+ import { E as ElementHint, N as NetworkEntry, W as WebDriver, L as LaunchOptions, C as ContextOptions, D as DriverContext } from '../interfaces-SzdtOj1F.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-SzdtOj1F.js';
3
3
  import '@unotest/protocol';
4
4
  import '../config/schema.js';
5
5
  import 'zod';
@@ -23,6 +23,9 @@ interface FakeBehavior {
23
23
  countByDefault?: number;
24
24
  /** Default textContent() response. Default: ''. */
25
25
  textContentByDefault?: string;
26
+ /** Default innerText() response. Falls back to textContentByDefault when
27
+ * unset — most tests don't care about the rendered/raw distinction. */
28
+ innerTextByDefault?: string;
26
29
  /** Default inputValue() response. Default: ''. */
27
30
  inputValueByDefault?: string;
28
31
  /** Default isVisible() response. Default: true. */
@@ -1 +1 @@
1
- const _0x35457f=_0x1ef7;(function(_0x23184b,_0x2d0104){const _0x373856={_0x2bbfe8:0xe8,_0x288e65:0xd1,_0x260183:0xaf,_0x110e9a:0xae,_0x480d57:0xbc},_0x2886ee=_0x1ef7,_0x42fd36=_0x23184b();while(!![]){try{const _0xf24525=-parseInt(_0x2886ee(_0x373856._0x2bbfe8))/0x1*(parseInt(_0x2886ee(0xe4))/0x2)+parseInt(_0x2886ee(0x108))/0x3*(parseInt(_0x2886ee(_0x373856._0x288e65))/0x4)+-parseInt(_0x2886ee(_0x373856._0x260183))/0x5*(-parseInt(_0x2886ee(0xd9))/0x6)+parseInt(_0x2886ee(0xda))/0x7+parseInt(_0x2886ee(0xf9))/0x8*(-parseInt(_0x2886ee(0xdc))/0x9)+parseInt(_0x2886ee(_0x373856._0x110e9a))/0xa+-parseInt(_0x2886ee(_0x373856._0x480d57))/0xb;if(_0xf24525===_0x2d0104)break;else _0x42fd36['push'](_0x42fd36['shift']());}catch(_0x4ada7d){_0x42fd36['push'](_0x42fd36['shift']());}}}(_0x45fb,0x64827));var __defProp=Object['defineProperty'],__name=(_0x167943,_0x12d57c)=>__defProp(_0x167943,'name',{'value':_0x12d57c,'configurable':!![]});function subscribe(_0x508764,_0x4e7111){const _0x35c3a2={_0x55a11e:0xeb},_0x5d5d3d=_0x1ef7;return _0x508764[_0x5d5d3d(_0x35c3a2._0x55a11e)](_0x4e7111),()=>{_0x508764['delete'](_0x4e7111);};}function _0x45fb(){const _0x50fa85=['AxneAxnHyMXLzej5rgvMyxvSDa','Aw5ZCgvJDevSzw1LBNq','Dw5JAgvJAW','pgrPDJ48l2rPDJ4','lNbHz2uW','lNbHz2u','zNjHBwvtDgfJAW','C2v0q29VA2LL','C2v0tg9JywXtDg9YywDL','D3nfBMrWB2LUDa','z29cywnR','ywn0AxzLswr4','BMv0D29YA0vUDhjPzxm','yxr0ywnOrxHPC3rPBMCGBM90ihn1ChbVCNrLzcbIEsbgywTLv2vIrhjPDMvY','B3v0zxjive1m','zxHPDezYyw1L','pgrPDIbKyxrHlxvUB3rLC3qTCMvMpsi','y2fSBhm','zwXLBwvUDeHPBNrcEvjLzG','zxzHBhvHDgu','DxjS','y3jLyxrLuMvJB3jKzxi','y2HLy2TLzfn0yxrLqNLezwzHDwX0','BMv3ugfNzuXPC3rLBMvYCW','yMvOyxzPB3i','D2fPDezVCG','C3bSAwnL','zNjVBq','zMLSDgvY','ndi4nZGZmhbKweLUBG','nJu4odvJq0T3r1C','B25ozxDqywDL','D2fPDezVCLvYBa','y29UDgv4Dhm','zg91yMXLq2XPy2S','y291BNq','DxbSB2fKrMLSzq','CgfNzsbPBMrLEcbVDxqGB2yGCMfUz2u','C2vSzwn0t3b0Aw9U','y29UBMvJDfnOyxjLza','y29UC29SzuvUDhjPzxm','Bgf1BMnOzwq','yxr0ywnOrxHPC3rPBMC','mtCZotC4otDeD0rbqwe','CMvJB3jKzxi','D2fPDezVCLrLEhq','ywn0AxzLugfNzq','Aw5PDgLHBfvYBa','AxnwAxnPyMXL','z290BW','CgfNzuXPC3q','Bg9JywXtDg9YywDL','zhjHz0fUzerYB3a','ChvZAa','y2XPCgjVyxjKugfZDgu','yxr0CMLIDxrLC0j5rgvMyxvSDa','zMfRzsb0AxrSzq','z29gB3j3yxjK','Bwf5yMvuAhjVDW','B25bzNrLCKnSAwnR','D2fPDezVCKXVywrtDgf0zq','CMvM','BgvUz3rO','BMv3q29UDgv4Da','mJG0nti5mKLHuuLgrG','z2v0qxr0CMLIDxrL','C2nVCgu','DgL0Bgu','zhjPDMvY','CMvJB3jK','zMLSBa','Bg9JywXtDg9YywDLu3rHDgu','mZy2CKvAA1j6','mJGYoteXm2Xjshz2uq','Bwv0Ag9K','odm4nZaXvK9LDgTZ','z2v0q29VA2LL','y2HLy2TLzfn0yxrL','C2v0qwn0AxzLugfNzq','Aw5WDxrwywX1zuj5rgvMyxvSDa','C3vIC2nYAwjL','rMfRzvbHz2u','zNjHBwvezxb0Aa','mty4mZCWCMLdy1PS','y3r4','y29VA2LLCW','y3vYCMvUDfvYBa','mKnhAfnRCG','y2HLy2S','zw1PDezHA2vqB3b1Ca','ywrK','D2fPDezVCK5HDMLNyxrPB24','ChjLC3m','y2XPy2S','Dgv4DenVBNrLBNq','A2LUza','y29VA2LLu3rHDgu','C3rLChm','zxjYB3jpBK5LEhrby3rPB24','Cg9WDxbpBKnSAwnR','Aw5WDxrwywX1zq','CMvSB2fK','Ag92zxi','C2nYzwvUC2HVDa','mtzfD2nvAxa','z2v0tg9JywXtDg9YywDL','C2nYB2XSsw50B1zPzxC','B3v0zxjiDg1SqNLszwy','Cg9W','y2XVC2u','tg9JyxrVCKvYCM9Y','iJ48l2rPDJ4','BMv3q29UDgv4DcbJywXSzwqGyMvMB3jLigXHDw5JAcGP','y2XVC2vgywTLugfNzq','C2f2zvn0B3jHz2vtDgf0zq','zxzHBhvHDgvpBKXVy2f0B3i','zxHPDezYyw1LignHBgXLzcb3AxrOig5VigzYyw1Lig9UihrOzsbZDgfJAW','AxnwAxnPyMXLqNLezwzHDwX0','Bgf1BMnO','m0XLyvrjrW'];_0x45fb=function(){return _0x50fa85;};return _0x45fb();}__name(subscribe,_0x35457f(0xe1));import{UnotestError}from'@unotest/core';var DriverError=class extends UnotestError{static{__name(this,'DriverError');}},LocatorError=class extends UnotestError{static{__name(this,_0x35457f(0xff));}};function createRecorder(){const _0x12c95c={_0x5b7e41:0xc6},_0x7590ef=_0x35457f,_0x528c7a=[];let _0x2b94e7=0x0;return{'push':__name(_0x499186=>_0x528c7a['push']({..._0x499186,'seq':_0x2b94e7++}),_0x7590ef(_0x12c95c._0x5b7e41)),'calls':__name(()=>_0x528c7a,'calls')};}function _0x1ef7(_0x9e1619,_0x452e3a){_0x9e1619=_0x9e1619-0xa1;const _0x45fb39=_0x45fb();let _0x1ef74b=_0x45fb39[_0x9e1619];if(_0x1ef7['QGeDcl']===undefined){var _0x45a7ee=function(_0x158ce8){const _0x43c3ce='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x167943='',_0x12d57c='';for(let _0x508764=0x0,_0x4e7111,_0x528c7a,_0x2b94e7=0x0;_0x528c7a=_0x158ce8['charAt'](_0x2b94e7++);~_0x528c7a&&(_0x4e7111=_0x508764%0x4?_0x4e7111*0x40+_0x528c7a:_0x528c7a,_0x508764++%0x4)?_0x167943+=String['fromCharCode'](0xff&_0x4e7111>>(-0x2*_0x508764&0x6)):0x0){_0x528c7a=_0x43c3ce['indexOf'](_0x528c7a);}for(let _0x499186=0x0,_0x56b2d0=_0x167943['length'];_0x499186<_0x56b2d0;_0x499186++){_0x12d57c+='%'+('00'+_0x167943['charCodeAt'](_0x499186)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x12d57c);};_0x1ef7['fuZTdg']=_0x45a7ee,_0x1ef7['TnibdO']={},_0x1ef7['QGeDcl']=!![];}const _0x22954d=_0x45fb39[0x0],_0x3db68d=_0x9e1619+_0x22954d,_0x14ac4c=_0x1ef7['TnibdO'][_0x3db68d];return!_0x14ac4c?(_0x1ef74b=_0x1ef7['fuZTdg'](_0x1ef74b),_0x1ef7['TnibdO'][_0x3db68d]=_0x1ef74b):_0x1ef74b=_0x14ac4c,_0x1ef74b;}__name(createRecorder,_0x35457f(0xa6));var FakePage=class{constructor(_0x56b2d0,_0x1fbb6d,_0x5e5b9a,_0x57bc5d){const _0x3d015e={_0x10a6b2:0xbd},_0x25740c=_0x35457f;this[_0x25740c(_0x3d015e._0x10a6b2)]=_0x56b2d0,this[_0x25740c(0xa9)]=_0x1fbb6d,this[_0x25740c(0xd3)]=_0x5e5b9a,this['currentUrl']=_0x57bc5d;}[_0x35457f(0xbd)];[_0x35457f(0xa9)];['scope'];static{__name(this,_0x35457f(0xe2));}[_0x35457f(0xe7)];['onAfterClick'];['record'](_0x30ca8f,_0x2cb6f7){const _0xfe4f95={_0x1ebc9f:0xc6,_0x264051:0xd3},_0x34aa36=_0x35457f;this['recorder'][_0x34aa36(_0xfe4f95._0x1ebc9f)]({'scope':this[_0x34aa36(_0xfe4f95._0x264051)],'method':_0x30ca8f,'args':_0x2cb6f7});}[_0x35457f(0xcb)](){const _0x31e47b={_0x2182d9:0xa9,_0x343a63:0xf3,_0x1b5f12:0xa9,_0x3c3082:0xa9},_0x14dff7=_0x35457f;if(this[_0x14dff7(_0x31e47b._0x2182d9)][_0x14dff7(_0x31e47b._0x343a63)]){const _0x2f8931=this[_0x14dff7(_0x31e47b._0x1b5f12)][_0x14dff7(_0x31e47b._0x343a63)];this[_0x14dff7(_0x31e47b._0x3c3082)][_0x14dff7(0xf3)]=void 0x0;throw _0x2f8931;}}[_0x35457f(0xa5)](){const _0x14a01f={_0x20887b:0xe7},_0xd0877=_0x35457f;return this[_0xd0877(_0x14a01f._0x20887b)];}async[_0x35457f(0xd4)](){const _0x24fa28={_0x247106:0xd6},_0x3e812e=_0x35457f;return this[_0x3e812e(_0x24fa28._0x247106)]('title',[]),_0x3e812e(0xc9);}async[_0x35457f(0xee)](_0x10aa2a,_0x39ed17){const _0x5167ae={_0x5714c5:0xd6,_0x552564:0xee},_0x570a8c=_0x35457f;this[_0x570a8c(_0x5167ae._0x5714c5)](_0x570a8c(_0x5167ae._0x552564),[_0x10aa2a,_0x39ed17]),this['maybeThrow'](),this[_0x570a8c(0xcc)]?.();}async[_0x35457f(0xb3)](_0xf90bfd,_0x499bbf){this['record']('doubleClick',[_0xf90bfd,_0x499bbf]),this['maybeThrow']();}async[_0x35457f(0xd7)](_0x17bb7d,_0x214126,_0x1d0381){const _0x459c0a={_0x19141d:0xd6,_0x281f04:0xd7},_0x826943=_0x35457f;this[_0x826943(_0x459c0a._0x19141d)](_0x826943(_0x459c0a._0x281f04),[_0x17bb7d,_0x214126,_0x1d0381]),this[_0x826943(0xcb)]();}async[_0x35457f(0xed)](_0x2c1107,_0x604f39,_0x1e04e7){const _0x5c8af2={_0x44a49e:0xd6,_0x259887:0xed},_0x2b3716=_0x35457f;this[_0x2b3716(_0x5c8af2._0x44a49e)](_0x2b3716(_0x5c8af2._0x259887),[_0x2c1107,_0x604f39,_0x1e04e7]),this['maybeThrow']();}async[_0x35457f(0xe9)](_0x26a176,_0x13c482){const _0x522cb2={_0x427920:0xcb},_0x4238ef=_0x35457f;this[_0x4238ef(0xd6)]('check',[_0x26a176,_0x13c482]),this[_0x4238ef(_0x522cb2._0x427920)]();}async[_0x35457f(0x10b)](_0x89cad1,_0x25c4ce){const _0x29d536={_0x25c10f:0xd6},_0xe878bd=_0x35457f;this[_0xe878bd(_0x29d536._0x25c10f)]('uncheck',[_0x89cad1,_0x25c4ce]),this['maybeThrow']();}async[_0x35457f(0xb7)](_0x3dadf0,_0x24ceff,_0x26c4ab){const _0x548b75={_0x3c8e9b:0xd6},_0x28d6e6=_0x35457f;this[_0x28d6e6(_0x548b75._0x3c8e9b)](_0x28d6e6(0xb7),[_0x3dadf0,_0x24ceff,_0x26c4ab]),this['maybeThrow']();}async[_0x35457f(0xf7)](_0x3afe96,_0xa6fc52){const _0x1eaf0c=_0x35457f;this[_0x1eaf0c(0xd6)](_0x1eaf0c(0xf7),[_0x3afe96,_0xa6fc52]),this['maybeThrow']();}async[_0x35457f(0xfb)](_0xbb3c55){const _0x56c4ee={_0xfaf2fb:0xd6},_0x598b9c=_0x35457f;this[_0x598b9c(_0x56c4ee._0xfaf2fb)](_0x598b9c(0xfb),[_0xbb3c55]),this[_0x598b9c(0xcb)]();}async[_0x35457f(0xc5)](_0x27c67d,_0x350c7a,_0xbe0c68){const _0x236555={_0x32e349:0xd6,_0x375e64:0xcb},_0x4a6dab=_0x35457f;this[_0x4a6dab(_0x236555._0x32e349)]('dragAndDrop',[_0x27c67d,_0x350c7a,_0xbe0c68]),this[_0x4a6dab(_0x236555._0x375e64)]();}async[_0x35457f(0xb5)](_0x58f12f,_0x27be9d){const _0x42a292={_0x2f7075:0xb5,_0x4707fe:0xcb},_0xe513ef=_0x35457f;this[_0xe513ef(0xd6)](_0xe513ef(_0x42a292._0x2f7075),[_0x58f12f,_0x27be9d]),this[_0xe513ef(_0x42a292._0x4707fe)]();}async[_0x35457f(0xc7)](_0xd0bfa1,_0x305478){const _0x1e4bfc={_0x5d71d4:0xd6},_0x55093f=_0x35457f;this[_0x55093f(_0x1e4bfc._0x5d71d4)](_0x55093f(0xc7),[_0xd0bfa1,_0x305478]),this[_0x55093f(0xcb)]();}async[_0x35457f(0xb4)](_0x7b1ed3){const _0x308d9f={_0x45580d:0xd6,_0x4d94f9:0xa9},_0x41ebd5=_0x35457f;return this[_0x41ebd5(_0x308d9f._0x45580d)]('count',[_0x7b1ed3]),this[_0x41ebd5(_0x308d9f._0x4d94f9)]['countByDefault']??0x1;}async['textContent'](_0x582e4f){const _0x1cdbef={_0x21b141:0xef},_0x33631a=_0x35457f;return this['record'](_0x33631a(_0x1cdbef._0x21b141),[_0x582e4f]),this['behavior']['textContentByDefault']??'';}async[_0x35457f(0xf5)](_0x1f1cbc){const _0x60ae35={_0x570fdb:0xd6,_0x140f91:0xa9,_0x1a6d0d:0xe0},_0x22be87=_0x35457f;return this[_0x22be87(_0x60ae35._0x570fdb)]('inputValue',[_0x1f1cbc]),this[_0x22be87(_0x60ae35._0x140f91)][_0x22be87(_0x60ae35._0x1a6d0d)]??'';}async[_0x35457f(0xde)](_0x5e24e4){const _0x10e6a9={_0x30191b:0xa7},_0x286374=_0x35457f;return this['record']('checkedState',[_0x5e24e4]),this[_0x286374(0xa9)][_0x286374(_0x10e6a9._0x30191b)]??null;}async[_0x35457f(0xc1)](_0xc880dd){const _0x213d4d={_0x14e8de:0xd6,_0x4ca968:0xc1,_0x1058d9:0xa9,_0xfa9037:0x106},_0x2a01ba=_0x35457f;return this[_0x2a01ba(_0x213d4d._0x14e8de)](_0x2a01ba(_0x213d4d._0x4ca968),[_0xc880dd]),this[_0x2a01ba(_0x213d4d._0x1058d9)][_0x2a01ba(_0x213d4d._0xfa9037)]??!![];}async['isDisabled'](_0x574c80){const _0x530cb1={_0x1ed51c:0xd6},_0x593e89=_0x35457f;return this[_0x593e89(_0x530cb1._0x1ed51c)]('isDisabled',[_0x574c80]),this[_0x593e89(0xa9)][_0x593e89(0x109)]??![];}async['getAttribute'](_0x24a072,_0x19d815){const _0x20c74a={_0x51e3f7:0xd6,_0xee9d47:0xd2,_0x44891a:0xa9},_0x2fa332=_0x35457f;return this[_0x2fa332(_0x20c74a._0x51e3f7)](_0x2fa332(_0x20c74a._0xee9d47),[_0x24a072,_0x19d815]),this[_0x2fa332(_0x20c74a._0x44891a)][_0x2fa332(0xc8)]?.[_0x19d815]??null;}async['waitFor'](_0x4f563e,_0x2293c8){const _0x260365={_0x58b377:0xaa},_0x36457e=_0x35457f;this[_0x36457e(0xd6)](_0x36457e(_0x260365._0x58b377),[_0x4f563e,_0x2293c8]);}async[_0x35457f(0xb1)](_0x3bdf4e,_0x5412fc){const _0x4cb7db={_0xddfb9a:0xb1},_0x186f3a=_0x35457f;this[_0x186f3a(0xd6)](_0x186f3a(_0x4cb7db._0xddfb9a),[_0x3bdf4e,_0x5412fc]);}async[_0x35457f(0xbe)](_0x1c9ea1,_0x1110ea){const _0x19ea37={_0x49a5df:0xd6},_0x27baaf=_0x35457f;this[_0x27baaf(_0x19ea37._0x49a5df)]('waitForText',[_0x1c9ea1,_0x1110ea]);}async[_0x35457f(0xec)](_0x5277b7){const _0x1351a0={_0x5877a4:0xec},_0x4bc318=_0x35457f;this['record'](_0x4bc318(_0x1351a0._0x5877a4),[_0x5277b7]);}async[_0x35457f(0xcd)](_0x19b980,_0xac0995){const _0x145b16={_0x30da52:0xd6},_0x4aeba2=_0x35457f;this[_0x4aeba2(_0x145b16._0x30da52)](_0x4aeba2(0xcd),[_0x19b980,_0xac0995]);}async[_0x35457f(0xc2)](_0x23fefc,_0x302c04){const _0x40e834={_0x5786ea:0xd6,_0x180cde:0xe7},_0x18bdbd=_0x35457f;this[_0x18bdbd(_0x40e834._0x5786ea)]('goto',[_0x23fefc,_0x302c04]),this[_0x18bdbd(_0x40e834._0x180cde)]=_0x23fefc;}async[_0x35457f(0xf6)](_0x2c758a){const _0x17d6e2=_0x35457f;this[_0x17d6e2(0xd6)]('reload',[_0x2c758a]);}async[_0x35457f(0x113)](_0x357b3d){const _0x59a41f={_0x5d3d8a:0xd6},_0x29d6a1=_0x35457f;this[_0x29d6a1(_0x59a41f._0x5d3d8a)]('goBack',[_0x357b3d]);}async['goForward'](_0x53410d){const _0x37bec9={_0x3d25e9:0xca},_0x56896d=_0x35457f;this[_0x56896d(0xd6)](_0x56896d(_0x37bec9._0x3d25e9),[_0x53410d]);}async[_0x35457f(0xa4)](_0x203567){const _0x2c8690={_0x5c3271:0xd6,_0xe377:0xa4},_0x572e35=_0x35457f;return this[_0x572e35(_0x2c8690._0x5c3271)](_0x572e35(_0x2c8690._0xe377),[_0x203567]),void 0x0;}async[_0x35457f(0x104)](_0x4be6d1,_0x57aac1){const _0x3226cb={_0x549265:0xd6},_0x50b13a=_0x35457f;return this[_0x50b13a(_0x3226cb._0x549265)](_0x50b13a(0x104),[_0x4be6d1,_0x57aac1]),void 0x0;}async[_0x35457f(0x10a)](_0x48f1b9){const _0x551552={_0x37ca34:0xd6,_0x173c18:0x10a,_0x48a900:0xcf,_0x1ebef6:0xf0,_0x307442:0xce,_0x566d1c:0xa9,_0x5d840a:0xa3},_0x768646=_0x35457f;this[_0x768646(_0x551552._0x37ca34)](_0x768646(_0x551552._0x173c18),[_0x48f1b9]);if(_0x48f1b9['steps'][_0x768646(_0x551552._0x48a900)]!==0x1||_0x48f1b9['steps'][0x0][_0x768646(_0x551552._0x1ebef6)]!==_0x768646(_0x551552._0x307442))return null;const _0x31b15e=_0x48f1b9[_0x768646(0xf2)][0x0]['ref'],_0x1bb107=this[_0x768646(_0x551552._0x566d1c)][_0x768646(_0x551552._0x5d840a)]?.[_0x31b15e];return _0x1bb107??null;}async[_0x35457f(0xf8)](_0x32022b){const _0x50ad0d={_0x1e4dd4:0xac},_0x26a9a9=_0x35457f;return this[_0x26a9a9(0xd6)](_0x26a9a9(0xf8),[_0x32022b]),Buffer[_0x26a9a9(_0x50ad0d._0x1e4dd4)]('fake-png');}async[_0x35457f(0x117)](_0x394f37){const _0x451d23={_0x133f5:0xf2,_0x2f52e9:0xf0,_0x2801e5:0xce,_0x5164c3:0xfc,_0x461cc1:0x100},_0x1613de=_0x35457f;this[_0x1613de(0xd6)](_0x1613de(0x117),[_0x394f37]);if(_0x394f37[_0x1613de(_0x451d23._0x133f5)]['length']===0x1&&_0x394f37[_0x1613de(0xf2)][0x0][_0x1613de(_0x451d23._0x2f52e9)]===_0x1613de(_0x451d23._0x2801e5)){const _0x3234e2=_0x394f37['steps'][0x0]['ref'];return this['behavior'][_0x1613de(_0x451d23._0x5164c3)]?.[_0x3234e2]??_0x1613de(0xa1)+_0x3234e2+_0x1613de(_0x451d23._0x461cc1);}return _0x1613de(0x10c);}},FakeContext=class{constructor(_0x30c621,_0x5c1adf,_0x3f61ee){const _0x3c5b25={_0x2cec9a:0xbd,_0x5954cc:0xc0,_0x1943b1:0xd8},_0x8972c5=_0x35457f;this[_0x8972c5(_0x3c5b25._0x2cec9a)]=_0x30c621,this['behavior']=_0x5c1adf,this['scope']=_0x3f61ee;const _0x14749f=new FakePage(_0x30c621,_0x5c1adf,_0x3f61ee+_0x8972c5(0x10d),_0x5c1adf[_0x8972c5(_0x3c5b25._0x5954cc)]??'about:blank');_0x5c1adf[_0x8972c5(0xf4)]&&(_0x14749f[_0x8972c5(0xcc)]=()=>{const _0xbf6516=_0x8972c5;this['emitFakePopup'](_0x5c1adf[_0xbf6516(0xf4)]);}),this[_0x8972c5(0xc3)]=[_0x14749f],this[_0x8972c5(_0x3c5b25._0x1943b1)]={..._0x5c1adf[_0x8972c5(0xc4)]??{}},this[_0x8972c5(0xf1)]={..._0x5c1adf[_0x8972c5(0xe6)]??{}};}[_0x35457f(0xbd)];[_0x35457f(0xa9)];['scope'];static{__name(this,'FakeContext');}[_0x35457f(0xc3)];[_0x35457f(0x114)]=0x0;[_0x35457f(0x10f)]=[];[_0x35457f(0xd8)];[_0x35457f(0xf1)];[_0x35457f(0xa8)]=new Set();['record'](_0x470e0e,_0x592c4a){const _0x643acc={_0x111260:0xc6,_0x4908c6:0xd3},_0x3255cf=_0x35457f;this[_0x3255cf(0xbd)][_0x3255cf(_0x643acc._0x111260)]({'scope':this[_0x3255cf(_0x643acc._0x4908c6)],'method':_0x470e0e,'args':_0x592c4a});}['pages'](){return this['pageList'];}[_0x35457f(0xbf)](){const _0x2db682={_0x454a85:0x114},_0x192c58=_0x35457f,_0x220ae8=this[_0x192c58(0xc3)][this[_0x192c58(_0x2db682._0x454a85)]];if(!_0x220ae8)throw new DriverError('no\x20active\x20page\x20in\x20context',{'activeIdx':this['activeIdx']});return _0x220ae8;}[_0x35457f(0xb9)](){const _0x87a30b={_0x41a64f:0xb9},_0x14f00e=_0x35457f;return this[_0x14f00e(0xa9)][_0x14f00e(_0x87a30b._0x41a64f)]??[];}[_0x35457f(0x115)](){const _0x240e09=_0x35457f;return this['behavior'][_0x240e09(0x115)]??[];}async[_0x35457f(0xdf)](_0xe4f38f){const _0x5a8452={_0x13a2a0:0xd6,_0x62a955:0xdf,_0x2e8c6a:0x114,_0x3e4cf8:0x10f,_0x4d0b3c:0xcf},_0x5a194e=_0x35457f;this[_0x5a194e(_0x5a8452._0x13a2a0)](_0x5a194e(_0x5a8452._0x62a955),[_0xe4f38f]);if(_0xe4f38f<0x0||_0xe4f38f>=this[_0x5a194e(0xc3)][_0x5a194e(0xcf)])throw new DriverError(_0x5a194e(0xb6),{'index':_0xe4f38f,'available':this[_0x5a194e(0xc3)][_0x5a194e(0xcf)]});this[_0x5a194e(_0x5a8452._0x2e8c6a)]=_0xe4f38f,this[_0x5a194e(_0x5a8452._0x3e4cf8)][_0x5a194e(_0x5a8452._0x4d0b3c)]=0x0;}[_0x35457f(0xb0)](_0x4b3d81){const _0x24c036={_0x555ccc:0xa8},_0x26ed8d=_0x35457f;return subscribe(this[_0x26ed8d(_0x24c036._0x555ccc)],_0x4b3d81);}[_0x35457f(0xea)](_0x24bf7a){const _0x33d4a3={_0x4dc0b4:0x10e,_0x50f1e1:0xc3,_0x23ce15:0xcf,_0x50ef5d:0xa8},_0x43339c=_0x35457f,_0x241622=this[_0x43339c(0xd3)]+_0x43339c(_0x33d4a3._0x4dc0b4)+this[_0x43339c(_0x33d4a3._0x50f1e1)][_0x43339c(0xcf)],_0x42d655=new FakePage(this[_0x43339c(0xbd)],this['behavior'],_0x241622,_0x24bf7a);this[_0x43339c(_0x33d4a3._0x50f1e1)]['push'](_0x42d655);const _0x20bf5b=this['pageList'][_0x43339c(_0x33d4a3._0x23ce15)]-0x1;for(const _0x297844 of this[_0x43339c(_0x33d4a3._0x50ef5d)]){try{_0x297844({'index':_0x20bf5b,'url':_0x24bf7a});}catch{}}return _0x20bf5b;}[_0x35457f(0x102)](_0x20d14a){const _0x2f9076={_0x1453e9:0xcf},_0x349fbe=_0x35457f;if(_0x20d14a<0x0||_0x20d14a>=this['pageList']['length'])throw new DriverError(_0x349fbe(0xb6),{'index':_0x20d14a,'available':this[_0x349fbe(0xc3)][_0x349fbe(_0x2f9076._0x1453e9)]});this['pageList'][_0x349fbe(0xab)](_0x20d14a,0x1);}async['enterFrame'](_0xd144b3){const _0x156936={_0x298091:0xd6},_0x2b213d=_0x35457f;this[_0x2b213d(_0x156936._0x298091)]('enterFrame',[_0xd144b3]);if(!_0xd144b3[_0x2b213d(0xf2)][_0x2b213d(0xcf)])throw new LocatorError('enterFrame\x20called\x20with\x20empty\x20locator',{'locator':_0xd144b3});this['frameStack']['push'](_0xd144b3);}async[_0x35457f(0x118)](){const _0xa789e5={_0x585d16:0x118,_0x349c2a:0x10f},_0x28dcb1=_0x35457f;this['record'](_0x28dcb1(_0xa789e5._0x585d16),[]);if(this[_0x28dcb1(0x10f)][_0x28dcb1(0xcf)]===0x0)throw new DriverError(_0x28dcb1(0x105),{});this[_0x28dcb1(_0xa789e5._0x349c2a)][_0x28dcb1(0xfd)]();}async[_0x35457f(0x111)](_0x4b499f,_0xb7544){const _0x5a220f={_0x120d09:0xd8},_0x1b41b7=_0x35457f;this[_0x1b41b7(0xd6)](_0x1b41b7(0x111),[_0x4b499f,_0xb7544]),this[_0x1b41b7(_0x5a220f._0x120d09)][_0x4b499f]=_0xb7544;}async['getLocalStorage'](_0x4d0bd8){const _0x5dffd9={_0x56f247:0xfa,_0x2a8bc0:0xd8},_0x1a7d08=_0x35457f;return this[_0x1a7d08(0xd6)](_0x1a7d08(_0x5dffd9._0x56f247),[_0x4d0bd8]),this[_0x1a7d08(_0x5dffd9._0x2a8bc0)][_0x4d0bd8]??null;}async[_0x35457f(0x110)](_0x571561,_0x565a6e,_0x7cef8){const _0x25bc4a={_0x536a64:0xf1},_0x1efd6b=_0x35457f;this[_0x1efd6b(0xd6)](_0x1efd6b(0x110),[_0x571561,_0x565a6e,_0x7cef8]),this[_0x1efd6b(_0x25bc4a._0x536a64)][_0x571561]=_0x565a6e;}async[_0x35457f(0xdd)](_0x5b5595){const _0x51edf3={_0x4f0b32:0xd6},_0x570008=_0x35457f;return this[_0x570008(_0x51edf3._0x4f0b32)](_0x570008(0xdd),[_0x5b5595]),this[_0x570008(0xf1)][_0x5b5595]??null;}async[_0x35457f(0x103)](_0x2c4e9b){const _0x14b96f=_0x35457f;this['record'](_0x14b96f(0x103),[_0x2c4e9b]);}async[_0x35457f(0xa4)](_0x3cdcd0){const _0x3aa4fa=_0x35457f;return this['record'](_0x3aa4fa(0xa4),[_0x3cdcd0]),void 0x0;}async[_0x35457f(0xfe)](){const _0x4b96e7={_0x3bff27:0xd6,_0x5afaf8:0xfe},_0x4274d3=_0x35457f;this[_0x4274d3(_0x4b96e7._0x3bff27)](_0x4274d3(_0x4b96e7._0x5afaf8),[]);}[_0x35457f(0xe3)](){const _0x2fbefe=_0x35457f;return this[_0x2fbefe(0x10f)]['length'];}},FakeWebDriver=class{constructor(_0xbe61b2={}){this['behavior']=_0xbe61b2,this['recorder']=createRecorder();}[_0x35457f(0xa9)];static{__name(this,'FakeWebDriver');}['launched']=![];[_0x35457f(0xbd)];[_0x35457f(0xb2)]=[];async[_0x35457f(0x107)](_0x59b795){const _0x230219={_0x1229d7:0x107},_0x29e960=_0x35457f;this[_0x29e960(0xbd)][_0x29e960(0xc6)]({'scope':'driver','method':_0x29e960(_0x230219._0x1229d7),'args':[_0x59b795]}),this[_0x29e960(0xba)]=!![];}async['newContext'](_0xedfb76){const _0x520b71={_0x539ec9:0x101,_0x1b8c04:0xb2,_0x35eff8:0xc6},_0x276e8d=_0x35457f;this['recorder'][_0x276e8d(0xc6)]({'scope':'driver','method':_0x276e8d(0xd0),'args':[_0xedfb76]});if(!this['launched'])throw new DriverError(_0x276e8d(_0x520b71._0x539ec9),{});const _0x275552=new FakeContext(this[_0x276e8d(0xbd)],this[_0x276e8d(0xa9)],_0x276e8d(0xe5)+this['contexts'][_0x276e8d(0xcf)]);return this[_0x276e8d(_0x520b71._0x1b8c04)][_0x276e8d(_0x520b71._0x35eff8)](_0x275552),_0x275552;}async[_0x35457f(0xfe)](){const _0x214547={_0x455cce:0xbd,_0x3623af:0xd5,_0x13df0a:0xba},_0xd8ac02=_0x35457f;this[_0xd8ac02(_0x214547._0x455cce)][_0xd8ac02(0xc6)]({'scope':_0xd8ac02(_0x214547._0x3623af),'method':_0xd8ac02(0xfe),'args':[]}),this[_0xd8ac02(_0x214547._0x13df0a)]=![];}[_0x35457f(0x112)](){return void 0x0;}async[_0x35457f(0xb8)](){throw new DriverError('connectShared\x20not\x20supported\x20by\x20FakeWebDriver',{});}[_0x35457f(0xbb)](){const _0x59a110={_0x3d3c49:0x116},_0x378e9a=_0x35457f;throw new DriverError(_0x378e9a(_0x59a110._0x3d3c49),{});}[_0x35457f(0xa2)](){const _0x3be858={_0x9458db:0xa2},_0x1776cd=_0x35457f;return this[_0x1776cd(0xbd)][_0x1776cd(_0x3be858._0x9458db)]();}['callsFor'](_0x5c14b7){const _0x5b83d2=_0x35457f;return this['recorder'][_0x5b83d2(0xa2)]()[_0x5b83d2(0xad)](_0x1ef49a=>_0x1ef49a[_0x5b83d2(0xdb)]===_0x5c14b7);}};export{FakeWebDriver};
1
+ const _0x4fda48=_0x3da6;(function(_0x14a289,_0x1167ca){const _0x54b196={_0xae0a86:0x196,_0x260c76:0x173,_0x27eab6:0x1ab,_0x245d8d:0x1ba,_0x5706ff:0x171,_0x22113e:0x1a6,_0x26434f:0x169,_0x4de5d2:0x180,_0x543a42:0x14b,_0x477d21:0x1c1},_0x27ced1=_0x3da6,_0x11b690=_0x14a289();while(!![]){try{const _0x2a51a7=parseInt(_0x27ced1(0x198))/0x1*(parseInt(_0x27ced1(_0x54b196._0xae0a86))/0x2)+parseInt(_0x27ced1(_0x54b196._0x260c76))/0x3*(-parseInt(_0x27ced1(_0x54b196._0x27eab6))/0x4)+parseInt(_0x27ced1(_0x54b196._0x245d8d))/0x5*(parseInt(_0x27ced1(_0x54b196._0x5706ff))/0x6)+-parseInt(_0x27ced1(_0x54b196._0x22113e))/0x7+-parseInt(_0x27ced1(_0x54b196._0x26434f))/0x8*(parseInt(_0x27ced1(_0x54b196._0x4de5d2))/0x9)+parseInt(_0x27ced1(0x189))/0xa+-parseInt(_0x27ced1(_0x54b196._0x543a42))/0xb*(-parseInt(_0x27ced1(_0x54b196._0x477d21))/0xc);if(_0x2a51a7===_0x1167ca)break;else _0x11b690['push'](_0x11b690['shift']());}catch(_0x4f01f8){_0x11b690['push'](_0x11b690['shift']());}}}(_0x202f,0x5c8e1));var __defProp=Object[_0x4fda48(0x157)],__name=(_0x1f3a89,_0x2d4c12)=>__defProp(_0x1f3a89,_0x4fda48(0x1af),{'value':_0x2d4c12,'configurable':!![]});function subscribe(_0x57d31d,_0x2b934d){const _0x5eda5a={_0x35f4dc:0x17c},_0x704c0f={_0x11ab8a:0x16d},_0x2f242a=_0x4fda48;return _0x57d31d[_0x2f242a(_0x5eda5a._0x35f4dc)](_0x2b934d),()=>{const _0x4c7f69=_0x2f242a;_0x57d31d[_0x4c7f69(_0x704c0f._0x11ab8a)](_0x2b934d);};}__name(subscribe,_0x4fda48(0x1aa));import{UnotestError}from'@unotest/core';var DriverError=class extends UnotestError{static{__name(this,'DriverError');}},LocatorError=class extends UnotestError{static{__name(this,_0x4fda48(0x19f));}};function _0x3da6(_0x55a219,_0x1b6fd6){_0x55a219=_0x55a219-0x149;const _0x202fb1=_0x202f();let _0x3da601=_0x202fb1[_0x55a219];if(_0x3da6['dhOROi']===undefined){var _0x1c97f2=function(_0x4d7db9){const _0x37d997='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1f3a89='',_0x2d4c12='';for(let _0x57d31d=0x0,_0x2b934d,_0x5a9206,_0x1a24df=0x0;_0x5a9206=_0x4d7db9['charAt'](_0x1a24df++);~_0x5a9206&&(_0x2b934d=_0x57d31d%0x4?_0x2b934d*0x40+_0x5a9206:_0x5a9206,_0x57d31d++%0x4)?_0x1f3a89+=String['fromCharCode'](0xff&_0x2b934d>>(-0x2*_0x57d31d&0x6)):0x0){_0x5a9206=_0x37d997['indexOf'](_0x5a9206);}for(let _0x50f9e8=0x0,_0x2704ee=_0x1f3a89['length'];_0x50f9e8<_0x2704ee;_0x50f9e8++){_0x2d4c12+='%'+('00'+_0x1f3a89['charCodeAt'](_0x50f9e8)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2d4c12);};_0x3da6['jvknID']=_0x1c97f2,_0x3da6['BkwqyM']={},_0x3da6['dhOROi']=!![];}const _0x1b2ad2=_0x202fb1[0x0],_0x519254=_0x55a219+_0x1b2ad2,_0x14e3da=_0x3da6['BkwqyM'][_0x519254];return!_0x14e3da?(_0x3da601=_0x3da6['jvknID'](_0x3da601),_0x3da6['BkwqyM'][_0x519254]=_0x3da601):_0x3da601=_0x14e3da,_0x3da601;}function createRecorder(){const _0x45c7af={_0x537ad7:0x1b8},_0x428a9b=_0x4fda48,_0x5a9206=[];let _0x1a24df=0x0;return{'push':__name(_0x50f9e8=>_0x5a9206[_0x428a9b(0x1b8)]({..._0x50f9e8,'seq':_0x1a24df++}),_0x428a9b(_0x45c7af._0x537ad7)),'calls':__name(()=>_0x5a9206,_0x428a9b(0x16e))};}__name(createRecorder,'createRecorder');var FakePage=class{constructor(_0x2704ee,_0x1b7fca,_0x3ca7e6,_0x326544){const _0x3dc491={_0x3ef3ce:0x19c},_0x55491d=_0x4fda48;this[_0x55491d(_0x3dc491._0x3ef3ce)]=_0x2704ee,this[_0x55491d(0x17d)]=_0x1b7fca,this[_0x55491d(0x199)]=_0x3ca7e6,this[_0x55491d(0x1a1)]=_0x326544;}[_0x4fda48(0x19c)];['behavior'];['scope'];static{__name(this,_0x4fda48(0x170));}[_0x4fda48(0x1a1)];[_0x4fda48(0x149)];['record'](_0x1475a8,_0x300677){const _0x386db1={_0x2c0461:0x1b8},_0x34400b=_0x4fda48;this['recorder'][_0x34400b(_0x386db1._0x2c0461)]({'scope':this[_0x34400b(0x199)],'method':_0x1475a8,'args':_0x300677});}[_0x4fda48(0x176)](){const _0x167112={_0x649841:0x17d,_0x3217be:0x174},_0x9a4b8f=_0x4fda48;if(this[_0x9a4b8f(_0x167112._0x649841)][_0x9a4b8f(_0x167112._0x3217be)]){const _0x55179b=this['behavior']['errorOnNextAction'];this[_0x9a4b8f(_0x167112._0x649841)]['errorOnNextAction']=void 0x0;throw _0x55179b;}}[_0x4fda48(0x1ad)](){const _0x148df0=_0x4fda48;return this[_0x148df0(0x1a1)];}async[_0x4fda48(0x17f)](){const _0x4d5476={_0x1de29f:0x15e,_0x214ed8:0x17f,_0x56d411:0x160},_0x4c5ded=_0x4fda48;return this[_0x4c5ded(_0x4d5476._0x1de29f)](_0x4c5ded(_0x4d5476._0x214ed8),[]),_0x4c5ded(_0x4d5476._0x56d411);}async['click'](_0x56215a,_0x4636fa){const _0x234f3e={_0x4107aa:0x176,_0x5292cb:0x149},_0x617758=_0x4fda48;this[_0x617758(0x15e)](_0x617758(0x1bc),[_0x56215a,_0x4636fa]),this[_0x617758(_0x234f3e._0x4107aa)](),this[_0x617758(_0x234f3e._0x5292cb)]?.();}async['doubleClick'](_0x1628a5,_0x4ef8cb){const _0x30ef97={_0x3a4b43:0x15e},_0x5bfd86=_0x4fda48;this[_0x5bfd86(_0x30ef97._0x3a4b43)](_0x5bfd86(0x1bd),[_0x1628a5,_0x4ef8cb]),this[_0x5bfd86(0x176)]();}async[_0x4fda48(0x1bf)](_0x38bdaf,_0x52c54a,_0x4d4e43){const _0x1d559e=_0x4fda48;this[_0x1d559e(0x15e)](_0x1d559e(0x1bf),[_0x38bdaf,_0x52c54a,_0x4d4e43]),this[_0x1d559e(0x176)]();}async[_0x4fda48(0x1a2)](_0x1a76e7,_0x37f08e,_0x27e5db){const _0x20d938={_0x2c630f:0x15e,_0x330ab9:0x1a2},_0x24df0a=_0x4fda48;this[_0x24df0a(_0x20d938._0x2c630f)](_0x24df0a(_0x20d938._0x330ab9),[_0x1a76e7,_0x37f08e,_0x27e5db]),this['maybeThrow']();}async[_0x4fda48(0x18d)](_0x1cf402,_0x1883f0){const _0x123d3a={_0x1ff6e0:0x176},_0x5b2a76=_0x4fda48;this[_0x5b2a76(0x15e)](_0x5b2a76(0x18d),[_0x1cf402,_0x1883f0]),this[_0x5b2a76(_0x123d3a._0x1ff6e0)]();}async[_0x4fda48(0x17e)](_0x6913ab,_0x491363){const _0x4bb455={_0x33d7fc:0x15e,_0x2c7086:0x176},_0xc59666=_0x4fda48;this[_0xc59666(_0x4bb455._0x33d7fc)](_0xc59666(0x17e),[_0x6913ab,_0x491363]),this[_0xc59666(_0x4bb455._0x2c7086)]();}async[_0x4fda48(0x151)](_0x3bf56d,_0x132a21,_0x35dc04){const _0x5a4541=_0x4fda48;this[_0x5a4541(0x15e)](_0x5a4541(0x151),[_0x3bf56d,_0x132a21,_0x35dc04]),this['maybeThrow']();}async[_0x4fda48(0x1a0)](_0x29f5cb,_0x615f7e){const _0x2db6e4={_0x3ff8d5:0x1a0},_0x43260a=_0x4fda48;this['record'](_0x43260a(_0x2db6e4._0x3ff8d5),[_0x29f5cb,_0x615f7e]),this[_0x43260a(0x176)]();}async[_0x4fda48(0x16b)](_0xa41046){const _0x400013={_0x356f8f:0x15e,_0x22f392:0x16b},_0x102020=_0x4fda48;this[_0x102020(_0x400013._0x356f8f)](_0x102020(_0x400013._0x22f392),[_0xa41046]),this['maybeThrow']();}async[_0x4fda48(0x1b0)](_0x41aa7a,_0x1f4459,_0x9729fd){const _0x453028={_0xe4e44a:0x176},_0x140d14=_0x4fda48;this[_0x140d14(0x15e)]('dragAndDrop',[_0x41aa7a,_0x1f4459,_0x9729fd]),this[_0x140d14(_0x453028._0xe4e44a)]();}async[_0x4fda48(0x1a3)](_0x1e8dfd,_0x4abb85){const _0x10c0f1={_0x361245:0x1a3},_0x174d81=_0x4fda48;this[_0x174d81(0x15e)](_0x174d81(_0x10c0f1._0x361245),[_0x1e8dfd,_0x4abb85]),this['maybeThrow']();}async[_0x4fda48(0x1bb)](_0x471ffe,_0x24adcb){const _0x44d596={_0xdd43d5:0x15e,_0x5ccad5:0x176},_0x42caa4=_0x4fda48;this[_0x42caa4(_0x44d596._0xdd43d5)](_0x42caa4(0x1bb),[_0x471ffe,_0x24adcb]),this[_0x42caa4(_0x44d596._0x5ccad5)]();}async[_0x4fda48(0x155)](_0x58c6ad){const _0xd25668=_0x4fda48;return this[_0xd25668(0x15e)]('count',[_0x58c6ad]),this[_0xd25668(0x17d)]['countByDefault']??0x1;}async[_0x4fda48(0x1b3)](_0x51c23b){const _0x5f5184={_0x24ad4e:0x1b3,_0x20b2f5:0x17d},_0x3836dc=_0x4fda48;return this['record'](_0x3836dc(_0x5f5184._0x24ad4e),[_0x51c23b]),this[_0x3836dc(_0x5f5184._0x20b2f5)][_0x3836dc(0x16f)]??'';}async[_0x4fda48(0x188)](_0x4adfa5){const _0x161e73={_0x3dff5c:0x188,_0x519a31:0x17d,_0x1e208b:0x16f},_0x276c5c=_0x4fda48;return this[_0x276c5c(0x15e)](_0x276c5c(_0x161e73._0x3dff5c),[_0x4adfa5]),this['behavior']['innerTextByDefault']??this[_0x276c5c(_0x161e73._0x519a31)][_0x276c5c(_0x161e73._0x1e208b)]??'';}async['inputValue'](_0x2ed382){const _0x36bce0={_0x1c0df5:0x195},_0x2e776a=_0x4fda48;return this[_0x2e776a(0x15e)](_0x2e776a(_0x36bce0._0x1c0df5),[_0x2ed382]),this[_0x2e776a(0x17d)]['inputValueByDefault']??'';}async['checkedState'](_0x5ee839){const _0x48b51f={_0x4e16f7:0x1c3},_0x544bb8=_0x4fda48;return this['record'](_0x544bb8(_0x48b51f._0x4e16f7),[_0x5ee839]),this[_0x544bb8(0x17d)]['checkedStateByDefault']??null;}async[_0x4fda48(0x186)](_0x4a0c4f){const _0x4a0e37=_0x4fda48;return this[_0x4a0e37(0x15e)]('isVisible',[_0x4a0c4f]),this['behavior'][_0x4a0e37(0x165)]??!![];}async[_0x4fda48(0x164)](_0x19af53){const _0x4b4067={_0x20b3b3:0x15e,_0x18ae9d:0x164,_0x29fc20:0x17d,_0x12fcc:0x1a9},_0x30dda7=_0x4fda48;return this[_0x30dda7(_0x4b4067._0x20b3b3)](_0x30dda7(_0x4b4067._0x18ae9d),[_0x19af53]),this[_0x30dda7(_0x4b4067._0x29fc20)][_0x30dda7(_0x4b4067._0x12fcc)]??![];}async[_0x4fda48(0x1a8)](_0x47e36e,_0x530aff){const _0x16aa25={_0x10ca23:0x15e,_0x1f1f5e:0x168},_0x19c714=_0x4fda48;return this[_0x19c714(_0x16aa25._0x10ca23)]('getAttribute',[_0x47e36e,_0x530aff]),this['behavior'][_0x19c714(_0x16aa25._0x1f1f5e)]?.[_0x530aff]??null;}async['waitFor'](_0x1af5be,_0x177c4b){const _0x67daa4={_0x253967:0x15e,_0x2e530a:0x1ae},_0x3f8c0a=_0x4fda48;this[_0x3f8c0a(_0x67daa4._0x253967)](_0x3f8c0a(_0x67daa4._0x2e530a),[_0x1af5be,_0x177c4b]);}async[_0x4fda48(0x178)](_0x29a365,_0x57137e){const _0x163b9c=_0x4fda48;this[_0x163b9c(0x15e)]('waitForUrl',[_0x29a365,_0x57137e]);}async[_0x4fda48(0x17b)](_0x4557fd,_0x349bf8){const _0x46a9a1={_0x4b7e4a:0x17b},_0x88910b=_0x4fda48;this[_0x88910b(0x15e)](_0x88910b(_0x46a9a1._0x4b7e4a),[_0x4557fd,_0x349bf8]);}async['waitForNavigation'](_0x23d21c){const _0x14e0cc={_0x3afd1c:0x16a},_0x4d7560=_0x4fda48;this[_0x4d7560(0x15e)](_0x4d7560(_0x14e0cc._0x3afd1c),[_0x23d21c]);}async[_0x4fda48(0x185)](_0x238dd1,_0x181f98){const _0x33f1ed=_0x4fda48;this['record'](_0x33f1ed(0x185),[_0x238dd1,_0x181f98]);}async[_0x4fda48(0x1b5)](_0x59c5e5,_0x359b8b){const _0x15d7cf=_0x4fda48;this[_0x15d7cf(0x15e)]('goto',[_0x59c5e5,_0x359b8b]),this[_0x15d7cf(0x1a1)]=_0x59c5e5;}async[_0x4fda48(0x14d)](_0x312b6c){const _0x52fee2={_0x4f3d65:0x15e},_0xfad8eb=_0x4fda48;this[_0xfad8eb(_0x52fee2._0x4f3d65)]('reload',[_0x312b6c]);}async[_0x4fda48(0x193)](_0x1dbf12){const _0x129a28=_0x4fda48;this[_0x129a28(0x15e)](_0x129a28(0x193),[_0x1dbf12]);}async[_0x4fda48(0x172)](_0x22fd05){const _0x196035={_0x580252:0x172},_0x16fc84=_0x4fda48;this[_0x16fc84(0x15e)](_0x16fc84(_0x196035._0x580252),[_0x22fd05]);}async[_0x4fda48(0x163)](_0x27ef00){const _0xae502d={_0x140ddb:0x15e},_0x4ad192=_0x4fda48;return this[_0x4ad192(_0xae502d._0x140ddb)](_0x4ad192(0x163),[_0x27ef00]),void 0x0;}async[_0x4fda48(0x181)](_0x31445b,_0x208b25){const _0x464810={_0x53059c:0x15e},_0x3f44eb=_0x4fda48;return this[_0x3f44eb(_0x464810._0x53059c)](_0x3f44eb(0x181),[_0x31445b,_0x208b25]),void 0x0;}async[_0x4fda48(0x183)](_0x2f59c6){const _0x1ada00={_0x300a49:0x15e,_0x488324:0x1b9,_0x52a234:0x153,_0x25be04:0x1c0,_0x4928ea:0x14a},_0x3e9865=_0x4fda48;this[_0x3e9865(_0x1ada00._0x300a49)](_0x3e9865(0x183),[_0x2f59c6]);if(_0x2f59c6['steps'][_0x3e9865(_0x1ada00._0x488324)]!==0x1||_0x2f59c6[_0x3e9865(_0x1ada00._0x52a234)][0x0][_0x3e9865(_0x1ada00._0x25be04)]!=='ref')return null;const _0x582432=_0x2f59c6['steps'][0x0][_0x3e9865(_0x1ada00._0x4928ea)],_0x4371cb=this['behavior'][_0x3e9865(0x14f)]?.[_0x582432];return _0x4371cb??null;}async[_0x4fda48(0x187)](_0x23d5c8){const _0x58d89c={_0xbbf3e0:0x1a7,_0x5bd4e1:0x1b6},_0x20ab91=_0x4fda48;return this[_0x20ab91(0x15e)]('screenshot',[_0x23d5c8]),Buffer[_0x20ab91(_0x58d89c._0xbbf3e0)](_0x20ab91(_0x58d89c._0x5bd4e1));}async[_0x4fda48(0x15f)](_0x198ec8){const _0x1f8093={_0x1ffeb3:0x15e,_0x41ac7a:0x15f,_0x588f2e:0x153,_0x2d08cc:0x14a,_0x4db790:0x16c},_0x35a290=_0x4fda48;this[_0x35a290(_0x1f8093._0x1ffeb3)](_0x35a290(_0x1f8093._0x41ac7a),[_0x198ec8]);if(_0x198ec8[_0x35a290(_0x1f8093._0x588f2e)][_0x35a290(0x1b9)]===0x1&&_0x198ec8[_0x35a290(_0x1f8093._0x588f2e)][0x0][_0x35a290(0x1c0)]===_0x35a290(_0x1f8093._0x2d08cc)){const _0x31c957=_0x198ec8[_0x35a290(_0x1f8093._0x588f2e)][0x0][_0x35a290(_0x1f8093._0x2d08cc)];return this['behavior'][_0x35a290(0x19d)]?.[_0x31c957]??_0x35a290(_0x1f8093._0x4db790)+_0x31c957+_0x35a290(0x179);}return _0x35a290(0x18b);}},FakeContext=class{constructor(_0x2ca9fa,_0x868c52,_0x3a8b3e){const _0x1741cc={_0x5e2260:0x17d,_0x298f4d:0x162,_0x4966c1:0x14c,_0x4fd762:0x175},_0x26436f={_0x2bfb10:0x191},_0x2d2024=_0x4fda48;this[_0x2d2024(0x19c)]=_0x2ca9fa,this[_0x2d2024(_0x1741cc._0x5e2260)]=_0x868c52,this[_0x2d2024(0x199)]=_0x3a8b3e;const _0x499ab1=new FakePage(_0x2ca9fa,_0x868c52,_0x3a8b3e+'.page0',_0x868c52[_0x2d2024(_0x1741cc._0x298f4d)]??_0x2d2024(0x190));_0x868c52[_0x2d2024(0x15d)]&&(_0x499ab1['onAfterClick']=()=>{const _0x38f89b=_0x2d2024;this[_0x38f89b(_0x26436f._0x2bfb10)](_0x868c52[_0x38f89b(0x15d)]);}),this[_0x2d2024(_0x1741cc._0x4966c1)]=[_0x499ab1],this[_0x2d2024(0x19e)]={..._0x868c52[_0x2d2024(_0x1741cc._0x4fd762)]??{}},this['cookieState']={..._0x868c52['cookies']??{}};}[_0x4fda48(0x19c)];['behavior'];[_0x4fda48(0x199)];static{__name(this,_0x4fda48(0x152));}[_0x4fda48(0x14c)];[_0x4fda48(0x1b7)]=0x0;[_0x4fda48(0x192)]=[];[_0x4fda48(0x19e)];[_0x4fda48(0x1b4)];['newPageListeners']=new Set();[_0x4fda48(0x15e)](_0x1d2464,_0x58d163){const _0x3da40e={_0x429d0d:0x199},_0x3b7340=_0x4fda48;this[_0x3b7340(0x19c)][_0x3b7340(0x1b8)]({'scope':this[_0x3b7340(_0x3da40e._0x429d0d)],'method':_0x1d2464,'args':_0x58d163});}[_0x4fda48(0x194)](){const _0x1f0e21=_0x4fda48;return this[_0x1f0e21(0x14c)];}['activePage'](){const _0xb2d9f1={_0x10fe5c:0x1b7,_0xd750b:0x166,_0x166750:0x1b7},_0x40eb77=_0x4fda48,_0x26c388=this[_0x40eb77(0x14c)][this[_0x40eb77(_0xb2d9f1._0x10fe5c)]];if(!_0x26c388)throw new DriverError(_0x40eb77(_0xb2d9f1._0xd750b),{'activeIdx':this[_0x40eb77(_0xb2d9f1._0x166750)]});return _0x26c388;}[_0x4fda48(0x197)](){const _0x4d4438={_0x6ac605:0x17d},_0x1304cf=_0x4fda48;return this[_0x1304cf(_0x4d4438._0x6ac605)][_0x1304cf(0x197)]??[];}[_0x4fda48(0x158)](){const _0x309468={_0x5ec522:0x17d},_0x1d4c17=_0x4fda48;return this[_0x1d4c17(_0x309468._0x5ec522)][_0x1d4c17(0x158)]??[];}async[_0x4fda48(0x15c)](_0x42d6da){const _0x34da7e={_0x55977c:0x15e,_0x54c66f:0x14c,_0x3c9373:0x1b7,_0x30df29:0x192},_0x3a37e1=_0x4fda48;this[_0x3a37e1(_0x34da7e._0x55977c)]('setActivePage',[_0x42d6da]);if(_0x42d6da<0x0||_0x42d6da>=this[_0x3a37e1(_0x34da7e._0x54c66f)]['length'])throw new DriverError(_0x3a37e1(0x156),{'index':_0x42d6da,'available':this['pageList'][_0x3a37e1(0x1b9)]});this[_0x3a37e1(_0x34da7e._0x3c9373)]=_0x42d6da,this[_0x3a37e1(_0x34da7e._0x30df29)][_0x3a37e1(0x1b9)]=0x0;}['onNewPage'](_0x30fc4e){const _0x2a0c07={_0x10857f:0x1b1},_0x3f4455=_0x4fda48;return subscribe(this[_0x3f4455(_0x2a0c07._0x10857f)],_0x30fc4e);}[_0x4fda48(0x191)](_0x4e7be3){const _0xa57804={_0x3a1d20:0x14c,_0x11f7b2:0x1b8},_0xebb949=_0x4fda48,_0x11bd54=this[_0xebb949(0x199)]+_0xebb949(0x1ac)+this[_0xebb949(_0xa57804._0x3a1d20)]['length'],_0x202c23=new FakePage(this[_0xebb949(0x19c)],this['behavior'],_0x11bd54,_0x4e7be3);this[_0xebb949(0x14c)][_0xebb949(_0xa57804._0x11f7b2)](_0x202c23);const _0x45fd23=this[_0xebb949(0x14c)]['length']-0x1;for(const _0x28869e of this['newPageListeners']){try{_0x28869e({'index':_0x45fd23,'url':_0x4e7be3});}catch{}}return _0x45fd23;}['closeFakePage'](_0x5b0e8e){const _0x1d3d0c={_0x24e85a:0x14c,_0x3a1ddb:0x156,_0x1f9da4:0x1b9,_0x2a7616:0x1be},_0x54a5d4=_0x4fda48;if(_0x5b0e8e<0x0||_0x5b0e8e>=this[_0x54a5d4(_0x1d3d0c._0x24e85a)][_0x54a5d4(0x1b9)])throw new DriverError(_0x54a5d4(_0x1d3d0c._0x3a1ddb),{'index':_0x5b0e8e,'available':this[_0x54a5d4(0x14c)][_0x54a5d4(_0x1d3d0c._0x1f9da4)]});this[_0x54a5d4(0x14c)][_0x54a5d4(_0x1d3d0c._0x2a7616)](_0x5b0e8e,0x1);}async[_0x4fda48(0x1c2)](_0x22f8c8){const _0x18e029={_0xb90837:0x15e},_0x498ea5=_0x4fda48;this[_0x498ea5(_0x18e029._0xb90837)](_0x498ea5(0x1c2),[_0x22f8c8]);if(!_0x22f8c8[_0x498ea5(0x153)][_0x498ea5(0x1b9)])throw new LocatorError('enterFrame\x20called\x20with\x20empty\x20locator',{'locator':_0x22f8c8});this['frameStack']['push'](_0x22f8c8);}async['exitFrame'](){const _0x299773={_0x138cea:0x192,_0x4ad2b9:0x18a,_0x5f06ea:0x1a4},_0x1dd41a=_0x4fda48;this[_0x1dd41a(0x15e)]('exitFrame',[]);if(this[_0x1dd41a(_0x299773._0x138cea)]['length']===0x0)throw new DriverError(_0x1dd41a(_0x299773._0x4ad2b9),{});this[_0x1dd41a(_0x299773._0x138cea)][_0x1dd41a(_0x299773._0x5f06ea)]();}async[_0x4fda48(0x18e)](_0x4dc7ef,_0x427a66){const _0x391b7c=_0x4fda48;this[_0x391b7c(0x15e)](_0x391b7c(0x18e),[_0x4dc7ef,_0x427a66]),this[_0x391b7c(0x19e)][_0x4dc7ef]=_0x427a66;}async[_0x4fda48(0x18f)](_0x114b64){const _0x2050c3={_0x42c48a:0x19e},_0x4511ba=_0x4fda48;return this['record'](_0x4511ba(0x18f),[_0x114b64]),this[_0x4511ba(_0x2050c3._0x42c48a)][_0x114b64]??null;}async[_0x4fda48(0x14e)](_0x154457,_0x4b99c9,_0x56d8f5){const _0x534b70=_0x4fda48;this[_0x534b70(0x15e)](_0x534b70(0x14e),[_0x154457,_0x4b99c9,_0x56d8f5]),this['cookieState'][_0x154457]=_0x4b99c9;}async[_0x4fda48(0x1b2)](_0x51c570){const _0x35b00c={_0x2ea7b2:0x1b2},_0x28037e=_0x4fda48;return this[_0x28037e(0x15e)](_0x28037e(_0x35b00c._0x2ea7b2),[_0x51c570]),this['cookieState'][_0x51c570]??null;}async[_0x4fda48(0x161)](_0x1f2c06){const _0x350ead=_0x4fda48;this['record'](_0x350ead(0x161),[_0x1f2c06]);}async[_0x4fda48(0x163)](_0xdeb256){const _0x3e246e=_0x4fda48;return this[_0x3e246e(0x15e)](_0x3e246e(0x163),[_0xdeb256]),void 0x0;}async[_0x4fda48(0x154)](){const _0x3cb409={_0x351308:0x15e,_0x4ec8de:0x154},_0x3cfa32=_0x4fda48;this[_0x3cfa32(_0x3cb409._0x351308)](_0x3cfa32(_0x3cb409._0x4ec8de),[]);}['frameDepth'](){const _0x320a84=_0x4fda48;return this['frameStack'][_0x320a84(0x1b9)];}},FakeWebDriver=class{constructor(_0x4ba8b4={}){this['behavior']=_0x4ba8b4,this['recorder']=createRecorder();}['behavior'];static{__name(this,_0x4fda48(0x15a));}[_0x4fda48(0x1a5)]=![];[_0x4fda48(0x19c)];[_0x4fda48(0x15b)]=[];async[_0x4fda48(0x19a)](_0x36d76b){const _0x3410e8={_0xf9c15d:0x19a},_0x182fdb=_0x4fda48;this[_0x182fdb(0x19c)][_0x182fdb(0x1b8)]({'scope':_0x182fdb(0x17a),'method':_0x182fdb(_0x3410e8._0xf9c15d),'args':[_0x36d76b]}),this[_0x182fdb(0x1a5)]=!![];}async[_0x4fda48(0x19b)](_0x54e9bc){const _0x4d9d93={_0x1a0a75:0x19c,_0x3b5799:0x1b8,_0xd58538:0x17a,_0xfd6b97:0x1a5,_0x4133ca:0x184},_0x4ca1e8=_0x4fda48;this[_0x4ca1e8(_0x4d9d93._0x1a0a75)][_0x4ca1e8(_0x4d9d93._0x3b5799)]({'scope':_0x4ca1e8(_0x4d9d93._0xd58538),'method':_0x4ca1e8(0x19b),'args':[_0x54e9bc]});if(!this[_0x4ca1e8(_0x4d9d93._0xfd6b97)])throw new DriverError(_0x4ca1e8(_0x4d9d93._0x4133ca),{});const _0x31e610=new FakeContext(this[_0x4ca1e8(0x19c)],this[_0x4ca1e8(0x17d)],_0x4ca1e8(0x18c)+this['contexts']['length']);return this[_0x4ca1e8(0x15b)][_0x4ca1e8(_0x4d9d93._0x3b5799)](_0x31e610),_0x31e610;}async['close'](){const _0x4fd0ea={_0x432caf:0x19c,_0x545292:0x1b8,_0x5d2a6b:0x17a,_0x23719b:0x1a5},_0x2018e8=_0x4fda48;this[_0x2018e8(_0x4fd0ea._0x432caf)][_0x2018e8(_0x4fd0ea._0x545292)]({'scope':_0x2018e8(_0x4fd0ea._0x5d2a6b),'method':_0x2018e8(0x154),'args':[]}),this[_0x2018e8(_0x4fd0ea._0x23719b)]=![];}['wsEndpoint'](){return void 0x0;}async[_0x4fda48(0x167)](){const _0x4cbdf3={_0xf7f237:0x159},_0x7be49=_0x4fda48;throw new DriverError(_0x7be49(_0x4cbdf3._0xf7f237),{});}['attachExisting'](){const _0x2e2c83=_0x4fda48;throw new DriverError(_0x2e2c83(0x182),{});}[_0x4fda48(0x16e)](){return this['recorder']['calls']();}[_0x4fda48(0x150)](_0x3a5a65){const _0x5dc5bc={_0x36a807:0x19c},_0x582435=_0x4fda48;return this[_0x582435(_0x5dc5bc._0x36a807)][_0x582435(0x16e)]()['filter'](_0x2f7163=>_0x2f7163[_0x582435(0x177)]===_0x3a5a65);}};export{FakeWebDriver};function _0x202f(){const _0x5e3b9e=['C3bSAwnL','zMLSBa','A2LUza','mJCYmZe2Avj3B1ft','zw50zxjgCMfTzq','y2HLy2TLzfn0yxrL','B25bzNrLCKnSAwnR','CMvM','otL4vuTvDgO','CgfNzuXPC3q','CMvSB2fK','C2v0q29VA2LL','zwXLBwvUDeHPBNrcEvjLzG','y2fSBhngB3i','C2vSzwn0t3b0Aw9U','rMfRzunVBNrLEhq','C3rLChm','y2XVC2u','y291BNq','CgfNzsbPBMrLEcbVDxqGB2yGCMfUz2u','zgvMAw5LuhjVCgvYDhK','BMv0D29YA0vUDhjPzxm','y29UBMvJDfnOyxjLzcbUB3qGC3vWCg9YDgvKigj5iezHA2vxzwjeCML2zxi','rMfRzvDLyKrYAxzLCG','y29UDgv4Dhm','C2v0qwn0AxzLugfNzq','Cg9WDxbpBKnSAwnR','CMvJB3jK','B3v0zxjive1m','zMfRzsb0AxrSzq','C2f2zvn0B3jHz2vtDgf0zq','Aw5PDgLHBfvYBa','zxzHBhvHDgu','AxneAxnHyMXLza','AxnwAxnPyMXLqNLezwzHDwX0','BM8Gywn0AxzLihbHz2uGAw4Gy29UDgv4Da','y29UBMvJDfnOyxjLza','yxr0CMLIDxrLC0j5rgvMyxvSDa','mZq0s2rKvwLN','D2fPDezVCK5HDMLNyxrPB24','C2nYB2XSsw50B1zPzxC','pgrPDIbKyxrHlxvUB3rLC3qTCMvMpsi','zgvSzxrL','y2fSBhm','Dgv4DenVBNrLBNrcEurLzMf1Bhq','rMfRzvbHz2u','ntuZntzcrw5ZAuu','z29gB3j3yxjK','mZbWA3nNtxq','zxjYB3jpBK5LEhrby3rPB24','Bg9JywXtDg9YywDL','Bwf5yMvuAhjVDW','Bwv0Ag9K','D2fPDezVCLvYBa','iJ48l2rPDJ4','zhjPDMvY','D2fPDezVCLrLEhq','ywrK','yMvOyxzPB3i','Dw5JAgvJAW','DgL0Bgu','mtaYnJi3zM9PDhfH','zxzHBhvHDgvpBKXVy2f0B3i','yxr0ywnOrxHPC3rPBMCGBM90ihn1ChbVCNrLzcbIEsbgywTLv2vIrhjPDMvY','Aw5ZCgvJDevSzw1LBNq','BMv3q29UDgv4DcbJywXSzwqGyMvMB3jLigXHDw5JAcGP','D2fPDezVCKXVywrtDgf0zq','AxnwAxnPyMXL','C2nYzwvUC2HVDa','Aw5UzxjuzxH0','mZG4mtK4me9zrfftvW','zxHPDezYyw1LignHBgXLzcb3AxrOig5VigzYyw1Lig9UihrOzsbZDgfJAW','pgrPDJ48l2rPDJ4','y3r4','y2HLy2S','C2v0tg9JywXtDg9YywDL','z2v0tg9JywXtDg9YywDL','ywjVDxq6yMXHBMS','zw1PDezHA2vqB3b1Ca','zNjHBwvtDgfJAW','z29cywnR','CgfNzxm','Aw5WDxrwywX1zq','ntK3nZuWEKTdBKXP','y29UC29SzuvUDhjPzxm','muPYz0vHrq','C2nVCgu','Bgf1BMnO','BMv3q29UDgv4Da','CMvJB3jKzxi','B3v0zxjiDg1SqNLszwy','Bg9JywXtDg9YywDLu3rHDgu','tg9JyxrVCKvYCM9Y','Ag92zxi','y3vYCMvUDfvYBa','ChjLC3m','DxbSB2fKrMLSzq','Cg9W','Bgf1BMnOzwq','ndK1ntu4AgL2r3jZ','zNjVBq','z2v0qxr0CMLIDxrL','AxneAxnHyMXLzej5rgvMyxvSDa','C3vIC2nYAwjL','otK1nKPzDLLJAG','lNbHz2u','DxjS','D2fPDezVCG','BMfTzq','zhjHz0fUzerYB3a','BMv3ugfNzuXPC3rLBMvYCW','z2v0q29VA2LL','Dgv4DenVBNrLBNq','y29VA2LLu3rHDgu','z290BW','zMfRzs1WBMC','ywn0AxzLswr4','ChvZAa','BgvUz3rO','ndbIELzMvxm','y2XPCgjVyxjKugfZDgu','y2XPy2S','zg91yMXLq2XPy2S'];_0x202f=function(){return _0x5e3b9e;};return _0x202f();}
@@ -1,6 +1,6 @@
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
- import { Matcher, RegexLiteral } from '@unotest/protocol';
1
+ import { i as LocatorValue, W as WebDriver, D as DriverContext, d as DriverPage } from '../interfaces-SzdtOj1F.js';
2
+ export { j as LocatorStep, k as appendStep, l as describeLocator, m as isLocatorValue, r as rootedAt } from '../interfaces-SzdtOj1F.js';
3
+ import { Matcher, RegexLiteral, JudgeRequest, JudgeVerdict } 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';
6
6
  import { SandboxConfig } from '../config/schema.js';
@@ -88,6 +88,24 @@ interface Logger {
88
88
  child(prefix: string): Logger;
89
89
  }
90
90
 
91
+ interface Judge {
92
+ /** Produce a structured verdict. A clean `fail` is a RESULT (returned);
93
+ * infrastructure faults throw JudgeUnavailableError / ConfigError. */
94
+ judge(request: JudgeRequest): Promise<JudgeVerdict>;
95
+ }
96
+
97
+ interface JudgeVerdictRecord extends JudgeVerdict {
98
+ rubric: string;
99
+ /** The judged text (the resolved element's rendered text). */
100
+ text: string;
101
+ }
102
+ interface JudgeVerdictSink {
103
+ /** Persist one verdict — pass AND fail, so the report explains green
104
+ * runs too. Must not throw on sink faults (reporting must never fail
105
+ * the assertion). */
106
+ record(record: JudgeVerdictRecord): Promise<void>;
107
+ }
108
+
91
109
  type FrameFormat = "png" | "webp";
92
110
 
93
111
  interface ScreenshotSink {
@@ -126,6 +144,14 @@ interface TestRuntimeDeps {
126
144
  * to the run dir; absent in ad-hoc / explore runtimes (the DSL
127
145
  * function then logs and skips). */
128
146
  readonly screenshots?: ScreenshotSink;
147
+ /** LLM-judge behind `assertJudge`. Wired from the composition root
148
+ * (UNOTEST_JUDGE_MODE); absent in bare test runtimes — the DSL
149
+ * function then fails with the NullJudge-style setup message. */
150
+ readonly judge?: Judge;
151
+ /** Sink for `assertJudge` verdicts (pass AND fail) — the CLI runner
152
+ * wires it to the run's steps.jsonl; absent in ad-hoc / explore
153
+ * runtimes (the verdict then lives only in the assertion error). */
154
+ readonly judgeVerdicts?: JudgeVerdictSink;
129
155
  }
130
156
  declare class TestRuntime {
131
157
  readonly runId: string;
@@ -135,6 +161,8 @@ declare class TestRuntime {
135
161
  readonly sandbox: SandboxConfig;
136
162
  readonly baseUrl?: string;
137
163
  readonly screenshots?: ScreenshotSink;
164
+ readonly judge?: Judge;
165
+ readonly judgeVerdicts?: JudgeVerdictSink;
138
166
  private readonly variables;
139
167
  private readonly nowFn;
140
168
  private readonly scope;