@unotest/web 0.20.0 → 0.22.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 +85 -0
- 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 +4 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x5a49a7=_0x4fbb;(function(_0x58648a,_0x38e069){const _0x4b3c16={_0x327d86:0x1c2,_0x4a38f3:0x1d4,_0x25de60:0x1bc},_0x2cc7d6=_0x4fbb,_0x203935=_0x58648a();while(!![]){try{const _0x34a05c=-parseInt(_0x2cc7d6(0x1dd))/0x1*(parseInt(_0x2cc7d6(_0x4b3c16._0x327d86))/0x2)+parseInt(_0x2cc7d6(_0x4b3c16._0x4a38f3))/0x3+parseInt(_0x2cc7d6(0x1ce))/0x4+-parseInt(_0x2cc7d6(0x1d5))/0x5*(parseInt(_0x2cc7d6(0x1ca))/0x6)+parseInt(_0x2cc7d6(_0x4b3c16._0x25de60))/0x7+-parseInt(_0x2cc7d6(0x1d0))/0x8*(-parseInt(_0x2cc7d6(0x1d9))/0x9)+parseInt(_0x2cc7d6(0x1c5))/0xa*(-parseInt(_0x2cc7d6(0x1d3))/0xb);if(_0x34a05c===_0x38e069)break;else _0x203935['push'](_0x203935['shift']());}catch(_0x57e826){_0x203935['push'](_0x203935['shift']());}}}(_0x1cca,0x85cf6));var __defProp=Object[_0x5a49a7(0x1cd)],__name=(_0x33ef7d,_0x337d73)=>__defProp(_0x33ef7d,_0x5a49a7(0x1c6),{'value':_0x337d73,'configurable':!![]});function _0x4fbb(_0x9305e,_0x251a43){_0x9305e=_0x9305e-0x1bc;const _0x1ccaf6=_0x1cca();let _0x4fbb20=_0x1ccaf6[_0x9305e];if(_0x4fbb['juazjt']===undefined){var _0x1c4177=function(_0x374a3e){const _0x1c61e1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x33ef7d='',_0x337d73='';for(let _0x404149=0x0,_0x2da943,_0x33e56a,_0x2c2e1a=0x0;_0x33e56a=_0x374a3e['charAt'](_0x2c2e1a++);~_0x33e56a&&(_0x2da943=_0x404149%0x4?_0x2da943*0x40+_0x33e56a:_0x33e56a,_0x404149++%0x4)?_0x33ef7d+=String['fromCharCode'](0xff&_0x2da943>>(-0x2*_0x404149&0x6)):0x0){_0x33e56a=_0x1c61e1['indexOf'](_0x33e56a);}for(let _0x4b1b87=0x0,_0x3dfa6a=_0x33ef7d['length'];_0x4b1b87<_0x3dfa6a;_0x4b1b87++){_0x337d73+='%'+('00'+_0x33ef7d['charCodeAt'](_0x4b1b87)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x337d73);};_0x4fbb['aHrRdE']=_0x1c4177,_0x4fbb['oNgTRW']={},_0x4fbb['juazjt']=!![];}const _0x42f80d=_0x1ccaf6[0x0],_0x339e90=_0x9305e+_0x42f80d,_0x4e7fbe=_0x4fbb['oNgTRW'][_0x339e90];return!_0x4e7fbe?(_0x4fbb20=_0x4fbb['aHrRdE'](_0x4fbb20),_0x4fbb['oNgTRW'][_0x339e90]=_0x4fbb20):_0x4fbb20=_0x4e7fbe,_0x4fbb20;}import{mkdir,writeFile}from'fs/promises';function _0x1cca(){const _0x50a882=['lY8GrxHHBxbSzsaWmIdIGjqGzMLSBcbHBIbPBNb1DcaRigfZC2vYDcb0AguGyxbWihjLywn0zwqUcI8VcI8ViefNywLUC3qGCgXHEwDYB3vUzc51BM90zxn0lMnVBs9Zy2vUyxjPB3mVyMLNlxrHyMXLlIbezw1VBNn0CMf0zxmGz2v0qNLsB2XLcI8VigzVCIbHigXHyMvSBgvKigLUChv0lcb0ExbLzcbPBNb1Dcb2AweGzMLSBcGPlcbHBMqGysbSB2nHDg9Yig1LDgHVzc1JAgfPBGOVlYaOz2v0qNLsB2XLkcDYB3CNks5MAwX0zxiOE2HHC1rLEhr9ks5MAxjZDcGPksbPBIbHBIbHC3nLCNrPB24UcI8Vifj1BIb3AxrOoIaGBNb4ieb1BM90zxn0l3DLyIbLmMuGzxHHBxbSzxmVmdiTzM9YBs1MAwXScGPMDw5JDgLVBIb0zxn0x2zVCM1FzMLSBf9OyxbWEv9WyxrOkcKGEWOGihn0zxaOiKzPBhrLCIb0AguGqMLNifrHyMXLigj5igeGBMfTzsiSicGPid0+ihSkicaGigDVDg8OjY9Zy2vUyxjPB3mVyMLNlxrHyMXLjYK7cIaGicbMAwXSkgDLDej5uM9SzsGNDgv4DgjVEcCSihTUyw1LoIaNrMLSDgvYigj5ig5HBwuNFsKSicDvBweGuxvPBM4NktSkicb9ktSkcIaGC3rLCcGIrMLSDgvYAw5NihjLDMvHBhmGDgHLienSzwfYigzPBhrLCIbJB250CM9SigfUzcbTyxrJAgLUzYbYB3DZiIWGkcKGpt4GEWOGicaGyxnZzxj0vMLZAwjSzsHNzxrcEvjVBguOj2j1DhrVBICSihTUyw1LoIaNq2XLyxiGzMLSDgvYj30PktSkicaGigfZC2vYDfzPC2LIBguOz2v0qNLsB2XLkcDYB3CNks5MAwX0zxiOE2HHC1rLEhq6icDvBweGuxvPBM4NFsKUzMLYC3qOksK7cIaGFsK7cN0k','y2HHBM5LBa','C2nHzMzVBgrxB3jRC3bHy2u','ztjL','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','mtbrDxLgreS','EWOGicjJB21WAwXLCK9WDgLVBNmIoIb7cIaGicaIy2HLy2TkCYi6igzHBhnLlaOGicaGiNrHCMDLDci6icjLCZiWmJiIlaOGicaGiMXPyIi6ifSIzxmYmdiYiL0ScIaGicaIDhLWzxmIoIbBxqOGih0ScIaGiMLUy2X1zguIoIbBcIaGicaIkIOVkI5QCYiScIaGicaIlI4VlNvUB3rLC3qVDhLWzxmVzw52lMqUDhmIlaOGicaGiI4Ul25VzgvFBw9KDwXLCY9aDw5VDgvZDc93zwiVDhLWzxmVDw5VDgvZDc1KC2WUzc50CYikicbDcN0k','cIaGlY8GDMLLD2vYoIb7cIaGlY8GicbWB3j0oIa1mtCZlcaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGic8VigrLzMf1Bhq6ihjHBMrVBsbMCMvLihbVCNqkicaVlYaGigjYB3DZzxi6ihrYDwuSicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GzgvMyxvSDdOGDhj1zsaOyxv0BY1VCgvUig9Uigb2Awv3zxjGkqOGic8Vih0ScN07cG','mtCWBxDpu2XJ','BMfTzq','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','ANnJB25MAwDkC29U','x2HLBhbLCNm','mZiXmgzSrKvnva','ChvZAa','Dw5VDgvZDa','zgvMAw5LuhjVCgvYDhK','mty4ntqWvw5wrez5','iYb1BM90zxn0lxDLyIdIGjqGC2vJCMv0ihnJzw5HCMLVihzHCMLHyMXLCY4Gq3jLyxrLzcbIEsbGAw5PDgaSigDPDgLNBM9YzwqUcImkiYbtyw1LieTfwt1wquXvrsbMB3jTyxqGyxmGDw5VDgvZDc8Uzw52lcbIDxqGDMfSDwvZigHLCMuGyxjLihrYzwf0zwqGyxmkiYbtrunsrvq6ihrOzxKGyxjLig1HC2TLzcaOC2HVD24GyxmGyokaUxnLy3jLDdPlrvNIGlPGksbHBNL3AgvYzsb0AguGCNvUBMvYig9YcImGtunqigrLyNvNigXVzYb3B3vSzcbVDgHLCNDPC2uGD3jPDguGDgHLBsdIGjqGzMLSBcGPihzHBhvLCYWGvvjmCYWGzxzHBhvHDgukiYbZDhjPBMDZlIbszwzLCMvUy2uGDgHLBsbPBIbHihnJzw5HCMLVigj5ihrOzwLYigjHCMuGvvbqrvjFu05bs0uGBMfTzsWGDgHLcImGC2fTzsb3yxKGyxmGlMvUDIb2yxjPywjSzxm6cImkiYaGigzPBgWOz2v0qNLmywjLBcGNugfZC3DVCMqNksWGueftu1DpuKqPoWOJcImGu2vJCMv0CYbHCMuGtK9uigv4Cg9YDgvKihrVihn1yNbYB2nLC3nLCYaOC2HLBgWOksKG4OcuihrOzxKGC3rHEsbPBIb0AgukiYb2yxjPywjSzsbZDg9Yzs4GqsbZDwjWCM9JzxnZihrOyxqGz2vUDwLUzwX5ig5LzwrZig9UzsaOysbSAxn0zw5LCIb3AxrOigekiYb0B2TLBIKGz2v0CYbPDcb2AweGDgHLigv4CgXPy2L0igfSBg93BgLZDcbPBIb1BM90zxn0lMnVBMzPzY4QoGOJicaGC2fUzgjVEdOGEYbLEhbVCNrtzwnYzxrZoIbBj1rps0voj10GFqOJifb1DcbUB24TC2vJCMv0ihzHBhvLCYaOvvjmCYWGzw1HAwXZlcbPzhmPigLUihvUB3rLC3qVlMvUDI4kiWOJiezmruvux0vyqu1qteukte9hsu49cLbbu1nxt1jepqPut0TftJ0k','mtyXodrYuu1wsve','lMvUDG','Dw5VDgvZDc5JB25MAwCUBwPZ','mZG1nJzPwLPWt1u','mZe0mdiZmNvYv1P3tq','mZCZnwfqAKTJyG','ANnJB25MAwCUANnVBG','mdeTC21VA2uUANm','icbJAgfUBMvSoIa','mti1mujUAeTREa','icaVlYbJAgfUBMvSoIaNy2HYB21LjYWGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8Gj2nOCM9TzsCGlYaNBxnLzgDLjYaVig51BgWGkgj1BMrSzwqP','C3rYAw5NAwz5','zxHHBxbSzxm','mtCXodm1zNjdww1l','mZq3ntaYnhLuqKLdvG'];_0x1cca=function(){return _0x50a882;};return _0x1cca();}import{existsSync}from'fs';import{join}from'path';var templates={'jsconfigJson':_0x5a49a7(0x1c3),'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':_0x5a49a7(0x1c7),'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':'//\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':_0x5a49a7(0x1bd)},'secretsExample':_0x5a49a7(0x1cf),'envExample':_0x5a49a7(0x1c1)};function unotestConfigMjs(_0x404149){const _0x419073={_0x452715:0x1db},_0x26f80c=_0x5a49a7,_0x2da943=_0x404149===void 0x0?_0x26f80c(0x1da):_0x26f80c(0x1d8)+JSON[_0x26f80c(_0x419073._0x452715)](_0x404149)+',';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'+_0x2da943+_0x26f80c(0x1c4);}__name(unotestConfigMjs,'unotestConfigMjs');async function scaffoldWorkspace(_0x33e56a,_0x2c2e1a={}){const _0x1b9261={_0x14f725:0x1cc,_0x35b1d5:0x1d2,_0x3bd19b:0x1be,_0x26bc22:0x1cc,_0xd3d8a0:0x1d6,_0x75e523:0x1c0,_0x2a8e5e:0x1dc},_0x425d58=_0x5a49a7,_0x4b1b87=[],_0x3dfa6a=[];await mkdir(join(_0x33e56a,_0x425d58(0x1cc),_0x425d58(0x1c0),_0x425d58(0x1dc)),{'recursive':!![]}),await mkdir(join(_0x33e56a,_0x425d58(_0x1b9261._0x14f725),_0x425d58(0x1c0),_0x425d58(0x1c9)),{'recursive':!![]});const _0x3047df=[{'rel':_0x425d58(_0x1b9261._0x35b1d5),'content':unotestConfigMjs(_0x2c2e1a[_0x425d58(_0x1b9261._0x3bd19b)])},{'rel':join(_0x425d58(0x1cc),_0x425d58(0x1d1)),'content':templates['envExample']},{'rel':join(_0x425d58(_0x1b9261._0x26bc22),_0x425d58(_0x1b9261._0xd3d8a0)),'content':templates[_0x425d58(0x1c8)]},{'rel':join('unotest',_0x425d58(_0x1b9261._0x75e523),_0x425d58(_0x1b9261._0x2a8e5e),_0x425d58(0x1d7)),'content':templates[_0x425d58(0x1dc)][_0x425d58(0x1d7)]}];for(const {rel:_0x2378d1,content:_0x2d7a08}of _0x3047df){const _0x149d6a=join(_0x33e56a,_0x2378d1);if(existsSync(_0x149d6a)){_0x3dfa6a['push'](_0x2378d1);continue;}await writeFile(_0x149d6a,_0x2d7a08),_0x4b1b87[_0x425d58(0x1cb)](_0x2378d1);}return{'projectRoot':_0x33e56a,'created':_0x4b1b87,'skipped':_0x3dfa6a};}__name(scaffoldWorkspace,_0x5a49a7(0x1bf));export{scaffoldWorkspace};
|
|
1
|
+
const _0x349bce=_0x475a;(function(_0x58cbcf,_0x150bf9){const _0x405b48={_0x3b1168:0xa5,_0x5a995b:0x92,_0x1946d6:0x9c,_0x119f49:0xa7,_0x15297d:0xa2,_0x1efd1f:0x94,_0x2485c5:0xa0},_0x5e8376=_0x475a,_0x508468=_0x58cbcf();while(!![]){try{const _0x310db8=parseInt(_0x5e8376(_0x405b48._0x3b1168))/0x1*(parseInt(_0x5e8376(0x8f))/0x2)+parseInt(_0x5e8376(0x90))/0x3*(-parseInt(_0x5e8376(0x8e))/0x4)+-parseInt(_0x5e8376(0x9f))/0x5+parseInt(_0x5e8376(_0x405b48._0x5a995b))/0x6+-parseInt(_0x5e8376(_0x405b48._0x1946d6))/0x7*(-parseInt(_0x5e8376(_0x405b48._0x119f49))/0x8)+parseInt(_0x5e8376(_0x405b48._0x15297d))/0x9*(-parseInt(_0x5e8376(_0x405b48._0x1efd1f))/0xa)+-parseInt(_0x5e8376(_0x405b48._0x2485c5))/0xb;if(_0x310db8===_0x150bf9)break;else _0x508468['push'](_0x508468['shift']());}catch(_0x50f262){_0x508468['push'](_0x508468['shift']());}}}(_0x46bb,0xbeb77));var __defProp=Object[_0x349bce(0xa8)],__name=(_0x65309a,_0x254e3a)=>__defProp(_0x65309a,'name',{'value':_0x254e3a,'configurable':!![]});function _0x475a(_0xee4681,_0x1b6a2b){_0xee4681=_0xee4681-0x8b;const _0x46bb9c=_0x46bb();let _0x475aea=_0x46bb9c[_0xee4681];if(_0x475a['zuLOjW']===undefined){var _0x9aba11=function(_0x128096){const _0x2ae33f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x65309a='',_0x254e3a='';for(let _0x336070=0x0,_0x328fb2,_0x1866e8,_0x2be367=0x0;_0x1866e8=_0x128096['charAt'](_0x2be367++);~_0x1866e8&&(_0x328fb2=_0x336070%0x4?_0x328fb2*0x40+_0x1866e8:_0x1866e8,_0x336070++%0x4)?_0x65309a+=String['fromCharCode'](0xff&_0x328fb2>>(-0x2*_0x336070&0x6)):0x0){_0x1866e8=_0x2ae33f['indexOf'](_0x1866e8);}for(let _0x39da23=0x0,_0x4c511b=_0x65309a['length'];_0x39da23<_0x4c511b;_0x39da23++){_0x254e3a+='%'+('00'+_0x65309a['charCodeAt'](_0x39da23)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x254e3a);};_0x475a['MCFMnH']=_0x9aba11,_0x475a['mgYFOq']={},_0x475a['zuLOjW']=!![];}const _0x4d62d1=_0x46bb9c[0x0],_0x375d88=_0xee4681+_0x4d62d1,_0x564f37=_0x475a['mgYFOq'][_0x375d88];return!_0x564f37?(_0x475aea=_0x475a['MCFMnH'](_0x475aea),_0x475a['mgYFOq'][_0x375d88]=_0x475aea):_0x475aea=_0x564f37,_0x475aea;}import{mkdir,writeFile}from'fs/promises';import{existsSync}from'fs';function _0x46bb(){const _0x24170d=['odu5ntK2nNzkExHRva','x2HLBhbLCNm','mtK5nZKYme1QuKrrtq','lY8GrxHHBxbSzsaWmsdIGjqGC21VA2u6ig5HDMLNyxrLicSGy2XPy2SGkYbvuKWGyxnZzxj0Aw9UlGOVlWOVlYbuAguGBwLUAw1HBcb0AhjLzs1ZDgvWihbHDhrLCM4UieHPDhmGCgXHEwDYB3vUzc51BM90zxn0lMnVBsbZBYbUBYbWCM9Qzwn0cI8VihnLDhvWigLZig5LzwrLzc4GuNvUihDPDgG6icbUChGGqhvUB3rLC3qVD2vIiguYzsbLEgfTCgXLCY8Wms1ZBw9RzqOkzNvUy3rPB24GDgvZDf9ZBw9Rzv9WBgf5z3jVDw5KkcKGEWOGihn0zxaOiK9Wzw4GDgHLiejPzYbuywjSzsbZy2vUyxjPBYbMCM9TihrOzsbWBgf5z3jVDw5KigLUzgv4iIWGkcKGpt4GEWOGicaGz290BYGNlYCPoWOGicaGy2XPy2SOz2v0qNLsB2XLkcDSAw5RjYWGE25HBwu6icDcAwCGvgfIBguNlcbLEgfJDdOGDhj1zx0PktSkicaGigfZC2vYDfvYBcGNl3nJzw5HCMLVCY9IAwCTDgfIBguNktSkicb9ktSkFqO','Dw5VDgvZDc5JB25MAwCUBwPZ','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','zxHHBxbSzxm','icaVlYbJAgfUBMvSoIaNy2HYB21LjYWGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8Gj2nOCM9TzsCGlYaNBxnLzgDLjYaVig51BgWGkgj1BMrSzwqP','iYmGrtjfihrLC3rPBMCGD2L0AcbaDw5VDgvZDc93zwikcKbbr0vovfmUBwqkcKzVCIbHBNKGCMvXDwvZDcb0BYb3CML0zsWGCMvJB3jKlcbVCIbYDw4Gyw4Gzw5KlxrVlwvUzcb0zxn0lcbVCgvUihrOzqPGD3jPDguTztjLlxrLC3rGihnRAwXSicHVCIbYDw4Gyc93CML0zs1LmMuTDgvZDgaPigfUzcbKCML2zsb0AguGyNjVD3nLCIb0AhjVDwDOcNrOzsbGDw5VDgvZDc13zwjGie1ducb0B29SCYaOyg5LD19JB250zxH0ycdIHPiGygv4CgXVCMvFC3rLCgaG4OAsigbNzxrFCgfNzv9ZBMfWC2HVDgak4OAsigbYDw5FDgvZDgaPlIbeBYbUB3qGAgfUzc1HDxrOB3iGDgvZDhmGyMXPBMqGB3iGBwfWihrOzsbWCM9Qzwn0ihDPDgGkygzPBMrGl2bSC2aVygf3A2aG4OcuihrOzsbZA2LSBcDZifbOyxnLidaGBgLZDhmGDgHLigzPBgvZihrVihjLywqU','mtq0ote0Dfr2q2ji','cIaGlY8GDMLLD2vYoIb7cIaGlY8GicbWB3j0oIa1mtCZlcaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGic8VigrLzMf1Bhq6ihjHBMrVBsbMCMvLihbVCNqkicaVlYaGigjYB3DZzxi6ihrYDwuSicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GzgvMyxvSDdOGDhj1zsaOyxv0BY1VCgvUig9Uigb2Awv3zxjGkqOGic8Vih0ScN07cG','lMvUDG','mZi5mJmYnuvpy1nrrG','mZi1mJuXm3vMyM5Qzq','ChvZAa','ndvAEwj1zLC','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','Dw5VDgvZDa','mte4yK1Lsxj2','EWOGicjJB21WAwXLCK9WDgLVBNmIoIb7cIaGicaIy2HLy2TkCYi6igzHBhnLlaOGicaGiNrHCMDLDci6icjLCZiWmJiIlaOGicaGiMXPyIi6ifSIzxmYmdiYiL0ScIaGicaIDhLWzxmIoIbBxqOGih0ScIaGiMLUy2X1zguIoIbBcIaGicaIkIOVkI5QCYiScIaGicaIlI4VlNvUB3rLC3qVDhLWzxmVzw52lMqUDhmIlaOGicaGiI4Ul25VzgvFBw9KDwXLCY9aDw5VDgvZDc93zwiVDhLWzxmVDw5VDgvZDc1KC2WUzc50CYikicbDcN0k','ndK2qNPJBNLl','zgvMAw5LuhjVCgvYDhK','mdeTC21VA2uUANm','C2nHzMzVBgrxB3jRC3bHy2u','ztjL','ndH6vLb3uNe','mZeWD2zArLri','ndHHDNLhD0K','ANnJB25MAwDkC29U'];_0x46bb=function(){return _0x24170d;};return _0x46bb();}import{join}from'path';var templates={'jsconfigJson':_0x349bce(0xa6),'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':'#\x20@unotest/web\x20—\x20guide\x20for\x20AI\x20agents\x20(and\x20humans)\x0a\x0aThis\x20project\x20uses\x20[`@unotest/web`](https://www.npmjs.com/package/@unotest/web)\x0afor\x20end-to-end\x20testing\x20of\x20web\x20applications.\x0a\x0a##\x20Writing\x20a\x20test\x20—\x20use\x20the\x20skill\x20+\x20MCP\x0a\x0aFor\x20ANY\x20request\x20to\x20write,\x20record,\x20or\x20run\x20an\x20e2e\x20test:\x0a\x0a1.\x20Open\x20the\x20**`write-e2e-test`**\x20skill\x20—\x20`.claude/skills/write-e2e-test/SKILL.md`\x0a\x20\x20\x20(in\x20Claude\x20Code\x20you\x20can\x20also\x20run\x20`/write-e2e-test`)\x20—\x20and\x20follow\x20it.\x0a2.\x20Drive\x20the\x20browser\x20through\x20the\x20**`unotest-web`\x20MCP\x20tools**:\x20`new_context`\x20→\x0a\x20\x20\x20`explore_start`\x20→\x20`explore_step`\x20→\x20`get_page_snapshot`\x20→\x20`run_test`.\x0a\x0aDo\x20NOT\x20hand-author\x20tests\x20blind\x20or\x20map\x20the\x20project\x20with\x20`find`/`ls`/`awk`\x20—\x20the\x0askill\x27s\x20Phase\x200\x20names\x20the\x20exact\x20files\x20to\x20read.\x20Runnable,\x20copy-pasteable\x0aexamples\x20live\x20in\x20`unotest/e2e/examples/`.\x0a\x0a##\x20Layout\x0a\x0a-\x20`unotest/e2e/<feature>/<name>.js`\x20—\x20test\x20scenarios,\x20grouped\x20by\x20feature/page\x0a\x20\x20(one\x20`test_*`\x20function\x20per\x20file).\x20**Required:**\x20every\x20scenario\x20lives\x20in\x20a\x0a\x20\x20feature\x20subfolder.\x20A\x20test\x20file\x20placed\x20directly\x20in\x20`unotest/e2e/`\x20is\x20rejected\x0a\x20\x20by\x20the\x20linter\x20(`lint:scenario-in-root`).\x0a-\x20`unotest/e2e/_helpers/`\x20—\x20project-specific\x20helpers\x20(visible\x20to\x20all\x20scenarios)\x0a-\x20`unotest/e2e/_template.js`\x20—\x20starting-point\x20template\x20(copy\x20into\x20a\x20feature\x20folder)\x0a\x0a##\x20DSL\x20conventions\x0a\x0aThe\x20DSL\x20is\x20a\x20strict\x20JS\x20subset\x20parsed\x20by\x20@unotest/dsl.\x20Method\x20chains,\x20options-\x0aobjects,\x20and\x20variables\x20are\x20allowed.\x20Multi-line\x20strings\x20use\x0abackticks\x20but\x20`${...}`\x20interpolation\x20is\x20forbidden\x20(sandbox\x20boundary\x20—\x0apass\x20values\x20via\x20positional\x20args).\x0a\x0a**Every\x20step\x20must\x20sit\x20inside\x20a\x20`step(\x22description\x22,\x20()\x20=>\x20{\x20…\x20})`\x20block\x20(linter\x0aenforces).**\x20The\x20title\x20is\x20plain-English\x20intent;\x20the\x20steps\x20inside\x20are\x20the\x0aimplementation.\x20When\x20a\x20step\x20later\x20breaks\x20(selector\x20drift),\x20you\x20read\x20the\x0atitle\x20to\x20understand\x20what\x20the\x20group\x20was\x20trying\x20to\x20do\x20and\x20repair\x20it.\x20Group\x20by\x0aintent,\x20one\x20block\x20per\x20logical\x20chunk:\x0a\x0a```js\x0afunction\x20test_login()\x20{\x0a\x20\x20step(\x22Sign\x20in\x20as\x20the\x20demo\x20user\x22,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20goto(\x27https://app.example.com/login\x27);\x0a\x20\x20\x20\x20fill(getByLabel(\x27Email\x27),\x20\x27demo@example.com\x27);\x0a\x20\x20\x20\x20click(getByRole(\x27button\x27,\x20{name:\x20\x27Log\x20in\x27}));\x0a\x20\x20});\x0a\x0a\x20\x20step(\x22Dashboard\x20shows\x20the\x20signed-in\x20user\x22,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20assertText(getByRole(\x27heading\x27),\x20\x27Welcome\x27);\x0a\x20\x20});\x0a}\x0a```\x0a\x0a**Base\x20URL\x20—\x20write\x20relative\x20paths.**\x20`APP_BASE_URL`\x20(in\x20`unotest/.env`)\x20is\x20the\x0aapp\x27s\x20base;\x20`goto(\x27/login\x27)`\x20resolves\x20against\x20it.\x20Don\x27t\x20concatenate\x0a(`goto(APP_BASE_URL\x20+\x20\x27/login\x27)`)\x20—\x20just\x20pass\x20the\x20path:\x0a\x0a```js\x0agoto(\x27/login\x27);\x0afill(getByLabel(\x27Password\x27),\x20TEST_USER_PASSWORD);\x0a```\x0a\x0a**Environments.**\x20Override\x20`APP_BASE_URL`\x20(and\x20any\x20var)\x20per\x20environment\x20with\x0aoverlay\x20files\x20—\x20`unotest/.env.staging`,\x20`unotest/.env.production`\x20(secrets:\x0a`unotest/.secrets.<env>`).\x20Select\x20one\x20at\x20run\x20time:\x20`npx\x20@unotest/web\x20e2e\x20<name>\x0a--env\x20staging`.\x20The\x20overlay\x20layers\x20over\x20the\x20base\x20`.env`\x20(overlay\x20wins).\x0a\x0a**External\x20variables\x20&\x20secrets:**\x20reference\x20logins\x20/\x20tokens\x20by\x20a\x20bare\x0a`UPPER_SNAKE`\x20name\x20—\x20resolved\x20from\x20`unotest/.env`\x20(normal)\x20or\x20`unotest/.secrets`\x0a(secret,\x20masked\x20in\x20logs).\x20No\x20`env()`/`secret()`\x20wrapper.\x20A\x20lowercase\x20name\x20is\x20an\x0ain-scenario\x20binding;\x20an\x20unknown\x20`UPPER_SNAKE`\x20fails\x20the\x20run\x20asking\x20you\x20to\x20add\x20it\x0ato\x20`unotest/.env`.\x0a\x0a**Selector\x20hierarchy\x20(D-22\x20—\x20linter\x20enforces):**\x0a1.\x20`getByTestId(id)`\x20—\x20most\x20stable\x0a2.\x20`getByRole(role,\x20{name})`\x20—\x20semantic,\x20a11y-aware\x0a3.\x20`getByLabel(text)`\x20—\x20for\x20form\x20fields\x0a4.\x20`getByText(text)`\x20—\x20for\x20unique\x20text\x0a5.\x20`locator(css)`\x20—\x20last\x20resort\x20(linter\x20warns)\x0a\x0aFull\x20reference\x20shipped\x20with\x20the\x20package:\x0a-\x20`node_modules/@unotest/web/guides/dsl-reference.md`\x20—\x20DSL\x20functions\x20+\x20linter\x20codes\x0a\x0a##\x20Running\x20(CLI)\x0a\x0a-\x20`npx\x20@unotest/web\x20e2e\x20<feature>/<name>`\x20—\x20run\x20a\x20scenario\x20by\x20name\x0a-\x20`npx\x20@unotest/web\x20lint`\x20—\x20static\x20check\x20of\x20all\x20scenarios\x20+\x20helpers\x0a-\x20`npx\x20@unotest/web\x20mcp`\x20—\x20start\x20the\x20MCP\x20server\x20for\x20agent\x20control\x0a\x0a##\x20Via\x20MCP\x20(Claude\x20Code\x20/\x20Claude\x20Desktop\x20/\x20Cursor)\x0a\x0aThe\x20MCP\x20server\x20exposes:\x0a-\x20`run_test\x20name=\x22<name>\x22\x20mode=\x22step\x22\x20pauseOnFailure=true`\x20—\x20run\x20with\x20step-mode\x0a-\x20`step`\x20/\x20`resume`\x20—\x20advance\x20one\x20AST\x20node\x20/\x20run\x20until\x20next\x20pause\x0a-\x20`inspect_runtime`\x20—\x20current\x20state,\x20last\x20error,\x20locals\x20dump\x0a-\x20`abort_runtime`\x20—\x20kill\x20a\x20paused\x20runtime\x0a\x0aFor\x20agent-fix\x20workflows\x20on\x20flaky\x20tests:\x20`agent_fix\x20testId=\x22<id>\x22`\x20returns\x20a\x0astructured\x20context\x20bundle\x20(see\x20D-25\x20—\x20we\x20never\x20call\x20LLMs\x20or\x20auto-apply\x0adiffs,\x20the\x20diff\x20comes\x20from\x20your\x20MCP-host\x20agent).\x0a','claudeMdBody':_0x349bce(0x9b),'examples':{'01-smoke.js':_0x349bce(0x95),'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':_0x349bce(0x98),'envExample':_0x349bce(0xa3)};function unotestConfigMjs(_0x336070){const _0x107e5e={_0x2dbcc0:0x9a,_0x21a466:0x9d},_0xb4c574=_0x349bce,_0x328fb2=_0x336070===void 0x0?_0xb4c574(_0x107e5e._0x2dbcc0):'\x20\x20channel:\x20'+JSON['stringify'](_0x336070)+',';return _0xb4c574(0x97)+_0x328fb2+_0xb4c574(_0x107e5e._0x21a466);}__name(unotestConfigMjs,'unotestConfigMjs');async function scaffoldWorkspace(_0x1866e8,_0x2be367={}){const _0x2d2603={_0x5ec6b3:0x8d,_0x10267f:0x99,_0x552664:0x96,_0x1da347:0x9e,_0x3275bc:0x91,_0xedee18:0x8b},_0x3c767c=_0x349bce,_0x39da23=[],_0x4c511b=[];await mkdir(join(_0x1866e8,_0x3c767c(0xa4),_0x3c767c(_0x2d2603._0x5ec6b3),_0x3c767c(_0x2d2603._0x10267f)),{'recursive':!![]}),await mkdir(join(_0x1866e8,_0x3c767c(0xa4),'e2e',_0x3c767c(0x93)),{'recursive':!![]});const _0x127072=[{'rel':_0x3c767c(_0x2d2603._0x552664),'content':unotestConfigMjs(_0x2be367['channel'])},{'rel':join(_0x3c767c(0xa4),_0x3c767c(_0x2d2603._0x1da347)),'content':templates['envExample']},{'rel':join('unotest','jsconfig.json'),'content':templates[_0x3c767c(_0x2d2603._0x3275bc)]},{'rel':join(_0x3c767c(0xa4),_0x3c767c(0x8d),_0x3c767c(0x99),_0x3c767c(0x8b)),'content':templates[_0x3c767c(0x99)][_0x3c767c(_0x2d2603._0xedee18)]}];for(const {rel:_0xac7372,content:_0x469b30}of _0x127072){const _0x3ab39e=join(_0x1866e8,_0xac7372);if(existsSync(_0x3ab39e)){_0x4c511b['push'](_0xac7372);continue;}await writeFile(_0x3ab39e,_0x469b30),_0x39da23[_0x3c767c(0xa1)](_0xac7372);}return{'projectRoot':_0x1866e8,'created':_0x39da23,'skipped':_0x4c511b};}__name(scaffoldWorkspace,_0x349bce(0x8c));export{scaffoldWorkspace};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
var _0x5155ea=_0x2cdc;(function(_0x5a6381,_0x4639ab){var _0x2cb59b={_0x457b1d:0x1dd,_0x4f4751:0x1d6,_0x24afa8:0x1cf,_0x195bd1:0x1d5},_0x1f1787=_0x2cdc,_0x1b8ffb=_0x5a6381();while(!![]){try{var _0x36b7e8=-parseInt(_0x1f1787(0x1d2))/0x1+-parseInt(_0x1f1787(0x1db))/0x2*(parseInt(_0x1f1787(0x1e4))/0x3)+-parseInt(_0x1f1787(_0x2cb59b._0x457b1d))/0x4*(-parseInt(_0x1f1787(0x1d7))/0x5)+parseInt(_0x1f1787(_0x2cb59b._0x4f4751))/0x6+-parseInt(_0x1f1787(_0x2cb59b._0x24afa8))/0x7*(-parseInt(_0x1f1787(0x1d8))/0x8)+-parseInt(_0x1f1787(0x1e0))/0x9+-parseInt(_0x1f1787(0x1d1))/0xa*(-parseInt(_0x1f1787(_0x2cb59b._0x195bd1))/0xb);if(_0x36b7e8===_0x4639ab)break;else _0x1b8ffb['push'](_0x1b8ffb['shift']());}catch(_0x299c82){_0x1b8ffb['push'](_0x1b8ffb['shift']());}}}(_0x4e82,0xaa66c));import{fileURLToPath}from'url';function _0x2cdc(_0x4fc6aa,_0x53dffe){_0x4fc6aa=_0x4fc6aa-0x1cf;var _0x4e82df=_0x4e82();var _0x2cdc93=_0x4e82df[_0x4fc6aa];if(_0x2cdc['JiagtQ']===undefined){var _0x21ca5f=function(_0x5ec703){var _0x228d39='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x2f3602='',_0x122091='';for(var _0x300b87=0x0,_0x3f5d9e,_0x358022,_0x179b86=0x0;_0x358022=_0x5ec703['charAt'](_0x179b86++);~_0x358022&&(_0x3f5d9e=_0x300b87%0x4?_0x3f5d9e*0x40+_0x358022:_0x358022,_0x300b87++%0x4)?_0x2f3602+=String['fromCharCode'](0xff&_0x3f5d9e>>(-0x2*_0x300b87&0x6)):0x0){_0x358022=_0x228d39['indexOf'](_0x358022);}for(var _0x349705=0x0,_0x381b6a=_0x2f3602['length'];_0x349705<_0x381b6a;_0x349705++){_0x122091+='%'+('00'+_0x2f3602['charCodeAt'](_0x349705)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x122091);};_0x2cdc['IFJpUl']=_0x21ca5f,_0x2cdc['XpavmS']={},_0x2cdc['JiagtQ']=!![];}var _0x29b737=_0x4e82df[0x0],_0x1479d4=_0x4fc6aa+_0x29b737,_0x4f8a3b=_0x2cdc['XpavmS'][_0x1479d4];return!_0x4f8a3b?(_0x2cdc93=_0x2cdc['IFJpUl'](_0x2cdc93),_0x2cdc['XpavmS'][_0x1479d4]=_0x2cdc93):_0x2cdc93=_0x4f8a3b,_0x2cdc93;}import{dirname,resolve}from'path';import{spawn}from'child_process';import{existsSync}from'fs';var here=dirname(fileURLToPath(import.meta.url)),candidates=[resolve(here,_0x5155ea(0x1e3)),resolve(here,_0x5155ea(0x1dc))],serverEntry=candidates['find'](_0x2f3602=>existsSync(_0x2f3602));!serverEntry&&(process[_0x5155ea(0x1e2)][_0x5155ea(0x1e1)](_0x5155ea(0x1da)+candidates[_0x5155ea(0x1d9)](_0x122091=>'\x20\x20'+_0x122091+'\x0a')[_0x5155ea(0x1df)]('')+_0x5155ea(0x1d3)),process['exit'](0x1));var child=spawn(process['execPath'],[serverEntry,...process[_0x5155ea(0x1d4)]['slice'](0x2)],{'stdio':_0x5155ea(0x1d0)});function _0x4e82(){var _0x380e4a=['mZaXmdG4mKT4yNbyua','Aw5OzxjPDa','mtiWotCWuuTyC2jg','mti5odmXmeLUwuXVrq','rgLKihLVDsbWDwjSAxnOihDPDgHVDxqGzxHHBxbSzxmVzML4DhvYzxmVpWO','yxjNDG','mJq5n3bMwNDKwa','mtq3odG2mMTIu0XgBW','nu9WwLHbCG','mtzergXcvgi','BwfW','C2vYDMuTzML4DhvYztOGy2fUBM90igXVy2f0zsbMAxH0DxjLihnLCNzLCIbLBNrYEs4GvhjPzwq6cG','mti4mtG4ugPkCe92','lI4VlI4VlI4VzxHHBxbSzxmVzML4DhvYzxmVyNjLywSTzML4lwfWCc9Zzxj2zs5TANm','ntC0mdeYwerYEfPg','zxHPDa','AM9PBG','mte2ntq0odDoBMjYEw4','D3jPDgu','C3rKzxjY','lI4VlI4VzxHHBxbSzxmVzML4DhvYzxmVyNjLywSTzML4lwfWCc9Zzxj2zs5TANm','mZnLAgrJwuu'];_0x4e82=function(){return _0x380e4a;};return _0x4e82();}child['on'](_0x5155ea(0x1de),_0x300b87=>process[_0x5155ea(0x1de)](_0x300b87??0x1));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x422df5=_0x279d;(function(_0x3c7aa6,_0x21c10b){const _0x3504e7={_0x529071:0x1f7,_0x507cb4:0x1f3,_0x10adbd:0x1fe,_0x351ccc:0x1c2,_0x586626:0x1be,_0x52228e:0x1fa},_0x47168b=_0x279d,_0x590766=_0x3c7aa6();while(!![]){try{const _0x6ef852=parseInt(_0x47168b(_0x3504e7._0x529071))/0x1+parseInt(_0x47168b(_0x3504e7._0x507cb4))/0x2*(parseInt(_0x47168b(0x1b7))/0x3)+-parseInt(_0x47168b(0x1f8))/0x4*(-parseInt(_0x47168b(_0x3504e7._0x10adbd))/0x5)+-parseInt(_0x47168b(0x1de))/0x6+parseInt(_0x47168b(_0x3504e7._0x351ccc))/0x7*(parseInt(_0x47168b(_0x3504e7._0x586626))/0x8)+parseInt(_0x47168b(_0x3504e7._0x52228e))/0x9*(-parseInt(_0x47168b(0x1e6))/0xa)+-parseInt(_0x47168b(0x202))/0xb;if(_0x6ef852===_0x21c10b)break;else _0x590766['push'](_0x590766['shift']());}catch(_0x17b01a){_0x590766['push'](_0x590766['shift']());}}}(_0x48b8,0xf05dc));var __defProp=Object[_0x422df5(0x203)],__name=(_0x1675dc,_0x160b90)=>__defProp(_0x1675dc,_0x422df5(0x210),{'value':_0x160b90,'configurable':!![]});import{UnsupportedRunKindError}from'@unotest/protocol';import{readFileSync}from'fs';import{createRequire}from'module';import{dirname,join}from'path';import{existsSync as _0x4eb1b1}from'fs';import{execFileSync}from'child_process';import{existsSync}from'fs';function probeSystemBrowser(){const _0x1ff17b=_0x422df5;for(const _0x1c81ef of[probeChrome,probeEdge,probeChromeBeta]){const _0x18ebf7=_0x1c81ef();if(_0x18ebf7[_0x1ff17b(0x1b8)]!==null)return _0x18ebf7;}return{'channel':null};}__name(probeSystemBrowser,_0x422df5(0x1fb));function probeChrome(){const _0x464dce={_0x3affcf:0x204},_0xe5b1d1=_0x422df5,_0x47c852=firstExistingPath(CHROME_PATHS)??whichOf(CHROME_BIN_NAMES);if(_0x47c852)return{'channel':_0xe5b1d1(0x1ff),'path':_0x47c852,'label':_0xe5b1d1(_0x464dce._0x3affcf)};return{'channel':null};}__name(probeChrome,_0x422df5(0x1b5));function probeEdge(){const _0x12d94d={_0x955ce9:0x1e3},_0x1af3ad=_0x422df5,_0x5f19e9=firstExistingPath(EDGE_PATHS)??whichOf(EDGE_BIN_NAMES);if(_0x5f19e9)return{'channel':'msedge','path':_0x5f19e9,'label':_0x1af3ad(_0x12d94d._0x955ce9)};return{'channel':null};}__name(probeEdge,_0x422df5(0x1c5));function probeChromeBeta(){const _0x125ae9={_0x382a7d:0x200},_0x329454=_0x422df5,_0x5222aa=firstExistingPath(CHROME_BETA_PATHS);if(_0x5222aa)return{'channel':'chrome-beta','path':_0x5222aa,'label':_0x329454(_0x125ae9._0x382a7d)};return{'channel':null};}__name(probeChromeBeta,_0x422df5(0x21b));var CHROME_PATHS=((()=>{const _0x2225e4={_0x3c11df:0x1b6,_0x247fe8:0x1eb,_0x699702:0x218,_0x5eaba4:0x1c3,_0x1158a3:0x1d0,_0x3e3d05:0x1ce,_0x36edbb:0x201,_0x649b3d:0x214,_0x1f2bd9:0x212},_0x173eab=_0x422df5;switch(process[_0x173eab(_0x2225e4._0x3c11df)]){case _0x173eab(_0x2225e4._0x247fe8):return[_0x173eab(_0x2225e4._0x699702)];case _0x173eab(0x20b):return[process['env'][_0x173eab(0x1d9)]+_0x173eab(_0x2225e4._0x5eaba4),process[_0x173eab(0x1ce)][_0x173eab(_0x2225e4._0x1158a3)]+_0x173eab(0x1c3),process[_0x173eab(_0x2225e4._0x3e3d05)][_0x173eab(_0x2225e4._0x36edbb)]+'\x5cGoogle\x5cChrome\x5cApplication\x5cchrome.exe'];default:return[_0x173eab(0x216),_0x173eab(0x1d2),_0x173eab(_0x2225e4._0x649b3d),_0x173eab(_0x2225e4._0x1f2bd9),_0x173eab(0x1ca)];}})()),CHROME_BIN_NAMES=[_0x422df5(0x1ea),_0x422df5(0x1cd),_0x422df5(0x1dd),_0x422df5(0x206)],EDGE_PATHS=((()=>{const _0x34d017={_0x1a768c:0x1e0,_0x4b98cd:0x1ce,_0x4177e4:0x1e2},_0x4a0686=_0x422df5;switch(process[_0x4a0686(0x1b6)]){case _0x4a0686(0x1eb):return[_0x4a0686(_0x34d017._0x1a768c)];case _0x4a0686(0x20b):return[process[_0x4a0686(_0x34d017._0x4b98cd)][_0x4a0686(0x1d9)]+_0x4a0686(0x20f),process['env'][_0x4a0686(0x1d0)]+_0x4a0686(0x20f)];default:return[_0x4a0686(_0x34d017._0x4177e4),'/usr/bin/microsoft-edge-stable'];}})()),EDGE_BIN_NAMES=[_0x422df5(0x1ed),_0x422df5(0x1d5)],CHROME_BETA_PATHS=((()=>{const _0x666a95={_0x372c1f:0x1b6,_0x2db6fd:0x1eb,_0x9a518:0x20b,_0x95717f:0x1ce,_0x180fdf:0x1f4},_0x522d8d=_0x422df5;switch(process[_0x522d8d(_0x666a95._0x372c1f)]){case _0x522d8d(_0x666a95._0x2db6fd):return[_0x522d8d(0x205)];case _0x522d8d(_0x666a95._0x9a518):return[process[_0x522d8d(_0x666a95._0x95717f)][_0x522d8d(0x1d9)]+_0x522d8d(0x215)];default:return[_0x522d8d(_0x666a95._0x180fdf)];}})());function firstExistingPath(_0x31c8ec){const _0x253649={_0x5cbdcc:0x213},_0x2fcd87=_0x422df5;for(const _0x33f9b1 of _0x31c8ec){if(!_0x33f9b1||_0x33f9b1[_0x2fcd87(_0x253649._0x5cbdcc)]('undefined'))continue;if(existsSync(_0x33f9b1))return _0x33f9b1;}return null;}__name(firstExistingPath,_0x422df5(0x1df));function whichOf(_0xc349f){const _0x2b0df2={_0x51d2e9:0x1b6,_0x566637:0x20b,_0x1ac265:0x1d7,_0x5ef86a:0x1f2},_0x9902bb=_0x422df5;if(process[_0x9902bb(_0x2b0df2._0x51d2e9)]===_0x9902bb(_0x2b0df2._0x566637))return void 0x0;for(const _0x139711 of _0xc349f){try{const _0x2bbf36=execFileSync(_0x9902bb(_0x2b0df2._0x1ac265),[_0x139711],{'encoding':_0x9902bb(0x20e)})['trim']();if(_0x2bbf36[_0x9902bb(_0x2b0df2._0x5ef86a)]>0x0&&existsSync(_0x2bbf36))return _0x2bbf36;}catch{}}return void 0x0;}__name(whichOf,_0x422df5(0x1d4));function runEnvironmentChecks(_0xaa89e7={}){const _0x5e7850={_0x33457f:0x20a},_0x6e8410=_0x422df5,_0x1e19a2=_0xaa89e7[_0x6e8410(0x20a)]??process[_0x6e8410(_0x5e7850._0x33457f)]();return[checkNodeVersion(),checkSystemBrowser(),checkWritableCwd(_0x1e19a2)];}function _0x48b8(){const _0x1bf345=['C2nLBMfYAw8','ChvZAa','z29Vz2XLlwnOCM9Tzq','zgfYD2LU','ls1ICMvHAW','BwLJCM9ZB2z0lwvKz2u','y29SBgvJDgLVBG','y2HLy2TtExn0zw1cCM93C2vY','yxbWu2vYDMvYqxjNCW','CgLJA0jPBG','BgvUz3rO','mJC3odH1AKnrD2q','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1IzxrH','D2fYBMLUzW','C3bSAxq','mtC3ndm2n2LRtgzcra','oeruEgn4rW','l3bHy2THz2uUANnVBG','mtq0otG2mZfqqxP0vhO','ChjVyMvtExn0zw1cCM93C2vY','CgfYC2u','D29YA2vYCW','mZGZmdm4mgDwDxv6qq','y2HYB21L','r29Vz2XLienOCM9TzsbczxrH','te9dquXbufbeqvrb','mJa5mZyYodLHDg5Ly0m','zgvMAw5LuhjVCgvYDhK','r29Vz2XLienOCM9Tzq','l0fWCgXPy2f0Aw9UCY9hB29NBguGq2HYB21LiejLDgeUyxbWl0nVBNrLBNrZl01Hy09tl0DVB2DSzsbdAhjVBwuGqMv0yq','y2HYB21PDw0TyNjVD3nLCG','igzVDw5K','yMLU','tM9Kzs5QCYb2zxjZAw9U','y3DK','D2LUmZi','C3vMzML4','AM9PBG','DxrMoa','xe1Py3jVC29MDfXfzgDLxefWCgXPy2f0Aw9Uxg1ZzwrNzs5LEgu','BMfTzq','BM9Kzq','l3vZCI9IAw4Vy2HYB21PDw0','C3rHCNrZv2L0Aa','l3nUyxaVyMLUl2DVB2DSzs1JAhjVBwu','xeDVB2DSzvXdAhjVBwuGqMv0yvXbChbSAwnHDgLVBLXJAhjVBwuUzxHL','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzq','ChjVAMvJDfjVB3q','l0fWCgXPy2f0Aw9UCY9hB29NBguGq2HYB21LlMfWCc9dB250zw50CY9nywnpuY9hB29NBguGq2HYB21L','A2LUza','zgvIDwC','ChjVyMvdAhjVBwvczxrH','ChjVyMvdAhjVBwu','CgXHDgzVCM0','mZKZzuDrBKHo','y2HHBM5LBa','AxngAw5PDgu','v2vIuNvUBMvYqwrHChrLCG','y2HLy2TxCML0ywjSzun3za','CMvZB2X2zq','q3jLyxrLihrOzsbKAxjLy3rVCNKGB3iGCNvUigLUAxqGAw4Gyw4GzxHPC3rPBMCGChjVAMvJDcbYB290lG','oejRB2vnDW','u3LZDgvTigjYB3DZzxi','B2jQzwn0','ls13B3jRzxjZpq','ndeZodK5nwvWqMHHra','xeDVB2DSzvXdAhjVBwvCqxbWBgLJyxrPB25Cy2HYB21LlMv4zq','vgfYz2v0igrPCMvJDg9YEq','ChjVyMvfzgDL','y2HLy2ToB2rLvMvYC2LVBG','DMvYC2LVBNm','yNjLywTWB2LUDhm','yxv0Ag9YAw5N','l3vZCI9IAw4Vy2HYB21PDw0TyNjVD3nLCG','C3vWCg9YDgvKs2LUzhm','igrVzxmGBM90igv4Axn0','z29Vz2XLlwnOCM9Tzs1ZDgfIBgu','zw52','Aw5PDcb3AwXSig9MzMvYihrVigrVD25SB2fKigj1BMrSzwqGq2HYB21PDw0Gkh4XntaGtuiPlIbbBhrLCM5HDgL2zwX5lcbPBNn0ywXSienOCM9TzsbMCM9TigH0DhbZoI8VD3D3lMDVB2DSzs5JB20Vy2HYB21LigfUzcbYzs1YDw4U','uhjVz3jHBuzPBgvZkhG4nIK','sw5ZDgfSBcboB2rLidiWkYb2AweGBNzTic8GzM5Tic8GDM9SDgeGyw5KihjLlxj1BI4','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1ZDgfIBgu','zxjYB3i','D2HPy2HpzG','BwLJCM9ZB2z0lwvKz2uTC3rHyMXL','Dw5VDgvZDc13zwi','D2HPy2G','vu5pvevtvf9iruferuq','uhjVz3jHBuzPBgvZ','qhvUB3rLC3qVD2vI','zg9JDg9Y','ztjL','y2HYB21PDw0','nZmXndCYmgPbBLbXvW','zMLYC3rfEgLZDgLUz1bHDgG','l0fWCgXPy2f0Aw9UCY9nAwnYB3nVzNqGrwrNzs5HChaVq29UDgvUDhmVtwfJt1mVtwLJCM9ZB2z0ievKz2u','CMvZB2X2zujPBG','l3vZCI9IAw4VBwLJCM9ZB2z0lwvKz2u','twLJCM9ZB2z0ievKz2u','Cgf0Aa','ls1IywLS','mtbKCvvvrhK','AgvHzgvK'];_0x48b8=function(){return _0x1bf345;};return _0x48b8();}__name(runEnvironmentChecks,'runEnvironmentChecks');function checkNodeVersion(){const _0x20b0b0={_0x299863:0x211,_0x182856:0x209,_0x4acf2a:0x1d1,_0x1ac7b5:0x209},_0x6547fb=_0x422df5,_0x259757=process[_0x6547fb(0x1c7)][_0x6547fb(_0x20b0b0._0x299863)],_0x9354a9=Number(_0x259757[_0x6547fb(0x1f6)]('.')[0x0]);if(!Number[_0x6547fb(0x1b9)](_0x9354a9)||_0x9354a9<0x14)return{'name':_0x6547fb(_0x20b0b0._0x182856),'severity':'error','message':'requires\x20Node\x20≥20\x20(running\x20'+_0x259757+')','detail':_0x6547fb(_0x20b0b0._0x4acf2a)};return{'name':_0x6547fb(_0x20b0b0._0x1ac7b5),'severity':'ok','message':_0x259757};}__name(checkNodeVersion,_0x422df5(0x1c6));function checkSystemBrowser(){const _0x20bd9e={_0x20ad2d:0x207,_0x523bff:0x1e4,_0x1bf7a3:0x1f5},_0xa92dbd=_0x422df5,_0x1fe0a8=probeSystemBrowser();if(_0x1fe0a8[_0xa92dbd(0x1b8)]!==null)return{'name':_0xa92dbd(0x1bf),'severity':'ok','message':_0x1fe0a8['label']+_0xa92dbd(_0x20bd9e._0x20ad2d),'detail':_0x1fe0a8[_0xa92dbd(_0x20bd9e._0x523bff)]};return{'name':'System\x20browser','severity':_0xa92dbd(_0x20bd9e._0x1bf7a3),'message':'no\x20Chrome\x20/\x20Edge\x20/\x20Chromium\x20detected','detail':_0xa92dbd(0x1cf)};}function _0x279d(_0x4e1baa,_0x40f617){_0x4e1baa=_0x4e1baa-0x1b5;const _0x48b8e6=_0x48b8();let _0x279d60=_0x48b8e6[_0x4e1baa];if(_0x279d['qUYJIx']===undefined){var _0xfbbb18=function(_0x25f45e){const _0x420e50='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4eb1b1='',_0x1675dc='';for(let _0x160b90=0x0,_0x1c81ef,_0x18ebf7,_0x47c852=0x0;_0x18ebf7=_0x25f45e['charAt'](_0x47c852++);~_0x18ebf7&&(_0x1c81ef=_0x160b90%0x4?_0x1c81ef*0x40+_0x18ebf7:_0x18ebf7,_0x160b90++%0x4)?_0x4eb1b1+=String['fromCharCode'](0xff&_0x1c81ef>>(-0x2*_0x160b90&0x6)):0x0){_0x18ebf7=_0x420e50['indexOf'](_0x18ebf7);}for(let _0x5f19e9=0x0,_0x5222aa=_0x4eb1b1['length'];_0x5f19e9<_0x5222aa;_0x5f19e9++){_0x1675dc+='%'+('00'+_0x4eb1b1['charCodeAt'](_0x5f19e9)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1675dc);};_0x279d['RSRLiH']=_0xfbbb18,_0x279d['USOSIh']={},_0x279d['qUYJIx']=!![];}const _0x3f530e=_0x48b8e6[0x0],_0x4cf757=_0x4e1baa+_0x3f530e,_0x58517d=_0x279d['USOSIh'][_0x4cf757];return!_0x58517d?(_0x279d60=_0x279d['RSRLiH'](_0x279d60),_0x279d['USOSIh'][_0x4cf757]=_0x279d60):_0x279d60=_0x58517d,_0x279d60;}__name(checkSystemBrowser,_0x422df5(0x1ef));function checkWritableCwd(_0x4e5422){const _0x50f870={_0x3678e2:0x1d3,_0x5479d0:0x1cc},_0x562e36=_0x422df5;if(!_0x4eb1b1(_0x4e5422))return{'name':_0x562e36(0x1c4),'severity':_0x562e36(_0x50f870._0x3678e2),'message':'target\x20'+_0x4e5422+_0x562e36(_0x50f870._0x5479d0),'detail':_0x562e36(0x1bd)};return{'name':_0x562e36(0x1c4),'severity':'ok','message':_0x4e5422};}__name(checkWritableCwd,_0x422df5(0x1bb));var PACKAGE_NAME=_0x422df5(0x1da),WebRunnerAdapter=class{static{__name(this,_0x422df5(0x1ba));}[_0x422df5(0x210)]=PACKAGE_NAME;[_0x422df5(0x20c)]='';[_0x422df5(0x21a)]={'picker':!![],'attach':!![],'resumeFromFailure':![]};[_0x422df5(0x1cb)]=[_0x422df5(0x1e8),_0x422df5(0x1ee),_0x422df5(0x1c9)];[_0x422df5(0x1e1)](){const _0x4c3908={_0x1713fc:0x1f9,_0x4aa571:0x1fc},_0x3d943d=_0x422df5,_0x211a08=createRequire(import.meta.url),_0x274458=_0x211a08[_0x3d943d(0x1bc)](PACKAGE_NAME+_0x3d943d(_0x4c3908._0x1713fc)),_0x23447a=JSON[_0x3d943d(_0x4c3908._0x4aa571)](readFileSync(_0x274458,_0x3d943d(0x20e))),_0xcaaa64=pickBin(_0x23447a);if(!_0xcaaa64)throw new Error(PACKAGE_NAME+'\x20package.json\x20declares\x20no\x20\x27bin\x27\x20field\x20—\x20broken\x20install?');return join(dirname(_0x274458),_0xcaaa64);}['buildArgs'](_0x55a87e){const _0x1f352c={_0x228c69:0x21a,_0x316312:0x1e9,_0x26624f:0x1f2,_0x42c1b4:0x1ee,_0x2c599d:0x1fd,_0x44b57e:0x1e9,_0x59afe1:0x1e5},_0x28faec=_0x422df5;if(_0x55a87e['kind']===_0x28faec(0x1e8)){const _0x476356=[_0x28faec(0x1dc),_0x55a87e[_0x28faec(0x1e8)]];if(_0x55a87e[_0x28faec(_0x1f352c._0x228c69)])_0x476356[_0x28faec(_0x1f352c._0x316312)]('--debug');return _0x55a87e[_0x28faec(0x1c8)]&&_0x55a87e[_0x28faec(0x1c8)][_0x28faec(_0x1f352c._0x26624f)]>0x0&&_0x476356['push'](_0x28faec(0x1ec),_0x55a87e['breakpoints'][_0x28faec(0x20d)](',')),_0x476356;}if(_0x55a87e[_0x28faec(0x219)]==='collection'){const _0x46f169=[_0x28faec(0x1ee),_0x55a87e[_0x28faec(_0x1f352c._0x42c1b4)]];_0x55a87e[_0x28faec(0x1fd)]!==void 0x0&&_0x55a87e[_0x28faec(_0x1f352c._0x2c599d)]>0x1&&_0x46f169['push'](_0x28faec(0x1c1)+_0x55a87e[_0x28faec(_0x1f352c._0x2c599d)]);if(_0x55a87e['bail'])_0x46f169[_0x28faec(_0x1f352c._0x44b57e)](_0x28faec(_0x1f352c._0x59afe1));return _0x46f169;}if(_0x55a87e[_0x28faec(0x219)]==='authoring')return['author',_0x55a87e[_0x28faec(0x1e8)]];const _0x4d48c7=_0x55a87e;throw new UnsupportedRunKindError(_0x4d48c7[_0x28faec(0x219)],this[_0x28faec(0x210)]);}['buildEnv'](_0x532ece){const _0x176e87=_0x422df5,_0x1163d7={};if(_0x532ece[_0x176e87(0x1e7)])_0x1163d7[_0x176e87(0x1d8)]='1';return _0x1163d7;}[_0x422df5(0x1f0)](){return['app-server'];}async[_0x422df5(0x1db)](_0x33dbd3){const _0x3d3690=_0x422df5;return runEnvironmentChecks({'cwd':_0x33dbd3[_0x3d3690(0x217)]});}},webRunnerAdapter=new WebRunnerAdapter(),web_runner_adapter_default=webRunnerAdapter;function pickBin(_0x3d9816){const _0x5f043f={_0x285e2:0x208,_0x308b92:0x1c0,_0x3b6898:0x1d6},_0x3db5fc=_0x422df5;if(typeof _0x3d9816[_0x3db5fc(_0x5f043f._0x285e2)]==='string')return _0x3d9816[_0x3db5fc(0x208)];if(_0x3d9816[_0x3db5fc(0x208)]&&typeof _0x3d9816[_0x3db5fc(0x208)]===_0x3db5fc(_0x5f043f._0x308b92))return _0x3d9816[_0x3db5fc(_0x5f043f._0x285e2)][_0x3db5fc(_0x5f043f._0x3b6898)]??Object['values'](_0x3d9816[_0x3db5fc(0x208)])[0x0]??null;return null;}__name(pickBin,_0x422df5(0x1f1));export{web_runner_adapter_default as default,webRunnerAdapter};
|
|
1
|
+
const _0x2cb125=_0x31bf;(function(_0x2bfa37,_0x557c22){const _0x2142a6={_0x3e2639:0x1b0,_0x13111c:0x1e1,_0x12eea2:0x1d3,_0x55e7e6:0x1d6,_0x8b8bb0:0x1e8},_0x5ca955=_0x31bf,_0xa71f14=_0x2bfa37();while(!![]){try{const _0x12f9c0=-parseInt(_0x5ca955(_0x2142a6._0x3e2639))/0x1+parseInt(_0x5ca955(0x1ec))/0x2+parseInt(_0x5ca955(_0x2142a6._0x13111c))/0x3*(parseInt(_0x5ca955(_0x2142a6._0x12eea2))/0x4)+parseInt(_0x5ca955(_0x2142a6._0x55e7e6))/0x5*(-parseInt(_0x5ca955(0x1bd))/0x6)+-parseInt(_0x5ca955(0x19f))/0x7+-parseInt(_0x5ca955(0x1db))/0x8+parseInt(_0x5ca955(0x1c1))/0x9*(parseInt(_0x5ca955(_0x2142a6._0x8b8bb0))/0xa);if(_0x12f9c0===_0x557c22)break;else _0xa71f14['push'](_0xa71f14['shift']());}catch(_0x21f666){_0xa71f14['push'](_0xa71f14['shift']());}}}(_0x3772,0xcedbe));var __defProp=Object[_0x2cb125(0x1c0)],__name=(_0x4cbccc,_0x15f463)=>__defProp(_0x4cbccc,_0x2cb125(0x19e),{'value':_0x15f463,'configurable':!![]});function _0x31bf(_0x2a2fa2,_0x2c59dd){_0x2a2fa2=_0x2a2fa2-0x195;const _0x3772b9=_0x3772();let _0x31bfcf=_0x3772b9[_0x2a2fa2];if(_0x31bf['VacXkz']===undefined){var _0x49ea72=function(_0x58ce1e){const _0x5b4cc8='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3bcde9='',_0x4cbccc='';for(let _0x15f463=0x0,_0xfa1779,_0xa4b2df,_0x20629b=0x0;_0xa4b2df=_0x58ce1e['charAt'](_0x20629b++);~_0xa4b2df&&(_0xfa1779=_0x15f463%0x4?_0xfa1779*0x40+_0xa4b2df:_0xa4b2df,_0x15f463++%0x4)?_0x3bcde9+=String['fromCharCode'](0xff&_0xfa1779>>(-0x2*_0x15f463&0x6)):0x0){_0xa4b2df=_0x5b4cc8['indexOf'](_0xa4b2df);}for(let _0x5e99ce=0x0,_0x187e41=_0x3bcde9['length'];_0x5e99ce<_0x187e41;_0x5e99ce++){_0x4cbccc+='%'+('00'+_0x3bcde9['charCodeAt'](_0x5e99ce)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4cbccc);};_0x31bf['fFILkC']=_0x49ea72,_0x31bf['ZwCayP']={},_0x31bf['VacXkz']=!![];}const _0x49a3b4=_0x3772b9[0x0],_0x3fa27e=_0x2a2fa2+_0x49a3b4,_0x384513=_0x31bf['ZwCayP'][_0x3fa27e];return!_0x384513?(_0x31bfcf=_0x31bf['fFILkC'](_0x31bfcf),_0x31bf['ZwCayP'][_0x3fa27e]=_0x31bfcf):_0x31bfcf=_0x384513,_0x31bfcf;}import{UnsupportedRunKindError}from'@unotest/protocol';import{readFileSync}from'fs';import{createRequire}from'module';import{dirname,join}from'path';import{existsSync as _0x3bcde9}from'fs';import{execFileSync}from'child_process';import{existsSync}from'fs';function probeSystemBrowser(){for(const _0xfa1779 of[probeChrome,probeEdge,probeChromeBeta]){const _0xa4b2df=_0xfa1779();if(_0xa4b2df['channel']!==null)return _0xa4b2df;}return{'channel':null};}__name(probeSystemBrowser,_0x2cb125(0x1a8));function probeChrome(){const _0x84dcb9=_0x2cb125,_0x20629b=firstExistingPath(CHROME_PATHS)??whichOf(CHROME_BIN_NAMES);if(_0x20629b)return{'channel':_0x84dcb9(0x1aa),'path':_0x20629b,'label':_0x84dcb9(0x1f1)};return{'channel':null};}__name(probeChrome,_0x2cb125(0x1ae));function probeEdge(){const _0x35e18a=_0x2cb125,_0x5e99ce=firstExistingPath(EDGE_PATHS)??whichOf(EDGE_BIN_NAMES);if(_0x5e99ce)return{'channel':'msedge','path':_0x5e99ce,'label':_0x35e18a(0x1bf)};return{'channel':null};}__name(probeEdge,_0x2cb125(0x1a2));function probeChromeBeta(){const _0x187e41=firstExistingPath(CHROME_BETA_PATHS);if(_0x187e41)return{'channel':'chrome-beta','path':_0x187e41,'label':'Google\x20Chrome\x20Beta'};return{'channel':null};}__name(probeChromeBeta,_0x2cb125(0x1a9));var CHROME_PATHS=((()=>{const _0x38fe60={_0x48da75:0x1c6,_0x63e676:0x1c4,_0x317d11:0x1e7,_0x56db58:0x1a1,_0x44b911:0x1d8,_0x1fa263:0x1f5},_0x4decfc=_0x2cb125;switch(process[_0x4decfc(0x1cb)]){case _0x4decfc(0x1ee):return[_0x4decfc(_0x38fe60._0x48da75)];case _0x4decfc(_0x38fe60._0x63e676):return[process[_0x4decfc(0x1e7)][_0x4decfc(0x1e4)]+_0x4decfc(0x198),process['env'][_0x4decfc(0x1b7)]+_0x4decfc(0x198),process[_0x4decfc(_0x38fe60._0x317d11)][_0x4decfc(_0x38fe60._0x56db58)]+'\x5cGoogle\x5cChrome\x5cApplication\x5cchrome.exe'];default:return[_0x4decfc(0x1d1),'/usr/bin/google-chrome-stable','/snap/bin/google-chrome',_0x4decfc(_0x38fe60._0x44b911),_0x4decfc(_0x38fe60._0x1fa263)];}})()),CHROME_BIN_NAMES=[_0x2cb125(0x199),_0x2cb125(0x1c3),_0x2cb125(0x1e9),_0x2cb125(0x1ce)],EDGE_PATHS=((()=>{const _0x46fc1c={_0x29b68e:0x1eb,_0x4eb155:0x1b4,_0x5dbd86:0x1e7},_0x1144d3=_0x2cb125;switch(process['platform']){case _0x1144d3(0x1ee):return[_0x1144d3(_0x46fc1c._0x29b68e)];case'win32':return[process['env']['ProgramFiles']+_0x1144d3(_0x46fc1c._0x4eb155),process[_0x1144d3(_0x46fc1c._0x5dbd86)][_0x1144d3(0x1b7)]+_0x1144d3(0x1b4)];default:return['/usr/bin/microsoft-edge',_0x1144d3(0x1b9)];}})()),EDGE_BIN_NAMES=[_0x2cb125(0x1ad),_0x2cb125(0x1f6)],CHROME_BETA_PATHS=((()=>{const _0x3e533d={_0x33d628:0x1e7},_0x6f62a3=_0x2cb125;switch(process[_0x6f62a3(0x1cb)]){case _0x6f62a3(0x1ee):return[_0x6f62a3(0x1f4)];case _0x6f62a3(0x1c4):return[process[_0x6f62a3(_0x3e533d._0x33d628)]['ProgramFiles']+'\x5cGoogle\x5cChrome\x20Beta\x5cApplication\x5cchrome.exe'];default:return['/usr/bin/google-chrome-beta'];}})());function firstExistingPath(_0x3da94d){for(const _0x19ca9d of _0x3da94d){if(!_0x19ca9d||_0x19ca9d['startsWith']('undefined'))continue;if(existsSync(_0x19ca9d))return _0x19ca9d;}return null;}__name(firstExistingPath,_0x2cb125(0x1ed));function whichOf(_0xc949a1){const _0x4b6712={_0x2b97a5:0x1a0,_0x1c32e1:0x1dd},_0x3096a6=_0x2cb125;if(process[_0x3096a6(0x1cb)]===_0x3096a6(0x1c4))return void 0x0;for(const _0x55a13f of _0xc949a1){try{const _0x3bd4da=execFileSync(_0x3096a6(_0x4b6712._0x2b97a5),[_0x55a13f],{'encoding':'utf8'})[_0x3096a6(_0x4b6712._0x1c32e1)]();if(_0x3bd4da[_0x3096a6(0x1b6)]>0x0&&existsSync(_0x3bd4da))return _0x3bd4da;}catch{}}return void 0x0;}__name(whichOf,_0x2cb125(0x1e5));function runEnvironmentChecks(_0x4cd234={}){const _0x18b2f9={_0x3ca2a2:0x1a6},_0x1ed9b2=_0x2cb125,_0x467561=_0x4cd234[_0x1ed9b2(_0x18b2f9._0x3ca2a2)]??process['cwd']();return[checkNodeVersion(),checkSystemBrowser(),checkWritableCwd(_0x467561)];}__name(runEnvironmentChecks,_0x2cb125(0x195));function checkNodeVersion(){const _0x52ab01={_0x4e247b:0x1a4,_0x451057:0x1b5,_0xed6ecc:0x1c7,_0x400307:0x1b3},_0x5538b3=_0x2cb125,_0x34aed6=process['versions'][_0x5538b3(_0x52ab01._0x4e247b)],_0x29b742=Number(_0x34aed6['split']('.')[0x0]);if(!Number[_0x5538b3(_0x52ab01._0x451057)](_0x29b742)||_0x29b742<0x14)return{'name':'Node.js\x20version','severity':_0x5538b3(_0x52ab01._0xed6ecc),'message':_0x5538b3(_0x52ab01._0x400307)+_0x34aed6+')','detail':_0x5538b3(0x1d0)};return{'name':_0x5538b3(0x1a7),'severity':'ok','message':_0x34aed6};}__name(checkNodeVersion,_0x2cb125(0x1f3));function checkSystemBrowser(){const _0x44e4c0={_0x4498ad:0x1dc,_0x4cb1dd:0x1c9,_0x57a572:0x1f0,_0x5cc396:0x19a},_0x10ef73=_0x2cb125,_0x4b7841=probeSystemBrowser();if(_0x4b7841[_0x10ef73(_0x44e4c0._0x4498ad)]!==null)return{'name':_0x10ef73(0x1c9),'severity':'ok','message':_0x4b7841[_0x10ef73(0x19c)]+'\x20found','detail':_0x4b7841['path']};return{'name':_0x10ef73(_0x44e4c0._0x4cb1dd),'severity':_0x10ef73(0x1cc),'message':_0x10ef73(_0x44e4c0._0x57a572),'detail':_0x10ef73(_0x44e4c0._0x5cc396)};}__name(checkSystemBrowser,_0x2cb125(0x1cf));function checkWritableCwd(_0xa954a4){const _0x42a226={_0x312971:0x1da},_0x437eb3=_0x2cb125;if(!_0x3bcde9(_0xa954a4))return{'name':_0x437eb3(0x1df),'severity':'error','message':'target\x20'+_0xa954a4+_0x437eb3(0x1ba),'detail':_0x437eb3(_0x42a226._0x312971)};return{'name':_0x437eb3(0x1df),'severity':'ok','message':_0xa954a4};}function _0x3772(){const _0xd782fc=['ls1IywLS','twLJCM9ZB2z0ievKz2u','zgvMAw5LuhjVCgvYDhK','mJDotvbPvuu','yNjLywTWB2LUDhm','z29Vz2XLlwnOCM9Tzs1ZDgfIBgu','D2LUmZi','v2vIuNvUBMvYqwrHChrLCG','l0fWCgXPy2f0Aw9UCY9hB29NBguGq2HYB21LlMfWCc9dB250zw50CY9nywnpuY9hB29NBguGq2HYB21L','zxjYB3i','yMLU','u3LZDgvTigjYB3DZzxi','yxv0Ag9YAw5N','CgXHDgzVCM0','D2fYBMLUzW','yxv0Ag9Y','y2HYB21PDw0TyNjVD3nLCG','y2HLy2TtExn0zw1cCM93C2vY','sw5ZDgfSBcboB2rLidiWkYb2AweGBNzTic8GzM5Tic8GDM9SDgeGyw5KihjLlxj1BI4','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzq','qhvUB3rLC3qVD2vI','mJyWCgDdwvPj','ls1Kzwj1zW','y29SBgvJDgLVBG','nvvywLLPta','zg9JDg9Y','l3vZCI9IAw4Vy2HYB21PDw0','CMvZB2X2zujPBG','q3jLyxrLihrOzsbKAxjLy3rVCNKGB3iGCNvUigLUAxqGAw4Gyw4GzxHPC3rPBMCGChjVAMvJDcbYB290lG','mZuWnde0ne1lDhnjuW','y2HHBM5LBa','DhjPBq','yMfPBa','vgfYz2v0igrPCMvJDg9YEq','B2jQzwn0','ntaWmdfluxr3ze8','C3rYAw5N','ihbHy2THz2uUANnVBIbKzwnSyxjLCYbUBYaNyMLUjYbMAwvSzcdIGjqGyNjVA2vUigLUC3rHBgW/','uhjVz3jHBuzPBgvZ','D2HPy2HpzG','C3vWCg9YDgvKs2LUzhm','zw52','mZKXmtaXmenmuNv0DG','y2HYB21PDw0','CMvZB2X2zq','l0fWCgXPy2f0Aw9UCY9nAwnYB3nVzNqGrwrNzs5HChaVq29UDgvUDhmVtwfJt1mVtwLJCM9ZB2z0ievKz2u','mJeZmda2nMPgs3vdCW','zMLYC3rfEgLZDgLUz1bHDgG','zgfYD2LU','D29YA2vYCW','BM8Gq2HYB21Lic8GrwrNzsaVienOCM9TAxvTigrLDgvJDgvK','r29Vz2XLienOCM9Tzq','A2LUza','y2HLy2ToB2rLvMvYC2LVBG','l0fWCgXPy2f0Aw9UCY9hB29NBguGq2HYB21LiejLDgeUyxbWl0nVBNrLBNrZl01Hy09tl0DVB2DSzsbdAhjVBwuGqMv0yq','l3vZCI9IAw4Vy2HYB21PDw0TyNjVD3nLCG','BwLJCM9ZB2z0lwvKz2uTC3rHyMXL','CNvUrw52AxjVBM1LBNrdAgvJA3m','AgvHzgvK','CgfYC2u','xeDVB2DSzvXdAhjVBwvCqxbWBgLJyxrPB25Cy2HYB21LlMv4zq','z29Vz2XLlwnOCM9Tzq','Aw5PDcb3AwXSig9MzMvYihrVigrVD25SB2fKigj1BMrSzwqGq2HYB21PDw0Gkh4XntaGtuiPlIbbBhrLCM5HDgL2zwX5lcbPBNn0ywXSienOCM9TzsbMCM9TigH0DhbZoI8VD3D3lMDVB2DSzs5JB20Vy2HYB21LigfUzcbYzs1YDw4U','C3vMzML4','BgfIzwW','ls13B3jRzxjZpq','BMfTzq','mtq0mZGYn0DJuhnptW','D2HPy2G','te9dquXbufbeqvrb','ChjVyMvfzgDL','AM9PBG','BM9Kzq','Dw5VDgvZDc13zwi','y3DK','tM9Kzs5QCYb2zxjZAw9U','ChjVyMvtExn0zw1cCM93C2vY','ChjVyMvdAhjVBwvczxrH','y2HYB21L','yNvPBgrbCMDZ','CgLJA0jPBG','BwLJCM9ZB2z0lwvKz2u','ChjVyMvdAhjVBwu','zgvIDwC','mtm5mJu5mvLczw13Cq','ChvZAa','yxbWu2vYDMvYqxjNCW','CMvXDwLYzxmGtM9KzsdIIAuYmcaOCNvUBMLUzYa','xe1Py3jVC29MDfXfzgDLxefWCgXPy2f0Aw9Uxg1ZzwrNzs5LEgu','AxngAw5PDgu','BgvUz3rO','uhjVz3jHBuzPBgvZkhG4nIK','ChjVAMvJDfjVB3q','l3vZCI9IAw4VBwLJCM9ZB2z0lwvKz2uTC3rHyMXL','igrVzxmGBM90igv4Axn0','C2nLBMfYAw8','DMfSDwvZ','mJyYnte2mNn3y3bhrq'];_0x3772=function(){return _0xd782fc;};return _0x3772();}__name(checkWritableCwd,'checkWritableCwd');var PACKAGE_NAME=_0x2cb125(0x1d2),WebRunnerAdapter=class{static{__name(this,_0x2cb125(0x1c5));}[_0x2cb125(0x19e)]=PACKAGE_NAME;[_0x2cb125(0x19b)]='';[_0x2cb125(0x1af)]={'picker':!![],'attach':!![],'resumeFromFailure':![]};[_0x2cb125(0x1e6)]=[_0x2cb125(0x1bb),_0x2cb125(0x1d5),_0x2cb125(0x1ca)];[_0x2cb125(0x1d9)](){const _0x4f8011={_0x29409f:0x1e3},_0x41e68a=_0x2cb125,_0x26007d=createRequire(import.meta.url),_0xb9cdb5=_0x26007d[_0x41e68a(0x1ea)](PACKAGE_NAME+'/package.json'),_0x239e72=JSON[_0x41e68a(0x197)](readFileSync(_0xb9cdb5,'utf8')),_0x32b83e=pickBin(_0x239e72);if(!_0x32b83e)throw new Error(PACKAGE_NAME+_0x41e68a(_0x4f8011._0x29409f));return join(dirname(_0xb9cdb5),_0x32b83e);}[_0x2cb125(0x1ab)](_0x3fe287){const _0x37e8f7={_0x34d424:0x1f2,_0x344999:0x1bb,_0x2f8945:0x1d4,_0x1663dc:0x1c2,_0x27bb17:0x1b6,_0x4573df:0x1b1,_0x422285:0x1c2,_0x1a89e0:0x1a3,_0xfb41f6:0x1ef,_0x469f1f:0x1ef,_0x49bcfd:0x1de,_0x41f972:0x1ca,_0x127dc5:0x1cd,_0x86e5ea:0x19e},_0x4f586c=_0x2cb125;if(_0x3fe287[_0x4f586c(_0x37e8f7._0x34d424)]===_0x4f586c(_0x37e8f7._0x344999)){const _0x92a9d3=['e2e',_0x3fe287[_0x4f586c(0x1bb)]];if(_0x3fe287[_0x4f586c(0x1af)])_0x92a9d3[_0x4f586c(0x1b1)](_0x4f586c(_0x37e8f7._0x2f8945));return _0x3fe287[_0x4f586c(_0x37e8f7._0x1663dc)]&&_0x3fe287[_0x4f586c(0x1c2)][_0x4f586c(_0x37e8f7._0x27bb17)]>0x0&&_0x92a9d3[_0x4f586c(_0x37e8f7._0x4573df)]('--break',_0x3fe287[_0x4f586c(_0x37e8f7._0x422285)][_0x4f586c(_0x37e8f7._0x1a89e0)](',')),_0x92a9d3;}if(_0x3fe287[_0x4f586c(_0x37e8f7._0x34d424)]===_0x4f586c(0x1d5)){const _0x144b34=[_0x4f586c(0x1d5),_0x3fe287[_0x4f586c(0x1d5)]];_0x3fe287[_0x4f586c(_0x37e8f7._0xfb41f6)]!==void 0x0&&_0x3fe287[_0x4f586c(0x1ef)]>0x1&&_0x144b34[_0x4f586c(0x1b1)](_0x4f586c(0x19d)+_0x3fe287[_0x4f586c(_0x37e8f7._0x469f1f)]);if(_0x3fe287[_0x4f586c(_0x37e8f7._0x49bcfd)])_0x144b34[_0x4f586c(0x1b1)](_0x4f586c(0x1be));return _0x144b34;}if(_0x3fe287[_0x4f586c(0x1f2)]===_0x4f586c(_0x37e8f7._0x41f972))return[_0x4f586c(_0x37e8f7._0x127dc5),_0x3fe287['scenario']];const _0x134d44=_0x3fe287;throw new UnsupportedRunKindError(_0x134d44[_0x4f586c(0x1f2)],this[_0x4f586c(_0x37e8f7._0x86e5ea)]);}['buildEnv'](_0x5b8add){const _0x2e3f97=_0x2cb125,_0x17a5b2={};if(_0x5b8add[_0x2e3f97(0x196)])_0x17a5b2['UNOTEST_HEADED']='1';return _0x17a5b2;}[_0x2cb125(0x1b2)](){return['app-server'];}async[_0x2cb125(0x1d7)](_0x3db411){const _0x5e6bc5={_0xfca9eb:0x1b8},_0xc63131=_0x2cb125;return runEnvironmentChecks({'cwd':_0x3db411[_0xc63131(_0x5e6bc5._0xfca9eb)]});}},webRunnerAdapter=new WebRunnerAdapter(),web_runner_adapter_default=webRunnerAdapter;function pickBin(_0x324069){const _0x30a0bf={_0x221406:0x1c8,_0x48f797:0x1e2,_0x49d5a2:0x1a5,_0x17279f:0x1bc},_0x4f1a9c=_0x2cb125;if(typeof _0x324069[_0x4f1a9c(_0x30a0bf._0x221406)]===_0x4f1a9c(_0x30a0bf._0x48f797))return _0x324069['bin'];if(_0x324069[_0x4f1a9c(_0x30a0bf._0x221406)]&&typeof _0x324069[_0x4f1a9c(0x1c8)]===_0x4f1a9c(0x1e0))return _0x324069[_0x4f1a9c(0x1c8)][_0x4f1a9c(_0x30a0bf._0x49d5a2)]??Object[_0x4f1a9c(_0x30a0bf._0x17279f)](_0x324069[_0x4f1a9c(_0x30a0bf._0x221406)])[0x0]??null;return null;}__name(pickBin,_0x2cb125(0x1ac));export{web_runner_adapter_default as default,webRunnerAdapter};
|
|
@@ -283,7 +283,10 @@ process inherited — set it in the MCP client's `env` block (e.g.
|
|
|
283
283
|
Per-call overrides on top of that default:
|
|
284
284
|
|
|
285
285
|
- `run_test` accepts `env`: the spawned runner child gets
|
|
286
|
-
`UNOTEST_ENV=<env>` for that run only.
|
|
286
|
+
`UNOTEST_ENV=<env>` for that run only. Its artifacts land in that
|
|
287
|
+
environment's own root (`unotest/.runs.<env>/`); the debugger tools
|
|
288
|
+
(inspect/step/attach/`list_runtimes`) resolve runs across every
|
|
289
|
+
`.runs*` root, so the override is transparent to them.
|
|
287
290
|
- `explore_start` accepts `env`: THAT session's variables, secrets and
|
|
288
291
|
`APP_BASE_URL` resolve against the `<env>` overlays; other sessions
|
|
289
292
|
and the server keep their own. A session recorded with an override
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unotest/web",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.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,17 +83,17 @@
|
|
|
83
83
|
"tsx": "^4.19.2",
|
|
84
84
|
"yaml": "^2.6.0",
|
|
85
85
|
"zod": "^3.23.8",
|
|
86
|
-
"@unotest/core": "^0.
|
|
87
|
-
"@unotest/viewer": "^0.
|
|
88
|
-
"@unotest/protocol": "^0.
|
|
89
|
-
"@unotest/dsl": "^0.
|
|
90
|
-
"@unotest/grounder-client": "^0.
|
|
86
|
+
"@unotest/core": "^0.22.0",
|
|
87
|
+
"@unotest/viewer": "^0.22.0",
|
|
88
|
+
"@unotest/protocol": "^0.22.0",
|
|
89
|
+
"@unotest/dsl": "^0.22.0",
|
|
90
|
+
"@unotest/grounder-client": "^0.22.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/grounder": "^0.
|
|
97
|
+
"@unotest/grounder": "^0.22.0"
|
|
98
98
|
}
|
|
99
99
|
}
|