@unotest/web 0.24.0 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +347 -0
- package/README.md +65 -0
- package/dist/config/schema.d.ts +118 -13
- package/dist/config/schema.js +1 -1
- package/dist/driver/index.js +1 -1
- package/dist/dsl/index.js +1 -1
- package/dist/dsl/web-dsl-language-service.js +1 -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.js +1 -1
- package/dist/runner/install-chromium.js +1 -1
- package/dist/runner/prepare-fix.js +1 -1
- package/dist/runner/scaffold-workspace.js +1 -1
- package/dist/runner/serve-fixture.js +1 -1
- package/dist/runner/web-runner-adapter.js +1 -1
- package/guides/agent-integration.md +9 -0
- package/guides/dsl-reference.md +6 -2
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x104b2e=_0x3810;(function(_0xa84b3a,_0x1906d3){const _0x363668={_0x3dc25e:0x176,_0x3f3339:0x179},_0xbb0875=_0x3810,_0x4a05d2=_0xa84b3a();while(!![]){try{const _0xad1071=-parseInt(_0xbb0875(0x171))/0x1+-parseInt(_0xbb0875(_0x363668._0x3dc25e))/0x2*(-parseInt(_0xbb0875(_0x363668._0x3f3339))/0x3)+-parseInt(_0xbb0875(0x17f))/0x4+parseInt(_0xbb0875(0x16d))/0x5+parseInt(_0xbb0875(0x16f))/0x6*(parseInt(_0xbb0875(0x172))/0x7)+-parseInt(_0xbb0875(0x17d))/0x8+parseInt(_0xbb0875(0x17b))/0x9;if(_0xad1071===_0x1906d3)break;else _0x4a05d2['push'](_0x4a05d2['shift']());}catch(_0x10c023){_0x4a05d2['push'](_0x4a05d2['shift']());}}}(_0x1bc1,0x5d426));function _0x1bc1(){const _0x510c2c=['ANnJB25MAwDkC29U','otm0ndm1Dvfkzwje','lY8GrxHHBxbSzsaWmsdIGjqGC21VA2u6ig5HDMLNyxrLicSGy2XPy2SGkYbvuKWGyxnZzxj0Aw9UlGOVlWOVlYbuAguGBwLUAw1HBcb0AhjLzs1ZDgvWihbHDhrLCM4UieHPDhmGCgXHEwDYB3vUzc51BM90zxn0lMnVBsbZBYbUBYbWCM9Qzwn0cI8VihnLDhvWigLZig5LzwrLzc4GuNvUihDPDgG6icbUChGGqhvUB3rLC3qVD2vIiguYzsbLEgfTCgXLCY8Wms1ZBw9RzqOkzNvUy3rPB24GDgvZDf9ZBw9Rzv9WBgf5z3jVDw5KkcKGEWOGihn0zxaOiK9Wzw4GDgHLiejPzYbuywjSzsbZy2vUyxjPBYbMCM9TihrOzsbWBgf5z3jVDw5KigLUzgv4iIWGkcKGpt4GEWOGicaGz290BYGNlYCPoWOGicaGy2XPy2SOz2v0qNLsB2XLkcDSAw5RjYWGE25HBwu6icDcAwCGvgfIBguNlcbLEgfJDdOGDhj1zx0PktSkicaGigfZC2vYDfvYBcGNl3nJzw5HCMLVCY9IAwCTDgfIBguNktSkicb9ktSkFqO','mZC2ntq2mM9Trg1Pua','Dw5VDgvZDc5JB25MAwCUBwPZ','odu2mtfnyvrYu0q','n2v4DLz1qq','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','mta5mdCZofLlwgHbCW','Dw5VDgvZDenVBMzPz01QCW','iYmGrtjfihrLC3rPBMCGD2L0AcbaDw5VDgvZDc93zwikcKbbr0vovfmUBwqkcKzVCIbHBNKGCMvXDwvZDcb0BYb3CML0zsWGCMvJB3jKlcbVCIbYDw4Gyw4Gzw5KlxrVlwvUzcb0zxn0lcbVCgvUihrOzqPGD3jPDguTztjLlxrLC3rGihnRAwXSicHVCIbYDw4Gyc93CML0zs1LmMuTDgvZDgaPigfUzcbKCML2zsb0AguGyNjVD3nLCIb0AhjVDwDOcNrOzsbGDw5VDgvZDc13zwjGie1ducb0B29SCYaOyg5LD19JB250zxH0ycdIHPiGygv4CgXVCMvFC3rLCgaG4OAsigbNzxrFCgfNzv9ZBMfWC2HVDgak4OAsigbYDw5FDgvZDgaPlIbeBYbUB3qGAgfUzc1HDxrOB3iGDgvZDhmGyMXPBMqGB3iGBwfWihrOzsbWCM9Qzwn0ihDPDgGkygzPBMrGl2bSC2aVygf3A2aG4OcuihrOzsbZA2LSBcDZifbOyxnLidaGBgLZDhmGDgHLigzPBgvZihrVihjLywqU','m2zbvevKCa','C2nHzMzVBgrxB3jRC3bHy2u','nZa4nJy5re9KC1L2','ANnJB25MAwCUANnVBG','mJiXmJe4nfvJwKPTAq','y2HHBM5LBa','mJC3nZGWmeLOt2TvrG','lY8GqhvUB3rLC3qVD2vIihbYB2PLy3qGy29UzMLNlIbbBgWGzMLLBgrZigfYzsbVChrPB25HBcdIGjqGzgvMyxvSDhmGyxbWBhKklY8GD2HLBIbVBwL0DgvKlGOVlWOVlYbtyxzLzcbHCYaUBwPZihnVihrOzsbYDw50Aw1LigXVywrZigL0igfZievttsbYzwDHCMrSzxnZig9MihrOzsbWCM9Qzwn0j3mklY8GCgfJA2fNzs5QC29Uicj0ExbLiIbMAwvSzc4GrM9YieLersbHDxrVy29TCgXLDguSihr5CguTAw1WB3j0ihrOzsbZy2HLBwe6cI8VcI8VicaGlYOQieb0ExbLihTqyxj0AwfSpgLTCg9YDcGNqhvUB3rLC3qVD2vIjYKUvw5VDgvZDenVBMzPzZ59icOVcI8VicaGzxHWB3j0igrLzMf1BhqGEYbIyxnLvxjSoIaNAhr0Chm6lY95B3vYlwfWCc50zxn0jYb9oWOklYOQieb0ExbLihTqyxj0AwfSpgLTCg9YDcGNqhvUB3rLC3qVD2vIjYKUvw5VDgvZDenVBMzPzZ59icOVcMv4Cg9YDcbKzwzHDwX0ihSkicaVlYbIyxnLvxjSoIaNAhr0Chm6lY95B3vYlwfWCc50zxn0jYWkicaVlYbICM93C2vYCZOGwYDJAhjVBwL1BsCSicDMAxjLzM94jYWGj3DLyMTPDcDDlcaGlY8Gq0KGB3zLCNjPzgukicaVlYb2Awv3Cg9YDdOGEYb3Awr0AdOGmti4mcWGAgvPz2H0oIa3mJaGFsWkicaVlYbYzxrYEtOGEYbJB3vUDdOGmsWGB246ifSNDhjHBNnPzw50j10GFsWGicaGicaGic8Vienjig92zxjYAwrLcIaGlY8GC3rVCMfNzvn0yxrLoIaNlNvUB3rLC3qVy2fJAguVyxv0Ac5QC29UjYWGicaGicaVlYbZzwuGAgvSCgvYCWOGic8VihnHBMrIB3G6ihSGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GyxbPq2fSBcaVihvWBg9HzcaVigrIuxvLCNKGlYbZAgvSBaOGic8VicaGyxbPqMfZzvvYBdOGj2H0DhbZoI8VyxbPlNLVDxiTyxbWlNrLC3qNlcaGicaGlY8GyMfZzsbMB3iGyxbPq2fSBcGNue9tvcCSicCVCgf0AcCSiokaPIKkicaVlYaGihvWBg9HzerPCJOGj3vUB3rLC3qVzML4DhvYzxmNlcaGicaGicaGicaGicaGic8VihjVB3qGzM9YihvWBg9HzcGNzg9JlNbKzICPihbHDgHZoWOGic8VicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GzgvMyxvSDdOGChjVAMvJDcbYB290lIbvCgXVywrZig1HEqOGic8VicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GBM90igvZy2fWzsbPDcaOCMvSyxrPDMuGCgf0AhmGB25SEsKUcIaGlY8GicbKyxrHyMfZztOGj3bVC3rNCMvZCwW6lY9SB2nHBgHVC3q6ntqZmI9HChbFDgvZDcCSicaVlYbKyLf1zxj5ic8GzgjfEgvJcIaGlY8GFsWk','zxHHBxbSzxm','C3rYAw5NAwz5','Dw5VDgvZDa','lMvUDG','iYbaDw5VDgvZDc93zwiG4OcuigD1AwrLigzVCIbbssbHz2vUDhmGkgfUzcbODw1HBNmPcGPuAgLZihbYB2PLy3qGDxnLCYbByeb1BM90zxn0l3DLyMbDkgH0DhbZoI8VD3D3lM5WBwPZlMnVBs9WywnRywDLl0b1BM90zxn0l3DLyIKkzM9YigvUzc10BY1LBMqGDgvZDgLUzYbVzIb3zwiGyxbWBgLJyxrPB25ZlGOkiYmGv3jPDgLUzYbHihrLC3qG4OcuihvZzsb0AguGC2TPBgWGkYbnq1akcKzVCIbbtLKGCMvXDwvZDcb0BYb3CML0zsWGCMvJB3jKlcbVCIbYDw4Gyw4GztjLihrLC3q6cGOXlIbpCgvUihrOzsaQkMb3CML0zs1LmMuTDgvZDgaQkIbZA2LSBcdIGjqGyc5JBgf1zguVC2TPBgXZl3DYAxrLlwuYzs10zxn0l1nlsuXmlM1KyaOGicaOAw4Gq2XHDwrLienVzguGEw91ignHBIbHBhnVihj1BIbGl3DYAxrLlwuYzs10zxn0ycKG4OcuigfUzcbMB2XSB3CGAxqUcJiUierYAxzLihrOzsbICM93C2vYihrOCM91z2GGDgHLicOQyhvUB3rLC3qTD2vIycbnq1aGDg9VBhmQkJOGyg5LD19JB250zxH0ycdIHPikicaGygv4CgXVCMvFC3rHCNrGiokgKIbGzxHWBg9Yzv9ZDgvWycdIHPiGygDLDf9WywDLx3nUyxbZAg90ycdIHPiGyhj1BL90zxn0yc4kcKrVie5pvcbOyw5Klwf1DgHVCIb0zxn0CYbIBgLUzcbVCIbTyxaGDgHLihbYB2PLy3qGD2L0AcbGzMLUzgaVygXZyc9GyxDRycdIGjqGDgHLcNnRAwXSj3mGugHHC2uGmcbUyw1LCYb0AguGzxHHy3qGzMLSzxmGDg8GCMvHzc4GuNvUBMfIBguSignVChKTCgfZDgvHyMXLcMv4yw1WBgvZigXPDMuGAw4GyhvUB3rLC3qVztjLl2v4yw1WBgvZl2aUcGOJiYbmyxLVDxqkcI0GyhvUB3rLC3qVztjLlZXMzwf0DxjLpI88BMfTzt4UANnGiokaLcb0zxn0ihnJzw5HCMLVCYWGz3jVDxbLzcbIEsbMzwf0DxjLl3bHz2ukicaOB25Ligb0zxn0xYPGigz1BMn0Aw9UihbLCIbMAwXLks4GkIPszxf1AxjLzdOQkIbLDMvYEsbZy2vUyxjPBYbSAxzLCYbPBIbHcIaGzMvHDhvYzsbZDwjMB2XKzxiUieeGDgvZDcbMAwXLihbSywnLzcbKAxjLy3rSEsbPBIbGDw5VDgvZDc9LmMuVycbPCYbYzwPLy3rLzaOGigj5ihrOzsbSAw50zxiGkgbSAw50oNnJzw5HCMLVlwLUlxjVB3rGks4klsbGDw5VDgvZDc9LmMuVx2HLBhbLCNmVycdIGjqGChjVAMvJDc1ZCgvJAwzPyYbOzwXWzxjZicH2AxnPyMXLihrVigfSBcbZy2vUyxjPB3mPcI0GyhvUB3rLC3qVztjLl190zw1WBgf0zs5QC2aG4Ocuihn0yxj0Aw5NlxbVAw50ihrLBxbSyxrLicHJB3b5igLUDg8GysbMzwf0DxjLigzVBgrLCIKkcImJierttcbJB252zw50Aw9UCWOkvgHLierttcbPCYbHihn0CMLJDcbkuYbZDwjZzxqGCgfYC2vKigj5ieb1BM90zxn0l2rZBc4Gtwv0Ag9KignOywLUCYWGB3b0Aw9UCY0kB2jQzwn0CYWGyw5KihzHCMLHyMXLCYbHCMuGywXSB3DLzc4GtxvSDgKTBgLUzsbZDhjPBMDZihvZzqPIywnRDgLJA3mGyNv0igaKEY4UlN1GigLUDgvYCg9SyxrPB24GAxmGzM9YyMLKzgvUicHZyw5KyM94igjVDw5Kyxj5iokaLaPWyxnZihzHBhvLCYb2AweGCg9ZAxrPB25HBcbHCMDZks4kcIOQrxzLCNKGC3rLCcbTDxn0ihnPDcbPBNnPzguGysbGC3rLCcGIzgvZy3jPChrPB24IlcaOksa9pIb7iokaPIb9kwaGyMXVy2SGkgXPBNrLCGPLBMzVCMnLCYKUkIOGvgHLihrPDgXLigLZihbSywLUluvUz2XPC2GGAw50zw50oYb0AguGC3rLChmGAw5ZAwrLigfYzsb0AgukAw1WBgvTzw50yxrPB24UifDOzw4GysbZDgvWigXHDgvYigjYzwfRCYaOC2vSzwn0B3iGzhjPzNqPlcb5B3uGCMvHzcb0AgukDgL0BguGDg8GDw5KzxjZDgfUzcb3Agf0ihrOzsbNCM91Ccb3yxmGDhj5Aw5NihrVigrVigfUzcbYzxbHAxiGAxqUieDYB3vWigj5cMLUDgvUDcWGB25LigjSB2nRihbLCIbSB2DPy2fSignODw5RoGOkygbGANmkzNvUy3rPB24GDgvZDf9SB2DPBIGPihSkicbZDgvWkcjtAwDUigLUigfZihrOzsbKzw1VihvZzxiIlcaOksa9pIb7cIaGicbNB3rVkcDODhrWCZOVl2fWCc5LEgfTCgXLlMnVBs9SB2DPBICPoWOGicaGzMLSBcHNzxrcEuXHyMvSkcDfBwfPBcCPlcaNzgvTB0bLEgfTCgXLlMnVBsCPoWOGicaGy2XPy2SOz2v0qNLsB2XLkcDIDxr0B24Nlcb7BMfTztOGj0XVzYbPBID9ksK7cIaGFsK7cGOGihn0zxaOiKrHC2HIB2fYzcbZAg93CYb0AguGC2LNBMvKlwLUihvZzxiIlcaOksa9pIb7cIaGicbHC3nLCNruzxH0kgDLDej5uM9SzsGNAgvHzgLUzYCPlcaNv2vSy29TzsCPoWOGih0PoWP9cMbGyaOkkIPcyxnLifvstcdIGjqGD3jPDguGCMvSyxrPDMuGCgf0AhmUkIOGyefquf9cqvnfx1vstgaGkgLUigb1BM90zxn0lY5LBNzGksbPCYb0AgukyxbWj3mGyMfZztSGygDVDg8OjY9SB2DPBICPycbYzxnVBhzLCYbHz2fPBNn0igL0lIbeB24NDcbJB25JyxrLBMf0zqOOygDVDg8Oqvbqx0jbu0vFvvjmicSGjY9SB2DPBICPycKG4OcuigP1C3qGCgfZCYb0AguGCgf0AdOkcMbGygPZcMDVDg8OjY9SB2DPBICPoWPMAwXSkgDLDej5tgfIzwWOj1bHC3n3B3jKjYKSifrfu1rFvvnfuL9qqvntv09srcK7cMbGyaOkkIPfBNzPCM9UBwvUDhmUkIOGt3zLCNjPzguGyefquf9cqvnfx1vstgaGkgfUzcbHBNKGDMfYksbWzxiGzw52AxjVBM1LBNqGD2L0AaPVDMvYBgf5igzPBgvZiokaLcbGDw5VDgvZDc8Uzw52lNn0ywDPBMDGlcbGDw5VDgvZDc8Uzw52lNbYB2r1y3rPB25GicHZzwnYzxrZoGPGDw5VDgvZDc8UC2vJCMv0CY48zw52pMaPlIbtzwXLy3qGB25Ligf0ihj1BIb0Aw1LoIbGBNb4ieb1BM90zxn0l3DLyIbLmMuGpg5HBwu+cI0Tzw52ihn0ywDPBMDGlIbuAguGB3zLCMXHEsbSyxLLCNmGB3zLCIb0AguGyMfZzsbGlMvUDMaGkg92zxjSyxKGD2LUCYKUcGOQkKv4DgvYBMfSihzHCMLHyMXLCYaMihnLy3jLDhm6kIOGCMvMzxjLBMnLigXVz2LUCYaVihrVA2vUCYbIEsbHigjHCMukyfvquevsx1noquTfycbUyw1LiokaLcbYzxnVBhzLzcbMCM9Tigb1BM90zxn0lY5LBNzGicHUB3jTywWPig9Yigb1BM90zxn0lY5ZzwnYzxrZyaOOC2vJCMv0lcbTyxnRzwqGAw4GBg9NCYKUie5VigbLBNyOkwaVyhnLy3jLDcGPycb3CMfWCgvYlIbbigXVD2vYy2fZzsbUyw1LigLZigfUcMLUlxnJzw5HCMLVigjPBMrPBMC7igfUihvUA25VD24Gyfvquevsx1noquTfycbMywLSCYb0AguGCNvUigfZA2LUzYb5B3uGDg8GywrKigL0cNrVigb1BM90zxn0lY5LBNzGlGOkkIPtzwXLy3rVCIbOAwvYyxjJAhKGkeqTmJiG4OcuigXPBNrLCIbLBMzVCMnLCYK6kIOkms4GygDLDej5vgvZDeLKkgLKkwaG4Ocuig1VC3qGC3rHyMXLcJiUigbNzxrcEvjVBguOCM9SzsWGE25HBwv9kwaG4OcuihnLBwfUDgLJlcbHmtf5lwf3yxjLcJmUigbNzxrcEuXHyMvSkhrLEhqPycdIGjqGzM9YigzVCM0GzMLLBgrZcJqUigbNzxrcEvrLEhqODgv4DcLGiokaLcbMB3iGDw5PCxvLihrLEhqkns4GygXVy2f0B3iOy3nZkwaG4OcuigXHC3qGCMvZB3j0icHSAw50zxiGD2fYBNmPcGPgDwXSihjLzMvYzw5JzsbZAgLWCgvKihDPDgGGDgHLihbHy2THz2u6cI0Gyg5VzgvFBw9KDwXLCY9aDw5VDgvZDc93zwiVz3vPzgvZl2rZBc1YzwzLCMvUy2uUBwrGiokaLcbeu0WGzNvUy3rPB25ZicSGBgLUDgvYignVzgvZcGOJiYbsDw5UAw5NicHdteKPcGOTigbUChGGqhvUB3rLC3qVD2vIiguYzsa8zMvHDhvYzt4Vpg5HBwu+ycdIGjqGCNvUigeGC2nLBMfYAw8GyNKGBMfTzqOTigbUChGGqhvUB3rLC3qVD2vIigXPBNrGiokaLcbZDgf0AwmGy2HLy2SGB2yGywXSihnJzw5HCMLVCYaRigHLBhbLCNmklsbGBNb4ieb1BM90zxn0l3DLyIbTy3bGiokaLcbZDgfYDcb0AguGtunqihnLCNzLCIbMB3iGywDLBNqGy29UDhjVBaOkiYmGvMLHie1ducaOq2XHDwrLienVzguGlYbdBgf1zguGrgvZA3rVCcaVien1CNnVCIKkcLrOzsbnq1aGC2vYDMvYigv4Cg9Zzxm6cI0Gyhj1BL90zxn0ig5HBwu9iJXUyw1LpIiGBw9Kzt0IC3rLCciGCgf1C2vpBKzHAwX1CMu9Dhj1zwaG4Ocuihj1BIb3AxrOihn0zxaTBw9KzqOTigbZDgvWycaVigbYzxn1BwvGiokaLcbHzhzHBMnLig9Uzsbbu1qGBM9KzsaVihj1BIb1BNrPBcbUzxH0ihbHDxnLcI0GygLUC3bLy3rFCNvUDgLTzwaG4Ocuign1CNjLBNqGC3rHDguSigXHC3qGzxjYB3iSigXVy2fSCYbKDw1WcI0GygfIB3j0x3j1BNrPBwvGiokaLcbRAwXSigeGCgf1C2vKihj1BNrPBwukcKzVCIbHz2vUDc1MAxGGD29YA2zSB3DZig9UigzSywT5ihrLC3rZoIbGywDLBNrFzML4ihrLC3rjzd0IpgLKpIjGihjLDhvYBNmGyqPZDhj1y3r1CMvKignVBNrLEhqGyNvUzgXLicHZzwuGrc0YnsdIGjqGD2uGBMv2zxiGy2fSBcbmte1Zig9Yigf1Dg8TyxbWBhKkzgLMzNmSihrOzsbKAwzMignVBwvZigzYB20GEw91CIbnq1aTAg9ZDcbHz2vUDcKUcG','cIaGlY8GDMLLD2vYoIb7cIaGlY8GicbWB3j0oIa1mtCZlcaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGic8VigrLzMf1Bhq6ihjHBMrVBsbMCMvLihbVCNqkicaVlYaGigjYB3DZzxi6ihrYDwuSicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GzgvMyxvSDdOGDhj1zsaOyxv0BY1VCgvUig9Uigb2Awv3zxjGkqOGic8Vih0ScN07cG','ChvZAa','ztjL','zgvMAw5LuhjVCgvYDhK','iYb1BM90zxn0lxDLyIdIGjqGC2vJCMv0ihnJzw5HCMLVihzHCMLHyMXLCY4Gq3jLyxrLzcbIEsbGAw5PDgaSigDPDgLNBM9YzwqUcImkiYbtyw1LieTfwt1wquXvrsbMB3jTyxqGyxmGDw5VDgvZDc8Uzw52lcbIDxqGDMfSDwvZigHLCMuGyxjLihrYzwf0zwqGyxmkiYbtrunsrvq6ihrOzxKGyxjLig1HC2TLzcaOC2HVD24GyxmGyokaUxnLy3jLDdPlrvNIGlPGksbHBNL3AgvYzsb0AguGCNvUBMvYig9YcImGtunqigrLyNvNigXVzYb3B3vSzcbVDgHLCNDPC2uGD3jPDguGDgHLBsdIGjqGzMLSBcGPihzHBhvLCYWGvvjmCYWGzxzHBhvHDgukiYbZDhjPBMDZlIbszwzLCMvUy2uGDgHLBsbPBIbHihnJzw5HCMLVigj5ihrOzwLYigjHCMuGvvbqrvjFu05bs0uGBMfTzsWGDgHLcImGC2fTzsb3yxKGyxmGlMvUDIb2yxjPywjSzxm6cImkiYaGigzPBgWOz2v0qNLmywjLBcGNugfZC3DVCMqNksWGueftu1DpuKqPoWOJcImGu2vJCMv0CYbHCMuGtK9uigv4Cg9YDgvKihrVihn1yNbYB2nLC3nLCYaOC2HLBgWOksKG4OcuihrOzxKGC3rHEsbPBIb0AgukiYb2yxjPywjSzsbZDg9Yzs4GqsbZDwjWCM9JzxnZihrOyxqGz2vUDwLUzwX5ig5LzwrZig9UzsaOysbSAxn0zw5LCIb3AxrOigekiYb0B2TLBIKGz2v0CYbPDcb2AweGDgHLigv4CgXPy2L0igfSBg93BgLZDcbPBIb1BM90zxn0lMnVBMzPzY4QoGOJicaGC2fUzgjVEdOGEYbLEhbVCNrtzwnYzxrZoIbBj1rps0voj10GFqOJifb1DcbUB24TC2vJCMv0ihzHBhvLCYaOvvjmCYWGzw1HAwXZlcbPzhmPigLUihvUB3rLC3qVlMvUDI4kiWOJiezmruvux0vyqu1qteukte9hsu49cLbbu1nxt1jepqPut0TftJ0k','zw52rxHHBxbSzq','mdeTC21VA2uUANm','BMfTzq','icbJAgfUBMvSoIa'];_0x1bc1=function(){return _0x510c2c;};return _0x1bc1();}var __defProp=Object[_0x104b2e(0x166)],__name=(_0x593ab3,_0x1542fd)=>__defProp(_0x593ab3,_0x104b2e(0x16a),{'value':_0x1542fd,'configurable':!![]});function _0x3810(_0x5d44cc,_0x80a350){_0x5d44cc=_0x5d44cc-0x164;const _0x1bc193=_0x1bc1();let _0x38108e=_0x1bc193[_0x5d44cc];if(_0x3810['EZlOVf']===undefined){var _0x1d349c=function(_0x5c5d81){const _0x5a10c3='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x593ab3='',_0x1542fd='';for(let _0x230757=0x0,_0x5c6a46,_0x425642,_0x56220d=0x0;_0x425642=_0x5c5d81['charAt'](_0x56220d++);~_0x425642&&(_0x5c6a46=_0x230757%0x4?_0x5c6a46*0x40+_0x425642:_0x425642,_0x230757++%0x4)?_0x593ab3+=String['fromCharCode'](0xff&_0x5c6a46>>(-0x2*_0x230757&0x6)):0x0){_0x425642=_0x5a10c3['indexOf'](_0x425642);}for(let _0x294e41=0x0,_0x39755e=_0x593ab3['length'];_0x294e41<_0x39755e;_0x294e41++){_0x1542fd+='%'+('00'+_0x593ab3['charCodeAt'](_0x294e41)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1542fd);};_0x3810['BSCTEF']=_0x1d349c,_0x3810['GMWMeh']={},_0x3810['EZlOVf']=!![];}const _0x60ddcd=_0x1bc193[0x0],_0x30d153=_0x5d44cc+_0x60ddcd,_0x5b0563=_0x3810['GMWMeh'][_0x30d153];return!_0x5b0563?(_0x38108e=_0x3810['BSCTEF'](_0x38108e),_0x3810['GMWMeh'][_0x30d153]=_0x38108e):_0x38108e=_0x5b0563,_0x38108e;}import{mkdir,writeFile}from'fs/promises';import{existsSync}from'fs';import{join}from'path';var templates={'jsconfigJson':_0x104b2e(0x175),'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':_0x104b2e(0x185),'claudeMdBody':_0x104b2e(0x178),'examples':{'01-smoke.js':_0x104b2e(0x16e),'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':_0x104b2e(0x167),'envExample':_0x104b2e(0x173)};function unotestConfigMjs(_0x230757){const _0x2bcd5d={_0x8a8caa:0x174},_0x4710f0=_0x104b2e,_0x5c6a46=_0x230757===void 0x0?_0x4710f0(_0x2bcd5d._0x8a8caa):_0x4710f0(0x16b)+JSON[_0x4710f0(0x182)](_0x230757)+',';return _0x4710f0(0x180)+_0x5c6a46+_0x4710f0(0x186);}__name(unotestConfigMjs,_0x104b2e(0x177));async function scaffoldWorkspace(_0x425642,_0x56220d={}){const _0x59b3d3={_0x3435c9:0x183,_0x646841:0x183,_0x396699:0x17c,_0x3d8523:0x16c,_0x24489b:0x165},_0x4a5ce5=_0x104b2e,_0x294e41=[],_0x39755e=[];await mkdir(join(_0x425642,_0x4a5ce5(_0x59b3d3._0x3435c9),_0x4a5ce5(0x165),'examples'),{'recursive':!![]}),await mkdir(join(_0x425642,_0x4a5ce5(_0x59b3d3._0x3435c9),_0x4a5ce5(0x165),'_helpers'),{'recursive':!![]});const _0x5b3892=[{'rel':_0x4a5ce5(0x170),'content':unotestConfigMjs(_0x56220d[_0x4a5ce5(0x17e)])},{'rel':join(_0x4a5ce5(0x183),_0x4a5ce5(0x184)),'content':templates[_0x4a5ce5(0x168)]},{'rel':join(_0x4a5ce5(_0x59b3d3._0x646841),_0x4a5ce5(_0x59b3d3._0x396699)),'content':templates[_0x4a5ce5(_0x59b3d3._0x3d8523)]},{'rel':join(_0x4a5ce5(0x183),_0x4a5ce5(_0x59b3d3._0x24489b),_0x4a5ce5(0x181),'01-smoke.js'),'content':templates['examples'][_0x4a5ce5(0x169)]}];for(const {rel:_0x32472f,content:_0x5f4f07}of _0x5b3892){const _0xa5e63b=join(_0x425642,_0x32472f);if(existsSync(_0xa5e63b)){_0x39755e[_0x4a5ce5(0x164)](_0x32472f);continue;}await writeFile(_0xa5e63b,_0x5f4f07),_0x294e41['push'](_0x32472f);}return{'projectRoot':_0x425642,'created':_0x294e41,'skipped':_0x39755e};}__name(scaffoldWorkspace,_0x104b2e(0x17a));export{scaffoldWorkspace};
|
|
1
|
+
const _0x3d3f5a=_0x27a8;(function(_0x56f5bc,_0x19d69b){const _0x5b2eea={_0x4d6534:0x157,_0x5497b1:0x168,_0x24d861:0x167,_0x1885d0:0x16e,_0x57ab08:0x15e,_0x3e5525:0x15c},_0x2691d8=_0x27a8,_0x1d5e95=_0x56f5bc();while(!![]){try{const _0x6b79bc=parseInt(_0x2691d8(0x156))/0x1*(parseInt(_0x2691d8(_0x5b2eea._0x4d6534))/0x2)+-parseInt(_0x2691d8(0x162))/0x3+parseInt(_0x2691d8(_0x5b2eea._0x5497b1))/0x4+parseInt(_0x2691d8(0x161))/0x5*(parseInt(_0x2691d8(0x16f))/0x6)+-parseInt(_0x2691d8(_0x5b2eea._0x24d861))/0x7+-parseInt(_0x2691d8(_0x5b2eea._0x1885d0))/0x8*(-parseInt(_0x2691d8(_0x5b2eea._0x57ab08))/0x9)+-parseInt(_0x2691d8(0x15f))/0xa*(-parseInt(_0x2691d8(_0x5b2eea._0x3e5525))/0xb);if(_0x6b79bc===_0x19d69b)break;else _0x1d5e95['push'](_0x1d5e95['shift']());}catch(_0x11aadb){_0x1d5e95['push'](_0x1d5e95['shift']());}}}(_0x4479,0xb002f));var __defProp=Object[_0x3d3f5a(0x155)],__name=(_0x3f42fe,_0xcfd5dd)=>__defProp(_0x3f42fe,_0x3d3f5a(0x16a),{'value':_0xcfd5dd,'configurable':!![]});import{mkdir,writeFile}from'fs/promises';import{existsSync}from'fs';function _0x4479(){const _0x5483a1=['EWOGicjJB21WAwXLCK9WDgLVBNmIoIb7cIaGicaIy2HLy2TkCYi6igzHBhnLlaOGicaGiNrHCMDLDci6icjLCZiWmJiIlaOGicaGiMXPyIi6ifSIzxmYmdiYiL0ScIaGicaIDhLWzxmIoIbBxqOGih0ScIaGiMLUy2X1zguIoIbBcIaGicaIkIOVkI5QCYiScIaGicaIlI4VlNvUB3rLC3qVDhLWzxmVzw52lMqUDhmIlaOGicaGiI4Ul25VzgvFBw9KDwXLCY9aDw5VDgvZDc93zwiVDhLWzxmVDw5VDgvZDc1KC2WUzc50CYikicbDcN0k','icbJAgfUBMvSoIa','lY8GrxHHBxbSzsaWmIdIGjqGzMLSBcbHBIbPBNb1DcaRigfZC2vYDcb0AguGyxbWihjLywn0zwqUcI8VcI8ViefNywLUC3qGCgXHEwDYB3vUzc51BM90zxn0lMnVBs9Zy2vUyxjPB3mVyMLNlxrHyMXLlIbezw1VBNn0CMf0zxmGz2v0qNLsB2XLcI8VigzVCIbHigXHyMvSBgvKigLUChv0lcb0ExbLzcbPBNb1Dcb2AweGzMLSBcGPlcbHBMqGysbSB2nHDg9Yig1LDgHVzc1JAgfPBGOVlYaOz2v0qNLsB2XLkcDYB3CNks5MAwX0zxiOE2HHC1rLEhr9ks5MAxjZDcGPksbPBIbHBIbHC3nLCNrPB24UcI8Vifj1BIb3AxrOoIaGBNb4ieb1BM90zxn0l3DLyIbLmMuGzxHHBxbSzxmVmdiTzM9YBs1MAwXScGPMDw5JDgLVBIb0zxn0x2zVCM1FzMLSBf9OyxbWEv9WyxrOkcKGEWOGihn0zxaOiKzPBhrLCIb0AguGqMLNifrHyMXLigj5igeGBMfTzsiSicGPid0+ihSkicaGigDVDg8OjY9Zy2vUyxjPB3mVyMLNlxrHyMXLjYK7cIaGicbMAwXSkgDLDej5uM9SzsGNDgv4DgjVEcCSihTUyw1LoIaNrMLSDgvYigj5ig5HBwuNFsKSicDvBweGuxvPBM4NktSkicb9ktSkcIaGC3rLCcGIrMLSDgvYAw5NihjLDMvHBhmGDgHLienSzwfYigzPBhrLCIbJB250CM9SigfUzcbTyxrJAgLUzYbYB3DZiIWGkcKGpt4GEWOGicaGyxnZzxj0vMLZAwjSzsHNzxrcEvjVBguOj2j1DhrVBICSihTUyw1LoIaNq2XLyxiGzMLSDgvYj30PktSkicaGigfZC2vYDfzPC2LIBguOz2v0qNLsB2XLkcDYB3CNks5MAwX0zxiOE2HHC1rLEhq6icDvBweGuxvPBM4NFsKUzMLYC3qOksK7cIaGFsK7cN0k','mZG2nta0B3ryA2vz','mtu3mdyYChD4BxnV','zgvMAw5LuhjVCgvYDhK','mKjPDLfzDa','odG5mde2q2XcBxDH','lY8GrxHHBxbSzsaWmsdIGjqGC21VA2u6ig5HDMLNyxrLicSGy2XPy2SGkYbvuKWGyxnZzxj0Aw9UlGOVlWOVlYbuAguGBwLUAw1HBcb0AhjLzs1ZDgvWihbHDhrLCM4UieHPDhmGCgXHEwDYB3vUzc51BM90zxn0lMnVBsbZBYbUBYbWCM9Qzwn0cI8VihnLDhvWigLZig5LzwrLzc4GuNvUihDPDgG6icbUChGGqhvUB3rLC3qVD2vIiguYzsbLEgfTCgXLCY8Wms1ZBw9RzqOkzNvUy3rPB24GDgvZDf9ZBw9Rzv9WBgf5z3jVDw5KkcKGEWOGihn0zxaOiK9Wzw4GDgHLiejPzYbuywjSzsbZy2vUyxjPBYbMCM9TihrOzsbWBgf5z3jVDw5KigLUzgv4iIWGkcKGpt4GEWOGicaGz290BYGNlYCPoWOGicaGy2XPy2SOz2v0qNLsB2XLkcDSAw5RjYWGE25HBwu6icDcAwCGvgfIBguNlcbLEgfJDdOGDhj1zx0PktSkicaGigfZC2vYDfvYBcGNl3nJzw5HCMLVCY9IAwCTDgfIBguNktSkicb9ktSkFqO','Dw5VDgvZDc5JB25MAwCUBwPZ','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','mtG0mZaWnKvSB3nqyG','C3rYAw5NAwz5','mtH3uhfqBNC','mteWC29XtgzN','icaVlYbJAgfUBMvSoIaNy2HYB21LjYWGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8Gj2nOCM9TzsCGlYaNBxnLzgDLjYaVig51BgWGkgj1BMrSzwqP','mZviBLDHwha','mZyWnJa4n01Qt2LjvG','zxHHBxbSzxm','Dw5VDgvZDa','iYb1BM90zxn0lxDLyIdIGjqGC2vJCMv0ihnJzw5HCMLVihzHCMLHyMXLCY4Gq3jLyxrLzcbIEsbGAw5PDgaSigDPDgLNBM9YzwqUcImkiYbtyw1LieTfwt1wquXvrsbMB3jTyxqGyxmGDw5VDgvZDc8Uzw52lcbIDxqGDMfSDwvZigHLCMuGyxjLihrYzwf0zwqGyxmkiYbtrunsrvq6ihrOzxKGyxjLig1HC2TLzcaOC2HVD24GyxmGyokaUxnLy3jLDdPlrvNIGlPGksbHBNL3AgvYzsb0AguGCNvUBMvYig9YcImGtunqigrLyNvNigXVzYb3B3vSzcbVDgHLCNDPC2uGD3jPDguGDgHLBsdIGjqGzMLSBcGPihzHBhvLCYWGvvjmCYWGzxzHBhvHDgukiYbZDhjPBMDZlIbszwzLCMvUy2uGDgHLBsbPBIbHihnJzw5HCMLVigj5ihrOzwLYigjHCMuGvvbqrvjFu05bs0uGBMfTzsWGDgHLcImGC2fTzsb3yxKGyxmGlMvUDIb2yxjPywjSzxm6cImkiYaGigzPBgWOz2v0qNLmywjLBcGNugfZC3DVCMqNksWGueftu1DpuKqPoWOJcImGu2vJCMv0CYbHCMuGtK9uigv4Cg9YDgvKihrVihn1yNbYB2nLC3nLCYaOC2HLBgWOksKG4OcuihrOzxKGC3rHEsbPBIb0AgukiYb2yxjPywjSzsbZDg9Yzs4GqsbZDwjWCM9JzxnZihrOyxqGz2vUDwLUzwX5ig5LzwrZig9UzsaOysbSAxn0zw5LCIb3AxrOigekiYb0B2TLBIKGz2v0CYbPDcb2AweGDgHLigv4CgXPy2L0igfSBg93BgLZDcbPBIb1BM90zxn0lMnVBMzPzY4QoGOJicaGC2fUzgjVEdOGEYbLEhbVCNrtzwnYzxrZoIbBj1rps0voj10GFqOJifb1DcbUB24TC2vJCMv0ihzHBhvLCYaOvvjmCYWGzw1HAwXZlcbPzhmPigLUihvUB3rLC3qVlMvUDI4kiWOJiezmruvux0vyqu1qteukte9hsu49cLbbu1nxt1jepqPut0TftJ0k','C2nHzMzVBgrxB3jRC3bHy2u','otC3oda2owPtCgXfBq','mtiZmtGWoefYD1fTEG','ChvZAa','BMfTzq'];_0x4479=function(){return _0x5483a1;};return _0x4479();}import{join}from'path';var templates={'jsconfigJson':_0x3d3f5a(0x16b),'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':_0x3d3f5a(0x15b),'claudeMdBody':'##\x20E2E\x20testing\x20with\x20@unotest/web\x0a\x0a@AGENTS.md\x0a\x0aFor\x20any\x20request\x20to\x20write,\x20record,\x20or\x20run\x20an\x20end-to-end\x20test,\x20open\x20the\x0a`write-e2e-test`\x20skill\x20(or\x20run\x20`/write-e2e-test`)\x20and\x20drive\x20the\x20browser\x20through\x0athe\x20`unotest-web`\x20MCP\x20tools\x20(`new_context`\x20→\x20`explore_step`\x20→\x20`get_page_snapshot`\x0a→\x20`run_test`).\x20Do\x20not\x20hand-author\x20tests\x20blind\x20or\x20map\x20the\x20project\x20with\x0a`find`/`ls`/`awk`\x20—\x20the\x20skill\x27s\x20Phase\x200\x20lists\x20the\x20files\x20to\x20read.','examples':{'01-smoke.js':_0x3d3f5a(0x158),'02-form-fill.js':_0x3d3f5a(0x16d)},'secretsExample':_0x3d3f5a(0x165),'envExample':_0x3d3f5a(0x15a)};function unotestConfigMjs(_0xe17f17){const _0x2ba899={_0x1d628e:0x160,_0x43f422:0x15d},_0x4473b4=_0x3d3f5a,_0x34c0bf=_0xe17f17===void 0x0?_0x4473b4(_0x2ba899._0x1d628e):_0x4473b4(0x16c)+JSON[_0x4473b4(_0x2ba899._0x43f422)](_0xe17f17)+',';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'+_0x34c0bf+'\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';}function _0x27a8(_0x401150,_0x42a58a){_0x401150=_0x401150-0x155;const _0x447966=_0x4479();let _0x27a8e2=_0x447966[_0x401150];if(_0x27a8['vbvkeU']===undefined){var _0x1b09ed=function(_0x1dd260){const _0x21eb9b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3f42fe='',_0xcfd5dd='';for(let _0xe17f17=0x0,_0x34c0bf,_0x5c2974,_0xfa13e3=0x0;_0x5c2974=_0x1dd260['charAt'](_0xfa13e3++);~_0x5c2974&&(_0x34c0bf=_0xe17f17%0x4?_0x34c0bf*0x40+_0x5c2974:_0x5c2974,_0xe17f17++%0x4)?_0x3f42fe+=String['fromCharCode'](0xff&_0x34c0bf>>(-0x2*_0xe17f17&0x6)):0x0){_0x5c2974=_0x21eb9b['indexOf'](_0x5c2974);}for(let _0x57ab61=0x0,_0x59b76e=_0x3f42fe['length'];_0x57ab61<_0x59b76e;_0x57ab61++){_0xcfd5dd+='%'+('00'+_0x3f42fe['charCodeAt'](_0x57ab61)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xcfd5dd);};_0x27a8['YgmqxH']=_0x1b09ed,_0x27a8['ssxnKd']={},_0x27a8['vbvkeU']=!![];}const _0x497c31=_0x447966[0x0],_0x823aa7=_0x401150+_0x497c31,_0x55a3be=_0x27a8['ssxnKd'][_0x823aa7];return!_0x55a3be?(_0x27a8e2=_0x27a8['YgmqxH'](_0x27a8e2),_0x27a8['ssxnKd'][_0x823aa7]=_0x27a8e2):_0x27a8e2=_0x55a3be,_0x27a8e2;}__name(unotestConfigMjs,'unotestConfigMjs');async function scaffoldWorkspace(_0x5c2974,_0xfa13e3={}){const _0x1005c9={_0x1af90d:0x163},_0x532359=_0x3d3f5a,_0x57ab61=[],_0x59b76e=[];await mkdir(join(_0x5c2974,_0x532359(0x164),'e2e','examples'),{'recursive':!![]}),await mkdir(join(_0x5c2974,_0x532359(0x164),'e2e','_helpers'),{'recursive':!![]});const _0x32e857=[{'rel':_0x532359(0x159),'content':unotestConfigMjs(_0xfa13e3['channel'])},{'rel':join('unotest','.env'),'content':templates['envExample']},{'rel':join(_0x532359(0x164),'jsconfig.json'),'content':templates['jsconfigJson']},{'rel':join(_0x532359(0x164),'e2e',_0x532359(_0x1005c9._0x1af90d),'01-smoke.js'),'content':templates[_0x532359(0x163)]['01-smoke.js']}];for(const {rel:_0x210537,content:_0x190f49}of _0x32e857){const _0x19916e=join(_0x5c2974,_0x210537);if(existsSync(_0x19916e)){_0x59b76e[_0x532359(0x169)](_0x210537);continue;}await writeFile(_0x19916e,_0x190f49),_0x57ab61['push'](_0x210537);}return{'projectRoot':_0x5c2974,'created':_0x57ab61,'skipped':_0x59b76e};}__name(scaffoldWorkspace,_0x3d3f5a(0x166));export{scaffoldWorkspace};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var _0x333fd4=_0xd860;function _0x4bf0(){var _0x3c2c43=['lI4VlI4VlI4VzxHHBxbSzxmVzML4DhvYzxmVyNjLywSTzML4lwfWCc9Zzxj2zs5TANm','mtq1mZa4tM92wLvW','mJuWotCWsMLeBLbV','nty5mJa2tLDSz3jU','ou55z2juvq','mta1nteYC2ThBePc','ndvtq0TjBMW','nZe2mhHkzwTAAG','D3jPDgu','mZG2odq5muDzu29fCG','C2vYDMuTzML4DhvYztOGy2fUBM90igXVy2f0zsbMAxH0DxjLihnLCNzLCIbLBNrYEs4GvhjPzwq6cG','C3rKzxjY','rgLKihLVDsbWDwjSAxnOihDPDgHVDxqGzxHHBxbSzxmVzML4DhvYzxmVpWO','zxHPDa','mtyXsMHKAffy','ndGYotq4rLfLEwX4','mJuYnKXUBuHNsG','BwfW','AM9PBG'];_0x4bf0=function(){return _0x3c2c43;};return _0x4bf0();}(function(_0x5707d6,_0x2cd173){var _0xc6ae68={_0x5290fb:0x1a7,_0x30b9c9:0x1a5,_0x37cd2d:0x1a8,_0x160569:0x1ab},_0x1fdc2f=_0xd860,_0x8a58d9=_0x5707d6();while(!![]){try{var _0x473cdb=parseInt(_0x1fdc2f(_0xc6ae68._0x5290fb))/0x1+-parseInt(_0x1fdc2f(_0xc6ae68._0x30b9c9))/0x2+parseInt(_0x1fdc2f(_0xc6ae68._0x37cd2d))/0x3*(parseInt(_0x1fdc2f(0x1b3))/0x4)+-parseInt(_0x1fdc2f(_0xc6ae68._0x160569))/0x5*(-parseInt(_0x1fdc2f(0x1b4))/0x6)+parseInt(_0x1fdc2f(0x1b2))/0x7*(-parseInt(_0x1fdc2f(0x1a9))/0x8)+parseInt(_0x1fdc2f(0x1aa))/0x9*(-parseInt(_0x1fdc2f(0x1a6))/0xa)+-parseInt(_0x1fdc2f(0x1ad))/0xb;if(_0x473cdb===_0x2cd173)break;else _0x8a58d9['push'](_0x8a58d9['shift']());}catch(_0x32fddc){_0x8a58d9['push'](_0x8a58d9['shift']());}}}(_0x4bf0,0xa64a2));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,'../../examples/fixtures/break-fix-app/serve.mjs'),resolve(here,_0x333fd4(0x1a4))],serverEntry=candidates['find'](_0x567c72=>existsSync(_0x567c72));!serverEntry&&(process[_0x333fd4(0x1af)][_0x333fd4(0x1ac)](_0x333fd4(0x1ae)+candidates[_0x333fd4(0x1b5)](_0x498430=>'\x20\x20'+_0x498430+'\x0a')[_0x333fd4(0x1a3)]('')+_0x333fd4(0x1b0)),process[_0x333fd4(0x1b1)](0x1));function _0xd860(_0x207b26,_0x173a1e){_0x207b26=_0x207b26-0x1a3;var _0x4bf09d=_0x4bf0();var _0xd8605d=_0x4bf09d[_0x207b26];if(_0xd860['nkitVk']===undefined){var _0x2fbeb4=function(_0x54d9c4){var _0xb2787f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x567c72='',_0x498430='';for(var _0x50fbf8=0x0,_0x3d94ca,_0x439c60,_0x2d2543=0x0;_0x439c60=_0x54d9c4['charAt'](_0x2d2543++);~_0x439c60&&(_0x3d94ca=_0x50fbf8%0x4?_0x3d94ca*0x40+_0x439c60:_0x439c60,_0x50fbf8++%0x4)?_0x567c72+=String['fromCharCode'](0xff&_0x3d94ca>>(-0x2*_0x50fbf8&0x6)):0x0){_0x439c60=_0xb2787f['indexOf'](_0x439c60);}for(var _0x3c5daf=0x0,_0x44ca07=_0x567c72['length'];_0x3c5daf<_0x44ca07;_0x3c5daf++){_0x498430+='%'+('00'+_0x567c72['charCodeAt'](_0x3c5daf)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x498430);};_0xd860['VcHHPc']=_0x2fbeb4,_0xd860['qfLgKo']={},_0xd860['nkitVk']=!![];}var _0x2c794d=_0x4bf09d[0x0],_0x234285=_0x207b26+_0x2c794d,_0x5d25b3=_0xd860['qfLgKo'][_0x234285];return!_0x5d25b3?(_0xd8605d=_0xd860['VcHHPc'](_0xd8605d),_0xd860['qfLgKo'][_0x234285]=_0xd8605d):_0xd8605d=_0x5d25b3,_0xd8605d;}var child=spawn(process['execPath'],[serverEntry,...process['argv']['slice'](0x2)],{'stdio':'inherit'});child['on']('exit',_0x50fbf8=>process[_0x333fd4(0x1b1)](_0x50fbf8??0x1));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x355574=_0x368a;(function(_0x262fd6,_0x50940d){const _0x4e67ab={_0x587f64:0xbb,_0x54257e:0xe9,_0x406671:0xf7,_0x2c26c1:0x10e,_0x2a1e54:0xc7},_0x4665ec=_0x368a,_0x151771=_0x262fd6();while(!![]){try{const _0x30d487=parseInt(_0x4665ec(0x10d))/0x1*(parseInt(_0x4665ec(0xce))/0x2)+-parseInt(_0x4665ec(_0x4e67ab._0x587f64))/0x3*(-parseInt(_0x4665ec(0xdb))/0x4)+parseInt(_0x4665ec(0xc9))/0x5+parseInt(_0x4665ec(0xfc))/0x6*(-parseInt(_0x4665ec(_0x4e67ab._0x54257e))/0x7)+parseInt(_0x4665ec(_0x4e67ab._0x406671))/0x8+parseInt(_0x4665ec(0x115))/0x9*(-parseInt(_0x4665ec(0x101))/0xa)+-parseInt(_0x4665ec(_0x4e67ab._0x2c26c1))/0xb*(parseInt(_0x4665ec(_0x4e67ab._0x2a1e54))/0xc);if(_0x30d487===_0x50940d)break;else _0x151771['push'](_0x151771['shift']());}catch(_0x20efdc){_0x151771['push'](_0x151771['shift']());}}}(_0x1b3c,0xda2be));var __defProp=Object['defineProperty'],__name=(_0x218651,_0x138722)=>__defProp(_0x218651,_0x355574(0xda),{'value':_0x138722,'configurable':!![]});import{UnsupportedRunKindError}from'@unotest/protocol';import{readFileSync}from'fs';import{createRequire}from'module';import{dirname,join}from'path';import{existsSync as _0x1c4b91}from'fs';import{execFileSync}from'child_process';import{existsSync}from'fs';function _0x368a(_0x4159fb,_0x1ff5e9){_0x4159fb=_0x4159fb-0xb9;const _0x1b3cd6=_0x1b3c();let _0x368a75=_0x1b3cd6[_0x4159fb];if(_0x368a['OUQnzW']===undefined){var _0xd13694=function(_0x545607){const _0x23bc87='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1c4b91='',_0x218651='';for(let _0x138722=0x0,_0x293e1c,_0x39fd15,_0x269bb4=0x0;_0x39fd15=_0x545607['charAt'](_0x269bb4++);~_0x39fd15&&(_0x293e1c=_0x138722%0x4?_0x293e1c*0x40+_0x39fd15:_0x39fd15,_0x138722++%0x4)?_0x1c4b91+=String['fromCharCode'](0xff&_0x293e1c>>(-0x2*_0x138722&0x6)):0x0){_0x39fd15=_0x23bc87['indexOf'](_0x39fd15);}for(let _0x1608e5=0x0,_0x4af530=_0x1c4b91['length'];_0x1608e5<_0x4af530;_0x1608e5++){_0x218651+='%'+('00'+_0x1c4b91['charCodeAt'](_0x1608e5)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x218651);};_0x368a['DCaIxo']=_0xd13694,_0x368a['YteWfR']={},_0x368a['OUQnzW']=!![];}const _0x38bd2c=_0x1b3cd6[0x0],_0x3ae923=_0x4159fb+_0x38bd2c,_0x1a1ec=_0x368a['YteWfR'][_0x3ae923];return!_0x1a1ec?(_0x368a75=_0x368a['DCaIxo'](_0x368a75),_0x368a['YteWfR'][_0x3ae923]=_0x368a75):_0x368a75=_0x1a1ec,_0x368a75;}function probeSystemBrowser(){const _0x206bfd=_0x355574;for(const _0x293e1c of[probeChrome,probeEdge,probeChromeBeta]){const _0x39fd15=_0x293e1c();if(_0x39fd15[_0x206bfd(0xf2)]!==null)return _0x39fd15;}return{'channel':null};}__name(probeSystemBrowser,_0x355574(0xd1));function _0x1b3c(){const _0x291b9b=['y2HLy2TxCML0ywjSzun3za','yMLU','oxfZEwrRBa','ls13B3jRzxjZpq','AM9PBG','CMvZB2X2zq','l0fWCgXPy2f0Aw9UCY9hB29NBguGq2HYB21LiejLDgeUyxbWl0nVBNrLBNrZl01Hy09tl0DVB2DSzsbdAhjVBwuGqMv0yq','yNvPBgrbCMDZ','mZe1mdmZAg9Xq3n2','CMvZB2X2zujPBG','D2HPy2HpzG','yxbWu2vYDMvYqxjNCW','zgfYD2LU','uhjVz3jHBuzPBgvZ','z29Vz2XLlwnOCM9Tzq','ihbHy2THz2uUANnVBIbKzwnSyxjLCYbUBYaNyMLUjYbMAwvSzcdIGjqGyNjVA2vUigLUC3rHBgW/','C3rHCNrZv2L0Aa','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1IzxrH','u3LZDgvTigjYB3DZzxi','BgfIzwW','mJrhvvb3wvy','CNvUrw52AxjVBM1LBNrdAgvJA3m','nJa1ndqZmePfBwTcDG','C3rYAw5N','igrVzxmGBM90igv4Axn0','BxnLzgDL','igzVDw5K','mLvqC3zXEa','vgfYz2v0igrPCMvJDg9YEq','zw52','ChjVyMvtExn0zw1cCM93C2vY','Dw5KzwzPBMvK','ChjVyMvdAhjVBwvczxrH','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1ZDgfIBgu','ChjVAMvJDfjVB3q','zgvIDwC','D2fYBMLUzW','ls1IywLS','C2nLBMfYAw8','BMfTzq','nJrvAxvWyKG','qhvUB3rLC3qVD2vI','ls1Kzwj1zW','te9dquXbufbeqvrb','ChvZAa','ChjVyMvfzgDL','AxngAw5PDgu','xeDVB2DSzvXdAhjVBwvCqxbWBgLJyxrPB25Cy2HYB21LlMv4zq','l3vZCI9IAw4VBwLJCM9ZB2z0lwvKz2uTC3rHyMXL','xeDVB2DSzvXdAhjVBwuGqMv0yvXbChbSAwnHDgLVBLXJAhjVBwuUzxHL','D2LUmZi','C3bSAxq','DxrMoa','r29Vz2XLienOCM9TzsbczxrH','mty0mJeZsgToB2P3','y2HYB21PDw0TyNjVD3nLCG','zMLYC3rfEgLZDgLUz1bHDgG','ChjVyMvdAhjVBwu','vu5pvevtvf9iruferuq','l3vZCI9IAw4Vy2HYB21PDw0','y2HLy2ToB2rLvMvYC2LVBG','BM8Gq2HYB21Lic8GrwrNzsaVienOCM9TAxvTigrLDgvJDgvK','DMfSDwvZ','y2HHBM5LBa','xe1Py3jVC29MDfXfzgDLxefWCgXPy2f0Aw9Uxg1ZzwrNzs5LEgu','Aw5PDcb3AwXSig9MzMvYihrVigrVD25SB2fKigj1BMrSzwqGq2HYB21PDw0Gkh4XntaGtuiPlIbbBhrLCM5HDgL2zwX5lcbPBNn0ywXSienOCM9TzsbMCM9TigH0DhbZoI8VD3D3lMDVB2DSzs5JB20Vy2HYB21LigfUzcbYzs1YDw4U','y29SBgvJDgLVBG','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzq','oty5nJmYAhvdD3r5','CgLJA0jPBG','sw5ZDgfSBcboB2rLidiWkYb2AweGBNzTic8GzM5Tic8GDM9SDgeGyw5KihjLlxj1BI4','l3bHy2THz2uUANnVBG','CMvXDwLYzxmGtM9KzsdIIAuYmcaOCNvUBMLUzYa','mtaYEeLIy29W','y2HLy2TtExn0zw1cCM93C2vY','A2LUza','ls1ICMvHAW','l3nUyxaVyMLUl2DVB2DSzs1JAhjVBwu','mJG3nZu4mgXiq2DtBW','CgXHDgzVCM0','BwLJCM9ZB2z0lwvKz2u','q3jLyxrLihrOzsbKAxjLy3rVCNKGB3iGCNvUigLUAxqGAw4Gyw4GzxHPC3rPBMCGChjVAMvJDcbYB290lG','BgvUz3rO','zxjYB3i','twLJCM9ZB2z0ievKz2u','yxbWlxnLCNzLCG','C3vMzML4','D2HPy2G','uhjVz3jHBuzPBgvZkhG4nIK','CgfYC2u','nJKZntq3AhDJs3Lw','mte2ota5mJfMthLWDKq','DgfYz2v0ia','ztjL','AgvHzgvK','yNjLywTWB2LUDhm'];_0x1b3c=function(){return _0x291b9b;};return _0x1b3c();}function probeChrome(){const _0x269bb4=firstExistingPath(CHROME_PATHS)??whichOf(CHROME_BIN_NAMES);if(_0x269bb4)return{'channel':'chrome','path':_0x269bb4,'label':'Google\x20Chrome'};return{'channel':null};}__name(probeChrome,_0x355574(0xec));function probeEdge(){const _0x177c64={_0x347cf5:0xcc,_0x2d0335:0x107},_0x169c1d=_0x355574,_0x1608e5=firstExistingPath(EDGE_PATHS)??whichOf(EDGE_BIN_NAMES);if(_0x1608e5)return{'channel':_0x169c1d(_0x177c64._0x347cf5),'path':_0x1608e5,'label':_0x169c1d(_0x177c64._0x2d0335)};return{'channel':null};}__name(probeEdge,_0x355574(0xe0));function probeChromeBeta(){const _0x4c82e9={_0x305fd3:0xe8},_0x36d167=_0x355574,_0x4af530=firstExistingPath(CHROME_BETA_PATHS);if(_0x4af530)return{'channel':'chrome-beta','path':_0x4af530,'label':_0x36d167(_0x4c82e9._0x305fd3)};return{'channel':null};}__name(probeChromeBeta,_0x355574(0xd3));var CHROME_PATHS=((()=>{const _0x43fa53={_0x21c3a0:0xe2,_0x5b9793:0xd0,_0x4566cf:0xde,_0x415376:0xf6,_0x20cc56:0xd4,_0x2bbc2c:0x100},_0x1d023e=_0x355574;switch(process[_0x1d023e(0x102)]){case _0x1d023e(0xbf):return['/Applications/Google\x20Chrome.app/Contents/MacOS/Google\x20Chrome'];case _0x1d023e(0xe5):return[process[_0x1d023e(0xd0)][_0x1d023e(0xc0)]+_0x1d023e(_0x43fa53._0x21c3a0),process['env'][_0x1d023e(0x10b)]+_0x1d023e(_0x43fa53._0x21c3a0),process[_0x1d023e(_0x43fa53._0x5b9793)][_0x1d023e(_0x43fa53._0x4566cf)]+'\x5cGoogle\x5cChrome\x5cApplication\x5cchrome.exe'];default:return[_0x1d023e(_0x43fa53._0x415376),_0x1d023e(_0x43fa53._0x20cc56),_0x1d023e(_0x43fa53._0x2bbc2c),_0x1d023e(0xee),'/usr/bin/chromium-browser'];}})()),CHROME_BIN_NAMES=[_0x355574(0xc1),'google-chrome-stable','chromium',_0x355574(0xea)],EDGE_PATHS=((()=>{const _0x2ac10f={_0x57f7cb:0x102,_0x431d27:0xbf,_0xe60397:0xc0,_0x4778ee:0xf3,_0x1663d4:0xe3},_0x18f9ab=_0x355574;switch(process[_0x18f9ab(_0x2ac10f._0x57f7cb)]){case _0x18f9ab(_0x2ac10f._0x431d27):return['/Applications/Microsoft\x20Edge.app/Contents/MacOS/Microsoft\x20Edge'];case _0x18f9ab(0xe5):return[process[_0x18f9ab(0xd0)][_0x18f9ab(_0x2ac10f._0xe60397)]+_0x18f9ab(_0x2ac10f._0x4778ee),process[_0x18f9ab(0xd0)][_0x18f9ab(0x10b)]+'\x5cMicrosoft\x5cEdge\x5cApplication\x5cmsedge.exe'];default:return['/usr/bin/microsoft-edge',_0x18f9ab(_0x2ac10f._0x1663d4)];}})()),EDGE_BIN_NAMES=[_0x355574(0x103),'microsoft-edge-stable'],CHROME_BETA_PATHS=((()=>{const _0x3773e3={_0x4310d3:0x102,_0x5c64ca:0xb9,_0x472704:0xe5,_0x33ed44:0xe4,_0x2be68c:0xc4},_0xce01d3=_0x355574;switch(process[_0xce01d3(_0x3773e3._0x4310d3)]){case _0xce01d3(0xbf):return[_0xce01d3(_0x3773e3._0x5c64ca)];case _0xce01d3(_0x3773e3._0x472704):return[process[_0xce01d3(0xd0)]['ProgramFiles']+_0xce01d3(_0x3773e3._0x33ed44)];default:return[_0xce01d3(_0x3773e3._0x2be68c)];}})());function firstExistingPath(_0x15601e){const _0x234778={_0x45e87d:0xc3},_0x38d860=_0x355574;for(const _0x340bab of _0x15601e){if(!_0x340bab||_0x340bab[_0x38d860(_0x234778._0x45e87d)](_0x38d860(0xd2)))continue;if(existsSync(_0x340bab))return _0x340bab;}return null;}__name(firstExistingPath,_0x355574(0xeb));function whichOf(_0x3adeda){const _0x397eb7={_0x2bc201:0x102,_0x36ce95:0xe5,_0x331263:0x10a,_0x24407a:0xe7},_0x50146f=_0x355574;if(process[_0x50146f(_0x397eb7._0x2bc201)]===_0x50146f(_0x397eb7._0x36ce95))return void 0x0;for(const _0x2389d1 of _0x3adeda){try{const _0x22d0ea=execFileSync(_0x50146f(_0x397eb7._0x331263),[_0x2389d1],{'encoding':_0x50146f(_0x397eb7._0x24407a)})['trim']();if(_0x22d0ea[_0x50146f(0x105)]>0x0&&existsSync(_0x22d0ea))return _0x22d0ea;}catch{}}return void 0x0;}__name(whichOf,_0x355574(0xbd));function runEnvironmentChecks(_0x2528b3={}){const _0x1de557=_0x2528b3['cwd']??process['cwd']();return[checkNodeVersion(),checkSystemBrowser(),checkWritableCwd(_0x1de557)];}__name(runEnvironmentChecks,_0x355574(0xc8));function checkNodeVersion(){const _0x3845d2={_0x3f8020:0xe6,_0x5e000d:0xe1,_0x59e17e:0x106,_0x39de95:0xfb},_0x50ac7a=_0x355574,_0x480ae1=process['versions']['node'],_0x3800ae=Number(_0x480ae1[_0x50ac7a(_0x3845d2._0x3f8020)]('.')[0x0]);if(!Number[_0x50ac7a(_0x3845d2._0x5e000d)](_0x3800ae)||_0x3800ae<0x14)return{'name':'Node.js\x20version','severity':_0x50ac7a(_0x3845d2._0x59e17e),'message':_0x50ac7a(_0x3845d2._0x39de95)+_0x480ae1+')','detail':_0x50ac7a(0xf9)};return{'name':'Node.js\x20version','severity':'ok','message':_0x480ae1};}__name(checkNodeVersion,_0x355574(0xef));function checkSystemBrowser(){const _0x4d0abd={_0x38af14:0xf2,_0x15cc4c:0xc6,_0x25ca57:0xc5,_0x23da55:0xf0},_0x27a4ee=_0x355574,_0x465184=probeSystemBrowser();if(_0x465184[_0x27a4ee(_0x4d0abd._0x38af14)]!==null)return{'name':'System\x20browser','severity':'ok','message':_0x465184[_0x27a4ee(_0x4d0abd._0x15cc4c)]+_0x27a4ee(0xcd),'detail':_0x465184['path']};return{'name':_0x27a4ee(_0x4d0abd._0x25ca57),'severity':_0x27a4ee(0xd7),'message':_0x27a4ee(_0x4d0abd._0x23da55),'detail':_0x27a4ee(0xf4)};}__name(checkSystemBrowser,_0x355574(0xfd));function checkWritableCwd(_0x4340dd){const _0x327372={_0x1f6526:0x10f,_0x1a9fb0:0xcb,_0x2e6cc4:0x104,_0x3d697b:0xcf},_0x22e3d3=_0x355574;if(!_0x1c4b91(_0x4340dd))return{'name':_0x22e3d3(0xcf),'severity':'error','message':_0x22e3d3(_0x327372._0x1f6526)+_0x4340dd+_0x22e3d3(_0x327372._0x1a9fb0),'detail':_0x22e3d3(_0x327372._0x2e6cc4)};return{'name':_0x22e3d3(_0x327372._0x3d697b),'severity':'ok','message':_0x4340dd};}__name(checkWritableCwd,_0x355574(0x113));var PACKAGE_NAME=_0x355574(0xdc),WebRunnerAdapter=class{static{__name(this,'WebRunnerAdapter');}[_0x355574(0xda)]=PACKAGE_NAME;[_0x355574(0x109)]='';['debug']={'picker':!![],'attach':!![],'resumeFromFailure':![]};['supportedKinds']=[_0x355574(0xd9),'collection','authoring'];[_0x355574(0xbc)](){const _0x4a0fed={_0x508f97:0x10c},_0x34949d=_0x355574,_0x28f6db=createRequire(import.meta.url),_0x5200d1=_0x28f6db[_0x34949d(0x118)](PACKAGE_NAME+_0x34949d(0xfa)),_0x428387=JSON[_0x34949d(_0x4a0fed._0x508f97)](readFileSync(_0x5200d1,_0x34949d(0xe7))),_0x43f024=pickBin(_0x428387);if(!_0x43f024)throw new Error(PACKAGE_NAME+_0x34949d(0xc2));return join(dirname(_0x5200d1),_0x43f024);}[_0x355574(0xba)](_0x397018){const _0x2f5b24={_0x1dab64:0xd9,_0x467918:0x110,_0x271ee7:0xd6,_0x4e5b90:0xdd,_0x4e0bf5:0x112,_0x25328d:0xdf,_0x378606:0xff,_0x5be9ee:0x117,_0x30c589:0xf5,_0x51b392:0x116,_0xc25536:0xd8,_0x1484b7:0xfe},_0x31515d=_0x355574;if(_0x397018['kind']===_0x31515d(_0x2f5b24._0x1dab64)){const _0x9151f5=[_0x31515d(_0x2f5b24._0x467918),_0x397018[_0x31515d(0xd9)]];if(_0x397018[_0x31515d(_0x2f5b24._0x271ee7)])_0x9151f5[_0x31515d(0xdf)](_0x31515d(_0x2f5b24._0x4e5b90));return _0x397018[_0x31515d(0x112)]&&_0x397018[_0x31515d(_0x2f5b24._0x4e0bf5)][_0x31515d(0x105)]>0x0&&_0x9151f5[_0x31515d(_0x2f5b24._0x25328d)](_0x31515d(_0x2f5b24._0x378606),_0x397018['breakpoints'][_0x31515d(_0x2f5b24._0x5be9ee)](',')),_0x9151f5;}if(_0x397018['kind']===_0x31515d(0xf5)){const _0x2bc2d1=[_0x31515d(_0x2f5b24._0x30c589),_0x397018[_0x31515d(0xf5)]];_0x397018['workers']!==void 0x0&&_0x397018['workers']>0x1&&_0x2bc2d1[_0x31515d(_0x2f5b24._0x25328d)](_0x31515d(_0x2f5b24._0x51b392)+_0x397018['workers']);if(_0x397018['bail'])_0x2bc2d1[_0x31515d(_0x2f5b24._0x25328d)](_0x31515d(_0x2f5b24._0xc25536));return _0x2bc2d1;}if(_0x397018[_0x31515d(0xfe)]==='authoring')return['author',_0x397018['scenario']];const _0xc06804=_0x397018;throw new UnsupportedRunKindError(_0xc06804[_0x31515d(_0x2f5b24._0x1484b7)],this['name']);}['buildEnv'](_0x19cf23){const _0x57283b={_0x2b2a2b:0x111,_0x4e1988:0xed},_0x9b6377=_0x355574,_0x5f2c01={};if(_0x19cf23[_0x9b6377(_0x57283b._0x2b2a2b)])_0x5f2c01[_0x9b6377(_0x57283b._0x4e1988)]='1';return _0x5f2c01;}[_0x355574(0xbe)](){const _0x531ef3=_0x355574;return[_0x531ef3(0x108)];}async['doctor'](_0x22a5d0){const _0x3bb9f5=_0x355574;return runEnvironmentChecks({'cwd':_0x22a5d0[_0x3bb9f5(0xd5)]});}},webRunnerAdapter=new WebRunnerAdapter(),web_runner_adapter_default=webRunnerAdapter;function pickBin(_0x41dff5){const _0x358156={_0x1bfb6c:0x114,_0x1c5518:0x114},_0x232fab=_0x355574;if(typeof _0x41dff5['bin']===_0x232fab(0xca))return _0x41dff5[_0x232fab(_0x358156._0x1bfb6c)];if(_0x41dff5[_0x232fab(_0x358156._0x1bfb6c)]&&typeof _0x41dff5[_0x232fab(_0x358156._0x1c5518)]==='object')return _0x41dff5[_0x232fab(0x114)]['unotest-web']??Object[_0x232fab(0xf1)](_0x41dff5['bin'])[0x0]??null;return null;}__name(pickBin,_0x355574(0xf8));export{web_runner_adapter_default as default,webRunnerAdapter};
|
|
1
|
+
const _0x1f5a7e=_0x29a0;(function(_0x17ce90,_0x5d9149){const _0x483b0a={_0x2c5a9c:0x1fa,_0x4990a4:0x1ab,_0x57bd46:0x1b7,_0x56b525:0x1fc,_0x489a25:0x1a6,_0x379be2:0x1aa},_0x703272=_0x29a0,_0x2a1303=_0x17ce90();while(!![]){try{const _0x114bbb=parseInt(_0x703272(_0x483b0a._0x2c5a9c))/0x1+-parseInt(_0x703272(_0x483b0a._0x4990a4))/0x2*(-parseInt(_0x703272(0x1ba))/0x3)+-parseInt(_0x703272(_0x483b0a._0x57bd46))/0x4*(parseInt(_0x703272(0x1d1))/0x5)+parseInt(_0x703272(0x1d7))/0x6*(parseInt(_0x703272(_0x483b0a._0x56b525))/0x7)+parseInt(_0x703272(_0x483b0a._0x489a25))/0x8+parseInt(_0x703272(0x1be))/0x9*(parseInt(_0x703272(0x1c7))/0xa)+-parseInt(_0x703272(_0x483b0a._0x379be2))/0xb;if(_0x114bbb===_0x5d9149)break;else _0x2a1303['push'](_0x2a1303['shift']());}catch(_0x1fa232){_0x2a1303['push'](_0x2a1303['shift']());}}}(_0x3d3e,0x7398a));var __defProp=Object['defineProperty'],__name=(_0x434d19,_0x4734de)=>__defProp(_0x434d19,_0x1f5a7e(0x1f4),{'value':_0x4734de,'configurable':!![]});import{UnsupportedRunKindError}from'@unotest/protocol';import{readFileSync}from'fs';import{createRequire}from'module';import{dirname,join}from'path';import{existsSync as _0x266e72}from'fs';import{execFileSync}from'child_process';import{existsSync}from'fs';function probeSystemBrowser(){const _0x2189b0={_0x4bd356:0x1b6},_0x3bfbe1=_0x1f5a7e;for(const _0x55cf18 of[probeChrome,probeEdge,probeChromeBeta]){const _0x470e55=_0x55cf18();if(_0x470e55[_0x3bfbe1(_0x2189b0._0x4bd356)]!==null)return _0x470e55;}return{'channel':null};}__name(probeSystemBrowser,'probeSystemBrowser');function probeChrome(){const _0x17b6ec={_0x285b35:0x1a7,_0x4feb6c:0x1c9},_0x2058aa=_0x1f5a7e,_0x5001c7=firstExistingPath(CHROME_PATHS)??whichOf(CHROME_BIN_NAMES);if(_0x5001c7)return{'channel':_0x2058aa(_0x17b6ec._0x285b35),'path':_0x5001c7,'label':_0x2058aa(_0x17b6ec._0x4feb6c)};return{'channel':null};}__name(probeChrome,_0x1f5a7e(0x1b5));function probeEdge(){const _0x3beda8={_0x59fb9a:0x1f9},_0x426e61=_0x1f5a7e,_0x501ae9=firstExistingPath(EDGE_PATHS)??whichOf(EDGE_BIN_NAMES);if(_0x501ae9)return{'channel':_0x426e61(_0x3beda8._0x59fb9a),'path':_0x501ae9,'label':_0x426e61(0x1f0)};return{'channel':null};}__name(probeEdge,_0x1f5a7e(0x1b9));function probeChromeBeta(){const _0x48440a={_0x1aee14:0x1c8},_0x475944=_0x1f5a7e,_0x298a1b=firstExistingPath(CHROME_BETA_PATHS);if(_0x298a1b)return{'channel':_0x475944(_0x48440a._0x1aee14),'path':_0x298a1b,'label':_0x475944(0x19b)};return{'channel':null};}__name(probeChromeBeta,'probeChromeBeta');var CHROME_PATHS=((()=>{const _0x3368bb={_0x4086a5:0x1fd,_0x3b5283:0x1f7,_0x29ab87:0x1d3,_0x5bdbe9:0x1e0,_0x49e297:0x1af,_0x544c2e:0x1c5,_0xc6e526:0x1da,_0x3ce2ec:0x19c},_0x17439c=_0x1f5a7e;switch(process[_0x17439c(_0x3368bb._0x4086a5)]){case'darwin':return[_0x17439c(0x1d2)];case _0x17439c(_0x3368bb._0x3b5283):return[process[_0x17439c(0x1d3)][_0x17439c(0x1e7)]+'\x5cGoogle\x5cChrome\x5cApplication\x5cchrome.exe',process[_0x17439c(_0x3368bb._0x29ab87)][_0x17439c(_0x3368bb._0x5bdbe9)]+_0x17439c(_0x3368bb._0x49e297),process[_0x17439c(0x1d3)][_0x17439c(_0x3368bb._0x544c2e)]+'\x5cGoogle\x5cChrome\x5cApplication\x5cchrome.exe'];default:return[_0x17439c(0x1f1),_0x17439c(_0x3368bb._0xc6e526),'/snap/bin/google-chrome',_0x17439c(0x1e9),_0x17439c(_0x3368bb._0x3ce2ec)];}})()),CHROME_BIN_NAMES=[_0x1f5a7e(0x1e6),_0x1f5a7e(0x1b1),_0x1f5a7e(0x1b8),_0x1f5a7e(0x1f3)],EDGE_PATHS=((()=>{const _0x28d540={_0x2ece12:0x1b4,_0x1232c5:0x1e7,_0x587b2b:0x1dd,_0x3c87b7:0x1d3,_0x730a05:0x1e0,_0x1b0e7c:0x1fb},_0x3eac90=_0x1f5a7e;switch(process[_0x3eac90(0x1fd)]){case _0x3eac90(_0x28d540._0x2ece12):return[_0x3eac90(0x1b0)];case'win32':return[process[_0x3eac90(0x1d3)][_0x3eac90(_0x28d540._0x1232c5)]+_0x3eac90(_0x28d540._0x587b2b),process[_0x3eac90(_0x28d540._0x3c87b7)][_0x3eac90(_0x28d540._0x730a05)]+_0x3eac90(0x1dd)];default:return[_0x3eac90(_0x28d540._0x1b0e7c),'/usr/bin/microsoft-edge-stable'];}})()),EDGE_BIN_NAMES=[_0x1f5a7e(0x1e5),'microsoft-edge-stable'],CHROME_BETA_PATHS=((()=>{const _0x28c2e9={_0xf4fe1e:0x1b4,_0x16ecca:0x1d3,_0x2ab95c:0x1e7,_0x3d51f5:0x1eb,_0x28c44c:0x1cd},_0x28dc5d=_0x1f5a7e;switch(process[_0x28dc5d(0x1fd)]){case _0x28dc5d(_0x28c2e9._0xf4fe1e):return['/Applications/Google\x20Chrome\x20Beta.app/Contents/MacOS/Google\x20Chrome\x20Beta'];case _0x28dc5d(0x1f7):return[process[_0x28dc5d(_0x28c2e9._0x16ecca)][_0x28dc5d(_0x28c2e9._0x2ab95c)]+_0x28dc5d(_0x28c2e9._0x3d51f5)];default:return[_0x28dc5d(_0x28c2e9._0x28c44c)];}})());function firstExistingPath(_0x85a851){const _0x24a41e=_0x1f5a7e;for(const _0x283bc1 of _0x85a851){if(!_0x283bc1||_0x283bc1['startsWith'](_0x24a41e(0x1b3)))continue;if(existsSync(_0x283bc1))return _0x283bc1;}return null;}__name(firstExistingPath,_0x1f5a7e(0x1ee));function whichOf(_0x4a2bca){const _0x40726={_0xfe0225:0x1d8,_0x5dd672:0x1e8},_0x2c99b5=_0x1f5a7e;if(process[_0x2c99b5(0x1fd)]===_0x2c99b5(0x1f7))return void 0x0;for(const _0x1397f1 of _0x4a2bca){try{const _0x46eddf=execFileSync('which',[_0x1397f1],{'encoding':_0x2c99b5(_0x40726._0xfe0225)})['trim']();if(_0x46eddf[_0x2c99b5(_0x40726._0x5dd672)]>0x0&&existsSync(_0x46eddf))return _0x46eddf;}catch{}}return void 0x0;}__name(whichOf,_0x1f5a7e(0x1df));function runEnvironmentChecks(_0x39cac9={}){const _0x29a20c={_0x5d6e09:0x1c4},_0x217551=_0x1f5a7e,_0x173e1f=_0x39cac9[_0x217551(0x1c4)]??process[_0x217551(_0x29a20c._0x5d6e09)]();return[checkNodeVersion(),checkSystemBrowser(),checkWritableCwd(_0x173e1f)];}__name(runEnvironmentChecks,_0x1f5a7e(0x1c6));function checkNodeVersion(){const _0x1c256e={_0xe6a959:0x1c0,_0x30d4a1:0x1d4},_0x4cf767=_0x1f5a7e,_0x2b28ac=process[_0x4cf767(0x1c3)][_0x4cf767(_0x1c256e._0xe6a959)],_0xd6be8a=Number(_0x2b28ac[_0x4cf767(0x1c1)]('.')[0x0]);if(!Number[_0x4cf767(0x1d9)](_0xd6be8a)||_0xd6be8a<0x14)return{'name':_0x4cf767(0x1d4),'severity':'error','message':'requires\x20Node\x20≥20\x20(running\x20'+_0x2b28ac+')','detail':_0x4cf767(0x1cc)};return{'name':_0x4cf767(_0x1c256e._0x30d4a1),'severity':'ok','message':_0x2b28ac};}__name(checkNodeVersion,_0x1f5a7e(0x1a2));function checkSystemBrowser(){const _0x1ab283={_0x3e790a:0x1b6,_0x4d7279:0x1ea,_0x2133e0:0x1a9,_0x4f6672:0x1db},_0xebfcd3=_0x1f5a7e,_0x1e03c9=probeSystemBrowser();if(_0x1e03c9[_0xebfcd3(_0x1ab283._0x3e790a)]!==null)return{'name':_0xebfcd3(_0x1ab283._0x4d7279),'severity':'ok','message':_0x1e03c9['label']+_0xebfcd3(0x1a1),'detail':_0x1e03c9[_0xebfcd3(_0x1ab283._0x2133e0)]};return{'name':'System\x20browser','severity':_0xebfcd3(0x1d0),'message':_0xebfcd3(0x1c2),'detail':_0xebfcd3(_0x1ab283._0x4f6672)};}__name(checkSystemBrowser,_0x1f5a7e(0x1d5));function checkWritableCwd(_0x1519a5){const _0x15b1a7={_0x2a9462:0x1b2,_0x842ca6:0x1f8},_0x561622=_0x1f5a7e;if(!_0x266e72(_0x1519a5))return{'name':_0x561622(0x1f8),'severity':'error','message':_0x561622(0x1a4)+_0x1519a5+_0x561622(_0x15b1a7._0x2a9462),'detail':_0x561622(0x1e2)};return{'name':_0x561622(_0x15b1a7._0x842ca6),'severity':'ok','message':_0x1519a5};}__name(checkWritableCwd,_0x1f5a7e(0x1bc));function _0x3d3e(){const _0x311eba=['Cgf0Aa','mtqYmZeZnZfsv1jZtvm','mtC0otu2q0PuqxLW','yMLU','CMvZB2X2zujPBG','C2nLBMfYAw8','xeDVB2DSzvXdAhjVBwvCqxbWBgLJyxrPB25Cy2HYB21LlMv4zq','l0fWCgXPy2f0Aw9UCY9nAwnYB3nVzNqGrwrNzs5HChaVq29UDgvUDhmVtwfJt1mVtwLJCM9ZB2z0ievKz2u','z29Vz2XLlwnOCM9Tzs1ZDgfIBgu','igrVzxmGBM90igv4Axn0','Dw5KzwzPBMvK','zgfYD2LU','ChjVyMvdAhjVBwu','y2HHBM5LBa','otKZodH0rLD4AKe','y2HYB21PDw0','ChjVyMvfzgDL','mJDXteXJufa','vu5pvevtvf9iruferuq','y2HLy2TxCML0ywjSzun3za','ChjVAMvJDfjVB3q','mteXnNjkBwLQEa','l3bHy2THz2uUANnVBG','BM9Kzq','C3bSAxq','BM8Gq2HYB21Lic8GrwrNzsaVienOCM9TAxvTigrLDgvJDgvK','DMvYC2LVBNm','y3DK','te9dquXbufbeqvrb','CNvUrw52AxjVBM1LBNrdAgvJA3m','ode1mgrore5Twa','y2HYB21LlwjLDge','r29Vz2XLienOCM9Tzq','CMvZB2X2zq','ihbHy2THz2uUANnVBIbKzwnSyxjLCYbUBYaNyMLUjYbMAwvSzcdIGjqGyNjVA2vUigLUC3rHBgW/','sw5ZDgfSBcboB2rLidiWkYb2AweGBNzTic8GzM5Tic8GDM9SDgeGyw5KihjLlxj1BI4','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1IzxrH','C3vMzML4','ChvZAa','D2fYBMLUzW','nJb6C3LJD3C','l0fWCgXPy2f0Aw9UCY9hB29NBguGq2HYB21LlMfWCc9dB250zw50CY9nywnpuY9hB29NBguGq2HYB21L','zw52','tM9Kzs5QCYb2zxjZAw9U','y2HLy2TtExn0zw1cCM93C2vY','yxv0Ag9Y','mtHPz2LjwLm','DxrMoa','AxngAw5PDgu','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1ZDgfIBgu','Aw5PDcb3AwXSig9MzMvYihrVigrVD25SB2fKigj1BMrSzwqGq2HYB21PDw0Gkh4XntaGtuiPlIbbBhrLCM5HDgL2zwX5lcbPBNn0ywXSienOCM9TzsbMCM9TigH0DhbZoI8VD3D3lMDVB2DSzs5JB20Vy2HYB21LigfUzcbYzs1YDw4U','A2LUza','xe1Py3jVC29MDfXfzgDLxefWCgXPy2f0Aw9Uxg1ZzwrNzs5LEgu','yxbWu2vYDMvYqxjNCW','D2HPy2HpzG','uhjVz3jHBuzPBgvZkhG4nIK','yNvPBgrbCMDZ','q3jLyxrLihrOzsbKAxjLy3rVCNKGB3iGCNvUigLUAxqGAw4Gyw4GzxHPC3rPBMCGChjVAMvJDcbYB290lG','CgLJA0jPBG','AgvHzgvK','BwLJCM9ZB2z0lwvKz2u','z29Vz2XLlwnOCM9Tzq','uhjVz3jHBuzPBgvZ','BgvUz3rO','l3vZCI9IAw4Vy2HYB21PDw0','u3LZDgvTigjYB3DZzxi','xeDVB2DSzvXdAhjVBwuGqMv0yvXbChbSAwnHDgLVBLXJAhjVBwuUzxHL','ls13B3jRzxjZpq','yxv0Ag9YAw5N','zMLYC3rfEgLZDgLUz1bHDgG','C3rYAw5N','twLJCM9ZB2z0ievKz2u','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzq','y29SBgvJDgLVBG','y2HYB21PDw0TyNjVD3nLCG','BMfTzq','DMfSDwvZ','D29YA2vYCW','D2LUmZi','vgfYz2v0igrPCMvJDg9YEq','BxnLzgDL','otmYmJnNyuLfDNq','l3vZCI9IAw4VBwLJCM9ZB2z0lwvKz2u','ndCWnZG1Cw9TzhP1','CgXHDgzVCM0','qhvUB3rLC3qVD2vI','C3vWCg9YDgvKs2LUzhm','r29Vz2XLienOCM9TzsbczxrH','l3vZCI9IAw4Vy2HYB21PDw0TyNjVD3nLCG','Dw5VDgvZDc13zwi','ztjL','yNjLywTWB2LUDhm','zgvIDwC','igzVDw5K','y2HLy2ToB2rLvMvYC2LVBG','yMfPBa','DgfYz2v0ia','CgfYC2u','nZa1nJq1nKnHuuHtsG','y2HYB21L','ls1Kzwj1zW'];_0x3d3e=function(){return _0x311eba;};return _0x3d3e();}var PACKAGE_NAME=_0x1f5a7e(0x199),WebRunnerAdapter=class{static{__name(this,'WebRunnerAdapter');}[_0x1f5a7e(0x1f4)]=PACKAGE_NAME;[_0x1f5a7e(0x1ce)]='';[_0x1f5a7e(0x1a0)]={'picker':!![],'attach':!![],'resumeFromFailure':![]};[_0x1f5a7e(0x19a)]=[_0x1f5a7e(0x1ae),_0x1f5a7e(0x1f2),_0x1f5a7e(0x1ed)];[_0x1f5a7e(0x1ad)](){const _0x379040={_0x4b8c8b:0x1a5,_0x54537f:0x1d8},_0x1a8b56=_0x1f5a7e,_0x1f1a02=createRequire(import.meta.url),_0x1f9f52=_0x1f1a02[_0x1a8b56(0x1ca)](PACKAGE_NAME+_0x1a8b56(0x1bf)),_0x21386b=JSON[_0x1a8b56(_0x379040._0x4b8c8b)](readFileSync(_0x1f9f52,_0x1a8b56(_0x379040._0x54537f))),_0x3a6ca1=pickBin(_0x21386b);if(!_0x3a6ca1)throw new Error(PACKAGE_NAME+_0x1a8b56(0x1cb));return join(dirname(_0x1f9f52),_0x3a6ca1);}[_0x1f5a7e(0x1e1)](_0x12b025){const _0x436032={_0x320e2b:0x19e,_0x511d58:0x1cf,_0x3ec667:0x19f,_0x2e871f:0x1e8,_0x1964a7:0x1dc,_0x4cbe57:0x1f6,_0x5426f9:0x1cf,_0x39155d:0x1a3,_0x4bf54e:0x1cf,_0x88138d:0x1dc,_0x48230f:0x1f4},_0x28ecc1=_0x1f5a7e;if(_0x12b025[_0x28ecc1(0x1dc)]==='scenario'){const _0x119200=[_0x28ecc1(_0x436032._0x320e2b),_0x12b025[_0x28ecc1(0x1ae)]];if(_0x12b025['debug'])_0x119200[_0x28ecc1(_0x436032._0x511d58)](_0x28ecc1(0x1a8));return _0x12b025[_0x28ecc1(_0x436032._0x3ec667)]&&_0x12b025[_0x28ecc1(0x19f)][_0x28ecc1(_0x436032._0x2e871f)]>0x0&&_0x119200[_0x28ecc1(0x1cf)]('--break',_0x12b025[_0x28ecc1(0x19f)]['join'](',')),_0x119200;}if(_0x12b025[_0x28ecc1(_0x436032._0x1964a7)]===_0x28ecc1(0x1f2)){const _0xbf0259=['collection',_0x12b025['collection']];_0x12b025[_0x28ecc1(0x1f6)]!==void 0x0&&_0x12b025[_0x28ecc1(_0x436032._0x4cbe57)]>0x1&&_0xbf0259[_0x28ecc1(_0x436032._0x5426f9)](_0x28ecc1(0x1ec)+_0x12b025[_0x28ecc1(0x1f6)]);if(_0x12b025[_0x28ecc1(_0x436032._0x39155d)])_0xbf0259[_0x28ecc1(_0x436032._0x4bf54e)]('--bail');return _0xbf0259;}if(_0x12b025['kind']==='authoring')return[_0x28ecc1(0x1d6),_0x12b025[_0x28ecc1(0x1ae)]];const _0x5cc5c2=_0x12b025;throw new UnsupportedRunKindError(_0x5cc5c2[_0x28ecc1(_0x436032._0x88138d)],this[_0x28ecc1(_0x436032._0x48230f)]);}['buildEnv'](_0x3963f3){const _0xa00b96={_0x45f18c:0x1e4,_0x16cb51:0x1bb},_0x36b81a=_0x1f5a7e,_0xe0e6e={};if(_0x3963f3[_0x36b81a(_0xa00b96._0x45f18c)])_0xe0e6e[_0x36b81a(_0xa00b96._0x16cb51)]='1';return _0xe0e6e;}[_0x1f5a7e(0x1de)](){return['app-server'];}async['doctor'](_0x1315f9){const _0x54aed7=_0x1f5a7e;return runEnvironmentChecks({'cwd':_0x1315f9[_0x54aed7(0x1bd)]});}},webRunnerAdapter=new WebRunnerAdapter(),web_runner_adapter_default=webRunnerAdapter;function pickBin(_0x214fd5){const _0x217ced={_0x4e7220:0x1ac},_0x3e2fcf=_0x1f5a7e;if(typeof _0x214fd5[_0x3e2fcf(0x1ac)]===_0x3e2fcf(0x1ef))return _0x214fd5[_0x3e2fcf(0x1ac)];if(_0x214fd5['bin']&&typeof _0x214fd5[_0x3e2fcf(0x1ac)]==='object')return _0x214fd5[_0x3e2fcf(_0x217ced._0x4e7220)][_0x3e2fcf(0x19d)]??Object[_0x3e2fcf(0x1f5)](_0x214fd5[_0x3e2fcf(_0x217ced._0x4e7220)])[0x0]??null;return null;}function _0x29a0(_0x4acd46,_0x26f7dc){_0x4acd46=_0x4acd46-0x199;const _0x3d3e9f=_0x3d3e();let _0x29a05a=_0x3d3e9f[_0x4acd46];if(_0x29a0['SUUCgE']===undefined){var _0x17b781=function(_0x5ac4f0){const _0x4c6adc='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x266e72='',_0x434d19='';for(let _0x4734de=0x0,_0x55cf18,_0x470e55,_0x5001c7=0x0;_0x470e55=_0x5ac4f0['charAt'](_0x5001c7++);~_0x470e55&&(_0x55cf18=_0x4734de%0x4?_0x55cf18*0x40+_0x470e55:_0x470e55,_0x4734de++%0x4)?_0x266e72+=String['fromCharCode'](0xff&_0x55cf18>>(-0x2*_0x4734de&0x6)):0x0){_0x470e55=_0x4c6adc['indexOf'](_0x470e55);}for(let _0x501ae9=0x0,_0x298a1b=_0x266e72['length'];_0x501ae9<_0x298a1b;_0x501ae9++){_0x434d19+='%'+('00'+_0x266e72['charCodeAt'](_0x501ae9)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x434d19);};_0x29a0['iSnrhZ']=_0x17b781,_0x29a0['yvFNso']={},_0x29a0['SUUCgE']=!![];}const _0x4adca8=_0x3d3e9f[0x0],_0x172850=_0x4acd46+_0x4adca8,_0x3597d7=_0x29a0['yvFNso'][_0x172850];return!_0x3597d7?(_0x29a05a=_0x29a0['iSnrhZ'](_0x29a05a),_0x29a0['yvFNso'][_0x172850]=_0x29a05a):_0x29a05a=_0x3597d7,_0x29a05a;}__name(pickBin,_0x1f5a7e(0x1e3));export{web_runner_adapter_default as default,webRunnerAdapter};
|
|
@@ -122,6 +122,15 @@ directly. Detailed workflow in `debugger-tools.md`.
|
|
|
122
122
|
- `run_test` — load `unotest/e2e/<name>.js`, start an AST execution.
|
|
123
123
|
Modes: `auto` (run to completion / failure), `step` (pause after every
|
|
124
124
|
statement). `pauseOnFailure` defaults to `true`.
|
|
125
|
+
Runs of one project take turns: while someone else is driving the
|
|
126
|
+
machine — a human's run in the viewer, another terminal, a scheduled
|
|
127
|
+
suite — this run waits in the project's queue and starts by itself. A
|
|
128
|
+
blocking call just takes longer; `wait: false` answers
|
|
129
|
+
`status: "queued"`. Rerunning a queued run does not unstick it, it
|
|
130
|
+
only adds a second ticket — and `abort_runtime` does not reach it
|
|
131
|
+
either (it speaks through the run directory, which a run that has not
|
|
132
|
+
started does not have yet). A queued run is cancelled from the
|
|
133
|
+
viewer's Active panel, or simply left to start.
|
|
125
134
|
- `step` — advance one AST node. Returns the next event.
|
|
126
135
|
- `resume` — run until next pause / completion / failure.
|
|
127
136
|
- `inspect_runtime` — snapshot of runtime state: current line, last
|
package/guides/dsl-reference.md
CHANGED
|
@@ -433,7 +433,8 @@ Semantics:
|
|
|
433
433
|
`UNOTEST_JUDGE_PROVIDER=claude|vertex|gemini|openai|anthropic|fake` +
|
|
434
434
|
`UNOTEST_JUDGE_MODEL`; `claude` spawns the local Claude Code CLI
|
|
435
435
|
(`claude -p`, subscription auth, no API key — the path when no cloud
|
|
436
|
-
credentials are at hand
|
|
436
|
+
credentials are at hand; budget ~6s per verdict, since every call loads a
|
|
437
|
+
CLI session), `vertex` uses ADC via
|
|
437
438
|
`GOOGLE_CLOUD_PROJECT`/`GOOGLE_CLOUD_LOCATION`, the rest take the
|
|
438
439
|
vendor-standard key vars (`GEMINI_API_KEY`, `OPENAI_API_KEY`,
|
|
439
440
|
`ANTHROPIC_API_KEY`) — see the `@unotest/judge` README. Unconfigured
|
|
@@ -448,7 +449,10 @@ Semantics:
|
|
|
448
449
|
- **Every verdict** (pass and fail) is recorded into the run's
|
|
449
450
|
`steps.jsonl` as a `judge:verdict` event — rubric, judged text,
|
|
450
451
|
verdict, reasoning, model — so a red step is explainable without a
|
|
451
|
-
re-run.
|
|
452
|
+
re-run. With `UNOTEST_JUDGE_PREAMBLE` in effect the event carries it as
|
|
453
|
+
a separate `preamble` field: the model saw the two concatenated, and
|
|
454
|
+
the split says which half came from the scenario and which from the
|
|
455
|
+
environment.
|
|
452
456
|
- A judge is not deterministic: the judge itself re-asks on `fail`
|
|
453
457
|
(`UNOTEST_JUDGE_RETRIES`, first `pass` wins); temperature is pinned to 0
|
|
454
458
|
where the backend accepts it (vertex/gemini). The runner's retry layer is
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unotest/web",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.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": {
|
|
@@ -83,18 +83,18 @@
|
|
|
83
83
|
"tsx": "^4.19.2",
|
|
84
84
|
"yaml": "^2.6.0",
|
|
85
85
|
"zod": "^3.23.8",
|
|
86
|
-
"@unotest/core": "^0.
|
|
87
|
-
"@unotest/grounder-client": "^0.
|
|
88
|
-
"@unotest/viewer": "^0.
|
|
89
|
-
"@unotest/protocol": "^0.
|
|
90
|
-
"@unotest/dsl": "^0.
|
|
86
|
+
"@unotest/core": "^0.26.0",
|
|
87
|
+
"@unotest/grounder-client": "^0.26.0",
|
|
88
|
+
"@unotest/viewer": "^0.26.0",
|
|
89
|
+
"@unotest/protocol": "^0.26.0",
|
|
90
|
+
"@unotest/dsl": "^0.26.0"
|
|
91
91
|
},
|
|
92
92
|
"devDependencies": {
|
|
93
93
|
"@types/node": "^22.10.0",
|
|
94
94
|
"javascript-obfuscator": "^4.1.1",
|
|
95
95
|
"tsup": "^8.5.1",
|
|
96
96
|
"typescript": "^5.7.2",
|
|
97
|
-
"@unotest/
|
|
98
|
-
"@unotest/
|
|
97
|
+
"@unotest/grounder": "^0.26.0",
|
|
98
|
+
"@unotest/judge": "^0.26.0"
|
|
99
99
|
}
|
|
100
100
|
}
|