@unotest/web 0.23.0 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- const _0x345920=_0x50b0;(function(_0x1f1ccb,_0x35eb16){const _0x559cda={_0x8a176f:0x14a,_0x4588a1:0x140,_0x24b976:0x13d,_0x3ad23c:0x14b,_0x13fe63:0x138},_0x18b4e9=_0x50b0,_0x34debb=_0x1f1ccb();while(!![]){try{const _0x49ffd3=-parseInt(_0x18b4e9(0x143))/0x1*(parseInt(_0x18b4e9(_0x559cda._0x8a176f))/0x2)+-parseInt(_0x18b4e9(0x146))/0x3*(-parseInt(_0x18b4e9(0x157))/0x4)+parseInt(_0x18b4e9(0x154))/0x5*(parseInt(_0x18b4e9(_0x559cda._0x4588a1))/0x6)+-parseInt(_0x18b4e9(0x14e))/0x7*(-parseInt(_0x18b4e9(0x153))/0x8)+parseInt(_0x18b4e9(0x13c))/0x9+-parseInt(_0x18b4e9(_0x559cda._0x24b976))/0xa+-parseInt(_0x18b4e9(_0x559cda._0x3ad23c))/0xb*(parseInt(_0x18b4e9(_0x559cda._0x13fe63))/0xc);if(_0x49ffd3===_0x35eb16)break;else _0x34debb['push'](_0x34debb['shift']());}catch(_0x44443e){_0x34debb['push'](_0x34debb['shift']());}}}(_0x2b11,0xca8da));var __defProp=Object[_0x345920(0x158)],__name=(_0x3bc6,_0x4ba06c)=>__defProp(_0x3bc6,_0x345920(0x151),{'value':_0x4ba06c,'configurable':!![]});import{mkdir,writeFile}from'fs/promises';import{existsSync}from'fs';import{join}from'path';var templates={'jsconfigJson':_0x345920(0x14d),'scenarioTemplate':_0x345920(0x139),'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':_0x345920(0x13f),'examples':{'01-smoke.js':_0x345920(0x13a),'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':'#\x20unotest-web\x20—\x20secret\x20scenario\x20variables.\x20Created\x20by\x20`init`,\x20gitignored.\x0a#\x0a#\x20Same\x20KEY=VALUE\x20format\x20as\x20unotest/.env,\x20but\x20values\x20here\x20are\x20treated\x20as\x0a#\x20SECRET:\x20they\x20are\x20masked\x20(shown\x20as\x20`‹secret:KEY›`)\x20anywhere\x20the\x20runner\x20or\x0a#\x20MCP\x20debug\x20log\x20would\x20otherwise\x20write\x20them\x20—\x20fill()\x20values,\x20URLs,\x20evaluate\x0a#\x20strings.\x20Reference\x20them\x20in\x20a\x20scenario\x20by\x20their\x20bare\x20UPPER_SNAKE\x20name,\x20the\x0a#\x20same\x20way\x20as\x20.env\x20variables:\x0a#\x0a#\x20\x20\x20fill(getByLabel(\x27Password\x27),\x20PASSWORD);\x0a#\x0a#\x20Secrets\x20are\x20NOT\x20exported\x20to\x20subprocesses\x20(shell())\x20—\x20they\x20stay\x20in\x20the\x0a#\x20variable\x20store.\x20A\x20subprocess\x20that\x20genuinely\x20needs\x20one\x20(a\x20listener\x20with\x20a\x0a#\x20token)\x20gets\x20it\x20via\x20the\x20explicit\x20allowlist\x20in\x20unotest.config.*:\x0a#\x20\x20\x20sandbox:\x20{\x20exportSecrets:\x20[\x27TOKEN\x27]\x20}\x0a#\x20Put\x20non-secret\x20values\x20(URLs,\x20emails,\x20ids)\x20in\x20unotest/.env.\x0a#\x0a#\x20FLEET_EXAMPLE\x0aLOGIN=\x0aPASSWORD=\x0aTOKEN=\x0a','envExample':_0x345920(0x148)};function unotestConfigMjs(_0x1a5a85){const _0x179d76={_0x2a0c4a:0x144,_0x4527c9:0x13e,_0x21e646:0x147},_0x4cbb90=_0x345920,_0x36f437=_0x1a5a85===void 0x0?_0x4cbb90(_0x179d76._0x2a0c4a):_0x4cbb90(0x141)+JSON[_0x4cbb90(_0x179d76._0x4527c9)](_0x1a5a85)+',';return _0x4cbb90(_0x179d76._0x21e646)+_0x36f437+_0x4cbb90(0x145);}function _0x2b11(){const _0x13ebbb=['ntG0mgDpz3brvW','nvb4wK5kAq','y2HHBM5LBa','zw52rxHHBxbSzq','mJK5nJaXmMDABhj2wq','zgvMAw5LuhjVCgvYDhK','ChvZAa','mtq1nZKXnMfKEvPpta','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','lMvUDG','ntG1nJu3mfztC2zrAG','mZKZndeZmgT2qMrXva','C3rYAw5NAwz5','iYmGrtjfihrLC3rPBMCGD2L0AcbaDw5VDgvZDc93zwikcKbbr0vovfmUBwqkcKzVCIbHBNKGCMvXDwvZDcb0BYb3CML0zsWGCMvJB3jKlcbVCIbYDw4Gyw4Gzw5KlxrVlwvUzcb0zxn0lcbVCgvUihrOzqPGD3jPDguTztjLlxrLC3rGihnRAwXSicHVCIbYDw4Gyc93CML0zs1LmMuTDgvZDgaPigfUzcbKCML2zsb0AguGyNjVD3nLCIb0AhjVDwDOcNrOzsbGDw5VDgvZDc13zwjGie1ducb0B29SCYaOyg5LD19JB250zxH0ycdIHPiGygv4CgXVCMvFC3rLCgaG4OAsigbNzxrFCgfNzv9ZBMfWC2HVDgak4OAsigbYDw5FDgvZDgaPlIbeBYbUB3qGAgfUzc1HDxrOB3iGDgvZDhmGyMXPBMqGB3iGBwfWihrOzsbWCM9Qzwn0ihDPDgGkygzPBMrGl2bSC2aVygf3A2aG4OcuihrOzsbZA2LSBcDZifbOyxnLidaGBgLZDhmGDgHLigzPBgvZihrVihjLywqU','ntqYnZK3ogHzqvjlAa','icbJAgfUBMvSoIa','ANnJB25MAwDkC29U','mwDIyujcCa','icaVlYbJAgfUBMvSoIaNy2HYB21LjYWGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8Gj2nOCM9TzsCGlYaNBxnLzgDLjYaVig51BgWGkgj1BMrSzwqP','cIaGlY8GDMLLD2vYoIb7cIaGlY8GicbWB3j0oIa1mtCZlcaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGic8VigrLzMf1Bhq6ihjHBMrVBsbMCMvLihbVCNqkicaVlYaGigjYB3DZzxi6ihrYDwuSicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GzgvMyxvSDdOGDhj1zsaOyxv0BY1VCgvUig9Uigb2Awv3zxjGkqOGic8Vih0ScN07cG','m25ct1L5uq','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','x2HLBhbLCNm','mte0nJi4mfv2z0nrCW','ntv0z2DYrNK','ztjL','EWOGicjJB21WAwXLCK9WDgLVBNmIoIb7cIaGicaIy2HLy2TkCYi6igzHBhnLlaOGicaGiNrHCMDLDci6icjLCZiWmJiIlaOGicaGiMXPyIi6ifSIzxmYmdiYiL0ScIaGicaIDhLWzxmIoIbBxqOGih0ScIaGiMLUy2X1zguIoIbBcIaGicaIkIOVkI5QCYiScIaGicaIlI4VlNvUB3rLC3qVDhLWzxmVzw52lMqUDhmIlaOGicaGiI4Ul25VzgvFBw9KDwXLCY9aDw5VDgvZDc93zwiVDhLWzxmVDw5VDgvZDc1KC2WUzc50CYikicbDcN0k','otuYvgHNv2jO','mdeTC21VA2uUANm','zxHHBxbSzxm','BMfTzq','Dw5VDgvZDa'];_0x2b11=function(){return _0x13ebbb;};return _0x2b11();}function _0x50b0(_0x264a7f,_0x48cda2){_0x264a7f=_0x264a7f-0x137;const _0x2b115f=_0x2b11();let _0x50b05a=_0x2b115f[_0x264a7f];if(_0x50b0['ydbdeV']===undefined){var _0x4da9ae=function(_0x2f3ae2){const _0xccc4f0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3bc6='',_0x4ba06c='';for(let _0x1a5a85=0x0,_0x36f437,_0x2a83b9,_0x5d968f=0x0;_0x2a83b9=_0x2f3ae2['charAt'](_0x5d968f++);~_0x2a83b9&&(_0x36f437=_0x1a5a85%0x4?_0x36f437*0x40+_0x2a83b9:_0x2a83b9,_0x1a5a85++%0x4)?_0x3bc6+=String['fromCharCode'](0xff&_0x36f437>>(-0x2*_0x1a5a85&0x6)):0x0){_0x2a83b9=_0xccc4f0['indexOf'](_0x2a83b9);}for(let _0x12727a=0x0,_0x37c4b9=_0x3bc6['length'];_0x12727a<_0x37c4b9;_0x12727a++){_0x4ba06c+='%'+('00'+_0x3bc6['charCodeAt'](_0x12727a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4ba06c);};_0x50b0['yLfVgD']=_0x4da9ae,_0x50b0['cINDNb']={},_0x50b0['ydbdeV']=!![];}const _0x59d049=_0x2b115f[0x0],_0x3fa2d4=_0x264a7f+_0x59d049,_0x5e0cec=_0x50b0['cINDNb'][_0x3fa2d4];return!_0x5e0cec?(_0x50b05a=_0x50b0['yLfVgD'](_0x50b05a),_0x50b0['cINDNb'][_0x3fa2d4]=_0x50b05a):_0x50b05a=_0x5e0cec,_0x50b05a;}__name(unotestConfigMjs,'unotestConfigMjs');async function scaffoldWorkspace(_0x2a83b9,_0x5d968f={}){const _0x15b67e={_0x50a817:0x152,_0x4f7d47:0x150,_0x3ed576:0x14c,_0x37c4aa:0x13b,_0x31aadb:0x142,_0x546722:0x152,_0x6e3f57:0x150,_0x305002:0x14f,_0x58b929:0x14f,_0x1154ac:0x137},_0x526a41=_0x345920,_0x12727a=[],_0x37c4b9=[];await mkdir(join(_0x2a83b9,_0x526a41(_0x15b67e._0x50a817),_0x526a41(0x14c),_0x526a41(_0x15b67e._0x4f7d47)),{'recursive':!![]}),await mkdir(join(_0x2a83b9,_0x526a41(_0x15b67e._0x50a817),_0x526a41(_0x15b67e._0x3ed576),_0x526a41(0x149)),{'recursive':!![]});const _0x7bb43a=[{'rel':'unotest.config.mjs','content':unotestConfigMjs(_0x5d968f[_0x526a41(0x155)])},{'rel':join(_0x526a41(0x152),_0x526a41(_0x15b67e._0x37c4aa)),'content':templates[_0x526a41(0x156)]},{'rel':join('unotest','jsconfig.json'),'content':templates[_0x526a41(_0x15b67e._0x31aadb)]},{'rel':join(_0x526a41(_0x15b67e._0x546722),_0x526a41(0x14c),_0x526a41(_0x15b67e._0x6e3f57),_0x526a41(_0x15b67e._0x305002)),'content':templates[_0x526a41(0x150)][_0x526a41(_0x15b67e._0x58b929)]}];for(const {rel:_0x249b8a,content:_0x48d98e}of _0x7bb43a){const _0x1321a1=join(_0x2a83b9,_0x249b8a);if(existsSync(_0x1321a1)){_0x37c4b9[_0x526a41(_0x15b67e._0x1154ac)](_0x249b8a);continue;}await writeFile(_0x1321a1,_0x48d98e),_0x12727a[_0x526a41(_0x15b67e._0x1154ac)](_0x249b8a);}return{'projectRoot':_0x2a83b9,'created':_0x12727a,'skipped':_0x37c4b9};}__name(scaffoldWorkspace,'scaffoldWorkspace');export{scaffoldWorkspace};
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','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','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 +1 @@
1
- var _0x50c6f9=_0xbd96;(function(_0x2aad64,_0x41a32d){var _0x152baf={_0x1a853d:0xde,_0x3b65d2:0xe6,_0x3df532:0xe3,_0x3c2831:0xec,_0x129d35:0xdc,_0x24a2a1:0xda},_0x37affd=_0xbd96,_0x2af2cc=_0x2aad64();while(!![]){try{var _0x5c6c6e=parseInt(_0x37affd(_0x152baf._0x1a853d))/0x1+-parseInt(_0x37affd(_0x152baf._0x3b65d2))/0x2+parseInt(_0x37affd(_0x152baf._0x3df532))/0x3+parseInt(_0x37affd(_0x152baf._0x3c2831))/0x4*(-parseInt(_0x37affd(_0x152baf._0x129d35))/0x5)+-parseInt(_0x37affd(0xe5))/0x6+-parseInt(_0x37affd(0xee))/0x7+parseInt(_0x37affd(_0x152baf._0x24a2a1))/0x8;if(_0x5c6c6e===_0x41a32d)break;else _0x2af2cc['push'](_0x2af2cc['shift']());}catch(_0x354132){_0x2af2cc['push'](_0x2af2cc['shift']());}}}(_0x3edc,0x1ed41));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,_0x50c6f9(0xea)),resolve(here,_0x50c6f9(0xeb))],serverEntry=candidates[_0x50c6f9(0xdd)](_0x36fafb=>existsSync(_0x36fafb));function _0xbd96(_0xc2709b,_0x455ab3){_0xc2709b=_0xc2709b-0xd9;var _0x3edc32=_0x3edc();var _0xbd9660=_0x3edc32[_0xc2709b];if(_0xbd96['tTVxIW']===undefined){var _0x6e9cf8=function(_0x49e412){var _0x2a5c54='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x36fafb='',_0x1e899a='';for(var _0x3a3469=0x0,_0x2cb164,_0x3d72d8,_0x14788a=0x0;_0x3d72d8=_0x49e412['charAt'](_0x14788a++);~_0x3d72d8&&(_0x2cb164=_0x3a3469%0x4?_0x2cb164*0x40+_0x3d72d8:_0x3d72d8,_0x3a3469++%0x4)?_0x36fafb+=String['fromCharCode'](0xff&_0x2cb164>>(-0x2*_0x3a3469&0x6)):0x0){_0x3d72d8=_0x2a5c54['indexOf'](_0x3d72d8);}for(var _0x43cf0d=0x0,_0x8b286b=_0x36fafb['length'];_0x43cf0d<_0x8b286b;_0x43cf0d++){_0x1e899a+='%'+('00'+_0x36fafb['charCodeAt'](_0x43cf0d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1e899a);};_0xbd96['ZPibqI']=_0x6e9cf8,_0xbd96['qTGgTN']={},_0xbd96['tTVxIW']=!![];}var _0x5195bc=_0x3edc32[0x0],_0x2e983f=_0xc2709b+_0x5195bc,_0x3c0ff1=_0xbd96['qTGgTN'][_0x2e983f];return!_0x3c0ff1?(_0xbd9660=_0xbd96['ZPibqI'](_0xbd9660),_0xbd96['qTGgTN'][_0x2e983f]=_0xbd9660):_0xbd9660=_0x3c0ff1,_0xbd9660;}!serverEntry&&(process[_0x50c6f9(0xe4)][_0x50c6f9(0xe7)](_0x50c6f9(0xe8)+candidates[_0x50c6f9(0xe2)](_0x1e899a=>'\x20\x20'+_0x1e899a+'\x0a')[_0x50c6f9(0xdb)]('')+_0x50c6f9(0xd9)),process[_0x50c6f9(0xed)](0x1));var child=spawn(process[_0x50c6f9(0xe9)],[serverEntry,...process[_0x50c6f9(0xe0)][_0x50c6f9(0xe1)](0x2)],{'stdio':_0x50c6f9(0xdf)});child['on'](_0x50c6f9(0xed),_0x3a3469=>process[_0x50c6f9(0xed)](_0x3a3469??0x1));function _0x3edc(){var _0x46a18d=['nZi4odvjCfvvDNq','Aw5OzxjPDa','yxjNDG','C2XPy2u','BwfW','mZe5nZiYwfrovgLS','C3rKzxjY','ntq1nJi4s25UzgvS','mJG4mZm0vvHSsLHq','D3jPDgu','C2vYDMuTzML4DhvYztOGy2fUBM90igXVy2f0zsbMAxH0DxjLihnLCNzLCIbLBNrYEs4GvhjPzwq6cG','zxHLy1bHDgG','lI4VlI4VzxHHBxbSzxmVzML4DhvYzxmVyNjLywSTzML4lwfWCc9Zzxj2zs5TANm','lI4VlI4VlI4VzxHHBxbSzxmVzML4DhvYzxmVyNjLywSTzML4lwfWCc9Zzxj2zs5TANm','mtjIr2LdBLa','zxHPDa','ntK3mtq5shL5B1nZ','rgLKihLVDsbWDwjSAxnOihDPDgHVDxqGzxHHBxbSzxmVzML4DhvYzxmVpWO','mZC5mda0mgLcDKDjAG','AM9PBG','mZq0mJe1wgrNrhny','zMLUza'];_0x3edc=function(){return _0x46a18d;};return _0x3edc();}
1
+ var _0x353405=_0x49cf;(function(_0x486133,_0x1c60ef){var _0x4f12f4={_0x38c869:0x137,_0x59fcb0:0x12d,_0x3000fa:0x12a,_0x2949fa:0x12f},_0x289405=_0x49cf,_0x6c963a=_0x486133();while(!![]){try{var _0x3aee87=parseInt(_0x289405(0x13b))/0x1+-parseInt(_0x289405(_0x4f12f4._0x38c869))/0x2+parseInt(_0x289405(_0x4f12f4._0x59fcb0))/0x3+-parseInt(_0x289405(0x12e))/0x4+parseInt(_0x289405(0x133))/0x5+-parseInt(_0x289405(0x12c))/0x6*(-parseInt(_0x289405(_0x4f12f4._0x3000fa))/0x7)+parseInt(_0x289405(_0x4f12f4._0x2949fa))/0x8*(parseInt(_0x289405(0x131))/0x9);if(_0x3aee87===_0x1c60ef)break;else _0x6c963a['push'](_0x6c963a['shift']());}catch(_0x2b3062){_0x6c963a['push'](_0x6c963a['shift']());}}}(_0x48e7,0x25c45));function _0x48e7(){var _0x5e17db=['D3jPDgu','C3rKzxjY','mJiWota0CKLnrg1x','zxHLy1bHDgG','n2DSEvH2ra','zxHPDa','odi4ndjpz2jdzKe','mJm4nZy3q2X3wKrS','mZe2odG4u3HAD3Pc','nda1nJu2ve5qD1rt','rgLKihLVDsbWDwjSAxnOihDPDgHVDxqGzxHHBxbSzxmVzML4DhvYzxmVpWO','ow9iCgTVzW','C2XPy2u','odCYnda1turcwNzb','lI4VlI4VzxHHBxbSzxmVzML4DhvYzxmVyNjLywSTzML4lwfWCc9Zzxj2zs5TANm','AM9PBG','zMLUza','nJeXmtq2zNDOwujk','Aw5OzxjPDa'];_0x48e7=function(){return _0x5e17db;};return _0x48e7();}import{fileURLToPath}from'url';import{dirname,resolve}from'path';function _0x49cf(_0x43406d,_0x585dc1){_0x43406d=_0x43406d-0x129;var _0x48e753=_0x48e7();var _0x49cfc7=_0x48e753[_0x43406d];if(_0x49cf['BUykeA']===undefined){var _0x3d3c1b=function(_0x5316fe){var _0x17f3b5='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x1927bd='',_0x39729b='';for(var _0x49281c=0x0,_0x5cdf4c,_0x51bb4b,_0x98dfa=0x0;_0x51bb4b=_0x5316fe['charAt'](_0x98dfa++);~_0x51bb4b&&(_0x5cdf4c=_0x49281c%0x4?_0x5cdf4c*0x40+_0x51bb4b:_0x51bb4b,_0x49281c++%0x4)?_0x1927bd+=String['fromCharCode'](0xff&_0x5cdf4c>>(-0x2*_0x49281c&0x6)):0x0){_0x51bb4b=_0x17f3b5['indexOf'](_0x51bb4b);}for(var _0x3bf42f=0x0,_0x237ad2=_0x1927bd['length'];_0x3bf42f<_0x237ad2;_0x3bf42f++){_0x39729b+='%'+('00'+_0x1927bd['charCodeAt'](_0x3bf42f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x39729b);};_0x49cf['NSyWOc']=_0x3d3c1b,_0x49cf['yrVXFE']={},_0x49cf['BUykeA']=!![];}var _0x3f0b53=_0x48e753[0x0],_0x5a61e8=_0x43406d+_0x3f0b53,_0x148c9a=_0x49cf['yrVXFE'][_0x5a61e8];return!_0x148c9a?(_0x49cfc7=_0x49cf['NSyWOc'](_0x49cfc7),_0x49cf['yrVXFE'][_0x5a61e8]=_0x49cfc7):_0x49cfc7=_0x148c9a,_0x49cfc7;}import{spawn}from'child_process';import{existsSync}from'fs';var here=dirname(fileURLToPath(import.meta.url)),candidates=[resolve(here,_0x353405(0x134)),resolve(here,'../../../examples/fixtures/break-fix-app/serve.mjs')],serverEntry=candidates[_0x353405(0x136)](_0x1927bd=>existsSync(_0x1927bd));!serverEntry&&(process[_0x353405(0x13a)][_0x353405(0x139)]('serve-fixture:\x20cannot\x20locate\x20fixture\x20server\x20entry.\x20Tried:\x0a'+candidates['map'](_0x39729b=>'\x20\x20'+_0x39729b+'\x0a')[_0x353405(0x135)]('')+_0x353405(0x130)),process['exit'](0x1));var child=spawn(process[_0x353405(0x129)],[serverEntry,...process['argv'][_0x353405(0x132)](0x2)],{'stdio':_0x353405(0x138)});child['on'](_0x353405(0x12b),_0x49281c=>process[_0x353405(0x12b)](_0x49281c??0x1));
@@ -1 +1 @@
1
- const _0x94d281=_0x5d7d;function _0x5d7d(_0x33bc6a,_0x28683f){_0x33bc6a=_0x33bc6a-0x171;const _0x47d7a2=_0x47d7();let _0x5d7d4a=_0x47d7a2[_0x33bc6a];if(_0x5d7d['rapzwH']===undefined){var _0x1a16bd=function(_0xbe2cbe){const _0x150b82='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x53b348='',_0x4d906e='';for(let _0x439c44=0x0,_0x29dc82,_0x36404b,_0x405e94=0x0;_0x36404b=_0xbe2cbe['charAt'](_0x405e94++);~_0x36404b&&(_0x29dc82=_0x439c44%0x4?_0x29dc82*0x40+_0x36404b:_0x36404b,_0x439c44++%0x4)?_0x53b348+=String['fromCharCode'](0xff&_0x29dc82>>(-0x2*_0x439c44&0x6)):0x0){_0x36404b=_0x150b82['indexOf'](_0x36404b);}for(let _0xf39c05=0x0,_0x372893=_0x53b348['length'];_0xf39c05<_0x372893;_0xf39c05++){_0x4d906e+='%'+('00'+_0x53b348['charCodeAt'](_0xf39c05)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4d906e);};_0x5d7d['FXpQIY']=_0x1a16bd,_0x5d7d['HgvpwM']={},_0x5d7d['rapzwH']=!![];}const _0x52f90e=_0x47d7a2[0x0],_0x148d07=_0x33bc6a+_0x52f90e,_0x389ec3=_0x5d7d['HgvpwM'][_0x148d07];return!_0x389ec3?(_0x5d7d4a=_0x5d7d['FXpQIY'](_0x5d7d4a),_0x5d7d['HgvpwM'][_0x148d07]=_0x5d7d4a):_0x5d7d4a=_0x389ec3,_0x5d7d4a;}(function(_0x43bc84,_0x403b73){const _0x32bce4={_0x557a25:0x17d,_0x3dd2e2:0x172,_0x180432:0x1cb,_0x5e83ca:0x177,_0x581607:0x18e,_0x5c90ac:0x1c5,_0x14d00d:0x191},_0x43ce03=_0x5d7d,_0x3673e6=_0x43bc84();while(!![]){try{const _0x335983=-parseInt(_0x43ce03(_0x32bce4._0x557a25))/0x1*(parseInt(_0x43ce03(0x18a))/0x2)+parseInt(_0x43ce03(_0x32bce4._0x3dd2e2))/0x3*(parseInt(_0x43ce03(0x1cd))/0x4)+parseInt(_0x43ce03(0x1ba))/0x5*(-parseInt(_0x43ce03(_0x32bce4._0x180432))/0x6)+-parseInt(_0x43ce03(0x1bd))/0x7+-parseInt(_0x43ce03(_0x32bce4._0x5e83ca))/0x8*(-parseInt(_0x43ce03(0x188))/0x9)+-parseInt(_0x43ce03(_0x32bce4._0x581607))/0xa*(-parseInt(_0x43ce03(_0x32bce4._0x5c90ac))/0xb)+-parseInt(_0x43ce03(_0x32bce4._0x14d00d))/0xc;if(_0x335983===_0x403b73)break;else _0x3673e6['push'](_0x3673e6['shift']());}catch(_0x229b98){_0x3673e6['push'](_0x3673e6['shift']());}}}(_0x47d7,0x57b7e));function _0x47d7(){const _0x1eee89=['xeDVB2DSzvXdAhjVBwvCqxbWBgLJyxrPB25Cy2HYB21LlMv4zq','igrVzxmGBM90igv4Axn0','ls13B3jRzxjZpq','BMfTzq','igzVDw5K','D2fYBMLUzW','l3vZCI9IAw4VBwLJCM9ZB2z0lwvKz2u','C2nLBMfYAw8','C3rYAw5N','DhjPBq','yMLU','y2HHBM5LBa','yxv0Ag9YAw5N','ls1ICMvHAW','ihbHy2THz2uUANnVBIbKzwnSyxjLCYbUBYaNyMLUjYbMAwvSzcdIGjqGyNjVA2vUigLUC3rHBgW/','vu5pvevtvf9iruferuq','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1ZDgfIBgu','uhjVz3jHBuzPBgvZ','otm4nw5qBwLvAG','C3bSAxq','BgvUz3rO','mJu1odiZnfz3zfD3wa','CgfYC2u','D2HPy2G','l0fWCgXPy2f0Aw9UCY9nAwnYB3nVzNqGrwrNzs5HChaVq29UDgvUDhmVtwfJt1mVtwLJCM9ZB2z0ievKz2u','ls1Kzwj1zW','A2LUza','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1IzxrH','ChvZAa','nZi2DgnjuhDQ','yxbWu2vYDMvYqxjNCW','y3DK','q3jLyxrLihrOzsbKAxjLy3rVCNKGB3iGCNvUigLUAxqGAw4Gyw4GzxHPC3rPBMCGChjVAMvJDcbYB290lG','zMLYC3rfEgLZDgLUz1bHDgG','Dw5KzwzPBMvK','odq2zhf3CNfm','xe1Py3jVC29MDfXfzgDLxefWCgXPy2f0Aw9Uxg1ZzwrNzs5LEgu','ntjQy3bwy3O','D2HPy2HpzG','xeDVB2DSzvXdAhjVBwuGqMv0yvXbChbSAwnHDgLVBLXJAhjVBwuUzxHL','sw5ZDgfSBcboB2rLidiWkYb2AweGBNzTic8GzM5Tic8GDM9SDgeGyw5KihjLlxj1BI4','ChjVyMvtExn0zw1cCM93C2vY','mZqYndjtwxjcB0O','y2HYB21PDw0','BM9Kzq','ls1IywLS','AM9PBG','ndCYzNzsB0vj','D2LUmZi','y2HLy2TxCML0ywjSzun3za','zgfYD2LU','CMvZB2X2zq','Cgf0Aa','nhLusLz2va','r29Vz2XLienOCM9TzsbczxrH','yxbWlxnLCNzLCG','u3LZDgvTigjYB3DZzxi','zxjYB3i','uhjVz3jHBuzPBgvZkhG4nIK','CMvZB2X2zujPBG','zgvIDwC','z29Vz2XLlwnOCM9Tzq','l3vZCI9IAw4VBwLJCM9ZB2z0lwvKz2uTC3rHyMXL','vgfYz2v0igrPCMvJDg9YEq','mZCZntLqz3n3Cgu','AxngAw5PDgu','nZeXoe56uK1ZAW','y2HLy2TtExn0zw1cCM93C2vY','ztjL','BgfIzwW','mta1mteWB1LuAfbd','CNvUrw52AxjVBM1LBNrdAgvJA3m','DgfYz2v0ia','mtaWmdqXnKX5yMv5Bq','C3vMzML4','ChjVyMvdAhjVBwvczxrH','yxv0Ag9Y','yNjLywTWB2LUDhm','zw52','y2HYB21LlwjLDge','y2HYB21L','D29YA2vYCW','CgXHDgzVCM0','C3rHCNrZv2L0Aa','tM9Kzs5QCYb2zxjZAw9U','CgLJA0jPBG','CMvXDwLYzxmGtM9KzsdIIAuYmcaOCNvUBMLUzYa','BM8Gq2HYB21Lic8GrwrNzsaVienOCM9TAxvTigrLDgvJDgvK','C3vWCg9YDgvKs2LUzhm','Aw5PDcb3AwXSig9MzMvYihrVigrVD25SB2fKigj1BMrSzwqGq2HYB21PDw0Gkh4XntaGtuiPlIbbBhrLCM5HDgL2zwX5lcbPBNn0ywXSienOCM9TzsbMCM9TigH0DhbZoI8VD3D3lMDVB2DSzs5JB20Vy2HYB21LigfUzcbYzs1YDw4U','BwLJCM9ZB2z0lwvKz2uTC3rHyMXL','DMfSDwvZ','y2HYB21PDw0TyNjVD3nLCG','DMvYC2LVBNm','y29SBgvJDgLVBG','l3nUyxaVyMLUl2DVB2DSzs1JAhjVBwu'];_0x47d7=function(){return _0x1eee89;};return _0x47d7();}var __defProp=Object['defineProperty'],__name=(_0x4d906e,_0x439c44)=>__defProp(_0x4d906e,'name',{'value':_0x439c44,'configurable':!![]});import{UnsupportedRunKindError}from'@unotest/protocol';import{readFileSync}from'fs';import{createRequire}from'module';import{dirname,join}from'path';import{existsSync as _0x53b348}from'fs';import{execFileSync}from'child_process';import{existsSync}from'fs';function probeSystemBrowser(){const _0xf50590={_0x2474a7:0x1b3},_0x53ae42=_0x5d7d;for(const _0x29dc82 of[probeChrome,probeEdge,probeChromeBeta]){const _0x36404b=_0x29dc82();if(_0x36404b[_0x53ae42(_0xf50590._0x2474a7)]!==null)return _0x36404b;}return{'channel':null};}__name(probeSystemBrowser,_0x94d281(0x171));function probeChrome(){const _0x2e81a7=_0x94d281,_0x405e94=firstExistingPath(CHROME_PATHS)??whichOf(CHROME_BIN_NAMES);if(_0x405e94)return{'channel':_0x2e81a7(0x198),'path':_0x405e94,'label':'Google\x20Chrome'};return{'channel':null};}__name(probeChrome,'probeChrome');function probeEdge(){const _0xf39c05=firstExistingPath(EDGE_PATHS)??whichOf(EDGE_BIN_NAMES);if(_0xf39c05)return{'channel':'msedge','path':_0xf39c05,'label':'Microsoft\x20Edge'};return{'channel':null};}__name(probeEdge,'probeEdge');function probeChromeBeta(){const _0x4a52b1={_0xdffdff:0x197,_0x57a6c5:0x17e},_0x46b76c=_0x94d281,_0x372893=firstExistingPath(CHROME_BETA_PATHS);if(_0x372893)return{'channel':_0x46b76c(_0x4a52b1._0xdffdff),'path':_0x372893,'label':_0x46b76c(_0x4a52b1._0x57a6c5)};return{'channel':null};}__name(probeChromeBeta,_0x94d281(0x193));var CHROME_PATHS=((()=>{const _0x48fe9b={_0x44aaeb:0x17a,_0x3995f5:0x1a8,_0x189542:0x182,_0xc85dcb:0x196,_0x40970c:0x1a8,_0xf7e788:0x1a7},_0x2749f6=_0x94d281;switch(process[_0x2749f6(0x19a)]){case _0x2749f6(_0x48fe9b._0x44aaeb):return['/Applications/Google\x20Chrome.app/Contents/MacOS/Google\x20Chrome'];case _0x2749f6(0x178):return[process[_0x2749f6(0x196)][_0x2749f6(0x1b9)]+_0x2749f6(_0x48fe9b._0x3995f5),process[_0x2749f6(0x196)][_0x2749f6(_0x48fe9b._0x189542)]+'\x5cGoogle\x5cChrome\x5cApplication\x5cchrome.exe',process[_0x2749f6(_0x48fe9b._0xc85dcb)]['LOCALAPPDATA']+_0x2749f6(_0x48fe9b._0x40970c)];default:return['/usr/bin/google-chrome',_0x2749f6(0x1b8),_0x2749f6(_0x48fe9b._0xf7e788),'/usr/bin/chromium','/usr/bin/chromium-browser'];}})()),CHROME_BIN_NAMES=[_0x94d281(0x185),'google-chrome-stable',_0x94d281(0x173),_0x94d281(0x1a4)],EDGE_PATHS=((()=>{const _0x13fbe2={_0x295322:0x1c0,_0x554ac6:0x1b9,_0x41c446:0x182,_0x41cafc:0x1ae,_0x25b3c7:0x186},_0x58c366=_0x94d281;switch(process[_0x58c366(0x19a)]){case'darwin':return[_0x58c366(_0x13fbe2._0x295322)];case _0x58c366(0x178):return[process['env'][_0x58c366(_0x13fbe2._0x554ac6)]+_0x58c366(0x1cc),process[_0x58c366(0x196)][_0x58c366(_0x13fbe2._0x41c446)]+_0x58c366(0x1cc)];default:return[_0x58c366(_0x13fbe2._0x41cafc),_0x58c366(_0x13fbe2._0x25b3c7)];}})()),EDGE_BIN_NAMES=['microsoft-edge',_0x94d281(0x1a2)],CHROME_BETA_PATHS=((()=>{const _0x593118={_0x51adf7:0x196,_0x5280c7:0x1cf,_0x1a0a5d:0x1c3},_0x7b9a1e=_0x94d281;switch(process[_0x7b9a1e(0x19a)]){case'darwin':return['/Applications/Google\x20Chrome\x20Beta.app/Contents/MacOS/Google\x20Chrome\x20Beta'];case _0x7b9a1e(0x178):return[process[_0x7b9a1e(_0x593118._0x51adf7)][_0x7b9a1e(0x1b9)]+_0x7b9a1e(_0x593118._0x5280c7)];default:return[_0x7b9a1e(_0x593118._0x1a0a5d)];}})());function firstExistingPath(_0x2ba9b9){const _0x3d00a4={_0x41024f:0x1ca},_0x15f678=_0x94d281;for(const _0x2a0125 of _0x2ba9b9){if(!_0x2a0125||_0x2a0125[_0x15f678(0x19b)](_0x15f678(_0x3d00a4._0x41024f)))continue;if(existsSync(_0x2a0125))return _0x2a0125;}return null;}__name(firstExistingPath,_0x94d281(0x1c9));function whichOf(_0x122d17){const _0x208ae4={_0x40e81d:0x178,_0x1cbc3a:0x1b1},_0x305312=_0x94d281;if(process[_0x305312(0x19a)]===_0x305312(_0x208ae4._0x40e81d))return void 0x0;for(const _0xd6745f of _0x122d17){try{const _0x49a7a2=execFileSync(_0x305312(0x1bf),[_0xd6745f],{'encoding':'utf8'})[_0x305312(_0x208ae4._0x1cbc3a)]();if(_0x49a7a2[_0x305312(0x1bc)]>0x0&&existsSync(_0x49a7a2))return _0x49a7a2;}catch{}}return void 0x0;}__name(whichOf,_0x94d281(0x1ce));function runEnvironmentChecks(_0x3102db={}){const _0x28ebc4={_0x3408fe:0x1c7},_0x1767c4=_0x94d281,_0x59df00=_0x3102db[_0x1767c4(_0x28ebc4._0x3408fe)]??process['cwd']();return[checkNodeVersion(),checkSystemBrowser(),checkWritableCwd(_0x59df00)];}__name(runEnvironmentChecks,_0x94d281(0x18f));function checkNodeVersion(){const _0x1b296a={_0xa9ca81:0x1a5,_0x4d2396:0x189,_0x5d2cbc:0x181,_0x4200c5:0x19e,_0x2a8c76:0x1d0},_0x49154b=_0x94d281,_0x9454b5=process[_0x49154b(_0x1b296a._0xa9ca81)][_0x49154b(0x174)],_0xf595ea=Number(_0x9454b5[_0x49154b(0x1bb)]('.')[0x0]);if(!Number[_0x49154b(_0x1b296a._0x4d2396)](_0xf595ea)||_0xf595ea<0x14)return{'name':'Node.js\x20version','severity':_0x49154b(_0x1b296a._0x5d2cbc),'message':_0x49154b(_0x1b296a._0x4200c5)+_0x9454b5+')','detail':_0x49154b(_0x1b296a._0x2a8c76)};return{'name':_0x49154b(0x19c),'severity':'ok','message':_0x9454b5};}__name(checkNodeVersion,'checkNodeVersion');function checkSystemBrowser(){const _0x2ee82e={_0x4ae93a:0x1b3,_0xa0b239:0x17c,_0x52e98e:0x180,_0x1a6f28:0x1ad,_0x38a98c:0x1a1},_0x2f7b93=_0x94d281,_0x240fd9=probeSystemBrowser();if(_0x240fd9[_0x2f7b93(_0x2ee82e._0x4ae93a)]!==null)return{'name':_0x2f7b93(0x180),'severity':'ok','message':_0x240fd9[_0x2f7b93(0x18d)]+_0x2f7b93(0x1ac),'detail':_0x240fd9[_0x2f7b93(_0x2ee82e._0xa0b239)]};return{'name':_0x2f7b93(_0x2ee82e._0x52e98e),'severity':_0x2f7b93(_0x2ee82e._0x1a6f28),'message':_0x2f7b93(0x19f),'detail':_0x2f7b93(_0x2ee82e._0x38a98c)};}__name(checkSystemBrowser,_0x94d281(0x18b));function checkWritableCwd(_0x3b2a40){const _0x43abed={_0x5b5cb9:0x190,_0x1f09c1:0x1c8,_0x9c4280:0x187},_0x2b5b15=_0x94d281;if(!_0x53b348(_0x3b2a40))return{'name':_0x2b5b15(0x187),'severity':_0x2b5b15(0x181),'message':_0x2b5b15(_0x43abed._0x5b5cb9)+_0x3b2a40+_0x2b5b15(0x1a9),'detail':_0x2b5b15(_0x43abed._0x1f09c1)};return{'name':_0x2b5b15(_0x43abed._0x9c4280),'severity':'ok','message':_0x3b2a40};}__name(checkWritableCwd,_0x94d281(0x179));var PACKAGE_NAME='@unotest/web',WebRunnerAdapter=class{static{__name(this,'WebRunnerAdapter');}[_0x94d281(0x1ab)]=PACKAGE_NAME;[_0x94d281(0x192)]='';[_0x94d281(0x184)]={'picker':!![],'attach':!![],'resumeFromFailure':![]};[_0x94d281(0x1a0)]=[_0x94d281(0x1af),'collection',_0x94d281(0x1b4)];[_0x94d281(0x183)](){const _0x93cff4={_0x550891:0x17b,_0x51a4ce:0x1be},_0x11396e=_0x94d281,_0x3c8bd9=createRequire(import.meta.url),_0x587e5a=_0x3c8bd9[_0x11396e(_0x93cff4._0x550891)](PACKAGE_NAME+'/package.json'),_0x299c91=JSON[_0x11396e(_0x93cff4._0x51a4ce)](readFileSync(_0x587e5a,'utf8')),_0x2a2203=pickBin(_0x299c91);if(!_0x2a2203)throw new Error(PACKAGE_NAME+_0x11396e(0x1b6));return join(dirname(_0x587e5a),_0x2a2203);}['buildArgs'](_0x501892){const _0x4d76ad={_0x5a79b2:0x1c2,_0x421c54:0x184,_0x1379d9:0x195,_0x225924:0x1b5,_0x54fae6:0x195,_0x6879f7:0x176,_0x17e45c:0x1a6,_0x5784db:0x199,_0x27b744:0x175,_0x36801e:0x1b4,_0xb53ae1:0x194,_0x177099:0x1c2},_0x4c0648=_0x94d281;if(_0x501892[_0x4c0648(_0x4d76ad._0x5a79b2)]==='scenario'){const _0x4df569=[_0x4c0648(0x18c),_0x501892['scenario']];if(_0x501892[_0x4c0648(_0x4d76ad._0x421c54)])_0x4df569[_0x4c0648(0x1c4)](_0x4c0648(0x1c1));return _0x501892[_0x4c0648(_0x4d76ad._0x1379d9)]&&_0x501892['breakpoints']['length']>0x0&&_0x4df569['push'](_0x4c0648(_0x4d76ad._0x225924),_0x501892[_0x4c0648(_0x4d76ad._0x54fae6)][_0x4c0648(_0x4d76ad._0x6879f7)](',')),_0x4df569;}if(_0x501892[_0x4c0648(0x1c2)]===_0x4c0648(_0x4d76ad._0x17e45c)){const _0x1a9580=[_0x4c0648(_0x4d76ad._0x17e45c),_0x501892[_0x4c0648(0x1a6)]];_0x501892[_0x4c0648(0x199)]!==void 0x0&&_0x501892['workers']>0x1&&_0x1a9580[_0x4c0648(0x1c4)](_0x4c0648(0x1aa)+_0x501892[_0x4c0648(_0x4d76ad._0x5784db)]);if(_0x501892['bail'])_0x1a9580['push'](_0x4c0648(_0x4d76ad._0x27b744));return _0x1a9580;}if(_0x501892['kind']===_0x4c0648(_0x4d76ad._0x36801e))return[_0x4c0648(_0x4d76ad._0xb53ae1),_0x501892[_0x4c0648(0x1af)]];const _0x281754=_0x501892;throw new UnsupportedRunKindError(_0x281754[_0x4c0648(_0x4d76ad._0x177099)],this[_0x4c0648(0x1ab)]);}['buildEnv'](_0x1a6b40){const _0x3a7820={_0x33651d:0x1b7},_0x31eec1=_0x94d281,_0x3bcc49={};if(_0x1a6b40['headed'])_0x3bcc49[_0x31eec1(_0x3a7820._0x33651d)]='1';return _0x3bcc49;}[_0x94d281(0x1c6)](){const _0x38994b=_0x94d281;return[_0x38994b(0x17f)];}async['doctor'](_0x250247){return runEnvironmentChecks({'cwd':_0x250247['projectRoot']});}},webRunnerAdapter=new WebRunnerAdapter(),web_runner_adapter_default=webRunnerAdapter;function pickBin(_0x5f0b7f){const _0x580ed1={_0x3b7ce0:0x1b2,_0x2a371c:0x1b0,_0x2e4f19:0x1b2,_0x2435ae:0x1a3,_0x2cfd68:0x1b2},_0x145498=_0x94d281;if(typeof _0x5f0b7f[_0x145498(_0x580ed1._0x3b7ce0)]===_0x145498(_0x580ed1._0x2a371c))return _0x5f0b7f[_0x145498(0x1b2)];if(_0x5f0b7f[_0x145498(0x1b2)]&&typeof _0x5f0b7f[_0x145498(_0x580ed1._0x2e4f19)]==='object')return _0x5f0b7f[_0x145498(0x1b2)]['unotest-web']??Object[_0x145498(_0x580ed1._0x2435ae)](_0x5f0b7f[_0x145498(_0x580ed1._0x2cfd68)])[0x0]??null;return null;}__name(pickBin,_0x94d281(0x19d));export{web_runner_adapter_default as default,webRunnerAdapter};
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};
@@ -427,24 +427,36 @@ Semantics:
427
427
  the `--env` overlay next to the other stand settings:
428
428
  `UNOTEST_JUDGE_MODE=remote` + `UNOTEST_JUDGE_URL` (a running
429
429
  `npx @unotest/judge` service) or `UNOTEST_JUDGE_MODE=local`
430
- (in-process, needs `@unotest/judge` installed). Provider config
431
- `JUDGE_PROVIDER=claude|vertex|gemini|openai|anthropic|fake` +
432
- `JUDGE_MODEL`; `claude` spawns the local Claude Code CLI (`claude -p`,
433
- subscription auth, no API key), `vertex` uses ADC via
430
+ (in-process, needs `@unotest/judge` installed a project that consumes
431
+ unotest through `npx`, with nothing installed locally, can only use
432
+ `remote`). Provider config
433
+ `UNOTEST_JUDGE_PROVIDER=claude|vertex|gemini|openai|anthropic|fake` +
434
+ `UNOTEST_JUDGE_MODEL`; `claude` spawns the local Claude Code CLI
435
+ (`claude -p`, subscription auth, no API key — the path when no cloud
436
+ credentials are at hand), `vertex` uses ADC via
434
437
  `GOOGLE_CLOUD_PROJECT`/`GOOGLE_CLOUD_LOCATION`, the rest take the
435
438
  vendor-standard key vars (`GEMINI_API_KEY`, `OPENAI_API_KEY`,
436
439
  `ANTHROPIC_API_KEY`) — see the `@unotest/judge` README. Unconfigured
437
440
  (`off`) → the step fails with the setup message; a judge assert is
438
441
  never silently skipped.
442
+ - The judged text is the element's **rendered** text (`innerText`): line
443
+ breaks and visual structure survive, hidden subtrees do not — rubrics
444
+ about layout ("a list of three bullets") are judgeable.
445
+ - `UNOTEST_JUDGE_PREAMBLE` is prepended to every rubric in the project —
446
+ the place for standing context ("the app is a support bot, Russian UI")
447
+ that would otherwise be copy-pasted into each rubric.
439
448
  - **Every verdict** (pass and fail) is recorded into the run's
440
449
  `steps.jsonl` as a `judge:verdict` event — rubric, judged text,
441
450
  verdict, reasoning, model — so a red step is explainable without a
442
451
  re-run.
443
452
  - A judge is not deterministic: the judge itself re-asks on `fail`
444
- (`JUDGE_RETRIES`, first `pass` wins); temperature is pinned to 0 where
445
- the backend accepts it (vertex/gemini). The runner's retry layer is
453
+ (`UNOTEST_JUDGE_RETRIES`, first `pass` wins); temperature is pinned to 0
454
+ where the backend accepts it (vertex/gemini). The runner's retry layer is
446
455
  not involved — assertion failures never retry.
447
- - CI without a live LLM: `JUDGE_PROVIDER=fake` a deterministic judge
456
+ - `UNOTEST_JUDGE_VOTE=N` (odd) swaps re-asking for a majority vote of N
457
+ independent calls — symmetric instead of biased toward `pass`. It
458
+ replaces `UNOTEST_JUDGE_RETRIES` rather than stacking with it.
459
+ - CI without a live LLM: `UNOTEST_JUDGE_PROVIDER=fake` — a deterministic judge
448
460
  parsing rubric lines `must contain: <substring>` /
449
461
  `must not contain: <substring>`.
450
462
 
@@ -987,7 +999,10 @@ attribute both read `""`. For those use `isDisabled(loc)` /
987
999
 
988
1000
  ### `getInnerText(loc)` → `string`
989
1001
 
990
- Like `textContent` but trimmed and rendered (display-aware).
1002
+ The element's **rendered** text: line breaks preserved, hidden subtrees
1003
+ (`display:none`, `<script>`/`<style>`) excluded — what a human reads on
1004
+ screen. `textContent(loc)` answers the other question: the raw
1005
+ source-order concatenation, hidden nodes included.
991
1006
 
992
1007
  ### `getInputValue(loc)` → `string`
993
1008
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unotest/web",
3
- "version": "0.23.0",
3
+ "version": "0.24.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/dsl": "^0.23.0",
87
- "@unotest/protocol": "^0.23.0",
88
- "@unotest/grounder-client": "^0.23.0",
89
- "@unotest/viewer": "^0.23.0",
90
- "@unotest/core": "^0.23.0"
86
+ "@unotest/core": "^0.24.0",
87
+ "@unotest/grounder-client": "^0.24.0",
88
+ "@unotest/viewer": "^0.24.0",
89
+ "@unotest/protocol": "^0.24.0",
90
+ "@unotest/dsl": "^0.24.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.23.0",
98
- "@unotest/judge": "^0.23.0"
97
+ "@unotest/judge": "^0.24.0",
98
+ "@unotest/grounder": "^0.24.0"
99
99
  }
100
100
  }