@unotest/web 0.43.2 → 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.
@@ -1 +1 @@
1
- function _0x389f(_0x23c25d,_0x291f4c){_0x23c25d=_0x23c25d-0x9d;const _0x3f6528=_0x3f65();let _0x389f36=_0x3f6528[_0x23c25d];if(_0x389f['HBIuoT']===undefined){var _0x2a29af=function(_0x4a00c6){const _0x2ad076='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x39ccd7='',_0x4dbc93='';for(let _0x53c645=0x0,_0x156d5a,_0x35f335,_0x52b9ed=0x0;_0x35f335=_0x4a00c6['charAt'](_0x52b9ed++);~_0x35f335&&(_0x156d5a=_0x53c645%0x4?_0x156d5a*0x40+_0x35f335:_0x35f335,_0x53c645++%0x4)?_0x39ccd7+=String['fromCharCode'](0xff&_0x156d5a>>(-0x2*_0x53c645&0x6)):0x0){_0x35f335=_0x2ad076['indexOf'](_0x35f335);}for(let _0x21f22a=0x0,_0x15e21b=_0x39ccd7['length'];_0x21f22a<_0x15e21b;_0x21f22a++){_0x4dbc93+='%'+('00'+_0x39ccd7['charCodeAt'](_0x21f22a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4dbc93);};_0x389f['ptkoXO']=_0x2a29af,_0x389f['hzYVSA']={},_0x389f['HBIuoT']=!![];}const _0x260655=_0x3f6528[0x0],_0x1c4061=_0x23c25d+_0x260655,_0x2b5f6a=_0x389f['hzYVSA'][_0x1c4061];return!_0x2b5f6a?(_0x389f36=_0x389f['ptkoXO'](_0x389f36),_0x389f['hzYVSA'][_0x1c4061]=_0x389f36):_0x389f36=_0x2b5f6a,_0x389f36;}const _0x562ca9=_0x389f;(function(_0x21d0aa,_0x354f9b){const _0x42e522={_0xf0dd9b:0xc1,_0x2dedc8:0xde,_0xc0d620:0xcc,_0x3452a0:0x11e,_0x585f7c:0xc7,_0x48104f:0xa7},_0x1dc3e6=_0x389f,_0x1740e8=_0x21d0aa();while(!![]){try{const _0x7794af=parseInt(_0x1dc3e6(0xb3))/0x1*(parseInt(_0x1dc3e6(0xb1))/0x2)+-parseInt(_0x1dc3e6(0xdc))/0x3*(parseInt(_0x1dc3e6(0xa6))/0x4)+-parseInt(_0x1dc3e6(_0x42e522._0xf0dd9b))/0x5*(-parseInt(_0x1dc3e6(_0x42e522._0x2dedc8))/0x6)+-parseInt(_0x1dc3e6(_0x42e522._0xc0d620))/0x7*(parseInt(_0x1dc3e6(_0x42e522._0x3452a0))/0x8)+parseInt(_0x1dc3e6(_0x42e522._0x585f7c))/0x9+-parseInt(_0x1dc3e6(0xc0))/0xa*(parseInt(_0x1dc3e6(0xdd))/0xb)+-parseInt(_0x1dc3e6(0x111))/0xc*(parseInt(_0x1dc3e6(_0x42e522._0x48104f))/0xd);if(_0x7794af===_0x354f9b)break;else _0x1740e8['push'](_0x1740e8['shift']());}catch(_0x4d5419){_0x1740e8['push'](_0x1740e8['shift']());}}}(_0x3f65,0xd1a39));var __defProp=Object[_0x562ca9(0xdf)],__name=(_0x39ccd7,_0x4dbc93)=>__defProp(_0x39ccd7,_0x562ca9(0xca),{'value':_0x4dbc93,'configurable':!![]});function subscribe(_0x53c645,_0x156d5a){const _0x173388={_0xa8031f:0xe5},_0x1a4d56=_0x562ca9;return _0x53c645[_0x1a4d56(0x11a)](_0x156d5a),()=>{const _0x43dc68=_0x1a4d56;_0x53c645[_0x43dc68(_0x173388._0xa8031f)](_0x156d5a);};}function _0x3f65(){const _0x126918=['y29VA2LLu3rHDgu','mJrdEwv2rKS','C2nYzwvUC2HVDa','tg9JyxrVCKvYCM9Y','Cg9W','y29UC29SzuvUDhjPzxm','rMfRzvDLyKrYAxzLCG','y29VA2LLCW','C3rLChm','CMvSB2fK','D3nfBMrWB2LUDa','zw50zxjgCMfTzsbJywXSzwqGD2L0AcbLBxb0EsbSB2nHDg9Y','A2LUza','ywn0AxzLswr4','pgrPDIbKyxrHlxvUB3rLC3qTCMvMpsi','zMLSBa','z2v0q29VA2LL','D2fPDezVCK5HDMLNyxrPB24','mtGZndyZmLjIsKXvqW','mty5rNPqt3bU','zw50zxjgCMfTzq','BgvUz3rO','y2HLy2TLzfn0yxrL','AxneAxnHyMXLza','C2v0tg9JywXtDg9YywDL','DgL0Bgu','y2XPCgjVyxjKugfZDgu','ywn0AxzLugfNzq','y3vYCMvUDfvYBa','ndq2ugDPv3vp','C2v0q29VA2LL','nJaYoxLlrurQtG','z29gB3j3yxjK','CgfNzuXPC3q','D2fPDezVCKXVywrtDgf0zq','Bwf5yMvuAhjVDW','ChvZAa','y29UBMvJDfnOyxjLza','y2HLy2TLzfn0yxrLqNLezwzHDwX0','zw1PDezHA2vqB3b1Ca','AxnwAxnPyMXLqNLezwzHDwX0','zhjPDMvY','zxHPDezYyw1LignHBgXLzcb3AxrOig5VigzYyw1Lig9UihrOzsbZDgfJAW','zMLSDgvY','mtaWmhfZv0v3wa','mtK3nJe1svDrEKvO','DxjS','y291BNrcEurLzMf1Bhq','B25bzNrLCKnSAwnR','CgfNzsbPBMrLEcbVDxqGB2yGCMfUz2u','ywjVDxq6yMXHBMS','nJGWmti0nKLxAhPwEq','ChjLC3m','lNbHz2u','BMfTzq','y2fSBhngB3i','mJe5odu2y09LwvjO','y29UDgv4Dhm','CgfNzxm','BMv3q29UDgv4Da','rhjPDMvYrxjYB3i','B3v0zxjive1m','C2nVCgu','Aw5WDxrwywX1zq','zxHPDezYyw1L','C2nYzwvUC2HVDevSzw1LBNq','D2fPDezVCLvYBa','Bg9JywXtDg9YywDLu3rHDgu','zxzHBhvHDgvpBKXVy2f0B3i','BM8Gywn0AxzLihbHz2uGAw4Gy29UDgv4Da','C2f2zvn0B3jHz2vtDgf0zq','zwXLBwvUDeHPBNrcEvjLzG','m0DPAe5jvq','mJK3ntvhCeLyEgS','ndjtr3njtKi','zgvMAw5LuhjVCgvYDhK','DhLWzq','y2fSBhm','zg91yMXLq2XPy2S','yMvOyxzPB3i','y291BNq','zgvSzxrL','z2v0tg9JywXtDg9YywDL','Dgv4DenVBNrLBNrcEurLzMf1Bhq','AxnwAxnPyMXL','BMv0D29YA0vUDhjPzxm','yxr0CMLIDxrLC0j5rgvMyxvSDa','rMfRzunVBNrLEhq','z290BW','y2XVC2u','y2XVC2vgywTLugfNzq','AxneAxnHyMXLzej5rgvMyxvSDa','rMfRzvbHz2u','Aw5UzxjuzxH0','lNbHz2uW','B3v0zxjiDg1SqNLszwy','Bgf1BMnOzwq','y2XPy2S','zxjYB3jpBK5LEhrby3rPB24','y29UBMvJDfnOyxjLzcbUB3qGC3vWCg9YDgvKigj5iezHA2vxzwjeCML2zxi','Cg9WDxbpBKnSAwnR','BMv3q29UDgv4DcbJywXSzwqGyMvMB3jLigXHDw5JAcGP','Bgf1BMnO','Aw5ZCgvJDevSzw1LBNq','zhjHz0fUzerYB3a','CMvJB3jK','D2fPDezVCG','zNjHBwvtDgfJAW','y2HLy2S','zNvUy3rPB24','CMvM','B25ozxDqywDL','zMfRzsb0AxrSzq','BMv3ugfNzuXPC3rLBMvYCW','C3vIC2nYAwjL','y3jLyxrLuMvJB3jKzxi','CMvJB3jKzxi','z29cywnR','y3r4','C2vSzwn0t3b0Aw9U','Aw5UzxjuzxH0qNLezwzHDwX0','iJ48l2rPDJ4','DxbSB2fKrMLSzq','z2v0qxr0CMLIDxrL','zxzHBhvHDgu','nJqXmZe2shrmDgLP','Ag92zxi','zxzHBhvHDgvszxn1Bhq','C2nYB2XSsw50B1zPzxC','Aw5PDgLHBfvYBa','Bwv0Ag9K','Dgv4DenVBNrLBNq','D2fPDezVCLrLEhq','C3bSAwnL','ywrK','C2v0qwn0AxzLugfNzq','C2nYzwvUC2HVDej5DgvZ'];_0x3f65=function(){return _0x126918;};return _0x3f65();}__name(subscribe,_0x562ca9(0x106));import{UnotestError}from'@unotest/core';var DriverError=class extends UnotestError{static{__name(this,_0x562ca9(0xd0));}},LocatorError=class extends UnotestError{static{__name(this,_0x562ca9(0x120));}};function createRecorder(){const _0x4586c2={_0x57d957:0xb8,_0x30f612:0xe1},_0x4422c9=_0x562ca9,_0x35f335=[];let _0x52b9ed=0x0;return{'push':__name(_0x21f22a=>_0x35f335[_0x4422c9(0xb8)]({..._0x21f22a,'seq':_0x52b9ed++}),_0x4422c9(_0x4586c2._0x57d957)),'calls':__name(()=>_0x35f335,_0x4422c9(_0x4586c2._0x30f612))};}__name(createRecorder,_0x562ca9(0x107));var FakePage=class{constructor(_0x15e21b,_0x98d4fa,_0x551e25,_0x248129){const _0x5bc653={_0x399fbd:0xe3},_0x5e46fb=_0x562ca9;this['recorder']=_0x15e21b,this[_0x5e46fb(_0x5bc653._0x399fbd)]=_0x98d4fa,this['scope']=_0x551e25,this['currentUrl']=_0x248129;}[_0x562ca9(0x108)];[_0x562ca9(0xe3)];[_0x562ca9(0xd2)];static{__name(this,_0x562ca9(0xf0));}[_0x562ca9(0xb0)];[_0x562ca9(0xc4)];[_0x562ca9(0xfd)](_0x22c45c,_0x334c19){const _0x3b657b={_0x2cf371:0xb8},_0xcc7ec1=_0x562ca9;this['recorder'][_0xcc7ec1(_0x3b657b._0x2cf371)]({'scope':this[_0xcc7ec1(0xd2)],'method':_0x22c45c,'args':_0x334c19});}[_0x562ca9(0xb7)](){const _0x5b5dfe=_0x562ca9;if(this[_0x5b5dfe(0xe3)][_0x5b5dfe(0xf6)]){const _0x23ae7b=this[_0x5b5dfe(0xe3)][_0x5b5dfe(0xf6)];this['behavior'][_0x5b5dfe(0xf6)]=void 0x0;throw _0x23ae7b;}}[_0x562ca9(0xc2)](){return this['currentUrl'];}async[_0x562ca9(0xad)](){const _0x233d31={_0x3548ad:0x104},_0x127117=_0x562ca9;return this[_0x127117(0xfd)](_0x127117(0xad),[]),_0x127117(_0x233d31._0x3548ad);}async[_0x562ca9(0xf5)](_0x390844,_0x3baf0e){const _0x465649={_0x54f47c:0xb7,_0x1f8698:0xc4},_0x1703a6=_0x562ca9;this[_0x1703a6(0xfd)](_0x1703a6(0xf5),[_0x390844,_0x3baf0e]),this[_0x1703a6(_0x465649._0x54f47c)](),this[_0x1703a6(_0x465649._0x1f8698)]?.();}async[_0x562ca9(0xe2)](_0x373caa,_0x55383b){const _0x40a84b={_0x34965f:0xfd,_0x2c0fd0:0xe2,_0x202535:0xb7},_0x2ea8ad=_0x562ca9;this[_0x2ea8ad(_0x40a84b._0x34965f)](_0x2ea8ad(_0x40a84b._0x2c0fd0),[_0x373caa,_0x55383b]),this[_0x2ea8ad(_0x40a84b._0x202535)]();}async[_0x562ca9(0xa3)](_0x337e1e,_0x4c4c5a,_0x28ebf9){const _0x22a579={_0x44b9f3:0xb7},_0x5943ab=_0x562ca9;this[_0x5943ab(0xfd)]('fill',[_0x337e1e,_0x4c4c5a,_0x28ebf9]),this[_0x5943ab(_0x22a579._0x44b9f3)]();}async[_0x562ca9(0xc8)](_0x3e7793,_0x47ac91,_0x4c0b1b){const _0x33fbf0={_0x5d8723:0xc8,_0x4ae42a:0xb7},_0x48c6b0=_0x562ca9;this[_0x48c6b0(0xfd)](_0x48c6b0(_0x33fbf0._0x5d8723),[_0x3e7793,_0x47ac91,_0x4c0b1b]),this[_0x48c6b0(_0x33fbf0._0x4ae42a)]();}async[_0x562ca9(0x100)](_0x436fa0,_0x2806b5){const _0x46f7c7={_0x3f317a:0x100},_0x379420=_0x562ca9;this[_0x379420(0xfd)](_0x379420(_0x46f7c7._0x3f317a),[_0x436fa0,_0x2806b5]),this['maybeThrow']();}async['uncheck'](_0x55c10b,_0x5764dd){const _0x486f60={_0x29d686:0xfd},_0x1f59b5=_0x562ca9;this[_0x1f59b5(_0x486f60._0x29d686)]('uncheck',[_0x55c10b,_0x5764dd]),this['maybeThrow']();}async[_0x562ca9(0x10b)](_0x21806b,_0x246266,_0x1662a5){const _0x3b619d={_0x920bec:0xfd},_0x173b8d=_0x562ca9;this[_0x173b8d(_0x3b619d._0x920bec)](_0x173b8d(0x10b),[_0x21806b,_0x246266,_0x1662a5]),this['maybeThrow']();}async[_0x562ca9(0x112)](_0x4c4f44,_0x186daf){const _0x40fd9c={_0x1da568:0xb7},_0x3dd960=_0x562ca9;this[_0x3dd960(0xfd)](_0x3dd960(0x112),[_0x4c4f44,_0x186daf]),this[_0x3dd960(_0x40fd9c._0x1da568)]();}async[_0x562ca9(0x114)](_0xf14588){const _0x2bbe3f={_0x4d2de8:0x114},_0x172909=_0x562ca9;this['record'](_0x172909(_0x2bbe3f._0x4d2de8),[_0xf14588]),this[_0x172909(0xb7)]();}async[_0x562ca9(0xfc)](_0x2c5b15,_0x44f689,_0x2035ce){const _0x39cbcf={_0x40bdcb:0xfc,_0x4cd41f:0xb7},_0x1b03d5=_0x562ca9;this[_0x1b03d5(0xfd)](_0x1b03d5(_0x39cbcf._0x40bdcb),[_0x2c5b15,_0x44f689,_0x2035ce]),this[_0x1b03d5(_0x39cbcf._0x4cd41f)]();}async[_0x562ca9(0x10e)](_0x5c122d,_0x4fa330){const _0x6e25c2={_0x3e0bd7:0xb7},_0x48e0ed=_0x562ca9;this[_0x48e0ed(0xfd)]('uploadFile',[_0x5c122d,_0x4fa330]),this[_0x48e0ed(_0x6e25c2._0x3e0bd7)]();}async[_0x562ca9(0xae)](_0x539307,_0x19b2ab){const _0x4fe12e={_0x5700ba:0xfd},_0x421ef4=_0x562ca9;this[_0x421ef4(_0x4fe12e._0x5700ba)](_0x421ef4(0xae),[_0x539307,_0x19b2ab]),this['maybeThrow']();}async[_0x562ca9(0xe4)](_0x1e20c2){const _0x4b992e={_0x158359:0xfd,_0x55f4b3:0xe3},_0x135320=_0x562ca9;return this[_0x135320(_0x4b992e._0x158359)](_0x135320(0xe4),[_0x1e20c2]),this[_0x135320(_0x4b992e._0x55f4b3)][_0x135320(0xc3)]??0x1;}async[_0x562ca9(0x117)](_0x1d1ec7){const _0x4feae4={_0x12ebda:0x117},_0x3816f1=_0x562ca9;return this[_0x3816f1(0xfd)](_0x3816f1(_0x4feae4._0x12ebda),[_0x1d1ec7]),this['behavior']['textContentByDefault']??'';}async[_0x562ca9(0xf1)](_0x5f52ef){const _0x4daa3b={_0x517fd3:0xe3,_0x46ecd1:0xe7},_0x3a5e2a=_0x562ca9;return this[_0x3a5e2a(0xfd)]('innerText',[_0x5f52ef]),this[_0x3a5e2a(0xe3)][_0x3a5e2a(0x10c)]??this[_0x3a5e2a(_0x4daa3b._0x517fd3)][_0x3a5e2a(_0x4daa3b._0x46ecd1)]??'';}async[_0x562ca9(0xd3)](_0x33c848){const _0x27017b={_0x41df2b:0xd3,_0x309abf:0xe3},_0x4129b1=_0x562ca9;return this[_0x4129b1(0xfd)](_0x4129b1(_0x27017b._0x41df2b),[_0x33c848]),this[_0x4129b1(_0x27017b._0x309abf)]['inputValueByDefault']??'';}async[_0x562ca9(0xaa)](_0x5b7139){const _0x3eade0={_0x14dddc:0xaa},_0x25160f=_0x562ca9;return this['record'](_0x25160f(_0x3eade0._0x14dddc),[_0x5b7139]),this[_0x25160f(0xe3)][_0x25160f(0xba)]??null;}async[_0x562ca9(0xe8)](_0x3afc2e){const _0x178960={_0x28aa6f:0xe8},_0x1857e1=_0x562ca9;return this['record'](_0x1857e1(_0x178960._0x28aa6f),[_0x3afc2e]),this[_0x1857e1(0xe3)][_0x1857e1(0xbc)]??!![];}async[_0x562ca9(0xab)](_0xaabeb6){const _0x2400c3={_0x29db0a:0xab,_0x5c9b8f:0xe3},_0x1a03ac=_0x562ca9;return this['record'](_0x1a03ac(_0x2400c3._0x29db0a),[_0xaabeb6]),this[_0x1a03ac(_0x2400c3._0x5c9b8f)][_0x1a03ac(0xef)]??![];}async[_0x562ca9(0x10f)](_0x4b2dc0,_0x48b0d1){const _0x2cface={_0x1234b2:0x10f,_0x4e3ecd:0xe3},_0x1fc93f=_0x562ca9;return this[_0x1fc93f(0xfd)](_0x1fc93f(_0x2cface._0x1234b2),[_0x4b2dc0,_0x48b0d1]),this[_0x1fc93f(_0x2cface._0x4e3ecd)][_0x1fc93f(0xea)]?.[_0x48b0d1]??null;}async[_0x562ca9(0xfe)](_0xfcff2b,_0x12c613){const _0x2e6e01=_0x562ca9;this[_0x2e6e01(0xfd)]('waitFor',[_0xfcff2b,_0x12c613]);}async[_0x562ca9(0xd6)](_0x2e5774,_0xb689e9){const _0x1ea473={_0x9a7a36:0xd6},_0x4e703f=_0x562ca9;this[_0x4e703f(0xfd)](_0x4e703f(_0x1ea473._0x9a7a36),[_0x2e5774,_0xb689e9]);}async[_0x562ca9(0x118)](_0x33e0c2,_0xa0a60a){const _0xa418bb=_0x562ca9;this['record'](_0xa418bb(0x118),[_0x33e0c2,_0xa0a60a]);}async[_0x562ca9(0xa5)](_0x5644d2){const _0x5e21c6=_0x562ca9;this['record'](_0x5e21c6(0xa5),[_0x5644d2]);}async[_0x562ca9(0xb6)](_0x29ddec,_0x59da14){const _0x337222={_0x515a0f:0xb6},_0x2db09b=_0x562ca9;this[_0x2db09b(0xfd)](_0x2db09b(_0x337222._0x515a0f),[_0x29ddec,_0x59da14]);}async[_0x562ca9(0xec)](_0x276922,_0x3d12ed){const _0x10a0fb={_0x1ef77a:0xec},_0x3d8aa4=_0x562ca9;this[_0x3d8aa4(0xfd)](_0x3d8aa4(_0x10a0fb._0x1ef77a),[_0x276922,_0x3d12ed]),this[_0x3d8aa4(0xb0)]=_0x276922;}async[_0x562ca9(0x9d)](_0x480ae7){const _0x4e4504=_0x562ca9;this[_0x4e4504(0xfd)](_0x4e4504(0x9d),[_0x480ae7]);}async[_0x562ca9(0x109)](_0x1013e3){const _0x18e17b={_0x19d930:0xfd},_0xee2d7=_0x562ca9;this[_0xee2d7(_0x18e17b._0x19d930)]('goBack',[_0x1013e3]);}async['goForward'](_0x49deaa){const _0x22c2c3={_0x3f46cd:0xfd},_0x196949=_0x562ca9;this[_0x196949(_0x22c2c3._0x3f46cd)](_0x196949(0xb4),[_0x49deaa]);}async[_0x562ca9(0x110)](_0x39485d){const _0x30580c={_0x5dbff3:0x113},_0x2b0d82=_0x562ca9;return this[_0x2b0d82(0xfd)](_0x2b0d82(0x110),[_0x39485d]),this['behavior'][_0x2b0d82(_0x30580c._0x5dbff3)];}async[_0x562ca9(0xd8)](_0x5db91c,_0x230f39){const _0x505335={_0x2417a5:0xfd,_0x2fe4b6:0xd8},_0x39e49a=_0x562ca9;return this[_0x39e49a(_0x505335._0x2417a5)](_0x39e49a(_0x505335._0x2fe4b6),[_0x5db91c,_0x230f39]),void 0x0;}async[_0x562ca9(0xfb)](_0x2a876a){const _0xed7884={_0x531dce:0xfd,_0x530a4a:0x102,_0x4490a0:0x102,_0xad541f:0xe3,_0x1f0463:0xdb},_0x4f07a3=_0x562ca9;this[_0x4f07a3(_0xed7884._0x531dce)](_0x4f07a3(0xfb),[_0x2a876a]);if(_0x2a876a['steps'][_0x4f07a3(0xa9)]!==0x1||_0x2a876a[_0x4f07a3(0x125)][0x0][_0x4f07a3(0xa0)]!==_0x4f07a3(_0xed7884._0x530a4a))return null;const _0xc1cde4=_0x2a876a[_0x4f07a3(0x125)][0x0][_0x4f07a3(_0xed7884._0x4490a0)],_0x5c8166=this[_0x4f07a3(_0xed7884._0xad541f)][_0x4f07a3(_0xed7884._0x1f0463)]?.[_0xc1cde4];return _0x5c8166??null;}async[_0x562ca9(0x11f)](_0x4ec762){const _0x13a51a={_0x2c1a2b:0x11c},_0x1b9a02=_0x562ca9;return this['record']('screenshot',[_0x4ec762]),this[_0x1b9a02(_0x13a51a._0x2c1a2b)](_0x4ec762?.[_0x1b9a02(0xe0)]);}async[_0x562ca9(0xd5)](_0x144429,_0x51d7bc){const _0x14ba39=_0x562ca9;return this[_0x14ba39(0xfd)]('screenshotElement',[_0x144429,_0x51d7bc]),this[_0x14ba39(0x11c)](_0x51d7bc?.[_0x14ba39(0xe0)]);}[_0x562ca9(0x11c)](_0xc37b8f){const _0x1406eb={_0xfa079c:0xe3},_0x130989=_0x562ca9,_0x4ce78d=this[_0x130989(_0x1406eb._0xfa079c)][_0x130989(0x11c)];if(_0x4ce78d===void 0x0)return Buffer['from']('fake-png');return typeof _0x4ce78d===_0x130989(0x101)?_0x4ce78d(_0xc37b8f):_0x4ce78d;}async[_0x562ca9(0xd1)](_0x4d3308){const _0x8f390e={_0xf4a3c3:0xfd,_0x2bb7a3:0xd1,_0x35bf71:0x125,_0xb083bc:0xa0,_0x21b0ad:0xa2},_0x128a03=_0x562ca9;this[_0x128a03(_0x8f390e._0xf4a3c3)](_0x128a03(_0x8f390e._0x2bb7a3),[_0x4d3308]);if(_0x4d3308[_0x128a03(_0x8f390e._0x35bf71)]['length']===0x1&&_0x4d3308[_0x128a03(0x125)][0x0][_0x128a03(_0x8f390e._0xb083bc)]===_0x128a03(0x102)){const _0x7d3ac4=_0x4d3308[_0x128a03(0x125)][0x0]['ref'];return this['behavior'][_0x128a03(0xf3)]?.[_0x7d3ac4]??_0x128a03(_0x8f390e._0x21b0ad)+_0x7d3ac4+_0x128a03(0x10d);}return'<div></div>';}},FakeContext=class{constructor(_0x439a96,_0x18f25b,_0x1271cd){const _0x13f89c={_0x387339:0xe3,_0x16d742:0xf2,_0x2c743e:0xc4},_0x290230={_0x2151d7:0xf8},_0x5b9fa3=_0x562ca9;this['recorder']=_0x439a96,this[_0x5b9fa3(_0x13f89c._0x387339)]=_0x18f25b,this['scope']=_0x1271cd;const _0x92b4ce=new FakePage(_0x439a96,_0x18f25b,_0x1271cd+_0x5b9fa3(_0x13f89c._0x16d742),_0x18f25b[_0x5b9fa3(0x115)]??_0x5b9fa3(0xc6));_0x18f25b[_0x5b9fa3(0xf8)]&&(_0x92b4ce[_0x5b9fa3(_0x13f89c._0x2c743e)]=()=>{const _0x4e983f=_0x5b9fa3;this['emitFakePopup'](_0x18f25b[_0x4e983f(_0x290230._0x2151d7)]);}),this['pageList']=[_0x92b4ce],this[_0x5b9fa3(0xd7)]={..._0x18f25b['localStorage']??{}},this[_0x5b9fa3(0x11d)]={..._0x18f25b[_0x5b9fa3(0x124)]??{}};}[_0x562ca9(0x108)];[_0x562ca9(0xe3)];['scope'];static{__name(this,_0x562ca9(0xeb));}[_0x562ca9(0xb5)];[_0x562ca9(0xa1)]=0x0;[_0x562ca9(0xff)]=[];[_0x562ca9(0xd7)];[_0x562ca9(0x11d)];[_0x562ca9(0x105)]=new Set();['record'](_0x374055,_0x3dc477){const _0x234ee5={_0x2bdae4:0x108,_0x49d330:0xb8,_0x4399ed:0xd2},_0x268b5c=_0x562ca9;this[_0x268b5c(_0x234ee5._0x2bdae4)][_0x268b5c(_0x234ee5._0x49d330)]({'scope':this[_0x268b5c(_0x234ee5._0x4399ed)],'method':_0x374055,'args':_0x3dc477});}[_0x562ca9(0xce)](){const _0x5355d9=_0x562ca9;return this[_0x5355d9(0xb5)];}[_0x562ca9(0xaf)](){const _0x56657c={_0x1cb9b7:0xd9},_0x324c1=_0x562ca9,_0xfc4254=this[_0x324c1(0xb5)][this[_0x324c1(0xa1)]];if(!_0xfc4254)throw new DriverError(_0x324c1(_0x56657c._0x1cb9b7),{'activeIdx':this[_0x324c1(0xa1)]});return _0xfc4254;}['consoleEntries'](){const _0x242e12={_0x45cf1d:0x122},_0x6ef77f=_0x562ca9;return this[_0x6ef77f(0xe3)][_0x6ef77f(_0x242e12._0x45cf1d)]??[];}['networkEntries'](){const _0x1f9a93={_0x1fc114:0xe9},_0x258a1b=_0x562ca9;return this['behavior'][_0x258a1b(_0x1f9a93._0x1fc114)]??[];}async[_0x562ca9(0x11b)](_0x20d49a){const _0x4bbf2f={_0x501140:0xfd,_0x4134e8:0xb5},_0x3dc724=_0x562ca9;this[_0x3dc724(_0x4bbf2f._0x501140)]('setActivePage',[_0x20d49a]);if(_0x20d49a<0x0||_0x20d49a>=this[_0x3dc724(_0x4bbf2f._0x4134e8)][_0x3dc724(0xa9)])throw new DriverError(_0x3dc724(0xc5),{'index':_0x20d49a,'available':this['pageList'][_0x3dc724(0xa9)]});this['activeIdx']=_0x20d49a,this[_0x3dc724(0xff)][_0x3dc724(0xa9)]=0x0;}[_0x562ca9(0x103)](_0x515319){const _0xebf6a0=_0x562ca9;return subscribe(this[_0xebf6a0(0x105)],_0x515319);}[_0x562ca9(0xbb)](_0x4de472){const _0x10f6ae={_0x5f33e9:0xc9,_0x27eb8b:0xe3},_0x16e172=_0x562ca9,_0x2b6187=this[_0x16e172(0xd2)]+_0x16e172(_0x10f6ae._0x5f33e9)+this[_0x16e172(0xb5)][_0x16e172(0xa9)],_0x29339b=new FakePage(this['recorder'],this[_0x16e172(_0x10f6ae._0x27eb8b)],_0x2b6187,_0x4de472);this[_0x16e172(0xb5)][_0x16e172(0xb8)](_0x29339b);const _0x3ab528=this['pageList'][_0x16e172(0xa9)]-0x1;for(const _0x130219 of this[_0x16e172(0x105)]){try{_0x130219({'index':_0x3ab528,'url':_0x4de472});}catch{}}return _0x3ab528;}[_0x562ca9(0xee)](_0x4878e5){const _0x76cc45={_0x4961bd:0xa9,_0x342f69:0xc5,_0x22a57d:0xb5,_0x59032a:0xb5,_0x23e7c9:0x119},_0x5159c3=_0x562ca9;if(_0x4878e5<0x0||_0x4878e5>=this[_0x5159c3(0xb5)][_0x5159c3(_0x76cc45._0x4961bd)])throw new DriverError(_0x5159c3(_0x76cc45._0x342f69),{'index':_0x4878e5,'available':this[_0x5159c3(_0x76cc45._0x22a57d)][_0x5159c3(0xa9)]});this[_0x5159c3(_0x76cc45._0x59032a)][_0x5159c3(_0x76cc45._0x23e7c9)](_0x4878e5,0x1);}async[_0x562ca9(0xa8)](_0x13bfad){const _0x5f298a={_0x204cae:0xfd,_0x57c483:0xa8,_0x2e267d:0x125,_0x3c2a46:0xa9,_0x1e7585:0xff},_0x3e9585=_0x562ca9;this[_0x3e9585(_0x5f298a._0x204cae)](_0x3e9585(_0x5f298a._0x57c483),[_0x13bfad]);if(!_0x13bfad[_0x3e9585(_0x5f298a._0x2e267d)][_0x3e9585(_0x5f298a._0x3c2a46)])throw new LocatorError(_0x3e9585(0x9f),{'locator':_0x13bfad});this[_0x3e9585(_0x5f298a._0x1e7585)]['push'](_0x13bfad);}async[_0x562ca9(0xd4)](){const _0x5c8cb6={_0x183d8c:0xfd,_0x328bb6:0xbe,_0x545745:0x121},_0x3200dc=_0x562ca9;this[_0x3200dc(_0x5c8cb6._0x183d8c)](_0x3200dc(0xd4),[]);if(this['frameStack'][_0x3200dc(0xa9)]===0x0)throw new DriverError(_0x3200dc(_0x5c8cb6._0x328bb6),{});this[_0x3200dc(0xff)][_0x3200dc(_0x5c8cb6._0x545745)]();}async[_0x562ca9(0xac)](_0x36cf3d,_0x5498cd){const _0x142387={_0x17722b:0xac},_0x542c3a=_0x562ca9;this[_0x542c3a(0xfd)](_0x542c3a(_0x142387._0x17722b),[_0x36cf3d,_0x5498cd]),this[_0x542c3a(0xd7)][_0x36cf3d]=_0x5498cd;}async[_0x562ca9(0xe6)](_0x294e6f){const _0x20d151={_0x50967a:0xe6,_0xc2755:0xd7},_0xe3a234=_0x562ca9;return this[_0xe3a234(0xfd)](_0xe3a234(_0x20d151._0x50967a),[_0x294e6f]),this[_0xe3a234(_0x20d151._0xc2755)][_0x294e6f]??null;}async[_0x562ca9(0xb2)](_0x463a14,_0x2086a3,_0x1df3ca){const _0x4f5ee0={_0xe2d51f:0x11d},_0x8da4b4=_0x562ca9;this['record'](_0x8da4b4(0xb2),[_0x463a14,_0x2086a3,_0x1df3ca]),this[_0x8da4b4(_0x4f5ee0._0xe2d51f)][_0x463a14]=_0x2086a3;}async['getCookie'](_0x29020e){const _0x2eeba0=_0x562ca9;return this['record'](_0x2eeba0(0xa4),[_0x29020e]),this['cookieState'][_0x29020e]??null;}async[_0x562ca9(0xda)](_0x7ecb21){const _0x5322ce=_0x562ca9;this[_0x5322ce(0xfd)]('saveStorageState',[_0x7ecb21]);}async[_0x562ca9(0x110)](_0x4790ba){const _0x79be34=_0x562ca9;return this[_0x79be34(0xfd)](_0x79be34(0x110),[_0x4790ba]),void 0x0;}async[_0x562ca9(0xed)](){const _0xff1f88={_0x25abf2:0xfd},_0x1426c9=_0x562ca9;this[_0x1426c9(_0xff1f88._0x25abf2)]('close',[]);}['frameDepth'](){const _0x31134c=_0x562ca9;return this[_0x31134c(0xff)]['length'];}},FakeWebDriver=class{constructor(_0x435e32={}){const _0x16d750={_0x1fc109:0x108},_0x11ba80=_0x562ca9;this['behavior']=_0x435e32,this[_0x11ba80(_0x16d750._0x1fc109)]=createRecorder();}[_0x562ca9(0xe3)];static{__name(this,_0x562ca9(0x123));}['launched']=![];[_0x562ca9(0x108)];[_0x562ca9(0xcd)]=[];async[_0x562ca9(0xfa)](_0x10dfae){const _0x137cc0=_0x562ca9;this[_0x137cc0(0x108)][_0x137cc0(0xb8)]({'scope':_0x137cc0(0xbd),'method':'launch','args':[_0x10dfae]}),this[_0x137cc0(0xf4)]=!![];}async['newContext'](_0xf71149){const _0x573e34={_0x59484a:0xb8,_0x274b59:0xcf,_0x1e55ec:0x108,_0x2f1257:0x10a,_0x4bd0ff:0xcd},_0x4683eb=_0x562ca9;this[_0x4683eb(0x108)][_0x4683eb(_0x573e34._0x59484a)]({'scope':'driver','method':_0x4683eb(_0x573e34._0x274b59),'args':[_0xf71149]});if(!this[_0x4683eb(0xf4)])throw new DriverError(_0x4683eb(0xf9),{});const _0x1d316b=new FakeContext(this[_0x4683eb(_0x573e34._0x1e55ec)],this['behavior'],_0x4683eb(_0x573e34._0x2f1257)+this[_0x4683eb(0xcd)][_0x4683eb(0xa9)]);return this[_0x4683eb(_0x573e34._0x4bd0ff)]['push'](_0x1d316b),_0x1d316b;}async[_0x562ca9(0xed)](){const _0x5cab2d={_0xec489f:0x108,_0x20458d:0xbd,_0x99dfd2:0xed,_0x1a8fb3:0xf4},_0x498e49=_0x562ca9;this[_0x498e49(_0x5cab2d._0xec489f)][_0x498e49(0xb8)]({'scope':_0x498e49(_0x5cab2d._0x20458d),'method':_0x498e49(_0x5cab2d._0x99dfd2),'args':[]}),this[_0x498e49(_0x5cab2d._0x1a8fb3)]=![];}[_0x562ca9(0x9e)](){return void 0x0;}async[_0x562ca9(0xb9)](){const _0x1602bc=_0x562ca9;throw new DriverError(_0x1602bc(0xf7),{});}['attachExisting'](_0x431c9d){throw new DriverError('attachExisting\x20not\x20supported\x20by\x20FakeWebDriver',{});}[_0x562ca9(0xe1)](){const _0x39213f={_0x677f36:0x108},_0x2e997d=_0x562ca9;return this[_0x2e997d(_0x39213f._0x677f36)][_0x2e997d(0xe1)]();}[_0x562ca9(0xcb)](_0x31054d){const _0x201644={_0x4a1cd0:0x108,_0x4d4747:0xbf},_0x1b49fb=_0x562ca9;return this[_0x1b49fb(_0x201644._0x4a1cd0)][_0x1b49fb(0xe1)]()[_0x1b49fb(_0x201644._0x4d4747)](_0x2d771e=>_0x2d771e[_0x1b49fb(0x116)]===_0x31054d);}};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};
@@ -1,6 +1,6 @@
1
- import { j as LocatorValue, W as WebDriver, D as DriverContext, e as DriverPage } from '../interfaces-ClW2IRgY.js';
2
- export { k as LocatorStep, l as appendStep, m as describeLocator, n as isLocatorValue, r as rootedAt } from '../interfaces-ClW2IRgY.js';
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
- interface TestRuntimeDeps {
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
- readonly context: DriverContext;
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
@@ -352,6 +535,20 @@ interface ActiveRuntime {
352
535
  ttlTimer: NodeJS.Timeout | null;
353
536
  /** The runtime's own last-rites hook — see `register`. */
354
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;
355
552
  }
356
553
  interface RuntimeSummary {
357
554
  id: string;
@@ -372,6 +569,10 @@ interface RuntimeSnapshot {
372
569
  lastFailure: ActiveRuntime['lastFailure'];
373
570
  softFailures: readonly SoftFailureRecord[];
374
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[];
375
576
  }
376
577
  interface TestRuntimeManagerDeps {
377
578
  logger: Logger;
@@ -391,6 +592,13 @@ declare class TestRuntimeManager {
391
592
  * `aborted`. Bounded — only the last few matter (a writer flushes once). */
392
593
  private readonly terminalTombstones;
393
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;
394
602
  private nextId;
395
603
  constructor(deps: TestRuntimeManagerDeps);
396
604
  register(opts: {
@@ -406,6 +614,9 @@ declare class TestRuntimeManager {
406
614
  * anything the run still owes the disk has to be settled here (#194
407
615
  * tail). */
408
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;
409
620
  }): string;
410
621
  pump(id: string): Promise<ExecutionEvent | RunResult>;
411
622
  /** The run's verdict — the executor's own, corrected for the one thing
@@ -418,9 +629,15 @@ declare class TestRuntimeManager {
418
629
  * going past it — web never sets it, and if it ever does, the retry's
419
630
  * own `step-end` decides and this correction has to be revisited.) */
420
631
  private verdict;
632
+ /** The run's final verdict, rollback included — see `pump`. */
633
+ finish(id: string, result: RunResult): void;
421
634
  step(id: string): Promise<ExecutionEvent | RunResult>;
422
635
  resume(id: string): Promise<ExecutionEvent | RunResult>;
423
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[];
424
641
  /** Snapshot a just-aborted (still-live) runtime into the tombstone map so a
425
642
  * later inspect() reflects `aborted`. Bounded LRU; best-effort. */
426
643
  private rememberTombstone;