@unotest/web 0.43.1 → 0.44.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/.claude/skills/write-e2e-test/SKILL.md +7 -6
- package/.claude/skills/write-e2e-test-ground/SKILL.md +7 -6
- package/CHANGELOG.md +165 -3
- package/dist/config/schema.d.ts +93 -31
- package/dist/config/schema.js +1 -1
- package/dist/driver/index.d.ts +5 -3
- package/dist/driver/index.js +1 -1
- package/dist/dsl/index.d.ts +229 -6
- package/dist/dsl/index.js +1 -1
- package/dist/dsl/web-dsl-language-service.js +1 -1
- package/dist/inspection/page-inject.d.ts +23 -6
- package/dist/inspection/page-inject.js +57 -26
- package/dist/{interfaces-7nMNCr2h.d.ts → interfaces-DEmGI704.d.ts} +108 -10
- package/dist/mcp/server.js +1 -1
- package/dist/runner/cli.js +1 -1
- package/dist/runner/init/chrome-probe.js +1 -1
- package/dist/runner/init.js +1 -1
- package/dist/runner/install-chromium.js +1 -1
- package/dist/runner/prepare-fix.js +1 -1
- package/dist/runner/scaffold-workspace.js +1 -1
- package/dist/runner/serve-fixture.js +1 -1
- package/dist/runner/web-runner-adapter.js +1 -1
- package/guides/agent-integration.md +30 -5
- package/guides/dsl-reference.md +433 -9
- package/package.json +9 -8
- package/types/unotest-dsl.d.ts +49 -0
package/dist/config/schema.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var _0x52f461=_0x1f4d;(function(_0x33c4f5,_0x38b2ce){var _0x4b2cf7={_0x23896e:0xf9,_0x3aae34:0xb2,_0x42185a:0xfd,_0x20c964:0xb0,_0x4bbeda:0xf2},_0x548de1=_0x1f4d,_0x4eeb90=_0x33c4f5();while(!![]){try{var _0x5c51d5=parseInt(_0x548de1(_0x4b2cf7._0x23896e))/0x1+-parseInt(_0x548de1(_0x4b2cf7._0x3aae34))/0x2*(parseInt(_0x548de1(0xfb))/0x3)+parseInt(_0x548de1(_0x4b2cf7._0x42185a))/0x4+parseInt(_0x548de1(_0x4b2cf7._0x20c964))/0x5*(-parseInt(_0x548de1(0xc1))/0x6)+-parseInt(_0x548de1(0xbe))/0x7*(parseInt(_0x548de1(0xe8))/0x8)+-parseInt(_0x548de1(0xcd))/0x9*(parseInt(_0x548de1(0xb5))/0xa)+parseInt(_0x548de1(_0x4b2cf7._0x4bbeda))/0xb*(parseInt(_0x548de1(0xab))/0xc);if(_0x5c51d5===_0x38b2ce)break;else _0x4eeb90['push'](_0x4eeb90['shift']());}catch(_0x225144){_0x4eeb90['push'](_0x4eeb90['shift']());}}}(_0x1668,0x1f310));function _0x1668(){var _0x48b6e1=['BgLUDdPSzwDHy3KTBgf5B3v0','BgLUDdPKAxnHBwjPzY1IEs1PBMrLEa','C3rYAw5N','DMfSAwrHDg9YoMzVCI1ZAgfWzq','BgLUDdP4Cgf0Aa','BgLUDdPVyMz1C2nHDgvKlwnSyxnZ','zMLYzwzVEa','DMfSAwrHDg9YoMLMlxnOyxbL','nte3uLbtqxPn','DMfSAwrHDg9YoNn0zxaTy292zxjHz2u','yxjYyxK','ywnJzxb0','y2HYB21LlwjLDge','BwfW','y29Kzq','nJy3mtbVDK9ID1O','y2XVC2vZDeTLEq','mti2EuLMr0jW','BgLUDdPZy2vUyxjPBY1PBI1YB290','ote0mti0tMHOqLPv','Dg9mB3DLCKnHC2u','Cg9ZAxrPDMu','BgLUDdPSAw50lw9Rlw1PC3nPBMCTCMvHC29U','A2v5CW','ndKXodHOqwrkv3K','DMfSAwrHDg9YoMz1BMn0Aw9UlxnOyxbL','C3rYAwn0','BgLUDdPNB3rVlwnVBMnHDa','DMfSAwrHDg9YoM1LDgeTC2HHCgu','mte1nvLAz1vusa','lNvUB3rLC3qVzMfPBhvYzxm','odeYv1zWuvzT','BwfUDwfS','zgvMyxvSDa','ntm1mhbisxPwtW','BwLU','C3rKAw8','Dw5RBM93BKTLEu1LC3nHz2u','BxnLzgDL','iIdIGjqGzgLKihLVDsbTzwfUici','Dw5PB24','zgLZBwLZCW','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlxn0yxrLBwvUDa','mte5mJmXAgfRDMLR','zgvMAw5LuhjVCgvYDhK','BgLUDdPTDxn0ywnOzs1PBI1KC2W','mJG2oefQA21tuW','DMfSAwrHDg9YoMfYzY1RAw5K','D2fYBG','DhjHBNnMB3jT','BgLUDdPLEhrLCM5HBc12yxjPywjSzs11BMrLy2XHCMvK','BMv0D29YAW','Dw5VDgvZDc9LmMuVx2HLBhbLCNm','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlwv4ChjLC3nPB24','BgLUDdPVBMuTDgvZDc1WzxiTzMLSzq','BNvTyMvY','B2jQzwn0','B2zM','mtG5uNDlzfP0','BMfTzq','DMfSAwrHDg9YoNn0zxaTC2HHCgu','A2v5','y2HYB21L','Aw50','DMfSAwrHDg9YoMXPC3qTyxjN','B3b0Aw9UywW','BgLUDdPMBg93lxjLDhvYBNmTDMfSDwu','iIdIGjqGBM90igeGy29UzMLNigTLEtSGy2HLy2SGEw91CIbaDw5VDgvZDc93zwiGDMvYC2LVBIbPzIbPDcbJB21LCYbMCM9TigeGBMv3zxiGCMvSzwfZzq','DMfSAwrHDg9YoNnLBwfUDgLJlwXVC3m','DxjS','DMfSAwrHDg9YoNn0CMLUzY1JB25Jyxq','zgvMyxvSDevYCM9Y','zxjYB3jnyxa','DMfSAwrHDg9YoNvUA25VD24TzNvUy3rPB24','yM9VBgvHBG','Dw5RBM93BIbRzxKGiG','BgLUDdPLy2HVlwfZC2vYDa','BgL0zxjHBa','DMfSAwrHDg9YoNDYyxbWzwqTzM9YBwf0','zw51Bq','BgLUDdPKzwvWlwnZCW','y2HYB21PDw0','BgLUDdPLDMfSDwf0zs1KAxnJB3vYywDLza','BgLUDdPWyxvZzs1LEhbSAwnPDa','zxjYB3i','mta0rfbKEKPh','Dw5YzwnVz25PEMvKx2TLExm'];_0x1668=function(){return _0x48b6e1;};return _0x1668();}var __defProp=Object[_0x52f461(0xbf)],__name=(_0x580433,_0x2d5901)=>__defProp(_0x580433,_0x52f461(0xce),{'value':_0x2d5901,'configurable':!![]});import{z as _0xcb983}from'zod';import{z}from'zod';import{levenshteinDistance}from'@unotest/core';var MAX_EDITS=0x2;function closestKey(_0x50551d,_0x5bba8f){var _0x50f220={_0x2ddf0f:0xa7},_0x44567c=_0x52f461;let _0xdb55d7;for(const _0x12b80c of _0x5bba8f){const _0x5f09bd=levenshteinDistance(_0x50551d['toLowerCase'](),_0x12b80c[_0x44567c(_0x50f220._0x2ddf0f)]());if(_0x5f09bd>MAX_EDITS)continue;if(_0xdb55d7===void 0x0||_0x5f09bd<_0xdb55d7['distance'])_0xdb55d7={'key':_0x12b80c,'distance':_0x5f09bd};}return _0xdb55d7?.[_0x44567c(0xd0)];}function _0x1f4d(_0x50dfab,_0x38dcb4){_0x50dfab=_0x50dfab-0xa7;var _0x166846=_0x1668();var _0x1f4d16=_0x166846[_0x50dfab];if(_0x1f4d['QDEXKr']===undefined){var _0x25535b=function(_0x175497){var _0x59a6b7='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0xcb983='',_0x5de189='';for(var _0x580433=0x0,_0x2d5901,_0x50551d,_0x5bba8f=0x0;_0x50551d=_0x175497['charAt'](_0x5bba8f++);~_0x50551d&&(_0x2d5901=_0x580433%0x4?_0x2d5901*0x40+_0x50551d:_0x50551d,_0x580433++%0x4)?_0xcb983+=String['fromCharCode'](0xff&_0x2d5901>>(-0x2*_0x580433&0x6)):0x0){_0x50551d=_0x59a6b7['indexOf'](_0x50551d);}for(var _0xdb55d7=0x0,_0x12b80c=_0xcb983['length'];_0xdb55d7<_0x12b80c;_0xdb55d7++){_0x5de189+='%'+('00'+_0xcb983['charCodeAt'](_0xdb55d7)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5de189);};_0x1f4d['NEMnxa']=_0x25535b,_0x1f4d['UpbtOK']={},_0x1f4d['QDEXKr']=!![];}var _0xceb25=_0x166846[0x0],_0x2cc72a=_0x50dfab+_0xceb25,_0x5b836d=_0x1f4d['UpbtOK'][_0x2cc72a];return!_0x5b836d?(_0x1f4d16=_0x1f4d['NEMnxa'](_0x1f4d16),_0x1f4d['UpbtOK'][_0x2cc72a]=_0x1f4d16):_0x1f4d16=_0x5b836d,_0x1f4d16;}__name(closestKey,_0x52f461(0xfa));function unknownKeyMessage(_0x4912b5,_0x3d4b58){var _0xa883dc={_0x5b5cf8:0xf7},_0x33dc56={_0xb09549:0xd6,_0x549a1b:0xba},_0x193138=_0x52f461;return _0x4912b5[_0x193138(_0xa883dc._0x5b5cf8)](_0x43c10a=>{var _0x1a028a=_0x193138;const _0x1f1ec7=closestKey(_0x43c10a,_0x3d4b58);return _0x1f1ec7===void 0x0?_0x1a028a(0xde)+_0x43c10a+_0x1a028a(_0x33dc56._0xb09549):'unknown\x20key\x20\x22'+_0x43c10a+_0x1a028a(_0x33dc56._0x549a1b)+_0x1f1ec7+'\x22?';})['join'](';\x20');}__name(unknownKeyMessage,_0x52f461(0xb8));function strictObject(_0x4b1394){var _0x35a1a0=_0x52f461;const _0x464f7f=Object[_0x35a1a0(0xaa)](_0x4b1394);return z['object'](_0x4b1394,{'errorMap':__name((_0xcb6764,_0x434ac0)=>_0xcb6764[_0x35a1a0(0xf8)]===z['ZodIssueCode'][_0x35a1a0(0xe9)]?{'message':unknownKeyMessage(_0xcb6764[_0x35a1a0(0xaa)],_0x464f7f)}:{'message':_0x434ac0[_0x35a1a0(0xda)]},_0x35a1a0(0xdb))})[_0x35a1a0(0xad)]();}__name(strictObject,'strictObject');import{BUNDLED_BROWSER_CHANNEL}from'@unotest/protocol';import{z as _0x5de189}from'zod';import{UnotestError}from'@unotest/core';var LaunchConfigSchema=_0x5de189[_0x52f461(0xcb)]({'userDataDir':_0x5de189[_0x52f461(0xec)]()[_0x52f461(0xb6)](0x1)['optional'](),'args':_0x5de189[_0x52f461(0xf4)](_0x5de189[_0x52f461(0xec)]()[_0x52f461(0xb6)](0x1))[_0x52f461(0xd4)]()})['strict'](),BrowserSchema=_0xcb983[_0x52f461(0xe2)]([_0x52f461(0xe4),_0x52f461(0xf0),'webkit']),SYSTEM_BROWSER_CHANNELS=[_0x52f461(0xd1),_0x52f461(0xb9),_0x52f461(0xf6),_0x52f461(0xe4)],BROWSER_CHANNEL_WORDS=[...SYSTEM_BROWSER_CHANNELS,BUNDLED_BROWSER_CHANNEL],BrowserChannelSchema=_0xcb983[_0x52f461(0xbb)]([_0xcb983['enum'](SYSTEM_BROWSER_CHANNELS),_0xcb983[_0x52f461(0xe0)](BUNDLED_BROWSER_CHANNEL)[_0x52f461(0xc4)](()=>null),_0xcb983['null']()])['optional'](),ViewportSchema=strictObject({'width':_0xcb983['number']()[_0x52f461(0xd2)]()[_0x52f461(0xa8)](),'height':_0xcb983['number']()[_0x52f461(0xd2)]()[_0x52f461(0xa8)]()}),RetryReasonSchema=_0xcb983['enum'](['transient',_0x52f461(0xc6),'crash']),RetryConfigSchema=strictObject({'count':_0xcb983['number']()[_0x52f461(0xd2)]()[_0x52f461(0xb6)](0x0)['max'](0xa),'on':_0xcb983[_0x52f461(0xf4)](RetryReasonSchema)}),FailureBundleConfigSchema=strictObject({'tier1':_0xcb983['literal'](!![])[_0x52f461(0xb4)](!![]),'tier2':_0xcb983['boolean'](),'tier3':strictObject({'network':_0xcb983[_0x52f461(0xdd)](),'video':_0xcb983[_0x52f461(0xdd)]()}),'retention':strictObject({'runs':_0xcb983[_0x52f461(0xca)]()[_0x52f461(0xd2)]()[_0x52f461(0xa8)](),'days':_0xcb983[_0x52f461(0xca)]()[_0x52f461(0xd2)]()[_0x52f461(0xa8)]()}),'storageDir':_0xcb983[_0x52f461(0xec)]()['min'](0x1)}),DialogPolicySchema=_0xcb983[_0x52f461(0xe2)]([_0x52f461(0xf5),_0x52f461(0xbc),_0x52f461(0xb3)]),LinterRuleIdSchema=_0xcb983[_0x52f461(0xe2)]([_0x52f461(0xe3),_0x52f461(0xee),_0x52f461(0xef),_0x52f461(0xe6),_0x52f461(0xeb),_0x52f461(0xe5),_0x52f461(0xfc),_0x52f461(0xc0),_0x52f461(0xae),'lint:regex-invalid',_0x52f461(0xdf),'lint:api-call-file-body',_0x52f461(0xa9),_0x52f461(0xd5),_0x52f461(0xea),_0x52f461(0xc5),'lint:env-host-from-base',_0x52f461(0xc9),_0x52f461(0xdc),'validator:arity',_0x52f461(0xc2),_0x52f461(0xf3),_0x52f461(0xcf),_0x52f461(0xaf),_0x52f461(0xac),_0x52f461(0xed),_0x52f461(0xf1),'validator:var-shape',_0x52f461(0xbd),_0x52f461(0xc8),_0x52f461(0xd9),_0x52f461(0xd7),_0x52f461(0xd3),_0x52f461(0xe1)]),LinterSeveritySchema=_0xcb983[_0x52f461(0xe2)]([_0x52f461(0xcc),_0x52f461(0xc3),'error']),LinterConfigSchema=strictObject({'enabled':_0xcb983[_0x52f461(0xdd)](),'rules':_0xcb983['record'](LinterRuleIdSchema,LinterSeveritySchema)}),QueueConfigSchema=strictObject({'enabled':_0xcb983['boolean']()[_0x52f461(0xb4)](!![]),'concurrency':_0xcb983[_0x52f461(0xca)]()['int']()[_0x52f461(0xa8)]()['default'](0x1)}),ScheduleSchema=strictObject({'collection':_0xcb983[_0x52f461(0xec)]()['min'](0x1),'cron':_0xcb983[_0x52f461(0xec)]()[_0x52f461(0xb6)](0x1),'env':_0xcb983[_0x52f461(0xec)]()[_0x52f461(0xb6)](0x1)[_0x52f461(0xd4)](),'prepare':_0xcb983[_0x52f461(0xec)]()[_0x52f461(0xb6)](0x1)[_0x52f461(0xd4)]()}),McpConfigSchema=strictObject({'transport':_0xcb983[_0x52f461(0xe0)](_0x52f461(0xb7))}),SandboxConfigSchema=strictObject({'shellCwd':_0xcb983['string']()[_0x52f461(0xd4)](),'shellTimeoutMs':_0xcb983[_0x52f461(0xca)]()[_0x52f461(0xd2)]()['positive']()[_0x52f461(0xd4)](),'exportSecrets':_0xcb983[_0x52f461(0xf4)](_0xcb983[_0x52f461(0xec)]())[_0x52f461(0xd4)](),'database':_0xcb983[_0x52f461(0xec)]()['optional'](),'apiBaseUrl':_0xcb983[_0x52f461(0xec)]()[_0x52f461(0xd8)]()[_0x52f461(0xd4)](),'uploadDir':_0xcb983['string']()[_0x52f461(0xd4)]()}),WebServerConfigSchema=strictObject({'command':_0xcb983[_0x52f461(0xec)]()[_0x52f461(0xb6)](0x1),'url':_0xcb983[_0x52f461(0xec)]()[_0x52f461(0xd8)](),'reuseExistingServer':_0xcb983[_0x52f461(0xdd)]()[_0x52f461(0xb4)](!![]),'timeoutMs':_0xcb983[_0x52f461(0xca)]()[_0x52f461(0xd2)]()[_0x52f461(0xa8)]()[_0x52f461(0xb4)](0xea60)}),EnvConfigSchema=strictObject({'shared':_0xcb983[_0x52f461(0xf4)](_0xcb983[_0x52f461(0xec)]())[_0x52f461(0xb4)]([])}),UnotestConfigSchema=strictObject({'baseUrl':_0xcb983[_0x52f461(0xec)]()[_0x52f461(0xd8)]()[_0x52f461(0xd4)](),'webServer':WebServerConfigSchema['optional'](),'browsers':_0xcb983[_0x52f461(0xf4)](BrowserSchema)[_0x52f461(0xb6)](0x1),'channel':BrowserChannelSchema,'viewport':ViewportSchema,'launch':LaunchConfigSchema[_0x52f461(0xd4)](),'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':_0xcb983['string']()[_0x52f461(0xd4)](),'testDir':_0xcb983[_0x52f461(0xec)]()[_0x52f461(0xb6)](0x1),'helpersDir':_0xcb983[_0x52f461(0xec)]()['min'](0x1),'defaultTimeoutMs':_0xcb983['number']()['int']()[_0x52f461(0xa8)](),'defaultNavigationTimeoutMs':_0xcb983['number']()[_0x52f461(0xd2)]()[_0x52f461(0xa8)](),'env':EnvConfigSchema,'linter':LinterConfigSchema,'mcp':McpConfigSchema,'queue':QueueConfigSchema,'schedules':_0xcb983[_0x52f461(0xf4)](ScheduleSchema)[_0x52f461(0xb4)]([]),'sandbox':SandboxConfigSchema}),DEFAULT_CONFIG={'browsers':[_0x52f461(0xe4)],'viewport':{'width':0x500,'height':0x2d0},'retry':{'count':0x0,'on':['transient']},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':_0x52f461(0xb1)},'dialogPolicy':_0x52f461(0xf5),'testDir':'unotest/e2e','helpersDir':_0x52f461(0xc7),'defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x7530,'linter':{'enabled':!![],'rules':{'lint:deep-css':'warn','lint:xpath':_0x52f461(0xc3),'lint:obfuscated-class':'warn','lint:pause-explicit':'warn','lint:disambig-by-index':'off','lint:evaluate-discouraged':_0x52f461(0xc3),'lint:scenario-in-root':_0x52f461(0xe7),'lint:mustache-in-dsl':_0x52f461(0xe7),'lint:goto-concat':_0x52f461(0xc3),'lint:regex-invalid':_0x52f461(0xe7),'lint:echo-assert':_0x52f461(0xc3),'lint:lint-ok-missing-reason':_0x52f461(0xc3),'lint:flow-returns-value':_0x52f461(0xc3),'lint:legacy-layout':_0x52f461(0xc3),'lint:external-variable-undeclared':'error','lint:env-host-from-base':_0x52f461(0xe7),'lint:one-test-per-file':'warn','validator:unknown-function':_0x52f461(0xe7)}},'env':{'shared':[]},'mcp':{'transport':'stdio'},'queue':{'enabled':!![],'concurrency':0x1},'schedules':[],'sandbox':{}};export{BROWSER_CHANNEL_WORDS,BrowserChannelSchema,BrowserSchema,DEFAULT_CONFIG,DialogPolicySchema,EnvConfigSchema,FailureBundleConfigSchema,LinterConfigSchema,LinterRuleIdSchema,LinterSeveritySchema,McpConfigSchema,QueueConfigSchema,RetryConfigSchema,RetryReasonSchema,SYSTEM_BROWSER_CHANNELS,SandboxConfigSchema,ScheduleSchema,UnotestConfigSchema,ViewportSchema,WebServerConfigSchema};
|
|
1
|
+
var _0x32c00a=_0x43f6;function _0x4910(){var _0x3628ac=['D2fYBG','B3b0Aw9UywW','ntmYmJzKsxrmAeW','lNvUB3rLC3qVzMfPBhvYzxm','DMfSAwrHDg9YoNn0zxaTC2HHCgu','A2v5CW','CMvKywn0zwq','mtGYBvrcrMjS','zw4Tvvm','AxnuAw1LwM9Uzq','zMLYzwzVEa','DhjHBNnPzw50','DMfSAwrHDg9YoNn0zxaTy292zxjHz2u','C3rKAw8','y29Kzq','BgLUDdPLy2HVlwfZC2vYDa','y2HYB21LlwjLDge','BgLUDdPSzwDHy3KTBgf5B3v0','Dw5VDgvZDc9LmMuVx2HLBhbLCNm','z2v0q2fUB25Py2fStg9JywXLCW','BgLUDdP4Cgf0Aa','DxjS','AM9PBG','mta4mJG2ntz3rhvdB2C','BgLUDdPSAw50lw9Rlw1PC3nPBMCTCMvHC29U','DMfSAwrHDg9YoMz1BMn0Aw9UlxnOyxbL','BMfTzq','y3jHC2G','y2XVC2vZDeTLEq','Bwf4','Dw5RBM93BKTLEu1LC3nHz2u','Dg9mB3DLCKnHC2u','BgL0zxjHBa','yxjYyxK','iIdIGjqGzgLKihLVDsbTzwfUici','DMfSAwrHDg9YoNnLBwfUDgLJlwXVC3m','BgLUDdPNB3rVlwnVBMnHDa','Aw50','mJC4mdCYtKPxAxHi','CMvMAw5L','D2vIA2L0','zgLZBwLZCW','BgLUDdPKAxnHBwjPzY1IEs1PBMrLEa','DMfSAwrHDg9YoMfYAxr5','y2HYB21PDw0','B2zM','BgLUDdPWyxvZzs1LEhbSAwnPDa','DMfSAwrHDg9YoMfYzY1RAw5K','Dw5RBM93BIb0Aw1LihPVBMuGiG','BgLUDdPKzwvWlwnZCW','Aw52ywXPzcbSB2nHBguGiG','C3rYAw5N','mJaXmJCZndb0DM9KvhG','DMfSAwrHDg9YoNzHCI1ZAgfWzq','BgLUDdPMBg93lxjLDhvYBNmTDMfSDwu','iIdIGjqGBM90igeGy29UzMLNigTLEtSGy2HLy2SGEw91CIbaDw5VDgvZDc93zwiGDMvYC2LVBIbPzIbPDcbJB21LCYbMCM9TigeGBMv3zxiGCMvSzwfZzq','B2jQzwn0','BwfUDwfS','BgLUDdPLDMfSDwf0zs1KAxnJB3vYywDLza','ntD1zfHYzNu','C3rYAwn0','BgLUDdPTDxn0ywnOzs1PBI1KC2W','Dw5YzwnVz25PEMvKx2TLExm','yM9VBgvHBG','zNvSBa','zw51Bq','zxjYB3i','mJC2otuZnwDprwfbyq','Dw5RBM93BIbRzxKGiG','mZiWmtu2mufPvLbcEG','BgLUDdPZAgfKB3DZlwrZBc1MDw5JDgLVBG','y2HYB21L','BwLU','mJK4m3jgq25fva','zgvMyxvSDa','BNvTyMvY','iIdIGjqGzxHWzwn0zwqGysbcq1aGndCGDgfNihn1y2GGyxmGiMvZluvtiG','Dw5VDgvZDc9LmMu','rgf0zvrPBwvgB3jTyxq','zgvMyxvSDevYCM9Y','BMv0D29YAW','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlxn0yxrLBwvUDa','Cg9ZAxrPDMu','BgLUDdPHCgKTy2fSBc1MAwXLlwjVzhK','DMfSAwrHDg9YoM1LDgeTC2HHCgu','BgvUz3rO','DMfSAwrHDg9YoNn0CMLUzY1JB25Jyxq','DMfSAwrHDg9YoMzVCI1ZAgfWzq','zxjYB3jnyxa','ywnJzxb0','Dw5PB24','BNvSBa','DhjHBNnMB3jT','ntG4u2P4DMTg','wM9KsxnZDwvdB2rL','BwfW'];_0x4910=function(){return _0x3628ac;};return _0x4910();}(function(_0x300d7d,_0x67953b){var _0x4f4178={_0x1514f2:0x1b9,_0x351651:0x1ab,_0x2981fe:0x1f6,_0x28160a:0x1b3,_0x3fc955:0x1d2,_0x4a19a2:0x1cd,_0x4096cb:0x1b5,_0x5d026d:0x1a4},_0xcd2be5=_0x43f6,_0x314730=_0x300d7d();while(!![]){try{var _0x542432=-parseInt(_0xcd2be5(_0x4f4178._0x1514f2))/0x1*(parseInt(_0xcd2be5(0x1d7))/0x2)+parseInt(_0xcd2be5(_0x4f4178._0x351651))/0x3*(-parseInt(_0xcd2be5(_0x4f4178._0x2981fe))/0x4)+parseInt(_0xcd2be5(_0x4f4178._0x28160a))/0x5+-parseInt(_0xcd2be5(_0x4f4178._0x3fc955))/0x6*(-parseInt(_0xcd2be5(_0x4f4178._0x4a19a2))/0x7)+-parseInt(_0xcd2be5(0x1e7))/0x8+parseInt(_0xcd2be5(_0x4f4178._0x4096cb))/0x9+parseInt(_0xcd2be5(_0x4f4178._0x5d026d))/0xa;if(_0x542432===_0x67953b)break;else _0x314730['push'](_0x314730['shift']());}catch(_0x554763){_0x314730['push'](_0x314730['shift']());}}}(_0x4910,0xb02f9));var __defProp=Object['defineProperty'],__name=(_0x3c45ba,_0x136f19)=>__defProp(_0x3c45ba,_0x32c00a(0x1ea),{'value':_0x136f19,'configurable':!![]});import{z as _0x33899a}from'zod';import{z}from'zod';import{levenshteinDistance}from'@unotest/core';function _0x43f6(_0x86bb5c,_0x53fb5c){_0x86bb5c=_0x86bb5c-0x19b;var _0x49106b=_0x4910();var _0x43f672=_0x49106b[_0x86bb5c];if(_0x43f6['xFzhzD']===undefined){var _0x14bca3=function(_0x220514){var _0x56dd52='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x33899a='',_0x48ce05='';for(var _0x3c45ba=0x0,_0x136f19,_0x24c1a6,_0x2b042b=0x0;_0x24c1a6=_0x220514['charAt'](_0x2b042b++);~_0x24c1a6&&(_0x136f19=_0x3c45ba%0x4?_0x136f19*0x40+_0x24c1a6:_0x24c1a6,_0x3c45ba++%0x4)?_0x33899a+=String['fromCharCode'](0xff&_0x136f19>>(-0x2*_0x3c45ba&0x6)):0x0){_0x24c1a6=_0x56dd52['indexOf'](_0x24c1a6);}for(var _0x363e62=0x0,_0x3689bc=_0x33899a['length'];_0x363e62<_0x3689bc;_0x363e62++){_0x48ce05+='%'+('00'+_0x33899a['charCodeAt'](_0x363e62)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x48ce05);};_0x43f6['blRxvG']=_0x14bca3,_0x43f6['vvICZV']={},_0x43f6['xFzhzD']=!![];}var _0x3e06bb=_0x49106b[0x0],_0xa097c4=_0x86bb5c+_0x3e06bb,_0xfe4b8e=_0x43f6['vvICZV'][_0xa097c4];return!_0xfe4b8e?(_0x43f672=_0x43f6['blRxvG'](_0x43f672),_0x43f6['vvICZV'][_0xa097c4]=_0x43f672):_0x43f672=_0xfe4b8e,_0x43f672;}var MAX_EDITS=0x2;function closestKey(_0x24c1a6,_0x2b042b){var _0x41d52c=_0x32c00a;let _0x363e62;for(const _0x3689bc of _0x2b042b){const _0x2a902d=levenshteinDistance(_0x24c1a6['toLowerCase'](),_0x3689bc[_0x41d52c(0x1ef)]());if(_0x2a902d>MAX_EDITS)continue;if(_0x363e62===void 0x0||_0x2a902d<_0x363e62['distance'])_0x363e62={'key':_0x3689bc,'distance':_0x2a902d};}return _0x363e62?.['key'];}__name(closestKey,_0x32c00a(0x1ec));function unknownKeyMessage(_0x255510,_0x3a4104){var _0x2c838a={_0x1273a1:0x1cf,_0x1daa18:0x1e6},_0x643b54={_0x144c96:0x1f2},_0xdbd611=_0x32c00a;return _0x255510[_0xdbd611(_0x2c838a._0x1273a1)](_0x9b8d36=>{var _0x519a3f=_0xdbd611;const _0x303ceb=closestKey(_0x9b8d36,_0x3a4104);return _0x303ceb===void 0x0?_0x519a3f(0x1b4)+_0x9b8d36+_0x519a3f(0x1a7):_0x519a3f(0x1b4)+_0x9b8d36+_0x519a3f(_0x643b54._0x144c96)+_0x303ceb+'\x22?';})[_0xdbd611(_0x2c838a._0x1daa18)](';\x20');}__name(unknownKeyMessage,_0x32c00a(0x1ee));function strictObject(_0x9473b0){var _0x341213={_0x5d286b:0x1ac},_0x3f9421=_0x32c00a;const _0x42a9b6=Object[_0x3f9421(0x1d5)](_0x9473b0);return z[_0x3f9421(0x1a8)](_0x9473b0,{'errorMap':__name((_0xc35d31,_0x4b1314)=>_0xc35d31[_0x3f9421(0x1de)]===z[_0x3f9421(0x1ce)][_0x3f9421(0x1ae)]?{'message':unknownKeyMessage(_0xc35d31[_0x3f9421(0x1d5)],_0x42a9b6)}:{'message':_0x4b1314[_0x3f9421(0x1bf)]},_0x3f9421(0x1c8))})[_0x3f9421(_0x341213._0x5d286b)]();}__name(strictObject,'strictObject');import{BUNDLED_BROWSER_CHANNEL}from'@unotest/protocol';import{z as _0x48ce05}from'zod';import{UnotestError}from'@unotest/core';var LaunchConfigSchema=_0x48ce05[_0x32c00a(0x1a8)]({'userDataDir':_0x48ce05[_0x32c00a(0x1a3)]()[_0x32c00a(0x1b8)](0x1)[_0x32c00a(0x1d1)](),'args':_0x48ce05[_0x32c00a(0x1f1)](_0x48ce05[_0x32c00a(0x1a3)]()[_0x32c00a(0x1b8)](0x1))['optional']()})[_0x32c00a(0x1ac)](),BrowserSchema=_0x33899a[_0x32c00a(0x1b1)](['chromium',_0x32c00a(0x1da),_0x32c00a(0x1f8)]),SYSTEM_BROWSER_CHANNELS=[_0x32c00a(0x1b7),'msedge',_0x32c00a(0x1e0),_0x32c00a(0x19c)],BROWSER_CHANNEL_WORDS=[...SYSTEM_BROWSER_CHANNELS,BUNDLED_BROWSER_CHANNEL],BrowserChannelSchema=_0x33899a[_0x32c00a(0x1ca)]([_0x33899a[_0x32c00a(0x1b1)](SYSTEM_BROWSER_CHANNELS),_0x33899a[_0x32c00a(0x1f0)](BUNDLED_BROWSER_CHANNEL)[_0x32c00a(0x1cc)](()=>null),_0x33899a[_0x32c00a(0x1cb)]()])[_0x32c00a(0x1d1)](),ViewportSchema=strictObject({'width':_0x33899a[_0x32c00a(0x1bb)]()[_0x32c00a(0x1f5)]()[_0x32c00a(0x1c2)]()[_0x32c00a(0x1d1)](),'height':_0x33899a[_0x32c00a(0x1bb)]()[_0x32c00a(0x1f5)]()[_0x32c00a(0x1c2)]()[_0x32c00a(0x1d1)](),'deviceScaleFactor':_0x33899a[_0x32c00a(0x1bb)]()[_0x32c00a(0x1c2)]()[_0x32c00a(0x1d1)]()}),RetryReasonSchema=_0x33899a[_0x32c00a(0x1b1)]([_0x32c00a(0x1db),_0x32c00a(0x1c0),_0x32c00a(0x1eb)]),RetryConfigSchema=strictObject({'count':_0x33899a[_0x32c00a(0x1bb)]()['int']()[_0x32c00a(0x1b8)](0x0)[_0x32c00a(0x1ed)](0xa),'on':_0x33899a[_0x32c00a(0x1f1)](RetryReasonSchema)}),FailureBundleConfigSchema=strictObject({'tier1':_0x33899a[_0x32c00a(0x1f0)](!![])['default'](!![]),'tier2':_0x33899a['boolean'](),'tier3':strictObject({'network':_0x33899a[_0x32c00a(0x1af)](),'video':_0x33899a[_0x32c00a(0x1af)]()}),'retention':strictObject({'runs':_0x33899a['number']()[_0x32c00a(0x1f5)]()[_0x32c00a(0x1c2)](),'days':_0x33899a[_0x32c00a(0x1bb)]()[_0x32c00a(0x1f5)]()['positive']()}),'storageDir':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1b8)](0x1),'pageHtml':_0x33899a[_0x32c00a(0x1b1)]([_0x32c00a(0x1d6),_0x32c00a(0x1b0)])}),DialogPolicySchema=_0x33899a[_0x32c00a(0x1b1)]([_0x32c00a(0x1c9),_0x32c00a(0x1f9),_0x32c00a(0x1a9)]),LinterRuleIdSchema=_0x33899a[_0x32c00a(0x1b1)]([_0x32c00a(0x1a1),_0x32c00a(0x1e4),'lint:obfuscated-class',_0x32c00a(0x19e),_0x32c00a(0x1fa),_0x32c00a(0x1aa),'lint:scenario-in-root',_0x32c00a(0x1ad),_0x32c00a(0x1f4),'lint:regex-invalid',_0x32c00a(0x1df),_0x32c00a(0x1c3),_0x32c00a(0x1e8),_0x32c00a(0x1a6),_0x32c00a(0x1e1),'lint:external-variable-undeclared','lint:env-host-from-base','lint:one-test-per-file',_0x32c00a(0x1b6),'validator:unknown-function',_0x32c00a(0x19b),_0x32c00a(0x19f),_0x32c00a(0x1dc),_0x32c00a(0x1d4),_0x32c00a(0x1c4),_0x32c00a(0x1e9),_0x32c00a(0x1c7),'validator:if-shape',_0x32c00a(0x1a5),_0x32c00a(0x1c1),'validator:unsupported-expression',_0x32c00a(0x1c6),_0x32c00a(0x1f3),'validator:list-arg','validator:wrapped-format']),LinterSeveritySchema=_0x33899a[_0x32c00a(0x1b1)](['off',_0x32c00a(0x1d0),_0x32c00a(0x1b2)]),LinterConfigSchema=strictObject({'enabled':_0x33899a[_0x32c00a(0x1af)](),'rules':_0x33899a['record'](LinterRuleIdSchema,LinterSeveritySchema)}),QueueConfigSchema=strictObject({'enabled':_0x33899a[_0x32c00a(0x1af)]()['default'](!![]),'concurrency':_0x33899a['number']()[_0x32c00a(0x1f5)]()[_0x32c00a(0x1c2)]()[_0x32c00a(0x1ba)](0x1)}),ScheduleSchema=strictObject({'collection':_0x33899a['string']()[_0x32c00a(0x1b8)](0x1),'cron':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1b8)](0x1),'env':_0x33899a[_0x32c00a(0x1a3)]()['min'](0x1)['optional'](),'prepare':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1b8)](0x1)['optional']()}),McpConfigSchema=strictObject({'transport':_0x33899a['literal'](_0x32c00a(0x1dd))}),SandboxConfigSchema=strictObject({'shellCwd':_0x33899a['string']()['optional'](),'shellTimeoutMs':_0x33899a['number']()[_0x32c00a(0x1f5)]()[_0x32c00a(0x1c2)]()[_0x32c00a(0x1d1)](),'exportSecrets':_0x33899a[_0x32c00a(0x1f1)](_0x33899a['string']())['optional'](),'database':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1d1)](),'apiBaseUrl':_0x33899a[_0x32c00a(0x1a3)]()['url']()[_0x32c00a(0x1d1)](),'uploadDir':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1d1)]()}),WebServerConfigSchema=strictObject({'command':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1b8)](0x1),'url':_0x33899a['string']()[_0x32c00a(0x1e5)](),'reuseExistingServer':_0x33899a[_0x32c00a(0x1af)]()[_0x32c00a(0x1ba)](!![]),'timeoutMs':_0x33899a[_0x32c00a(0x1bb)]()[_0x32c00a(0x1f5)]()[_0x32c00a(0x1c2)]()['default'](0xea60)}),EnvConfigSchema=strictObject({'shared':_0x33899a[_0x32c00a(0x1f1)](_0x33899a[_0x32c00a(0x1a3)]())[_0x32c00a(0x1ba)]([])}),UnotestConfigSchema=strictObject({'baseUrl':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1e5)]()['optional'](),'webServer':WebServerConfigSchema[_0x32c00a(0x1d1)](),'browsers':_0x33899a[_0x32c00a(0x1f1)](BrowserSchema)['min'](0x1),'channel':BrowserChannelSchema,'viewport':ViewportSchema[_0x32c00a(0x1d1)](),'device':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1b8)](0x1)[_0x32c00a(0x1d1)](),'timezone':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1f7)](isTimeZone,_0x3f0f7c=>({'message':_0x32c00a(0x1a0)+_0x3f0f7c+'\x22\x20—\x20expected\x20an\x20IANA\x20name\x20such\x20as\x20\x22Europe/Madrid\x22'}))[_0x32c00a(0x1d1)](),'locale':_0x33899a[_0x32c00a(0x1a3)]()['refine'](isLocale,_0xc58387=>({'message':_0x32c00a(0x1a2)+_0xc58387+_0x32c00a(0x1bc)}))[_0x32c00a(0x1d1)](),'maxContexts':_0x33899a[_0x32c00a(0x1bb)]()[_0x32c00a(0x1f5)]()['positive']()[_0x32c00a(0x1d1)](),'launch':LaunchConfigSchema['optional'](),'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1d1)](),'testDir':_0x33899a[_0x32c00a(0x1a3)]()['min'](0x1),'helpersDir':_0x33899a[_0x32c00a(0x1a3)]()[_0x32c00a(0x1b8)](0x1),'defaultTimeoutMs':_0x33899a[_0x32c00a(0x1bb)]()[_0x32c00a(0x1f5)]()[_0x32c00a(0x1c2)](),'defaultNavigationTimeoutMs':_0x33899a[_0x32c00a(0x1bb)]()[_0x32c00a(0x1f5)]()[_0x32c00a(0x1c2)](),'teardownTimeoutMs':_0x33899a[_0x32c00a(0x1bb)]()[_0x32c00a(0x1f5)]()['positive']()['optional'](),'env':EnvConfigSchema,'linter':LinterConfigSchema,'mcp':McpConfigSchema,'queue':QueueConfigSchema,'schedules':_0x33899a['array'](ScheduleSchema)['default']([]),'sandbox':SandboxConfigSchema});function isTimeZone(_0x176131){var _0x13ca01={_0x4ecf53:0x1c5},_0x85de29=_0x32c00a;try{return new Intl[(_0x85de29(0x1be))](_0x85de29(0x1d8),{'timeZone':_0x176131}),_0x176131[_0x85de29(_0x13ca01._0x4ecf53)]>0x0;}catch{return![];}}__name(isTimeZone,_0x32c00a(0x1d9));function isLocale(_0x57657b){var _0x2f153c=_0x32c00a;try{return Intl[_0x2f153c(0x1e3)](_0x57657b)[_0x2f153c(0x1c5)]===0x1;}catch{return![];}}__name(isLocale,'isLocale');var DEFAULT_CONFIG={'browsers':[_0x32c00a(0x19c)],'retry':{'count':0x0,'on':['transient']},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':_0x32c00a(0x1d3),'pageHtml':'redacted'},'dialogPolicy':_0x32c00a(0x1c9),'testDir':_0x32c00a(0x1bd),'helpersDir':_0x32c00a(0x1e2),'defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x7530,'linter':{'enabled':!![],'rules':{'lint:deep-css':'warn','lint:xpath':_0x32c00a(0x1d0),'lint:obfuscated-class':_0x32c00a(0x1d0),'lint:pause-explicit':_0x32c00a(0x1d0),'lint:disambig-by-index':_0x32c00a(0x19d),'lint:evaluate-discouraged':'warn','lint:scenario-in-root':_0x32c00a(0x1b2),'lint:mustache-in-dsl':_0x32c00a(0x1b2),'lint:goto-concat':'warn','lint:regex-invalid':_0x32c00a(0x1b2),'lint:echo-assert':_0x32c00a(0x1d0),'lint:lint-ok-missing-reason':_0x32c00a(0x1d0),'lint:flow-returns-value':'warn','lint:legacy-layout':_0x32c00a(0x1d0),'lint:external-variable-undeclared':_0x32c00a(0x1b2),'lint:env-host-from-base':_0x32c00a(0x1b2),'lint:one-test-per-file':_0x32c00a(0x1d0),'lint:shadows-dsl-function':_0x32c00a(0x1d0),'validator:unknown-function':'error'}},'env':{'shared':[]},'mcp':{'transport':_0x32c00a(0x1dd)},'queue':{'enabled':!![],'concurrency':0x1},'schedules':[],'sandbox':{}};export{BROWSER_CHANNEL_WORDS,BrowserChannelSchema,BrowserSchema,DEFAULT_CONFIG,DialogPolicySchema,EnvConfigSchema,FailureBundleConfigSchema,LinterConfigSchema,LinterRuleIdSchema,LinterSeveritySchema,McpConfigSchema,QueueConfigSchema,RetryConfigSchema,RetryReasonSchema,SYSTEM_BROWSER_CHANNELS,SandboxConfigSchema,ScheduleSchema,UnotestConfigSchema,ViewportSchema,WebServerConfigSchema};
|
package/dist/driver/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { E as ElementHint, S as ScreenshotOptions, N as NetworkEntry, W as WebDriver,
|
|
2
|
-
export {
|
|
1
|
+
import { E as ElementHint, S as ScreenshotOptions, L as LocatorValue, C as CaptureFrame, a as CaptureRect, N as NetworkEntry, W as WebDriver, b as LaunchOptions, c as ContextOptions, D as DriverContext, A as AttachOptions } from '../interfaces-DEmGI704.js';
|
|
2
|
+
export { d as ActionTimeout, e as CheckOptions, f as ClickOptions, g as CookieOptions, h as DriverPage, F as FillOptions, G as GotoOptions, H as HoverOptions, i as NavigationOptions, P as PressOptions, R as ReloadOptions, j as SelectOptions, V as Viewport, k as ViewportSize, l as WaitOptions, m as WaitState } from '../interfaces-DEmGI704.js';
|
|
3
3
|
import '@unotest/protocol';
|
|
4
4
|
import '../config/schema.js';
|
|
5
5
|
import 'zod';
|
|
@@ -57,6 +57,8 @@ interface FakeBehavior {
|
|
|
57
57
|
* when unspecified) for tests that exercise a format fallback. Default:
|
|
58
58
|
* the literal "fake-png"; tests that read dimensions seed a real PNG header. */
|
|
59
59
|
screenshotBytes?: Buffer | ((type: ScreenshotOptions["type"]) => Buffer);
|
|
60
|
+
/** Where masks lie in a capture (`boxesInCapture`). Default: none. */
|
|
61
|
+
captureBoxes?: (locs: readonly LocatorValue[], frame: CaptureFrame) => CaptureRect[];
|
|
60
62
|
/** What page.evaluate() resolves to — e.g. an OutlineTree for a capture
|
|
61
63
|
* path under test. Default: undefined. */
|
|
62
64
|
evaluateResult?: unknown;
|
|
@@ -85,7 +87,7 @@ declare class FakeWebDriver implements WebDriver {
|
|
|
85
87
|
close(): Promise<void>;
|
|
86
88
|
wsEndpoint(): string | undefined;
|
|
87
89
|
connectShared(): Promise<void>;
|
|
88
|
-
attachExisting(_opts?: AttachOptions): DriverContext
|
|
90
|
+
attachExisting(_opts?: AttachOptions): Promise<DriverContext>;
|
|
89
91
|
/** Test helper — full recorded call log. */
|
|
90
92
|
calls(): ReadonlyArray<RecordedCall>;
|
|
91
93
|
/** Test helper — calls matching a method name. */
|
package/dist/driver/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x4be305=_0x1b6f;(function(_0x1631a6,_0x1e2fd8){const _0x2b90d2={_0x280e5:0x1d9,_0x55e476:0x21f,_0x480a0b:0x22f},_0x397b75=_0x1b6f,_0xea857b=_0x1631a6();while(!![]){try{const _0x5eeb7b=-parseInt(_0x397b75(0x1be))/0x1+parseInt(_0x397b75(_0x2b90d2._0x280e5))/0x2+-parseInt(_0x397b75(0x1ff))/0x3*(-parseInt(_0x397b75(_0x2b90d2._0x55e476))/0x4)+-parseInt(_0x397b75(0x212))/0x5*(-parseInt(_0x397b75(0x1c5))/0x6)+parseInt(_0x397b75(0x1e4))/0x7+parseInt(_0x397b75(_0x2b90d2._0x480a0b))/0x8+-parseInt(_0x397b75(0x214))/0x9;if(_0x5eeb7b===_0x1e2fd8)break;else _0xea857b['push'](_0xea857b['shift']());}catch(_0xf7ef68){_0xea857b['push'](_0xea857b['shift']());}}}(_0x4d17,0x9f1bd));function _0x1b6f(_0x54c09c,_0x5a7cbc){_0x54c09c=_0x54c09c-0x1b4;const _0x4d17ac=_0x4d17();let _0x1b6ff9=_0x4d17ac[_0x54c09c];if(_0x1b6f['TUqpNk']===undefined){var _0x54c297=function(_0xf47314){const _0xbf2a5d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x38ceb5='',_0x48b3b6='';for(let _0xbe630c=0x0,_0x2b934f,_0x5108d9,_0x27cb0d=0x0;_0x5108d9=_0xf47314['charAt'](_0x27cb0d++);~_0x5108d9&&(_0x2b934f=_0xbe630c%0x4?_0x2b934f*0x40+_0x5108d9:_0x5108d9,_0xbe630c++%0x4)?_0x38ceb5+=String['fromCharCode'](0xff&_0x2b934f>>(-0x2*_0xbe630c&0x6)):0x0){_0x5108d9=_0xbf2a5d['indexOf'](_0x5108d9);}for(let _0x5b928a=0x0,_0x29938d=_0x38ceb5['length'];_0x5b928a<_0x29938d;_0x5b928a++){_0x48b3b6+='%'+('00'+_0x38ceb5['charCodeAt'](_0x5b928a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x48b3b6);};_0x1b6f['eNpaTE']=_0x54c297,_0x1b6f['WcbyHb']={},_0x1b6f['TUqpNk']=!![];}const _0x349e37=_0x4d17ac[0x0],_0x1a9c51=_0x54c09c+_0x349e37,_0x59d22c=_0x1b6f['WcbyHb'][_0x1a9c51];return!_0x59d22c?(_0x1b6ff9=_0x1b6f['eNpaTE'](_0x1b6ff9),_0x1b6f['WcbyHb'][_0x1a9c51]=_0x1b6ff9):_0x1b6ff9=_0x59d22c,_0x1b6ff9;}function _0x4d17(){const _0x3f6e69=['lNbHz2u','D2fPDezVCKXVywrtDgf0zq','CMvJB3jKzxi','nZaYode5mLLntfPjzq','zNjHBwvtDgfJAW','Cg9W','pgrPDIbKyxrHlxvUB3rLC3qTCMvMpsi','D2fPDezVCLrLEhq','ywjVDxq6yMXHBMS','CMvSB2fK','y29UC29SzuvUDhjPzxm','z2v0q29VA2LL','Dgv4DenVBNrLBNq','zhjPDMvY','ywn0AxzLswr4','zNjHBwvezxb0Aa','mtiYmJaWnvfrrezqzG','rMfRzvDLyKrYAxzLCG','zxzHBhvHDgvpBKXVy2f0B3i','Aw5UzxjuzxH0qNLezwzHDwX0','zMfRzsb0AxrSzq','AxnwAxnPyMXL','Bg9JywXtDg9YywDL','mZa2otKZmfzwq2nXuG','zMfRzs1WBMC','y29VA2LLu3rHDgu','y29UBMvJDfnOyxjLza','CMvM','C2nYzwvUC2HVDevSzw1LBNq','y291BNq','y29UBMvJDfnOyxjLzcbUB3qGC3vWCg9YDgvKigj5iezHA2vxzwjeCML2zxi','y2fSBhm','C2nYzwvUC2HVDej5DgvZ','DhLWzq','BgvUz3rO','zgvSzxrL','zgvMAw5LuhjVCgvYDhK','Ag92zxi','z290BW','y3r4','Bwv0Ag9K','B25ozxDqywDL','y29VA2LLCW','mZyZndaYrvvmsfbV','Bgf1BMnO','C3rLChm','zMLSDgvY','CMvJB3jK','Aw5UzxjuzxH0','Aw5WDxrwywX1zq','C2v0tg9JywXtDg9YywDL','BMv3ugfNzuXPC3rLBMvYCW','BMfTzq','zxzHBhvHDgvszxn1Bhq','nJq5mJu2m0nfDuTWrW','C2f2zvn0B3jHz2vtDgf0zq','zNvUy3rPB24','y29UDgv4Dhm','zw50zxjgCMfTzq','y2XVC2vgywTLugfNzq','D2fPDezVCG','CgfNzsbPBMrLEcbVDxqGB2yGCMfUz2u','iJ48l2rPDJ4','ChvZAa','y2XPCgjVyxjKugfZDgu','C3vIC2nYAwjL','zxjYB3jpBK5LEhrby3rPB24','y3jLyxrLuMvJB3jKzxi','y2XPy2S','yxr0ywnOrxHPC3rPBMC','DxjS','yMvOyxzPB3i','y2fSBhngB3i','D2fPDezVCK5HDMLNyxrPB24','z29cywnR','ChjLC3m','y2HLy2TLzfn0yxrLqNLezwzHDwX0','Bwf5yMvuAhjVDW','D2fPDezVCLvYBa','Aw5WDxrwywX1zuj5rgvMyxvSDa','ywn0AxzLugfNzq','mtHKBLbjwM4','z29gB3j3yxjK','lNbHz2uW','B3v0zxjive1m','y291BNrcEurLzMf1Bhq','C2nYzwvUC2HVDa','Aw5ZCgvJDevSzw1LBNq','Bg9JywXtDg9YywDLu3rHDgu','AxneAxnHyMXLza','C2v0q29VA2LL','DxbSB2fKrMLSzq','B3v0zxjiDg1SqNLszwy','y2XVC2u','Cg9WDxbpBKnSAwnR','DgL0Bgu','zg91yMXLq2XPy2S','BM8Gywn0AxzLihbHz2uGAw4Gy29UDgv4Da','tg9JyxrVCKvYCM9Y','Dw5JAgvJAW','mtbYwKXQDxu','zxHPDezYyw1L','mJaZmdqZmJrhsLDRCeG','zxzHBhvHDgu','zMLSBa','y3vYCMvUDfvYBa','C2nVCgu','ywrK','Dgv4DenVBNrLBNrcEurLzMf1Bhq','zxHPDezYyw1LignHBgXLzcb3AxrOig5VigzYyw1Lig9UihrOzsbZDgfJAW','yxr0ywnOrxHPC3rPBMCGBM90ihn1ChbVCNrLzcbIEsbgywTLv2vIrhjPDMvY','z2v0qxr0CMLIDxrL','C3bSAwnL','nZq1oda0qKXOwuDK','Bgf1BMnOzwq','y2HLy2TLzfn0yxrL','y2HLy2S','B25bzNrLCKnSAwnR','zNjVBq','C2vSzwn0t3b0Aw9U','C2v0qwn0AxzLugfNzq','zw1PDezHA2vqB3b1Ca','CgfNzuXPC3q','pgrPDJ48l2rPDJ4','BMv0D29YA0vUDhjPzxm','Aw5PDgLHBfvYBa'];_0x4d17=function(){return _0x3f6e69;};return _0x4d17();}var __defProp=Object[_0x4be305(0x1d2)],__name=(_0x38ceb5,_0x48b3b6)=>__defProp(_0x38ceb5,_0x4be305(0x1e2),{'value':_0x48b3b6,'configurable':!![]});function subscribe(_0xbe630c,_0x2b934f){const _0x31876e={_0x1b6c8c:0x219},_0x328ef6=_0x4be305;return _0xbe630c[_0x328ef6(_0x31876e._0x1b6c8c)](_0x2b934f),()=>{const _0x2a756f=_0x328ef6;_0xbe630c[_0x2a756f(0x1d1)](_0x2b934f);};}__name(subscribe,_0x4be305(0x1ef));import{UnotestError}from'@unotest/core';var DriverError=class extends UnotestError{static{__name(this,'DriverError');}},LocatorError=class extends UnotestError{static{__name(this,_0x4be305(0x210));}};function createRecorder(){const _0x18f05e={_0x194071:0x1cd},_0x100c54=_0x4be305,_0x5108d9=[];let _0x27cb0d=0x0;return{'push':__name(_0x5b928a=>_0x5108d9[_0x100c54(0x1ed)]({..._0x5b928a,'seq':_0x27cb0d++}),'push'),'calls':__name(()=>_0x5108d9,_0x100c54(_0x18f05e._0x194071))};}__name(createRecorder,_0x4be305(0x1f1));var FakePage=class{constructor(_0x29938d,_0x2d48bf,_0x20ca35,_0x4f9c7b){const _0x395b87={_0x3a153c:0x1f5},_0xfdbc3e=_0x4be305;this[_0xfdbc3e(0x22e)]=_0x29938d,this[_0xfdbc3e(_0x395b87._0x3a153c)]=_0x2d48bf,this[_0xfdbc3e(0x218)]=_0x20ca35,this['currentUrl']=_0x4f9c7b;}['recorder'];[_0x4be305(0x1f5)];['scope'];static{__name(this,'FakePage');}['currentUrl'];[_0x4be305(0x223)];[_0x4be305(0x1dd)](_0x33bdb1,_0x5119f0){const _0x14f53d={_0x7e3e9d:0x22e,_0x3bba8b:0x1ed,_0xe66f8c:0x218},_0x2b3552=_0x4be305;this[_0x2b3552(_0x14f53d._0x7e3e9d)][_0x2b3552(_0x14f53d._0x3bba8b)]({'scope':this[_0x2b3552(_0x14f53d._0xe66f8c)],'method':_0x33bdb1,'args':_0x5119f0});}['maybeThrow'](){const _0x4969f7={_0xea3bb9:0x1f5,_0x4a0118:0x1f0},_0x20a906=_0x4be305;if(this[_0x20a906(_0x4969f7._0xea3bb9)][_0x20a906(_0x4969f7._0x4a0118)]){const _0x380598=this[_0x20a906(0x1f5)][_0x20a906(0x1f0)];this[_0x20a906(0x1f5)][_0x20a906(0x1f0)]=void 0x0;throw _0x380598;}}[_0x4be305(0x1f4)](){const _0xd60f5={_0x860f87:0x217},_0x134dea=_0x4be305;return this[_0x134dea(_0xd60f5._0x860f87)];}async[_0x4be305(0x20d)](){const _0x82d975={_0x33b53a:0x1c2},_0x2ceb0f=_0x4be305;return this[_0x2ceb0f(0x1dd)](_0x2ceb0f(0x20d),[]),_0x2ceb0f(_0x82d975._0x33b53a);}async[_0x4be305(0x1f2)](_0x468918,_0x44ef05){const _0x1d0692={_0x545f6a:0x1dd,_0x36f30d:0x223},_0x5f0004=_0x4be305;this[_0x5f0004(_0x1d0692._0x545f6a)]('click',[_0x468918,_0x44ef05]),this[_0x5f0004(0x1fb)](),this[_0x5f0004(_0x1d0692._0x36f30d)]?.();}async[_0x4be305(0x20e)](_0x2a8ecf,_0x5a1a82){const _0x1d508c={_0x13c6a2:0x1fb},_0x1c6082=_0x4be305;this[_0x1c6082(0x1dd)](_0x1c6082(0x20e),[_0x2a8ecf,_0x5a1a82]),this[_0x1c6082(_0x1d508c._0x13c6a2)]();}async[_0x4be305(0x216)](_0x424fe3,_0x23fe25,_0x147a9f){const _0x34847e=_0x4be305;this[_0x34847e(0x1dd)]('fill',[_0x424fe3,_0x23fe25,_0x147a9f]),this['maybeThrow']();}async[_0x4be305(0x1f9)](_0x35a4e0,_0x2148e5,_0x3154c5){const _0x56d918={_0x52a615:0x1f9,_0x3d9e3b:0x1fb},_0x2b6946=_0x4be305;this['record'](_0x2b6946(_0x56d918._0x52a615),[_0x35a4e0,_0x2148e5,_0x3154c5]),this[_0x2b6946(_0x56d918._0x3d9e3b)]();}async[_0x4be305(0x222)](_0x5cedac,_0xbbeff){const _0xa7f7eb={_0x41ea62:0x1dd,_0x52524f:0x1fb},_0x3e73f5=_0x4be305;this[_0x3e73f5(_0xa7f7eb._0x41ea62)](_0x3e73f5(0x222),[_0x5cedac,_0xbbeff]),this[_0x3e73f5(_0xa7f7eb._0x52524f)]();}async['uncheck'](_0x3fb068,_0x406527){const _0x122a84=_0x4be305;this[_0x122a84(0x1dd)](_0x122a84(0x211),[_0x3fb068,_0x406527]),this['maybeThrow']();}async[_0x4be305(0x225)](_0x306e37,_0x59df9d,_0x3a4232){const _0x4cabf5={_0x58d004:0x1fb},_0x25722f=_0x4be305;this[_0x25722f(0x1dd)](_0x25722f(0x225),[_0x306e37,_0x59df9d,_0x3a4232]),this[_0x25722f(_0x4cabf5._0x58d004)]();}async[_0x4be305(0x1d3)](_0x4c12f4,_0x4fb87b){const _0x1073b1={_0x3e17f2:0x1dd},_0x2f0dc1=_0x4be305;this[_0x2f0dc1(_0x1073b1._0x3e17f2)](_0x2f0dc1(0x1d3),[_0x4c12f4,_0x4fb87b]),this['maybeThrow']();}async['scrollIntoView'](_0x4184ce){const _0x5e036d=_0x4be305;this[_0x5e036d(0x1dd)]('scrollIntoView',[_0x4184ce]),this[_0x5e036d(0x1fb)]();}async['dragAndDrop'](_0x1cb298,_0x2ffda0,_0x4f7aea){const _0x35f6ee={_0x4af8a5:0x1dd},_0x556f37=_0x4be305;this[_0x556f37(_0x35f6ee._0x4af8a5)]('dragAndDrop',[_0x1cb298,_0x2ffda0,_0x4f7aea]),this['maybeThrow']();}async[_0x4be305(0x209)](_0x269851,_0x1a7567){const _0x2dd911={_0x2bb17f:0x209,_0x343023:0x1fb},_0x1d024f=_0x4be305;this[_0x1d024f(0x1dd)](_0x1d024f(_0x2dd911._0x2bb17f),[_0x269851,_0x1a7567]),this[_0x1d024f(_0x2dd911._0x343023)]();}async[_0x4be305(0x1ee)](_0x2130ac,_0x39981e){const _0x2bc3e1={_0x5df7ff:0x1fb},_0x96de1d=_0x4be305;this['record']('clipboardPaste',[_0x2130ac,_0x39981e]),this[_0x96de1d(_0x2bc3e1._0x5df7ff)]();}async[_0x4be305(0x1cb)](_0x234278){const _0x4526d6={_0xdf5b19:0x203},_0xbd396e=_0x4be305;return this[_0xbd396e(0x1dd)](_0xbd396e(0x1cb),[_0x234278]),this['behavior'][_0xbd396e(_0x4526d6._0xdf5b19)]??0x1;}async[_0x4be305(0x1ba)](_0x475e55){const _0x6d99b6={_0x31df90:0x1dd},_0x175e6d=_0x4be305;return this[_0x175e6d(_0x6d99b6._0x31df90)](_0x175e6d(0x1ba),[_0x475e55]),this[_0x175e6d(0x1f5)]['textContentByDefault']??'';}async[_0x4be305(0x1de)](_0x1bc743){const _0x2fd9c1={_0x2813c7:0x1f5,_0x527ac5:0x1c1},_0x2543f9=_0x4be305;return this['record'](_0x2543f9(0x1de),[_0x1bc743]),this[_0x2543f9(_0x2fd9c1._0x2813c7)][_0x2543f9(_0x2fd9c1._0x527ac5)]??this['behavior'][_0x2543f9(0x21a)]??'';}async[_0x4be305(0x1df)](_0x354826){const _0x2c7b66={_0xf6024b:0x1f5,_0x41f833:0x1fd},_0x57f463=_0x4be305;return this[_0x57f463(0x1dd)]('inputValue',[_0x354826]),this[_0x57f463(_0x2c7b66._0xf6024b)][_0x57f463(_0x2c7b66._0x41f833)]??'';}async[_0x4be305(0x221)](_0x4e8ebe){const _0x5c9321={_0x4e7f62:0x1dd,_0x530074:0x221},_0x1304b0=_0x4be305;return this[_0x1304b0(_0x5c9321._0x4e7f62)](_0x1304b0(_0x5c9321._0x530074),[_0x4e8ebe]),this['behavior'][_0x1304b0(0x1fa)]??null;}async['isVisible'](_0x49b0ed){const _0x2db8df={_0xa6fb54:0x1f5},_0x4f69a7=_0x4be305;return this['record'](_0x4f69a7(0x1c3),[_0x49b0ed]),this[_0x4f69a7(_0x2db8df._0xa6fb54)]['isVisibleByDefault']??!![];}async[_0x4be305(0x207)](_0x34b8e0){const _0x592ca8=_0x4be305;return this[_0x592ca8(0x1dd)](_0x592ca8(0x207),[_0x34b8e0]),this[_0x592ca8(0x1f5)]['isDisabledByDefault']??![];}async[_0x4be305(0x21d)](_0x2e49f8,_0x4318aa){const _0x1e6023={_0x2ab260:0x1f5},_0x5030ad=_0x4be305;return this['record']('getAttribute',[_0x2e49f8,_0x4318aa]),this[_0x5030ad(_0x1e6023._0x2ab260)]['attributesByDefault']?.[_0x4318aa]??null;}async[_0x4be305(0x1ea)](_0x300eb0,_0x49516e){const _0x37c5f7=_0x4be305;this['record'](_0x37c5f7(0x1ea),[_0x300eb0,_0x49516e]);}async[_0x4be305(0x1fc)](_0x1cb684,_0x1a52a0){const _0x572340={_0x43fe75:0x1dd,_0x1249ae:0x1fc},_0xf88d61=_0x4be305;this[_0xf88d61(_0x572340._0x43fe75)](_0xf88d61(_0x572340._0x1249ae),[_0x1cb684,_0x1a52a0]);}async[_0x4be305(0x1b5)](_0x11d53c,_0x29ed62){const _0x25ad84={_0x295018:0x1dd},_0x81ed53=_0x4be305;this[_0x81ed53(_0x25ad84._0x295018)]('waitForText',[_0x11d53c,_0x29ed62]);}async['waitForNavigation'](_0x106019){const _0x1e306e={_0x5e9eb:0x1dd,_0x130835:0x1f7},_0x5e6c2b=_0x4be305;this[_0x5e6c2b(_0x1e306e._0x5e9eb)](_0x5e6c2b(_0x1e306e._0x130835),[_0x106019]);}async[_0x4be305(0x22d)](_0x18baef,_0x219c26){const _0x24813d={_0x23aa46:0x1dd,_0x4495d9:0x22d},_0x1185ce=_0x4be305;this[_0x1185ce(_0x24813d._0x23aa46)](_0x1185ce(_0x24813d._0x4495d9),[_0x18baef,_0x219c26]);}async[_0x4be305(0x1d4)](_0x2ddec0,_0x2c66f4){const _0x1a520c=_0x4be305;this[_0x1a520c(0x1dd)](_0x1a520c(0x1d4),[_0x2ddec0,_0x2c66f4]),this['currentUrl']=_0x2ddec0;}async[_0x4be305(0x1b7)](_0x4b5830){this['record']('reload',[_0x4b5830]);}async[_0x4be305(0x1f8)](_0x344f21){const _0x126043={_0x1b039c:0x1dd,_0x389258:0x1f8},_0x272303=_0x4be305;this[_0x272303(_0x126043._0x1b039c)](_0x272303(_0x126043._0x389258),[_0x344f21]);}async['goForward'](_0x57f8e3){const _0x2e07de=_0x4be305;this['record'](_0x2e07de(0x200),[_0x57f8e3]);}async['evaluate'](_0x2aea9f){const _0x2186a1={_0x3123c8:0x1dd,_0x2241c4:0x215,_0x532574:0x1e3},_0x5eb1f8=_0x4be305;return this[_0x5eb1f8(_0x2186a1._0x3123c8)](_0x5eb1f8(_0x2186a1._0x2241c4),[_0x2aea9f]),this['behavior'][_0x5eb1f8(_0x2186a1._0x532574)];}async[_0x4be305(0x1c0)](_0x31690b,_0x3e9e5d){const _0x7fecc8={_0x369e31:0x1dd},_0x448883=_0x4be305;return this[_0x448883(_0x7fecc8._0x369e31)]('evaluateOnLocator',[_0x31690b,_0x3e9e5d]),void 0x0;}async[_0x4be305(0x205)](_0x5e3efc){const _0x45b531={_0x3e4f39:0x1db,_0xd65e7e:0x1d0,_0x312d43:0x1db,_0x32637c:0x1f5},_0x55173a=_0x4be305;this['record'](_0x55173a(0x205),[_0x5e3efc]);if(_0x5e3efc[_0x55173a(_0x45b531._0x3e4f39)][_0x55173a(_0x45b531._0xd65e7e)]!==0x1||_0x5e3efc[_0x55173a(0x1db)][0x0]['kind']!==_0x55173a(0x1c9))return null;const _0x31bc6d=_0x5e3efc[_0x55173a(_0x45b531._0x312d43)][0x0][_0x55173a(0x1c9)],_0x3bacd9=this[_0x55173a(_0x45b531._0x32637c)]['elementHintByRef']?.[_0x31bc6d];return _0x3bacd9??null;}async[_0x4be305(0x204)](_0x19ed8b){const _0xfe2eff={_0x4e4c34:0x204},_0x4db2ad=_0x4be305;return this[_0x4db2ad(0x1dd)](_0x4db2ad(_0xfe2eff._0x4e4c34),[_0x19ed8b]),this[_0x4db2ad(0x1ce)](_0x19ed8b?.[_0x4db2ad(0x1cf)]);}async[_0x4be305(0x1ca)](_0x164956,_0x216c2a){const _0x4d1a5c={_0x38d3b6:0x1dd,_0x4833e2:0x1cf},_0x5547d9=_0x4be305;return this[_0x5547d9(_0x4d1a5c._0x38d3b6)](_0x5547d9(0x1ca),[_0x164956,_0x216c2a]),this[_0x5547d9(0x1ce)](_0x216c2a?.[_0x5547d9(_0x4d1a5c._0x4833e2)]);}[_0x4be305(0x1ce)](_0x5eb071){const _0x281562={_0x2e3a84:0x1ce,_0x4a05cc:0x1c6,_0x2f3b5b:0x1e6},_0x354dfe=_0x4be305,_0x4bbb46=this[_0x354dfe(0x1f5)][_0x354dfe(_0x281562._0x2e3a84)];if(_0x4bbb46===void 0x0)return Buffer[_0x354dfe(0x224)](_0x354dfe(_0x281562._0x4a05cc));return typeof _0x4bbb46===_0x354dfe(_0x281562._0x2f3b5b)?_0x4bbb46(_0x5eb071):_0x4bbb46;}async[_0x4be305(0x202)](_0x5518be){const _0x148f5c={_0x3eba40:0x202,_0xf1a1dd:0x1db,_0x34896c:0x1d0,_0x14fff4:0x1db,_0x3bd776:0x1c9,_0x5af643:0x20a,_0x5861ea:0x1b4,_0x5434b7:0x229},_0x15a8a9=_0x4be305;this[_0x15a8a9(0x1dd)](_0x15a8a9(_0x148f5c._0x3eba40),[_0x5518be]);if(_0x5518be[_0x15a8a9(_0x148f5c._0xf1a1dd)][_0x15a8a9(_0x148f5c._0x34896c)]===0x1&&_0x5518be['steps'][0x0]['kind']==='ref'){const _0x5ad2af=_0x5518be[_0x15a8a9(_0x148f5c._0x14fff4)][0x0][_0x15a8a9(_0x148f5c._0x3bd776)];return this[_0x15a8a9(0x1f5)][_0x15a8a9(_0x148f5c._0x5af643)]?.[_0x5ad2af]??_0x15a8a9(_0x148f5c._0x5861ea)+_0x5ad2af+_0x15a8a9(0x1ec);}return _0x15a8a9(_0x148f5c._0x5434b7);}},FakeContext=class{constructor(_0x1dcf9b,_0x5486c1,_0xc27375){const _0x1947e5={_0x390277:0x1f5,_0x38e29c:0x201,_0x4d2c5b:0x22b,_0x5c0396:0x1b6,_0x216d7f:0x20c,_0x4483a1:0x1d8},_0x1d228a={_0x57f963:0x227},_0x7bb607=_0x4be305;this[_0x7bb607(0x22e)]=_0x1dcf9b,this[_0x7bb607(_0x1947e5._0x390277)]=_0x5486c1,this['scope']=_0xc27375;const _0x598dfa=new FakePage(_0x1dcf9b,_0x5486c1,_0xc27375+_0x7bb607(_0x1947e5._0x38e29c),_0x5486c1[_0x7bb607(_0x1947e5._0x4d2c5b)]??_0x7bb607(_0x1947e5._0x5c0396));_0x5486c1[_0x7bb607(_0x1947e5._0x216d7f)]&&(_0x598dfa[_0x7bb607(0x223)]=()=>{const _0x2b69ed=_0x7bb607;this[_0x2b69ed(_0x1d228a._0x57f963)](_0x5486c1['popupOnClick']);}),this['pageList']=[_0x598dfa],this['localStorageState']={..._0x5486c1[_0x7bb607(0x1c4)]??{}},this[_0x7bb607(0x1c7)]={..._0x5486c1[_0x7bb607(_0x1947e5._0x4483a1)]??{}};}[_0x4be305(0x22e)];[_0x4be305(0x1f5)];[_0x4be305(0x218)];static{__name(this,'FakeContext');}[_0x4be305(0x228)];[_0x4be305(0x1bc)]=0x0;[_0x4be305(0x230)]=[];[_0x4be305(0x206)];[_0x4be305(0x1c7)];[_0x4be305(0x1e1)]=new Set();[_0x4be305(0x1dd)](_0x1fef26,_0x418c61){const _0x58ded4={_0x8834bf:0x22e,_0x5d9deb:0x1ed},_0x59938f=_0x4be305;this[_0x59938f(_0x58ded4._0x8834bf)][_0x59938f(_0x58ded4._0x5d9deb)]({'scope':this['scope'],'method':_0x1fef26,'args':_0x418c61});}['pages'](){const _0x2a7a74={_0x282ea5:0x228},_0x3acbc3=_0x4be305;return this[_0x3acbc3(_0x2a7a74._0x282ea5)];}[_0x4be305(0x1fe)](){const _0x562321={_0x456ccd:0x20f,_0x2a7553:0x1bc},_0x1509df=_0x4be305,_0x5e46df=this['pageList'][this[_0x1509df(0x1bc)]];if(!_0x5e46df)throw new DriverError(_0x1509df(_0x562321._0x456ccd),{'activeIdx':this[_0x1509df(_0x562321._0x2a7553)]});return _0x5e46df;}[_0x4be305(0x1b8)](){const _0xf26cec={_0x589a19:0x1b8},_0xf4f3da=_0x4be305;return this[_0xf4f3da(0x1f5)][_0xf4f3da(_0xf26cec._0x589a19)]??[];}[_0x4be305(0x22a)](){const _0x5fc8a3={_0x5e842d:0x1f5,_0x4d7db8:0x22a},_0x5e7314=_0x4be305;return this[_0x5e7314(_0x5fc8a3._0x5e842d)][_0x5e7314(_0x5fc8a3._0x4d7db8)]??[];}async[_0x4be305(0x226)](_0x3e98f0){const _0x25189f={_0x396ae5:0x1eb},_0x3a67a6=_0x4be305;this[_0x3a67a6(0x1dd)]('setActivePage',[_0x3e98f0]);if(_0x3e98f0<0x0||_0x3e98f0>=this[_0x3a67a6(0x228)][_0x3a67a6(0x1d0)])throw new DriverError(_0x3a67a6(_0x25189f._0x396ae5),{'index':_0x3e98f0,'available':this[_0x3a67a6(0x228)][_0x3a67a6(0x1d0)]});this[_0x3a67a6(0x1bc)]=_0x3e98f0,this['frameStack'][_0x3a67a6(0x1d0)]=0x0;}[_0x4be305(0x1d7)](_0x47e57b){const _0x2eda84=_0x4be305;return subscribe(this[_0x2eda84(0x1e1)],_0x47e57b);}['emitFakePopup'](_0x347745){const _0x40cdbd={_0x515e4e:0x218,_0x843b04:0x22c,_0x4f9d51:0x228,_0x1af5d6:0x1d0},_0x2d9fd7=_0x4be305,_0x5bb44e=this[_0x2d9fd7(_0x40cdbd._0x515e4e)]+_0x2d9fd7(_0x40cdbd._0x843b04)+this[_0x2d9fd7(_0x40cdbd._0x4f9d51)][_0x2d9fd7(_0x40cdbd._0x1af5d6)],_0x3bd5ea=new FakePage(this[_0x2d9fd7(0x22e)],this[_0x2d9fd7(0x1f5)],_0x5bb44e,_0x347745);this[_0x2d9fd7(0x228)]['push'](_0x3bd5ea);const _0x26cb6b=this[_0x2d9fd7(_0x40cdbd._0x4f9d51)][_0x2d9fd7(0x1d0)]-0x1;for(const _0x57bbb0 of this[_0x2d9fd7(0x1e1)]){try{_0x57bbb0({'index':_0x26cb6b,'url':_0x347745});}catch{}}return _0x26cb6b;}[_0x4be305(0x1e9)](_0x7e3bb3){const _0x1f61aa={_0x129bc3:0x228,_0x25b1f7:0x1d0,_0x4d321e:0x21e},_0x8ff500=_0x4be305;if(_0x7e3bb3<0x0||_0x7e3bb3>=this[_0x8ff500(0x228)][_0x8ff500(0x1d0)])throw new DriverError('page\x20index\x20out\x20of\x20range',{'index':_0x7e3bb3,'available':this[_0x8ff500(_0x1f61aa._0x129bc3)][_0x8ff500(_0x1f61aa._0x25b1f7)]});this['pageList'][_0x8ff500(_0x1f61aa._0x4d321e)](_0x7e3bb3,0x1);}async[_0x4be305(0x1e8)](_0x9b7152){const _0x5cb19d={_0x495b0a:0x1db,_0x58a4c8:0x1d0},_0x465aae=_0x4be305;this[_0x465aae(0x1dd)]('enterFrame',[_0x9b7152]);if(!_0x9b7152[_0x465aae(_0x5cb19d._0x495b0a)][_0x465aae(_0x5cb19d._0x58a4c8)])throw new LocatorError('enterFrame\x20called\x20with\x20empty\x20locator',{'locator':_0x9b7152});this[_0x465aae(0x230)]['push'](_0x9b7152);}async['exitFrame'](){const _0x38e8e9={_0x30ad00:0x230},_0x416d83=_0x4be305;this['record'](_0x416d83(0x213),[]);if(this[_0x416d83(_0x38e8e9._0x30ad00)][_0x416d83(0x1d0)]===0x0)throw new DriverError(_0x416d83(0x21b),{});this[_0x416d83(_0x38e8e9._0x30ad00)][_0x416d83(0x231)]();}async[_0x4be305(0x1e0)](_0x3aed3c,_0x3c65ae){const _0x18edf7={_0x44c25f:0x1e0},_0x4fe38e=_0x4be305;this[_0x4fe38e(0x1dd)](_0x4fe38e(_0x18edf7._0x44c25f),[_0x3aed3c,_0x3c65ae]),this['localStorageState'][_0x3aed3c]=_0x3c65ae;}async['getLocalStorage'](_0x94964a){const _0x5f4615=_0x4be305;return this[_0x5f4615(0x1dd)]('getLocalStorage',[_0x94964a]),this[_0x5f4615(0x206)][_0x94964a]??null;}async[_0x4be305(0x208)](_0x5cf8d6,_0xcd1c1a,_0x849c8c){const _0x5708de=_0x4be305;this[_0x5708de(0x1dd)](_0x5708de(0x208),[_0x5cf8d6,_0xcd1c1a,_0x849c8c]),this['cookieState'][_0x5cf8d6]=_0xcd1c1a;}async[_0x4be305(0x1b9)](_0x10b7e9){const _0x4d9991=_0x4be305;return this['record'](_0x4d9991(0x1b9),[_0x10b7e9]),this['cookieState'][_0x10b7e9]??null;}async['saveStorageState'](_0x36266d){const _0x2da559={_0x5176f9:0x1e5},_0x4f67d5=_0x4be305;this[_0x4f67d5(0x1dd)](_0x4f67d5(_0x2da559._0x5176f9),[_0x36266d]);}async[_0x4be305(0x215)](_0x5f376d){const _0x2cc088=_0x4be305;return this['record'](_0x2cc088(0x215),[_0x5f376d]),void 0x0;}async[_0x4be305(0x20b)](){const _0x33086b={_0x131d32:0x1dd},_0x21811f=_0x4be305;this[_0x21811f(_0x33086b._0x131d32)](_0x21811f(0x20b),[]);}[_0x4be305(0x1bd)](){const _0x3fa6ce={_0x2caa99:0x1d0},_0x4eec81=_0x4be305;return this[_0x4eec81(0x230)][_0x4eec81(_0x3fa6ce._0x2caa99)];}},FakeWebDriver=class{constructor(_0x41725a={}){const _0x5b469f={_0x263f42:0x1f5},_0x13d13d=_0x4be305;this[_0x13d13d(_0x5b469f._0x263f42)]=_0x41725a,this['recorder']=createRecorder();}[_0x4be305(0x1f5)];static{__name(this,_0x4be305(0x1bf));}['launched']=![];['recorder'];[_0x4be305(0x1e7)]=[];async['launch'](_0x27a079){const _0x257c61={_0x340ddd:0x220},_0x4b19da=_0x4be305;this[_0x4b19da(0x22e)][_0x4b19da(0x1ed)]({'scope':'driver','method':_0x4b19da(0x1da),'args':[_0x27a079]}),this[_0x4b19da(_0x257c61._0x340ddd)]=!![];}async['newContext'](_0x19b996){const _0x319c1d={_0x4eea57:0x22e,_0x16611d:0x1d5,_0x3a5cfe:0x1e7},_0x5759bb=_0x4be305;this['recorder'][_0x5759bb(0x1ed)]({'scope':'driver','method':'newContext','args':[_0x19b996]});if(!this[_0x5759bb(0x220)])throw new DriverError('newContext\x20called\x20before\x20launch()',{});const _0x314327=new FakeContext(this[_0x5759bb(_0x319c1d._0x4eea57)],this['behavior'],_0x5759bb(_0x319c1d._0x16611d)+this[_0x5759bb(_0x319c1d._0x3a5cfe)]['length']);return this[_0x5759bb(_0x319c1d._0x3a5cfe)][_0x5759bb(0x1ed)](_0x314327),_0x314327;}async[_0x4be305(0x20b)](){const _0x41b72a={_0x37d1e0:0x22e,_0x5843c2:0x1ed,_0x5a2922:0x220},_0x2151d4=_0x4be305;this[_0x2151d4(_0x41b72a._0x37d1e0)][_0x2151d4(_0x41b72a._0x5843c2)]({'scope':_0x2151d4(0x1bb),'method':_0x2151d4(0x20b),'args':[]}),this[_0x2151d4(_0x41b72a._0x5a2922)]=![];}['wsEndpoint'](){return void 0x0;}async[_0x4be305(0x1c8)](){const _0x535240=_0x4be305;throw new DriverError(_0x535240(0x1cc),{});}[_0x4be305(0x1f3)](_0x19bce8){const _0x6d8446={_0x455fbb:0x21c},_0x4e79c5=_0x4be305;throw new DriverError(_0x4e79c5(_0x6d8446._0x455fbb),{});}[_0x4be305(0x1cd)](){const _0x2d86e8={_0x485c6d:0x22e},_0x429f9f=_0x4be305;return this[_0x429f9f(_0x2d86e8._0x485c6d)]['calls']();}[_0x4be305(0x1f6)](_0x328ec2){const _0x26f1d8={_0x29d23c:0x22e},_0x46d749=_0x4be305;return this[_0x46d749(_0x26f1d8._0x29d23c)][_0x46d749(0x1cd)]()[_0x46d749(0x1dc)](_0x558884=>_0x558884[_0x46d749(0x1d6)]===_0x328ec2);}};export{FakeWebDriver};
|
|
1
|
+
const _0xaec1f4=_0x5d47;function _0x5d47(_0x346a48,_0x24cb8f){_0x346a48=_0x346a48-0x9e;const _0x103582=_0x1035();let _0x5d47b0=_0x103582[_0x346a48];if(_0x5d47['UnXDjG']===undefined){var _0x480385=function(_0x23f3e9){const _0x3695ab='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4568e9='',_0x259e8d='';for(let _0x343e89=0x0,_0x57ba9a,_0x242d64,_0x1f3c6e=0x0;_0x242d64=_0x23f3e9['charAt'](_0x1f3c6e++);~_0x242d64&&(_0x57ba9a=_0x343e89%0x4?_0x57ba9a*0x40+_0x242d64:_0x242d64,_0x343e89++%0x4)?_0x4568e9+=String['fromCharCode'](0xff&_0x57ba9a>>(-0x2*_0x343e89&0x6)):0x0){_0x242d64=_0x3695ab['indexOf'](_0x242d64);}for(let _0x8b620=0x0,_0x4bde26=_0x4568e9['length'];_0x8b620<_0x4bde26;_0x8b620++){_0x259e8d+='%'+('00'+_0x4568e9['charCodeAt'](_0x8b620)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x259e8d);};_0x5d47['IOIyNP']=_0x480385,_0x5d47['wdzDBj']={},_0x5d47['UnXDjG']=!![];}const _0x4bb564=_0x103582[0x0],_0x5ebbb1=_0x346a48+_0x4bb564,_0x3edcfb=_0x5d47['wdzDBj'][_0x5ebbb1];return!_0x3edcfb?(_0x5d47b0=_0x5d47['IOIyNP'](_0x5d47b0),_0x5d47['wdzDBj'][_0x5ebbb1]=_0x5d47b0):_0x5d47b0=_0x3edcfb,_0x5d47b0;}(function(_0x2d9e26,_0x2dfc2d){const _0x5cf95a={_0x2e2c4e:0xed,_0x444cd6:0xf8,_0x2f8d40:0x105,_0x25e8d3:0xf3},_0x4d6d73=_0x5d47,_0x1b6627=_0x2d9e26();while(!![]){try{const _0x512d7d=parseInt(_0x4d6d73(0x107))/0x1+-parseInt(_0x4d6d73(0xd2))/0x2*(-parseInt(_0x4d6d73(0xaf))/0x3)+parseInt(_0x4d6d73(_0x5cf95a._0x2e2c4e))/0x4+parseInt(_0x4d6d73(0xaa))/0x5*(-parseInt(_0x4d6d73(_0x5cf95a._0x444cd6))/0x6)+parseInt(_0x4d6d73(_0x5cf95a._0x2f8d40))/0x7*(parseInt(_0x4d6d73(0xb2))/0x8)+-parseInt(_0x4d6d73(_0x5cf95a._0x25e8d3))/0x9+parseInt(_0x4d6d73(0x11c))/0xa;if(_0x512d7d===_0x2dfc2d)break;else _0x1b6627['push'](_0x1b6627['shift']());}catch(_0x54809f){_0x1b6627['push'](_0x1b6627['shift']());}}}(_0x1035,0xc65bf));var __defProp=Object[_0xaec1f4(0xfa)],__name=(_0x4568e9,_0x259e8d)=>__defProp(_0x4568e9,_0xaec1f4(0xb3),{'value':_0x259e8d,'configurable':!![]});function _0x1035(){const _0x2e1ce5=['C3bSAwnL','nZm3odeXsLncs1Dm','Ag92zxi','iJ48l2rPDJ4','C2nYzwvUC2HVDa','y2XPy2S','mtaYD2P0EwDT','DhLWzq','zgvMAw5LuhjVCgvYDhK','y2HLy2TLzfn0yxrLqNLezwzHDwX0','Aw5UzxjuzxH0','zxzHBhvHDgvpBKXVy2f0B3i','B25bzNrLCKnSAwnR','C2f2zvn0B3jHz2vtDgf0zq','BMv3ugfNzuXPC3rLBMvYCW','y291BNrcEurLzMf1Bhq','zxjYB3jpBK5LEhrby3rPB24','DxbSB2fKrMLSzq','Bgf1BMnOzwq','ndLttLrJDeW','DgLJAW','nde4nJu4s1PPrwDs','y2XPCgjVyxjKugfZDgu','A2LUza','zMLSBa','y29UC29SzuvUDhjPzxm','zw50zxjgCMfTzq','Dgv4DenVBNrLBNrcEurLzMf1Bhq','zhjHz0fUzerYB3a','C2nYB2XSsw50B1zPzxC','y2XVC2vgywTLugfNzq','y29UBMvJDfnOyxjLza','zMLSDgvY','zNjLzxPL','Aw5WDxrwywX1zq','CNvU','yxr0ywnOrxHPC3rPBMC','pgrPDJ48l2rPDJ4','C3rLChm','Cg9W','lNbHz2uW','zgvSzxrL','nZKWmtGZmefeAw5ZzW','C2nYzwvUC2HVDej5DgvZ','z29gB3j3yxjK','CgfNzxm','ywn0AxzLugfNzq','zMfRzsb0AxrSzq','CMvQzwn0','B3v0zxjive1m','Cg9WDxbpBKnSAwnR','Bwv0Ag9K','y2XVy2S','C2nYzwvUC2HVDevSzw1LBNq','zNjVEMvU','C2v0vMLLD3bVCNq','B3v0zxjiDg1SqNLszwy','AxnwAxnPyMXL','rMfRzvDLyKrYAxzLCG','CgfNzuXPC3q','C2vSzwn0t3b0Aw9U','y29VA2LLCW','C2nVCgu','AxneAxnHyMXLzej5rgvMyxvSDa','z2v0qxr0CMLIDxrL','D2fPDezVCG','nde4ntiWz3fMq1zt','yNjVD3nLCKnVBNrLEhrjza','Bg9JywXtDg9YywDLu3rHDgu','y29UBMvJDfnOyxjLzcbUB3qGC3vWCg9YDgvKigj5iezHA2vxzwjeCML2zxi','Aw5WDxrwywX1zuj5rgvMyxvSDa','mZuWmZfft0rMuKC','Bgf1BMnO','y3r4','nJiWmJqWvwz6rLHm','BMfTzq','zNvUy3rPB24','Aw5UzxjuzxH0qNLezwzHDwX0','D2fPDezVCK5HDMLNyxrPB24','ChjLC3m','ywjVDxq6yMXHBMS','z2v0q29VA2LL','y2XVC2u','zw1PDezHA2vqB3b1Ca','yM94zxnjBKnHChr1CMu','zhjPDMvY','tg9JyxrVCKvYCM9Y','yMvOyxzPB3i','zxHPDezYyw1L','y29VA2LLu3rHDgu','zNjHBwvtDgfJAW','AgfZq2XVy2S','DgL0Bgu','C2v0tg9JywXtDg9YywDL','y2HLy2TLzfn0yxrL','y291BNq','y2HLy2S','Dw5JAgvJAW','z290BW','D2fPDezVCKXVywrtDgf0zq','y2fSBhngB3i','ywn0AxzLswr4','y2XVy2SUDgLJAW','zxzHBhvHDgu','rMfRzvbHz2u','BgvUz3rO','nhbnD0jSAa','y3vYCMvUDfvYBa','zxHPDezYyw1LignHBgXLzcb3AxrOig5VigzYyw1Lig9UihrOzsbZDgfJAW','CMvM','C3vIC2nYAwjL','zMfRzs1WBMC','Dgv4DenVBNrLBNq','CMvJB3jK','D2fPDezVCLvYBa','ChvZAa','BM8Gywn0AxzLihbHz2uGAw4Gy29UDgv4Da','y2fSBhm','pgrPDIbKyxrHlxvUB3rLC3qTCMvMpsi','rMfRzunVBNrLEhq','y2XVy2TgCM96zw4','zNjHBwvezxb0Aa','y2XVy2SUzNjLzxPL','zg91yMXLq2XPy2S','C2v0q29VA2LL','CMvJB3jKzxi','zwXLBwvUDeHPBNrcEvjLzG','AxneAxnHyMXLza','CMvSB2fK','C2v0qwn0AxzLugfNzq','Bwf5yMvuAhjVDW','z29cywnR','BMv0D29YA0vUDhjPzxm','mJe3mda4nfriufLdDG','D2fPDezVCLrLEhq','BMv3q29UDgv4Da','Aw5ZCgvJDevSzw1LBNq','y2fWDhvYzujVEgvZ'];_0x1035=function(){return _0x2e1ce5;};return _0x1035();}function subscribe(_0x343e89,_0x57ba9a){return _0x343e89['add'](_0x57ba9a),()=>{const _0x494374=_0x5d47;_0x343e89[_0x494374(0x11b)](_0x57ba9a);};}__name(subscribe,_0xaec1f4(0xd6));import{UnotestError}from'@unotest/core';var DriverError=class extends UnotestError{static{__name(this,'DriverError');}},LocatorError=class extends UnotestError{static{__name(this,_0xaec1f4(0xbe));}},ClockNotInstalledError=class extends DriverError{static{__name(this,'ClockNotInstalledError');}constructor(){super('the\x20page\x20clock\x20is\x20not\x20installed\x20on\x20this\x20browser\x20—\x20it\x20has\x20to\x20be\x20in\x20place\x20before\x20the\x20first\x20page\x20loads,\x20or\x20the\x20page\x27s\x20own\x20timers\x20keep\x20real\x20time.\x20A\x20run\x20installs\x20it\x20when\x20the\x20scenario\x20or\x20its\x20helpers\x20call\x20clockFreeze\x20/\x20clockTick\x20/\x20clockRun;\x20over\x20MCP,\x20open\x20the\x20browser\x20with\x20new_context\x20{clock:\x20true}\x20(or\x20explore_start\x20{clock:\x20true}).',{});}},NO_CLOCK={'freeze':__name(()=>Promise[_0xaec1f4(0x122)](new ClockNotInstalledError()),_0xaec1f4(0x113)),'tick':__name(()=>Promise['reject'](new ClockNotInstalledError()),'tick'),'run':__name(()=>Promise[_0xaec1f4(0x122)](new ClockNotInstalledError()),_0xaec1f4(0x115)),'frozen':__name(()=>![],'frozen')};function createRecorder(){const _0x441227={_0x4f4bb3:0xdd},_0x3aa806=_0xaec1f4,_0x242d64=[];let _0x1f3c6e=0x0;return{'push':__name(_0x8b620=>_0x242d64['push']({..._0x8b620,'seq':_0x1f3c6e++}),'push'),'calls':__name(()=>_0x242d64,_0x3aa806(_0x441227._0x4f4bb3))};}__name(createRecorder,'createRecorder');var FakePage=class{constructor(_0x4bde26,_0x32d208,_0x4525cf,_0x234dc8){const _0x3e81d7={_0x5a637f:0xe5,_0x519e1b:0xbf,_0x133ac7:0xd3},_0x18ad5a=_0xaec1f4;this[_0x18ad5a(_0x3e81d7._0x5a637f)]=_0x4bde26,this[_0x18ad5a(_0x3e81d7._0x519e1b)]=_0x32d208,this['scope']=_0x4525cf,this[_0x18ad5a(_0x3e81d7._0x133ac7)]=_0x234dc8;}[_0xaec1f4(0xe5)];[_0xaec1f4(0xbf)];['scope'];static{__name(this,_0xaec1f4(0xd0));}[_0xaec1f4(0xd3)];[_0xaec1f4(0xfe)];[_0xaec1f4(0xd9)](_0x3dbcc9,_0xf0ff12){const _0x19c028=_0xaec1f4;this[_0x19c028(0xe5)][_0x19c028(0xdb)]({'scope':this[_0x19c028(0xa6)],'method':_0x3dbcc9,'args':_0xf0ff12});}['maybeThrow'](){const _0x30b02d={_0x28ca2a:0xbf,_0x58e933:0x102,_0x288f6e:0xbf},_0x285a49=_0xaec1f4;if(this[_0x285a49(_0x30b02d._0x28ca2a)][_0x285a49(_0x30b02d._0x58e933)]){const _0x409f70=this[_0x285a49(_0x30b02d._0x28ca2a)][_0x285a49(0x102)];this[_0x285a49(_0x30b02d._0x288f6e)]['errorOnNextAction']=void 0x0;throw _0x409f70;}}['url'](){return this['currentUrl'];}async['title'](){const _0x4defa9={_0x32b5ba:0xd9},_0x43b14b=_0xaec1f4;return this[_0x43b14b(_0x4defa9._0x32b5ba)](_0x43b14b(0xc4),[]),_0x43b14b(0x121);}async[_0xaec1f4(0xf7)](_0x43fa74,_0x1282a1){const _0x1bf9a6={_0x1dcd69:0xd9,_0x4f7ab2:0xea},_0x2f477f=_0xaec1f4;this[_0x2f477f(_0x1bf9a6._0x1dcd69)](_0x2f477f(0xf7),[_0x43fa74,_0x1282a1]),this[_0x2f477f(_0x1bf9a6._0x4f7ab2)](),this['onAfterClick']?.();}async[_0xaec1f4(0xe3)](_0x1397b7,_0x124124){const _0x5ad487={_0x3f085d:0xe3,_0x2ee1ea:0xea},_0x154d60=_0xaec1f4;this['record'](_0x154d60(_0x5ad487._0x3f085d),[_0x1397b7,_0x124124]),this[_0x154d60(_0x5ad487._0x2ee1ea)]();}async['fill'](_0x232c81,_0x44f4fc,_0x47e5ab){const _0x46238d={_0x4c906b:0x10a},_0x3c3929=_0xaec1f4;this[_0x3c3929(0xd9)](_0x3c3929(_0x46238d._0x4c906b),[_0x232c81,_0x44f4fc,_0x47e5ab]),this['maybeThrow']();}async[_0xaec1f4(0xb7)](_0x505563,_0x4b5acb,_0x2ec1a0){const _0x4459ff={_0x5a931a:0xb7,_0x596a38:0xea},_0x2e8c78=_0xaec1f4;this[_0x2e8c78(0xd9)](_0x2e8c78(_0x4459ff._0x5a931a),[_0x505563,_0x4b5acb,_0x2ec1a0]),this[_0x2e8c78(_0x4459ff._0x596a38)]();}async[_0xaec1f4(0xc8)](_0x3b0a8f,_0x2b70cb){const _0x5461b4={_0x15dd4d:0xd9},_0x247028=_0xaec1f4;this[_0x247028(_0x5461b4._0x15dd4d)](_0x247028(0xc8),[_0x3b0a8f,_0x2b70cb]),this[_0x247028(0xea)]();}async['uncheck'](_0x316b28,_0x2e9e65){const _0x1311a1={_0x12f9c0:0xc9},_0x5e59ad=_0xaec1f4;this[_0x5e59ad(0xd9)](_0x5e59ad(_0x1311a1._0x12f9c0),[_0x316b28,_0x2e9e65]),this[_0x5e59ad(0xea)]();}async[_0xaec1f4(0xa4)](_0xf64fd5,_0x507368,_0x43a762){const _0x328960={_0x2ed593:0xd9,_0x191f17:0xea},_0x3c954c=_0xaec1f4;this[_0x3c954c(_0x328960._0x2ed593)](_0x3c954c(0xa4),[_0xf64fd5,_0x507368,_0x43a762]),this[_0x3c954c(_0x328960._0x191f17)]();}async[_0xaec1f4(0xf4)](_0x1c2387,_0x35173d){const _0x3861e9={_0x335ac8:0xf4},_0x342e3c=_0xaec1f4;this[_0x342e3c(0xd9)](_0x342e3c(_0x3861e9._0x335ac8),[_0x1c2387,_0x35173d]),this['maybeThrow']();}async[_0xaec1f4(0x10f)](_0x3c6134){const _0x496ee6={_0x4a89e1:0xd9,_0x582928:0xea},_0xe6507b=_0xaec1f4;this[_0xe6507b(_0x496ee6._0x4a89e1)]('scrollIntoView',[_0x3c6134]),this[_0xe6507b(_0x496ee6._0x582928)]();}async[_0xaec1f4(0x10e)](_0x1aa306,_0x3c7a06,_0xcfa1a){const _0x40e74c={_0x539f04:0xd9,_0x1e6a7a:0x10e},_0x3815ea=_0xaec1f4;this[_0x3815ea(_0x40e74c._0x539f04)](_0x3815ea(_0x40e74c._0x1e6a7a),[_0x1aa306,_0x3c7a06,_0xcfa1a]),this[_0x3815ea(0xea)]();}async[_0xaec1f4(0x103)](_0x320db9,_0x2c8a97){const _0x19cbb7={_0x5dbab9:0xea},_0x29671b=_0xaec1f4;this['record']('uploadFile',[_0x320db9,_0x2c8a97]),this[_0x29671b(_0x19cbb7._0x5dbab9)]();}async[_0xaec1f4(0x108)](_0xa8a6dd,_0x3a5fa9){const _0x4b1f26={_0x3b829c:0xd9,_0x104ff9:0x108},_0x5a164c=_0xaec1f4;this[_0x5a164c(_0x4b1f26._0x3b829c)](_0x5a164c(_0x4b1f26._0x104ff9),[_0xa8a6dd,_0x3a5fa9]),this['maybeThrow']();}async[_0xaec1f4(0xc7)](_0x59af3c){const _0x56c9da=_0xaec1f4;return this[_0x56c9da(0xd9)](_0x56c9da(0xc7),[_0x59af3c]),this['behavior'][_0x56c9da(0x101)]??0x1;}async[_0xaec1f4(0xd8)](_0x3fc461){const _0x38c135={_0x31aeac:0xd9},_0x71ec86=_0xaec1f4;return this[_0x71ec86(_0x38c135._0x31aeac)]('textContent',[_0x3fc461]),this['behavior'][_0x71ec86(0x10d)]??'';}async[_0xaec1f4(0xfc)](_0x40b5b6){const _0x2b8afa={_0xce41bb:0xfc,_0x5b568e:0xb5},_0xa602ec=_0xaec1f4;return this[_0xa602ec(0xd9)](_0xa602ec(_0x2b8afa._0xce41bb),[_0x40b5b6]),this['behavior'][_0xa602ec(_0x2b8afa._0x5b568e)]??this[_0xa602ec(0xbf)][_0xa602ec(0x10d)]??'';}async[_0xaec1f4(0x114)](_0x4a473f){const _0x195efe={_0x23ebbc:0xae},_0x28189a=_0xaec1f4;return this[_0x28189a(0xd9)](_0x28189a(0x114),[_0x4a473f]),this['behavior'][_0x28189a(_0x195efe._0x23ebbc)]??'';}async[_0xaec1f4(0xc6)](_0x55cc95){const _0x366059={_0x4f43d1:0xd9},_0x547669=_0xaec1f4;return this[_0x547669(_0x366059._0x4f43d1)]('checkedState',[_0x55cc95]),this[_0x547669(0xbf)][_0x547669(0xfb)]??null;}async[_0xaec1f4(0xa1)](_0x3fed1c){const _0x130bb5={_0x989a18:0xbf},_0xe6fb51=_0xaec1f4;return this[_0xe6fb51(0xd9)](_0xe6fb51(0xa1),[_0x3fed1c]),this[_0xe6fb51(_0x130bb5._0x989a18)]['isVisibleByDefault']??!![];}async[_0xaec1f4(0xe7)](_0x4dc45c){const _0x450ede={_0xb04814:0xbf},_0x4cfca4=_0xaec1f4;return this[_0x4cfca4(0xd9)](_0x4cfca4(0xe7),[_0x4dc45c]),this[_0x4cfca4(_0x450ede._0xb04814)][_0x4cfca4(0xa7)]??![];}async[_0xaec1f4(0xa8)](_0x4ac476,_0x21501c){const _0x47249e={_0x59fe1c:0xbf},_0x6b4797=_0xaec1f4;return this[_0x6b4797(0xd9)]('getAttribute',[_0x4ac476,_0x21501c]),this[_0x6b4797(_0x47249e._0x59fe1c)]['attributesByDefault']?.[_0x21501c]??null;}async[_0xaec1f4(0xa9)](_0x3d293e,_0xb4b607){const _0x3acd87={_0x92014b:0xa9},_0x303447=_0xaec1f4;this['record'](_0x303447(_0x3acd87._0x92014b),[_0x3d293e,_0xb4b607]);}async[_0xaec1f4(0xda)](_0x2845bd,_0x120e87){const _0x62f474={_0x24898b:0xd9,_0x18ceb8:0xda},_0x58f936=_0xaec1f4;this[_0x58f936(_0x62f474._0x24898b)](_0x58f936(_0x62f474._0x18ceb8),[_0x2845bd,_0x120e87]);}async[_0xaec1f4(0xee)](_0x3ed274,_0x446050){const _0x2b6a59={_0x4d11a9:0xee},_0x38b889=_0xaec1f4;this[_0x38b889(0xd9)](_0x38b889(_0x2b6a59._0x4d11a9),[_0x3ed274,_0x446050]);}async[_0xaec1f4(0xb6)](_0x5d8abb){const _0x5491cd=_0xaec1f4;this['record'](_0x5491cd(0xb6),[_0x5d8abb]);}async[_0xaec1f4(0xcb)](_0x17c6a4,_0x367146){const _0x2b1c69={_0x2e8597:0xd9,_0x4951c0:0xcb},_0x29f275=_0xaec1f4;this[_0x29f275(_0x2b1c69._0x2e8597)](_0x29f275(_0x2b1c69._0x4951c0),[_0x17c6a4,_0x367146]);}async[_0xaec1f4(0xca)](_0x181295,_0x1266aa){const _0x3e72fe={_0x404dbd:0xd9,_0x44b088:0xca,_0x1408d7:0xd3},_0x25edb9=_0xaec1f4;this[_0x25edb9(_0x3e72fe._0x404dbd)](_0x25edb9(_0x3e72fe._0x44b088),[_0x181295,_0x1266aa]),this[_0x25edb9(_0x3e72fe._0x1408d7)]=_0x181295;}async[_0xaec1f4(0xe8)](_0x4d6f8){this['record']('reload',[_0x4d6f8]);}async[_0xaec1f4(0xeb)](_0x43f349){const _0x205ed0=_0xaec1f4;this[_0x205ed0(0xd9)](_0x205ed0(0xeb),[_0x43f349]);}async[_0xaec1f4(0x11e)](_0x512bfb){const _0x49e6e2={_0x32235c:0xd9},_0xcd739d=_0xaec1f4;this[_0xcd739d(_0x49e6e2._0x32235c)](_0xcd739d(0x11e),[_0x512bfb]);}async['evaluate'](_0x1038ea){const _0x1cdc03={_0x32806c:0xbf},_0x3f76bb=_0xaec1f4;return this['record'](_0x3f76bb(0xcf),[_0x1038ea]),this[_0x3f76bb(_0x1cdc03._0x32806c)]['evaluateResult'];}async[_0xaec1f4(0xfd)](_0x3de627,_0x343a51){const _0x3a5b8d=_0xaec1f4;return this[_0x3a5b8d(0xd9)](_0x3a5b8d(0xfd),[_0x3de627,_0x343a51]),void 0x0;}async[_0xaec1f4(0xf0)](_0x28cc91){const _0x996240={_0x5c3ca5:0x118,_0x2d4d17:0x109,_0x21ba5d:0xd5},_0x13d336=_0xaec1f4;this[_0x13d336(0xd9)]('inspectElement',[_0x28cc91]);if(_0x28cc91[_0x13d336(_0x996240._0x5c3ca5)][_0x13d336(0xd1)]!==0x1||_0x28cc91['steps'][0x0][_0x13d336(_0x996240._0x2d4d17)]!==_0x13d336(_0x996240._0x21ba5d))return null;const _0x242cef=_0x28cc91[_0x13d336(0x118)][0x0]['ref'],_0x4516c5=this[_0x13d336(0xbf)][_0x13d336(0xe6)]?.[_0x242cef];return _0x4516c5??null;}async[_0xaec1f4(0xf6)](_0x31b497){const _0x470032={_0x1dc2c5:0xd9,_0x2a4c3b:0x11d},_0x576d77=_0xaec1f4;return this[_0x576d77(_0x470032._0x1dc2c5)]('screenshot',[_0x31b497]),this[_0x576d77(_0x470032._0x2a4c3b)](_0x31b497?.['type']);}async[_0xaec1f4(0x127)](_0x31303f,_0x36c8d4){const _0x2f9e75={_0x5e26ab:0x127,_0x5163cf:0x11d,_0x35c801:0xf9},_0x447347=_0xaec1f4;return this['record'](_0x447347(_0x2f9e75._0x5e26ab),[_0x31303f,_0x36c8d4]),this[_0x447347(_0x2f9e75._0x5163cf)](_0x36c8d4?.[_0x447347(_0x2f9e75._0x35c801)]);}async[_0xaec1f4(0xbc)](_0x2bbe6e,_0x2c7b6a){const _0x528cd0={_0x446d80:0xd9,_0x5dc335:0xbf},_0x2dc675=_0xaec1f4;return this[_0x2dc675(_0x528cd0._0x446d80)](_0x2dc675(0xbc),[_0x2bbe6e,_0x2c7b6a]),this[_0x2dc675(_0x528cd0._0x5dc335)][_0x2dc675(0xf1)]?this['behavior']['captureBoxes'](_0x2bbe6e,_0x2c7b6a):[];}[_0xaec1f4(0x11d)](_0x12c683){const _0x1284c8={_0x3058c4:0x11d,_0x2beee7:0xd7},_0x3c4b08=_0xaec1f4,_0x1167c9=this['behavior'][_0x3c4b08(_0x1284c8._0x3058c4)];if(_0x1167c9===void 0x0)return Buffer['from'](_0x3c4b08(_0x1284c8._0x2beee7));return typeof _0x1167c9===_0x3c4b08(0xb4)?_0x1167c9(_0x12c683):_0x1167c9;}async['outerHTML'](_0x5ac332){const _0x470b2f={_0xed0172:0x118,_0x3170da:0x109,_0x56a708:0xbf,_0x1b3d6c:0xde},_0x112a78=_0xaec1f4;this['record'](_0x112a78(0x123),[_0x5ac332]);if(_0x5ac332[_0x112a78(_0x470b2f._0xed0172)][_0x112a78(0xd1)]===0x1&&_0x5ac332['steps'][0x0][_0x112a78(_0x470b2f._0x3170da)]===_0x112a78(0xd5)){const _0x1beb65=_0x5ac332['steps'][0x0][_0x112a78(0xd5)];return this[_0x112a78(_0x470b2f._0x56a708)][_0x112a78(0xa0)]?.[_0x1beb65]??_0x112a78(_0x470b2f._0x1b3d6c)+_0x1beb65+_0x112a78(0xf5);}return _0x112a78(0x117);}},FakeContext=class{constructor(_0xab326f,_0x56d4ac,_0x496561,_0x5e3541=![]){const _0x45b3fa={_0xcd078f:0xa6,_0x5bc6e5:0xc3,_0x3f3c69:0xe0,_0x29e00b:0x11a,_0x5f160a:0xb8,_0x50d4e9:0xa5},_0x17f5b9={_0x4cc3b5:0x124},_0x4c4bf1=_0xaec1f4;this['recorder']=_0xab326f,this[_0x4c4bf1(0xbf)]=_0x56d4ac,this[_0x4c4bf1(_0x45b3fa._0xcd078f)]=_0x496561,this[_0x4c4bf1(_0x45b3fa._0x5bc6e5)]=_0x5e3541,this[_0x4c4bf1(_0x45b3fa._0x3f3c69)]=![];const _0x4de301=new FakePage(_0xab326f,_0x56d4ac,_0x496561+_0x4c4bf1(_0x45b3fa._0x29e00b),_0x56d4ac['initialUrl']??_0x4c4bf1(_0x45b3fa._0x5f160a));_0x56d4ac[_0x4c4bf1(0x124)]&&(_0x4de301['onAfterClick']=()=>{const _0xcc2bf9=_0x4c4bf1;this[_0xcc2bf9(0xbb)](_0x56d4ac[_0xcc2bf9(_0x17f5b9._0x4cc3b5)]);}),this[_0x4c4bf1(0xa3)]=[_0x4de301],this[_0x4c4bf1(0xac)]={..._0x56d4ac['localStorage']??{}},this[_0x4c4bf1(0xc1)]={..._0x56d4ac[_0x4c4bf1(_0x45b3fa._0x50d4e9)]??{}};}[_0xaec1f4(0xe5)];[_0xaec1f4(0xbf)];[_0xaec1f4(0xa6)];[_0xaec1f4(0xc3)];static{__name(this,_0xaec1f4(0xdf));}['clockFrozen'];[_0xaec1f4(0xa3)];['activeIdx']=0x0;[_0xaec1f4(0xc2)]=[];[_0xaec1f4(0xac)];[_0xaec1f4(0xc1)];[_0xaec1f4(0x100)]=new Set();[_0xaec1f4(0xd9)](_0x1605e2,_0x5d26b8){const _0x3ce8b5=_0xaec1f4;this[_0x3ce8b5(0xe5)][_0x3ce8b5(0xdb)]({'scope':this[_0x3ce8b5(0xa6)],'method':_0x1605e2,'args':_0x5d26b8});}[_0xaec1f4(0x11f)](){const _0x19efdd={_0x20f361:0xa3},_0x448ca5=_0xaec1f4;return this[_0x448ca5(_0x19efdd._0x20f361)];}[_0xaec1f4(0x120)](){const _0x196d81={_0x4ba8f6:0xa3},_0x6f7be4=_0xaec1f4,_0x2cc784=this[_0x6f7be4(_0x196d81._0x4ba8f6)][this[_0x6f7be4(0xcd)]];if(!_0x2cc784)throw new DriverError(_0x6f7be4(0xdc),{'activeIdx':this['activeIdx']});return _0x2cc784;}[_0xaec1f4(0x10b)](){const _0x3fa345={_0x10824e:0xbf},_0xbb6405=_0xaec1f4;return this[_0xbb6405(_0x3fa345._0x10824e)][_0xbb6405(0x10b)]??[];}[_0xaec1f4(0xec)](){const _0x16d6ff=_0xaec1f4;return this['behavior'][_0x16d6ff(0xec)]??[];}async[_0xaec1f4(0xe9)](_0xcbd6f6){const _0x17789e={_0x41f2cd:0xe9,_0x530f8a:0xa3,_0x489c1b:0xd1},_0x5bf01f=_0xaec1f4;this[_0x5bf01f(0xd9)](_0x5bf01f(_0x17789e._0x41f2cd),[_0xcbd6f6]);if(_0xcbd6f6<0x0||_0xcbd6f6>=this[_0x5bf01f(_0x17789e._0x530f8a)][_0x5bf01f(_0x17789e._0x489c1b)])throw new DriverError('page\x20index\x20out\x20of\x20range',{'index':_0xcbd6f6,'available':this[_0x5bf01f(0xa3)]['length']});this[_0x5bf01f(0xcd)]=_0xcbd6f6,this[_0x5bf01f(0xc2)][_0x5bf01f(0xd1)]=0x0;}['onNewPage'](_0x21709f){const _0x1ddaa3={_0x30aeab:0x100},_0x5b4b70=_0xaec1f4;return subscribe(this[_0x5b4b70(_0x1ddaa3._0x30aeab)],_0x21709f);}async[_0xaec1f4(0x9f)](_0x52f3f5){const _0x37b7a6={_0x28d17d:0xd9},_0x268ecd=_0xaec1f4;this[_0x268ecd(_0x37b7a6._0x28d17d)](_0x268ecd(0x9f),[_0x52f3f5]);}async[_0xaec1f4(0xab)](){const _0x326b08={_0x3eb2c3:0xa6},_0x5d05dd=_0xaec1f4;return this[_0x5d05dd(_0x326b08._0x3eb2c3)];}[_0xaec1f4(0x126)](){const _0x4680fe={_0x3bb3fa:0x106,_0x52e02c:0x115,_0xaf50d3:0x9e},_0x2282bd={_0x1bfc30:0xd9,_0x12a507:0xe0},_0x27937a={_0x25828f:0xe2},_0x4bf6fd=_0xaec1f4;if(!this['hasClock'])return NO_CLOCK;return{'freeze':__name(async _0x8cae18=>{const _0x62e485=_0x5d47;this[_0x62e485(0xd9)](_0x62e485(_0x27937a._0x25828f),[_0x8cae18]),this[_0x62e485(0xe0)]=!![];},_0x4bf6fd(0x113)),'tick':__name(async _0x15573b=>this[_0x4bf6fd(0xd9)](_0x4bf6fd(0xce),[_0x15573b]),_0x4bf6fd(_0x4680fe._0x3bb3fa)),'run':__name(async()=>{const _0x4fadd2=_0x4bf6fd;this[_0x4fadd2(_0x2282bd._0x1bfc30)]('clock.run',[]),this[_0x4fadd2(_0x2282bd._0x12a507)]=![];},_0x4bf6fd(_0x4680fe._0x52e02c)),'frozen':__name(()=>this[_0x4bf6fd(0xe0)],_0x4bf6fd(_0x4680fe._0xaf50d3))};}['emitFakePopup'](_0x5cb17c){const _0xab6c94={_0x1b1e0a:0xa6,_0x590af0:0xa3,_0xbafca4:0xe5},_0x57f028=_0xaec1f4,_0x18f13f=this[_0x57f028(_0xab6c94._0x1b1e0a)]+'.page'+this[_0x57f028(_0xab6c94._0x590af0)]['length'],_0x4119c0=new FakePage(this[_0x57f028(_0xab6c94._0xbafca4)],this['behavior'],_0x18f13f,_0x5cb17c);this['pageList']['push'](_0x4119c0);const _0x54c314=this[_0x57f028(0xa3)][_0x57f028(0xd1)]-0x1;for(const _0x5eab78 of this[_0x57f028(0x100)]){try{_0x5eab78({'index':_0x54c314,'url':_0x5cb17c});}catch{}}return _0x54c314;}[_0xaec1f4(0x110)](_0x153672){const _0x58d9a3={_0x3e9800:0xa3,_0x113cf4:0xd1,_0x1ccb2d:0xa3,_0x34e60b:0xa3,_0x11d507:0xf2},_0xa866b5=_0xaec1f4;if(_0x153672<0x0||_0x153672>=this[_0xa866b5(_0x58d9a3._0x3e9800)][_0xa866b5(_0x58d9a3._0x113cf4)])throw new DriverError('page\x20index\x20out\x20of\x20range',{'index':_0x153672,'available':this[_0xa866b5(_0x58d9a3._0x1ccb2d)]['length']});this[_0xa866b5(_0x58d9a3._0x34e60b)][_0xa866b5(_0x58d9a3._0x11d507)](_0x153672,0x1);}async[_0xaec1f4(0x10c)](_0x1bd8f3){const _0x10dc36={_0x11934b:0x118},_0x34a997=_0xaec1f4;this[_0x34a997(0xd9)](_0x34a997(0x10c),[_0x1bd8f3]);if(!_0x1bd8f3[_0x34a997(_0x10dc36._0x11934b)][_0x34a997(0xd1)])throw new LocatorError('enterFrame\x20called\x20with\x20empty\x20locator',{'locator':_0x1bd8f3});this[_0x34a997(0xc2)][_0x34a997(0xdb)](_0x1bd8f3);}async[_0xaec1f4(0xc0)](){const _0x401186={_0x5d6dc3:0x119},_0x25f8ae=_0xaec1f4;this['record'](_0x25f8ae(0xc0),[]);if(this[_0x25f8ae(0xc2)]['length']===0x0)throw new DriverError(_0x25f8ae(0xd4),{});this[_0x25f8ae(0xc2)][_0x25f8ae(_0x401186._0x5d6dc3)]();}async[_0xaec1f4(0xc5)](_0x3b56ee,_0x448c06){const _0xf24f2={_0x2bcf08:0xc5,_0x21058c:0xac},_0x188424=_0xaec1f4;this[_0x188424(0xd9)](_0x188424(_0xf24f2._0x2bcf08),[_0x3b56ee,_0x448c06]),this[_0x188424(_0xf24f2._0x21058c)][_0x3b56ee]=_0x448c06;}async['getLocalStorage'](_0x5931e8){const _0x1e51f3=_0xaec1f4;return this[_0x1e51f3(0xd9)]('getLocalStorage',[_0x5931e8]),this['localStorageState'][_0x5931e8]??null;}async[_0xaec1f4(0xe4)](_0x14643f,_0x1e1bd9,_0x1bfb1c){const _0x10ad48=_0xaec1f4;this[_0x10ad48(0xd9)](_0x10ad48(0xe4),[_0x14643f,_0x1e1bd9,_0x1bfb1c]),this[_0x10ad48(0xc1)][_0x14643f]=_0x1e1bd9;}async[_0xaec1f4(0xb9)](_0x2b87cb){const _0xebe33f={_0x2eb727:0xd9,_0x14a028:0xb9},_0x36c81a=_0xaec1f4;return this[_0x36c81a(_0xebe33f._0x2eb727)](_0x36c81a(_0xebe33f._0x14a028),[_0x2b87cb]),this[_0x36c81a(0xc1)][_0x2b87cb]??null;}async[_0xaec1f4(0xff)](_0x1ccc65){const _0x440494={_0x4aff44:0xff},_0x517d8e=_0xaec1f4;this['record'](_0x517d8e(_0x440494._0x4aff44),[_0x1ccc65]);}async[_0xaec1f4(0xcf)](_0x45d862){const _0xeb59de={_0x33724b:0xd9},_0x545ae0=_0xaec1f4;return this[_0x545ae0(_0xeb59de._0x33724b)]('evaluate',[_0x45d862]),void 0x0;}async[_0xaec1f4(0xba)](){const _0x3fbded={_0x3fc0c7:0xba},_0x221028=_0xaec1f4;this[_0x221028(0xd9)](_0x221028(_0x3fbded._0x3fc0c7),[]);}[_0xaec1f4(0xe1)](){return this['frameStack']['length'];}},FakeWebDriver=class{constructor(_0xdc3a90={}){const _0x41110c={_0x13d92d:0xbf,_0x2fa439:0xe5},_0x24d3a1=_0xaec1f4;this[_0x24d3a1(_0x41110c._0x13d92d)]=_0xdc3a90,this[_0x24d3a1(_0x41110c._0x2fa439)]=createRecorder();}[_0xaec1f4(0xbf)];static{__name(this,_0xaec1f4(0xa2));}[_0xaec1f4(0x104)]=![];[_0xaec1f4(0xe5)];['contexts']=[];async[_0xaec1f4(0xb0)](_0x10f766){const _0x422868={_0x1c2e6b:0xe5},_0x1388c6=_0xaec1f4;this[_0x1388c6(_0x422868._0x1c2e6b)][_0x1388c6(0xdb)]({'scope':'driver','method':'launch','args':[_0x10f766]}),this[_0x1388c6(0x104)]=!![];}async[_0xaec1f4(0xef)](_0x215ee1){const _0x5a6b29=_0xaec1f4;this[_0x5a6b29(0xe5)][_0x5a6b29(0xdb)]({'scope':_0x5a6b29(0xbd),'method':'newContext','args':[_0x215ee1]});if(!this['launched'])throw new DriverError('newContext\x20called\x20before\x20launch()',{});const _0x1180b0=new FakeContext(this['recorder'],this[_0x5a6b29(0xbf)],_0x5a6b29(0xb1)+this['contexts']['length'],_0x215ee1?.[_0x5a6b29(0x126)]===!![]);return this['contexts']['push'](_0x1180b0),_0x1180b0;}async[_0xaec1f4(0xba)](){const _0x31da30={_0x2db3d0:0x104},_0x1d645d=_0xaec1f4;this[_0x1d645d(0xe5)][_0x1d645d(0xdb)]({'scope':_0x1d645d(0xbd),'method':'close','args':[]}),this[_0x1d645d(_0x31da30._0x2db3d0)]=![];}['wsEndpoint'](){return void 0x0;}async[_0xaec1f4(0x111)](){const _0x29c7f2={_0x395348:0xad},_0x4f698c=_0xaec1f4;throw new DriverError(_0x4f698c(_0x29c7f2._0x395348),{});}async[_0xaec1f4(0x116)](_0x266441){throw new DriverError('attachExisting\x20not\x20supported\x20by\x20FakeWebDriver',{});}[_0xaec1f4(0xdd)](){const _0x442ad2=_0xaec1f4;return this[_0x442ad2(0xe5)]['calls']();}[_0xaec1f4(0xcc)](_0x42441c){const _0x36bf69={_0x96fe94:0xdd},_0xd8b6f4=_0xaec1f4;return this[_0xd8b6f4(0xe5)][_0xd8b6f4(_0x36bf69._0x96fe94)]()[_0xd8b6f4(0x112)](_0x152a55=>_0x152a55[_0xd8b6f4(0x125)]===_0x42441c);}};export{FakeWebDriver};
|
package/dist/dsl/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
3
|
-
import { Matcher, RegexLiteral, JudgeRequest, JudgeVerdict, SoftFailureRecord } from '@unotest/protocol';
|
|
1
|
+
import { L as LocatorValue, D as DriverContext, W as WebDriver, h as DriverPage } from '../interfaces-DEmGI704.js';
|
|
2
|
+
export { n as LocatorStep, o as appendStep, p as describeLocator, q as isLocatorValue, r as rootedAt } from '../interfaces-DEmGI704.js';
|
|
3
|
+
import { Matcher, RegexLiteral, JudgeRequest, JudgeVerdict, VisualFailureRecord, SoftFailureRecord, TeardownStateRecord, TeardownFailureRecord } 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';
|
|
@@ -168,6 +168,131 @@ interface AnnotationSink {
|
|
|
168
168
|
log(text: string): Promise<void>;
|
|
169
169
|
}
|
|
170
170
|
|
|
171
|
+
declare class BaselineNames {
|
|
172
|
+
private readonly warn;
|
|
173
|
+
/** scenario → file-safe name → the name the scenario wrote, and the
|
|
174
|
+
* attempts it was asserted in. */
|
|
175
|
+
private readonly given;
|
|
176
|
+
/** `warn` hears of a baseline written twice in one attempt. */
|
|
177
|
+
constructor(warn?: (line: string) => void);
|
|
178
|
+
/** Refuses `raw` when another name of the same scenario already became
|
|
179
|
+
* `file`. The same name twice in one attempt of update mode writes the
|
|
180
|
+
* same file twice — said, since only the last picture stays. */
|
|
181
|
+
claim(scenarioFile: string, file: string, raw: string, attempt: number, updating: boolean): void;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
interface BaselineStore {
|
|
185
|
+
/** Update mode: a snapshot is written as the new baseline and passes. */
|
|
186
|
+
readonly updating: boolean;
|
|
187
|
+
/** Project-relative posix path of the baseline `name` of a scenario. */
|
|
188
|
+
pathFor(scenarioFile: string, name: string): string;
|
|
189
|
+
/** The baseline's bytes, or null when there is none yet. */
|
|
190
|
+
read(scenarioFile: string, name: string): Promise<Uint8Array | null>;
|
|
191
|
+
/** Write `png` as the baseline; returns its project path. */
|
|
192
|
+
write(scenarioFile: string, name: string, png: Uint8Array): Promise<string>;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
interface Rect {
|
|
196
|
+
x: number;
|
|
197
|
+
y: number;
|
|
198
|
+
width: number;
|
|
199
|
+
height: number;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
interface ImageSize {
|
|
203
|
+
width: number;
|
|
204
|
+
height: number;
|
|
205
|
+
}
|
|
206
|
+
interface VisualCheckInput {
|
|
207
|
+
expectedPng: Uint8Array;
|
|
208
|
+
/** Names the baseline in a refusal (its project path). */
|
|
209
|
+
expectedSource: string;
|
|
210
|
+
actualPng: Uint8Array;
|
|
211
|
+
threshold: number;
|
|
212
|
+
excluded: readonly Rect[];
|
|
213
|
+
}
|
|
214
|
+
type VisualCheck = {
|
|
215
|
+
kind: "size-mismatch";
|
|
216
|
+
expected: ImageSize;
|
|
217
|
+
actual: ImageSize;
|
|
218
|
+
} | {
|
|
219
|
+
kind: "compared";
|
|
220
|
+
size: ImageSize;
|
|
221
|
+
differing: number;
|
|
222
|
+
compared: number;
|
|
223
|
+
ratio: number;
|
|
224
|
+
/** The diff picture, PNG. */
|
|
225
|
+
diffPng: Uint8Array;
|
|
226
|
+
};
|
|
227
|
+
interface ImageComparator {
|
|
228
|
+
compare(input: VisualCheckInput): VisualCheck;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
type VisualOutcome = "passed" | "failed" | "updated" | "missing-baseline" | "size-mismatch"
|
|
232
|
+
/** The baseline is there but not a PNG this runner will read. */
|
|
233
|
+
| "unreadable-baseline";
|
|
234
|
+
interface VisualImages {
|
|
235
|
+
expected?: Uint8Array;
|
|
236
|
+
actual?: Uint8Array;
|
|
237
|
+
diff?: Uint8Array;
|
|
238
|
+
/** The snapshot as a baseline would be — named as the assert expects it. */
|
|
239
|
+
candidate?: Uint8Array;
|
|
240
|
+
}
|
|
241
|
+
/** Artifact-root-relative paths of the pictures written for one assert. */
|
|
242
|
+
interface VisualPaths {
|
|
243
|
+
expected?: string;
|
|
244
|
+
actual?: string;
|
|
245
|
+
diff?: string;
|
|
246
|
+
candidate?: string;
|
|
247
|
+
}
|
|
248
|
+
interface VisualAssertReport {
|
|
249
|
+
name: string;
|
|
250
|
+
outcome: VisualOutcome;
|
|
251
|
+
/** Project-relative path of the baseline this assert reads. */
|
|
252
|
+
baseline: string;
|
|
253
|
+
maxDiffRatio: number;
|
|
254
|
+
threshold: number;
|
|
255
|
+
ratio?: number;
|
|
256
|
+
differing?: number;
|
|
257
|
+
compared?: number;
|
|
258
|
+
/** Size of the snapshot. */
|
|
259
|
+
width?: number;
|
|
260
|
+
height?: number;
|
|
261
|
+
/** Size of the baseline, when it differs from the snapshot's. */
|
|
262
|
+
expectedWidth?: number;
|
|
263
|
+
expectedHeight?: number;
|
|
264
|
+
paths: VisualPaths;
|
|
265
|
+
/** Retry attempt the assert ran in, 1-based. */
|
|
266
|
+
attempt: number;
|
|
267
|
+
/** Browser context the snapshot was taken in, when the test holds more
|
|
268
|
+
* than one (#197). */
|
|
269
|
+
contextIndex?: number;
|
|
270
|
+
}
|
|
271
|
+
interface VisualSink {
|
|
272
|
+
/** Write the pictures of one assert under its attempt — a later attempt
|
|
273
|
+
* never overwrites an earlier one. Best-effort: a picture that cannot be
|
|
274
|
+
* written is left out of the returned paths, never thrown. */
|
|
275
|
+
save(name: string, attempt: number, images: VisualImages): Promise<VisualPaths>;
|
|
276
|
+
/** Journal the verdict — pass AND fail. Must not throw on sink faults. */
|
|
277
|
+
record(report: VisualAssertReport): Promise<void>;
|
|
278
|
+
/** The last assert that did not pass, for the failure bundle and
|
|
279
|
+
* runtime.json; null while every one passed. */
|
|
280
|
+
failure(): VisualFailureRecord | null;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/** What the assert needs besides the page — wired per run entry. */
|
|
284
|
+
interface VisualAssertDeps {
|
|
285
|
+
comparator: ImageComparator;
|
|
286
|
+
baselines: BaselineStore;
|
|
287
|
+
sink?: VisualSink;
|
|
288
|
+
/** Project-relative posix path of the scenario; the baseline lives next to it. */
|
|
289
|
+
scenarioFile: string;
|
|
290
|
+
/** Retry attempt, 1-based. */
|
|
291
|
+
attempt: number;
|
|
292
|
+
/** The names this run has given, to refuse two that became one file. */
|
|
293
|
+
names: BaselineNames;
|
|
294
|
+
}
|
|
295
|
+
|
|
171
296
|
type FrameFormat = "png" | "webp";
|
|
172
297
|
|
|
173
298
|
interface ScreenshotSink {
|
|
@@ -178,16 +303,61 @@ interface ScreenshotSink {
|
|
|
178
303
|
save(name: string, bytes: Buffer, format: FrameFormat): Promise<string>;
|
|
179
304
|
}
|
|
180
305
|
|
|
306
|
+
type ContextFactory = () => Promise<DriverContext>;
|
|
307
|
+
/** A context that did not close — reported, never swallowed. */
|
|
308
|
+
interface ContextCloseFailure {
|
|
309
|
+
index: number;
|
|
310
|
+
error: unknown;
|
|
311
|
+
}
|
|
312
|
+
declare class ContextSet {
|
|
313
|
+
private readonly opts;
|
|
314
|
+
private readonly list;
|
|
315
|
+
private activeIdx;
|
|
316
|
+
/** Called with the new active index on every switch (open or select). */
|
|
317
|
+
private readonly listeners;
|
|
318
|
+
constructor(first: DriverContext, opts?: {
|
|
319
|
+
open?: ContextFactory;
|
|
320
|
+
max?: number;
|
|
321
|
+
});
|
|
322
|
+
active(): DriverContext;
|
|
323
|
+
activeIndex(): number;
|
|
324
|
+
size(): number;
|
|
325
|
+
all(): readonly DriverContext[];
|
|
326
|
+
/** Open one more context, make it active, return its index. */
|
|
327
|
+
open(): Promise<number>;
|
|
328
|
+
select(index: unknown): void;
|
|
329
|
+
onSwitch(listener: (index: number) => void): () => void;
|
|
330
|
+
/** Close every context, newest first; the failures come back. */
|
|
331
|
+
closeAll(): Promise<ContextCloseFailure[]>;
|
|
332
|
+
private switchTo;
|
|
333
|
+
}
|
|
334
|
+
|
|
181
335
|
type DslPrimitive = string | number | boolean | null;
|
|
182
336
|
type DslObject = {
|
|
183
337
|
readonly [key: string]: DslValue;
|
|
184
338
|
};
|
|
185
339
|
type DslArray = readonly DslValue[];
|
|
186
340
|
type DslValue = DslPrimitive | DslObject | DslArray;
|
|
187
|
-
|
|
341
|
+
/** The browser contexts a runtime acts in: its own set, started from the
|
|
342
|
+
* context the runner opened — or one it SHARES with its host (a flow
|
|
343
|
+
* replayed in an MCP session switches the session's contexts). */
|
|
344
|
+
type RuntimeContexts = {
|
|
345
|
+
/** Context 0 — the one the runner opened for this entry. */
|
|
346
|
+
readonly context: DriverContext;
|
|
347
|
+
/** Opens one more context with the entry's options (`newContext()`).
|
|
348
|
+
* Absent → the runtime cannot add one (an attached debug session). */
|
|
349
|
+
readonly openContext?: ContextFactory;
|
|
350
|
+
/** Ceiling on contexts per entry (`config.maxContexts`). */
|
|
351
|
+
readonly maxContexts?: number;
|
|
352
|
+
readonly contexts?: undefined;
|
|
353
|
+
} | {
|
|
354
|
+
readonly contexts: ContextSet;
|
|
355
|
+
readonly context?: undefined;
|
|
356
|
+
};
|
|
357
|
+
type TestRuntimeDeps = RuntimeContexts & TestRuntimeServices;
|
|
358
|
+
interface TestRuntimeServices {
|
|
188
359
|
readonly runId: string;
|
|
189
360
|
readonly driver: WebDriver;
|
|
190
|
-
readonly context: DriverContext;
|
|
191
361
|
readonly logger: Logger;
|
|
192
362
|
/** Sandbox connection / base-URL config (D-27). DSL primitives `shell`,
|
|
193
363
|
* `dbQuery`/`dbExec`, `apiCall` read these — scenarios can NOT pass a
|
|
@@ -218,11 +388,16 @@ interface TestRuntimeDeps {
|
|
|
218
388
|
* it to the run's steps.jsonl; absent in ad-hoc / explore runtimes
|
|
219
389
|
* (`log` still reaches the logger, `note` is logged in its place). */
|
|
220
390
|
readonly annotations?: AnnotationSink;
|
|
391
|
+
/** Baselines, comparator and sink behind `assertScreenshot` — wired per
|
|
392
|
+
* run entry by the runner; absent in ad-hoc / explore runtimes, where
|
|
393
|
+
* the DSL function fails with a setup message. */
|
|
394
|
+
readonly visual?: VisualAssertDeps;
|
|
221
395
|
}
|
|
222
396
|
declare class TestRuntime {
|
|
223
397
|
readonly runId: string;
|
|
224
398
|
readonly driver: WebDriver;
|
|
225
|
-
|
|
399
|
+
/** Every browser context of this entry and which one is active. */
|
|
400
|
+
readonly contexts: ContextSet;
|
|
226
401
|
readonly logger: Logger;
|
|
227
402
|
readonly sandbox: SandboxConfig;
|
|
228
403
|
readonly baseUrl?: string;
|
|
@@ -230,11 +405,19 @@ declare class TestRuntime {
|
|
|
230
405
|
readonly judge?: Judge;
|
|
231
406
|
readonly judgeVerdicts?: JudgeVerdictSink;
|
|
232
407
|
readonly annotations?: AnnotationSink;
|
|
408
|
+
readonly visual?: VisualAssertDeps;
|
|
233
409
|
private readonly variables;
|
|
234
410
|
private readonly nowFn;
|
|
235
411
|
private readonly scope;
|
|
236
412
|
private _callDepth;
|
|
237
413
|
constructor(deps: TestRuntimeDeps);
|
|
414
|
+
/** The ACTIVE context — what every DSL function acts on. `setContext`
|
|
415
|
+
* and `newContext` move it; one-context scenarios never notice. */
|
|
416
|
+
get context(): DriverContext;
|
|
417
|
+
/** The active context's index once the test holds more than one — the
|
|
418
|
+
* journal, the failure bundle and `assertScreenshot` carry it only then
|
|
419
|
+
* (#197), so a one-context run writes exactly what it did before. */
|
|
420
|
+
reportedContextIndex(): number | undefined;
|
|
238
421
|
/** Current epoch ms — injectable for deterministic tests. */
|
|
239
422
|
now(): number;
|
|
240
423
|
/** The active DriverPage. Tracks DriverContext.activePage which is mutated
|
|
@@ -307,8 +490,14 @@ interface ActiveRuntime {
|
|
|
307
490
|
*/
|
|
308
491
|
lastFailure: {
|
|
309
492
|
node: unknown;
|
|
493
|
+
/** Project-relative file the failing statement lives in — a helper's,
|
|
494
|
+
* when the failure happened inside one. */
|
|
495
|
+
file: string;
|
|
310
496
|
line: number;
|
|
311
497
|
col: number;
|
|
498
|
+
/** User functions the failing statement was reached through,
|
|
499
|
+
* outermost first. */
|
|
500
|
+
callStack?: readonly string[];
|
|
312
501
|
/** Label of the enclosing `step("…")` block, when the failing
|
|
313
502
|
* statement ran inside one — the human-readable intent for reports. */
|
|
314
503
|
stepLabel?: string;
|
|
@@ -346,6 +535,20 @@ interface ActiveRuntime {
|
|
|
346
535
|
ttlTimer: NodeJS.Timeout | null;
|
|
347
536
|
/** The runtime's own last-rites hook — see `register`. */
|
|
348
537
|
onAbort?: () => Promise<void>;
|
|
538
|
+
/** The run's rollback pass, read for the snapshot — see `register`. */
|
|
539
|
+
teardown?: TeardownProgress;
|
|
540
|
+
}
|
|
541
|
+
/** What the manager reads off a run's rollback pass: the pass itself is
|
|
542
|
+
* driven by the runner (it plays it from the run's end and from
|
|
543
|
+
* `onAbort`), the manager only reports it. */
|
|
544
|
+
interface TeardownProgress {
|
|
545
|
+
status(): TeardownStateRecord | undefined;
|
|
546
|
+
failureRecords(): TeardownFailureRecord[];
|
|
547
|
+
/** Drop what has not been played; the labels dropped, newest first. */
|
|
548
|
+
skip(): string[];
|
|
549
|
+
/** Blocks are registered and the pass has not begun: the run is not over
|
|
550
|
+
* until the stand is given back. */
|
|
551
|
+
owed(): boolean;
|
|
349
552
|
}
|
|
350
553
|
interface RuntimeSummary {
|
|
351
554
|
id: string;
|
|
@@ -366,6 +569,10 @@ interface RuntimeSnapshot {
|
|
|
366
569
|
lastFailure: ActiveRuntime['lastFailure'];
|
|
367
570
|
softFailures: readonly SoftFailureRecord[];
|
|
368
571
|
lastResult: RunResult | null;
|
|
572
|
+
/** The rollback pass, once it has begun. */
|
|
573
|
+
teardown?: TeardownStateRecord;
|
|
574
|
+
/** Rollback blocks that failed or never ran. */
|
|
575
|
+
teardownFailures?: readonly TeardownFailureRecord[];
|
|
369
576
|
}
|
|
370
577
|
interface TestRuntimeManagerDeps {
|
|
371
578
|
logger: Logger;
|
|
@@ -385,6 +592,13 @@ declare class TestRuntimeManager {
|
|
|
385
592
|
* `aborted`. Bounded — only the last few matter (a writer flushes once). */
|
|
386
593
|
private readonly terminalTombstones;
|
|
387
594
|
private static readonly MAX_TOMBSTONES;
|
|
595
|
+
/** Aborts in flight. A second `abort` while the first one is still
|
|
596
|
+
* rolling the stand back gets the same promise — it must not run the
|
|
597
|
+
* generator's return, the last rites and the hooks a second time over a
|
|
598
|
+
* runtime that is half torn down. Giving up on the rollback is the
|
|
599
|
+
* caller's decision (a second Stop), not a side effect of calling
|
|
600
|
+
* abort twice. */
|
|
601
|
+
private readonly aborting;
|
|
388
602
|
private nextId;
|
|
389
603
|
constructor(deps: TestRuntimeManagerDeps);
|
|
390
604
|
register(opts: {
|
|
@@ -400,6 +614,9 @@ declare class TestRuntimeManager {
|
|
|
400
614
|
* anything the run still owes the disk has to be settled here (#194
|
|
401
615
|
* tail). */
|
|
402
616
|
onAbort?: () => Promise<void>;
|
|
617
|
+
/** The run's rollback pass, reported in `inspect()` (and so in
|
|
618
|
+
* runtime.json) while it plays. */
|
|
619
|
+
teardown?: TeardownProgress;
|
|
403
620
|
}): string;
|
|
404
621
|
pump(id: string): Promise<ExecutionEvent | RunResult>;
|
|
405
622
|
/** The run's verdict — the executor's own, corrected for the one thing
|
|
@@ -412,9 +629,15 @@ declare class TestRuntimeManager {
|
|
|
412
629
|
* going past it — web never sets it, and if it ever does, the retry's
|
|
413
630
|
* own `step-end` decides and this correction has to be revisited.) */
|
|
414
631
|
private verdict;
|
|
632
|
+
/** The run's final verdict, rollback included — see `pump`. */
|
|
633
|
+
finish(id: string, result: RunResult): void;
|
|
415
634
|
step(id: string): Promise<ExecutionEvent | RunResult>;
|
|
416
635
|
resume(id: string): Promise<ExecutionEvent | RunResult>;
|
|
417
636
|
abort(id: string): Promise<void>;
|
|
637
|
+
private abortOnce;
|
|
638
|
+
/** The second Stop: give up on the rest of the run's rollback pass. The
|
|
639
|
+
* labels never played, newest first; empty when nothing was left. */
|
|
640
|
+
skipTeardown(id: string): string[];
|
|
418
641
|
/** Snapshot a just-aborted (still-live) runtime into the tombstone map so a
|
|
419
642
|
* later inspect() reflects `aborted`. Bounded LRU; best-effort. */
|
|
420
643
|
private rememberTombstone;
|