@unotest/web 0.17.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/write-e2e-test/SKILL.md +5 -0
- package/.claude/skills/write-e2e-test-ground/SKILL.md +5 -0
- package/CHANGELOG.md +133 -0
- package/README.md +8 -0
- package/bin/unotest-web.js +18 -0
- package/dist/config/schema.js +1 -1
- package/dist/driver/index.d.ts +2 -2
- package/dist/driver/index.js +1 -1
- package/dist/dsl/index.d.ts +9 -5
- package/dist/dsl/index.js +1 -1
- package/dist/dsl/web-dsl-language-service.d.ts +35 -1
- package/dist/dsl/web-dsl-language-service.js +1 -1
- package/dist/inspection/page-inject.d.ts +1 -1
- package/dist/{interfaces-elRn0llQ.d.ts → interfaces-B-FxA_qn.d.ts} +7 -1
- package/dist/mcp/server.js +1 -1
- package/dist/runner/cli.js +1 -1
- package/dist/runner/init/chrome-probe.js +1 -1
- package/dist/runner/init.d.ts +14 -1
- package/dist/runner/init.js +1 -1
- package/dist/runner/install-chromium.js +1 -1
- package/dist/runner/prepare-fix.js +1 -1
- package/dist/runner/scaffold-workspace.js +1 -1
- package/dist/runner/serve-fixture.js +1 -1
- package/dist/runner/web-runner-adapter.js +1 -1
- package/guides/dsl-reference.md +44 -2
- package/package.json +12 -8
- package/types/unotest-dsl.d.ts +714 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
function _0x5857(){const _0x3f1ac3=['zgvMAw5LuhjVCgvYDhK','mZqYDeHjtuD0','iYbaDw5VDgvZDc93zwiG4OcuigD1AwrLigzVCIbbssbHz2vUDhmGkgfUzcbODw1HBNmPcGPuAgLZihbYB2PLy3qGDxnLCYbByeb1BM90zxn0l3DLyMbDkgH0DhbZoI8VD3D3lM5WBwPZlMnVBs9WywnRywDLl0b1BM90zxn0l3DLyIKkzM9YigvUzc10BY1LBMqGDgvZDgLUzYbVzIb3zwiGyxbWBgLJyxrPB25ZlGOkiYmGv3jPDgLUzYbHihrLC3qG4OcuihvZzsb0AguGC2TPBgWGkYbnq1akcKzVCIbbtLKGCMvXDwvZDcb0BYb3CML0zsWGCMvJB3jKlcbVCIbYDw4Gyw4GztjLihrLC3q6cGOXlIbpCgvUihrOzsaQkMb3CML0zs1LmMuTDgvZDgaQkIbZA2LSBcdIGjqGyc5JBgf1zguVC2TPBgXZl3DYAxrLlwuYzs10zxn0l1nlsuXmlM1KyaOGicaOAw4Gq2XHDwrLienVzguGEw91ignHBIbHBhnVihj1BIbGl3DYAxrLlwuYzs10zxn0ycKG4OcuigfUzcbMB2XSB3CGAxqUcJiUierYAxzLihrOzsbICM93C2vYihrOCM91z2GGDgHLicOQyhvUB3rLC3qTD2vIycbnq1aGDg9VBhmQkJOGyg5LD19JB250zxH0ycdIHPikicaGygv4CgXVCMvFC3rHCNrGiokgKIbGzxHWBg9Yzv9ZDgvWycdIHPiGygDLDf9WywDLx3nUyxbZAg90ycdIHPiGyhj1BL90zxn0yc4kcKrVie5pvcbOyw5Klwf1DgHVCIb0zxn0CYbIBgLUzcbVCIbTyxaGDgHLihbYB2PLy3qGD2L0AcbGzMLUzgaVygXZyc9GyxDRycdIGjqGDgHLcNnRAwXSj3mGugHHC2uGmcbUyw1LCYb0AguGzxHHy3qGzMLSzxmGDg8GCMvHzc4GuNvUBMfIBguSignVChKTCgfZDgvHyMXLcMv4yw1WBgvZigXPDMuGAw4GyhvUB3rLC3qVztjLl2v4yw1WBgvZl2aUcGOJiYbmyxLVDxqkcI0GyhvUB3rLC3qVztjLlZXMzwf0DxjLpI88BMfTzt4UANnGiokaLcb0zxn0ihnJzw5HCMLVCYWGz3jVDxbLzcbIEsbMzwf0DxjLl3bHz2ukicaOB25Ligb0zxn0xYPGigz1BMn0Aw9UihbLCIbMAwXLks4GkIPszxf1AxjLzdOQkIbLDMvYEsbZy2vUyxjPBYbSAxzLCYbPBIbHcIaGzMvHDhvYzsbZDwjMB2XKzxiUieeGDgvZDcbMAwXLihbSywnLzcbKAxjLy3rSEsbPBIbGDw5VDgvZDc9LmMuVycbPCYbYzwPLy3rLzaOGigj5ihrOzsbSAw50zxiGkgbSAw50oNnJzw5HCMLVlwLUlxjVB3rGks4klsbGDw5VDgvZDc9LmMuVx2HLBhbLCNmVycdIGjqGChjVAMvJDc1ZCgvJAwzPyYbOzwXWzxjZicH2AxnPyMXLihrVigfSBcbZy2vUyxjPB3mPcI0GyhvUB3rLC3qVztjLl190zw1WBgf0zs5QC2aG4Ocuihn0yxj0Aw5NlxbVAw50ihrLBxbSyxrLicHJB3b5igLUDg8GysbMzwf0DxjLigzVBgrLCIKkcImJierttcbJB252zw50Aw9UCWOkvgHLierttcbPCYbHihn0CMLJDcbkuYbZDwjZzxqGCgfYC2vKigj5ieb1BM90zxn0l2rZBc4Gtwv0Ag9KignOywLUCYWGB3b0Aw9UCY0kB2jQzwn0CYWGyw5KihzHCMLHyMXLCYbHCMuGywXSB3DLzc4GtxvSDgKTBgLUzsbZDhjPBMDZihvZzqPIywnRDgLJA3mGyNv0igaKEY4UlN1GigLUDgvYCg9SyxrPB24GAxmGzM9YyMLKzgvUicHZyw5KyM94igjVDw5Kyxj5iokaLaPWyxnZihzHBhvLCYb2AweGCg9ZAxrPB25HBcbHCMDZks4kcIOQrxzLCNKGC3rLCcbTDxn0ihnPDcbPBNnPzguGysbGC3rLCcGIzgvZy3jPChrPB24IlcaOksa9pIb7iokaPIb9kwaGyMXVy2SGkgXPBNrLCGPLBMzVCMnLCYKUkIOGvgHLihrPDgXLigLZihbSywLUluvUz2XPC2GGAw50zw50oYb0AguGC3rLChmGAw5ZAwrLigfYzsb0AgukAw1WBgvTzw50yxrPB24UifDOzw4GysbZDgvWigXHDgvYigjYzwfRCYaOC2vSzwn0B3iGzhjPzNqPlcb5B3uGCMvHzcb0AgukDgL0BguGDg8GDw5KzxjZDgfUzcb3Agf0ihrOzsbNCM91Ccb3yxmGDhj5Aw5NihrVigrVigfUzcbYzxbHAxiGAxqUieDYB3vWigj5cMLUDgvUDcWGB25LigjSB2nRihbLCIbSB2DPy2fSignODw5RoGOkygbGANmkzNvUy3rPB24GDgvZDf9SB2DPBIGPihSkicbZDgvWkcjtAwDUigLUigfZihrOzsbKzw1VihvZzxiIlcaOksa9pIb7cIaGicbNB3rVkcDODhrWCZOVl2fWCc5LEgfTCgXLlMnVBs9SB2DPBICPoWOGicaGzMLSBcHNzxrcEuXHyMvSkcDfBwfPBcCPlcaNzgvTB0bLEgfTCgXLlMnVBsCPoWOGicaGy2XPy2SOz2v0qNLsB2XLkcDIDxr0B24Nlcb7BMfTztOGj0XVzYbPBID9ksK7cIaGFsK7cGOGihn0zxaOiKrHC2HIB2fYzcbZAg93CYb0AguGC2LNBMvKlwLUihvZzxiIlcaOksa9pIb7cIaGicbHC3nLCNruzxH0kgDLDej5uM9SzsGNAgvHzgLUzYCPlcaNv2vSy29TzsCPoWOGih0PoWP9cMbGyaOkkIPcyxnLifvstcdIGjqGD3jPDguGCMvSyxrPDMuGCgf0AhmUkIOGyefquf9cqvnfx1vstgaGkgLUigb1BM90zxn0lY5LBNzGksbPCYb0AgukyxbWj3mGyMfZztSGygDVDg8OjY9SB2DPBICPycbYzxnVBhzLCYbHz2fPBNn0igL0lIbeB24NDcbJB25JyxrLBMf0zqOOygDVDg8Oqvbqx0jbu0vFvvjmicSGjY9SB2DPBICPycKG4OcuigP1C3qGCgfZCYb0AguGCgf0AdOkcMbGygPZcMDVDg8OjY9SB2DPBICPoWPMAwXSkgDLDej5tgfIzwWOj1bHC3n3B3jKjYKSifrfu1rFvvnfuL9qqvntv09srcK7cMbGyaOkkIPfBNzPCM9UBwvUDhmUkIOGt3zLCNjPzguGyefquf9cqvnfx1vstgaGkgfUzcbHBNKGDMfYksbWzxiGzw52AxjVBM1LBNqGD2L0AaPVDMvYBgf5igzPBgvZiokaLcbGDw5VDgvZDc8Uzw52lNn0ywDPBMDGlcbGDw5VDgvZDc8Uzw52lNbYB2r1y3rPB25GicHZzwnYzxrZoGPGDw5VDgvZDc8UC2vJCMv0CY48zw52pMaPlIbtzwXLy3qGB25Ligf0ihj1BIb0Aw1LoIbGBNb4ieb1BM90zxn0l3DLyIbLmMuGpg5HBwu+cI0Tzw52ihn0ywDPBMDGlIbuAguGB3zLCMXHEsbSyxLLCNmGB3zLCIb0AguGyMfZzsbGlMvUDMaGkg92zxjSyxKGD2LUCYKUcGOQkKv4DgvYBMfSihzHCMLHyMXLCYaMihnLy3jLDhm6kIOGCMvMzxjLBMnLigXVz2LUCYaVihrVA2vUCYbIEsbHigjHCMukyfvquevsx1noquTfycbUyw1LiokaLcbYzxnVBhzLzcbMCM9Tigb1BM90zxn0lY5LBNzGicHUB3jTywWPig9Yigb1BM90zxn0lY5ZzwnYzxrZyaOOC2vJCMv0lcbTyxnRzwqGAw4GBg9NCYKUie5VigbLBNyOkwaVyhnLy3jLDcGPycb3CMfWCgvYlIbbigXVD2vYy2fZzsbUyw1LigLZigfUcMLUlxnJzw5HCMLVigjPBMrPBMC7igfUihvUA25VD24Gyfvquevsx1noquTfycbMywLSCYb0AguGCNvUigfZA2LUzYb5B3uGDg8GywrKigL0cNrVigb1BM90zxn0lY5LBNzGlGOkkIPtzwXLy3rVCIbOAwvYyxjJAhKGkeqTmJiG4OcuigXPBNrLCIbLBMzVCMnLCYK6kIOkms4GygDLDej5vgvZDeLKkgLKkwaG4Ocuig1VC3qGC3rHyMXLcJiUigbNzxrcEvjVBguOCM9SzsWGE25HBwv9kwaG4OcuihnLBwfUDgLJlcbHmtf5lwf3yxjLcJmUigbNzxrcEuXHyMvSkhrLEhqPycdIGjqGzM9YigzVCM0GzMLLBgrZcJqUigbNzxrcEvrLEhqODgv4DcLGiokaLcbMB3iGDw5PCxvLihrLEhqkns4GygXVy2f0B3iOy3nZkwaG4OcuigXHC3qGCMvZB3j0icHSAw50zxiGD2fYBNmPcGPgDwXSihjLzMvYzw5JzsbZAgLWCgvKihDPDgGGDgHLihbHy2THz2u6cI0Gyg5VzgvFBw9KDwXLCY9aDw5VDgvZDc93zwiVz3vPzgvZl2rZBc1YzwzLCMvUy2uUBwrGiokaLcbeu0WGzNvUy3rPB25ZicSGBgLUDgvYignVzgvZcGOJiYbsDw5UAw5NicHdteKPcGOTigbUChGGqhvUB3rLC3qVD2vIiguYzsa8zMvHDhvYzt4Vpg5HBwu+ycdIGjqGCNvUigeGC2nLBMfYAw8GyNKGBMfTzqOTigbUChGGqhvUB3rLC3qVD2vIigXPBNrGiokaLcbZDgf0AwmGy2HLy2SGB2yGywXSihnJzw5HCMLVCYaRigHLBhbLCNmklsbGBNb4ieb1BM90zxn0l3DLyIbTy3bGiokaLcbZDgfYDcb0AguGtunqihnLCNzLCIbMB3iGywDLBNqGy29UDhjVBaOkiYmGvMLHie1ducaOq2XHDwrLienVzguGlYbdBgf1zguGrgvZA3rVCcaVien1CNnVCIKkcLrOzsbnq1aGC2vYDMvYigv4Cg9Zzxm6cI0Gyhj1BL90zxn0ig5HBwu9iJXUyw1LpIiGBw9Kzt0IC3rLCciGCgf1C2vpBKzHAwX1CMu9Dhj1zwaG4Ocuihj1BIb3AxrOihn0zxaTBw9KzqOTigbZDgvWycaVigbYzxn1BwvGiokaLcbHzhzHBMnLig9Uzsbbu1qGBM9KzsaVihj1BIb1BNrPBcbUzxH0ihbHDxnLcI0GygLUC3bLy3rFCNvUDgLTzwaG4Ocuign1CNjLBNqGC3rHDguSigXHC3qGzxjYB3iSigXVy2fSCYbKDw1WcI0GygfIB3j0x3j1BNrPBwvGiokaLcbRAwXSigeGCgf1C2vKihj1BNrPBwukcKzVCIbHz2vUDc1MAxGGD29YA2zSB3DZig9UigzSywT5ihrLC3rZoIbGywDLBNrFzML4ihrLC3rjzd0IpgLKpIjGihjLDhvYBNmGyqPZDhj1y3r1CMvKignVBNrLEhqGyNvUzgXLicHZzwuGrc0YnsdIGjqGD2uGBMv2zxiGy2fSBcbmte1Zig9Yigf1Dg8TyxbWBhKkzgLMzNmSihrOzsbKAwzMignVBwvZigzYB20GEw91CIbnq1aTAg9ZDcbHz2vUDcKUcG','mZi1mty4oe5rvMr2tW','ztjL','mti4uhzZAwju','Dw5VDgvZDa','C2nHzMzVBgrxB3jRC3bHy2u','BMfTzq','ChvZAa','Dw5VDgvZDc5JB25MAwCUBwPZ','mtq3odjbEMXpufy','mtfivvjYrhq','nJaXnti3meHUBfrUEG','ndaWndK0zMv6u0ns','odiZnZuWvxbcy0zi','cIaGlY8GDMLLD2vYoIb7cIaGlY8GicbWB3j0oIa1mtCZlcaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGic8VigrLzMf1Bhq6ihjHBMrVBsbMCMvLihbVCNqkicaVlYaGigjYB3DZzxi6ihrYDwuSicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GzgvMyxvSDdOGDhj1zsaOyxv0BY1VCgvUig9Uigb2Awv3zxjGkqOGic8Vih0ScN07cG','Dw5VDgvZDenVBMzPz01QCW','lMvUDG','iYb1BM90zxn0lxDLyIdIGjqGC2vJCMv0ihnJzw5HCMLVihzHCMLHyMXLCY4Gq3jLyxrLzcbIEsbGAw5PDgaSigDPDgLNBM9YzwqUcImkiYbtyw1LieTfwt1wquXvrsbMB3jTyxqGyxmGDw5VDgvZDc8Uzw52lcbIDxqGDMfSDwvZigHLCMuGyxjLihrYzwf0zwqGyxmkiYbtrunsrvq6ihrOzxKGyxjLig1HC2TLzcaOC2HVD24GyxmGyokaUxnLy3jLDdPlrvNIGlPGksbHBNL3AgvYzsb0AguGCNvUBMvYig9YcImGtunqigrLyNvNigXVzYb3B3vSzcbVDgHLCNDPC2uGD3jPDguGDgHLBsdIGjqGzMLSBcGPihzHBhvLCYWGvvjmCYWGzxzHBhvHDgukiYbZDhjPBMDZlIbszwzLCMvUy2uGDgHLBsbPBIbHihnJzw5HCMLVigj5ihrOzwLYigjHCMuGvvbqrvjFu05bs0uGBMfTzsWGDgHLcImGC2fTzsb3yxKGyxmGlMvUDIb2yxjPywjSzxm6cImkiYaGigzPBgWOz2v0qNLmywjLBcGNugfZC3DVCMqNksWGueftu1DpuKqPoWOJcImGu2vJCMv0CYbHCMuGtK9uigv4Cg9YDgvKihrVihn1yNbYB2nLC3nLCYaOC2HLBgWOksKG4OcuihrOzxKGC3rHEsbPBIb0AgukiYb2yxjPywjSzsbZDg9Yzs4GqsbZDwjWCM9JzxnZihrOyxqGz2vUDwLUzwX5ig5LzwrZig9UzsaOysbSAxn0zw5LCIb3AxrOigekiYb0B2TLBIKGz2v0CYbPDcb2AweGDgHLigv4CgXPy2L0igfSBg93BgLZDcbPBIb1BM90zxn0lMnVBMzPzY4QoGOJicaGC2fUzgjVEdOGEYbLEhbVCNrtzwnYzxrZoIbBj1rps0voj10GFqOJifb1DcbUB24TC2vJCMv0ihzHBhvLCYaOvvjmCYWGzw1HAwXZlcbPzhmPigLUihvUB3rLC3qVlMvUDI4kiWOJiezmruvux0vyqu1qteukte9hsu49cLbbu1nxt1jepqPut0TftJ0k','y2HHBM5LBa','nJy3ntGWovzztLfZCa','lY8Gtw92zsaRihjLBMfTzsb0AgLZigzPBguGDg8GpgzLyxr1CMu+lZX5B3vYx25HBwu+lMPZicHLlMCUcI8Vigf1DgGVBg9NAw4UANmPigfUzcb0AguGzNvUy3rPB24GyMvSB3CGDg8GDgvZDf88Ew91CL9Uyw1LpIGPlIbty2vUyxjPB3mGBgL2zqOVlYbPBIbMzwf0DxjLihn1yMzVBgrLCNmSie5pvcb0AguGztjLihjVB3qG4OcuihrOzsbSAw50zxiGkgXPBNq6C2nLBMfYAw8TAw4TCM9VDcKklY8GCMvQzwn0CYbHihrLC3qGzMLSzsbWBgfJzwqGzgLYzwn0BhKGAw4GDw5VDgvZDc9LmMuVlIbuAguGBg9HzgvYigrLCML2zxmGDgHLcI8VigvUDhj5ig5HBwuGzNjVBsb0AguGzMLSzsbIyxnLBMfTzsdIGjqGA2vIywiTy2fZzsbKyxnOzxmGyMvJB21LihvUzgvYC2nVCMvZlGOklY8GrxzLCNKGzxHLy3v0ywjSzsbZDgvWig11C3qGC2L0igLUC2LKzsbHihn0zxaOiI4UlIiSicGPid0+ihSG4OcMih0PigjSB2nRlIbuAguklY8GDgL0BguGAxmGysbWBgfPBI1fBMDSAxnOigrLC2nYAxb0Aw9Uig9MihrOzsbNCM91CdSGDgHLihn0zxbZigLUC2LKzsbHCMuklY8GDgHLigLTCgXLBwvUDgf0Aw9UlIbhCM91CcbIEsbPBNrLBNqGkfnLDhvWic8Grw50zxiGlYbby3qGlYbbC3nLCNqGB3iklY8GD2HHDgv2zxiGCMvHzhmGD2vSBcKG4Ocuig9UzsbIBg9JAYbWzxiGBg9NAwnHBcbJAhvUAY4kcMz1BMn0Aw9UihrLC3rFEw91CL9Uyw1Lx2HLCMuOksb7cIaGC3rLCcGIu2vLzcbHigTUB3DUihvZzxiGDMLHiercic8GqvbjigzPEhr1CMvZigzYB20Gx2HLBhbLCNmViIWGkcKGpt4GEWOGicaGlY8GicaGD2LWzv9LmMvFDxnLCNmOktSkicaGic8VicaGihvZzxjFAwqGpsbZzwvKx3vZzxiOj2fSAwnLqgv4yw1WBguUy29TjYWGj3nLy3jLDcCPoWOGih0PoWOkicbZDgvWkcjtAwDUigLUigfZihrOzsbZzwvKzwqGDxnLCIiSicGPid0+ihSkicaGigDVDg8Oj2H0DhbZoI8VEw91CI1HChaUDgvZDc9SB2DPBICPoWOGicaGlY8GicaGzMLSBcHNzxrcEuXHyMvSkcDfBwfPBcCPlcaNywXPy2vazxHHBxbSzs5JB20NktSkicaGic8VicaGigzPBgWOz2v0qNLmywjLBcGNugfZC3DVCMqNksWGj3nLy3jLDcCPoWOGicaGlY8GicaGy2XPy2SOz2v0qNLsB2XLkcDIDxr0B24Nlcb7BMfTztOGj0XVzYbPBID9ksK7cIaGFsK7cGOGihn0zxaOiKfZC2vYDcb0AguGzgfZAgjVyxjKihnOB3DZihrOzsbZAwDUzwqTAw4GDxnLCIiSicGPid0+ihSkicaGic8VicaGigfZC2vYDfvYBcGNl2rHC2HIB2fYzcCPoWOGicaGlY8GicaGyxnZzxj0vgv4DcHNzxrcEvjVBguOj2HLywrPBMCNksWGj1DLBgnVBwuSiefSAwnLjYK7cIaGicaVlYaGicbJB3vUDca9igrIuxvLCNKOj1nftevdvcbJB3vUDcGQksbguK9nihvZzxjZifDirvjfigfJDgL2zsa9ihrYDwuNktSkicaGic8VicaGigfZC2vYDfrYDwuOy291BNqGpIaWlcaNzxHWzwn0zwqGyxqGBgvHC3qGB25LigfJDgL2zsb1C2vYjYK7cIaGFsK7cN0k','zxHHBxbSzxm','lY8GrxHHBxbSzsaWmIdIGjqGzMLSBcbHBIbPBNb1DcaRigfZC2vYDcb0AguGyxbWihjLywn0zwqUcI8VcI8ViefNywLUC3qGCgXHEwDYB3vUzc51BM90zxn0lMnVBs9Zy2vUyxjPB3mVyMLNlxrHyMXLlIbezw1VBNn0CMf0zxmGz2v0qNLsB2XLcI8VigzVCIbHigXHyMvSBgvKigLUChv0lcb0ExbLzcbPBNb1Dcb2AweGzMLSBcGPlcbHBMqGysbSB2nHDg9Yig1LDgHVzc1JAgfPBGOVlYaOz2v0qNLsB2XLkcDYB3CNks5MAwX0zxiOE2HHC1rLEhr9ks5MAxjZDcGPksbPBIbHBIbHC3nLCNrPB24UcI8Vifj1BIb3AxrOoIaGBNb4ieb1BM90zxn0l3DLyIbLmMuGzxHHBxbSzxmVmdiTzM9YBs1MAwXScGPMDw5JDgLVBIb0zxn0x2zVCM1FzMLSBf9OyxbWEv9WyxrOkcKGEWOGihn0zxaOiKzPBhrLCIb0AguGqMLNifrHyMXLigj5igeGBMfTzsiSicGPid0+ihSkicaGigDVDg8OjY9Zy2vUyxjPB3mVyMLNlxrHyMXLjYK7cIaGicbMAwXSkgDLDej5uM9SzsGNDgv4DgjVEcCSihTUyw1LoIaNrMLSDgvYigj5ig5HBwuNFsKSicDvBweGuxvPBM4NktSkicb9ktSkcIaGC3rLCcGIrMLSDgvYAw5NihjLDMvHBhmGDgHLienSzwfYigzPBhrLCIbJB250CM9SigfUzcbTyxrJAgLUzYbYB3DZiIWGkcKGpt4GEWOGicaGyxnZzxj0vMLZAwjSzsHNzxrcEvjVBguOj2j1DhrVBICSihTUyw1LoIaNq2XLyxiGzMLSDgvYj30PktSkicaGigfZC2vYDfzPC2LIBguOz2v0qNLsB2XLkcDYB3CNks5MAwX0zxiOE2HHC1rLEhq6icDvBweGuxvPBM4NFsKUzMLYC3qOksK7cIaGFsK7cN0k','nZq2mZjxwxn3rei','iYmGrtjfihrLC3rPBMCGD2L0AcbaDw5VDgvZDc93zwikcKbbr0vovfmUBwqkcKzVCIbHBNKGCMvXDwvZDcb0BYb3CML0zsWGCMvJB3jKlcbVCIbYDw4Gyw4Gzw5KlxrVlwvUzcb0zxn0lcbVCgvUihrOzqPGD3jPDguTztjLlxrLC3rGihnRAwXSicHVCIbYDw4Gyc93CML0zs1LmMuTDgvZDgaPigfUzcbKCML2zsb0AguGyNjVD3nLCIb0AhjVDwDOcNrOzsbGDw5VDgvZDc13zwjGie1ducb0B29SCYaOyg5LD19JB250zxH0ycdIHPiGygv4CgXVCMvFC3rLCgaG4OAsigbNzxrFCgfNzv9ZBMfWC2HVDgak4OAsigbYDw5FDgvZDgaPlIbeBYbUB3qGAgfUzc1HDxrOB3iGDgvZDhmGyMXPBMqGB3iGBwfWihrOzsbWCM9Qzwn0ihDPDgGkygzPBMrGl2bSC2aVygf3A2aG4OcuihrOzsbZA2LSBcDZifbOyxnLidaGBgLZDhmGDgHLigzPBgvZihrVihjLywqU','icaVlYbJAgfUBMvSoIaNy2HYB21LjYWGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8Gj2nOCM9TzsCGlYaNBxnLzgDLjYaVig51BgWGkgj1BMrSzwqP','nfbiugDcAq','mta0CvDuuw5n','nM1twgXgBG','zw52rxHHBxbSzq'];_0x5857=function(){return _0x3f1ac3;};return _0x5857();}function _0x40c2(_0x1a14e8,_0x8060){_0x1a14e8=_0x1a14e8-0xe2;const _0x585740=_0x5857();let _0x40c213=_0x585740[_0x1a14e8];if(_0x40c2['rlkwjw']===undefined){var _0x5f22fd=function(_0x96728){const _0x150442='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xa7faa4='',_0x296507='';for(let _0xfed815=0x0,_0x29f04e,_0x4be1f3,_0x3c3da6=0x0;_0x4be1f3=_0x96728['charAt'](_0x3c3da6++);~_0x4be1f3&&(_0x29f04e=_0xfed815%0x4?_0x29f04e*0x40+_0x4be1f3:_0x4be1f3,_0xfed815++%0x4)?_0xa7faa4+=String['fromCharCode'](0xff&_0x29f04e>>(-0x2*_0xfed815&0x6)):0x0){_0x4be1f3=_0x150442['indexOf'](_0x4be1f3);}for(let _0x3a6c61=0x0,_0x147e5f=_0xa7faa4['length'];_0x3a6c61<_0x147e5f;_0x3a6c61++){_0x296507+='%'+('00'+_0xa7faa4['charCodeAt'](_0x3a6c61)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x296507);};_0x40c2['NokQWa']=_0x5f22fd,_0x40c2['PyPjbi']={},_0x40c2['rlkwjw']=!![];}const _0x3df17c=_0x585740[0x0],_0x4a324d=_0x1a14e8+_0x3df17c,_0x13c5f0=_0x40c2['PyPjbi'][_0x4a324d];return!_0x13c5f0?(_0x40c213=_0x40c2['NokQWa'](_0x40c213),_0x40c2['PyPjbi'][_0x4a324d]=_0x40c213):_0x40c213=_0x13c5f0,_0x40c213;}const _0x497181=_0x40c2;(function(_0x47ea01,_0x5e3e95){const _0x30b637={_0x273946:0xf3,_0x3b3e9a:0xf5,_0x3f4e6d:0xe9,_0x1c436f:0xf7,_0x54f010:0xf4,_0x5c35e0:0xeb,_0x49b246:0xe5},_0x400ae8=_0x40c2,_0x7c2859=_0x47ea01();while(!![]){try{const _0x2a184d=-parseInt(_0x400ae8(0xed))/0x1*(parseInt(_0x400ae8(_0x30b637._0x273946))/0x2)+-parseInt(_0x400ae8(0xf6))/0x3*(-parseInt(_0x400ae8(0xe4))/0x4)+-parseInt(_0x400ae8(_0x30b637._0x3b3e9a))/0x5+-parseInt(_0x400ae8(0xe6))/0x6*(-parseInt(_0x400ae8(0xfd))/0x7)+-parseInt(_0x400ae8(0x101))/0x8*(parseInt(_0x400ae8(_0x30b637._0x3f4e6d))/0x9)+parseInt(_0x400ae8(_0x30b637._0x1c436f))/0xa*(-parseInt(_0x400ae8(_0x30b637._0x54f010))/0xb)+-parseInt(_0x400ae8(_0x30b637._0x5c35e0))/0xc*(-parseInt(_0x400ae8(_0x30b637._0x49b246))/0xd);if(_0x2a184d===_0x5e3e95)break;else _0x7c2859['push'](_0x7c2859['shift']());}catch(_0x43e833){_0x7c2859['push'](_0x7c2859['shift']());}}}(_0x5857,0xa3546));var __defProp=Object[_0x497181(0xe8)],__name=(_0xa7faa4,_0x296507)=>__defProp(_0xa7faa4,_0x497181(0xf0),{'value':_0x296507,'configurable':!![]});import{mkdir,writeFile}from'fs/promises';import{existsSync}from'fs';import{join}from'path';var templates={'scenarioTemplate':_0x497181(0xfe),'agentsMd':_0x497181(0xea),'claudeMdBody':_0x497181(0xe2),'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':_0x497181(0x100)},'secretsExample':_0x497181(0xfb),'envExample':'#\x20unotest-web\x20—\x20copied\x20to\x20unotest/.env\x20by\x20`init`\x20if\x20not\x20present.\x0a#\x0a#\x20Fill\x20in\x20values\x20that\x20apply\x20to\x20your\x20project.\x20Variables\x20are\x20loaded\x20by\x20the\x0a#\x20runner\x20at\x20scenario\x20start.\x0a#\x0a#\x20Reference\x20any\x20variable\x20from\x20a\x20scenario\x20by\x20its\x20bare\x20UPPER_SNAKE\x20name\x20—\x0a#\x20no\x20env()/secret()\x20wrapper:\x0a#\x0a#\x20\x20\x20goto(\x27/login\x27);\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#\x20relative\x20—\x20see\x20APP_BASE_URL\x0a#\x20\x20\x20fill(getByLabel(\x27Email\x27),\x20TEST_USER_EMAIL);\x0a#\x0a#\x20Secret\x20values\x20(passwords,\x20tokens)\x20go\x20in\x20unotest/.secrets\x20instead\x20—\x20same\x0a#\x20format,\x20but\x20masked\x20in\x20every\x20log.\x20An\x20unknown\x20UPPER_SNAKE\x20name\x20fails\x20the\x0a#\x20run\x20with\x20a\x20clear\x20\x22add\x20it\x20to\x20unotest/.env\x22\x20message.\x0a#\x0a#\x20Environments:\x20override\x20any\x20value\x20per\x20environment\x20with\x20overlay\x20files\x20—\x0a#\x20unotest/.env.staging,\x20unotest/.env.production\x20(secrets:\x20.secrets.<env>).\x0a#\x20Select\x20one:\x20`npx\x20@unotest/web\x20e2e\x20<name>\x20--env\x20staging`.\x20The\x20overlay\x20layers\x0a#\x20over\x20this\x20base\x20file\x20(overlay\x20wins);\x20the\x20shell\x20environment\x20wins\x20over\x20both.\x0a\x0a#\x20---\x20App\x20under\x20test\x20--------------------------------------------------------\x0a#\x20The\x20app\x27s\x20base\x20URL.\x20Relative\x20goto(\x27/path\x27)\x20resolves\x20against\x20it\x20(wired\x20into\x0a#\x20Playwright\x27s\x20baseURL\x20automatically),\x20so\x20write\x20goto(\x27/login\x27)\x20—\x20never\x0a#\x20goto(APP_BASE_URL\x20+\x20\x27/login\x27).\x20Also\x20used\x20for\x20assertUrl\x20substring\x20matching.\x0a#\x20Defaults\x20to\x20the\x20unotest\x20playground\x20so\x20the\x20example\x20scenarios\x20run\x20out\x20of\x20the\x0a#\x20box;\x20point\x20it\x20at\x20your\x20own\x20app.\x0aAPP_BASE_URL=https://playground.unotest.com\x0a\x0a#\x20---\x20Database\x20--------------------------------------------------------------\x0a#\x20Used\x20by\x20dbQuery\x20/\x20dbExec.\x20Install\x20the\x20matching\x20driver\x20as\x20a\x20peer-dep:\x0a#\x20\x20\x20pnpm\x20add\x20-D\x20pg\x20@types/pg\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20for\x20postgresql://\x0a#\x20\x20\x20pnpm\x20add\x20-D\x20mysql2\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20for\x20mysql://\x0a#\x20(SQLite\x20via\x20better-sqlite3\x20—\x20install\x20only\x20if\x20needed.)\x0aDATABASE_URL=postgresql://postgres:postgres@localhost:5432/myapp_test\x0a\x0a#\x20---\x20Extra\x20API\x20hosts\x20-------------------------------------------------------\x0a#\x20apiCall(...)\x20goes\x20against\x20sandbox.apiBaseUrl\x20from\x20unotest.config.*\x20by\x0a#\x20default.\x20A\x20setup\x20that\x20talks\x20to\x20MORE\x20hosts\x20names\x20them\x20here\x20and\x20picks\x20one\x0a#\x20per\x20call\x20by\x20the\x20variable\x20NAME\x20(URLs\x20never\x20appear\x20in\x20scenarios):\x0a#\x20\x20\x20apiCall(\x27POST\x27,\x20\x27/things\x27,\x20body,\x20headers,\x20{base:\x20\x27API_BASE_CHAT\x27})\x0a#\x20API_BASE_CHAT=https://chatbackend.example.com\x0a\x0a#\x20---\x20Runner\x20--------------------------------------------------------------\x0a#\x20Show\x20the\x20browser\x20window\x20during\x20runs\x20(default:\x20headless).\x0a#\x20UNOTEST_HEADED=1\x0a#\x20Slow\x20each\x20Playwright\x20op\x20by\x20N\x20ms\x20(default:\x200).\x20Pairs\x20with\x20HEADED\x20for\x0a#\x20watching\x20the\x20agent\x20at\x20work.\x0a#\x20UNOTEST_SLOW_MO=100\x0a#\x20Browser\x20used\x20by\x20the\x20CLI\x20(chromium\x20|\x20firefox\x20|\x20webkit).\x20Default:\x20chromium.\x0a#\x20UNOTEST_BROWSER=chromium\x0a#\x20Default\x20action\x20timeout\x20in\x20milliseconds\x20—\x20applied\x20to\x20every\x20click\x20/\x0a#\x20fill\x20/\x20waitFor\x20/\x20etc.\x20via\x20Playwright\x27s\x20setDefaultTimeout.\x20Default\x203000.\x0a#\x20Bump\x20if\x20your\x20app\x20is\x20slow;\x20per-action\x20override\x20via\x20the\x20action\x27s\x0a#\x20options.timeout.\x20Playwright\x27s\x20stock\x2030000\x20strands\x20interactive\x20agents.\x0a#\x20UNOTEST_DEFAULT_TIMEOUT_MS=3000\x0a#\x20Default\x20navigation\x20timeout\x20in\x20milliseconds\x20—\x20applied\x20to\x20goto\x20/\x20reload\x20/\x0a#\x20waitForUrl,\x20click\x27s\x20post-action\x20navigation\x20wait,\x20AND\x20setPage\x27s\x20wait\x20for\x20a\x0a#\x20newly\x20opened\x20tab\x20to\x20appear\x20+\x20load.\x20Real-world\x20pages\x20routinely\x20take\x205–15s\x0a#\x20to\x20fire\x20\x27load\x27;\x20keep\x20this\x20separate\x20from\x20the\x20action\x20timeout\x20above.\x0aUNOTEST_DEFAULT_NAVIGATION_TIMEOUT_MS=15000\x0a\x0a#\x20Per-run\x20wall-clock\x20budget\x20in\x20milliseconds\x20—\x20a\x20run\x20aborts\x20once\x20it\x20exceeds\x0a#\x20this.\x20Guards\x20against\x20a\x20stuck\x20scenario\x20hanging\x20the\x20agent\x20indefinitely.\x0a#\x20Invalid\x20or\x20non-positive\x20values\x20fall\x20back\x20to\x20the\x20default.\x20Default\x20300000.\x0a#\x20UNOTEST_MAX_DURATION_MS=300000\x0a\x0a#\x20---\x20Locale\x20+\x20timezone\x20---------------------------------------------------\x0a#\x20Pin\x20the\x20browser\x20context\x27s\x20Accept-Language\x20/\x20navigator.language.\x20Without\x0a#\x20these,\x20tests\x20inherit\x20the\x20OS\x20locale\x20—\x20accessible-name\x20selectors\x0a#\x20(`getByRole(name)`)\x20on\x20i18n\x27d\x20apps\x20will\x20break\x20across\x20machines.\x0a#\x20UNOTEST_LOCALE=en-US\x0a#\x20UNOTEST_TIMEZONE=UTC\x0a\x0a#\x20---\x20Recording\x20(explore_*)\x20----------------------------------------------\x0a#\x20Grace\x20window\x20in\x20ms\x20after\x20each\x20explore_step\x20action.\x20If\x20a\x20click\x20opens\x20a\x0a#\x20new\x20tab/popup,\x20the\x20MCP\x20server\x20auto-switches\x20the\x20active\x20page\x20to\x20it\x20AND\x0a#\x20inserts\x20setPage(N)\x20into\x20the\x20generated\x20DSL\x20trace.\x20Set\x20to\x200\x20to\x20disable\x0a#\x20(strict\x20mode).\x20Has\x20NO\x20effect\x20on\x20run_test\x20—\x20there\x20setPage\x20already\x20waits\x0a#\x20for\x20the\x20tab\x20to\x20appear\x20on\x20its\x20own.\x20Range:\x20[0,\x2010000].\x20Default:\x202000.\x0a#\x20UNOTEST_POPUP_GRACE_MS=2000\x0a\x0a#\x20---\x20Logging\x20-------------------------------------------------------------\x0a#\x20debug\x20|\x20info\x20|\x20warn\x20|\x20error.\x20Default:\x20info.\x0aUNOTEST_LOG_LEVEL=info\x0a\x0a#\x20---\x20Debug\x20diagnostics\x20---------------------------------------------------\x0a#\x20Off\x20by\x20default.\x20Set\x20to\x201\x20to\x20record\x20a\x20structured\x20JSONL\x20log\x20+\x20per-call\x0a#\x20folders\x20under\x20unotest/.debug/\x20—\x20then\x20restart\x20the\x20MCP\x20server.\x20Each\x20tool\x0a#\x20call\x20gets\x20a\x20folder\x20with\x20the\x20full\x20snapshot\x20JSON,\x20the\x20outerHTML\x20of\x20the\x0a#\x20element\x20a\x20locator\x20resolved\x20to,\x20and\x20(on\x20failure)\x20page.html\x20+\x20a\x20screenshot,\x0a#\x20so\x20you\x20(and\x20the\x20AI\x20agent,\x20via\x20get_last_mcp_log)\x20can\x20verify\x20the\x20snapshot\x0a#\x20didn\x27t\x20glitch\x20and\x20the\x20locator\x20hit\x20the\x20right\x20element\x20—\x20instead\x20of\x20guessing\x0a#\x20from\x20a\x20truncated\x20error.\x20audit_last_run\x20then\x20checks\x20the\x20run\x20against\x20the\x0a#\x20testing\x20rules.\x20Also\x20turns\x20on\x20full\x20CLI\x20stack\x20traces.\x20Use\x20\x27summary\x27\x20for\x20a\x0a#\x20lighter\x20log\x20(tool\x20+\x20snapshot\x20layers\x20only,\x20no\x20artifacts).\x20NOTE:\x20tool\x0a#\x20arguments\x20are\x20logged\x20verbatim,\x20so\x20a\x20fill()\x20with\x20a\x20password\x20lands\x20in\x20the\x0a#\x20local\x20(gitignored)\x20log\x20—\x20keep\x20this\x20off\x20unless\x20you\x27re\x20debugging.\x0a#\x20UNOTEST_DEBUG=1\x0a\x0a#\x20---\x20Capture\x20(viewer\x20inspector)\x20------------------------------------------\x0a#\x20Record\x20the\x20browser\x20console\x20+\x20network\x20requests\x20into\x20each\x20run\x27s\x20dir\x20so\x20the\x0a#\x20viewer\x27s\x20Console\x20/\x20Network\x20inspector\x20tabs\x20are\x20populated.\x20Set\x20to\x200\x20to\x20disable.\x0aUNOTEST_NETWORK=1\x0aUNOTEST_CONSOLE=1\x0a#\x20Set\x20to\x201\x20to\x20also\x20capture\x20a\x20screenshot\x20after\x20EVERY\x20executed\x20step\x20(into\x0a#\x20unotest/.runs/<runId>/screenshot/;\x20click\x20a\x20step\x20row\x20in\x20the\x20viewer\x20to\x20see\x0a#\x20it).\x20On\x20failure,\x20a\x20screenshot\x20+\x20page.html\x20always\x20land\x20in\x0a#\x20unotest/.runs/<runId>/failure/\x20—\x20no\x20flag\x20needed.\x0a#\x20UNOTEST_STEP_SCREENSHOTS=1\x0a'};function unotestConfigMjs(_0xfed815){const _0x3b5dcb={_0x4d3c43:0xe3},_0x177f7a=_0x497181,_0x29f04e=_0xfed815===void 0x0?_0x177f7a(_0x3b5dcb._0x4d3c43):'\x20\x20channel:\x20'+JSON['stringify'](_0xfed815)+',';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\x20\x20//\x20sandbox:\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\x20\x20\x20\x20\x20//\x20apiCall\x20/\x20upload\x20/\x20dbQuery\x20/\x20shell\x0a\x20\x20//\x20\x20\x20apiBaseUrl:\x20\x27https://api.your-app.test\x27,\x20\x20\x20\x20\x20//\x20base\x20for\x20apiCall(\x27POST\x27,\x20\x27/path\x27,\x20…)\x0a\x20\x20//\x20\x20\x20uploadDir:\x20\x27unotest/fixtures\x27,\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20root\x20for\x20upload(\x27doc.pdf\x27)\x20paths;\x0a\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20default:\x20project\x20root.\x20Uploads\x20may\x0a\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20not\x20escape\x20it\x20(relative\x20paths\x20only).\x0a\x20\x20//\x20\x20\x20database:\x20\x27postgresql://localhost:5432/app_test\x27,\x20\x20//\x20dbQuery\x20/\x20dbExec\x0a\x20\x20//\x20},\x0a'+_0x29f04e+_0x177f7a(0xf8);}__name(unotestConfigMjs,_0x497181(0xf9));async function scaffoldWorkspace(_0x4be1f3,_0x3c3da6={}){const _0x2caa1c={_0x11c807:0xee,_0x453e70:0xec,_0x3ca658:0xf2,_0x4564cf:0xe7,_0x557cdc:0xec,_0x2203ab:0xff,_0x4a7070:0xf1},_0x177bba=_0x497181,_0x3a6c61=[],_0x147e5f=[];await mkdir(join(_0x4be1f3,_0x177bba(_0x2caa1c._0x11c807),'e2e','examples'),{'recursive':!![]}),await mkdir(join(_0x4be1f3,'unotest',_0x177bba(_0x2caa1c._0x453e70),'_helpers'),{'recursive':!![]});const _0x45ac5e=[{'rel':_0x177bba(_0x2caa1c._0x3ca658),'content':unotestConfigMjs(_0x3c3da6[_0x177bba(0xfc)])},{'rel':join('unotest',_0x177bba(0xfa)),'content':templates[_0x177bba(_0x2caa1c._0x4564cf)]},{'rel':join(_0x177bba(_0x2caa1c._0x11c807),_0x177bba(_0x2caa1c._0x557cdc),_0x177bba(_0x2caa1c._0x2203ab),'01-smoke.js'),'content':templates[_0x177bba(_0x2caa1c._0x2203ab)]['01-smoke.js']}];for(const {rel:_0x59f261,content:_0x30c80c}of _0x45ac5e){const _0x178730=join(_0x4be1f3,_0x59f261);if(existsSync(_0x178730)){_0x147e5f['push'](_0x59f261);continue;}await writeFile(_0x178730,_0x30c80c),_0x3a6c61[_0x177bba(_0x2caa1c._0x4a7070)](_0x59f261);}return{'projectRoot':_0x4be1f3,'created':_0x3a6c61,'skipped':_0x147e5f};}__name(scaffoldWorkspace,_0x497181(0xef));export{scaffoldWorkspace};
|
|
1
|
+
const _0x48c23e=_0x17f0;function _0x17f0(_0x436a80,_0x5a2fd0){_0x436a80=_0x436a80-0x162;const _0x3af9cf=_0x3af9();let _0x17f068=_0x3af9cf[_0x436a80];if(_0x17f0['SCUVqB']===undefined){var _0x5438f3=function(_0x158e2e){const _0x289373='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x12425='',_0x388d17='';for(let _0x52fc5e=0x0,_0x80a71c,_0x30aff0,_0x5f1cf3=0x0;_0x30aff0=_0x158e2e['charAt'](_0x5f1cf3++);~_0x30aff0&&(_0x80a71c=_0x52fc5e%0x4?_0x80a71c*0x40+_0x30aff0:_0x30aff0,_0x52fc5e++%0x4)?_0x12425+=String['fromCharCode'](0xff&_0x80a71c>>(-0x2*_0x52fc5e&0x6)):0x0){_0x30aff0=_0x289373['indexOf'](_0x30aff0);}for(let _0x113a65=0x0,_0x1b73ff=_0x12425['length'];_0x113a65<_0x1b73ff;_0x113a65++){_0x388d17+='%'+('00'+_0x12425['charCodeAt'](_0x113a65)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x388d17);};_0x17f0['mEiXjn']=_0x5438f3,_0x17f0['wTLriN']={},_0x17f0['SCUVqB']=!![];}const _0x1303db=_0x3af9cf[0x0],_0x495d71=_0x436a80+_0x1303db,_0x4a2e0f=_0x17f0['wTLriN'][_0x495d71];return!_0x4a2e0f?(_0x17f068=_0x17f0['mEiXjn'](_0x17f068),_0x17f0['wTLriN'][_0x495d71]=_0x17f068):_0x17f068=_0x4a2e0f,_0x17f068;}(function(_0x265f0f,_0x5b4f46){const _0x51867b={_0x3c4b1b:0x16b,_0x402737:0x176},_0x33061e=_0x17f0,_0x21083f=_0x265f0f();while(!![]){try{const _0x3a9d61=parseInt(_0x33061e(0x17d))/0x1*(parseInt(_0x33061e(0x17b))/0x2)+parseInt(_0x33061e(0x16e))/0x3+-parseInt(_0x33061e(0x17c))/0x4+-parseInt(_0x33061e(0x173))/0x5+parseInt(_0x33061e(_0x51867b._0x3c4b1b))/0x6*(parseInt(_0x33061e(0x168))/0x7)+parseInt(_0x33061e(_0x51867b._0x402737))/0x8*(parseInt(_0x33061e(0x16c))/0x9)+parseInt(_0x33061e(0x17e))/0xa;if(_0x3a9d61===_0x5b4f46)break;else _0x21083f['push'](_0x21083f['shift']());}catch(_0x26bb84){_0x21083f['push'](_0x21083f['shift']());}}}(_0x3af9,0xe5dbd));var __defProp=Object[_0x48c23e(0x17a)],__name=(_0x12425,_0x388d17)=>__defProp(_0x12425,'name',{'value':_0x388d17,'configurable':!![]});function _0x3af9(){const _0x40ad8a=['nZeXntK0me1tq2njqW','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','ANnJB25MAwDkC29U','nJrHBxfMwfq','ChvZAa','ANnJB25MAwCUANnVBG','iYb1BM90zxn0lxDLyIdIGjqGC2vJCMv0ihnJzw5HCMLVihzHCMLHyMXLCY4Gq3jLyxrLzcbIEsbGAw5PDgaSigDPDgLNBM9YzwqUcImkiYbtyw1LieTfwt1wquXvrsbMB3jTyxqGyxmGDw5VDgvZDc8Uzw52lcbIDxqGDMfSDwvZigHLCMuGyxjLihrYzwf0zwqGyxmkiYbtrunsrvq6ihrOzxKGyxjLig1HC2TLzcaOC2HVD24GyxmGyokaUxnLy3jLDdPlrvNIGlPGksbHBNL3AgvYzsb0AguGCNvUBMvYig9YcImGtunqigrLyNvNigXVzYb3B3vSzcbVDgHLCNDPC2uGD3jPDguGDgHLBsdIGjqGzMLSBcGPihzHBhvLCYWGvvjmCYWGzxzHBhvHDgukiYbZDhjPBMDZlIbszwzLCMvUy2uGDgHLBsbPBIbHihnJzw5HCMLVigj5ihrOzwLYigjHCMuGvvbqrvjFu05bs0uGBMfTzsWGDgHLcImGC2fTzsb3yxKGyxmGlMvUDIb2yxjPywjSzxm6cImkiYaGigzPBgWOz2v0qNLmywjLBcGNugfZC3DVCMqNksWGueftu1DpuKqPoWOJcImGu2vJCMv0CYbHCMuGtK9uigv4Cg9YDgvKihrVihn1yNbYB2nLC3nLCYaOC2HLBgWOksKG4OcuihrOzxKGC3rHEsbPBIb0AgukiYb2yxjPywjSzsbZDg9Yzs4GqsbZDwjWCM9JzxnZihrOyxqGz2vUDwLUzwX5ig5LzwrZig9UzsaOysbSAxn0zw5LCIb3AxrOigekiYb0B2TLBIKGz2v0CYbPDcb2AweGDgHLigv4CgXPy2L0igfSBg93BgLZDcbPBIb1BM90zxn0lMnVBMzPzY4QoGOJicaGC2fUzgjVEdOGEYbLEhbVCNrtzwnYzxrZoIbBj1rps0voj10GFqOJifb1DcbUB24TC2vJCMv0ihzHBhvLCYaOvvjmCYWGzw1HAwXZlcbPzhmPigLUihvUB3rLC3qVlMvUDI4kiWOJiezmruvux0vyqu1qteukte9hsu49cLbbu1nxt1jepqPut0TftJ0k','zgvMAw5LuhjVCgvYDhK','mK55sLrMAW','nJK0nte2ofjbDxbNDW','nJm4mJKXugTkyKHn','mJuYmda1mJbZzvDhyvC','lY8Gtw92zsaRihjLBMfTzsb0AgLZigzPBguGDg8GpgzLyxr1CMu+lZX5B3vYx25HBwu+lMPZicHLlMCUcI8Vigf1DgGVBg9NAw4UANmPigfUzcb0AguGzNvUy3rPB24GyMvSB3CGDg8GDgvZDf88Ew91CL9Uyw1LpIGPlIbty2vUyxjPB3mGBgL2zqOVlYbPBIbMzwf0DxjLihn1yMzVBgrLCNmSie5pvcb0AguGztjLihjVB3qG4OcuihrOzsbSAw50zxiGkgXPBNq6C2nLBMfYAw8TAw4TCM9VDcKklY8GCMvQzwn0CYbHihrLC3qGzMLSzsbWBgfJzwqGzgLYzwn0BhKGAw4GDw5VDgvZDc9LmMuVlIbuAguGBg9HzgvYigrLCML2zxmGDgHLcI8VigvUDhj5ig5HBwuGzNjVBsb0AguGzMLSzsbIyxnLBMfTzsdIGjqGA2vIywiTy2fZzsbKyxnOzxmGyMvJB21LihvUzgvYC2nVCMvZlGOklY8GrxzLCNKGzxHLy3v0ywjSzsbZDgvWig11C3qGC2L0igLUC2LKzsbHihn0zxaOiI4UlIiSicGPid0+ihSG4OcMih0PigjSB2nRlIbuAguklY8GDgL0BguGAxmGysbWBgfPBI1fBMDSAxnOigrLC2nYAxb0Aw9Uig9MihrOzsbNCM91CdSGDgHLihn0zxbZigLUC2LKzsbHCMuklY8GDgHLigLTCgXLBwvUDgf0Aw9UlIbhCM91CcbIEsbPBNrLBNqGkfnLDhvWic8Grw50zxiGlYbby3qGlYbbC3nLCNqGB3iklY8GD2HHDgv2zxiGCMvHzhmGD2vSBcKG4Ocuig9UzsbIBg9JAYbWzxiGBg9NAwnHBcbJAhvUAY4kcMz1BMn0Aw9UihrLC3rFEw91CL9Uyw1Lx2HLCMuOksb7cIaGC3rLCcGIu2vLzcbHigTUB3DUihvZzxiGDMLHiercic8GqvbjigzPEhr1CMvZigzYB20Gx2HLBhbLCNmViIWGkcKGpt4GEWOGicaGlY8GicaGD2LWzv9LmMvFDxnLCNmOktSkicaGic8VicaGihvZzxjFAwqGpsbZzwvKx3vZzxiOj2fSAwnLqgv4yw1WBguUy29TjYWGj3nLy3jLDcCPoWOGih0PoWOkicbZDgvWkcjtAwDUigLUigfZihrOzsbZzwvKzwqGDxnLCIiSicGPid0+ihSkicaGigDVDg8Oj2H0DhbZoI8VEw91CI1HChaUDgvZDc9SB2DPBICPoWOGicaGlY8GicaGzMLSBcHNzxrcEuXHyMvSkcDfBwfPBcCPlcaNywXPy2vazxHHBxbSzs5JB20NktSkicaGic8VicaGigzPBgWOz2v0qNLmywjLBcGNugfZC3DVCMqNksWGj3nLy3jLDcCPoWOGicaGlY8GicaGy2XPy2SOz2v0qNLsB2XLkcDIDxr0B24Nlcb7BMfTztOGj0XVzYbPBID9ksK7cIaGFsK7cGOGihn0zxaOiKfZC2vYDcb0AguGzgfZAgjVyxjKihnOB3DZihrOzsbZAwDUzwqTAw4GDxnLCIiSicGPid0+ihSkicaGic8VicaGigfZC2vYDfvYBcGNl2rHC2HIB2fYzcCPoWOGicaGlY8GicaGyxnZzxj0vgv4DcHNzxrcEvjVBguOj2HLywrPBMCNksWGj1DLBgnVBwuSiefSAwnLjYK7cIaGicaVlYaGicbJB3vUDca9igrIuxvLCNKOj1nftevdvcbJB3vUDcGQksbguK9nihvZzxjZifDirvjfigfJDgL2zsa9ihrYDwuNktSkicaGic8VicaGigfZC2vYDfrYDwuOy291BNqGpIaWlcaNzxHWzwn0zwqGyxqGBgvHC3qGB25LigfJDgL2zsb1C2vYjYK7cIaGFsK7cN0k','C2nHzMzVBgrxB3jRC3bHy2u','lY8GrxHHBxbSzsaWmsdIGjqGC21VA2u6ig5HDMLNyxrLicSGy2XPy2SGkYbvuKWGyxnZzxj0Aw9UlGOVlWOVlYbuAguGBwLUAw1HBcb0AhjLzs1ZDgvWihbHDhrLCM4UieHPDhmGCgXHEwDYB3vUzc51BM90zxn0lMnVBsbZBYbUBYbWCM9Qzwn0cI8VihnLDhvWigLZig5LzwrLzc4GuNvUihDPDgG6icbUChGGqhvUB3rLC3qVD2vIiguYzsbLEgfTCgXLCY8Wms1ZBw9RzqOkzNvUy3rPB24GDgvZDf9ZBw9Rzv9WBgf5z3jVDw5KkcKGEWOGihn0zxaOiK9Wzw4GDgHLiejPzYbuywjSzsbZy2vUyxjPBYbMCM9TihrOzsbWBgf5z3jVDw5KigLUzgv4iIWGkcKGpt4GEWOGicaGz290BYGNlYCPoWOGicaGy2XPy2SOz2v0qNLsB2XLkcDSAw5RjYWGE25HBwu6icDcAwCGvgfIBguNlcbLEgfJDdOGDhj1zx0PktSkicaGigfZC2vYDfvYBcGNl3nJzw5HCMLVCY9IAwCTDgfIBguNktSkicb9ktSkFqO','x2HLBhbLCNm','lY8GrxHHBxbSzsaWmIdIGjqGzMLSBcbHBIbPBNb1DcaRigfZC2vYDcb0AguGyxbWihjLywn0zwqUcI8VcI8ViefNywLUC3qGCgXHEwDYB3vUzc51BM90zxn0lMnVBs9Zy2vUyxjPB3mVyMLNlxrHyMXLlIbezw1VBNn0CMf0zxmGz2v0qNLsB2XLcI8VigzVCIbHigXHyMvSBgvKigLUChv0lcb0ExbLzcbPBNb1Dcb2AweGzMLSBcGPlcbHBMqGysbSB2nHDg9Yig1LDgHVzc1JAgfPBGOVlYaOz2v0qNLsB2XLkcDYB3CNks5MAwX0zxiOE2HHC1rLEhr9ks5MAxjZDcGPksbPBIbHBIbHC3nLCNrPB24UcI8Vifj1BIb3AxrOoIaGBNb4ieb1BM90zxn0l3DLyIbLmMuGzxHHBxbSzxmVmdiTzM9YBs1MAwXScGPMDw5JDgLVBIb0zxn0x2zVCM1FzMLSBf9OyxbWEv9WyxrOkcKGEWOGihn0zxaOiKzPBhrLCIb0AguGqMLNifrHyMXLigj5igeGBMfTzsiSicGPid0+ihSkicaGigDVDg8OjY9Zy2vUyxjPB3mVyMLNlxrHyMXLjYK7cIaGicbMAwXSkgDLDej5uM9SzsGNDgv4DgjVEcCSihTUyw1LoIaNrMLSDgvYigj5ig5HBwuNFsKSicDvBweGuxvPBM4NktSkicb9ktSkcIaGC3rLCcGIrMLSDgvYAw5NihjLDMvHBhmGDgHLienSzwfYigzPBhrLCIbJB250CM9SigfUzcbTyxrJAgLUzYbYB3DZiIWGkcKGpt4GEWOGicaGyxnZzxj0vMLZAwjSzsHNzxrcEvjVBguOj2j1DhrVBICSihTUyw1LoIaNq2XLyxiGzMLSDgvYj30PktSkicaGigfZC2vYDfzPC2LIBguOz2v0qNLsB2XLkcDYB3CNks5MAwX0zxiOE2HHC1rLEhq6icDvBweGuxvPBM4NFsKUzMLYC3qOksK7cIaGFsK7cN0k','iYb1BM90zxn0lxDLyIdIGjqGy29WAwvKihrVihvUB3rLC3qVlMvUDIbIEsbGAw5PDgaGAwyGBM90ihbYzxnLBNqUcImkiYbgAwXSigLUihzHBhvLCYb0Agf0igfWCgX5ihrVihLVDxiGChjVAMvJDc4GvMfYAwfIBgvZigfYzsbSB2fKzwqGyNKGDgHLcImGCNvUBMvYigf0ihnJzw5HCMLVihn0yxj0lGOJcImGuMvMzxjLBMnLigfUEsb2yxjPywjSzsbMCM9TigeGC2nLBMfYAw8GyNKGAxrZigjHCMuGvvbqrvjFu05bs0uGBMfTzsdIGjqkiYbUBYbLBNyOks9ZzwnYzxqOksb3CMfWCgvYoGOJcImGicbNB3rVkcCVBg9NAw4NktSGicaGicaGicaGicaGicaGicaGicaGicaGicmGCMvSyxrPDMuG4OcuihnLzsbbufbFqKftrv9vuKWkiYaGigzPBgWOz2v0qNLmywjLBcGNrw1HAwWNksWGvevtvf9vu0vsx0vnquLmktSkiWOJifnLy3jLDcb2ywX1zxmGkhbHC3n3B3jKCYWGDg9Rzw5ZksbNBYbPBIb1BM90zxn0lY5ZzwnYzxrZigLUC3rLywqG4OcuihnHBwukiYbMB3jTyxqSigj1DcbTyxnRzwqGAw4GzxzLCNKGBg9NlIbbBIb1BMTUB3DUifvquevsx1noquTfig5HBwuGzMfPBhmGDgHLcImGCNvUihDPDgGGysbJBgvHCIaIywrKigL0ihrVihvUB3rLC3qVlMvUDIiGBwvZC2fNzs4kiWOJievUDMLYB25Tzw50CZOGB3zLCNjPzguGyw55ihzHBhvLihbLCIbLBNzPCM9UBwvUDcb3AxrOig92zxjSyxKGzMLSzxmG4OcucImGDw5VDgvZDc8Uzw52lNn0ywDPBMCSihvUB3rLC3qVlMvUDI5WCM9KDwn0Aw9UicHZzwnYzxrZoIaUC2vJCMv0CY48zw52pIKUcImGu2vSzwn0ig9UztOGyg5WEcbaDw5VDgvZDc93zwiGztjLidXUyw1LpIaTlwvUDIbZDgfNAw5Nyc4GvgHLig92zxjSyxKGBgf5zxjZcImGB3zLCIb0AgLZigjHC2uGzMLSzsaOB3zLCMXHEsb3Aw5ZktSGDgHLihnOzwXSigvUDMLYB25Tzw50ihDPBNmGB3zLCIbIB3rOlGOkiYaTls0GqxbWihvUzgvYihrLC3qGls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0kiYbuAguGyxbWj3mGyMfZzsbvuKWUifjLBgf0AxzLigDVDg8OjY9WyxrOjYKGCMvZB2X2zxmGywDHAw5ZDcbPDcaOD2LYzwqGAw50BWOJifbSyxL3CMLNAhqNCYbIyxnLvvjmigf1Dg9TyxrPy2fSBhKPlcbZBYb3CML0zsbNB3rVkcCVBg9NAw4NksdIGjqGBMv2zxikiYbNB3rVkefquf9cqvnfx1vstcaRicCVBg9NAw4Nks4GqwXZBYb1C2vKigzVCIbHC3nLCNrvCMWGC3vIC3rYAw5Nig1HDgnOAw5NlGOJierLzMf1BhrZihrVihrOzsb1BM90zxn0ihbSyxLNCM91BMqGC28GDgHLigv4yw1WBguGC2nLBMfYAw9Zihj1BIbVDxqGB2yGDgHLcImGyM94oYbWB2LUDcbPDcbHDcb5B3vYig93BIbHChaUcKfquf9cqvnfx1vstd1ODhrWCZOVl3bSyxLNCM91BMqUDw5VDgvZDc5JB20kcImGls0TierHDgfIyxnLic0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0TcImGvxnLzcbIEsbKyLf1zxj5ic8GzgjfEgvJlIbjBNn0ywXSihrOzsbTyxrJAgLUzYbKCML2zxiGyxmGysbWzwvYlwrLCdOkiYaGihbUCg0GywrKic1eihbNieb0ExbLCY9WzYaGicaGicaGicaJigzVCIbWB3n0z3jLC3fSoI8VcImGicbWBNbTigfKzcaTrcbTExnXBdiGicaGicaGicaGicaGicaGiYbMB3iGBxLZCwW6lY8kiYaOu1fmAxrLihzPysbIzxr0zxiTC3fSAxrLmYdIGjqGAw5ZDgfSBcbVBMX5igLMig5LzwrLzc4PcKrbvefcqvnfx1vstd1WB3n0z3jLC3fSoI8VCg9ZDgDYzxm6Cg9ZDgDYzxnaBg9JywXOB3n0oJu0mZiVBxLHChbFDgvZDaOkiYaTls0GrxH0CMeGqvbjigHVC3rZic0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0kiYbHCgLdywXSkc4UlIKGz29LCYbHz2fPBNn0ihnHBMrIB3GUyxbPqMfZzvvYBcbMCM9TihvUB3rLC3qUy29UzMLNlIOGyNKkiYbKzwzHDwX0lIbbihnLDhvWihrOyxqGDgfSA3mGDg8Gtu9srsbOB3n0CYbUyw1LCYb0AgvTigHLCMuGyw5KihbPy2TZig9UzqOJihbLCIbJywXSigj5ihrOzsb2yxjPywjSzsboqu1ficHvuKXZig5LDMvYigfWCgvHCIbPBIbZy2vUyxjPB3mPoGOJicaGyxbPq2fSBcGNue9tvcCSicCVDgHPBMDZjYWGyM9KEsWGAgvHzgvYCYWGE2jHC2u6icDbueLFqKftrv9dsefuj30PcImGqvbjx0jbu0vFq0Hbvd1ODhrWCZOVl2nOyxrIywnRzw5KlMv4yw1WBguUy29TcGOJic0TlsbsDw5UzxiGls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0kiYbtAg93ihrOzsbICM93C2vYihDPBMrVDYbKDxjPBMCGCNvUCYaOzgvMyxvSDdOGAgvHzgXLC3mPlGOJifvot1rfu1rFsevbreveptekiYbtBg93igvHy2GGugXHExDYAwDODcbVCcbIEsboig1ZicHKzwzHDwX0oIaWks4GugfPCNmGD2L0AcbiruferuqGzM9YcImGD2f0y2HPBMCGDgHLigfNzw50igf0ihDVCMSUcImGvu5pvevtvf9tte9xx01ppteWmaOJiejYB3DZzxiGDxnLzcbIEsb0AguGq0XjicHJAhjVBwL1Bsb8igzPCMvMB3GGFcb3zwjRAxqPlIbezwzHDwX0oIbJAhjVBwL1Bs4kiYbvtK9urvnux0jst1Dtrvi9y2HYB21PDw0kiYbezwzHDwX0igfJDgLVBIb0Aw1LB3v0igLUig1PBgXPC2vJB25KCYdIGjqGyxbWBgLLzcb0BYbLDMvYEsbJBgLJAYaVcImGzMLSBcaVihDHAxrgB3iGlYbLDgmUihzPysbqBgf5D3jPz2H0j3mGC2v0rgvMyxvSDfrPBwvVDxqUierLzMf1BhqGmZaWmc4kiYbcDw1WigLMihLVDxiGyxbWigLZihnSB3C7ihbLCI1Hy3rPB24GB3zLCNjPzguGDMLHihrOzsbHy3rPB24NCWOJig9WDgLVBNmUDgLTzw91Dc4GugXHExDYAwDODcDZihn0B2nRidmWmdaWihn0CMfUzhmGAw50zxjHy3rPDMuGywDLBNrZlGOJifvot1rfu1rFrevgqvvmvf9usu1ft1vux01tptmWmdakiYbezwzHDwX0ig5HDMLNyxrPB24GDgLTzw91DcbPBIbTAwXSAxnLy29UzhmG4OcuigfWCgXPzwqGDg8Gz290BYaVihjLBg9HzcaVcImGD2fPDezVCLvYBcWGy2XPy2SNCYbWB3n0lwfJDgLVBIbUyxzPz2f0Aw9UihDHAxqSieforcbZzxrqywDLj3mGD2fPDcbMB3iGyqOJig5LD2X5ig9Wzw5Lzcb0ywiGDg8GyxbWzwfYicSGBg9Hzc4GuMvHBc13B3jSzcbWywDLCYbYB3v0Aw5LBhKGDgfRzsa14OctmtvZcImGDg8GzMLYzsaNBg9HzcC7igTLzxaGDgHPCYbZzxbHCMf0zsbMCM9TihrOzsbHy3rPB24GDgLTzw91DcbHyM92zs4kvu5pvevtvf9eruzbvuXux05bvKLhqvrjt05FveLnru9vvf9nuZ0XntaWmaOkiYbqzxiTCNvUihDHBgWTy2XVy2SGyNvKz2v0igLUig1PBgXPC2vJB25KCYdIGjqGysbYDw4GywjVCNrZig9Uy2uGAxqGzxHJzwvKCWOJihrOAxmUieD1yxjKCYbHz2fPBNn0igeGC3r1y2SGC2nLBMfYAw8GAgfUz2LUzYb0AguGywDLBNqGAw5KzwzPBML0zwX5lGOJieLUDMfSAwqGB3iGBM9UlxbVC2L0AxzLihzHBhvLCYbMywXSigjHy2SGDg8GDgHLigrLzMf1BhqUierLzMf1BhqGmZaWmdaWlGOJifvot1rfu1rFtufyx0rvuKfusu9ox01tptmWmdaWmaOkiYaTls0Gtg9JywXLicSGDgLTzxPVBMuGls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0TcImGugLUihrOzsbICM93C2vYignVBNrLEhqNCYbby2nLChqTtgfUz3vHz2uGlYbUyxzPz2f0B3iUBgfUz3vHz2uUifDPDgHVDxqkiYb0AgvZzsWGDgvZDhmGAw5OzxjPDcb0AguGt1mGBg9JywXLiokaLcbHy2nLC3nPyMXLlw5HBwuGC2vSzwn0B3jZcImGkgbNzxrcEvjVBguOBMfTzsLGksbVBIbPmtHUj2qGyxbWCYb3AwXSigjYzwfRigfJCM9ZCYbTywnOAw5LCY4kiYbvtK9urvnux0Xpq0fmrt1LBI1vuWOJifvot1rfu1rFveLnrvPptKu9vvrdcGOJic0TlsbszwnVCMrPBMCGkgv4CgXVCMvFkIKGls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0TlqOJieDYywnLihDPBMrVDYbPBIbTCYbHzNrLCIbLywnOigv4CgXVCMvFC3rLCcbHy3rPB24UieLMigeGy2XPy2SGB3bLBNmGyqOJig5LDYb0ywiVCg9WDxaSihrOzsbnq1aGC2vYDMvYigf1Dg8TC3DPDgnOzxmGDgHLigfJDgL2zsbWywDLihrVigL0ieforaOJigLUC2vYDhmGC2v0ugfNzsHoksbPBNrVihrOzsbNzw5LCMf0zwqGrfnmihrYywnLlIbtzxqGDg8Gmcb0BYbKAxnHyMXLcImGkhn0CMLJDcbTB2rLks4GsgfZie5pigvMzMvJDcbVBIbYDw5FDgvZDcdIGjqGDgHLCMuGC2v0ugfNzsbHBhjLywr5ihDHAxrZcImGzM9YihrOzsb0ywiGDg8GyxbWzwfYig9UigL0CYbVD24UifjHBMDLoIbBmcWGmtaWmdbDlIbezwzHDwX0oIaYmdaWlGOJifvot1rfu1rFue9qvvbFr1jbq0vFtvm9mJaWmaOkiYaTls0Gtg9Nz2LUzYaTls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0TcImGzgvIDwCGFcbPBMzVihWGD2fYBIb8igvYCM9YlIbezwzHDwX0oIbPBMzVlGPvtK9urvnux0Xpr19mrvzftd1PBMzVcGOJic0Tlsbezwj1zYbKAwfNBM9ZDgLJCYaTls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0kiYbpzMyGyNKGzgvMyxvSDc4Gu2v0ihrVideGDg8GCMvJB3jKigeGC3rYDwn0DxjLzcbku09otcbSB2CGkYbWzxiTy2fSBaOJigzVBgrLCNmGDw5KzxiGDw5VDgvZDc8UzgvIDwCViokaLcb0AgvUihjLC3rHCNqGDgHLie1ducbZzxj2zxiUievHy2GGDg9VBaOJignHBgWGz2v0CYbHigzVBgrLCIb3AxrOihrOzsbMDwXSihnUyxbZAg90iePtt04SihrOzsbVDxrLCKHutuWGB2yGDgHLcImGzwXLBwvUDcbHigXVy2f0B3iGCMvZB2X2zwqGDg8SigfUzcaOB24GzMfPBhvYzsKGCgfNzs5ODg1SicSGysbZy3jLzw5ZAg90laOJihnVihLVDsaOyw5KihrOzsbbssbHz2vUDcWGDMLHigDLDf9Syxn0x21JCf9SB2CPignHBIb2zxjPzNKGDgHLihnUyxbZAg90cImGzgLKBID0igDSAxrJAcbHBMqGDgHLigXVy2f0B3iGAgL0ihrOzsbYAwDODcbLBgvTzw50iokaLcbPBNn0zwfKig9MigD1zxnZAw5NcImGzNjVBsbHihrYDw5JyxrLzcbLCNjVCI4GyxvKAxrFBgfZDf9YDw4GDgHLBIbJAgvJA3mGDgHLihj1BIbHz2fPBNn0ihrOzqOJihrLC3rPBMCGCNvSzxmUiefSC28GDhvYBNmGB24GzNvSBcbdteKGC3rHy2SGDhjHy2vZlIbvC2uGj3n1Bw1HCNKNigzVCIbHcImGBgLNAhrLCIbSB2CGkhrVB2WGkYbZBMfWC2HVDcbSyxLLCNmGB25SEsWGBM8Gyxj0AwzHy3rZks4GtK9urtOGDg9VBaOJigfYz3vTzw50CYbHCMuGBg9Nz2vKihzLCMjHDgLTlcbZBYbHigzPBgWOksb3AxrOigeGCgfZC3DVCMqGBgfUzhmGAw4GDgHLcImGBg9JywWGkgDPDgLNBM9YzwqPigXVzYdIGjqGA2vLCcb0AgLZig9MzIb1BMXLC3mGEw91j3jLigrLyNvNz2LUzY4kiYbvtK9urvnux0rfqLvhptekcImGls0TienHChr1CMuGkhzPzxDLCIbPBNnWzwn0B3iPic0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0TlqOJifjLy29Yzcb0AguGyNjVD3nLCIbJB25ZB2XLicSGBMv0D29YAYbYzxf1zxn0CYbPBNrVigvHy2GGCNvUj3mGzgLYihnVihrOzqOJihzPzxDLCIDZienVBNnVBguGlYbozxr3B3jRigLUC3bLy3rVCIb0ywjZigfYzsbWB3b1Bgf0zwqUifnLDcb0BYaWihrVigrPC2fIBguUcLvot1rfu1rFtKvuv09ssZ0XcLvot1rfu1rFq09ou09mrt0XcImGu2v0ihrVideGDg8GywXZBYbJyxb0DxjLigeGC2nYzwvUC2HVDcbHzNrLCIbfvKvswsbLEgvJDxrLzcbZDgvWicHPBNrVcImGDw5VDgvZDc8UCNvUCY88CNvUswq+l3nJCMvLBNnOB3qVoYbJBgLJAYbHihn0zxaGCM93igLUihrOzsb2Awv3zxiGDg8GC2vLcImGAxqPlIbpBIbMywLSDxjLlcbHihnJCMvLBNnOB3qGkYbWywDLlMH0BwWGywX3yxLZigXHBMqGAw4kiYb1BM90zxn0lY5YDw5ZlZXYDw5jzd4VzMfPBhvYzs8G4Ocuig5VigzSywCGBMvLzgvKlGOJifvot1rfu1rFu1rfuf9tq1jfru5tse9uuZ0XcG','lMvUDG','iYmGrtjfihrLC3rPBMCGD2L0AcbaDw5VDgvZDc93zwikcKbbr0vovfmUBwqkcKzVCIbHBNKGCMvXDwvZDcb0BYb3CML0zsWGCMvJB3jKlcbVCIbYDw4Gyw4Gzw5KlxrVlwvUzcb0zxn0lcbVCgvUihrOzqPGD3jPDguTztjLlxrLC3rGihnRAwXSicHVCIbYDw4Gyc93CML0zs1LmMuTDgvZDgaPigfUzcbKCML2zsb0AguGyNjVD3nLCIb0AhjVDwDOcNrOzsbGDw5VDgvZDc13zwjGie1ducb0B29SCYaOyg5LD19JB250zxH0ycdIHPiGygv4CgXVCMvFC3rLCgaG4OAsigbNzxrFCgfNzv9ZBMfWC2HVDgak4OAsigbYDw5FDgvZDgaPlIbeBYbUB3qGAgfUzc1HDxrOB3iGDgvZDhmGyMXPBMqGB3iGBwfWihrOzsbWCM9Qzwn0ihDPDgGkygzPBMrGl2bSC2aVygf3A2aG4OcuihrOzsbZA2LSBcDZifbOyxnLidaGBgLZDhmGDgHLigzPBgvZihrVihjLywqU','zxHHBxbSzxm','icaVlYbJAgfUBMvSoIaNy2HYB21LjYWGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8Gj2nOCM9TzsCGlYaNBxnLzgDLjYaVig51BgWGkgj1BMrSzwqP','Dw5VDgvZDc5JB25MAwCUBwPZ','mdeTC21VA2uUANm','y2HHBM5LBa','n3fou2jYra','EWOGicjJB21WAwXLCK9WDgLVBNmIoIb7cIaGicaIy2HLy2TkCYi6igzHBhnLlaOGicaGiNrHCMDLDci6icjLCZiWmJiIlaOGicaGiMXPyIi6ifSIzxmYmdiYiL0ScIaGicaIDhLWzxmIoIbBxqOGih0ScIaGiMLUy2X1zguIoIbBcIaGicaIkIOVkI5QCYiScIaGicaIlI4VlNvUB3rLC3qVDhLWzxmVzw52lMqUDhmIlaOGicaGiI4Ul25VzgvFBw9KDwXLCY9aDw5VDgvZDc93zwiVDhLWzxmVDw5VDgvZDc1KC2WUzc50CYikicbDcN0k','C3rYAw5NAwz5','mJm2mtqYnKPkrwP0wa','mZiWmZm3uKnkC2Lc','Dw5VDgvZDa','nZKYoty5DgTODxjK','icbJAgfUBMvSoIa','zw52rxHHBxbSzq','ztjL','lY8GqhvUB3rLC3qVD2vIihbYB2PLy3qGy29UzMLNlIbbBgWGzMLLBgrZigfYzsbVChrPB25HBcdIGjqGzgvMyxvSDhmGyxbWBhKklY8GD2HLBIbVBwL0DgvKlGOVlWOVlYbtyxzLzcbHCYaUBwPZihnVihrOzsbYDw50Aw1LigXVywrZigL0igfZievttsbYzwDHCMrSzxnZig9MihrOzsbWCM9Qzwn0j3mklY8GCgfJA2fNzs5QC29Uicj0ExbLiIbMAwvSzc4GrM9YieLersbHDxrVy29TCgXLDguSihr5CguTAw1WB3j0ihrOzsbZy2HLBwe6cI8VcI8VicaGlYOQieb0ExbLihTqyxj0AwfSpgLTCg9YDcGNqhvUB3rLC3qVD2vIjYKUvw5VDgvZDenVBMzPzZ59icOVcI8VicaGzxHWB3j0igrLzMf1BhqGEYbIyxnLvxjSoIaNAhr0Chm6lY95B3vYlwfWCc50zxn0jYb9oWOklYOQieb0ExbLihTqyxj0AwfSpgLTCg9YDcGNqhvUB3rLC3qVD2vIjYKUvw5VDgvZDenVBMzPzZ59icOVcMv4Cg9YDcbKzwzHDwX0ihSkicaVlYbIyxnLvxjSoIaNAhr0Chm6lY95B3vYlwfWCc50zxn0jYWkicaVlYbICM93C2vYCZOGwYDJAhjVBwL1BsCSicDMAxjLzM94jYWGj3DLyMTPDcDDlcaGlY8Gq0KGB3zLCNjPzgukicaVlYb2Awv3Cg9YDdOGEYb3Awr0AdOGmti4mcWGAgvPz2H0oIa3mJaGFsWkicaVlYbYzxrYEtOGEYbJB3vUDdOGmsWGB246ifSNDhjHBNnPzw50j10GFsWGicaGicaGic8Vienjig92zxjYAwrLcIaGlY8GC3rVCMfNzvn0yxrLoIaNlNvUB3rLC3qVy2fJAguVyxv0Ac5QC29UjYWGicaGicaVlYbZzwuGAgvSCgvYCWOGic8VihnHBMrIB3G6ihSGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GyxbPq2fSBcaVihvWBg9HzcaVigrIuxvLCNKGlYbZAgvSBaOGic8VicaGyxbPqMfZzvvYBdOGj2H0DhbZoI8VyxbPlNLVDxiTyxbWlNrLC3qNlcaGicaGlY8GyMfZzsbMB3iGyxbPq2fSBcGNue9tvcCSicCVCgf0AcCSiokaPIKkicaVlYaGihvWBg9HzerPCJOGj3vUB3rLC3qVzML4DhvYzxmNlcaGicaGicaGicaGicaGic8VihjVB3qGzM9YihvWBg9HzcGNzg9JlNbKzICPihbHDgHZoWOGic8VicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GzgvMyxvSDdOGChjVAMvJDcbYB290lIbvCgXVywrZig1HEqOGic8VicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GBM90igvZy2fWzsbPDcaOCMvSyxrPDMuGCgf0AhmGB25SEsKUcIaGlY8GicbKyxrHyMfZztOGj3bVC3rNCMvZCwW6lY9SB2nHBgHVC3q6ntqZmI9HChbFDgvZDcCSicaVlYbKyLf1zxj5ic8GzgjfEgvJcIaGlY8GFsWk'];_0x3af9=function(){return _0x40ad8a;};return _0x3af9();}import{mkdir,writeFile}from'fs/promises';import{existsSync}from'fs';import{join}from'path';var templates={'jsconfigJson':_0x48c23e(0x169),'scenarioTemplate':_0x48c23e(0x17f),'agentsMd':_0x48c23e(0x174),'claudeMdBody':_0x48c23e(0x162),'examples':{'01-smoke.js':_0x48c23e(0x181),'02-form-fill.js':_0x48c23e(0x183)},'secretsExample':_0x48c23e(0x179),'envExample':_0x48c23e(0x184)};function unotestConfigMjs(_0x52fc5e){const _0x1e5e10={_0x1fb3f2:0x164,_0x5d5c8b:0x16f,_0x496348:0x172},_0x8e508d=_0x48c23e,_0x80a71c=_0x52fc5e===void 0x0?_0x8e508d(_0x1e5e10._0x1fb3f2):_0x8e508d(_0x1e5e10._0x5d5c8b)+JSON[_0x8e508d(0x16a)](_0x52fc5e)+',';return _0x8e508d(_0x1e5e10._0x496348)+_0x80a71c+'\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,'unotestConfigMjs');async function scaffoldWorkspace(_0x30aff0,_0x5f1cf3={}){const _0x4de31f={_0x408027:0x165,_0x275fb4:0x185,_0x2a3985:0x170,_0x371570:0x16d,_0x1645fc:0x171,_0x4aea3d:0x163},_0x34c5d1=_0x48c23e,_0x113a65=[],_0x1b73ff=[];await mkdir(join(_0x30aff0,'unotest',_0x34c5d1(0x171),'examples'),{'recursive':!![]}),await mkdir(join(_0x30aff0,_0x34c5d1(0x16d),_0x34c5d1(0x171),_0x34c5d1(0x182)),{'recursive':!![]});const _0x3652a7=[{'rel':_0x34c5d1(_0x4de31f._0x408027),'content':unotestConfigMjs(_0x5f1cf3[_0x34c5d1(0x167)])},{'rel':join(_0x34c5d1(0x16d),_0x34c5d1(_0x4de31f._0x275fb4)),'content':templates[_0x34c5d1(_0x4de31f._0x2a3985)]},{'rel':join(_0x34c5d1(_0x4de31f._0x371570),_0x34c5d1(0x178)),'content':templates[_0x34c5d1(0x175)]},{'rel':join('unotest',_0x34c5d1(_0x4de31f._0x1645fc),_0x34c5d1(_0x4de31f._0x4aea3d),_0x34c5d1(0x166)),'content':templates[_0x34c5d1(_0x4de31f._0x4aea3d)]['01-smoke.js']}];for(const {rel:_0x228a0b,content:_0x4a57a8}of _0x3652a7){const _0x500019=join(_0x30aff0,_0x228a0b);if(existsSync(_0x500019)){_0x1b73ff[_0x34c5d1(0x177)](_0x228a0b);continue;}await writeFile(_0x500019,_0x4a57a8),_0x113a65['push'](_0x228a0b);}return{'projectRoot':_0x30aff0,'created':_0x113a65,'skipped':_0x1b73ff};}__name(scaffoldWorkspace,_0x48c23e(0x180));export{scaffoldWorkspace};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var _0x46739a=_0x54d1;(function(_0x486b54,_0x25ff29){var _0xc6ee1e={_0xf95ad1:0x186,_0x2f6937:0x179,_0x3bb2e8:0x18a,_0x310d0e:0x182},_0x321b2c=_0x54d1,_0x24d28b=_0x486b54();while(!![]){try{var _0x47ee34=parseInt(_0x321b2c(0x17f))/0x1*(parseInt(_0x321b2c(0x177))/0x2)+-parseInt(_0x321b2c(_0xc6ee1e._0xf95ad1))/0x3+-parseInt(_0x321b2c(_0xc6ee1e._0x2f6937))/0x4*(parseInt(_0x321b2c(0x189))/0x5)+-parseInt(_0x321b2c(0x178))/0x6*(-parseInt(_0x321b2c(_0xc6ee1e._0x3bb2e8))/0x7)+-parseInt(_0x321b2c(0x17c))/0x8+parseInt(_0x321b2c(0x174))/0x9+-parseInt(_0x321b2c(_0xc6ee1e._0x310d0e))/0xa*(-parseInt(_0x321b2c(0x175))/0xb);if(_0x47ee34===_0x25ff29)break;else _0x24d28b['push'](_0x24d28b['shift']());}catch(_0x26b383){_0x24d28b['push'](_0x24d28b['shift']());}}}(_0xda8d,0x54883));function _0x54d1(_0x412e83,_0x4cc22){_0x412e83=_0x412e83-0x174;var _0xda8d47=_0xda8d();var _0x54d1dc=_0xda8d47[_0x412e83];if(_0x54d1['dwLAXm']===undefined){var _0x4e3ae9=function(_0x1beaf1){var _0x2e5628='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x29f31f='',_0x73d7f0='';for(var _0x53c7cd=0x0,_0x1a198e,_0x4fa791,_0x10ef8f=0x0;_0x4fa791=_0x1beaf1['charAt'](_0x10ef8f++);~_0x4fa791&&(_0x1a198e=_0x53c7cd%0x4?_0x1a198e*0x40+_0x4fa791:_0x4fa791,_0x53c7cd++%0x4)?_0x29f31f+=String['fromCharCode'](0xff&_0x1a198e>>(-0x2*_0x53c7cd&0x6)):0x0){_0x4fa791=_0x2e5628['indexOf'](_0x4fa791);}for(var _0x19271d=0x0,_0x52a619=_0x29f31f['length'];_0x19271d<_0x52a619;_0x19271d++){_0x73d7f0+='%'+('00'+_0x29f31f['charCodeAt'](_0x19271d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x73d7f0);};_0x54d1['QayGbu']=_0x4e3ae9,_0x54d1['zaQPrT']={},_0x54d1['dwLAXm']=!![];}var _0x3d3784=_0xda8d47[0x0],_0x591ffc=_0x412e83+_0x3d3784,_0x4a9b64=_0x54d1['zaQPrT'][_0x591ffc];return!_0x4a9b64?(_0x54d1dc=_0x54d1['QayGbu'](_0x54d1dc),_0x54d1['zaQPrT'][_0x591ffc]=_0x54d1dc):_0x54d1dc=_0x4a9b64,_0x54d1dc;}import{fileURLToPath}from'url';function _0xda8d(){var _0x5dc1fe=['D3jPDgu','odbPv1rcCuy','zMLUza','yxjNDG','lI4VlI4VzxHHBxbSzxmVzML4DhvYzxmVyNjLywSTzML4lwfWCc9Zzxj2zs5TANm','mtmZotK1meP0EufRBa','BwfW','AM9PBG','mtyZnJuZnufvwNznuG','nJngDenJrKe','mZKWodm2n01srhHzva','mJa0mtGYr2zsDM5P','Aw5OzxjPDa','ndy0mJC0Cw1ezLPb','mZm4nta4sNPpugXH','ng11C2DsDG','rgLKihLVDsbWDwjSAxnOihDPDgHVDxqGzxHHBxbSzxmVzML4DhvYzxmVpWO','zxHPDa','mZq3nJC2mhbMz05bwq','C2vYDMuTzML4DhvYztOGy2fUBM90igXVy2f0zsbMAxH0DxjLihnLCNzLCIbLBNrYEs4GvhjPzwq6cG','zxHLy1bHDgG','mKr3yNrsyG','lI4VlI4VlI4VzxHHBxbSzxmVzML4DhvYzxmVyNjLywSTzML4lwfWCc9Zzxj2zs5TANm'];_0xda8d=function(){return _0x5dc1fe;};return _0xda8d();}import{dirname,resolve}from'path';import{spawn}from'child_process';import{existsSync}from'fs';var here=dirname(fileURLToPath(import.meta.url)),candidates=[resolve(here,_0x46739a(0x185)),resolve(here,_0x46739a(0x180))],serverEntry=candidates[_0x46739a(0x183)](_0x29f31f=>existsSync(_0x29f31f));!serverEntry&&(process['stderr'][_0x46739a(0x181)](_0x46739a(0x17d)+candidates[_0x46739a(0x187)](_0x73d7f0=>'\x20\x20'+_0x73d7f0+'\x0a')[_0x46739a(0x188)]('')+_0x46739a(0x17a)),process[_0x46739a(0x17b)](0x1));var child=spawn(process[_0x46739a(0x17e)],[serverEntry,...process[_0x46739a(0x184)]['slice'](0x2)],{'stdio':_0x46739a(0x176)});child['on'](_0x46739a(0x17b),_0x53c7cd=>process[_0x46739a(0x17b)](_0x53c7cd??0x1));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0xb10b13=_0x35da;(function(_0x140969,_0x6e5cce){const _0x11ea23={_0x47f89f:0x185,_0x44e769:0x19b,_0x519e03:0x15e,_0x4c06c0:0x177,_0xc1b5b6:0x18d},_0x5e6154=_0x35da,_0x31bf21=_0x140969();while(!![]){try{const _0xe8d69e=-parseInt(_0x5e6154(_0x11ea23._0x47f89f))/0x1+parseInt(_0x5e6154(0x1a8))/0x2+parseInt(_0x5e6154(_0x11ea23._0x44e769))/0x3+parseInt(_0x5e6154(_0x11ea23._0x519e03))/0x4+-parseInt(_0x5e6154(0x1ad))/0x5*(parseInt(_0x5e6154(0x187))/0x6)+parseInt(_0x5e6154(0x18b))/0x7*(parseInt(_0x5e6154(_0x11ea23._0x4c06c0))/0x8)+parseInt(_0x5e6154(0x194))/0x9*(-parseInt(_0x5e6154(_0x11ea23._0xc1b5b6))/0xa);if(_0xe8d69e===_0x6e5cce)break;else _0x31bf21['push'](_0x31bf21['shift']());}catch(_0x565581){_0x31bf21['push'](_0x31bf21['shift']());}}}(_0x37c4,0xa2fc7));var __defProp=Object[_0xb10b13(0x156)],__name=(_0x10c8d7,_0x1c9d66)=>__defProp(_0x10c8d7,_0xb10b13(0x180),{'value':_0x1c9d66,'configurable':!![]});import{UnsupportedRunKindError}from'@unotest/protocol';import{readFileSync}from'fs';import{createRequire}from'module';import{dirname,join}from'path';import{existsSync as _0xba6427}from'fs';import{execFileSync}from'child_process';import{existsSync}from'fs';function probeSystemBrowser(){const _0x52a810={_0x471833:0x171},_0x4e72d8=_0xb10b13;for(const _0x4f5926 of[probeChrome,probeEdge,probeChromeBeta]){const _0xa504f3=_0x4f5926();if(_0xa504f3[_0x4e72d8(_0x52a810._0x471833)]!==null)return _0xa504f3;}return{'channel':null};}__name(probeSystemBrowser,'probeSystemBrowser');function probeChrome(){const _0x31d48e=_0xb10b13,_0x3833e4=firstExistingPath(CHROME_PATHS)??whichOf(CHROME_BIN_NAMES);if(_0x3833e4)return{'channel':_0x31d48e(0x1a4),'path':_0x3833e4,'label':_0x31d48e(0x18e)};return{'channel':null};}__name(probeChrome,_0xb10b13(0x1a9));function probeEdge(){const _0xa461f2={_0x23ae78:0x188},_0x4558ed=_0xb10b13,_0x37fbd9=firstExistingPath(EDGE_PATHS)??whichOf(EDGE_BIN_NAMES);if(_0x37fbd9)return{'channel':_0x4558ed(0x1af),'path':_0x37fbd9,'label':_0x4558ed(_0xa461f2._0x23ae78)};return{'channel':null};}__name(probeEdge,'probeEdge');function probeChromeBeta(){const _0x5b2ba2={_0x19dd00:0x1a6},_0x521fb1=_0xb10b13,_0x24d3f7=firstExistingPath(CHROME_BETA_PATHS);if(_0x24d3f7)return{'channel':_0x521fb1(_0x5b2ba2._0x19dd00),'path':_0x24d3f7,'label':_0x521fb1(0x1ab)};return{'channel':null};}__name(probeChromeBeta,'probeChromeBeta');var CHROME_PATHS=((()=>{const _0x29966c={_0x134c6c:0x175,_0x3b2c02:0x17f,_0x1de307:0x191,_0x12df89:0x191,_0x57ea38:0x199},_0x1cacce=_0xb10b13;switch(process[_0x1cacce(0x17a)]){case _0x1cacce(_0x29966c._0x134c6c):return['/Applications/Google\x20Chrome.app/Contents/MacOS/Google\x20Chrome'];case _0x1cacce(_0x29966c._0x3b2c02):return[process[_0x1cacce(0x17e)]['ProgramFiles']+_0x1cacce(_0x29966c._0x1de307),process[_0x1cacce(0x17e)]['ProgramFiles(x86)']+_0x1cacce(_0x29966c._0x12df89),process[_0x1cacce(0x17e)][_0x1cacce(0x16d)]+_0x1cacce(0x191)];default:return[_0x1cacce(0x17c),_0x1cacce(_0x29966c._0x57ea38),_0x1cacce(0x19f),_0x1cacce(0x165),_0x1cacce(0x15b)];}})()),CHROME_BIN_NAMES=[_0xb10b13(0x163),_0xb10b13(0x18c),'chromium',_0xb10b13(0x18a)],EDGE_PATHS=((()=>{const _0x306d62={_0x55eb0f:0x175,_0x38f792:0x17f,_0x163110:0x1a7,_0x1c5b26:0x19a},_0xddb8c9=_0xb10b13;switch(process[_0xddb8c9(0x17a)]){case _0xddb8c9(_0x306d62._0x55eb0f):return[_0xddb8c9(0x161)];case _0xddb8c9(_0x306d62._0x38f792):return[process[_0xddb8c9(0x17e)][_0xddb8c9(0x158)]+_0xddb8c9(0x197),process['env'][_0xddb8c9(_0x306d62._0x163110)]+_0xddb8c9(0x197)];default:return[_0xddb8c9(_0x306d62._0x1c5b26),_0xddb8c9(0x15c)];}})()),EDGE_BIN_NAMES=[_0xb10b13(0x176),_0xb10b13(0x166)],CHROME_BETA_PATHS=((()=>{const _0x33266a={_0x53a0b5:0x17a,_0x384476:0x17e,_0x53e00d:0x181},_0x5db149=_0xb10b13;switch(process[_0x5db149(_0x33266a._0x53a0b5)]){case _0x5db149(0x175):return[_0x5db149(0x19e)];case _0x5db149(0x17f):return[process[_0x5db149(_0x33266a._0x384476)][_0x5db149(0x158)]+_0x5db149(_0x33266a._0x53e00d)];default:return[_0x5db149(0x1ac)];}})());function firstExistingPath(_0x58fbf1){const _0x41a45d={_0x53a31f:0x1a2},_0x3deea4=_0xb10b13;for(const _0x4085c7 of _0x58fbf1){if(!_0x4085c7||_0x4085c7[_0x3deea4(_0x41a45d._0x53a31f)]('undefined'))continue;if(existsSync(_0x4085c7))return _0x4085c7;}return null;}__name(firstExistingPath,'firstExistingPath');function whichOf(_0x36bcca){const _0x19a8c4={_0x4c2459:0x157},_0x7dd027=_0xb10b13;if(process[_0x7dd027(0x17a)]===_0x7dd027(0x17f))return void 0x0;for(const _0x23fe02 of _0x36bcca){try{const _0x4bc8a0=execFileSync('which',[_0x23fe02],{'encoding':'utf8'})['trim']();if(_0x4bc8a0[_0x7dd027(_0x19a8c4._0x4c2459)]>0x0&&existsSync(_0x4bc8a0))return _0x4bc8a0;}catch{}}return void 0x0;}__name(whichOf,_0xb10b13(0x179));function runEnvironmentChecks(_0x5a58af={}){const _0x3d8fcd=_0xb10b13,_0x4dc79e=_0x5a58af[_0x3d8fcd(0x1b0)]??process['cwd']();return[checkNodeVersion(),checkSystemBrowser(),checkWritableCwd(_0x4dc79e)];}__name(runEnvironmentChecks,'runEnvironmentChecks');function checkNodeVersion(){const _0x2b0bbf={_0x1904e1:0x172,_0x220ee7:0x186,_0xd86c0e:0x183,_0x32a4cd:0x16c},_0x3975c1=_0xb10b13,_0x334193=process[_0x3975c1(0x154)]['node'],_0x467bb3=Number(_0x334193[_0x3975c1(_0x2b0bbf._0x1904e1)]('.')[0x0]);if(!Number['isFinite'](_0x467bb3)||_0x467bb3<0x14)return{'name':'Node.js\x20version','severity':_0x3975c1(_0x2b0bbf._0x220ee7),'message':_0x3975c1(_0x2b0bbf._0xd86c0e)+_0x334193+')','detail':_0x3975c1(_0x2b0bbf._0x32a4cd)};return{'name':'Node.js\x20version','severity':'ok','message':_0x334193};}__name(checkNodeVersion,_0xb10b13(0x196));function checkSystemBrowser(){const _0x5c1dc4={_0x1bd298:0x164,_0xfadb27:0x19c,_0x514941:0x15a,_0x594096:0x152},_0x1d7812=_0xb10b13,_0x5eb7c6=probeSystemBrowser();if(_0x5eb7c6[_0x1d7812(0x171)]!==null)return{'name':_0x1d7812(0x19c),'severity':'ok','message':_0x5eb7c6[_0x1d7812(0x190)]+_0x1d7812(_0x5c1dc4._0x1bd298),'detail':_0x5eb7c6[_0x1d7812(0x193)]};return{'name':_0x1d7812(_0x5c1dc4._0xfadb27),'severity':_0x1d7812(_0x5c1dc4._0x514941),'message':_0x1d7812(_0x5c1dc4._0x594096),'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,_0xb10b13(0x184));function _0x37c4(){const _0x33beeb=['mtK1mdL3wvLsq1i','z29Vz2XLlwnOCM9Tzs1ZDgfIBgu','mtiWv1v6vLDN','r29Vz2XLienOCM9Tzq','qhvUB3rLC3qVD2vI','BgfIzwW','xeDVB2DSzvXdAhjVBwvCqxbWBgLJyxrPB25Cy2HYB21LlMv4zq','AM9PBG','Cgf0Aa','mtu0odLnEKfsDey','DMfSDwvZ','y2HLy2ToB2rLvMvYC2LVBG','xe1Py3jVC29MDfXfzgDLxefWCgXPy2f0Aw9Uxg1ZzwrNzs5LEgu','l3bHy2THz2uUANnVBG','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1ZDgfIBgu','l3vZCI9IAw4VBwLJCM9ZB2z0lwvKz2u','mtm1otu1nxrOrvDjqW','u3LZDgvTigjYB3DZzxi','Dw5VDgvZDc13zwi','l0fWCgXPy2f0Aw9UCY9hB29NBguGq2HYB21LiejLDgeUyxbWl0nVBNrLBNrZl01Hy09tl0DVB2DSzsbdAhjVBwuGqMv0yq','l3nUyxaVyMLUl2DVB2DSzs1JAhjVBwu','yxv0Ag9Y','yxbWlxnLCNzLCG','C3rHCNrZv2L0Aa','yxbWu2vYDMvYqxjNCW','y2HYB21L','vgfYz2v0igrPCMvJDg9YEq','y2HYB21LlwjLDge','uhjVz3jHBuzPBgvZkhG4nIK','ntaXode0BgXXDNne','ChjVyMvdAhjVBwu','yxv0Ag9YAw5N','r29Vz2XLienOCM9TzsbczxrH','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1IzxrH','ntvOC3nctMW','C3vWCg9YDgvKs2LUzhm','BxnLzgDL','y3DK','ChjVAMvJDfjVB3q','BM8Gq2HYB21Lic8GrwrNzsaVienOCM9TAxvTigrLDgvJDgvK','yMfPBa','DMvYC2LVBNm','ls1IywLS','zgvMAw5LuhjVCgvYDhK','BgvUz3rO','uhjVz3jHBuzPBgvZ','A2LUza','D2fYBMLUzW','l3vZCI9IAw4Vy2HYB21PDw0TyNjVD3nLCG','l3vZCI9IAw4VBwLJCM9ZB2z0lwvKz2uTC3rHyMXL','q3jLyxrLihrOzsbKAxjLy3rVCNKGB3iGCNvUigLUAxqGAw4Gyw4GzxHPC3rPBMCGChjVAMvJDcbYB290lG','mtG5mdKWnfzfwKndrW','zg9JDg9Y','ls1Kzwj1zW','l0fWCgXPy2f0Aw9UCY9nAwnYB3nVzNqGrwrNzs5HChaVq29UDgvUDhmVtwfJt1mVtwLJCM9ZB2z0ievKz2u','DgfYz2v0ia','z29Vz2XLlwnOCM9Tzq','igzVDw5K','l3vZCI9IAw4Vy2HYB21PDw0','BwLJCM9ZB2z0lwvKz2uTC3rHyMXL','ChvZAa','yNjLywTWB2LUDhm','yMLU','CMvZB2X2zq','C2nLBMfYAw8','sw5ZDgfSBcboB2rLidiWkYb2AweGBNzTic8GzM5Tic8GDM9SDgeGyw5KihjLlxj1BI4','te9dquXbufbeqvrb','D29YA2vYCW','yNvPBgrfBNy','y29SBgvJDgLVBG','y2HHBM5LBa','C3bSAxq','igrVzxmGBM90igv4Axn0','CgfYC2u','zgfYD2LU','BwLJCM9ZB2z0lwvKz2u','mtGXnNHlu1Hhta','AgvHzgvK','D2HPy2HpzG','CgXHDgzVCM0','y2HLy2TxCML0ywjSzun3za','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzq','vu5pvevtvf9iruferuq','zw52','D2LUmZi','BMfTzq','xeDVB2DSzvXdAhjVBwuGqMv0yvXbChbSAwnHDgLVBLXJAhjVBwuUzxHL','CMvZB2X2zujPBG','CMvXDwLYzxmGtM9KzsdIIAuYmcaOCNvUBMLUzYa','y2HLy2TtExn0zw1cCM93C2vY','mtaWmJyXmxfzzujorq','zxjYB3i','nJq2otHpENLMzLa','twLJCM9ZB2z0ievKz2u','C3vMzML4','y2HYB21PDw0TyNjVD3nLCG'];_0x37c4=function(){return _0x33beeb;};return _0x37c4();}function checkWritableCwd(_0x568c87){const _0x345816={_0x539c7a:0x1a5,_0x2f7ffc:0x173},_0x53734e=_0xb10b13;if(!_0xba6427(_0x568c87))return{'name':_0x53734e(_0x345816._0x539c7a),'severity':_0x53734e(0x186),'message':_0x53734e(0x162)+_0x568c87+_0x53734e(_0x345816._0x2f7ffc),'detail':_0x53734e(0x15d)};return{'name':_0x53734e(0x1a5),'severity':'ok','message':_0x568c87};}function _0x35da(_0x11d151,_0x228a4c){_0x11d151=_0x11d151-0x152;const _0x37c4af=_0x37c4();let _0x35da45=_0x37c4af[_0x11d151];if(_0x35da['YTDeWT']===undefined){var _0x18c826=function(_0x89b650){const _0x5bb7cb='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xba6427='',_0x10c8d7='';for(let _0x1c9d66=0x0,_0x4f5926,_0xa504f3,_0x3833e4=0x0;_0xa504f3=_0x89b650['charAt'](_0x3833e4++);~_0xa504f3&&(_0x4f5926=_0x1c9d66%0x4?_0x4f5926*0x40+_0xa504f3:_0xa504f3,_0x1c9d66++%0x4)?_0xba6427+=String['fromCharCode'](0xff&_0x4f5926>>(-0x2*_0x1c9d66&0x6)):0x0){_0xa504f3=_0x5bb7cb['indexOf'](_0xa504f3);}for(let _0x37fbd9=0x0,_0x24d3f7=_0xba6427['length'];_0x37fbd9<_0x24d3f7;_0x37fbd9++){_0x10c8d7+='%'+('00'+_0xba6427['charCodeAt'](_0x37fbd9)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x10c8d7);};_0x35da['lzZNxN']=_0x18c826,_0x35da['JdXluC']={},_0x35da['YTDeWT']=!![];}const _0xdcb00d=_0x37c4af[0x0],_0x5b3ed4=_0x11d151+_0xdcb00d,_0x116b23=_0x35da['JdXluC'][_0x5b3ed4];return!_0x116b23?(_0x35da45=_0x35da['lzZNxN'](_0x35da45),_0x35da['JdXluC'][_0x5b3ed4]=_0x35da45):_0x35da45=_0x116b23,_0x35da45;}__name(checkWritableCwd,_0xb10b13(0x17b));var PACKAGE_NAME=_0xb10b13(0x18f),WebRunnerAdapter=class{static{__name(this,'WebRunnerAdapter');}[_0xb10b13(0x180)]=PACKAGE_NAME;[_0xb10b13(0x189)]='';['debug']={'picker':!![],'attach':!![],'resumeFromFailure':![]};[_0xb10b13(0x1ae)]=[_0xb10b13(0x16b),'collection',_0xb10b13(0x1aa)];[_0xb10b13(0x182)](){const _0x55cda4={_0x5f36ed:0x16a,_0x6193f3:0x174},_0x4394a2=_0xb10b13,_0x316aac=createRequire(import.meta.url),_0x565e59=_0x316aac[_0x4394a2(_0x55cda4._0x5f36ed)](PACKAGE_NAME+_0x4394a2(0x198)),_0x3e8166=JSON[_0x4394a2(_0x55cda4._0x6193f3)](readFileSync(_0x565e59,'utf8')),_0x4897dc=pickBin(_0x3e8166);if(!_0x4897dc)throw new Error(PACKAGE_NAME+'\x20package.json\x20declares\x20no\x20\x27bin\x27\x20field\x20—\x20broken\x20install?');return join(dirname(_0x565e59),_0x4897dc);}['buildArgs'](_0x2004e8){const _0x489f94={_0x1c0bbd:0x16b,_0x3d9f64:0x16b,_0x450530:0x160,_0x3a47e3:0x168,_0x41cbbc:0x170,_0x4e72bd:0x159,_0x258d46:0x1aa,_0x166a21:0x1a0,_0x3f9435:0x16b},_0x119f9c=_0xb10b13;if(_0x2004e8['kind']===_0x119f9c(_0x489f94._0x1c0bbd)){const _0x5bfec3=['e2e',_0x2004e8[_0x119f9c(_0x489f94._0x3d9f64)]];if(_0x2004e8['debug'])_0x5bfec3[_0x119f9c(0x167)](_0x119f9c(_0x489f94._0x450530));return _0x2004e8[_0x119f9c(_0x489f94._0x3a47e3)]&&_0x2004e8['breakpoints'][_0x119f9c(0x157)]>0x0&&_0x5bfec3[_0x119f9c(0x167)]('--break',_0x2004e8[_0x119f9c(0x168)][_0x119f9c(0x192)](',')),_0x5bfec3;}if(_0x2004e8['kind']==='collection'){const _0x261af2=[_0x119f9c(0x170),_0x2004e8[_0x119f9c(_0x489f94._0x41cbbc)]];_0x2004e8[_0x119f9c(0x16e)]!==void 0x0&&_0x2004e8[_0x119f9c(0x16e)]>0x1&&_0x261af2['push']('--workers='+_0x2004e8[_0x119f9c(0x16e)]);if(_0x2004e8[_0x119f9c(0x153)])_0x261af2['push'](_0x119f9c(0x155));return _0x261af2;}if(_0x2004e8[_0x119f9c(_0x489f94._0x4e72bd)]===_0x119f9c(_0x489f94._0x258d46))return[_0x119f9c(_0x489f94._0x166a21),_0x2004e8[_0x119f9c(_0x489f94._0x3f9435)]];const _0x1e1c6c=_0x2004e8;throw new UnsupportedRunKindError(_0x1e1c6c['kind'],this[_0x119f9c(0x180)]);}[_0xb10b13(0x16f)](_0x16333a){const _0x385849={_0x7d4858:0x178},_0x179a10=_0xb10b13,_0x19236a={};if(_0x16333a[_0x179a10(_0x385849._0x7d4858)])_0x19236a[_0x179a10(0x17d)]='1';return _0x19236a;}[_0xb10b13(0x1a3)](){const _0x3bdd43={_0x1260ec:0x1a1},_0x365478=_0xb10b13;return[_0x365478(_0x3bdd43._0x1260ec)];}async[_0xb10b13(0x15f)](_0x4b8135){const _0x33c4a8=_0xb10b13;return runEnvironmentChecks({'cwd':_0x4b8135[_0x33c4a8(0x1b1)]});}},webRunnerAdapter=new WebRunnerAdapter(),web_runner_adapter_default=webRunnerAdapter;function pickBin(_0x18284e){const _0x5ef3be={_0x3ed84e:0x169,_0x415b32:0x19d,_0x413e79:0x195},_0x6c18c5=_0xb10b13;if(typeof _0x18284e[_0x6c18c5(_0x5ef3be._0x3ed84e)]==='string')return _0x18284e[_0x6c18c5(_0x5ef3be._0x3ed84e)];if(_0x18284e[_0x6c18c5(0x169)]&&typeof _0x18284e[_0x6c18c5(_0x5ef3be._0x3ed84e)]==='object')return _0x18284e[_0x6c18c5(0x169)][_0x6c18c5(_0x5ef3be._0x415b32)]??Object[_0x6c18c5(_0x5ef3be._0x413e79)](_0x18284e[_0x6c18c5(0x169)])[0x0]??null;return null;}__name(pickBin,'pickBin');export{web_runner_adapter_default as default,webRunnerAdapter};
|
|
1
|
+
const _0x139442=_0x29c5;(function(_0x5249eb,_0x1dfaf8){const _0x33c8f7={_0x33f017:0xd8,_0x58e049:0xb7,_0x246e0d:0xe8,_0x1d0a8d:0xb2,_0x582674:0xf8},_0x26e512=_0x29c5,_0x561e37=_0x5249eb();while(!![]){try{const _0x5f8592=-parseInt(_0x26e512(0xfb))/0x1*(parseInt(_0x26e512(0xcd))/0x2)+-parseInt(_0x26e512(_0x33c8f7._0x33f017))/0x3*(parseInt(_0x26e512(_0x33c8f7._0x58e049))/0x4)+-parseInt(_0x26e512(_0x33c8f7._0x246e0d))/0x5*(-parseInt(_0x26e512(_0x33c8f7._0x1d0a8d))/0x6)+parseInt(_0x26e512(0xcc))/0x7*(parseInt(_0x26e512(0xd9))/0x8)+-parseInt(_0x26e512(_0x33c8f7._0x582674))/0x9+parseInt(_0x26e512(0xe9))/0xa*(parseInt(_0x26e512(0xbc))/0xb)+parseInt(_0x26e512(0xdf))/0xc;if(_0x5f8592===_0x1dfaf8)break;else _0x561e37['push'](_0x561e37['shift']());}catch(_0x10a83c){_0x561e37['push'](_0x561e37['shift']());}}}(_0x3279,0x6e7e1));var __defProp=Object[_0x139442(0xb5)],__name=(_0x3cbea2,_0x8f3c11)=>__defProp(_0x3cbea2,_0x139442(0xc8),{'value':_0x8f3c11,'configurable':!![]});import{UnsupportedRunKindError}from'@unotest/protocol';import{readFileSync}from'fs';import{createRequire}from'module';import{dirname,join}from'path';import{existsSync as _0xcf0156}from'fs';import{execFileSync}from'child_process';import{existsSync}from'fs';function probeSystemBrowser(){for(const _0x19e4ab of[probeChrome,probeEdge,probeChromeBeta]){const _0x28981a=_0x19e4ab();if(_0x28981a['channel']!==null)return _0x28981a;}return{'channel':null};}function _0x3279(){const _0x234183=['zgvMAw5LuhjVCgvYDhK','C3rYAw5N','mJb4zhfqB1C','BgvUz3rO','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzq','CMvXDwLYzxmGtM9KzsdIIAuYmcaOCNvUBMLUzYa','zw52','odq5nZCYwKzLqLvL','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1ZDgfIBgu','ls13B3jRzxjZpq','DMfSDwvZ','DxrMoa','BM9Kzq','yMLU','ls1Kzwj1zW','ihbHy2THz2uUANnVBIbKzwnSyxjLCYbUBYaNyMLUjYbMAwvSzcdIGjqGyNjVA2vUigLUC3rHBgW/','l0fWCgXPy2f0Aw9UCY9hB29NBguGq2HYB21LlMfWCc9dB250zw50CY9nywnpuY9hB29NBguGq2HYB21L','C2nLBMfYAw8','DMvYC2LVBNm','BMfTzq','igrVzxmGBM90igv4Axn0','ChjVyMvtExn0zw1cCM93C2vY','yMfPBa','mZi5zfbryvnu','nZe4BLjkBgXn','l3bHy2THz2uUANnVBG','l3vZCI9IAw4Vy2HYB21PDw0TyNjVD3nLCG','D29YA2vYCW','Aw5PDcb3AwXSig9MzMvYihrVigrVD25SB2fKigj1BMrSzwqGq2HYB21PDw0Gkh4XntaGtuiPlIbbBhrLCM5HDgL2zwX5lcbPBNn0ywXSienOCM9TzsbMCM9TigH0DhbZoI8VD3D3lMDVB2DSzs5JB20Vy2HYB21LigfUzcbYzs1YDw4U','yxbWlxnLCNzLCG','yxv0Ag9Y','CgfYC2u','zgfYD2LU','D2fYBMLUzW','C3rHCNrZv2L0Aa','ndi4ota3vfrxDvLf','ntu1mKfysefsBa','y2HYB21L','zgvIDwC','vgfYz2v0igrPCMvJDg9YEq','tM9Kzs5QCYb2zxjZAw9U','DhjPBq','mtiZmZmWotzgEK9xAe8','AgvHzgvK','BgfIzwW','igzVDw5K','Dw5KzwzPBMvK','xe1Py3jVC29MDfXfzgDLxefWCgXPy2f0Aw9Uxg1ZzwrNzs5LEgu','ChvZAa','y2HLy2ToB2rLvMvYC2LVBG','y2HYB21LlwjLDge','mtbjvLrMB20','mJblAw1lBKC','Cgf0Aa','u3LZDgvTigjYB3DZzxi','CMvZB2X2zq','CgXHDgzVCM0','qhvUB3rLC3qVD2vI','zg9JDg9Y','ls1IywLS','q3jLyxrLihrOzsbKAxjLy3rVCNKGB3iGCNvUigLUAxqGAw4Gyw4GzxHPC3rPBMCGChjVAMvJDcbYB290lG','D2LUmZi','y2HYB21PDw0TyNjVD3nLCG','AM9PBG','ChjVAMvJDfjVB3q','yNvPBgrfBNy','l0fWCgXPy2f0Aw9UCY9nAwnYB3nVzNqGrwrNzs5HChaVq29UDgvUDhmVtwfJt1mVtwLJCM9ZB2z0ievKz2u','mJqYmZi1yuDIwNvd','D2HPy2HpzG','l0fWCgXPy2f0Aw9UCY9hB29NBguGq2HYB21LiejLDgeUyxbWl0nVBNrLBNrZl01Hy09tl0DVB2DSzsbdAhjVBwuGqMv0yq','ote1wKjZCgT5','C3vWCg9YDgvKs2LUzhm','y3DK','y29SBgvJDgLVBG','ls1ICMvHAW','te9dquXbufbeqvrb','A2LUza','BwLJCM9ZB2z0lwvKz2uTC3rHyMXL','ztjL','y2HYB21PDw0','CNvUrw52AxjVBM1LBNrdAgvJA3m','r29Vz2XLienOCM9Tzq','CgLJA0jPBG','l3nUyxaVyMLUl2DVB2DSzs1JAhjVBwu','ChjVyMvdAhjVBwu','yNjLywTWB2LUDhm','y2HLy2TtExn0zw1cCM93C2vY','y2HHBM5LBa','ChjVyMvfzgDL','xeDVB2DSzvXdAhjVBwvCqxbWBgLJyxrPB25Cy2HYB21LlMv4zq','sw5ZDgfSBcboB2rLidiWkYb2AweGBNzTic8GzM5Tic8GDM9SDgeGyw5KihjLlxj1BI4','l3vZCI9IAw4VBwLJCM9ZB2z0lwvKz2uTC3rHyMXL','BwLJCM9ZB2z0lwvKz2u','r29Vz2XLienOCM9TzsbczxrH','otiZodu2wgjtANrK','yxv0Ag9YAw5N','yNvPBgrbCMDZ'];_0x3279=function(){return _0x234183;};return _0x3279();}function _0x29c5(_0x555256,_0x43b91e){_0x555256=_0x555256-0xad;const _0x3279b8=_0x3279();let _0x29c5ec=_0x3279b8[_0x555256];if(_0x29c5['ABuUgI']===undefined){var _0x37c509=function(_0x39d353){const _0x16b7ad='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xcf0156='',_0x3cbea2='';for(let _0x8f3c11=0x0,_0x19e4ab,_0x28981a,_0x4afc89=0x0;_0x28981a=_0x39d353['charAt'](_0x4afc89++);~_0x28981a&&(_0x19e4ab=_0x8f3c11%0x4?_0x19e4ab*0x40+_0x28981a:_0x28981a,_0x8f3c11++%0x4)?_0xcf0156+=String['fromCharCode'](0xff&_0x19e4ab>>(-0x2*_0x8f3c11&0x6)):0x0){_0x28981a=_0x16b7ad['indexOf'](_0x28981a);}for(let _0x57f648=0x0,_0x4c965a=_0xcf0156['length'];_0x57f648<_0x4c965a;_0x57f648++){_0x3cbea2+='%'+('00'+_0xcf0156['charCodeAt'](_0x57f648)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3cbea2);};_0x29c5['GwGSTs']=_0x37c509,_0x29c5['fJpvol']={},_0x29c5['ABuUgI']=!![];}const _0x45ec92=_0x3279b8[0x0],_0x2d8736=_0x555256+_0x45ec92,_0x4b5ea9=_0x29c5['fJpvol'][_0x2d8736];return!_0x4b5ea9?(_0x29c5ec=_0x29c5['GwGSTs'](_0x29c5ec),_0x29c5['fJpvol'][_0x2d8736]=_0x29c5ec):_0x29c5ec=_0x4b5ea9,_0x29c5ec;}__name(probeSystemBrowser,_0x139442(0xca));function probeChrome(){const _0x3e3a5c=_0x139442,_0x4afc89=firstExistingPath(CHROME_PATHS)??whichOf(CHROME_BIN_NAMES);if(_0x4afc89)return{'channel':_0x3e3a5c(0xda),'path':_0x4afc89,'label':_0x3e3a5c(0x106)};return{'channel':null};}__name(probeChrome,_0x139442(0x109));function probeEdge(){const _0x57f648=firstExistingPath(EDGE_PATHS)??whichOf(EDGE_BIN_NAMES);if(_0x57f648)return{'channel':'msedge','path':_0x57f648,'label':'Microsoft\x20Edge'};return{'channel':null};}__name(probeEdge,_0x139442(0x10d));function probeChromeBeta(){const _0x146616=_0x139442,_0x4c965a=firstExistingPath(CHROME_BETA_PATHS);if(_0x4c965a)return{'channel':_0x146616(0xe7),'path':_0x4c965a,'label':_0x146616(0xb1)};return{'channel':null};}__name(probeChromeBeta,'probeChromeBeta');var CHROME_PATHS=((()=>{const _0x83b7b9={_0x188358:0xed,_0x1f477e:0xd5,_0x2fd269:0xf2,_0x290a16:0xbb,_0x5ed9b1:0xbb,_0x3b35c4:0xad,_0x2b6aec:0xcf},_0x57de98=_0x139442;switch(process[_0x57de98(_0x83b7b9._0x188358)]){case _0x57de98(_0x83b7b9._0x1f477e):return[_0x57de98(0xc5)];case _0x57de98(_0x83b7b9._0x2fd269):return[process[_0x57de98(0xbb)]['ProgramFiles']+_0x57de98(0xad),process[_0x57de98(_0x83b7b9._0x290a16)]['ProgramFiles(x86)']+_0x57de98(0xad),process[_0x57de98(_0x83b7b9._0x5ed9b1)][_0x57de98(0x100)]+_0x57de98(_0x83b7b9._0x3b35c4)];default:return[_0x57de98(0xb9),_0x57de98(0xbd),_0x57de98(0x108),'/usr/bin/chromium',_0x57de98(_0x83b7b9._0x2b6aec)];}})()),CHROME_BIN_NAMES=['google-chrome','google-chrome-stable',_0x139442(0x104),_0x139442(0xf3)],EDGE_PATHS=((()=>{const _0x491c6d={_0x52a670:0xd5,_0x49aca9:0xf7,_0x139a7a:0xe4,_0x5a565e:0xaf},_0x448f27=_0x139442;switch(process[_0x448f27(0xed)]){case _0x448f27(_0x491c6d._0x52a670):return[_0x448f27(_0x491c6d._0x49aca9)];case _0x448f27(0xf2):return[process[_0x448f27(0xbb)]['ProgramFiles']+_0x448f27(0xe4),process['env']['ProgramFiles(x86)']+_0x448f27(_0x491c6d._0x139a7a)];default:return['/usr/bin/microsoft-edge',_0x448f27(_0x491c6d._0x5a565e)];}})()),EDGE_BIN_NAMES=[_0x139442(0xb0),_0x139442(0x102)],CHROME_BETA_PATHS=((()=>{const _0x35db91={_0x21fab0:0xf2,_0x5b0b0e:0xbb},_0x392c03=_0x139442;switch(process[_0x392c03(0xed)]){case _0x392c03(0xd5):return[_0x392c03(0xfa)];case _0x392c03(_0x35db91._0x21fab0):return[process[_0x392c03(_0x35db91._0x5b0b0e)]['ProgramFiles']+'\x5cGoogle\x5cChrome\x20Beta\x5cApplication\x5cchrome.exe'];default:return['/usr/bin/google-chrome-beta'];}})());function firstExistingPath(_0x519159){const _0x514d78=_0x139442;for(const _0x333af1 of _0x519159){if(!_0x333af1||_0x333af1[_0x514d78(0xd7)](_0x514d78(0xe3)))continue;if(existsSync(_0x333af1))return _0x333af1;}return null;}__name(firstExistingPath,'firstExistingPath');function whichOf(_0x9456e9){const _0x494e26={_0x283972:0xc0},_0x488b5b=_0x139442;if(process[_0x488b5b(0xed)]==='win32')return void 0x0;for(const _0x34ac4e of _0x9456e9){try{const _0x1ba9aa=execFileSync('which',[_0x34ac4e],{'encoding':_0x488b5b(_0x494e26._0x283972)})[_0x488b5b(0xde)]();if(_0x1ba9aa[_0x488b5b(0xb8)]>0x0&&existsSync(_0x1ba9aa))return _0x1ba9aa;}catch{}}return void 0x0;}__name(whichOf,_0x139442(0xf9));function runEnvironmentChecks(_0x49545e={}){const _0x1dc7e0={_0x4f15ee:0xfd},_0x34ddc3=_0x139442,_0x54abaa=_0x49545e[_0x34ddc3(_0x1dc7e0._0x4f15ee)]??process[_0x34ddc3(0xfd)]();return[checkNodeVersion(),checkSystemBrowser(),checkWritableCwd(_0x54abaa)];}__name(runEnvironmentChecks,_0x139442(0x105));function checkNodeVersion(){const _0x28c447={_0x29e0d3:0xc7,_0x54a3d1:0xdd},_0x563f5a=_0x139442,_0x4aa957=process[_0x563f5a(_0x28c447._0x29e0d3)][_0x563f5a(0xc1)],_0x41773a=Number(_0x4aa957['split']('.')[0x0]);if(!Number['isFinite'](_0x41773a)||_0x41773a<0x14)return{'name':_0x563f5a(_0x28c447._0x54a3d1),'severity':'error','message':_0x563f5a(0xba)+_0x4aa957+')','detail':_0x563f5a(0xae)};return{'name':_0x563f5a(_0x28c447._0x54a3d1),'severity':'ok','message':_0x4aa957};}__name(checkNodeVersion,_0x139442(0xe6));function checkSystemBrowser(){const _0x2fa458={_0x281237:0x10c,_0x41bf26:0xeb,_0x281442:0xe1,_0x3fb661:0xe2,_0x5dded5:0xea,_0x5013fe:0xd6,_0x5045ac:0xd1},_0x1c46d2=_0x139442,_0x2c4c50=probeSystemBrowser();if(_0x2c4c50[_0x1c46d2(_0x2fa458._0x281237)]!==null)return{'name':_0x1c46d2(_0x2fa458._0x41bf26),'severity':'ok','message':_0x2c4c50[_0x1c46d2(_0x2fa458._0x281442)]+_0x1c46d2(_0x2fa458._0x3fb661),'detail':_0x2c4c50[_0x1c46d2(_0x2fa458._0x5dded5)]};return{'name':_0x1c46d2(0xeb),'severity':_0x1c46d2(_0x2fa458._0x5013fe),'message':'no\x20Chrome\x20/\x20Edge\x20/\x20Chromium\x20detected','detail':_0x1c46d2(_0x2fa458._0x5045ac)};}__name(checkSystemBrowser,_0x139442(0x10b));function checkWritableCwd(_0x3be931){const _0x2de48b=_0x139442;if(!_0xcf0156(_0x3be931))return{'name':_0x2de48b(0xdc),'severity':'error','message':'target\x20'+_0x3be931+_0x2de48b(0xc9),'detail':_0x2de48b(0xf1)};return{'name':_0x2de48b(0xdc),'severity':'ok','message':_0x3be931};}__name(checkWritableCwd,'checkWritableCwd');var PACKAGE_NAME=_0x139442(0xee),WebRunnerAdapter=class{static{__name(this,'WebRunnerAdapter');}['name']=PACKAGE_NAME;['suffix']='';[_0x139442(0xdb)]={'picker':!![],'attach':!![],'resumeFromFailure':![]};[_0x139442(0xfc)]=[_0x139442(0xc6),'collection','authoring'];['resolveBin'](){const _0x109af5={_0x5db2bb:0xce,_0x5a0333:0xd4,_0x7e8afd:0xc0,_0x47423a:0xc4},_0x3aee11=_0x139442,_0x5c9da6=createRequire(import.meta.url),_0x674cc1=_0x5c9da6[_0x3aee11(0xec)](PACKAGE_NAME+_0x3aee11(_0x109af5._0x5db2bb)),_0x30e314=JSON[_0x3aee11(_0x109af5._0x5a0333)](readFileSync(_0x674cc1,_0x3aee11(_0x109af5._0x7e8afd))),_0x3be518=pickBin(_0x30e314);if(!_0x3be518)throw new Error(PACKAGE_NAME+_0x3aee11(_0x109af5._0x47423a));return join(dirname(_0x674cc1),_0x3be518);}[_0x139442(0xb4)](_0x2b5b5d){const _0x40a6ee={_0x44a5f1:0x103,_0x3de7cb:0xdb,_0x536555:0xe5,_0x4526a7:0xc3,_0x42a7ac:0xff,_0x39de89:0x101,_0x432714:0xd0,_0x181abe:0xbe,_0x5ef55c:0xd0,_0x36cb55:0xcb,_0x6f5ca2:0xf0},_0x46d5d3=_0x139442;if(_0x2b5b5d['kind']==='scenario'){const _0x4da580=[_0x46d5d3(_0x40a6ee._0x44a5f1),_0x2b5b5d['scenario']];if(_0x2b5b5d[_0x46d5d3(_0x40a6ee._0x3de7cb)])_0x4da580[_0x46d5d3(_0x40a6ee._0x536555)](_0x46d5d3(_0x40a6ee._0x4526a7));return _0x2b5b5d[_0x46d5d3(0x10a)]&&_0x2b5b5d[_0x46d5d3(0x10a)][_0x46d5d3(0xb8)]>0x0&&_0x4da580[_0x46d5d3(_0x40a6ee._0x536555)](_0x46d5d3(_0x40a6ee._0x42a7ac),_0x2b5b5d[_0x46d5d3(0x10a)][_0x46d5d3(0xf4)](',')),_0x4da580;}if(_0x2b5b5d[_0x46d5d3(_0x40a6ee._0x39de89)]===_0x46d5d3(0xfe)){const _0x512fde=['collection',_0x2b5b5d[_0x46d5d3(0xfe)]];_0x2b5b5d['workers']!==void 0x0&&_0x2b5b5d[_0x46d5d3(_0x40a6ee._0x432714)]>0x1&&_0x512fde[_0x46d5d3(_0x40a6ee._0x536555)](_0x46d5d3(_0x40a6ee._0x181abe)+_0x2b5b5d[_0x46d5d3(_0x40a6ee._0x5ef55c)]);if(_0x2b5b5d[_0x46d5d3(_0x40a6ee._0x36cb55)])_0x512fde[_0x46d5d3(0xe5)](_0x46d5d3(_0x40a6ee._0x6f5ca2));return _0x512fde;}if(_0x2b5b5d['kind']===_0x46d5d3(0xb3))return[_0x46d5d3(0xd3),_0x2b5b5d['scenario']];const _0x11302b=_0x2b5b5d;throw new UnsupportedRunKindError(_0x11302b[_0x46d5d3(0x101)],this['name']);}[_0x139442(0xf6)](_0x1b0372){const _0x4f3eff={_0x1668d6:0xe0},_0x5d83a7=_0x139442,_0x483329={};if(_0x1b0372[_0x5d83a7(_0x4f3eff._0x1668d6)])_0x483329['UNOTEST_HEADED']='1';return _0x483329;}['appServerArgs'](){const _0x25569e=_0x139442;return[_0x25569e(0xd2)];}async[_0x139442(0xef)](_0x3b6474){const _0x4bb129=_0x139442;return runEnvironmentChecks({'cwd':_0x3b6474[_0x4bb129(0xf5)]});}},webRunnerAdapter=new WebRunnerAdapter(),web_runner_adapter_default=webRunnerAdapter;function pickBin(_0x24d31a){const _0x57f600={_0x373d0f:0xc2,_0x563c7d:0xbf},_0xdf1456=_0x139442;if(typeof _0x24d31a[_0xdf1456(_0x57f600._0x373d0f)]===_0xdf1456(0xb6))return _0x24d31a['bin'];if(_0x24d31a[_0xdf1456(0xc2)]&&typeof _0x24d31a[_0xdf1456(0xc2)]==='object')return _0x24d31a['bin']['unotest-web']??Object[_0xdf1456(_0x57f600._0x563c7d)](_0x24d31a[_0xdf1456(0xc2)])[0x0]??null;return null;}__name(pickBin,_0x139442(0x107));export{web_runner_adapter_default as default,webRunnerAdapter};
|
package/guides/dsl-reference.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
status: stable
|
|
3
|
-
last_updated: 2026-
|
|
3
|
+
last_updated: 2026-08-22
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# DSL Reference
|
|
@@ -42,6 +42,47 @@ function test_my_scenario() {
|
|
|
42
42
|
> linter (`unotest-web lint`) flags brittle selectors — see
|
|
43
43
|
> `docs/manuals/troubleshooting.md`.
|
|
44
44
|
|
|
45
|
+
## Editor setup
|
|
46
|
+
|
|
47
|
+
Scenarios are plain `.js` with an implicit global vocabulary, so an
|
|
48
|
+
untouched editor shows them as broken JavaScript. `npx @unotest/web init`
|
|
49
|
+
wires the fix; on an existing project the first `lint` / `e2e` run after a
|
|
50
|
+
package upgrade wires it automatically (announced with one line). What it
|
|
51
|
+
consists of:
|
|
52
|
+
|
|
53
|
+
- `unotest/jsconfig.json` — points the IDE at the two declaration files
|
|
54
|
+
below. Created once when missing; never rewritten silently. Type
|
|
55
|
+
CHECKING stays off (`checkJs: false`) on purpose: diagnostics come from
|
|
56
|
+
the DSL validator (`npx @unotest/web lint`), the editor only gains
|
|
57
|
+
completion, hover docs, signature help and locator-chain resolution.
|
|
58
|
+
- `node_modules/@unotest/web/types/unotest-dsl.d.ts` — ambient
|
|
59
|
+
declarations for every DSL function, generated from the same contracts
|
|
60
|
+
the validator uses and shipped with the package, so it always matches
|
|
61
|
+
the installed version.
|
|
62
|
+
- `.unotest/types/env.d.ts` — declarations for your external variables
|
|
63
|
+
(`LOGIN`, `PASSWORD`, …). Names come from `unotest/.env` /
|
|
64
|
+
`unotest/.secrets` keys; values never leave those files. This is a
|
|
65
|
+
gitignored cache, refreshed on every `lint` / run — or on demand with
|
|
66
|
+
`npx @unotest/web types`.
|
|
67
|
+
|
|
68
|
+
Helpers (`flow_*` in `unotest/e2e/_helpers/`) need no declarations: the
|
|
69
|
+
jsconfig includes `**/*.js`, so the editor resolves them from source, with
|
|
70
|
+
go-to-definition landing in the real file.
|
|
71
|
+
|
|
72
|
+
Projects that run ESLint can add `@unotest/eslint-plugin` — one rule
|
|
73
|
+
backed by the same validator as `npx @unotest/web lint`, so the two can
|
|
74
|
+
never disagree (see the plugin's README for the two-line flat-config
|
|
75
|
+
setup).
|
|
76
|
+
|
|
77
|
+
Two squiggle sources remain that typings cannot fix, both cosmetic:
|
|
78
|
+
|
|
79
|
+
- The spellchecker on domain words inside string literals (`'listitem'`,
|
|
80
|
+
`'/dashboard/checkout'`) — add them to your project dictionary.
|
|
81
|
+
- WebStorm's "Implicitly declared global variable" hint on in-scenario
|
|
82
|
+
assignments (`ts = shell(...)`) — lower that inspection's severity if it
|
|
83
|
+
bothers you (Settings → Editor → Inspections → JavaScript). VS Code
|
|
84
|
+
does not semantic-check `.js` without `checkJs` and stays quiet.
|
|
85
|
+
|
|
45
86
|
## Categories
|
|
46
87
|
|
|
47
88
|
- [Builders](#builders) — root locators
|
|
@@ -1028,7 +1069,8 @@ Backticks are **raw** — `${…}` interpolation is rejected at parse time
|
|
|
1028
1069
|
### `screenshot(name?, options?)` → `string`
|
|
1029
1070
|
|
|
1030
1071
|
On-demand PNG capture of the active page into the run's artifact dir:
|
|
1031
|
-
`unotest/.runs/<runId>/screenshot/<NNN>-<name>.png
|
|
1072
|
+
`unotest/.runs/<YYYY>/<MM>/<DD>/<runId>/screenshot/<NNN>-<name>.png`
|
|
1073
|
+
(runs are filed under the UTC date they started). Returns the
|
|
1032
1074
|
project-relative path. Evidence tool — fixes what the page actually
|
|
1033
1075
|
looked like at this point, so a green run can be verified after the
|
|
1034
1076
|
fact (the viewer lists each capture as a `screenshot` event).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unotest/web",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.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": {
|
|
@@ -50,6 +50,9 @@
|
|
|
50
50
|
"types": "./dist/runner/init/chrome-probe.d.ts",
|
|
51
51
|
"import": "./dist/runner/init/chrome-probe.js"
|
|
52
52
|
},
|
|
53
|
+
"./dsl-globals": {
|
|
54
|
+
"types": "./types/unotest-dsl.d.ts"
|
|
55
|
+
},
|
|
53
56
|
"./internal/page-inject": {
|
|
54
57
|
"types": "./dist/inspection/page-inject.d.ts",
|
|
55
58
|
"import": "./dist/inspection/page-inject.js"
|
|
@@ -64,6 +67,7 @@
|
|
|
64
67
|
"examples/fixtures/break-fix-app/README.md",
|
|
65
68
|
"examples/fixtures/break-fix-app/serve.mjs",
|
|
66
69
|
"src/mcp/prompts",
|
|
70
|
+
"types",
|
|
67
71
|
".claude/skills",
|
|
68
72
|
".claude/hooks",
|
|
69
73
|
"CHANGELOG.md",
|
|
@@ -75,21 +79,21 @@
|
|
|
75
79
|
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
76
80
|
"chokidar": "^4.0.3",
|
|
77
81
|
"dotenv": "^16.4.5",
|
|
78
|
-
"playwright": "^1.
|
|
82
|
+
"playwright": "^1.62.0",
|
|
79
83
|
"tsx": "^4.19.2",
|
|
80
84
|
"yaml": "^2.6.0",
|
|
81
85
|
"zod": "^3.23.8",
|
|
82
|
-
"@unotest/core": "^0.
|
|
83
|
-
"@unotest/grounder-client": "^0.
|
|
84
|
-
"@unotest/dsl": "^0.
|
|
85
|
-
"@unotest/protocol": "^0.
|
|
86
|
-
"@unotest/viewer": "^0.
|
|
86
|
+
"@unotest/core": "^0.19.0",
|
|
87
|
+
"@unotest/grounder-client": "^0.19.0",
|
|
88
|
+
"@unotest/dsl": "^0.19.0",
|
|
89
|
+
"@unotest/protocol": "^0.19.0",
|
|
90
|
+
"@unotest/viewer": "^0.19.0"
|
|
87
91
|
},
|
|
88
92
|
"devDependencies": {
|
|
89
93
|
"@types/node": "^22.10.0",
|
|
90
94
|
"javascript-obfuscator": "^4.1.1",
|
|
91
95
|
"tsup": "^8.5.1",
|
|
92
96
|
"typescript": "^5.7.2",
|
|
93
|
-
"@unotest/grounder": "^0.
|
|
97
|
+
"@unotest/grounder": "^0.19.0"
|
|
94
98
|
}
|
|
95
99
|
}
|