@unotest/web 0.9.1 → 0.10.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
- const _0xe93819=_0x1d2c;(function(_0x14c85d,_0x41cbe5){const _0x427889={_0x2f1ee9:0x8f,_0x5e5f6c:0x93},_0x101c8=_0x1d2c,_0x5f4698=_0x14c85d();while(!![]){try{const _0x382684=parseInt(_0x101c8(0x92))/0x1+-parseInt(_0x101c8(_0x427889._0x2f1ee9))/0x2+-parseInt(_0x101c8(_0x427889._0x5e5f6c))/0x3+parseInt(_0x101c8(0x9b))/0x4*(parseInt(_0x101c8(0x8d))/0x5)+parseInt(_0x101c8(0x87))/0x6+parseInt(_0x101c8(0x9c))/0x7+-parseInt(_0x101c8(0xa0))/0x8;if(_0x382684===_0x41cbe5)break;else _0x5f4698['push'](_0x5f4698['shift']());}catch(_0x132ec3){_0x5f4698['push'](_0x5f4698['shift']());}}}(_0x20f8,0xb4469));var __defProp=Object[_0xe93819(0x90)],__name=(_0x259df8,_0xb1a55d)=>__defProp(_0x259df8,_0xe93819(0x88),{'value':_0xb1a55d,'configurable':!![]});import{mkdir,writeFile}from'fs/promises';function _0x1d2c(_0x5f117c,_0x438070){_0x5f117c=_0x5f117c-0x87;const _0x20f84a=_0x20f8();let _0x1d2c61=_0x20f84a[_0x5f117c];if(_0x1d2c['ChVSbS']===undefined){var _0x5153a7=function(_0x25b804){const _0xabea35='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x259df8='',_0xb1a55d='';for(let _0x27a254=0x0,_0x5ed29c,_0x29cc37,_0x7d12be=0x0;_0x29cc37=_0x25b804['charAt'](_0x7d12be++);~_0x29cc37&&(_0x5ed29c=_0x27a254%0x4?_0x5ed29c*0x40+_0x29cc37:_0x29cc37,_0x27a254++%0x4)?_0x259df8+=String['fromCharCode'](0xff&_0x5ed29c>>(-0x2*_0x27a254&0x6)):0x0){_0x29cc37=_0xabea35['indexOf'](_0x29cc37);}for(let _0x2cbbc6=0x0,_0x1e59a1=_0x259df8['length'];_0x2cbbc6<_0x1e59a1;_0x2cbbc6++){_0xb1a55d+='%'+('00'+_0x259df8['charCodeAt'](_0x2cbbc6)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xb1a55d);};_0x1d2c['fhtcfI']=_0x5153a7,_0x1d2c['IBVTxc']={},_0x1d2c['ChVSbS']=!![];}const _0x2ee8d3=_0x20f84a[0x0],_0x295fce=_0x5f117c+_0x2ee8d3,_0xc7b11f=_0x1d2c['IBVTxc'][_0x295fce];return!_0xc7b11f?(_0x1d2c61=_0x1d2c['fhtcfI'](_0x1d2c61),_0x1d2c['IBVTxc'][_0x295fce]=_0x1d2c61):_0x1d2c61=_0xc7b11f,_0x1d2c61;}import{existsSync}from'fs';function _0x20f8(){const _0x84cdc4=['mZGYmti5nxDMvMzqCa','Dw5VDgvZDenVBMzPz01QCW','mte5mde1ngznyMzWAG','zgvMAw5LuhjVCgvYDhK','iYb1BM90zxn0lxDLyIdIGjqGy29WAwvKihrVihvUB3rLC3qVlMvUDIbIEsbGAw5PDgaGAwyGBM90ihbYzxnLBNqUcImkiYbgAwXSigLUihzHBhvLCYb0Agf0igfWCgX5ihrVihLVDxiGChjVAMvJDc4GvMfYAwfIBgvZigfYzsbSB2fKzwqGyNKGDgHLcImGCNvUBMvYigf0ihnJzw5HCMLVihn0yxj0lGOJcImGuMvMzxjLBMnLigfUEsb2yxjPywjSzsbMCM9TigeGC2nLBMfYAw8GyNKGAxrZigjHCMuGvvbqrvjFu05bs0uGBMfTzsdIGjqkiYbUBYbLBNyOks9ZzwnYzxqOksb3CMfWCgvYoGOJcImGicbNB3rVkcCVBg9NAw4NktSGicaGicaGicaGicaGicaGicaGicaGicaGicmGCMvSyxrPDMuG4OcuihnLzsbbufbFqKftrv9vuKWkiYaGigzPBgWOz2v0qNLmywjLBcGNrw1HAwWNksWGvevtvf9vu0vsx0vnquLmktSkiWOJifnLy3jLDcb2ywX1zxmGkhbHC3n3B3jKCYWGDg9Rzw5ZksbNBYbPBIb1BM90zxn0lY5ZzwnYzxrZigLUC3rLywqG4OcuihnHBwukiYbMB3jTyxqSigj1DcbTyxnRzwqGAw4GzxzLCNKGBg9NlIbbBIb1BMTUB3DUifvquevsx1noquTfig5HBwuGzMfPBhmGDgHLcImGCNvUihDPDgGGysbJBgvHCIaIywrKigL0ihrVihvUB3rLC3qVlMvUDIiGBwvZC2fNzs4kiWOJievUDMLYB25Tzw50CZOGB3zLCNjPzguGyw55ihzHBhvLihbLCIbLBNzPCM9UBwvUDcb3AxrOig92zxjSyxKGzMLSzxmG4OcucImGDw5VDgvZDc8Uzw52lNn0ywDPBMCSihvUB3rLC3qVlMvUDI5WCM9KDwn0Aw9UicHZzwnYzxrZoIaUC2vJCMv0CY48zw52pIKUcImGu2vSzwn0ig9UztOGyg5WEcbaDw5VDgvZDc93zwiGztjLidXUyw1LpIaTlwvUDIbZDgfNAw5Nyc4GvgHLig92zxjSyxKGBgf5zxjZcImGB3zLCIb0AgLZigjHC2uGzMLSzsaOB3zLCMXHEsb3Aw5ZktSGDgHLihnOzwXSigvUDMLYB25Tzw50ihDPBNmGB3zLCIbIB3rOlGOkiYaTls0GqxbWihvUzgvYihrLC3qGls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0kiYbuAguGyxbWj3mGyMfZzsbvuKWUifjLBgf0AxzLigDVDg8OjY9WyxrOjYKGCMvZB2X2zxmGywDHAw5ZDcbPDcaOD2LYzwqGAw50BWOJifbSyxL3CMLNAhqNCYbIyxnLvvjmigf1Dg9TyxrPy2fSBhKPlcbZBYb3CML0zsbNB3rVkcCVBg9NAw4NksdIGjqGBMv2zxikiYbNB3rVkefquf9cqvnfx1vstcaRicCVBg9NAw4Nks4GqwXZBYb1C2vKigzVCIbHC3nLCNrvCMWGC3vIC3rYAw5Nig1HDgnOAw5NlGOJierLzMf1BhrZihrVihrOzsb1BM90zxn0ihbSyxLNCM91BMqGC28GDgHLigv4yw1WBguGC2nLBMfYAw9Zihj1BIbVDxqGB2yGDgHLcImGyM94oYbWB2LUDcbPDcbHDcb5B3vYig93BIbHChaUcKfquf9cqvnfx1vstd1ODhrWCZOVl3bSyxLNCM91BMqUDw5VDgvZDc5JB20kcImGls0TierHDgfIyxnLic0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0TcImGvxnLzcbIEsbKyLf1zxj5ic8GzgjfEgvJlIbjBNn0ywXSihrOzsbTyxrJAgLUzYbKCML2zxiGyxmGysbWzwvYlwrLCdOkiYaGihbUCg0GywrKic1eihbNieb0ExbLCY9WzYaGicaGicaGicaJigzVCIbWB3n0z3jLC3fSoI8VcImGicbWBNbTigfKzcaTrcbTExnXBdiGicaGicaGicaGicaGicaGiYbMB3iGBxLZCwW6lY8kiYaOu1fmAxrLihzPysbIzxr0zxiTC3fSAxrLmYdIGjqGAw5ZDgfSBcbVBMX5igLMig5LzwrLzc4PcKrbvefcqvnfx1vstd1WB3n0z3jLC3fSoI8VCg9ZDgDYzxm6Cg9ZDgDYzxnaBg9JywXOB3n0oJu0mZiVBxLHChbFDgvZDaOkiYaTls0GuNvUBMvYic0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0T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','mtmYodKWnhvHy3botG','mZi0mdm1mwfnB2LxuG','Dw5VDgvZDa','icaVlYbJAgfUBMvSoIaNy2HYB21LjYWGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8Gj2nOCM9TzsCGlYaNBxnLzgDLjYaVig51BgWGkgj1BMrSzwqP','lY8GqhvUB3rLC3qVD2vIihbYB2PLy3qGy29UzMLNlIbbBgWGzMLLBgrZigfYzsbVChrPB25HBcdIGjqGzgvMyxvSDhmGyxbWBhKklY8GD2HLBIbVBwL0DgvKlGOVlWOVlYbtyxzLzcbHCYaUBwPZihnVihrOzsbYDw50Aw1LigXVywrZigL0igfZievttsbYzwDHCMrSzxnZig9MihrOzsbWCM9Qzwn0j3mklY8GCgfJA2fNzs5QC29Uicj0ExbLiIbMAwvSzc4GrM9YieLersbHDxrVy29TCgXLDguSihr5CguTAw1WB3j0ihrOzsbZy2HLBwe6cI8VcI8VicaGlYOQieb0ExbLihTqyxj0AwfSpgLTCg9YDcGNqhvUB3rLC3qVD2vIjYKUvw5VDgvZDenVBMzPzZ59icOVcI8VicaGzxHWB3j0igrLzMf1BhqGEYbIyxnLvxjSoIaNAhr0Chm6lY95B3vYlwfWCc50zxn0jYb9oWOklYOQieb0ExbLihTqyxj0AwfSpgLTCg9YDcGNqhvUB3rLC3qVD2vIjYKUvw5VDgvZDenVBMzPzZ59icOVcMv4Cg9YDcbKzwzHDwX0ihSkicaVlYbIyxnLvxjSoIaNAhr0Chm6lY95B3vYlwfWCc50zxn0jYWkicaVlYbICM93C2vYCZOGwYDJAhjVBwL1BsCSicDMAxjLzM94jYWGj3DLyMTPDcDDlcaGlY8Gq0KGB3zLCNjPzgukicaVlYb2Awv3Cg9YDdOGEYb3Awr0AdOGmti4mcWGAgvPz2H0oIa3mJaGFsWkicaVlYbYzxrYEtOGEYbJB3vUDdOGmsWGB246ifSNDhjHBNnPzw50j10GFsWGicaGicaGic8Vienjig92zxjYAwrLcIaGlY8GC3rVCMfNzvn0yxrLoIaNlNvUB3rLC3qVy2fJAguVyxv0Ac5QC29UjYWGicaGicaVlYbZzwuGAgvSCgvYCWO','x2HLBhbLCNm','icbJAgfUBMvSoIa','Dw5VDgvZDc5JB25MAwCUBwPZ','iYb1BM90zxn0lxDLyIdIGjqGC2vJCMv0ihnJzw5HCMLVihzHCMLHyMXLCY4Gq3jLyxrLzcbIEsbGAw5PDgaSigDPDgLNBM9YzwqUcImkiYbtyw1LieTfwt1wquXvrsbMB3jTyxqGyxmGDw5VDgvZDc8Uzw52lcbIDxqGDMfSDwvZigHLCMuGyxjLihrYzwf0zwqGyxmkiYbtrunsrvq6ihrOzxKGyxjLig1HC2TLzcaOC2HVD24GyxmGyokaUxnLy3jLDdPlrvNIGlPGksbHBNL3AgvYzsb0AguGCNvUBMvYig9YcImGtunqigrLyNvNigXVzYb3B3vSzcbVDgHLCNDPC2uGD3jPDguGDgHLBsdIGjqGzMLSBcGPihzHBhvLCYWGvvjmCYWGzxzHBhvHDgukiYbZDhjPBMDZlIbszwzLCMvUy2uGDgHLBsbPBIbHihnJzw5HCMLVigj5ihrOzwLYigjHCMuGvvbqrvjFu05bs0uGBMfTzsWGDgHLcImGC2fTzsb3yxKGyxmGlMvUDIb2yxjPywjSzxm6cImkiYaGigzPBgWOz2v0qNLmywjLBcGNugfZC3DVCMqNksWGueftu1DpuKqPoWOJcImGu2vJCMv0CYbHCMuGtK9uigv4Cg9YDgvKihrVihn1yNbYB2nLC3nLCYaOC2HLBgWOksKG4OcuihrOzxKGC3rHEsbPBIb0AgukiYb2yxjPywjSzsbZDg9Yzs4Guhv0ig5VBI1ZzwnYzxqGDMfSDwvZicHvuKXZlcbLBwfPBhmSigLKCYKGAw4GDw5VDgvZDc8Uzw52lGOJcImGrKXfrvrFrvHbtvbmrqPmt0DjtJ0kueftu1DpuKq9cLrps0vopqO','nfHKsLrtqG','nJK3otDRD3rIt04','zw52rxHHBxbSzq','iYmGrtjfihrLC3rPBMCGD2L0AcbaDw5VDgvZDc93zwikcKbbr0vovfmUBwqkcKzVCIbHBNKGCMvXDwvZDcb0BYb3CML0zsWGCMvJB3jKlcbVCIbYDw4Gyw4Gzw5KlxrVlwvUzcb0zxn0lcbVCgvUihrOzqPGD3jPDguTztjLlxrLC3rGihnRAwXSicHVCIbYDw4Gyc93CML0zs1LmMuTDgvZDgaPigfUzcbKCML2zsb0AguGyNjVD3nLCIb0AhjVDwDOcNrOzsbGDw5VDgvZDc13zwjGie1ducb0B29SCYaOyg5LD19JB250zxH0ycdIHPiGygv4CgXVCMvFC3rLCgaG4OAsigbNzxrFCgfNzv9ZBMfWC2HVDgak4OAsigbYDw5FDgvZDgaPlIbeBYbUB3qGAgfUzc1HDxrOB3iGDgvZDhmGyMXPBMqGB3iGBwfWihrOzsbWCM9Qzwn0ihDPDgGkygzPBMrGl2bSC2aVygf3A2aG4OcuihrOzsbZA2LSBcDZifbOyxnLidaGBgLZDhmGDgHLigzPBgvZihrVihjLywqU','ztjL','mtK5nZKXmLDWue96ua','mdeTC21VA2uUANm','ChvZAa','lY8GrxHHBxbSzsaWmsdIGjqGC21VA2u6ig5HDMLNyxrLicSGy2XPy2SGkYbvuKWGyxnZzxj0Aw9UlGOVlWOVlYbuAguGBwLUAw1HBcb0AhjLzs1ZDgvWihbHDhrLCM4UieHPDhmGCgXHEwDYB3vUzc51BM90zxn0lMnVBsbZBYbUBYbWCM9Qzwn0cI8VihnLDhvWigLZig5LzwrLzc4GuNvUihDPDgG6icbUChGGqhvUB3rLC3qVD2vIiguYzsbLEgfTCgXLCY8Wms1ZBw9RzqOkzNvUy3rPB24GDgvZDf9ZBw9Rzv9WBgf5z3jVDw5KkcKGEWOGihn0zxaOiK9Wzw4GDgHLiejPzYbuywjSzsbZy2vUyxjPBYbMCM9TihrOzsbWBgf5z3jVDw5KigLUzgv4iIWGkcKGpt4GEWOGicaGz290BYGNlYCPoWOGicaGy2XPy2SOz2v0qNLsB2XLkcDSAw5RjYWGE25HBwu6icDcAwCGvgfIBguNlcbLEgfJDdOGDhj1zx0PktSkicaGigfZC2vYDfvYBcGNl3nJzw5HCMLVCY9IAwCTDgfIBguNktSkicb9ktSkFqO','mZm2mti0oer1r0Ppza','BMfTzq','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','zxHHBxbSzxm','lY8Gtw92zsaRihjLBMfTzsb0AgLZigzPBguGDg8GpgzLyxr1CMu+lZX5B3vYx25HBwu+lMPZicHLlMCUcI8Vigf1DgGVBg9NAw4UANmPigfUzcb0AguGzNvUy3rPB24GyMvSB3CGDg8GDgvZDf88Ew91CL9Uyw1LpIGPlIbty2vUyxjPB3mGBgL2zqOVlYbPBIbMzwf0DxjLihn1yMzVBgrLCNmSie5pvcb0AguGztjLihjVB3qG4OcuihrOzsbSAw50zxiGkgXPBNq6C2nLBMfYAw8TAw4TCM9VDcKklY8GCMvQzwn0CYbHihrLC3qGzMLSzsbWBgfJzwqGzgLYzwn0BhKGAw4GDw5VDgvZDc9LmMuVlIbuAguGBg9HzgvYigrLCML2zxmGDgHLcI8VigvUDhj5ig5HBwuGzNjVBsb0AguGzMLSzsbIyxnLBMfTzsdIGjqGA2vIywiTy2fZzsbKyxnOzxmGyMvJB21LihvUzgvYC2nVCMvZlGOklY8GrxzLCNKGzxHLy3v0ywjSzsbZDgvWig11C3qGC2L0igLUC2LKzsbHihn0zxaOiI4UlIiSicGPid0+ihSG4OcMih0PigjSB2nRlIbuAguklY8GDgL0BguGAxmGysbWBgfPBI1fBMDSAxnOigrLC2nYAxb0Aw9Uig9MihrOzsbNCM91CdSGDgHLihn0zxbZigLUC2LKzsbHCMuklY8GDgHLigLTCgXLBwvUDgf0Aw9UlIbhCM91CcbIEsbPBNrLBNqGkfnLDhvWic8Grw50zxiGlYbby3qGlYbbC3nLCNqGB3iklY8GD2HHDgv2zxiGCMvHzhmGD2vSBcKG4Ocuig9UzsbIBg9JAYbWzxiGBg9NAwnHBcbJAhvUAY4kcMz1BMn0Aw9UihrLC3rFEw91CL9Uyw1Lx2HLCMuOksb7cIaGC3rLCcGIu2vLzcbHigTUB3DUihvZzxiGDMLHiercic8GqvbjigzPEhr1CMvZigzYB20Gx2HLBhbLCNmViIWGkcKGpt4GEWOGicaGlY8GicaGD2LWzv9LmMvFDxnLCNmOktSkicaGic8VicaGihvZzxjFAwqGpsbZzwvKx3vZzxiOj2fSAwnLqgv4yw1WBguUy29TjYWGj3nLy3jLDcCPoWOGih0PoWOkicbZDgvWkcjtAwDUigLUigfZihrOzsbZzwvKzwqGDxnLCIiSicGPid0+ihSkicaGigDVDg8Oj2H0DhbZoI8VEw91CI1HChaUDgvZDc9SB2DPBICPoWOGicaGlY8GicaGzMLSBcHNzxrcEuXHyMvSkcDfBwfPBcCPlcaNywXPy2vazxHHBxbSzs5JB20NktSkicaGic8VicaGigzPBgWOz2v0qNLmywjLBcGNugfZC3DVCMqNksWGj3nLy3jLDcCPoWOGicaGlY8GicaGy2XPy2SOz2v0qNLsB2XLkcDIDxr0B24Nlcb7BMfTztOGj0XVzYbPBID9ksK7cIaGFsK7cGOGihn0zxaOiKfZC2vYDcb0AguGzgfZAgjVyxjKihnOB3DZihrOzsbZAwDUzwqTAw4GDxnLCIiSicGPid0+ihSkicaGic8VicaGigfZC2vYDfvYBcGNl2rHC2HIB2fYzcCPoWOGicaGlY8GicaGyxnZzxj0vgv4DcHNzxrcEvjVBguOj2HLywrPBMCNksWGj1DLBgnVBwuSiefSAwnLjYK7cIaGicaVlYaGicbJB3vUDca9igrIuxvLCNKOj1nftevdvcbJB3vUDcGQksbguK9nihvZzxjZifDirvjfigfJDgL2zsa9ihrYDwuNktSkicaGic8VicaGigfZC2vYDfrYDwuOy291BNqGpIaWlcaNzxHWzwn0zwqGyxqGBgvHC3qGB25LigfJDgL2zsb1C2vYjYK7cIaGFsK7cN0k','C3rYAw5NAwz5'];_0x20f8=function(){return _0x84cdc4;};return _0x20f8();}import{join}from'path';var templates={'scenarioTemplate':_0xe93819(0x8b),'agentsMd':_0xe93819(0x89),'claudeMdBody':_0xe93819(0x9e),'examples':{'01-smoke.js':_0xe93819(0xa3),'02-form-fill.js':'//\x20Example\x2002\x20—\x20fill\x20an\x20input\x20+\x20assert\x20the\x20app\x20reacted.\x0a//\x0a//\x20Against\x20playground.unotest.com/scenarios/big-table.\x20Demonstrates\x20getByRole\x0a//\x20for\x20a\x20labelled\x20input,\x20typed\x20input\x20via\x20fill(),\x20and\x20a\x20locator\x20method-chain\x0a//\x20(getByRole(\x27row\x27).filter({hasText}).first())\x20in\x20an\x20assertion.\x0a//\x20Run\x20with:\x20\x20npx\x20@unotest/web\x20e2e\x20examples/02-form-fill\x0a\x0afunction\x20test_form_fill_happy_path()\x20{\x0a\x20\x20step(\x22Filter\x20the\x20Big\x20Table\x20by\x20a\x20name\x22,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20goto(\x27/scenarios/big-table\x27);\x0a\x20\x20\x20\x20fill(getByRole(\x27textbox\x27,\x20{name:\x20\x27Filter\x20by\x20name\x27}),\x20\x27Uma\x20Quinn\x27);\x0a\x20\x20});\x0a\x0a\x20\x20step(\x22Filtering\x20reveals\x20the\x20Clear\x20filter\x20control\x20and\x20matching\x20rows\x22,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20assertVisible(getByRole(\x27button\x27,\x20{name:\x20\x27Clear\x20filter\x27}));\x0a\x20\x20\x20\x20assertVisible(getByRole(\x27row\x27).filter({hasText:\x20\x27Uma\x20Quinn\x27}).first());\x0a\x20\x20});\x0a}\x0a'},'secretsExample':_0xe93819(0x9a),'envExample':_0xe93819(0x91)};function unotestConfigMjs(_0x27a254){const _0x4e3937={_0x3855d2:0x8c,_0x4ce11c:0x96},_0x479397=_0xe93819,_0x5ed29c=_0x27a254===void 0x0?_0x479397(0x95):_0x479397(0x98)+JSON[_0x479397(_0x4e3937._0x3855d2)](_0x27a254)+',';return _0x479397(_0x4e3937._0x4ce11c)+_0x5ed29c+'\x0a\x20\x20//\x20viewer:\x20{\x0a\x20\x20//\x20\x20\x20port:\x205173,\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20default:\x20random\x20free\x20port\x0a\x20\x20//\x20\x20\x20browser:\x20true,\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20default:\x20true\x20(auto-open\x20on\x20`viewer`)\x0a\x20\x20//\x20},\x0a};\x0a';}__name(unotestConfigMjs,_0xe93819(0x8e));async function scaffoldWorkspace(_0x29cc37,_0x7d12be={}){const _0x337c21={_0x14a4c5:0x94,_0x55e50a:0x9d,_0x4e86cd:0x9f,_0x52e117:0x8a,_0x2bea52:0xa1,_0x1eebe2:0xa1,_0x436de2:0xa2,_0x1680d0:0xa2},_0x4c224c=_0xe93819,_0x2cbbc6=[],_0x1e59a1=[];await mkdir(join(_0x29cc37,_0x4c224c(0x94),_0x4c224c(0x9f),'examples'),{'recursive':!![]}),await mkdir(join(_0x29cc37,_0x4c224c(0x94),_0x4c224c(0x9f),_0x4c224c(0x97)),{'recursive':!![]});const _0x50831c=[{'rel':_0x4c224c(0x99),'content':unotestConfigMjs(_0x7d12be['channel'])},{'rel':join(_0x4c224c(_0x337c21._0x14a4c5),'.env'),'content':templates[_0x4c224c(_0x337c21._0x55e50a)]},{'rel':join(_0x4c224c(0x94),_0x4c224c(_0x337c21._0x4e86cd),_0x4c224c(_0x337c21._0x52e117),_0x4c224c(_0x337c21._0x2bea52)),'content':templates[_0x4c224c(_0x337c21._0x52e117)][_0x4c224c(_0x337c21._0x1eebe2)]}];for(const {rel:_0xf7e9f6,content:_0x4b218a}of _0x50831c){const _0x3a0841=join(_0x29cc37,_0xf7e9f6);if(existsSync(_0x3a0841)){_0x1e59a1[_0x4c224c(_0x337c21._0x436de2)](_0xf7e9f6);continue;}await writeFile(_0x3a0841,_0x4b218a),_0x2cbbc6[_0x4c224c(_0x337c21._0x1680d0)](_0xf7e9f6);}return{'projectRoot':_0x29cc37,'created':_0x2cbbc6,'skipped':_0x1e59a1};}__name(scaffoldWorkspace,'scaffoldWorkspace');export{scaffoldWorkspace};
1
+ const _0x359628=_0x1987;(function(_0x583a0a,_0xa33322){const _0x5614c7={_0x5e3e28:0x1eb,_0x3a7bab:0x202,_0x2f6f0c:0x1ee,_0xd32779:0x1f3},_0x87851d=_0x1987,_0x4eef28=_0x583a0a();while(!![]){try{const _0x485172=-parseInt(_0x87851d(0x1fd))/0x1*(-parseInt(_0x87851d(_0x5614c7._0x5e3e28))/0x2)+-parseInt(_0x87851d(0x1e7))/0x3+-parseInt(_0x87851d(_0x5614c7._0x3a7bab))/0x4*(parseInt(_0x87851d(0x1fa))/0x5)+parseInt(_0x87851d(_0x5614c7._0x2f6f0c))/0x6*(parseInt(_0x87851d(0x1ff))/0x7)+parseInt(_0x87851d(0x1f8))/0x8*(-parseInt(_0x87851d(_0x5614c7._0xd32779))/0x9)+-parseInt(_0x87851d(0x201))/0xa+-parseInt(_0x87851d(0x1f4))/0xb*(-parseInt(_0x87851d(0x1f2))/0xc);if(_0x485172===_0xa33322)break;else _0x4eef28['push'](_0x4eef28['shift']());}catch(_0x54ebd9){_0x4eef28['push'](_0x4eef28['shift']());}}}(_0x1dda,0x4b974));var __defProp=Object['defineProperty'],__name=(_0x3cb329,_0x176ad8)=>__defProp(_0x3cb329,_0x359628(0x1f5),{'value':_0x176ad8,'configurable':!![]});import{mkdir,writeFile}from'fs/promises';import{existsSync}from'fs';import{join}from'path';var templates={'scenarioTemplate':'//\x20Move\x20+\x20rename\x20this\x20file\x20to\x20<feature>/<your_name>.js\x20(e.g.\x0a//\x20auth/login.js)\x20and\x20the\x20function\x20below\x20to\x20test_<your_name>().\x20Scenarios\x20live\x0a//\x20in\x20feature\x20subfolders,\x20NOT\x20the\x20e2e\x20root\x20—\x20the\x20linter\x20(lint:scenario-in-root)\x0a//\x20rejects\x20a\x20test\x20file\x20placed\x20directly\x20in\x20unotest/e2e/.\x20The\x20loader\x20derives\x20the\x0a//\x20entry\x20name\x20from\x20the\x20file\x20basename\x20—\x20kebab-case\x20dashes\x20become\x20underscores.\x0a\x0a//\x20Every\x20executable\x20step\x20must\x20sit\x20inside\x20a\x20step(\x22...\x22,\x20()\x20=>\x20{\x20…\x20})\x20block.\x20The\x0a//\x20title\x20is\x20a\x20plain-English\x20description\x20of\x20the\x20group;\x20the\x20steps\x20inside\x20are\x0a//\x20the\x20implementation.\x20Group\x20by\x20intent\x20(Setup\x20/\x20Enter\x20/\x20Act\x20/\x20Assert\x20or\x0a//\x20whatever\x20reads\x20well)\x20—\x20one\x20block\x20per\x20logical\x20chunk.\x0a\x0afunction\x20test_your_name_here()\x20{\x0a\x20\x20step(\x22Seed\x20a\x20known\x20user\x20via\x20DB\x20/\x20API\x20fixtures\x20from\x20_helpers/\x22,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20//\x20\x20\x20\x20wipe_e2e_users();\x0a\x20\x20\x20\x20//\x20\x20\x20\x20user_id\x20=\x20seed_user(\x27alice@example.com\x27,\x20\x27secret\x27);\x0a\x20\x20});\x0a\x0a\x20\x20step(\x22Sign\x20in\x20as\x20the\x20seeded\x20user\x22,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20goto(\x27https://your-app.test/login\x27);\x0a\x20\x20\x20\x20//\x20\x20\x20\x20fill(getByLabel(\x27Email\x27),\x20\x27alice@example.com\x27);\x0a\x20\x20\x20\x20//\x20\x20\x20\x20fill(getByLabel(\x27Password\x27),\x20\x27secret\x27);\x0a\x20\x20\x20\x20//\x20\x20\x20\x20click(getByRole(\x27button\x27,\x20{name:\x20\x27Log\x20in\x27}));\x0a\x20\x20});\x0a\x0a\x20\x20step(\x22Assert\x20the\x20dashboard\x20shows\x20the\x20signed-in\x20user\x22,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20//\x20\x20\x20\x20assertUrl(\x27/dashboard\x27);\x0a\x20\x20\x20\x20//\x20\x20\x20\x20assertText(getByRole(\x27heading\x27),\x20\x27Welcome,\x20Alice\x27);\x0a\x20\x20\x20\x20//\x20\x20\x20\x20count\x20=\x20dbQuery(\x27SELECT\x20count(*)\x20FROM\x20users\x20WHERE\x20active\x20=\x20true\x27);\x0a\x20\x20\x20\x20//\x20\x20\x20\x20assertTrue(count\x20>\x200,\x20\x27expected\x20at\x20least\x20one\x20active\x20user\x27);\x0a\x20\x20});\x0a}\x0a','agentsMd':_0x359628(0x1f0),'claudeMdBody':_0x359628(0x204),'examples':{'01-smoke.js':'//\x20Example\x2001\x20—\x20smoke:\x20navigate\x20+\x20click\x20+\x20URL\x20assertion.\x0a//\x0a//\x20The\x20minimal\x20three-step\x20pattern.\x20Hits\x20playground.unotest.com\x20so\x20no\x20project\x0a//\x20setup\x20is\x20needed.\x20Run\x20with:\x20\x20npx\x20@unotest/web\x20e2e\x20examples/01-smoke\x0a\x0afunction\x20test_smoke_playground()\x20{\x0a\x20\x20step(\x22Open\x20the\x20Big\x20Table\x20scenario\x20from\x20the\x20playground\x20index\x22,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20goto(\x27/\x27);\x0a\x20\x20\x20\x20click(getByRole(\x27link\x27,\x20{name:\x20\x27Big\x20Table\x27,\x20exact:\x20true}));\x0a\x20\x20\x20\x20assertUrl(\x27/scenarios/big-table\x27);\x0a\x20\x20});\x0a}\x0a','02-form-fill.js':_0x359628(0x200)},'secretsExample':'#\x20unotest-web\x20—\x20secret\x20scenario\x20variables.\x20Created\x20by\x20`init`,\x20gitignored.\x0a#\x0a#\x20Same\x20KEY=VALUE\x20format\x20as\x20unotest/.env,\x20but\x20values\x20here\x20are\x20treated\x20as\x0a#\x20SECRET:\x20they\x20are\x20masked\x20(shown\x20as\x20`‹secret:KEY›`)\x20anywhere\x20the\x20runner\x20or\x0a#\x20MCP\x20debug\x20log\x20would\x20otherwise\x20write\x20them\x20—\x20fill()\x20values,\x20URLs,\x20evaluate\x0a#\x20strings.\x20Reference\x20them\x20in\x20a\x20scenario\x20by\x20their\x20bare\x20UPPER_SNAKE\x20name,\x20the\x0a#\x20same\x20way\x20as\x20.env\x20variables:\x0a#\x0a#\x20\x20\x20fill(getByLabel(\x27Password\x27),\x20PASSWORD);\x0a#\x0a#\x20Secrets\x20are\x20NOT\x20exported\x20to\x20subprocesses\x20(shell())\x20—\x20they\x20stay\x20in\x20the\x0a#\x20variable\x20store.\x20Put\x20non-secret\x20values\x20(URLs,\x20emails,\x20ids)\x20in\x20unotest/.env.\x0a#\x0a#\x20FLEET_EXAMPLE\x0aLOGIN=\x0aPASSWORD=\x0aTOKEN=\x0a','envExample':_0x359628(0x1fe)};function unotestConfigMjs(_0x3fe31c){const _0x58972a={_0xf5ad89:0x1ef,_0x5ae6de:0x1e9},_0x49605b=_0x359628,_0x25fb1c=_0x3fe31c===void 0x0?_0x49605b(_0x58972a._0xf5ad89):'\x20\x20channel:\x20'+JSON[_0x49605b(0x1f1)](_0x3fe31c)+',';return'//\x20@unotest/web\x20project\x20config.\x20All\x20fields\x20are\x20optional\x20—\x20defaults\x20apply\x0a//\x20when\x20omitted.\x0a//\x0a//\x20Saved\x20as\x20.mjs\x20so\x20the\x20runtime\x20loads\x20it\x20as\x20ESM\x20regardless\x20of\x20the\x20project\x27s\x0a//\x20package.json\x20\x22type\x22\x20field.\x20For\x20IDE\x20autocomplete,\x20type-import\x20the\x20schema:\x0a//\x0a//\x20\x20\x20/**\x20@type\x20{Partial<import(\x27@unotest/web\x27).UnotestConfig>}\x20*/\x0a//\x20\x20\x20export\x20default\x20{\x20baseUrl:\x20\x27https://your-app.test\x27\x20};\x0a\x0a/**\x20@type\x20{Partial<import(\x27@unotest/web\x27).UnotestConfig>}\x20*/\x0aexport\x20default\x20{\x0a\x20\x20//\x20baseUrl:\x20\x27https://your-app.test\x27,\x0a\x20\x20//\x20browsers:\x20[\x27chromium\x27,\x20\x27firefox\x27,\x20\x27webkit\x27],\x20\x20//\x20CI\x20override\x0a\x20\x20//\x20viewport:\x20{\x20width:\x201280,\x20height:\x20720\x20},\x0a\x20\x20//\x20retry:\x20{\x20count:\x201,\x20on:\x20[\x27transient\x27]\x20},\x20\x20\x20\x20\x20\x20\x20\x20//\x20CI\x20override\x0a\x20\x20//\x20storageState:\x20\x27.unotest/cache/auth.json\x27,\x20\x20\x20\x20\x20\x20//\x20see\x20helpers\x0a'+_0x25fb1c+_0x49605b(_0x58972a._0x5ae6de);}function _0x1987(_0xc68abd,_0x4cf71c){_0xc68abd=_0xc68abd-0x1e7;const _0x1dda49=_0x1dda();let _0x198715=_0x1dda49[_0xc68abd];if(_0x1987['SCphKi']===undefined){var _0x1af656=function(_0x27b556){const _0x191e5d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3cb329='',_0x176ad8='';for(let _0x3fe31c=0x0,_0x25fb1c,_0x12cfc2,_0xe6a663=0x0;_0x12cfc2=_0x27b556['charAt'](_0xe6a663++);~_0x12cfc2&&(_0x25fb1c=_0x3fe31c%0x4?_0x25fb1c*0x40+_0x12cfc2:_0x12cfc2,_0x3fe31c++%0x4)?_0x3cb329+=String['fromCharCode'](0xff&_0x25fb1c>>(-0x2*_0x3fe31c&0x6)):0x0){_0x12cfc2=_0x191e5d['indexOf'](_0x12cfc2);}for(let _0x2901ee=0x0,_0x44d515=_0x3cb329['length'];_0x2901ee<_0x44d515;_0x2901ee++){_0x176ad8+='%'+('00'+_0x3cb329['charCodeAt'](_0x2901ee)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x176ad8);};_0x1987['XExIzL']=_0x1af656,_0x1987['Awgbul']={},_0x1987['SCphKi']=!![];}const _0xb6ba43=_0x1dda49[0x0],_0x56a8bc=_0xc68abd+_0xb6ba43,_0x161460=_0x1987['Awgbul'][_0x56a8bc];return!_0x161460?(_0x198715=_0x1987['XExIzL'](_0x198715),_0x1987['Awgbul'][_0x56a8bc]=_0x198715):_0x198715=_0x161460,_0x198715;}__name(unotestConfigMjs,_0x359628(0x203));async function scaffoldWorkspace(_0x12cfc2,_0xe6a663={}){const _0x188de6={_0x381f5a:0x1fb,_0x57068d:0x1fb,_0x1befa6:0x1f9,_0x11c1a3:0x1fb,_0x282aa2:0x1ed,_0x23eeec:0x1fc},_0x4c24d5=_0x359628,_0x2901ee=[],_0x44d515=[];await mkdir(join(_0x12cfc2,_0x4c24d5(0x1f9),_0x4c24d5(_0x188de6._0x381f5a),_0x4c24d5(0x1f6)),{'recursive':!![]}),await mkdir(join(_0x12cfc2,_0x4c24d5(0x1f9),_0x4c24d5(_0x188de6._0x57068d),'_helpers'),{'recursive':!![]});const _0x5e19bf=[{'rel':'unotest.config.mjs','content':unotestConfigMjs(_0xe6a663[_0x4c24d5(0x1e8)])},{'rel':join(_0x4c24d5(_0x188de6._0x1befa6),_0x4c24d5(0x1ea)),'content':templates[_0x4c24d5(0x1ec)]},{'rel':join('unotest',_0x4c24d5(_0x188de6._0x11c1a3),_0x4c24d5(0x1f6),'01-smoke.js'),'content':templates['examples'][_0x4c24d5(_0x188de6._0x282aa2)]}];for(const {rel:_0x2f05f3,content:_0x2d8864}of _0x5e19bf){const _0x5e6217=join(_0x12cfc2,_0x2f05f3);if(existsSync(_0x5e6217)){_0x44d515[_0x4c24d5(_0x188de6._0x23eeec)](_0x2f05f3);continue;}await writeFile(_0x5e6217,_0x2d8864),_0x2901ee[_0x4c24d5(_0x188de6._0x23eeec)](_0x2f05f3);}return{'projectRoot':_0x12cfc2,'created':_0x2901ee,'skipped':_0x44d515};}__name(scaffoldWorkspace,_0x359628(0x1f7));export{scaffoldWorkspace};function _0x1dda(){const _0x4c00c8=['Dw5VDgvZDa','mteWuwH0Cuv6','ztjL','ChvZAa','mJe1ouXNCfzvvG','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','mtK5nZG3wvnHtLjN','lY8GrxHHBxbSzsaWmIdIGjqGzMLSBcbHBIbPBNb1DcaRigfZC2vYDcb0AguGyxbWihjLywn0zwqUcI8VcI8ViefNywLUC3qGCgXHEwDYB3vUzc51BM90zxn0lMnVBs9Zy2vUyxjPB3mVyMLNlxrHyMXLlIbezw1VBNn0CMf0zxmGz2v0qNLsB2XLcI8VigzVCIbHigXHyMvSBgvKigLUChv0lcb0ExbLzcbPBNb1Dcb2AweGzMLSBcGPlcbHBMqGysbSB2nHDg9Yig1LDgHVzc1JAgfPBGOVlYaOz2v0qNLsB2XLkcDYB3CNks5MAwX0zxiOE2HHC1rLEhr9ks5MAxjZDcGPksbPBIbHBIbHC3nLCNrPB24UcI8Vifj1BIb3AxrOoIaGBNb4ieb1BM90zxn0l3DLyIbLmMuGzxHHBxbSzxmVmdiTzM9YBs1MAwXScGPMDw5JDgLVBIb0zxn0x2zVCM1FzMLSBf9OyxbWEv9WyxrOkcKGEWOGihn0zxaOiKzPBhrLCIb0AguGqMLNifrHyMXLigj5igeGBMfTzsiSicGPid0+ihSkicaGigDVDg8OjY9Zy2vUyxjPB3mVyMLNlxrHyMXLjYK7cIaGicbMAwXSkgDLDej5uM9SzsGNDgv4DgjVEcCSihTUyw1LoIaNrMLSDgvYigj5ig5HBwuNFsKSicDvBweGuxvPBM4NktSkicb9ktSkcIaGC3rLCcGIrMLSDgvYAw5NihjLDMvHBhmGDgHLienSzwfYigzPBhrLCIbJB250CM9SigfUzcbTyxrJAgLUzYbYB3DZiIWGkcKGpt4GEWOGicaGyxnZzxj0vMLZAwjSzsHNzxrcEvjVBguOj2j1DhrVBICSihTUyw1LoIaNq2XLyxiGzMLSDgvYj30PktSkicaGigfZC2vYDfzPC2LIBguOz2v0qNLsB2XLkcDYB3CNks5MAwX0zxiOE2HHC1rLEhq6icDvBweGuxvPBM4NFsKUzMLYC3qOksK7cIaGFsK7cN0k','ntyZnJG0mhfwwhHIDG','mteXnte2yNvyvLbP','Dw5VDgvZDenVBMzPz01QCW','iYmGrtjfihrLC3rPBMCGD2L0AcbaDw5VDgvZDc93zwikcKbbr0vovfmUBwqkcKzVCIbHBNKGCMvXDwvZDcb0BYb3CML0zsWGCMvJB3jKlcbVCIbYDw4Gyw4Gzw5KlxrVlwvUzcb0zxn0lcbVCgvUihrOzqPGD3jPDguTztjLlxrLC3rGihnRAwXSicHVCIbYDw4Gyc93CML0zs1LmMuTDgvZDgaPigfUzcbKCML2zsb0AguGyNjVD3nLCIb0AhjVDwDOcNrOzsbGDw5VDgvZDc13zwjGie1ducb0B29SCYaOyg5LD19JB250zxH0ycdIHPiGygv4CgXVCMvFC3rLCgaG4OAsigbNzxrFCgfNzv9ZBMfWC2HVDgak4OAsigbYDw5FDgvZDgaPlIbeBYbUB3qGAgfUzc1HDxrOB3iGDgvZDhmGyMXPBMqGB3iGBwfWihrOzsbWCM9Qzwn0ihDPDgGkygzPBMrGl2bSC2aVygf3A2aG4OcuihrOzsbZA2LSBcDZifbOyxnLidaGBgLZDhmGDgHLigzPBgvZihrVihjLywqU','mJqZnJuXz1LPzMHz','y2HHBM5LBa','cIaGlY8GDMLLD2vYoIb7cIaGlY8GicbWB3j0oIa1mtCZlcaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGic8VigrLzMf1Bhq6ihjHBMrVBsbMCMvLihbVCNqkicaVlYaGigjYB3DZzxi6ihrYDwuSicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GzgvMyxvSDdOGDhj1zsaOyxv0BY1VCgvUig9Uigb2Awv3zxjGkqOGic8Vih0ScN07cG','lMvUDG','mJKYzKHtDK1g','zw52rxHHBxbSzq','mdeTC21VA2uUANm','mti2C05Vzg1P','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','C3rYAw5NAwz5','mZzKwwHADuW','mZy3mtG4m3fbDvbfvG','mZG5mtmYn2jTuNjlrW','BMfTzq','zxHHBxbSzxm','C2nHzMzVBgrxB3jRC3bHy2u','oeT6A3zptG'];_0x1dda=function(){return _0x4c00c8;};return _0x1dda();}
@@ -1 +1 @@
1
- function _0x1303(){var _0x28eaf4=['C2vYDMuTzML4DhvYztOGy2fUBM90igXVy2f0zsbMAxH0DxjLihnLCNzLCIbLBNrYEs4GvhjPzwq6cG','rgLKihLVDsbWDwjSAxnOihDPDgHVDxqGzxHHBxbSzxmVzML4DhvYzxmVpWO','m01tuNfNAq','D3jPDgu','mtq2nJi3mffRwgXkrG','mJu3nJqZmKLxCwfMwG','mZC3ntu2AePmuwfi','zxHLy1bHDgG','lI4VlI4VzxHHBxbSzxmVzML4DhvYzxmVyNjLywSTzML4lwfWCc9Zzxj2zs5TANm','mtroCNf2u1i','zMLUza','C3rKzxjY','ode5odzmruTIy3i','BwfW','mtC3nZKZnJbyvw5fwKC','zxHPDa','nM9qvufiDq','AM9PBG','odaYodC2nufSA3bkqG','mJGWmdeXmerWtLrLEG','C2XPy2u'];_0x1303=function(){return _0x28eaf4;};return _0x1303();}var _0x58651e=_0x3d94;(function(_0x431d6b,_0x6d1318){var _0x5b2c86={_0x1cdd31:0x208,_0x476103:0x201,_0xb41d2f:0x1f7,_0x82f54b:0x1f5,_0x1b2bd5:0x204,_0x3928f0:0x1fa,_0x43684c:0x1f6,_0x1251cc:0x203,_0x34c995:0x1ff},_0x73ba99=_0x3d94,_0x2bcd7d=_0x431d6b();while(!![]){try{var _0x104839=-parseInt(_0x73ba99(_0x5b2c86._0x1cdd31))/0x1*(-parseInt(_0x73ba99(0x1fd))/0x2)+-parseInt(_0x73ba99(_0x5b2c86._0x476103))/0x3*(parseInt(_0x73ba99(_0x5b2c86._0xb41d2f))/0x4)+parseInt(_0x73ba99(_0x5b2c86._0x82f54b))/0x5+-parseInt(_0x73ba99(_0x5b2c86._0x1b2bd5))/0x6*(parseInt(_0x73ba99(_0x5b2c86._0x3928f0))/0x7)+parseInt(_0x73ba99(_0x5b2c86._0x43684c))/0x8+-parseInt(_0x73ba99(_0x5b2c86._0x1251cc))/0x9+parseInt(_0x73ba99(_0x5b2c86._0x34c995))/0xa;if(_0x104839===_0x6d1318)break;else _0x2bcd7d['push'](_0x2bcd7d['shift']());}catch(_0x11c3c0){_0x2bcd7d['push'](_0x2bcd7d['shift']());}}}(_0x1303,0x7a8e6));import{fileURLToPath}from'url';import{dirname,resolve}from'path';import{spawn}from'child_process';import{existsSync}from'fs';var here=dirname(fileURLToPath(import.meta.url)),candidates=[resolve(here,_0x58651e(0x1f9)),resolve(here,'../../../examples/fixtures/break-fix-app/serve.mjs')],serverEntry=candidates[_0x58651e(0x1fb)](_0xbe0779=>existsSync(_0xbe0779));!serverEntry&&(process[_0x58651e(0x1fc)][_0x58651e(0x1f4)](_0x58651e(0x206)+candidates[_0x58651e(0x1fe)](_0x2cb00a=>'\x20\x20'+_0x2cb00a+'\x0a')[_0x58651e(0x202)]('')+_0x58651e(0x207)),process[_0x58651e(0x200)](0x1));var child=spawn(process[_0x58651e(0x1f8)],[serverEntry,...process['argv'][_0x58651e(0x205)](0x2)],{'stdio':'inherit'});function _0x3d94(_0x4d8882,_0x4ef9db){_0x4d8882=_0x4d8882-0x1f4;var _0x1303f4=_0x1303();var _0x3d9419=_0x1303f4[_0x4d8882];if(_0x3d94['aVNELQ']===undefined){var _0x395848=function(_0x127116){var _0x26f70b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0xbe0779='',_0x2cb00a='';for(var _0x4741d0=0x0,_0x2a9a04,_0x35875a,_0x26b932=0x0;_0x35875a=_0x127116['charAt'](_0x26b932++);~_0x35875a&&(_0x2a9a04=_0x4741d0%0x4?_0x2a9a04*0x40+_0x35875a:_0x35875a,_0x4741d0++%0x4)?_0xbe0779+=String['fromCharCode'](0xff&_0x2a9a04>>(-0x2*_0x4741d0&0x6)):0x0){_0x35875a=_0x26f70b['indexOf'](_0x35875a);}for(var _0x3d9d76=0x0,_0x35ce26=_0xbe0779['length'];_0x3d9d76<_0x35ce26;_0x3d9d76++){_0x2cb00a+='%'+('00'+_0xbe0779['charCodeAt'](_0x3d9d76)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2cb00a);};_0x3d94['BZjJxz']=_0x395848,_0x3d94['PBmsRF']={},_0x3d94['aVNELQ']=!![];}var _0x748574=_0x1303f4[0x0],_0xf44620=_0x4d8882+_0x748574,_0x1dde45=_0x3d94['PBmsRF'][_0xf44620];return!_0x1dde45?(_0x3d9419=_0x3d94['BZjJxz'](_0x3d9419),_0x3d94['PBmsRF'][_0xf44620]=_0x3d9419):_0x3d9419=_0x1dde45,_0x3d9419;}child['on']('exit',_0x4741d0=>process[_0x58651e(0x200)](_0x4741d0??0x1));
1
+ var _0x42f8f9=_0x546c;(function(_0x243460,_0x5064f5){var _0x1cfc0f={_0x435604:0xb2,_0x1f773a:0xb5,_0x9d8708:0xbe,_0x110204:0xc2,_0x52bb70:0xb3,_0x481a33:0xb1},_0x30d8f9=_0x546c,_0x564eaf=_0x243460();while(!![]){try{var _0x6fbd07=-parseInt(_0x30d8f9(_0x1cfc0f._0x435604))/0x1*(parseInt(_0x30d8f9(0xc1))/0x2)+-parseInt(_0x30d8f9(_0x1cfc0f._0x1f773a))/0x3+parseInt(_0x30d8f9(_0x1cfc0f._0x9d8708))/0x4+-parseInt(_0x30d8f9(_0x1cfc0f._0x110204))/0x5+parseInt(_0x30d8f9(0xc0))/0x6*(-parseInt(_0x30d8f9(_0x1cfc0f._0x52bb70))/0x7)+parseInt(_0x30d8f9(_0x1cfc0f._0x481a33))/0x8+parseInt(_0x30d8f9(0xbd))/0x9;if(_0x6fbd07===_0x5064f5)break;else _0x564eaf['push'](_0x564eaf['shift']());}catch(_0x2e44f6){_0x564eaf['push'](_0x564eaf['shift']());}}}(_0x556a,0x4122e));import{fileURLToPath}from'url';import{dirname,resolve}from'path';function _0x546c(_0x1bcfcb,_0x17428f){_0x1bcfcb=_0x1bcfcb-0xaf;var _0x556aea=_0x556a();var _0x546c70=_0x556aea[_0x1bcfcb];if(_0x546c['prpaCV']===undefined){var _0x46893a=function(_0x3f2507){var _0x1ddf5b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x2dc5e5='',_0x2a0ec3='';for(var _0x5c3a1b=0x0,_0x11aeaf,_0x230607,_0x486a33=0x0;_0x230607=_0x3f2507['charAt'](_0x486a33++);~_0x230607&&(_0x11aeaf=_0x5c3a1b%0x4?_0x11aeaf*0x40+_0x230607:_0x230607,_0x5c3a1b++%0x4)?_0x2dc5e5+=String['fromCharCode'](0xff&_0x11aeaf>>(-0x2*_0x5c3a1b&0x6)):0x0){_0x230607=_0x1ddf5b['indexOf'](_0x230607);}for(var _0x440b70=0x0,_0x265c65=_0x2dc5e5['length'];_0x440b70<_0x265c65;_0x440b70++){_0x2a0ec3+='%'+('00'+_0x2dc5e5['charCodeAt'](_0x440b70)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2a0ec3);};_0x546c['ckkhZX']=_0x46893a,_0x546c['FxmrFp']={},_0x546c['prpaCV']=!![];}var _0x40c501=_0x556aea[0x0],_0x5c5d07=_0x1bcfcb+_0x40c501,_0x6a8b10=_0x546c['FxmrFp'][_0x5c5d07];return!_0x6a8b10?(_0x546c70=_0x546c['ckkhZX'](_0x546c70),_0x546c['FxmrFp'][_0x5c5d07]=_0x546c70):_0x546c70=_0x6a8b10,_0x546c70;}import{spawn}from'child_process';function _0x556a(){var _0x4d9ade=['zxHLy1bHDgG','lI4VlI4VzxHHBxbSzxmVzML4DhvYzxmVyNjLywSTzML4lwfWCc9Zzxj2zs5TANm','zMLUza','C3rKzxjY','AM9PBG','rgLKihLVDsbWDwjSAxnOihDPDgHVDxqGzxHHBxbSzxmVzML4DhvYzxmVpWO','nZuWoty2m0Lhq0rquW','oteXmJyWvKruyLnk','zxHPDa','mtKYmfzprNLQDa','mJe4mdz2wMrpBMK','ntiXotq1uKj4swne','C2vYDMuTzML4DhvYztOGy2fUBM90igXVy2f0zsbMAxH0DxjLihnLCNzLCIbLBNrYEs4GvhjPzwq6cG','lI4VlI4VlI4VzxHHBxbSzxmVzML4DhvYzxmVyNjLywSTzML4lwfWCc9Zzxj2zs5TANm','mJq3oda0ofbyCgjXEq','mtncELrSvM8','odiYnvH3wK9XAW','D3jPDgu','mtq0ote1nNHmt2zzqW','Aw5OzxjPDa'];_0x556a=function(){return _0x4d9ade;};return _0x556a();}import{existsSync}from'fs';var here=dirname(fileURLToPath(import.meta.url)),candidates=[resolve(here,_0x42f8f9(0xb8)),resolve(here,_0x42f8f9(0xb0))],serverEntry=candidates[_0x42f8f9(0xb9)](_0x2dc5e5=>existsSync(_0x2dc5e5));!serverEntry&&(process[_0x42f8f9(0xba)][_0x42f8f9(0xb4)](_0x42f8f9(0xaf)+candidates['map'](_0x2a0ec3=>'\x20\x20'+_0x2a0ec3+'\x0a')[_0x42f8f9(0xbb)]('')+_0x42f8f9(0xbc)),process[_0x42f8f9(0xbf)](0x1));var child=spawn(process[_0x42f8f9(0xb7)],[serverEntry,...process['argv']['slice'](0x2)],{'stdio':_0x42f8f9(0xb6)});child['on'](_0x42f8f9(0xbf),_0x5c3a1b=>process[_0x42f8f9(0xbf)](_0x5c3a1b??0x1));
@@ -1 +1 @@
1
- const _0x28effa=_0x5df4;(function(_0x53bb20,_0x3d3787){const _0x39d30c={_0x32b890:0x200,_0x11cfbf:0x1a9,_0x43a5b9:0x1c5,_0x2e21d0:0x1e3},_0x2f15dc=_0x5df4,_0x3af074=_0x53bb20();while(!![]){try{const _0x32564a=-parseInt(_0x2f15dc(_0x39d30c._0x32b890))/0x1+-parseInt(_0x2f15dc(_0x39d30c._0x11cfbf))/0x2+-parseInt(_0x2f15dc(0x1ca))/0x3+parseInt(_0x2f15dc(_0x39d30c._0x43a5b9))/0x4*(-parseInt(_0x2f15dc(0x1e6))/0x5)+parseInt(_0x2f15dc(0x1b9))/0x6+parseInt(_0x2f15dc(_0x39d30c._0x2e21d0))/0x7+-parseInt(_0x2f15dc(0x1b3))/0x8*(-parseInt(_0x2f15dc(0x1e1))/0x9);if(_0x32564a===_0x3d3787)break;else _0x3af074['push'](_0x3af074['shift']());}catch(_0x5cd5a7){_0x3af074['push'](_0x3af074['shift']());}}}(_0x2cc6,0x5706b));var __defProp=Object[_0x28effa(0x1ed)],__name=(_0x28c9b6,_0x13939a)=>__defProp(_0x28c9b6,_0x28effa(0x1ef),{'value':_0x13939a,'configurable':!![]});import{UnsupportedRunKindError}from'@unotest/protocol';import{readFileSync}from'fs';import{createRequire}from'module';import{dirname,join}from'path';import{existsSync as _0x59abd9}from'fs';import{execFileSync}from'child_process';import{existsSync}from'fs';function probeSystemBrowser(){for(const _0x29c80b of[probeChrome,probeEdge,probeChromeBeta]){const _0x338913=_0x29c80b();if(_0x338913['channel']!==null)return _0x338913;}return{'channel':null};}__name(probeSystemBrowser,_0x28effa(0x1e5));function probeChrome(){const _0x34b658={_0xd2a988:0x1ee,_0x27e93a:0x1d1},_0x13ab35=_0x28effa,_0x107d84=firstExistingPath(CHROME_PATHS)??whichOf(CHROME_BIN_NAMES);if(_0x107d84)return{'channel':_0x13ab35(_0x34b658._0xd2a988),'path':_0x107d84,'label':_0x13ab35(_0x34b658._0x27e93a)};return{'channel':null};}__name(probeChrome,_0x28effa(0x1fb));function probeEdge(){const _0x185428={_0x2e9231:0x1ea},_0x30086e=_0x28effa,_0x6db848=firstExistingPath(EDGE_PATHS)??whichOf(EDGE_BIN_NAMES);if(_0x6db848)return{'channel':'msedge','path':_0x6db848,'label':_0x30086e(_0x185428._0x2e9231)};return{'channel':null};}__name(probeEdge,_0x28effa(0x1c8));function probeChromeBeta(){const _0x543a40={_0x2f44b8:0x1c6,_0x55c826:0x1ba},_0x2de730=_0x28effa,_0x41c5c9=firstExistingPath(CHROME_BETA_PATHS);if(_0x41c5c9)return{'channel':_0x2de730(_0x543a40._0x2f44b8),'path':_0x41c5c9,'label':_0x2de730(_0x543a40._0x55c826)};return{'channel':null};}__name(probeChromeBeta,_0x28effa(0x1d5));var CHROME_PATHS=((()=>{const _0x347a6a={_0x305365:0x1c7,_0x3aeb07:0x1db,_0x5544c8:0x1a5,_0x178038:0x1c3,_0x38d58b:0x1fc},_0x4db1df=_0x28effa;switch(process[_0x4db1df(0x1d6)]){case _0x4db1df(_0x347a6a._0x305365):return[_0x4db1df(_0x347a6a._0x3aeb07)];case _0x4db1df(0x1f3):return[process[_0x4db1df(0x1fe)][_0x4db1df(_0x347a6a._0x5544c8)]+_0x4db1df(_0x347a6a._0x178038),process[_0x4db1df(0x1fe)][_0x4db1df(_0x347a6a._0x38d58b)]+_0x4db1df(0x1c3),process[_0x4db1df(0x1fe)]['LOCALAPPDATA']+'\x5cGoogle\x5cChrome\x5cApplication\x5cchrome.exe'];default:return[_0x4db1df(0x1e7),'/usr/bin/google-chrome-stable','/snap/bin/google-chrome','/usr/bin/chromium',_0x4db1df(0x1ad)];}})()),CHROME_BIN_NAMES=[_0x28effa(0x1b6),_0x28effa(0x1cd),_0x28effa(0x1b2),'chromium-browser'],EDGE_PATHS=((()=>{const _0x5ddb53={_0xb7f18d:0x1fe,_0x29ea9c:0x1b1,_0x35eae5:0x1fe},_0x218198=_0x28effa;switch(process['platform']){case'darwin':return[_0x218198(0x1f2)];case _0x218198(0x1f3):return[process[_0x218198(_0x5ddb53._0xb7f18d)][_0x218198(0x1a5)]+_0x218198(_0x5ddb53._0x29ea9c),process[_0x218198(_0x5ddb53._0x35eae5)][_0x218198(0x1fc)]+_0x218198(0x1b1)];default:return['/usr/bin/microsoft-edge','/usr/bin/microsoft-edge-stable'];}})()),EDGE_BIN_NAMES=[_0x28effa(0x1ec),_0x28effa(0x1d7)],CHROME_BETA_PATHS=((()=>{const _0x4186f0={_0x428019:0x1cb},_0x1f4380=_0x28effa;switch(process['platform']){case'darwin':return['/Applications/Google\x20Chrome\x20Beta.app/Contents/MacOS/Google\x20Chrome\x20Beta'];case _0x1f4380(0x1f3):return[process['env'][_0x1f4380(0x1a5)]+_0x1f4380(_0x4186f0._0x428019)];default:return[_0x1f4380(0x1ae)];}})());function firstExistingPath(_0x53b240){const _0x2bb675=_0x28effa;for(const _0x56b8cd of _0x53b240){if(!_0x56b8cd||_0x56b8cd['startsWith'](_0x2bb675(0x1a3)))continue;if(existsSync(_0x56b8cd))return _0x56b8cd;}return null;}__name(firstExistingPath,_0x28effa(0x1b0));function whichOf(_0x586ad5){const _0x16c8ff={_0x344ebe:0x1d6,_0x5c0d4f:0x1f0,_0x11b5a4:0x1dd,_0x4bf0fb:0x1d3},_0x4030f5=_0x28effa;if(process[_0x4030f5(_0x16c8ff._0x344ebe)]==='win32')return void 0x0;for(const _0x36def0 of _0x586ad5){try{const _0x4c9f05=execFileSync(_0x4030f5(_0x16c8ff._0x5c0d4f),[_0x36def0],{'encoding':_0x4030f5(_0x16c8ff._0x11b5a4)})[_0x4030f5(0x1bf)]();if(_0x4c9f05[_0x4030f5(_0x16c8ff._0x4bf0fb)]>0x0&&existsSync(_0x4c9f05))return _0x4c9f05;}catch{}}return void 0x0;}__name(whichOf,_0x28effa(0x1c9));function runEnvironmentChecks(_0x69cdfa={}){const _0x345d00=_0x28effa,_0x3708d0=_0x69cdfa[_0x345d00(0x1da)]??process['cwd']();return[checkNodeVersion(),checkSystemBrowser(),checkWritableCwd(_0x3708d0)];}function _0x5df4(_0x43fdd4,_0x8f6963){_0x43fdd4=_0x43fdd4-0x1a0;const _0x2cc633=_0x2cc6();let _0x5df425=_0x2cc633[_0x43fdd4];if(_0x5df4['xtnVRS']===undefined){var _0x2acbf2=function(_0x21c28f){const _0xf40cb4='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x59abd9='',_0x28c9b6='';for(let _0x13939a=0x0,_0x29c80b,_0x338913,_0x107d84=0x0;_0x338913=_0x21c28f['charAt'](_0x107d84++);~_0x338913&&(_0x29c80b=_0x13939a%0x4?_0x29c80b*0x40+_0x338913:_0x338913,_0x13939a++%0x4)?_0x59abd9+=String['fromCharCode'](0xff&_0x29c80b>>(-0x2*_0x13939a&0x6)):0x0){_0x338913=_0xf40cb4['indexOf'](_0x338913);}for(let _0x6db848=0x0,_0x41c5c9=_0x59abd9['length'];_0x6db848<_0x41c5c9;_0x6db848++){_0x28c9b6+='%'+('00'+_0x59abd9['charCodeAt'](_0x6db848)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x28c9b6);};_0x5df4['OdfOqG']=_0x2acbf2,_0x5df4['DVuMqN']={},_0x5df4['xtnVRS']=!![];}const _0xf819c8=_0x2cc633[0x0],_0x384fc7=_0x43fdd4+_0xf819c8,_0x435822=_0x5df4['DVuMqN'][_0x384fc7];return!_0x435822?(_0x5df425=_0x5df4['OdfOqG'](_0x5df425),_0x5df4['DVuMqN'][_0x384fc7]=_0x5df425):_0x5df425=_0x435822,_0x5df425;}__name(runEnvironmentChecks,_0x28effa(0x1ab));function checkNodeVersion(){const _0x4d6af4={_0x391856:0x1e4,_0x226e36:0x1af,_0x46baf4:0x1f7,_0x162b1a:0x1be},_0x5aa999=_0x28effa,_0x45cd50=process['versions']['node'],_0xa22e5c=Number(_0x45cd50[_0x5aa999(0x1e9)]('.')[0x0]);if(!Number[_0x5aa999(_0x4d6af4._0x391856)](_0xa22e5c)||_0xa22e5c<0x14)return{'name':_0x5aa999(_0x4d6af4._0x226e36),'severity':_0x5aa999(_0x4d6af4._0x46baf4),'message':'requires\x20Node\x20≥20\x20(running\x20'+_0x45cd50+')','detail':_0x5aa999(_0x4d6af4._0x162b1a)};return{'name':_0x5aa999(0x1af),'severity':'ok','message':_0x45cd50};}__name(checkNodeVersion,'checkNodeVersion');function checkSystemBrowser(){const _0x46229b={_0x1518ad:0x1f1,_0x5eefd7:0x1ce,_0x263dae:0x1a1,_0x11417c:0x1a8,_0xfd5220:0x1d8,_0x240bdb:0x1bc},_0x40aa29=_0x28effa,_0x17f8e8=probeSystemBrowser();if(_0x17f8e8[_0x40aa29(_0x46229b._0x1518ad)]!==null)return{'name':_0x40aa29(0x1d8),'severity':'ok','message':_0x17f8e8[_0x40aa29(_0x46229b._0x5eefd7)]+_0x40aa29(_0x46229b._0x263dae),'detail':_0x17f8e8[_0x40aa29(_0x46229b._0x11417c)]};return{'name':_0x40aa29(_0x46229b._0xfd5220),'severity':'warning','message':_0x40aa29(_0x46229b._0x240bdb),'detail':'init\x20will\x20offer\x20to\x20download\x20bundled\x20Chromium\x20(~150\x20MB).\x20Alternatively,\x20install\x20Chrome\x20from\x20https://www.google.com/chrome\x20and\x20re-run.'};}__name(checkSystemBrowser,'checkSystemBrowser');function checkWritableCwd(_0x1962cb){const _0x450911={_0x250769:0x1d2,_0x94f5f3:0x1c0,_0x4b076a:0x1cf},_0x23ec03=_0x28effa;if(!_0x59abd9(_0x1962cb))return{'name':_0x23ec03(_0x450911._0x250769),'severity':'error','message':_0x23ec03(_0x450911._0x94f5f3)+_0x1962cb+_0x23ec03(_0x450911._0x4b076a),'detail':_0x23ec03(0x1de)};return{'name':_0x23ec03(0x1d2),'severity':'ok','message':_0x1962cb};}__name(checkWritableCwd,'checkWritableCwd');var PACKAGE_NAME=_0x28effa(0x1f5),WebRunnerAdapter=class{static{__name(this,_0x28effa(0x1c1));}[_0x28effa(0x1ef)]=PACKAGE_NAME;['suffix']='';['debug']={'picker':!![],'attach':!![],'resumeFromFailure':![]};['supportedKinds']=[_0x28effa(0x1b4),_0x28effa(0x1bb),_0x28effa(0x1c2)];['resolveBin'](){const _0x5d5fce={_0x111f8e:0x1e0,_0x5a238c:0x1dc,_0x403936:0x1a4,_0x2230d7:0x1e8},_0x35218d=_0x28effa,_0x29910b=createRequire(import.meta.url),_0x5828fe=_0x29910b[_0x35218d(_0x5d5fce._0x111f8e)](PACKAGE_NAME+_0x35218d(_0x5d5fce._0x5a238c)),_0x31818e=JSON[_0x35218d(_0x5d5fce._0x403936)](readFileSync(_0x5828fe,_0x35218d(0x1dd))),_0x29c3f7=pickBin(_0x31818e);if(!_0x29c3f7)throw new Error(PACKAGE_NAME+_0x35218d(_0x5d5fce._0x2230d7));return join(dirname(_0x5828fe),_0x29c3f7);}[_0x28effa(0x1bd)](_0x55f0fa){const _0x47481c={_0x307073:0x1ff,_0x4df2df:0x1d3,_0x316b0a:0x1f8,_0x44c0da:0x1f6,_0x3466b1:0x1f4,_0x53909a:0x1a0,_0x1ba411:0x1bb,_0x42c1dc:0x1a7,_0x5e1e29:0x1ff,_0x3a4e19:0x1ff,_0x2c4434:0x1b7,_0x53908d:0x1ef},_0x58ae1c=_0x28effa;if(_0x55f0fa[_0x58ae1c(0x1a0)]===_0x58ae1c(0x1b4)){const _0x233335=[_0x58ae1c(0x1eb),_0x55f0fa['scenario']];if(_0x55f0fa[_0x58ae1c(0x1fd)])_0x233335[_0x58ae1c(_0x47481c._0x307073)](_0x58ae1c(0x1e2));return _0x55f0fa[_0x58ae1c(0x1f6)]&&_0x55f0fa[_0x58ae1c(0x1f6)][_0x58ae1c(_0x47481c._0x4df2df)]>0x0&&_0x233335[_0x58ae1c(0x1ff)](_0x58ae1c(_0x47481c._0x316b0a),_0x55f0fa[_0x58ae1c(_0x47481c._0x44c0da)][_0x58ae1c(_0x47481c._0x3466b1)](',')),_0x233335;}if(_0x55f0fa[_0x58ae1c(_0x47481c._0x53909a)]===_0x58ae1c(0x1bb)){const _0x51a0ef=[_0x58ae1c(_0x47481c._0x1ba411),_0x55f0fa[_0x58ae1c(_0x47481c._0x1ba411)]];_0x55f0fa[_0x58ae1c(_0x47481c._0x42c1dc)]!==void 0x0&&_0x55f0fa[_0x58ae1c(0x1a7)]>0x1&&_0x51a0ef[_0x58ae1c(_0x47481c._0x5e1e29)]('--workers='+_0x55f0fa['workers']);if(_0x55f0fa[_0x58ae1c(0x1d9)])_0x51a0ef[_0x58ae1c(_0x47481c._0x3a4e19)](_0x58ae1c(0x1c4));return _0x51a0ef;}if(_0x55f0fa[_0x58ae1c(0x1a0)]==='authoring')return[_0x58ae1c(_0x47481c._0x2c4434),_0x55f0fa[_0x58ae1c(0x1b4)]];const _0x58289f=_0x55f0fa;throw new UnsupportedRunKindError(_0x58289f[_0x58ae1c(0x1a0)],this[_0x58ae1c(_0x47481c._0x53908d)]);}[_0x28effa(0x1cc)](_0x232979){const _0x9c2163={_0x29ea5b:0x1aa},_0x1bd0ed=_0x28effa,_0x3e36cb={};if(_0x232979[_0x1bd0ed(_0x9c2163._0x29ea5b)])_0x3e36cb[_0x1bd0ed(0x1ac)]='1';return _0x3e36cb;}[_0x28effa(0x1f9)](){const _0x4cb06a=_0x28effa;return[_0x4cb06a(0x1a6)];}async[_0x28effa(0x1fa)](_0x4a3ee9){const _0x4a5393=_0x28effa;return runEnvironmentChecks({'cwd':_0x4a3ee9[_0x4a5393(0x1d4)]});}},webRunnerAdapter=new WebRunnerAdapter(),web_runner_adapter_default=webRunnerAdapter;function pickBin(_0x10820a){const _0x537906={_0x5285e9:0x1b8,_0x3fa5fe:0x1df,_0x41acf0:0x1d0},_0xaa6bb6=_0x28effa;if(typeof _0x10820a[_0xaa6bb6(_0x537906._0x5285e9)]==='string')return _0x10820a['bin'];if(_0x10820a[_0xaa6bb6(0x1b8)]&&typeof _0x10820a[_0xaa6bb6(0x1b8)]===_0xaa6bb6(_0x537906._0x3fa5fe))return _0x10820a[_0xaa6bb6(_0x537906._0x5285e9)][_0xaa6bb6(0x1b5)]??Object[_0xaa6bb6(_0x537906._0x41acf0)](_0x10820a[_0xaa6bb6(0x1b8)])[0x0]??null;return null;}function _0x2cc6(){const _0x302a5d=['l0fWCgXPy2f0Aw9UCY9nAwnYB3nVzNqGrwrNzs5HChaVq29UDgvUDhmVtwfJt1mVtwLJCM9ZB2z0ievKz2u','D2LUmZi','AM9PBG','qhvUB3rLC3qVD2vI','yNjLywTWB2LUDhm','zxjYB3i','ls1ICMvHAW','yxbWu2vYDMvYqxjNCW','zg9JDg9Y','ChjVyMvdAhjVBwu','uhjVz3jHBuzPBgvZkhG4nIK','zgvIDwC','zw52','ChvZAa','ndu5mde3v0PYwK5g','A2LUza','igzVDw5K','CgLJA0jPBG','Dw5KzwzPBMvK','CgfYC2u','uhjVz3jHBuzPBgvZ','yxbWlxnLCNzLCG','D29YA2vYCW','Cgf0Aa','mtaYntm1mMnhuLrwAG','AgvHzgvK','CNvUrw52AxjVBM1LBNrdAgvJA3m','vu5pvevtvf9iruferuq','l3vZCI9IAw4Vy2HYB21PDw0TyNjVD3nLCG','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1IzxrH','tM9Kzs5QCYb2zxjZAw9U','zMLYC3rfEgLZDgLUz1bHDgG','xe1Py3jVC29MDfXfzgDLxefWCgXPy2f0Aw9Uxg1ZzwrNzs5LEgu','y2HYB21PDw0','mty0mJC5nJHOD3H4B1a','C2nLBMfYAw8','Dw5VDgvZDc13zwi','z29Vz2XLlwnOCM9Tzq','yxv0Ag9Y','yMLU','mJa0mdz1svrWqMO','r29Vz2XLienOCM9TzsbczxrH','y29SBgvJDgLVBG','BM8Gq2HYB21Lic8GrwrNzsaVienOCM9TAxvTigrLDgvJDgvK','yNvPBgrbCMDZ','sw5ZDgfSBcboB2rLidiWkYb2AweGBNzTic8GzM5Tic8GDM9SDgeGyw5KihjLlxj1BI4','DhjPBq','DgfYz2v0ia','v2vIuNvUBMvYqwrHChrLCG','yxv0Ag9YAw5N','xeDVB2DSzvXdAhjVBwvCqxbWBgLJyxrPB25Cy2HYB21LlMv4zq','ls1IywLS','mtjYuLfKsuq','y2HYB21LlwjLDge','zgfYD2LU','ChjVyMvfzgDL','D2HPy2HpzG','mtyYntK1nu1vD0XizW','xeDVB2DSzvXdAhjVBwuGqMv0yvXbChbSAwnHDgLVBLXJAhjVBwuUzxHL','yNvPBgrfBNy','z29Vz2XLlwnOCM9Tzs1ZDgfIBgu','BgfIzwW','igrVzxmGBM90igv4Axn0','DMfSDwvZ','r29Vz2XLienOCM9Tzq','vgfYz2v0igrPCMvJDg9YEq','BgvUz3rO','ChjVAMvJDfjVB3q','ChjVyMvdAhjVBwvczxrH','CgXHDgzVCM0','BwLJCM9ZB2z0lwvKz2uTC3rHyMXL','u3LZDgvTigjYB3DZzxi','yMfPBa','y3DK','l0fWCgXPy2f0Aw9UCY9hB29NBguGq2HYB21LlMfWCc9dB250zw50CY9nywnpuY9hB29NBguGq2HYB21L','l3bHy2THz2uUANnVBG','DxrMoa','q3jLyxrLihrOzsbKAxjLy3rVCNKGB3iGCNvUigLUAxqGAw4Gyw4GzxHPC3rPBMCGChjVAMvJDcbYB290lG','B2jQzwn0','CMvZB2X2zq','ovnmDu5Oqq','ls1Kzwj1zW','mteXnZeZzMD5rej4','AxngAw5PDgu','ChjVyMvtExn0zw1cCM93C2vY','mZm3ody1qNH3rNvt','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzq','ihbHy2THz2uUANnVBIbKzwnSyxjLCYbUBYaNyMLUjYbMAwvSzcdIGjqGyNjVA2vUigLUC3rHBgW/','C3bSAxq','twLJCM9ZB2z0ievKz2u','ztjL','BwLJCM9ZB2z0lwvKz2u','zgvMAw5LuhjVCgvYDhK','y2HYB21L','BMfTzq','D2HPy2G','y2HHBM5LBa'];_0x2cc6=function(){return _0x302a5d;};return _0x2cc6();}__name(pickBin,_0x28effa(0x1a2));export{web_runner_adapter_default as default,webRunnerAdapter};
1
+ const _0x412422=_0x3921;(function(_0xf7bf3,_0x27dc06){const _0x1faf85={_0x4e0a84:0x1be,_0x237b5d:0x20b,_0x270b06:0x1d3},_0x21eaa6=_0x3921,_0x25644a=_0xf7bf3();while(!![]){try{const _0x165780=-parseInt(_0x21eaa6(_0x1faf85._0x4e0a84))/0x1*(parseInt(_0x21eaa6(0x1f6))/0x2)+parseInt(_0x21eaa6(0x1b1))/0x3*(-parseInt(_0x21eaa6(0x1bd))/0x4)+-parseInt(_0x21eaa6(0x1c2))/0x5*(-parseInt(_0x21eaa6(0x1f1))/0x6)+parseInt(_0x21eaa6(0x1e8))/0x7*(parseInt(_0x21eaa6(_0x1faf85._0x237b5d))/0x8)+parseInt(_0x21eaa6(0x1da))/0x9+parseInt(_0x21eaa6(_0x1faf85._0x270b06))/0xa+parseInt(_0x21eaa6(0x1eb))/0xb;if(_0x165780===_0x27dc06)break;else _0x25644a['push'](_0x25644a['shift']());}catch(_0x2868f4){_0x25644a['push'](_0x25644a['shift']());}}}(_0x3cf5,0x3f8b1));var __defProp=Object['defineProperty'],__name=(_0x59bafa,_0x40845a)=>__defProp(_0x59bafa,_0x412422(0x1c0),{'value':_0x40845a,'configurable':!![]});import{UnsupportedRunKindError}from'@unotest/protocol';import{readFileSync}from'fs';import{createRequire}from'module';import{dirname,join}from'path';import{existsSync as _0x2d0397}from'fs';import{execFileSync}from'child_process';import{existsSync}from'fs';function probeSystemBrowser(){const _0xf5d718={_0x1a99c5:0x1cc},_0x2dceca=_0x412422;for(const _0x1da3d1 of[probeChrome,probeEdge,probeChromeBeta]){const _0x5b93f2=_0x1da3d1();if(_0x5b93f2[_0x2dceca(_0xf5d718._0x1a99c5)]!==null)return _0x5b93f2;}return{'channel':null};}__name(probeSystemBrowser,'probeSystemBrowser');function _0x3921(_0x5233f4,_0x4e398e){_0x5233f4=_0x5233f4-0x1b1;const _0x3cf5b2=_0x3cf5();let _0x392185=_0x3cf5b2[_0x5233f4];if(_0x3921['hbQHgp']===undefined){var _0x57ee8f=function(_0x2aed21){const _0x291c9f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2d0397='',_0x59bafa='';for(let _0x40845a=0x0,_0x1da3d1,_0x5b93f2,_0x206783=0x0;_0x5b93f2=_0x2aed21['charAt'](_0x206783++);~_0x5b93f2&&(_0x1da3d1=_0x40845a%0x4?_0x1da3d1*0x40+_0x5b93f2:_0x5b93f2,_0x40845a++%0x4)?_0x2d0397+=String['fromCharCode'](0xff&_0x1da3d1>>(-0x2*_0x40845a&0x6)):0x0){_0x5b93f2=_0x291c9f['indexOf'](_0x5b93f2);}for(let _0x4dcdf6=0x0,_0x8b3c5f=_0x2d0397['length'];_0x4dcdf6<_0x8b3c5f;_0x4dcdf6++){_0x59bafa+='%'+('00'+_0x2d0397['charCodeAt'](_0x4dcdf6)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x59bafa);};_0x3921['YNDEcT']=_0x57ee8f,_0x3921['osdCVo']={},_0x3921['hbQHgp']=!![];}const _0x321485=_0x3cf5b2[0x0],_0x212232=_0x5233f4+_0x321485,_0x32943d=_0x3921['osdCVo'][_0x212232];return!_0x32943d?(_0x392185=_0x3921['YNDEcT'](_0x392185),_0x3921['osdCVo'][_0x212232]=_0x392185):_0x392185=_0x32943d,_0x392185;}function probeChrome(){const _0x2bddea={_0x2ffc7b:0x203},_0x39ad1d=_0x412422,_0x206783=firstExistingPath(CHROME_PATHS)??whichOf(CHROME_BIN_NAMES);if(_0x206783)return{'channel':_0x39ad1d(_0x2bddea._0x2ffc7b),'path':_0x206783,'label':'Google\x20Chrome'};return{'channel':null};}__name(probeChrome,_0x412422(0x1f4));function probeEdge(){const _0x58d84b={_0xa5a4fc:0x1f7},_0xa071a3=_0x412422,_0x4dcdf6=firstExistingPath(EDGE_PATHS)??whichOf(EDGE_BIN_NAMES);if(_0x4dcdf6)return{'channel':_0xa071a3(0x1b9),'path':_0x4dcdf6,'label':_0xa071a3(_0x58d84b._0xa5a4fc)};return{'channel':null};}__name(probeEdge,_0x412422(0x1ce));function probeChromeBeta(){const _0x8b3c5f=firstExistingPath(CHROME_BETA_PATHS);if(_0x8b3c5f)return{'channel':'chrome-beta','path':_0x8b3c5f,'label':'Google\x20Chrome\x20Beta'};return{'channel':null};}__name(probeChromeBeta,_0x412422(0x1ba));function _0x3cf5(){const _0x4dc07a=['xeDVB2DSzvXdAhjVBwuGqMv0yvXbChbSAwnHDgLVBLXJAhjVBwuUzxHL','C3rYAw5N','vgfYz2v0igrPCMvJDg9YEq','l3vZCI9IAw4Vy2HYB21PDw0','DhjPBq','igrVzxmGBM90igv4Axn0','vu5pvevtvf9iruferuq','y2HHBM5LBa','DxrMoa','ChjVyMvfzgDL','zMLYC3rfEgLZDgLUz1bHDgG','y29SBgvJDgLVBG','AM9PBG','D2LUmZi','mJm5nteXmhvusKDqCa','u3LZDgvTigjYB3DZzxi','D2fYBMLUzW','AgvHzgvK','zw52','te9dquXbufbeqvrb','Aw5PDcb3AwXSig9MzMvYihrVigrVD25SB2fKigj1BMrSzwqGq2HYB21PDw0Gkh4XntaGtuiPlIbbBhrLCM5HDgL2zwX5lcbPBNn0ywXSienOCM9TzsbMCM9TigH0DhbZoI8VD3D3lMDVB2DSzs5JB20Vy2HYB21LigfUzcbYzs1YDw4U','mJm5ndK5EePSvKPh','C3vWCg9YDgvKs2LUzhm','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1ZDgfIBgu','D2HPy2G','z29Vz2XLlwnOCM9Tzq','yxbWu2vYDMvYqxjNCW','l3nUyxaVyMLUl2DVB2DSzs1JAhjVBwu','CgLJA0jPBG','C3bSAxq','y2HLy2TxCML0ywjSzun3za','yNvPBgrbCMDZ','D2HPy2HpzG','uhjVz3jHBuzPBgvZ','ChjVAMvJDfjVB3q','mty1nJi3AuHgDMrI','l3vZCI9IAw4VBwLJCM9ZB2z0lwvKz2u','A2LUza','mtK1mZy2nNHjANrNDG','CMvXDwLYzxmGtM9KzsdIIAuYmcaOCNvUBMLUzYa','qhvUB3rLC3qVD2vI','ChvZAa','DMvYC2LVBNm','CgXHDgzVCM0','nK5Yt3jhrq','ls1Kzwj1zW','ztjL','ChjVyMvdAhjVBwu','C2nLBMfYAw8','mJy4mJjvvgnPtgG','twLJCM9ZB2z0ievKz2u','yxv0Ag9YAw5N','yMfPBa','y3DK','AxngAw5PDgu','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzq','C3rHCNrZv2L0Aa','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1IzxrH','yxbWlxnLCNzLCG','v2vIuNvUBMvYqwrHChrLCG','ls1IywLS','ls13B3jRzxjZpq','y2HYB21L','yMLU','l3bHy2THz2uUANnVBG','sw5ZDgfSBcboB2rLidiWkYb2AweGBNzTic8GzM5Tic8GDM9SDgeGyw5KihjLlxj1BI4','y2HLy2TtExn0zw1cCM93C2vY','xeDVB2DSzvXdAhjVBwvCqxbWBgLJyxrPB25Cy2HYB21LlMv4zq','B2jQzwn0','l0fWCgXPy2f0Aw9UCY9hB29NBguGq2HYB21LiejLDgeUyxbWl0nVBNrLBNrZl01Hy09tl0DVB2DSzsbdAhjVBwuGqMv0yq','mJrptfvfzgy','tM9Kzs5QCYb2zxjZAw9U','BM9Kzq','CMvZB2X2zujPBG','D29YA2vYCW','uhjVz3jHBuzPBgvZkhG4nIK','mtq5mJvrteLcyuW','zxjYB3i','yxv0Ag9Y','l0fWCgXPy2f0Aw9UCY9hB29NBguGq2HYB21LlMfWCc9dB250zw50CY9nywnpuY9hB29NBguGq2HYB21L','BwLJCM9ZB2z0lwvKz2u','y2HLy2ToB2rLvMvYC2LVBG','l0fWCgXPy2f0Aw9UCY9nAwnYB3nVzNqGrwrNzs5HChaVq29UDgvUDhmVtwfJt1mVtwLJCM9ZB2z0ievKz2u','BM8Gq2HYB21Lic8GrwrNzsaVienOCM9TAxvTigrLDgvJDgvK','BxnLzgDL','ChjVyMvdAhjVBwvczxrH','BgvUz3rO','yNvPBgrfBNy','mJG4CgLjzuji','mZfcvuXOywW','y2HYB21PDw0','BMfTzq','Dw5VDgvZDc13zwi','mJu5nZuXnvvYBxjZBa','yNjLywTWB2LUDhm','zgfYD2LU'];_0x3cf5=function(){return _0x4dc07a;};return _0x3cf5();}var CHROME_PATHS=((()=>{const _0x340e21={_0x1199a3:0x1c4,_0x1227d0:0x1b4,_0x1e0810:0x208,_0x2bfadc:0x1d7,_0x48a24d:0x1fc,_0x3ec40f:0x1c8},_0x4c3ef4=_0x412422;switch(process[_0x4c3ef4(0x1f0)]){case _0x4c3ef4(_0x340e21._0x1199a3):return[_0x4c3ef4(_0x340e21._0x1227d0)];case'win32':return[process[_0x4c3ef4(0x1d7)][_0x4c3ef4(0x1e6)]+_0x4c3ef4(0x208),process[_0x4c3ef4(0x1d7)]['ProgramFiles(x86)']+_0x4c3ef4(_0x340e21._0x1e0810),process[_0x4c3ef4(_0x340e21._0x2bfadc)][_0x4c3ef4(0x1d8)]+'\x5cGoogle\x5cChrome\x5cApplication\x5cchrome.exe'];default:return[_0x4c3ef4(_0x340e21._0x48a24d),_0x4c3ef4(0x1dc),_0x4c3ef4(0x1e0),_0x4c3ef4(_0x340e21._0x3ec40f),'/usr/bin/chromium-browser'];}})()),CHROME_BIN_NAMES=[_0x412422(0x1de),'google-chrome-stable',_0x412422(0x1bf),'chromium-browser'],EDGE_PATHS=((()=>{const _0x2f0ef5={_0x40010f:0x1f0,_0x54968f:0x1c4,_0x24d47c:0x1b7},_0x17419d=_0x412422;switch(process[_0x17419d(_0x2f0ef5._0x40010f)]){case _0x17419d(_0x2f0ef5._0x54968f):return[_0x17419d(_0x2f0ef5._0x24d47c)];case _0x17419d(0x1d2):return[process['env']['ProgramFiles']+'\x5cMicrosoft\x5cEdge\x5cApplication\x5cmsedge.exe',process[_0x17419d(0x1d7)][_0x17419d(0x210)]+'\x5cMicrosoft\x5cEdge\x5cApplication\x5cmsedge.exe'];default:return[_0x17419d(0x1e9),'/usr/bin/microsoft-edge-stable'];}})()),EDGE_BIN_NAMES=[_0x412422(0x1b5),'microsoft-edge-stable'],CHROME_BETA_PATHS=((()=>{const _0x1df1f4={_0x1cf1f9:0x1f0,_0x5361de:0x1c4,_0x19ae6e:0x20a,_0x43bfc5:0x1c5},_0x34fa2b=_0x412422;switch(process[_0x34fa2b(_0x1df1f4._0x1cf1f9)]){case _0x34fa2b(_0x1df1f4._0x5361de):return[_0x34fa2b(_0x1df1f4._0x19ae6e)];case _0x34fa2b(0x1d2):return[process['env']['ProgramFiles']+_0x34fa2b(_0x1df1f4._0x43bfc5)];default:return[_0x34fa2b(0x1fe)];}})());function firstExistingPath(_0xa2b814){const _0x11aa71=_0x412422;for(const _0x267bd5 of _0xa2b814){if(!_0x267bd5||_0x267bd5[_0x11aa71(0x1fd)]('undefined'))continue;if(existsSync(_0x267bd5))return _0x267bd5;}return null;}__name(firstExistingPath,_0x412422(0x1cf));function whichOf(_0x4d3e83){const _0x1b04aa={_0x783c8c:0x1f0,_0x39e140:0x1cd,_0x520cc2:0x1c9,_0x2791a8:0x1bb},_0x1083c6=_0x412422;if(process[_0x1083c6(_0x1b04aa._0x783c8c)]===_0x1083c6(0x1d2))return void 0x0;for(const _0x52f68f of _0x4d3e83){try{const _0x5905b2=execFileSync(_0x1083c6(0x1dd),[_0x52f68f],{'encoding':_0x1083c6(_0x1b04aa._0x39e140)})[_0x1083c6(_0x1b04aa._0x520cc2)]();if(_0x5905b2[_0x1083c6(_0x1b04aa._0x2791a8)]>0x0&&existsSync(_0x5905b2))return _0x5905b2;}catch{}}return void 0x0;}__name(whichOf,_0x412422(0x1e5));function runEnvironmentChecks(_0x310b29={}){const _0x342d11={_0x346226:0x1fa},_0x54cc75=_0x412422,_0x4083dd=_0x310b29['cwd']??process[_0x54cc75(_0x342d11._0x346226)]();return[checkNodeVersion(),checkSystemBrowser(),checkWritableCwd(_0x4083dd)];}__name(runEnvironmentChecks,'runEnvironmentChecks');function checkNodeVersion(){const _0xb55a2a={_0x4e052c:0x1ef,_0x41617b:0x20d,_0x464f09:0x1e2,_0xc72272:0x1fb,_0xf892bd:0x1ec,_0x4fc80b:0x20c},_0x36703f=_0x412422,_0x4845a2=process[_0x36703f(_0xb55a2a._0x4e052c)][_0x36703f(_0xb55a2a._0x41617b)],_0x5a3092=Number(_0x4845a2[_0x36703f(_0xb55a2a._0x464f09)]('.')[0x0]);if(!Number[_0x36703f(_0xb55a2a._0xc72272)](_0x5a3092)||_0x5a3092<0x14)return{'name':_0x36703f(0x20c),'severity':'error','message':_0x36703f(_0xb55a2a._0xf892bd)+_0x4845a2+')','detail':_0x36703f(0x206)};return{'name':_0x36703f(_0xb55a2a._0x4fc80b),'severity':'ok','message':_0x4845a2};}__name(checkNodeVersion,_0x412422(0x1b6));function checkSystemBrowser(){const _0x4af122={_0x2beb42:0x1d4,_0xcfca6c:0x1d5},_0x27a30f=_0x412422,_0x2e51ee=probeSystemBrowser();if(_0x2e51ee['channel']!==null)return{'name':'System\x20browser','severity':'ok','message':_0x2e51ee['label']+'\x20found','detail':_0x2e51ee['path']};return{'name':_0x27a30f(_0x4af122._0x2beb42),'severity':_0x27a30f(_0x4af122._0xcfca6c),'message':_0x27a30f(0x1b8),'detail':_0x27a30f(0x1d9)};}__name(checkSystemBrowser,_0x412422(0x207));function checkWritableCwd(_0x17fbdd){const _0x8a7adf={_0x722bb1:0x1b2,_0x31c927:0x1ca,_0x5a382a:0x1c7},_0x4aacab=_0x412422;if(!_0x2d0397(_0x17fbdd))return{'name':_0x4aacab(0x1c7),'severity':_0x4aacab(_0x8a7adf._0x722bb1),'message':'target\x20'+_0x17fbdd+_0x4aacab(_0x8a7adf._0x31c927),'detail':'Create\x20the\x20directory\x20or\x20run\x20init\x20in\x20an\x20existing\x20project\x20root.'};return{'name':_0x4aacab(_0x8a7adf._0x5a382a),'severity':'ok','message':_0x17fbdd};}__name(checkWritableCwd,_0x412422(0x1e3));var PACKAGE_NAME=_0x412422(0x1ed),WebRunnerAdapter=class{static{__name(this,_0x412422(0x200));}[_0x412422(0x1c0)]=PACKAGE_NAME;['suffix']='';['debug']={'picker':!![],'attach':!![],'resumeFromFailure':![]};[_0x412422(0x1db)]=['scenario',_0x412422(0x1d0),'authoring'];[_0x412422(0x20e)](){const _0x4475d8={_0x52061d:0x205},_0x6d5b15=_0x412422,_0x269622=createRequire(import.meta.url),_0x4a895b=_0x269622['resolve'](PACKAGE_NAME+_0x6d5b15(_0x4475d8._0x52061d)),_0x1403ab=JSON['parse'](readFileSync(_0x4a895b,'utf8')),_0x1da7c3=pickBin(_0x1403ab);if(!_0x1da7c3)throw new Error(PACKAGE_NAME+'\x20package.json\x20declares\x20no\x20\x27bin\x27\x20field\x20—\x20broken\x20install?');return join(dirname(_0x4a895b),_0x1da7c3);}[_0x412422(0x1e4)](_0x3f455f){const _0x45d21b={_0x24abb9:0x1f3,_0x4429a9:0x1f2,_0x5e7f4f:0x1c3,_0x294532:0x1c3,_0x267b2f:0x1bb,_0x52b37f:0x1d0,_0x494055:0x20f,_0x1ece59:0x20f,_0x22e9dc:0x202,_0x49f1b2:0x201,_0x5f3739:0x1ea},_0x3f98ef=_0x412422;if(_0x3f455f[_0x3f98ef(0x1ea)]===_0x3f98ef(0x1f5)){const _0xaa4f70=[_0x3f98ef(_0x45d21b._0x24abb9),_0x3f455f['scenario']];if(_0x3f455f['debug'])_0xaa4f70['push'](_0x3f98ef(_0x45d21b._0x4429a9));return _0x3f455f[_0x3f98ef(_0x45d21b._0x5e7f4f)]&&_0x3f455f[_0x3f98ef(_0x45d21b._0x294532)][_0x3f98ef(_0x45d21b._0x267b2f)]>0x0&&_0xaa4f70[_0x3f98ef(0x1ee)]('--break',_0x3f455f[_0x3f98ef(0x1c3)][_0x3f98ef(0x1d1)](',')),_0xaa4f70;}if(_0x3f455f['kind']===_0x3f98ef(_0x45d21b._0x52b37f)){const _0x37f2a8=['collection',_0x3f455f[_0x3f98ef(0x1d0)]];_0x3f455f[_0x3f98ef(_0x45d21b._0x494055)]!==void 0x0&&_0x3f455f[_0x3f98ef(_0x45d21b._0x1ece59)]>0x1&&_0x37f2a8[_0x3f98ef(0x1ee)](_0x3f98ef(_0x45d21b._0x22e9dc)+_0x3f455f['workers']);if(_0x3f455f[_0x3f98ef(0x1f9)])_0x37f2a8[_0x3f98ef(0x1ee)](_0x3f98ef(_0x45d21b._0x49f1b2));return _0x37f2a8;}if(_0x3f455f[_0x3f98ef(_0x45d21b._0x5f3739)]===_0x3f98ef(0x1f8))return[_0x3f98ef(0x1b3),_0x3f455f[_0x3f98ef(0x1f5)]];const _0x1adce9=_0x3f455f;throw new UnsupportedRunKindError(_0x1adce9[_0x3f98ef(0x1ea)],this['name']);}[_0x412422(0x1bc)](_0x17f849){const _0x3c2e21={_0x1982e6:0x1d6},_0x556843=_0x412422,_0x1b2c41={};if(_0x17f849[_0x556843(_0x3c2e21._0x1982e6)])_0x1b2c41[_0x556843(0x1cb)]='1';return _0x1b2c41;}[_0x412422(0x1df)](){const _0x3db670=_0x412422;return[_0x3db670(0x1ff)];}async['doctor'](_0x3d9f7f){const _0x319e9a=_0x412422;return runEnvironmentChecks({'cwd':_0x3d9f7f[_0x319e9a(0x1e7)]});}},webRunnerAdapter=new WebRunnerAdapter(),web_runner_adapter_default=webRunnerAdapter;function pickBin(_0x348db1){const _0x528758={_0x58eb72:0x1c6,_0x9fc9c1:0x204,_0x27a7c2:0x204,_0x5131ee:0x209},_0x4116f9=_0x412422;if(typeof _0x348db1[_0x4116f9(0x204)]===_0x4116f9(_0x528758._0x58eb72))return _0x348db1[_0x4116f9(_0x528758._0x9fc9c1)];if(_0x348db1[_0x4116f9(_0x528758._0x27a7c2)]&&typeof _0x348db1[_0x4116f9(_0x528758._0x27a7c2)]===_0x4116f9(_0x528758._0x5131ee))return _0x348db1[_0x4116f9(_0x528758._0x9fc9c1)][_0x4116f9(0x1c1)]??Object['values'](_0x348db1[_0x4116f9(0x204)])[0x0]??null;return null;}__name(pickBin,_0x412422(0x1e1));export{web_runner_adapter_default as default,webRunnerAdapter};
@@ -56,7 +56,8 @@ echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' \
56
56
  | npx @unotest/web mcp
57
57
  ```
58
58
 
59
- Should return JSON with `tools: [...39 entries]`.
59
+ Should return JSON with `tools: [...44 entries]` (default env: full
60
+ toolset, snapshots on, grounder off).
60
61
 
61
62
  ## Tool catalog
62
63
 
@@ -87,6 +88,32 @@ escape hatch when `get_page_snapshot` / `get_aria_snapshot` exceed
87
88
  the MCP token cap (table-heavy fleet UIs with 100+ rows). Refs are
88
89
  shared with outline / aria-snapshot.
89
90
 
91
+ `UNOTEST_SNAPSHOT=0` unregisters the three snapshot tools
92
+ (`get_page_snapshot`, `get_frame_snapshot`, `get_aria_snapshot`) — for
93
+ ground-only runs where discovery goes through `ground_element` (A/B
94
+ purity: the agent cannot fall back to snapshot reading). `find_element`
95
+ always stays, and tool descriptions that normally cross-reference the
96
+ snapshot tools switch to snapshot-free wording.
97
+
98
+ `UNOTEST_TOOLSET=core` narrows the whole surface to the minimal
99
+ explore-first loop for small local models: `new_context`,
100
+ `explore_start` / `explore_step` / `explore_steps` / `explore_stop`,
101
+ `ground_element` (still needs `UNOTEST_GROUNDER_MODE`),
102
+ `save_exploration_as_test`, `run_test`. assert_* actions and the
103
+ `autoRun` flag live inside `explore_steps` (actions are not tools), so
104
+ the core happy-path is `explore_start` (it opens the context itself) →
105
+ `explore_steps {…, autoRun: true}`; save/run stay registered as the
106
+ fallback when an autoRun gate skips. Fewer tools = smaller prefill
107
+ per turn, and no side doors around the grounder (`find_element`,
108
+ snapshot dumps). Default `full`. MCP is per-process: every client spawns
109
+ its own server with its own env, so Claude can run `full` while a local
110
+ driver runs `core` from the same code. Typical matrices:
111
+
112
+ ```
113
+ # Claude agent: UNOTEST_TOOLSET=full UNOTEST_SNAPSHOT=1 UNOTEST_GROUNDER_MODE=local
114
+ # local-model driver: UNOTEST_TOOLSET=core UNOTEST_SNAPSHOT=0 UNOTEST_GROUNDER_MODE=local
115
+ ```
116
+
90
117
  ### Debugger (6)
91
118
 
92
119
  The reason most agents pick this package over driving Playwright
@@ -151,6 +178,78 @@ Auto-switch runs **only** under `explore_step` (recording / ad-hoc).
151
178
  - `get_failure_network` — HAR (tier 3 — not yet wired, see
152
179
  `KNOWN_ISSUES.md`)
153
180
 
181
+ ### `ground_element` (1, experimental, off by default)
182
+
183
+ Registered when `UNOTEST_GROUNDER_MODE` is `local` or `remote` for the
184
+ MCP server process (`off` by default → tool absent). Semantic element
185
+ lookup: the agent describes the target in natural language (any language)
186
+ and gets back the best-matching ref plus the top-20 candidate lines the
187
+ decision was made from. Positional intents pass `ordinal` (`"first" |
188
+ "last" | N`) instead of baking the position into the text. Refs share the
189
+ `data-unotest-ref` space with the snapshot tools, so a grounded `eN` goes
190
+ straight into `explore_step`.
191
+
192
+ For an element ref (`eN`) the response carries a **paste-ready
193
+ `locator`** (`{kind:"locator", steps:[{kind:"ref", ref:"eN"}]}`) — the
194
+ agent passes it to `explore_step` verbatim instead of assembling the
195
+ JSON by hand (the top format-error class in small models). A record/text
196
+ ref (`rN`/`tN`/…) is not addressable by a ref locator, so instead of a
197
+ `locator` the result carries a `locatorNote` telling the agent to act on
198
+ the record's inner controls (visible in the candidates list) or ground
199
+ one directly («the edit button in row X»).
200
+
201
+ Intent locators in `explore_step` / `explore_steps` are grounded with a
202
+ **target class** owned by the action: click/fill/hover targets ask for a
203
+ control (a record answer hops to the record's inner control), while
204
+ assert steps (`assert_text` / `assert_visible` / …) ask for the semantic
205
+ unit itself — a page heading, a table row, a text block. A unit with no
206
+ capture-time ref gets one materialized on its own DOM element at resolve
207
+ time, so "assert the page heading says X" works as a single intent step
208
+ with no discovery call.
209
+
210
+ `frame` (an iframe locator) grounds **inside** that iframe — the
211
+ page-level walk cannot see into iframes. Frame refs are frame-local
212
+ (`e5` inside the frame is unrelated to the page's `e5`): the agent runs
213
+ `explore_step {action:"enter_frame"}` before acting on one, and
214
+ `exit_frame` after. Page and frame indexes coexist (the index cache is
215
+ an LRU keyed by content hash, both locally and on the remote server),
216
+ so alternating page ↔ frame grounding does not re-index.
217
+
218
+ Two modes, same tool surface:
219
+
220
+ - **local** — grounding runs in-process against local models
221
+ (`UNOTEST_GROUNDER_*`; defaults: ollama at `http://localhost:11434`,
222
+ `embeddinggemma` + `gemma4:e4b`).
223
+ - **remote** — only the page walk runs locally; embed + picker run on a
224
+ GPU grounding server (`UNOTEST_GROUNDER_REMOTE_URL` +
225
+ `UNOTEST_GROUNDER_REMOTE_TOKEN`). Each MCP-server process is an isolated
226
+ session — two servers never share an index.
227
+
228
+ At MCP-server start a cheap reachability ping runs against the backend
229
+ (`/api/tags` for local ollama, `/health` for a remote server, no model
230
+ warm-up) — it never blocks or fails startup. A down backend produces one
231
+ actionable warning in the server log, and any later network-level failure
232
+ on an intent step or `ground_element` call surfaces as a typed
233
+ `grounder unreachable at <url> — …` error that cites the backend URL, a
234
+ mode-specific fix hint and whether the backend was reachable at server
235
+ start — instead of a raw `fetch failed`.
236
+
237
+ The page is **re-indexed automatically** whenever its content changes
238
+ (navigation, filter, sort, SPA update) — there is no `reindex` flag; an
239
+ unchanged page reuses its index. The first index on a page takes seconds
240
+ (longer on huge pages / when running locally on weak hardware).
241
+
242
+ For ground-only A/B runs combine with `UNOTEST_SNAPSHOT=0` (see the
243
+ core-tools section) so the agent cannot fall back to snapshot reading.
244
+
245
+ `ground_element` is the **discovery** path («what's on the page?»). For
246
+ acting on an element, `explore_step` / `explore_steps` accept an
247
+ **intent locator** directly — `{kind:"locator", steps:[{kind:"intent",
248
+ intent:"the login field", ordinal?}]}` — and the runner grounds it itself
249
+ (intent → ref → stable locator), saving the separate lookup call and
250
+ keeping refs out of the agent's context entirely. See
251
+ `exploration-mode.md` for details.
252
+
154
253
  ### `agent_fix` (1)
155
254
 
156
255
  Build a structured fix-context for a failed run (D-25). Composes the
@@ -290,7 +389,9 @@ What it **can** do (with your approval):
290
389
  - Read failure artifacts from `.unotest/failures/`
291
390
  - Execute sandbox primitives — `shell(cmd, …args)` (execFile, not
292
391
  shell), `dbQuery` / `dbExec` (against `sandbox.database`), `apiCall`
293
- (path-only against `sandbox.apiBaseUrl`)
392
+ (path-only against `sandbox.apiBaseUrl`, or against an env-named base
393
+ via `{base: 'API_BASE_X'}`; upload files confined to
394
+ `sandbox.uploadDir`)
294
395
 
295
396
  Pinning `sandbox.*` in `unotest.config.*` is how you constrain what the
296
397
  agent's scenarios can touch: a scenario cannot redirect `shell` cwd or
@@ -301,6 +301,15 @@ Compares `inputValue()` (`<input>`, `<textarea>`, native `<select>`).
301
301
  assertValue(getByLabel('Email'), 'a@b.c')
302
302
  ```
303
303
 
304
+ On a checkbox / radio / switch (native or `role=`) it asserts the
305
+ **checked state** instead — their DOM value is the submitted payload
306
+ (`"on"` by default), identical whether ticked or not. Pass `'true'` or
307
+ `'false'`; anything else is rejected as a usage error.
308
+
309
+ ```js
310
+ assertValue(getByRole('checkbox', {name: 'Select row R-00147'}), 'true')
311
+ ```
312
+
304
313
  ### `assertCount(loc, expected, options?)`
305
314
 
306
315
  ```js
@@ -388,7 +397,40 @@ waitFor(getByTestId('content-loaded'))
388
397
 
389
398
  ### `waitForText(text, options?)`
390
399
 
391
- Wait for any element on the active page to contain `text`.
400
+ Wait until at least one **visible** element on the active page contains
401
+ `text` (chat feeds and repeated labels legally duplicate text — ≥1
402
+ visible match is the success condition; `{first: true}` from older
403
+ scenarios is accepted as a no-op).
404
+
405
+ Options: `{ exact?, state?, timeout? }`. Default matching is substring —
406
+ it also matches *inside* a word (`'hi'` hits `'anything'`). For precise
407
+ matching pass `{exact: true}` (full-text equality) or a regex with word
408
+ boundaries:
409
+
410
+ ```js
411
+ waitForText('Active'); // ≥1 visible occurrence
412
+ waitForText('Active', {exact: true}); // full-text equality
413
+ waitForText(/\bhi\b/, {timeout: 60000}); // word-boundary, long poll
414
+ ```
415
+
416
+ `state: 'hidden'` waits until **no** visible occurrence remains.
417
+
418
+ ### `waitForCount(loc, count, options?)`
419
+
420
+ Poll until the locator matches **at least** `count` elements. The chat
421
+ pattern "wait for reply №N": at-least semantics don't flake when the
422
+ feed grows past N between polls. `{exact: true}` waits for exactly
423
+ `count` matches; timeout throws with the last observed count.
424
+
425
+ Options: `{ exact?, timeout? }` (default timeout 5000 ms — raise it for
426
+ slow producers like LLM replies).
427
+
428
+ ```js
429
+ // Chat feed: the bot's reply is message #3 — wait for it, then assert
430
+ // on its text with a second, content-anchored wait:
431
+ waitForCount(locator('[data-id]'), 3, {timeout: 90000});
432
+ waitForText(/\bshipping\b/i, {timeout: 90000});
433
+ ```
392
434
 
393
435
  ### `pause(ms)`
394
436
 
@@ -552,7 +594,7 @@ INSERT / UPDATE / DELETE.
552
594
  dbExec('delete from sessions where user_id = ?', userId);
553
595
  ```
554
596
 
555
- ### `apiCall(method, path, body?, headers?)` → `{status, body, headers}`
597
+ ### `apiCall(method, path, body?, headers?, options?)` → `{status, body, headers}`
556
598
 
557
599
  HTTP via global `fetch`. **`path` must be relative** (starts with `/`) —
558
600
  absolute URLs throw to prevent scenarios from hitting arbitrary hosts.
@@ -562,6 +604,42 @@ res = apiCall('POST', '/auth/login', {email: 'a@b.c', password: 'x'});
562
604
  assertTrue(res.status == 200, 'login failed');
563
605
  ```
564
606
 
607
+ **Named API bases.** Without `options` the path goes against
608
+ `sandbox.apiBaseUrl`. A setup that talks to more than one host names
609
+ the base per call — `{base: 'API_BASE_X'}` is the **name of a
610
+ variable** from `unotest/.env` (overlays apply as usual), never a URL:
611
+
612
+ ```js
613
+ // unotest/.env: API_BASE_CHAT=https://chatbackend.example.com
614
+ res = apiCall('DELETE', '/external/room/r1', null, {'x-api-key': KEY},
615
+ {base: 'API_BASE_CHAT'});
616
+ ```
617
+
618
+ The variable must hold an http(s) URL; an unknown name fails with the
619
+ usual "add it to unotest/.env" message. URLs never appear in the
620
+ scenario — hosts are controlled by project env files only.
621
+
622
+ **Multipart file upload.** A body of the exact shape
623
+ `{file, field?, fields?}` posts as `multipart/form-data`:
624
+
625
+ ```js
626
+ res = apiCall('POST', '/tenants/t1/documents',
627
+ {file: 'fixtures/manual.pdf', fields: {source: 'e2e'}},
628
+ {Authorization: BEARER});
629
+ assertTrue(res.status == 202, 'ingestion not accepted');
630
+ ```
631
+
632
+ - `file` — **relative** path, resolved against `sandbox.uploadDir`
633
+ (defaults to the project root). Absolute paths and `../` escapes
634
+ out of that root throw.
635
+ - `field` — form part name, default `"file"`. `fields` — extra string
636
+ parts. The part's content type derives from the file extension.
637
+ - Don't set a `Content-Type` header with a multipart body — `fetch`
638
+ derives the boundary itself; a manual value throws.
639
+ - A JSON body that happens to contain a `file` key **plus any other
640
+ key** still posts as JSON — only the exact multipart shape switches
641
+ modes.
642
+
565
643
  ---
566
644
 
567
645
  ## Typed getters
@@ -617,6 +695,31 @@ Backticks are **raw** — `${…}` interpolation is rejected at parse time
617
695
 
618
696
  ---
619
697
 
698
+ ## Diagnostics
699
+
700
+ ### `screenshot(name?, options?)` → `string`
701
+
702
+ On-demand PNG capture of the active page into the run's artifact dir:
703
+ `unotest/.runs/<runId>/screenshot/<NNN>-<name>.png`. Returns the
704
+ project-relative path. Evidence tool — fixes what the page actually
705
+ looked like at this point, so a green run can be verified after the
706
+ fact (the viewer lists each capture as a `screenshot` event).
707
+
708
+ ```js
709
+ screenshot(); // 001-shot.png
710
+ screenshot('bot-reply'); // 002-bot-reply.png
711
+ screenshot('landing', {fullPage: true}); // full scroll height
712
+ ```
713
+
714
+ - `name` is slugified to `[a-z0-9._-]` (`'Bot Reply!'` → `bot-reply`);
715
+ omitted → `shot`. Files are numbered in capture order.
716
+ - **Options:** `fullPage?` (default `false` — viewport only).
717
+ - Not a visual assertion: the test does not compare images. In runtimes
718
+ with no artifact dir (exploration) the call logs a warning, returns
719
+ `null` and does NOT fail the run.
720
+
721
+ ---
722
+
620
723
  ## Logging
621
724
 
622
725
  ### `log(...args)`
@@ -638,21 +741,44 @@ The DSL is JavaScript-shaped but parsed by a small AST engine
638
741
  - **`function test_*(): { … }`** — scenario entry; each top-level
639
742
  `function test_*` is a separately runnable test.
640
743
  - **Assignments** — `name = expression;` (no `let`/`const`/`var`).
641
- - **`if` / `else`**, **`while`**, **`for (a; b; c)`**,
642
- **`do { … } while (cond)`**, **`break`**, **`continue`**.
643
- - **Increment / decrement** — `i++`, `i--`, `++i`, `--i` (numeric
644
- variables only; postfix returns the old value, prefix the new).
645
- - **Object / array literals** — `{name: 'x'}`, `[1, 2, 3]`.
646
- - **Member access** — `row.email`, `result.headers['content-type']`.
744
+ - **`if` / `else`** and **`for` in the canonical shape**
745
+ `for (i = 0; i < N; i = i + 1) { … }` (increment must be an
746
+ assignment — `i++` is rejected everywhere).
747
+ - **`break`** inside a loop body only. Typical polling loop:
748
+
749
+ ```js
750
+ done = false;
751
+ for (i = 0; i < 60; i = i + 1) {
752
+ job = apiCall('GET', '/jobs/1');
753
+ if (job.body.status == 'DONE') {
754
+ done = true;
755
+ break;
756
+ }
757
+ pause(2000); // reason: ingestion job is async, poll every 2s
758
+ }
759
+ assertTrue(done, 'job never reached DONE');
760
+ ```
761
+
762
+ - **Array literals** — `[1, 2, 3]`.
763
+ - **Index access on data** — `docs[0]`, `docs[0].objectsCount`. The
764
+ index goes on a **bare variable** (grammar restriction), so pull
765
+ nested arrays into one first: `docs = res.body; n = docs[0].count;`.
766
+ Indexing a **Locator** is rejected — disambiguate with chain methods
767
+ (`.filter(...)`), and `arr[i] = v` assignment stays unsupported.
768
+ - **Object literals — as call arguments only** (`click(loc, {force:
769
+ true})`); a standalone `x = {name: 'x'}` is rejected.
770
+ - **Member access** — `row.email` (dot form; `obj['key']` doesn't
771
+ parse).
647
772
  - **Method chains** — `getByRole('row').filter({hasText:'X'}).click()`.
648
773
  - **Backticks** — multi-line raw strings, no `${}` interpolation.
649
774
  - **Booleans, numbers, strings, `null`**.
650
775
 
651
- Not supported (and intentionally so): arrow functions, async/await
652
- (everything is sequenced by the AST executor), classes, modules,
653
- promises, `try/catch`. Errors thrown from a primitive abort the
654
- scenario; if the runtime is paused (debugger / MCP step mode), the
655
- failure is captured for inspection.
776
+ Not supported (and intentionally so): `while` / `do…while` /
777
+ `continue` (bound loops keep every scenario terminating), `++`/`--`,
778
+ arrow functions, async/await (everything is sequenced by the AST
779
+ executor), classes, modules, promises, `try/catch`. Errors thrown from
780
+ a primitive abort the scenario; if the runtime is paused (debugger /
781
+ MCP step mode), the failure is captured for inspection.
656
782
 
657
783
  See `vendor/dsl/EXTENSIONS.md` for the
658
784
  exact grammar deltas from the upstream parser.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unotest/web",
3
- "version": "0.9.1",
3
+ "version": "0.10.0",
4
4
  "description": "AI-native E2E testing for web applications. MCP server (run_test / step / resume / inspect_runtime / agent_fix) + CLI runner + JavaScript DSL scenarios on a sandboxed AST engine + semantic DOM snapshots.",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -71,42 +71,51 @@
71
71
  "README.md"
72
72
  ],
73
73
  "dependencies": {
74
+ "@faker-js/faker": "^10.5.0",
74
75
  "@modelcontextprotocol/sdk": "^1.0.4",
75
76
  "chokidar": "^4.0.3",
76
77
  "dotenv": "^16.4.5",
77
- "playwright": "^1.49.0",
78
+ "playwright": "^1.51.0",
78
79
  "tsx": "^4.19.2",
79
80
  "yaml": "^2.6.0",
80
81
  "zod": "^3.23.8",
81
- "@unotest/core": "^0.9.1",
82
- "@unotest/dsl": "^0.9.1",
83
- "@unotest/protocol": "^0.9.1",
84
- "@unotest/viewer": "^0.9.1"
82
+ "@unotest/core": "^0.10.0",
83
+ "@unotest/dsl": "^0.10.0",
84
+ "@unotest/protocol": "^0.10.0",
85
+ "@unotest/viewer": "^0.10.0",
86
+ "@unotest/grounder-client": "^0.10.0"
85
87
  },
86
88
  "devDependencies": {
87
89
  "@types/node": "^22.10.0",
88
90
  "javascript-obfuscator": "^4.1.1",
89
91
  "tsup": "^8.5.1",
90
- "typescript": "^5.7.2"
92
+ "typescript": "^5.7.2",
93
+ "@unotest/grounder": "^0.10.0"
91
94
  },
92
95
  "scripts": {
93
96
  "typecheck": "tsc --noEmit",
94
97
  "design": "npx serve -l 3111 design",
95
98
  "test": "node --import tsx --test --test-reporter=spec 'src/**/*.test.ts' 'scripts/**/*.test.mjs' 'evals/**/*.test.ts'",
96
99
  "compile": "tsup",
97
- "compile:all": "pnpm -C ../unotest-dsl compile && pnpm -C ../unotest-web compile && pnpm -C ../unotest-viewer compile",
100
+ "compile:all": "pnpm -C ../dsl compile && pnpm compile && pnpm -C ../viewer compile",
98
101
  "lint:scenarios": "tsx src/runner/cli.ts lint",
99
102
  "smoke:bundle": "node scripts/smoke-bundle.mjs",
100
103
  "check:docs-sync": "node scripts/check-docs-sync.mjs",
101
104
  "check:no-internal-refs": "node scripts/check-no-internal-refs.mjs",
102
105
  "check:no-cyrillic": "node scripts/check-no-cyrillic.mjs",
103
- "check:surface": "pnpm check:no-internal-refs && pnpm check:no-cyrillic && pnpm check:skill-prompt-sync",
106
+ "check:surface": "pnpm check:no-internal-refs && pnpm check:no-cyrillic && pnpm check:skill-prompt-sync && pnpm check:skills-built",
104
107
  "check:skill-prompt-sync": "node scripts/check-skill-prompt-sync.mjs",
108
+ "check:skills-built": "node scripts/build-skills.mjs --check",
109
+ "build:skills": "node scripts/build-skills.mjs",
105
110
  "check:tarball": "node scripts/check-tarball.mjs",
106
111
  "check:sibling-versions": "node scripts/check-sibling-versions.mjs",
107
112
  "build:guides": "node scripts/build-guides.mjs",
108
113
  "prepublish:check": "node scripts/prepublish-check.mjs",
114
+ "evals:chain": "tsx evals/chain.ts",
115
+ "evals:replay": "tsx evals/replay.ts",
109
116
  "evals:run": "tsx evals/run.ts",
117
+ "evals:drive": "tsx evals/drive.ts",
118
+ "evals:ground-bench": "tsx evals/ground-bench.ts",
110
119
  "evals:prepare": "tsx evals/prepare.ts",
111
120
  "evals:check": "tsx evals/check.ts",
112
121
  "evals:bless": "tsx evals/bless.ts",