@unotest/web 0.42.0 → 0.43.1
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 +477 -3
- package/README.md +37 -5
- package/dist/config/schema.d.ts +71 -36
- package/dist/config/schema.js +1 -1
- package/dist/driver/index.js +1 -1
- package/dist/dsl/index.d.ts +66 -2
- package/dist/dsl/index.js +1 -1
- package/dist/dsl/web-dsl-language-service.d.ts +1 -1
- package/dist/dsl/web-dsl-language-service.js +1 -1
- package/dist/inspection/page-inject.js +27 -3
- package/dist/{linter-Yf4gPe5J.d.ts → linter-BWSAYBQy.d.ts} +24 -0
- package/dist/mcp/server.js +1 -1
- package/dist/runner/cli.d.ts +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 +124 -7
- package/guides/dsl-reference.md +27 -0
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x34fd25=_0x19ea;(function(_0x5699eb,_0x5cea72){const _0x455389={_0x59f2c9:0xfe,_0xa3e23e:0x133,_0x1d85e1:0x135,_0x5ac0f4:0x116,_0x4ac325:0x157,_0x3fc6e9:0xfc},_0x55226f=_0x19ea,_0x16aac8=_0x5699eb();while(!![]){try{const _0x415a8c=parseInt(_0x55226f(_0x455389._0x59f2c9))/0x1*(-parseInt(_0x55226f(_0x455389._0xa3e23e))/0x2)+parseInt(_0x55226f(_0x455389._0x1d85e1))/0x3+-parseInt(_0x55226f(_0x455389._0x5ac0f4))/0x4+parseInt(_0x55226f(0x14e))/0x5*(-parseInt(_0x55226f(_0x455389._0x4ac325))/0x6)+-parseInt(_0x55226f(0x15e))/0x7+-parseInt(_0x55226f(0x101))/0x8*(parseInt(_0x55226f(0x168))/0x9)+-parseInt(_0x55226f(_0x455389._0x3fc6e9))/0xa*(-parseInt(_0x55226f(0x160))/0xb);if(_0x415a8c===_0x5cea72)break;else _0x16aac8['push'](_0x16aac8['shift']());}catch(_0x361a32){_0x16aac8['push'](_0x16aac8['shift']());}}}(_0x5dde,0x9519c));var __defProp=Object[_0x34fd25(0x16a)],__name=(_0x53d438,_0x2cf12e)=>__defProp(_0x53d438,_0x34fd25(0x118),{'value':_0x2cf12e,'configurable':!![]});import{writeFileSync as _0x540d3d}from'fs';import{join as _0x4e687b}from'path';import{fileURLToPath}from'url';import{readFileSync as _0xcc4691,existsSync as _0x24ccfb}from'fs';import{relative}from'path';import{existsSync,mkdirSync,readFileSync,readdirSync,statSync,writeFileSync}from'fs';function _0x19ea(_0xabceab,_0x321da7){_0xabceab=_0xabceab-0xfc;const _0x5dde38=_0x5dde();let _0x19eacc=_0x5dde38[_0xabceab];if(_0x19ea['bXZtVs']===undefined){var _0x116e4c=function(_0x4955c2){const _0x38b973='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x540d3d='',_0x4e687b='';for(let _0xcc4691=0x0,_0x24ccfb,_0x53d438,_0x2cf12e=0x0;_0x53d438=_0x4955c2['charAt'](_0x2cf12e++);~_0x53d438&&(_0x24ccfb=_0xcc4691%0x4?_0x24ccfb*0x40+_0x53d438:_0x53d438,_0xcc4691++%0x4)?_0x540d3d+=String['fromCharCode'](0xff&_0x24ccfb>>(-0x2*_0xcc4691&0x6)):0x0){_0x53d438=_0x38b973['indexOf'](_0x53d438);}for(let _0x480737=0x0,_0x2b192c=_0x540d3d['length'];_0x480737<_0x2b192c;_0x480737++){_0x4e687b+='%'+('00'+_0x540d3d['charCodeAt'](_0x480737)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4e687b);};_0x19ea['afmGSx']=_0x116e4c,_0x19ea['QJyCCR']={},_0x19ea['bXZtVs']=!![];}const _0x3abcf7=_0x5dde38[0x0],_0x33a7b8=_0xabceab+_0x3abcf7,_0x25ade1=_0x19ea['QJyCCR'][_0x33a7b8];return!_0x25ade1?(_0x19eacc=_0x19ea['afmGSx'](_0x19eacc),_0x19ea['QJyCCR'][_0x33a7b8]=_0x19eacc):_0x19eacc=_0x25ade1,_0x19eacc;}import{join,dirname}from'path';import{artifactsRootFrom,FAILURES_DIR_SEGMENTS,failuresRootFrom}from'@unotest/protocol';function readFailureBundle(_0x480737){const _0x5e447c={_0x252689:0x10e,_0x2442a4:0x164,_0x1eb9a4:0x105,_0x112582:0x139,_0x4282d9:0x104,_0x58c296:0x12f,_0x5685bd:0x136},_0x2b15d1=_0x34fd25;if(!existsSync(_0x480737))return null;const _0x2b192c=join(_0x480737,'failure.json');if(!existsSync(_0x2b192c))return null;const _0x6cd6ab=JSON[_0x2b15d1(0x164)](readFileSync(_0x2b192c,_0x2b15d1(0x11d))),_0x397913=join(_0x480737,_0x2b15d1(0x120)),_0x458ac6=existsSync(_0x397913)?JSON[_0x2b15d1(0x164)](readFileSync(_0x397913,_0x2b15d1(0x11d))):[],_0x56b715=join(_0x480737,_0x2b15d1(_0x5e447c._0x252689)),_0x527c9f=existsSync(_0x56b715)?JSON[_0x2b15d1(_0x5e447c._0x2442a4)](readFileSync(_0x56b715,'utf8')):void 0x0,_0x3b34e9={'trace':_0x6cd6ab,'console':_0x458ac6},_0x36ddd0=join(_0x480737,_0x2b15d1(0x158));existsSync(_0x36ddd0)&&(_0x3b34e9[_0x2b15d1(_0x5e447c._0x1eb9a4)]=JSON[_0x2b15d1(_0x5e447c._0x2442a4)](readFileSync(_0x36ddd0,_0x2b15d1(0x11d))));if(_0x527c9f!==void 0x0)_0x3b34e9[_0x2b15d1(0x14a)]=_0x527c9f;const _0x134a25=join(_0x480737,_0x2b15d1(_0x5e447c._0x112582));if(existsSync(_0x134a25))_0x3b34e9[_0x2b15d1(_0x5e447c._0x4282d9)]=_0x134a25;else{const _0x55f846=join(_0x480737,_0x2b15d1(_0x5e447c._0x58c296));existsSync(_0x55f846)&&(_0x3b34e9[_0x2b15d1(_0x5e447c._0x5685bd)]=readFileSync(_0x55f846,_0x2b15d1(0x11d)));}const _0x406aba=join(_0x480737,_0x2b15d1(0x148));if(existsSync(_0x406aba))_0x3b34e9['harPath']=_0x406aba;const _0x426da0=join(_0x480737,_0x2b15d1(0x123));if(existsSync(_0x426da0))_0x3b34e9['videoPath']=_0x426da0;return _0x3b34e9;}__name(readFailureBundle,_0x34fd25(0xff));function listFailures(_0xa74a2e){const _0xe07a88={_0x6d300a:0x14c,_0x7ce22d:0x156,_0x32cfdd:0x10a},_0xf3ebe3=_0x34fd25;if(!existsSync(_0xa74a2e))return[];const _0x2103bc=[];for(const _0x8abe3 of readdirSync(_0xa74a2e)){const _0x303748=join(_0xa74a2e,_0x8abe3);if(!statSync(_0x303748)['isDirectory']())continue;for(const _0x1e8742 of readdirSync(_0x303748)){const _0x1348b7=join(_0x303748,_0x1e8742);if(!statSync(_0x1348b7)[_0xf3ebe3(0x129)]())continue;const _0x4a10df=join(_0x1348b7,_0xf3ebe3(0x106));if(!existsSync(_0x4a10df))continue;try{const _0x3e0b41=JSON[_0xf3ebe3(0x164)](readFileSync(_0x4a10df,_0xf3ebe3(0x11d)));_0x2103bc[_0xf3ebe3(_0xe07a88._0x6d300a)]({'runId':_0x8abe3,'testFn':_0x3e0b41['testFn'],'scenarioPath':_0x3e0b41[_0xf3ebe3(_0xe07a88._0x7ce22d)],'dir':_0x1348b7,'timestamp':_0x3e0b41['timestamp']});}catch{}}}return _0x2103bc[_0xf3ebe3(_0xe07a88._0x32cfdd)]((_0x1a4c64,_0x159ed3)=>_0x159ed3[_0xf3ebe3(0x150)][_0xf3ebe3(0x103)](_0x1a4c64[_0xf3ebe3(0x150)])),_0x2103bc;}__name(listFailures,_0x34fd25(0x127));function defaultFailuresRoot(_0x3565b9=artifactsRootFrom(process[_0x34fd25(0x115)],process['cwd']()),_0x26fe2c=process[_0x34fd25(0x115)]){return failuresRootFrom(_0x26fe2c,join(_0x3565b9,...FAILURES_DIR_SEGMENTS));}__name(defaultFailuresRoot,_0x34fd25(0x153));function resolveBundleDir(_0x5a8051,_0x530a2e){const _0x22533a={_0x4f2f05:0x129},_0x4d9c1c=_0x34fd25;if(existsSync(_0x5a8051)&&statSync(_0x5a8051)[_0x4d9c1c(_0x22533a._0x4f2f05)]())return _0x5a8051;return join(_0x530a2e,_0x5a8051);}__name(resolveBundleDir,_0x34fd25(0x167));function composeFixPrompt(_0x1413c2,_0x291027={}){const _0x4f531c={_0x2dea6b:0x12a,_0x2211bf:0x11b,_0x280a08:0x156,_0x4f2b18:0x149,_0x5102ae:0x156,_0x721f85:0x13b,_0x47d0e8:0x100,_0x6ba0c4:0x13f,_0x3b5ed5:0x113,_0x42c559:0x12c},_0x2d5eda=_0x34fd25,_0x3d0ca9=_0x291027['failuresRoot']??defaultFailuresRoot(),_0x4aefae=resolveBundleDir(_0x1413c2,_0x3d0ca9),_0x3fe097=readFailureBundle(_0x4aefae);if(!_0x3fe097)throw new Error(_0x2d5eda(0x15c)+_0x1413c2+_0x2d5eda(_0x4f531c._0x2dea6b)+_0x4aefae+')');const _0x375ad5=_0x291027[_0x2d5eda(_0x4f531c._0x2211bf)]??process[_0x2d5eda(_0x4f531c._0x2211bf)](),_0x40ab9e=_0x24ccfb(_0x3fe097[_0x2d5eda(0x149)][_0x2d5eda(_0x4f531c._0x280a08)])?_0xcc4691(_0x3fe097[_0x2d5eda(_0x4f531c._0x4f2b18)][_0x2d5eda(_0x4f531c._0x5102ae)],_0x2d5eda(0x11d)):_0x2d5eda(_0x4f531c._0x721f85),_0x2f50ab=_0x291027[_0x2d5eda(_0x4f531c._0x47d0e8)]??0x19,_0x110ea2=_0x3fe097[_0x2d5eda(0x12c)]['slice'](-_0x2f50ab),{suggestedAction:_0xb27d5e,confidence:_0x2502fb}=classify(_0x3fe097),_0x433ccd=buildPromptMarkdown({'bundle':_0x3fe097,'scenarioSource':_0x40ab9e,'scenarioRelative':relative(_0x375ad5,_0x3fe097[_0x2d5eda(0x149)][_0x2d5eda(0x156)]),'consoleTail':_0x110ea2,'suggestedAction':_0xb27d5e,'confidence':_0x2502fb}),_0x5ef780=Math[_0x2d5eda(_0x4f531c._0x6ba0c4)](_0x433ccd[_0x2d5eda(_0x4f531c._0x3b5ed5)]/0x4);return{'promptMarkdown':_0x433ccd,'suggestedAction':_0xb27d5e,'confidence':_0x2502fb,'sources':{'bundleDir':_0x4aefae,'scenarioPath':_0x3fe097[_0x2d5eda(_0x4f531c._0x4f2b18)]['scenarioPath'],'consoleEntries':_0x3fe097[_0x2d5eda(_0x4f531c._0x42c559)][_0x2d5eda(0x113)],'hasSnapshot':!!_0x3fe097[_0x2d5eda(0x14a)]},'approxTokens':_0x5ef780};}__name(composeFixPrompt,_0x34fd25(0x11e));function classify(_0x2a2403){const _0x4e3978={_0x29cde4:0x149,_0x35cc64:0x112,_0x4b1156:0x144,_0x3b1da6:0x161,_0x16f97e:0x107,_0x380499:0x15a,_0x17fe87:0x119,_0x23aced:0x121,_0x590bfa:0x13a,_0x16f715:0x155},_0x217f9a=_0x34fd25,_0x49c11e=_0x2a2403[_0x217f9a(_0x4e3978._0x29cde4)][_0x217f9a(0x161)][_0x217f9a(_0x4e3978._0x35cc64)][_0x217f9a(_0x4e3978._0x4b1156)](),_0x353d7d=_0x2a2403[_0x217f9a(_0x4e3978._0x29cde4)][_0x217f9a(_0x4e3978._0x3b1da6)]['name']??'';let _0x3ed020='unknown',_0x467de7=_0x217f9a(0x16d);if(_0x353d7d===_0x217f9a(_0x4e3978._0x16f97e)||/not found|no element|strict mode|resolved to \d+ elements|nothing matched/i['test'](_0x49c11e))_0x3ed020=_0x217f9a(_0x4e3978._0x380499),_0x467de7=_0x353d7d==='LocatorError'?_0x217f9a(0x151):_0x217f9a(0x13a);else{if(_0x353d7d==='TimeoutError'||/timeout|waiting for/i[_0x217f9a(0x125)](_0x49c11e))_0x3ed020=_0x217f9a(_0x4e3978._0x17fe87),_0x467de7=_0x353d7d===_0x217f9a(_0x4e3978._0x23aced)?_0x217f9a(0x151):_0x217f9a(_0x4e3978._0x590bfa);else(_0x353d7d===_0x217f9a(_0x4e3978._0x16f715)||/asserttext|assertvisible|expected.*got/i['test'](_0x49c11e))&&(_0x3ed020=_0x217f9a(0x10b),_0x467de7=_0x353d7d===_0x217f9a(0x155)?_0x217f9a(0x151):_0x217f9a(0x13a));}return{'suggestedAction':_0x3ed020,'confidence':_0x467de7};}__name(classify,'classify');function buildPromptMarkdown(_0x34cc79){const _0xe4f745={_0x39ed14:0x16f,_0x17d3ea:0x113,_0x394e8d:0x146,_0x450301:0x16f,_0x242a34:0x140,_0x56b139:0x14a,_0x54bae5:0xfd,_0x5cdefb:0x142,_0x2e54e2:0x130,_0x338ce9:0x122,_0x3d8ff2:0x149,_0x5324b2:0x13d,_0x105d28:0x16c,_0x1fcee5:0x11f,_0x4ab613:0x14d,_0x44f2d7:0x161,_0x2b61f9:0x11c,_0x33a527:0x131,_0x3fbce6:0x161,_0x146456:0x12d},_0x3b2fbd=_0x34fd25,{bundle:_0x2f8f2e,scenarioSource:_0x4d0549,scenarioRelative:_0x3d247d,consoleTail:_0x1647d7,suggestedAction:_0x16884e,confidence:_0x11f0b3}=_0x34cc79,_0x76982=_0x4d0549['split']('\x0a')[_0x3b2fbd(0x146)]((_0x121f29,_0x27d191)=>String(_0x27d191+0x1)[_0x3b2fbd(0x13c)](0x3,'\x20')+'\x20\x20'+_0x121f29)[_0x3b2fbd(_0xe4f745._0x39ed14)]('\x0a'),_0x250878=_0x1647d7[_0x3b2fbd(_0xe4f745._0x17d3ea)]===0x0?_0x3b2fbd(0x10c):_0x1647d7[_0x3b2fbd(_0xe4f745._0x394e8d)](_0x154b63=>'['+_0x154b63[_0x3b2fbd(0x150)]+']\x20'+_0x154b63[_0x3b2fbd(0x128)][_0x3b2fbd(0x159)]()+':\x20'+_0x154b63[_0x3b2fbd(0x147)])[_0x3b2fbd(_0xe4f745._0x450301)]('\x0a'),_0x49d39f=_0x2f8f2e['snapshot']?_0x3b2fbd(_0xe4f745._0x242a34)+_0x2f8f2e['snapshot'][_0x3b2fbd(0x16e)]+'\x0aCaptured:\x20'+_0x2f8f2e[_0x3b2fbd(_0xe4f745._0x56b139)][_0x3b2fbd(_0xe4f745._0x54bae5)]+_0x3b2fbd(0x12b):'_(no\x20semantic-dom\x20snapshot\x20captured\x20for\x20this\x20failure)_';return _0x3b2fbd(_0xe4f745._0x5cdefb)+_0x2f8f2e[_0x3b2fbd(0x149)][_0x3b2fbd(_0xe4f745._0x2e54e2)]+_0x3b2fbd(_0xe4f745._0x338ce9)+_0x3d247d+_0x3b2fbd(0x162)+(_0x2f8f2e[_0x3b2fbd(_0xe4f745._0x3d8ff2)][_0x3b2fbd(_0xe4f745._0x5324b2)]??'?')+_0x3b2fbd(0x165)+_0x2f8f2e[_0x3b2fbd(0x149)][_0x3b2fbd(_0xe4f745._0x105d28)]+_0x3b2fbd(_0xe4f745._0x1fcee5)+_0x2f8f2e[_0x3b2fbd(0x149)]['col']+_0x3b2fbd(_0xe4f745._0x4ab613)+(_0x2f8f2e['trace'][_0x3b2fbd(_0xe4f745._0x44f2d7)][_0x3b2fbd(0x118)]??_0x3b2fbd(_0xe4f745._0x2b61f9))+'`\x20—\x20'+_0x2f8f2e['trace'][_0x3b2fbd(0x161)]['message']+'\x0a-\x20**Suggested\x20action**:\x20`'+_0x16884e+'`\x20(confidence:\x20'+_0x11f0b3+_0x3b2fbd(_0xe4f745._0x33a527)+(_0x2f8f2e[_0x3b2fbd(0x149)][_0x3b2fbd(_0xe4f745._0x3fbce6)][_0x3b2fbd(0x12d)]?_0x3b2fbd(0x14f)+_0x2f8f2e[_0x3b2fbd(0x149)][_0x3b2fbd(_0xe4f745._0x44f2d7)][_0x3b2fbd(_0xe4f745._0x146456)]+_0x3b2fbd(0x111):'')+_0x3b2fbd(0x132)+_0x76982+_0x3b2fbd(0x13e)+_0x250878+_0x3b2fbd(0x16b)+_0x49d39f+_0x3b2fbd(0x126);}__name(buildPromptMarkdown,_0x34fd25(0x15d));function _0x5dde(){const _0x24fe44=['DgvZDezU','kqOk','cGOJiYbty2vUyxjPBYbZB3vYy2uGkgXPBMuTBNvTyMvYzwqPcGPGygbQCWO','mNnfs1nfqW','D3jPDgu','mta5odu2n3LkDM1AEG','C2nYzwvUC2HVDevYCM9Y','ChjVBxb0twfYA2rVD24','icbJB25MAwrLBMnLpq','C2nYzwvUC2HVDc5WBMC','BwvKAxvT','phnJzw5HCMLVigzPBguGBM8GBg9Uz2vYig9UigrPC2S+','CgfKu3rHCNq','C3rLCeLUzgv4','cMbGyaOkiYmGtgfZDcbJB25ZB2XLigvUDhjPzxmkcMbGyaO','y2vPBa','vvjmoIa','C3vNz2vZDgvKqwn0Aw9U','iYbuzxn0igzPEcbYzxf1zxn0cGOJiYbgywLSDxjLignVBNrLEhqkcI0GkIPuzxn0kIO6iga','ChjLCgfYzs1MAxG6ig5VihrLC3rjzcbWCM92AwrLzcbHBMqGBM8GzMfPBgLUzYb0zxn0CYbMB3vUzc4k','Dg9mB3DLCKnHC2u','C3rHCNrZv2L0Aa','BwfW','Dgv4Da','AgfYlMPZB24','DhjHy2u','C25HChnOB3q','yxbWCM94vg9Rzw5Z','ChvZAa','cI0GkIPfCNjVCIOQoIbG','mtq5mZC4nvflthjIrq','iYmJifn0ywnRcMbGyaO','DgLTzxn0yw1W','AgLNAa','C3rKzxjY','zgvMyxvSDezHAwX1CMvZuM9VDa','icdINjmG','qxnZzxj0Aw9UrxjYB3i','C2nLBMfYAw9qyxrO','mtH0CKrmC0O','BMv0D29YAY5QC29U','Dg9vChbLCKnHC2u','CMv3CML0zs1ZzwXLy3rVCG','ChjLCgfYzs1MAxG6ig5VigzHAwX1CMuGyNvUzgXLCYbMB3vUzcb1BMrLCIaUDw5VDgvZDc9MywLSDxjLCY8Uifj1BIbHigzHAwXPBMCGDgvZDcbMAxjZDdSGDgHLigj1BMrSzsbPCYb3CML0DgvUigf1Dg9TyxrPy2fSBhKUcG','zMfPBhvYzsbIDw5KBguGBM90igzVDw5KigzVCIb0zxn0swq9iG','yNvPBgrqCM9TChrnyxjRzg93BG','mJK5mtm4Dwrtt2fr','ls1MywLSAw5N','mtiWmJnYuuzYAuS','zxjYB3i','yaOTicOQu3rLCcbPBMrLEcOQoIa','yxjNDG','CgfYC2u','cI0GkIPmB2nHDgLVBIOQoIbSAw5Lia','DMfSDwvZ','CMvZB2X2zuj1BMrSzurPCG','nZi5z1PzyMPy','B3v0','zgvMAw5LuhjVCgvYDhK','cMbGyaOkiYmGu2vTyw50AwmTre9nihnUyxbZAg90cGO','BgLUzq','Bg93','DxjS','AM9PBG','mZaWntbqBNbnsLi','y2fWDhvYzwrbDa','mJm1mZbSCM5duvO','CMvHzezHAwX1CMvcDw5KBgu','y29UC29SzuXPBwL0','odu4ntzgyvrzv1O','icaGicaGC3vNz2vZDgvKqwn0Aw9Upq','Bg9JywXLq29TCgfYzq','C2nYzwvUC2HVDfbHDgG','BMv0D29YAW','zMfPBhvYzs5QC29U','tg9JyxrVCKvYCM9Y','C2XPy2u','C2v0','C29YDa','y2HHBMDLlwfZC2vYDgLVBG','xYHUBYbJB25ZB2XLigvUDhjPzxmGy2fWDhvYzwqPxW','zxjY','C25HChnOB3qUANnVBG','yNvUzgXLrgLY','CNvUswq','cMbGyaO','BwvZC2fNzq','BgvUz3rO','zMLSDgvY','zw52','ndGZmJq0nhjqqMToAG','CNvUuhjLCgfYzuzPEa','BMfTzq','ywrKlxDHAxrMB3i','ihrLC3qOCYKGkeqTmJuPcGO','y3DK','rxjYB3i','DxrMoa','y29TCg9ZzuzPEfbYB21WDa','lcbJB2WG','y29UC29Szs5QC29U','vgLTzw91DevYCM9Y','ycbPBIbG','DMLKzw8UD2vIBq','icaGicaG','DgvZDa','cGOJiYbxAgf0ihDLig5LzwqkcLbYB2r1y2uGysaQkNvUAwzPzwqGzgLMzIOQihrOyxqGzML4zxmGDgHLihrLC3qUienVBNn0CMfPBNrZoGOkms4Gs2vLCcb0AguGC2fTzsb0zxn0xYOOksbMDw5JDgLVBIbUyw1LigfUzcb0AguGC2fTzsbVDMvYywXSigzSB3CG4OcuignOyw5Nzsb0AgukicaGBwLUAw11BsbYzxf1AxjLzcb0BYbTywTLihrOzsbMywLSAw5Nihn0zxaGC3vJy2vLzc4kmI4GuhjLzMvYihrOzsbeltiYihnLBgvJDg9YigHPzxjHCMnOEtOGygDLDej5vgvZDeLKycdIHPiGygDLDej5uM9SzsH7BMfTzx0PyaOGicdIHPiGygDLDej5tgfIzwXGiokgKIbGz2v0qNLuzxH0ycdIHPiGygXVy2f0B3iOy3nZkwaGkgXHC3qGCMvZB3j0ks4kmY4GswyGywrKAw5NigeGD2fPDcWGChjLzMvYigb3ywL0rM9YkgXVyYLGic8GyhDHAxrgB3jvCMWOCgf0DgvYBILGig92zxiGyhbHDxnLkg1ZkwaUcJqUie5VigLTCg9YDhmG4OcuierttcbMDw5JDgLVBNmGCMvZB2X2zsb0AhjVDwDOihrOzsbYDw50Aw1LihjLz2LZDhj5igj5ig5HBwuUcJuUie5VigbHC3LUy2aVygf3ywL0ycdIGjqGDgHLigv4zwn1Dg9YigHHBMrSzxmGyxn5BMmGAw50zxjUywXSEs4knI4Gt3v0Chv0ie9otfKGDgHLihvUAwzPzwqGzgLMzIbIzxr3zwvUigzLBMnLCYbGygbKAwzMiokaPIbGygaUifrOzsb1C2vYcIaGihjLDMLLD3mGkYbHChbSAwvZigL0ig1HBNvHBgX5icHelti1iokaLcb3zsbUzxzLCIbHDxrVlwfWCgX5ks4k','BgLZDezHAwX1CMvZ','Bgv2zwW','AxneAxjLy3rVCNK','iIaOBg9VA2vKigLUia','cLjLz2LVBNm6ihnLzsbZBMfWC2HVDc5QC29UigLUihrOzsbIDw5KBguGzgLYicHYzwfKihzPysbGz2v0x2zHAwX1CMvFyteXEwaPlG','y29UC29Szq','C3rHy2S','icdINjCG','C2nYzwvUC2HVDc1LCNjVCI50Ehq'];_0x5dde=function(){return _0x24fe44;};return _0x5dde();}function runPrepareFix(_0x186ae2,_0x4486db={}){const _0x34150f={_0xc0bad7:0x169,_0x17f0bf:0x152,_0x4de722:0x11b,_0x16f8d9:0x114,_0xf49c05:0x113,_0x4e8b02:0x134,_0x2caa0d:0x143,_0x4de034:0x113,_0x39d38b:0x11a,_0x4b711d:0x10f,_0x54afbe:0x137,_0x567e25:0x124,_0x4b8fa0:0x141},_0x23f1d0=_0x34fd25,_0x56075a=_0x4486db[_0x23f1d0(_0x34150f._0xc0bad7)]??process['stdout'],_0x5b8948=_0x4486db[_0x23f1d0(0x10d)]??process[_0x23f1d0(_0x34150f._0x17f0bf)],_0x10aed4=_0x4486db[_0x23f1d0(_0x34150f._0x4de722)]??process['cwd'](),_0x3d70c5=_0x186ae2['includes'](_0x23f1d0(0x15f));let _0x52df7a=_0x186ae2[_0x23f1d0(_0x34150f._0x16f8d9)](_0x3fe0a9=>!_0x3fe0a9[_0x23f1d0(0x145)]('-'));if(_0x3d70c5||_0x52df7a[_0x23f1d0(_0x34150f._0xf49c05)]===0x0){const _0x1f7948=listFailures(defaultFailuresRoot(_0x10aed4));if(_0x1f7948['length']===0x0)return _0x5b8948[_0x23f1d0(_0x34150f._0x4e8b02)](_0x23f1d0(0x15b)),0x1;if(_0x52df7a[_0x23f1d0(0x113)]===0x0){const _0x20dc18=new Map();for(const _0x1190d9 of _0x1f7948){if(!_0x20dc18['has'](_0x1190d9['testFn']))_0x20dc18[_0x23f1d0(0x109)](_0x1190d9['testFn'],_0x1190d9);}_0x52df7a=[..._0x20dc18[_0x23f1d0(0x166)]()][_0x23f1d0(0x146)](_0x163071=>_0x163071[_0x23f1d0(0x110)]+'/'+_0x163071['testFn']);}}if(_0x52df7a['length']===0x0)return _0x5b8948[_0x23f1d0(_0x34150f._0x4e8b02)](_0x23f1d0(_0x34150f._0x2caa0d)),0x1;_0x56075a[_0x23f1d0(_0x34150f._0x4e8b02)]('prepare-fix:\x20composing\x20fix\x20prompts\x20for\x20'+_0x52df7a[_0x23f1d0(_0x34150f._0x4de034)]+_0x23f1d0(_0x34150f._0x39d38b));const _0x135f9a=defaultFailuresRoot(_0x10aed4);for(const _0x72b291 of _0x52df7a){try{const _0x11402c=composeFixPrompt(_0x72b291,{'cwd':_0x10aed4,'failuresRoot':_0x135f9a}),_0x253be0=_0x4e687b(_0x11402c['sources'][_0x23f1d0(_0x34150f._0x4b711d)],'fix-prompt.md');_0x540d3d(_0x253be0,_0x11402c[_0x23f1d0(_0x34150f._0x54afbe)]),_0x56075a[_0x23f1d0(_0x34150f._0x4e8b02)](_0x23f1d0(0x154)+_0x72b291+'\x0a'),_0x56075a[_0x23f1d0(0x134)](_0x23f1d0(_0x34150f._0x567e25)+_0x253be0+'\x0a'),_0x56075a[_0x23f1d0(0x134)](_0x23f1d0(0x102)+_0x11402c[_0x23f1d0(_0x34150f._0x4b8fa0)]+_0x23f1d0(0x138)+_0x11402c['confidence']+'\x20\x20~'+_0x11402c[_0x23f1d0(0x14b)]+'t\x0a');}catch(_0x930dad){_0x5b8948[_0x23f1d0(0x134)](_0x23f1d0(0x12e)+_0x72b291+':\x20'+(_0x930dad instanceof Error?_0x930dad['message']:String(_0x930dad))+'\x0a');}}return _0x56075a[_0x23f1d0(_0x34150f._0x4e8b02)]('\x0aNext:\x20paste\x20each\x20fix-prompt.md\x20into\x20your\x20LLM\x20client\x20(Claude\x20Code\x20/\x0aCursor\x20/\x20etc.).\x20The\x20LLM\x20returns\x20a\x20unified\x20diff;\x20review\x20it\x20and\x20apply\x0amanually.\x20We\x20never\x20auto-apply\x20(D-25).\x0a'),0x0;}__name(runPrepareFix,_0x34fd25(0x117));var invokedDirectly=process['argv'][0x1]&&fileURLToPath(import.meta.url)===process[_0x34fd25(0x163)][0x1];if(invokedDirectly){const code=runPrepareFix(process[_0x34fd25(0x163)][_0x34fd25(0x108)](0x2));process['exit'](code);}export{runPrepareFix};
|
|
1
|
+
const _0x58f09d=_0x5e39;(function(_0x559543,_0x4ce6ea){const _0x4c1de4={_0x4060b3:0xc2,_0x176cf1:0xde,_0x16d374:0xc5,_0xa070db:0xe9},_0x4a06ce=_0x5e39,_0x169d65=_0x559543();while(!![]){try{const _0x3afd37=parseInt(_0x4a06ce(_0x4c1de4._0x4060b3))/0x1+parseInt(_0x4a06ce(0xe4))/0x2+parseInt(_0x4a06ce(_0x4c1de4._0x176cf1))/0x3*(parseInt(_0x4a06ce(_0x4c1de4._0x16d374))/0x4)+parseInt(_0x4a06ce(0xf9))/0x5*(parseInt(_0x4a06ce(_0x4c1de4._0xa070db))/0x6)+parseInt(_0x4a06ce(0xd5))/0x7*(-parseInt(_0x4a06ce(0x107))/0x8)+-parseInt(_0x4a06ce(0x100))/0x9+-parseInt(_0x4a06ce(0xe1))/0xa;if(_0x3afd37===_0x4ce6ea)break;else _0x169d65['push'](_0x169d65['shift']());}catch(_0x841c6d){_0x169d65['push'](_0x169d65['shift']());}}}(_0xbe78,0x4a70b));var __defProp=Object[_0x58f09d(0xff)],__name=(_0x1a73c6,_0x466edf)=>__defProp(_0x1a73c6,_0x58f09d(0xb7),{'value':_0x466edf,'configurable':!![]});import{writeFileSync as _0x555e64}from'fs';import{join as _0x2aa3a2}from'path';import{fileURLToPath}from'url';import{readFileSync as _0x3cc77f,existsSync as _0x44e93e}from'fs';import{relative}from'path';import{existsSync,mkdirSync,readFileSync,readdirSync,statSync,writeFileSync}from'fs';import{join,dirname}from'path';import{artifactsRootFrom,FAILURES_DIR_SEGMENTS,failuresRootFrom}from'@unotest/protocol';function _0xbe78(){const _0x30ad45=['icdINjmG','ChjLCgfYzs1MAxG6ig5VigzHAwX1CMuGyNvUzgXLCYbMB3vUzcb1BMrLCIaUDw5VDgvZDc9MywLSDxjLCY8Uifj1BIbHigzHAwXPBMCGDgvZDcbMAxjZDdSGDgHLigj1BMrSzsbPCYb3CML0DgvUigf1Dg9TyxrPy2fSBhKUcG','zMfPBhvYzsbIDw5KBguGBM90igzVDw5KigzVCIb0zxn0swq9iG','Dg9vChbLCKnHC2u','DMLKzw8UD2vIBq','cLjLz2LVBNm6ihnLzsbZBMfWC2HVDc5QC29UigLUihrOzsbIDw5KBguGzgLYicHYzwfKihzPysbGz2v0x2zHAwX1CMvFyteXEwaPlG','zxHPDa','C25HChnOB3qUANnVBG','m2DxwwLQAG','BwfW','zgvMyxvSDezHAwX1CMvZuM9VDa','mtq4nJKYmePWyvDPza','y29UC29Szs5QC29U','C3rHy2S','mtaWmJu5mgLvq05YzG','DxrMoa','D3jPDgu','CNvUu3rHDgu','Dg9mB3DLCKnHC2u','mJm1mta0sxPwC2Xt','C3rHCNrZv2L0Aa','C2nLBMfYAw9qyxrO','zMfPBhvYzs5QC29U','AxneAxjLy3rVCNK','BgLZDezHAwX1CMvZ','BwvKAxvT','yxjNDG','AgfZ','iYmJifn0ywnRcMbGyaO','yaOTicOQu3rLCcbPBMrLEcOQoIa','Dgv4Da','AgLNAa','kqOk','cGOJiYbxAgf0ihDLig5LzwqkcLbYB2r1y2uGysaQkNvUAwzPzwqGzgLMzIOQihrOyxqGzML4zxmGDgHLihrLC3qUienVBNn0CMfPBNrZoGOkms4Gs2vLCcb0AguGC2fTzsb0zxn0xYOOksbMDw5JDgLVBIbUyw1LigfUzcb0AguGC2fTzsbVDMvYywXSigzSB3CG4OcuignOyw5Nzsb0AgukicaGBwLUAw11BsbYzxf1AxjLzcb0BYbTywTLihrOzsbMywLSAw5Nihn0zxaGC3vJy2vLzc4kmI4GuhjLzMvYihrOzsbeltiYihnLBgvJDg9YigHPzxjHCMnOEtOGygDLDej5vgvZDeLKycdIHPiGygDLDej5uM9SzsH7BMfTzx0PyaOGicdIHPiGygDLDej5tgfIzwXGiokgKIbGz2v0qNLuzxH0ycdIHPiGygXVy2f0B3iOy3nZkwaGkgXHC3qGCMvZB3j0ks4kmY4GswyGywrKAw5NigeGD2fPDcWGChjLzMvYigb3ywL0rM9YkgXVyYLGic8GyhDHAxrgB3jvCMWOCgf0DgvYBILGig92zxiGyhbHDxnLkg1ZkwaUcJqUie5VigLTCg9YDhmG4OcuierttcbMDw5JDgLVBNmGCMvZB2X2zsb0AhjVDwDOihrOzsbYDw50Aw1LihjLz2LZDhj5igj5ig5HBwuUcJuUie5VigbHC3LUy2aVygf3ywL0ycdIGjqGDgHLigv4zwn1Dg9YigHHBMrSzxmGyxn5BMmGAw50zxjUywXSEs4knI4Gt3v0Chv0ie9otfKGDgHLihvUAwzPzwqGzgLMzIbIzxr3zwvUigzLBMnLCYbGygbKAwzMiokaPIbGygaUifrOzsb1C2vYcIaGihjLDMLLD3mGkYbHChbSAwvZigL0ig1HBNvHBgX5icHelti1iokaLcb3zsbUzxzLCIbHDxrVlwfWCgX5ks4k','yNvPBgrqCM9TChrnyxjRzg93BG','mJv4CvLJtgG','DhjHy2u','y2vPBa','iIaOBg9VA2vKigLUia','icaGicaG','DgLTzxn0yw1W','zgvMAw5LuhjVCgvYDhK','mZC3mZi5nxLjwMDrsG','vgLTzw91DevYCM9Y','zMfPBhvYzxnsB290','phnJzw5HCMLVigzPBguGBM8GBg9Uz2vYig9UigrPC2S+','yxbWCM94vg9Rzw5Z','ChjLCgfYzs1MAxG6ig5VihrLC3rjzcbWCM92AwrLzcbHBMqGBM8GzMfPBgLUzYb0zxn0CYbMB3vUzc4k','CgfYC2u','odHmEvPgtw4','ycaOy29UzMLKzw5JztOG','C2XPy2u','ChjVBxb0twfYA2rVD24','ycdIGjqG','lcbJB2WG','vvjmoIa','C2nYzwvUC2HVDc1LCNjVCI50Ehq','AM9PBG','tg9JyxrVCKvYCM9Y','ihrLC3qOCYKGkeqTmJuPcGO','C25HChnOB3q','Bgv2zwW','cI0GkIPfCNjVCIOQoIbG','zMLSDgvY','rxjYB3i','zw52','cGOJiYbty2vUyxjPBYbZB3vYy2uGkgXPBMuTBNvTyMvYzwqPcGPGygbQCWO','ChjLCgfYzs1MAxG6ignVBxbVC2LUzYbMAxGGChjVBxb0CYbMB3iG','cMbGyaOkiYmGu2vTyw50AwmTre9nihnUyxbZAg90cGO','DMLKzw9qyxrO','y29UC29SzuXPBwL0','DgvZDa','cK5LEhq6ihbHC3rLigvHy2GGzML4lxbYB21WDc5TzcbPBNrVihLVDxiGteXnignSAwvUDcaOq2XHDwrLienVzguGlWPdDxjZB3iGlYbLDgmUks4GvgHLieXmtsbYzxr1CM5ZigeGDw5PzMLLzcbKAwzMoYbYzxzPzxCGAxqGyw5KigfWCgX5cM1HBNvHBgX5lIbxzsbUzxzLCIbHDxrVlwfWCgX5icHelti1ks4k','icdINjCG','y29UC29Szq','BMfTzq','BwvZC2fNzq','C2nYzwvUC2HVDevYCM9Y','ywrKlxDHAxrMB3i','AgfYlMPZB24','xYHUBYbZzw1HBNrPyY1KB20GC25HChnOB3qGy2fWDhvYzwqGzM9YihrOAxmGzMfPBhvYzsLF','DgvZDezU','y2XHC3nPzNK','CgfKu3rHCNq','DMfSDwvZ','B3v0','ndG3mtqYAwfxEfbh','y2fWDhvYzwrbDa','cI0GkIPmB2nHDgLVBIOQoIbSAw5Lia','mZe1mdy0vhzKC3PI','BgvUz3rO','zxjYB3i','CMvHzezHAwX1CMvcDw5KBgu','y3DK','AgfYugf0Aa','ChvZAa','C29YDa','icaGicaGC3vNz2vZDgvKqwn0Aw9Upq','C3rLCeLUzgv4','DxjS','C2nYzwvUC2HVDc5WBMC','Aw5JBhvKzxm','y29UzMLKzw5Jzq','iYbuzxn0igzPEcbYzxf1zxn0cGOJiYbgywLSDxjLignVBNrLEhqkcI0GkIPuzxn0kIO6iga','cKnHChr1CMvKoIa','mJq4mZuZwMzkC0jN'];_0xbe78=function(){return _0x30ad45;};return _0xbe78();}function readFailureBundle(_0x4e5e2b){const _0x3e34cd={_0x39d4e7:0xe5,_0x323eb7:0x112,_0x591d51:0xb9,_0x9964da:0xe5,_0x19a79b:0x11b},_0x39504e=_0x58f09d;if(!existsSync(_0x4e5e2b))return null;const _0x40cd60=join(_0x4e5e2b,'failure.json');if(!existsSync(_0x40cd60))return null;const _0x4916f4=JSON['parse'](readFileSync(_0x40cd60,_0x39504e(0xe5))),_0x26643f=join(_0x4e5e2b,_0x39504e(0xe2)),_0x43465b=existsSync(_0x26643f)?JSON[_0x39504e(0x106)](readFileSync(_0x26643f,_0x39504e(_0x3e34cd._0x39d4e7))):[],_0xe1e45d=join(_0x4e5e2b,_0x39504e(0xdd)),_0x5212ec=existsSync(_0xe1e45d)?JSON['parse'](readFileSync(_0xe1e45d,'utf8')):void 0x0,_0x83df8b={'trace':_0x4916f4,'console':_0x43465b},_0x38727c=join(_0x4e5e2b,'network.json');existsSync(_0x38727c)&&(_0x83df8b['network']=JSON[_0x39504e(0x106)](readFileSync(_0x38727c,_0x39504e(0xe5))));if(_0x5212ec!==void 0x0)_0x83df8b[_0x39504e(_0x3e34cd._0x323eb7)]=_0x5212ec;const _0x2135a2=join(_0x4e5e2b,_0x39504e(0xd0));if(existsSync(_0x2135a2))_0x83df8b['screenshotPath']=_0x2135a2;else{const _0x46dbdb=join(_0x4e5e2b,_0x39504e(0x10e));existsSync(_0x46dbdb)&&(_0x83df8b[_0x39504e(_0x3e34cd._0x591d51)]=readFileSync(_0x46dbdb,_0x39504e(_0x3e34cd._0x9964da)));}const _0x4d314c=join(_0x4e5e2b,_0x39504e(0xbb));if(existsSync(_0x4d314c))_0x83df8b[_0x39504e(0xca)]=_0x4d314c;const _0x3b81a5=join(_0x4e5e2b,_0x39504e(0xda));if(existsSync(_0x3b81a5))_0x83df8b[_0x39504e(_0x3e34cd._0x19a79b)]=_0x3b81a5;return _0x83df8b;}__name(readFailureBundle,_0x58f09d(0xc8));function listFailures(_0x5c4842){const _0x5b7d96={_0x5d2430:0xed,_0xa35453:0xed,_0x3bd1e0:0xec,_0x2b57e6:0x106,_0x13fb63:0xcb,_0x423892:0xeb},_0x20dd5c=_0x58f09d;if(!existsSync(_0x5c4842))return[];const _0x3602a4=[];for(const _0x419265 of readdirSync(_0x5c4842)){const _0x555dbd=join(_0x5c4842,_0x419265);if(!statSync(_0x555dbd)[_0x20dd5c(_0x5b7d96._0x5d2430)]())continue;for(const _0x5dd1f0 of readdirSync(_0x555dbd)){const _0xdb55a1=join(_0x555dbd,_0x5dd1f0);if(!statSync(_0xdb55a1)[_0x20dd5c(_0x5b7d96._0xa35453)]())continue;const _0x5611d6=join(_0xdb55a1,_0x20dd5c(_0x5b7d96._0x3bd1e0));if(!existsSync(_0x5611d6))continue;try{const _0x46b18c=JSON[_0x20dd5c(_0x5b7d96._0x2b57e6)](readFileSync(_0x5611d6,_0x20dd5c(0xe5)));_0x3602a4[_0x20dd5c(_0x5b7d96._0x13fb63)]({'runId':_0x419265,'testFn':_0x46b18c['testFn'],'scenarioPath':_0x46b18c[_0x20dd5c(_0x5b7d96._0x423892)],'dir':_0xdb55a1,'timestamp':_0x46b18c['timestamp'],'runState':_0x46b18c[_0x20dd5c(0xe7)]??'finished'});}catch{}}}return _0x3602a4[_0x20dd5c(0xcc)]((_0xb6581c,_0x5cd7cf)=>_0x5cd7cf[_0x20dd5c(0xfe)]['localeCompare'](_0xb6581c['timestamp'])),_0x3602a4;}__name(listFailures,_0x58f09d(0xee));function defaultFailuresRoot(_0xd6a421=artifactsRootFrom(process[_0x58f09d(0x117)],process[_0x58f09d(0xc9)]()),_0x2699fc=process[_0x58f09d(0x117)]){return failuresRootFrom(_0x2699fc,join(_0xd6a421,...FAILURES_DIR_SEGMENTS));}__name(defaultFailuresRoot,_0x58f09d(0xe0));function resolveBundleDir(_0xc31ae7,_0x3a750d){if(existsSync(_0xc31ae7)&&statSync(_0xc31ae7)['isDirectory']())return _0xc31ae7;return join(_0x3a750d,_0xc31ae7);}__name(resolveBundleDir,'resolveBundleDir');function composeFixPrompt(_0x5e3b9e,_0x3736c1={}){const _0x5aebfe={_0x3341e3:0xc9,_0x42a807:0xfa,_0x178866:0xeb,_0x3ed3a2:0x120,_0x3de90d:0x109,_0x231e15:0xfb,_0x1278b2:0xc6},_0x479ac7=_0x58f09d,_0x722f75=_0x3736c1[_0x479ac7(0x102)]??defaultFailuresRoot(),_0x50ef36=resolveBundleDir(_0x5e3b9e,_0x722f75),_0x16d194=readFailureBundle(_0x50ef36);if(!_0x16d194)throw new Error(_0x479ac7(0xd8)+_0x5e3b9e+_0x479ac7(0xfc)+_0x50ef36+')');const _0x5f19f6=_0x3736c1[_0x479ac7(0xc9)]??process[_0x479ac7(_0x5aebfe._0x3341e3)](),_0x231812=_0x44e93e(_0x16d194[_0x479ac7(_0x5aebfe._0x42a807)][_0x479ac7(_0x5aebfe._0x178866)])?_0x3cc77f(_0x16d194['trace'][_0x479ac7(_0x5aebfe._0x178866)],_0x479ac7(0xe5)):_0x479ac7(0x103),_0x49509c=_0x3736c1[_0x479ac7(0x11c)]??0x19,_0x1267b4=_0x16d194[_0x479ac7(_0x5aebfe._0x3ed3a2)][_0x479ac7(_0x5aebfe._0x3de90d)](-_0x49509c),{suggestedAction:_0x560218,confidence:_0x127a23}=classify(_0x16d194),_0x522454=buildPromptMarkdown({'bundle':_0x16d194,'scenarioSource':_0x231812,'scenarioRelative':relative(_0x5f19f6,_0x16d194['trace'][_0x479ac7(0xeb)]),'consoleTail':_0x1267b4,'suggestedAction':_0x560218,'confidence':_0x127a23}),_0x457364=Math[_0x479ac7(_0x5aebfe._0x231e15)](_0x522454[_0x479ac7(_0x5aebfe._0x1278b2)]/0x4);return{'promptMarkdown':_0x522454,'suggestedAction':_0x560218,'confidence':_0x127a23,'sources':{'bundleDir':_0x50ef36,'scenarioPath':_0x16d194['trace'][_0x479ac7(_0x5aebfe._0x178866)],'consoleEntries':_0x16d194[_0x479ac7(0x120)]['length'],'hasSnapshot':!!_0x16d194[_0x479ac7(0x112)]},'approxTokens':_0x457364};}function _0x5e39(_0x2b332b,_0x569aaf){_0x2b332b=_0x2b332b-0xb7;const _0xbe7806=_0xbe78();let _0x5e3949=_0xbe7806[_0x2b332b];if(_0x5e39['pOqYEw']===undefined){var _0x25336d=function(_0x319dd2){const _0x326890='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x555e64='',_0x2aa3a2='';for(let _0x3cc77f=0x0,_0x44e93e,_0x1a73c6,_0x466edf=0x0;_0x1a73c6=_0x319dd2['charAt'](_0x466edf++);~_0x1a73c6&&(_0x44e93e=_0x3cc77f%0x4?_0x44e93e*0x40+_0x1a73c6:_0x1a73c6,_0x3cc77f++%0x4)?_0x555e64+=String['fromCharCode'](0xff&_0x44e93e>>(-0x2*_0x3cc77f&0x6)):0x0){_0x1a73c6=_0x326890['indexOf'](_0x1a73c6);}for(let _0x4e5e2b=0x0,_0x40cd60=_0x555e64['length'];_0x4e5e2b<_0x40cd60;_0x4e5e2b++){_0x2aa3a2+='%'+('00'+_0x555e64['charCodeAt'](_0x4e5e2b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2aa3a2);};_0x5e39['ObyHcm']=_0x25336d,_0x5e39['dIOvnh']={},_0x5e39['pOqYEw']=!![];}const _0x1d925e=_0xbe7806[0x0],_0x31ee65=_0x2b332b+_0x1d925e,_0x2e2c23=_0x5e39['dIOvnh'][_0x31ee65];return!_0x2e2c23?(_0x5e3949=_0x5e39['ObyHcm'](_0x5e3949),_0x5e39['dIOvnh'][_0x31ee65]=_0x5e3949):_0x5e3949=_0x2e2c23,_0x5e3949;}__name(composeFixPrompt,'composeFixPrompt');function classify(_0x34faab){const _0x25b643={_0x3b2171:0xb8,_0xe4e202:0xe8,_0x469f31:0xfa,_0x3a04c7:0xb7,_0x37e823:0xef,_0x212141:0x101,_0x5748ff:0xf5},_0x27cfde=_0x58f09d,_0x1eb655=_0x34faab[_0x27cfde(0xfa)][_0x27cfde(0xc7)][_0x27cfde(_0x25b643._0x3b2171)][_0x27cfde(_0x25b643._0xe4e202)](),_0x3d85ac=_0x34faab[_0x27cfde(_0x25b643._0x469f31)]['error'][_0x27cfde(_0x25b643._0x3a04c7)]??'';let _0x2dac13='unknown',_0x4e0eb1='low';if(_0x3d85ac===_0x27cfde(0x110)||/not found|no element|strict mode|resolved to \d+ elements|nothing matched/i[_0x27cfde(0x11d)](_0x1eb655))_0x2dac13='rewrite-selector',_0x4e0eb1=_0x3d85ac===_0x27cfde(0x110)?_0x27cfde(0xf5):_0x27cfde(_0x25b643._0x37e823);else{if(_0x3d85ac===_0x27cfde(_0x25b643._0x212141)||/timeout|waiting for/i['test'](_0x1eb655))_0x2dac13=_0x27cfde(0xba),_0x4e0eb1=_0x3d85ac===_0x27cfde(0x101)?'high':_0x27cfde(0xef);else(_0x3d85ac==='AssertionError'||/asserttext|assertvisible|expected.*got/i['test'](_0x1eb655))&&(_0x2dac13='change-assertion',_0x4e0eb1=_0x3d85ac==='AssertionError'?_0x27cfde(_0x25b643._0x5748ff):_0x27cfde(0xef));}return{'suggestedAction':_0x2dac13,'confidence':_0x4e0eb1};}__name(classify,_0x58f09d(0xbe));function buildPromptMarkdown(_0x332837){const _0x2e000b={_0xeb24e3:0x10f,_0x340324:0xdf,_0x4bbe3f:0x112,_0x16aa62:0x10d,_0x5e99c9:0x112,_0x2353ed:0xc3,_0x197cc7:0xdb,_0xfa6db8:0xf3,_0x3e4c2b:0xce,_0x5e8206:0x116,_0x4b216e:0x10b,_0x21bbdd:0xc7,_0x59aff6:0x108,_0x521382:0xf6,_0x2bbdd8:0xe3,_0x2720c5:0xe3},_0x9e7d03=_0x58f09d,{bundle:_0x169e53,scenarioSource:_0x24c9a6,scenarioRelative:_0x309e13,consoleTail:_0x19a41a,suggestedAction:_0x2e07a8,confidence:_0x25e1d6}=_0x332837,_0x512f93=_0x24c9a6['split']('\x0a')[_0x9e7d03(0xdf)]((_0x2ff3c8,_0x5567c6)=>String(_0x5567c6+0x1)[_0x9e7d03(0xbf)](0x3,'\x20')+'\x20\x20'+_0x2ff3c8)[_0x9e7d03(_0x2e000b._0xeb24e3)]('\x0a'),_0x4d9923=_0x19a41a[_0x9e7d03(0xc6)]===0x0?'_(no\x20console\x20entries\x20captured)_':_0x19a41a[_0x9e7d03(_0x2e000b._0x340324)](_0xbbdab5=>'['+_0xbbdab5[_0x9e7d03(0xfe)]+']\x20'+_0xbbdab5[_0x9e7d03(0x113)][_0x9e7d03(0xd9)]()+':\x20'+_0xbbdab5[_0x9e7d03(0xf4)])[_0x9e7d03(_0x2e000b._0xeb24e3)]('\x0a'),_0x1b2858=_0x169e53[_0x9e7d03(_0x2e000b._0x4bbe3f)]?_0x9e7d03(_0x2e000b._0x16aa62)+_0x169e53[_0x9e7d03(_0x2e000b._0x5e99c9)][_0x9e7d03(0xcf)]+_0x9e7d03(0xd4)+_0x169e53[_0x9e7d03(0x112)][_0x9e7d03(_0x2e000b._0x2353ed)]+_0x9e7d03(_0x2e000b._0x197cc7):_0x9e7d03(0xbc);return _0x9e7d03(0xd3)+_0x169e53[_0x9e7d03(0xfa)][_0x9e7d03(0xbd)]+'`\x20in\x20`'+_0x309e13+_0x9e7d03(_0x2e000b._0xfa6db8)+(_0x169e53['trace'][_0x9e7d03(_0x2e000b._0x3e4c2b)]??'?')+_0x9e7d03(0xc4)+_0x169e53[_0x9e7d03(0xfa)]['line']+_0x9e7d03(0x10c)+_0x169e53[_0x9e7d03(0xfa)]['col']+_0x9e7d03(0x114)+(_0x169e53['trace'][_0x9e7d03(0xc7)]['name']??_0x9e7d03(_0x2e000b._0x5e8206))+_0x9e7d03(_0x2e000b._0x4b216e)+_0x169e53['trace'][_0x9e7d03(_0x2e000b._0x21bbdd)]['message']+'\x0a-\x20**Suggested\x20action**:\x20`'+_0x2e07a8+_0x9e7d03(_0x2e000b._0x59aff6)+_0x25e1d6+_0x9e7d03(_0x2e000b._0x521382)+(_0x169e53['trace'][_0x9e7d03(_0x2e000b._0x21bbdd)][_0x9e7d03(_0x2e000b._0x2bbdd8)]?_0x9e7d03(0xf2)+_0x169e53[_0x9e7d03(0xfa)][_0x9e7d03(0xc7)][_0x9e7d03(_0x2e000b._0x2720c5)]+'\x0a```\x0a':'')+_0x9e7d03(0x118)+_0x512f93+'\x0a```\x0a\x0a##\x20Last\x20console\x20entries\x0a\x0a```\x0a'+_0x4d9923+_0x9e7d03(0x11a)+_0x1b2858+_0x9e7d03(0xf7);}__name(buildPromptMarkdown,_0x58f09d(0xf8));function runPrepareFix(_0x5739fa,_0x1417e2={}){const _0x58bc40={_0x150e8b:0xc1,_0x28509a:0xc9,_0x58e0ca:0xc6,_0x229f4b:0xe6,_0x108633:0xd7,_0x3c399f:0xc6,_0x42046c:0xc0,_0x4a2cb7:0xc6,_0x57910e:0x105,_0xa8144:0xc6,_0x2b548a:0x111,_0x180aea:0xd6,_0x1aaf7a:0xd2,_0x5cc6b8:0xe6,_0x46ab15:0x11f},_0xa69433=_0x58f09d,_0x5e60d3=_0x1417e2[_0xa69433(_0x58bc40._0x150e8b)]??process['stdout'],_0x5b61f2=_0x1417e2['err']??process['stderr'],_0x372f85=_0x1417e2[_0xa69433(0xc9)]??process[_0xa69433(_0x58bc40._0x28509a)](),_0x4dfd6b=_0x5739fa[_0xa69433(0xd1)]('--failing');let _0x328422=_0x5739fa[_0xa69433(0x115)](_0x394fe8=>!_0x394fe8[_0xa69433(0xea)]('-'));if(_0x4dfd6b||_0x328422[_0xa69433(_0x58bc40._0x58e0ca)]===0x0){const _0x791247=listFailures(defaultFailuresRoot(_0x372f85));if(_0x791247[_0xa69433(_0x58bc40._0x58e0ca)]===0x0)return _0x5b61f2[_0xa69433(_0x58bc40._0x229f4b)](_0xa69433(_0x58bc40._0x108633)),0x1;if(_0x328422[_0xa69433(_0x58bc40._0x3c399f)]===0x0){const _0xf99ec=new Map();for(const _0x89c3fe of _0x791247){if(!_0xf99ec[_0xa69433(0xf1)](_0x89c3fe[_0xa69433(0xbd)]))_0xf99ec['set'](_0x89c3fe[_0xa69433(0xbd)],_0x89c3fe);}_0x328422=[..._0xf99ec[_0xa69433(_0x58bc40._0x42046c)]()]['map'](_0xc1469d=>_0xc1469d['runId']+'/'+_0xc1469d[_0xa69433(0xbd)]);}}if(_0x328422[_0xa69433(_0x58bc40._0x4a2cb7)]===0x0)return _0x5b61f2[_0xa69433(0xe6)](_0xa69433(_0x58bc40._0x57910e)),0x1;_0x5e60d3['write'](_0xa69433(0x119)+_0x328422[_0xa69433(_0x58bc40._0xa8144)]+_0xa69433(_0x58bc40._0x2b548a));const _0x2d9a2b=defaultFailuresRoot(_0x372f85);for(const _0x8808e7 of _0x328422){try{const _0x4ca99c=composeFixPrompt(_0x8808e7,{'cwd':_0x372f85,'failuresRoot':_0x2d9a2b}),_0x14a859=_0x2aa3a2(_0x4ca99c['sources']['bundleDir'],'fix-prompt.md');_0x555e64(_0x14a859,_0x4ca99c[_0xa69433(0x10a)]),_0x5e60d3[_0xa69433(_0x58bc40._0x229f4b)](_0xa69433(_0x58bc40._0x180aea)+_0x8808e7+'\x0a'),_0x5e60d3[_0xa69433(_0x58bc40._0x229f4b)](_0xa69433(0xfd)+_0x14a859+'\x0a'),_0x5e60d3[_0xa69433(0xe6)](_0xa69433(0xcd)+_0x4ca99c['suggestedAction']+'\x20\x20confidence='+_0x4ca99c[_0xa69433(_0x58bc40._0x1aaf7a)]+'\x20\x20~'+_0x4ca99c[_0xa69433(0x104)]+'t\x0a');}catch(_0x1acf87){_0x5b61f2[_0xa69433(_0x58bc40._0x5cc6b8)](_0xa69433(_0x58bc40._0x46ab15)+_0x8808e7+':\x20'+(_0x1acf87 instanceof Error?_0x1acf87[_0xa69433(0xb8)]:String(_0x1acf87))+'\x0a');}}return _0x5e60d3[_0xa69433(0xe6)](_0xa69433(0x11e)),0x0;}__name(runPrepareFix,'runPrepareFix');var invokedDirectly=process[_0x58f09d(0xf0)][0x1]&&fileURLToPath(import.meta.url)===process[_0x58f09d(0xf0)][0x1];if(invokedDirectly){const code=runPrepareFix(process[_0x58f09d(0xf0)]['slice'](0x2));process[_0x58f09d(0xdc)](code);}export{runPrepareFix};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x269c28=_0x3c5f;(function(_0x2011c6,_0xf660d6){const _0x5ac012={_0x280339:0x112,_0x551702:0xf2,_0x45a9e0:0x10f,_0x11daa4:0xf6},_0x3248e7=_0x3c5f,_0x97cd63=_0x2011c6();while(!![]){try{const _0x501393=parseInt(_0x3248e7(_0x5ac012._0x280339))/0x1+parseInt(_0x3248e7(_0x5ac012._0x551702))/0x2+-parseInt(_0x3248e7(0xff))/0x3+-parseInt(_0x3248e7(0x115))/0x4+parseInt(_0x3248e7(_0x5ac012._0x45a9e0))/0x5+-parseInt(_0x3248e7(_0x5ac012._0x11daa4))/0x6+parseInt(_0x3248e7(0x101))/0x7;if(_0x501393===_0xf660d6)break;else _0x97cd63['push'](_0x97cd63['shift']());}catch(_0x92ae26){_0x97cd63['push'](_0x97cd63['shift']());}}}(_0x9661,0x2fd75));var __defProp=Object['defineProperty'],__name=(_0x9e5f19,_0x2438c2)=>__defProp(_0x9e5f19,'name',{'value':_0x2438c2,'configurable':!![]});import{mkdir,writeFile}from'fs/promises';import{existsSync}from'fs';function _0x3c5f(_0x5f0a0b,_0x4b84e6){_0x5f0a0b=_0x5f0a0b-0xf2;const _0x9661ab=_0x9661();let _0x3c5f06=_0x9661ab[_0x5f0a0b];if(_0x3c5f['FPJdqJ']===undefined){var _0x3cac7c=function(_0x36068f){const _0x1c3da2='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x9e5f19='',_0x2438c2='';for(let _0x2e203c=0x0,_0x3c795a,_0xf1b3a4,_0x36a301=0x0;_0xf1b3a4=_0x36068f['charAt'](_0x36a301++);~_0xf1b3a4&&(_0x3c795a=_0x2e203c%0x4?_0x3c795a*0x40+_0xf1b3a4:_0xf1b3a4,_0x2e203c++%0x4)?_0x9e5f19+=String['fromCharCode'](0xff&_0x3c795a>>(-0x2*_0x2e203c&0x6)):0x0){_0xf1b3a4=_0x1c3da2['indexOf'](_0xf1b3a4);}for(let _0x299e2d=0x0,_0x2f0646=_0x9e5f19['length'];_0x299e2d<_0x2f0646;_0x299e2d++){_0x2438c2+='%'+('00'+_0x9e5f19['charCodeAt'](_0x299e2d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2438c2);};_0x3c5f['NYFwJh']=_0x3cac7c,_0x3c5f['DsFTZY']={},_0x3c5f['FPJdqJ']=!![];}const _0xe2471f=_0x9661ab[0x0],_0x2b3440=_0x5f0a0b+_0xe2471f,_0x2c1e2d=_0x3c5f['DsFTZY'][_0x2b3440];return!_0x2c1e2d?(_0x3c5f06=_0x3c5f['NYFwJh'](_0x3c5f06),_0x3c5f['DsFTZY'][_0x2b3440]=_0x3c5f06):_0x3c5f06=_0x2c1e2d,_0x3c5f06;}function _0x9661(){const _0x4222cc=['BgvUz3rO','iYmGrtjfihrLC3rPBMCGD2L0AcbaDw5VDgvZDc93zwikcKbbr0vovfmUBwqkcKzVCIbHBNKGCMvXDwvZDcb0BYb3CML0zsWGCMvJB3jKlcbVCIbYDw4Gyw4Gzw5KlxrVlwvUzcb0zxn0lcbVCgvUihrOzqPGD3jPDguTztjLlxrLC3rGihnRAwXSicHVCIbYDw4Gyc93CML0zs1LmMuTDgvZDgaPigfUzcbKCML2zsb0AguGyNjVD3nLCIb0AhjVDwDOcNrOzsbGDw5VDgvZDc13zwjGie1ducb0B29SCYaOyg5LD19JB250zxH0ycdIHPiGygv4CgXVCMvFC3rLCgaG4OAsigbNzxrFCgfNzv9ZBMfWC2HVDgak4OAsigbYDw5FDgvZDgaPlIbeBYbUB3qGAgfUzc1HDxrOB3iGDgvZDhmGyMXPBMqGB3iGBwfWihrOzsbWCM9Qzwn0ihDPDgGkygzPBMrGl2bSC2aVygf3A2aG4OcuihrOzsbZA2LSBcDZifbOyxnLidaGBgLZDhmGDgHLigzPBgvZihrVihjLywqU','EWOGicjJB21WAwXLCK9WDgLVBNmIoIb7cIaGicaIy2HLy2TkCYi6igzHBhnLlaOGicaGiNrHCMDLDci6icjLCZiWmJiIlaOGicaGiMXPyIi6ifSIzxmYmdiYiL0ScIaGicaIDhLWzxmIoIbBxqOGih0ScIaGiMLUy2X1zguIoIbBcIaGicaIkIOVkI5QCYiScIaGicaIlI4VlNvUB3rLC3qVDhLWzxmVzw52lMqUDhmIlaOGicaGiI4VBM9Kzv9TB2r1BgvZl0b1BM90zxn0l3DLyI90ExbLCY91BM90zxn0lwrZBc5KlNrZiGOGif0kFqO','Dw5VDgvZDenVBMzPz01QCW','CgfJA2fNzs5QC29U','lMvUDG','C2nHzMzVBgrxB3jRC3bHy2u','C3rYAw5NAwz5','ChvZAa','ANnJB25MAwCUANnVBG','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','mtq0ntaWtNDoCNPx','lY8GrxHHBxbSzsaWmIdIGjqGzMLSBcbHBIbPBNb1DcaRigfZC2vYDcb0AguGyxbWihjLywn0zwqUcI8VcI8ViefNywLUC3qGCgXHEwDYB3vUzc51BM90zxn0lMnVBs9Zy2vUyxjPB3mVyMLNlxrHyMXLlIbezw1VBNn0CMf0zxmGz2v0qNLsB2XLcI8VigzVCIbHigXHyMvSBgvKigLUChv0lcb0ExbLzcbPBNb1Dcb2AweGzMLSBcGPlcbHBMqGysbSB2nHDg9Yig1LDgHVzc1JAgfPBGOVlYaOz2v0qNLsB2XLkcDYB3CNks5MAwX0zxiOE2HHC1rLEhr9ks5MAxjZDcGPksbPBIbHBIbHC3nLCNrPB24UcI8Vifj1BIb3AxrOoIaGBNb4ieb1BM90zxn0l3DLyIbLmMuGzxHHBxbSzxmVmdiTzM9YBs1MAwXScGPMDw5JDgLVBIb0zxn0x2zVCM1FzMLSBf9OyxbWEv9WyxrOkcKGEWOGihn0zxaOiKzPBhrLCIb0AguGqMLNifrHyMXLigj5igeGBMfTzsiSicGPid0+ihSkicaGigDVDg8OjY9Zy2vUyxjPB3mVyMLNlxrHyMXLjYK7cIaGicbMAwXSkgDLDej5uM9SzsGNDgv4DgjVEcCSihTUyw1LoIaNrMLSDgvYigj5ig5HBwuNFsKSicDvBweGuxvPBM4NktSkicb9ktSkcIaGC3rLCcGIrMLSDgvYAw5NihjLDMvHBhmGDgHLienSzwfYigzPBhrLCIbJB250CM9SigfUzcbTyxrJAgLUzYbYB3DZiIWGkcKGpt4GEWOGicaGyxnZzxj0vMLZAwjSzsHNzxrcEvjVBguOj2j1DhrVBICSihTUyw1LoIaNq2XLyxiGzMLSDgvYj30PktSkicaGigfZC2vYDfzPC2LIBguOz2v0qNLsB2XLkcDYB3CNks5MAwX0zxiOE2HHC1rLEhq6icDvBweGuxvPBM4NFsKUzMLYC3qOksK7cIaGFsK7cN0k','C3vPDgvqywnRywDLsNnVBG','nZiYnJvMEvnHA0W','DMvYC2LVBG','CgfYC2u','nJGYnduYDfjrvMns','x2HLBhbLCNm','mdeTC21VA2uUANm','zw52rxHHBxbSzq','mZKYndy0z29quNvN','lY8Gtw92zsaRihjLBMfTzsb0AgLZigzPBguGDg8GpgzLyxr1CMu+lZX5B3vYx25HBwu+lMPZicHLlMCUcI8Vigf1DgGVBg9NAw4UANmPigfUzcb0AguGzNvUy3rPB24GyMvSB3CGDg8GDgvZDf88Ew91CL9Uyw1LpIGPlIbty2vUyxjPB3mGBgL2zqOVlYbPBIbMzwf0DxjLihn1yMzVBgrLCNmSie5pvcb0AguGztjLihjVB3qG4OcuihrOzsbSAw50zxiGkgXPBNq6C2nLBMfYAw8TAw4TCM9VDcKklY8GCMvQzwn0CYbHihrLC3qGzMLSzsbWBgfJzwqGzgLYzwn0BhKGAw4GDw5VDgvZDc9LmMuVlIbuAguGBg9HzgvYigrLCML2zxmGDgHLcI8VigvUDhj5ig5HBwuGzNjVBsb0AguGzMLSzsbIyxnLBMfTzsdIGjqGA2vIywiTy2fZzsbKyxnOzxmGyMvJB21LihvUzgvYC2nVCMvZlGOklY8GrxzLCNKGzxHLy3v0ywjSzsbZDgvWig11C3qGC2L0igLUC2LKzsbHihn0zxaOiI4UlIiSicGPid0+ihSG4OcMih0PigjSB2nRlIbuAguklY8GDgL0BguGAxmGysbWBgfPBI1fBMDSAxnOigrLC2nYAxb0Aw9Uig9MihrOzsbNCM91CdSGDgHLihn0zxbZigLUC2LKzsbHCMuklY8GDgHLigLTCgXLBwvUDgf0Aw9UlIbhCM91CcbIEsbPBNrLBNqGkfnLDhvWic8Grw50zxiGlYbby3qGlYbbC3nLCNqGB3iklY8GD2HHDgv2zxiGCMvHzhmGD2vSBcKG4Ocuig9UzsbIBg9JAYbWzxiGBg9NAwnHBcbJAhvUAY4kcMz1BMn0Aw9UihrLC3rFEw91CL9Uyw1Lx2HLCMuOksb7cIaGC3rLCcGIu2vLzcbHigTUB3DUihvZzxiGDMLHiercic8GqvbjigzPEhr1CMvZigzYB20Gx2HLBhbLCNmViIWGkcKGpt4GEWOGicaGlY8GicaGD2LWzv9LmMvFDxnLCNmOktSkicaGic8VicaGihvZzxjFAwqGpsbZzwvKx3vZzxiOj2fSAwnLqgv4yw1WBguUy29TjYWGj3nLy3jLDcCPoWOGih0PoWOkicbZDgvWkcjtAwDUigLUigfZihrOzsbZzwvKzwqGDxnLCIiSicGPid0+ihSkicaGigDVDg8Oj2H0DhbZoI8VEw91CI1HChaUDgvZDc9SB2DPBICPoWOGicaGlY8GicaGzMLSBcHNzxrcEuXHyMvSkcDfBwfPBcCPlcaNywXPy2vazxHHBxbSzs5JB20NktSkicaGic8VicaGigzPBgWOz2v0qNLmywjLBcGNugfZC3DVCMqNksWGj3nLy3jLDcCPoWOGicaGlY8GicaGy2XPy2SOz2v0qNLsB2XLkcDIDxr0B24Nlcb7BMfTztOGj0XVzYbPBID9ksK7cIaGFsK7cGOGihn0zxaOiKfZC2vYDcb0AguGzgfZAgjVyxjKihnOB3DZihrOzsbZAwDUzwqTAw4GDxnLCIiSicGPid0+ihSkicaGic8VicaGigfZC2vYDfvYBcGNl2rHC2HIB2fYzcCPoWOGicaGlY8GicaGyxnZzxj0vgv4DcHNzxrcEvjVBguOj2HLywrPBMCNksWGj1DLBgnVBwuSiefSAwnLjYK7cIaGicaVlYaGicbJB3vUDca9igrIuxvLCNKOj1nftevdvcbJB3vUDcGQksbguK9nihvZzxjZifDirvjfigfJDgL2zsa9ihrYDwuNktSkicaGic8VicaGigfZC2vYDfrYDwuOy291BNqGpIaWlcaNzxHWzwn0zwqGyxqGBgvHC3qGB25LigfJDgL2zsb1C2vYjYK7cIaGFsK7cN0k','Dw5VDgvZDa','Dw5VDgvZDc5JB25MAwCUBwPZ','nJC1nZC0vgDiCxve','ztjL','lY8GqhvUB3rLC3qVD2vIihbYB2PLy3qGy29UzMLNlIbbBgWGzMLLBgrZigfYzsbVChrPB25HBcdIGjqGzgvMyxvSDhmGyxbWBhKklY8GD2HLBIbVBwL0DgvKlGOVlWOVlYbtyxzLzcbHCYaUBwPZihnVihrOzsbYDw50Aw1LigXVywrZigL0igfZievttsbYzwDHCMrSzxnZig9MihrOzsbWCM9Qzwn0j3mklY8GCgfJA2fNzs5QC29Uicj0ExbLiIbMAwvSzc4GrM9YieLersbHDxrVy29TCgXLDguSihr5CguTAw1WB3j0ihrOzsbZy2HLBwe6cI8VcI8VicaGlYOQieb0ExbLihTqyxj0AwfSpgLTCg9YDcGNqhvUB3rLC3qVD2vIjYKUvw5VDgvZDenVBMzPzZ59icOVcI8VicaGzxHWB3j0igrLzMf1BhqGEYbIyxnLvxjSoIaNAhr0Chm6lY95B3vYlwfWCc50zxn0jYb9oWOklYOQieb0ExbLihTqyxj0AwfSpgLTCg9YDcGNqhvUB3rLC3qVD2vIjYKUvw5VDgvZDenVBMzPzZ59icOVcMv4Cg9YDcbKzwzHDwX0ihSkicaVlYbIyxnLvxjSoIaNAhr0Chm6lY95B3vYlwfWCc50zxn0jYWkicaVlYbICM93C2vYCZOGwYDJAhjVBwL1BsCSicDMAxjLzM94jYWGj3DLyMTPDcDDlcaGlY8Gq0KGB3zLCNjPzgukicaVlYb2Awv3Cg9YDdOGEYb3Awr0AdOGmti4mcWGAgvPz2H0oIa3mJaGFsWkicaVlYbYzxrYEtOGEYbJB3vUDdOGmsWGB246ifSNDhjHBNnPzw50j10GFsWGicaGicaGic8Vienjig92zxjYAwrLcIaGlY8GC3rVCMfNzvn0yxrLoIaNlNvUB3rLC3qVy2fJAguVyxv0Ac5QC29UjYWGicaGicaVlYbZzwuGAgvSCgvYCWOGic8VihnHBMrIB3G6ihSGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GyxbPq2fSBcaVihvWBg9HzcaVigrIuxvLCNKGlYbZAgvSBaOGic8VicaGyxbPqMfZzvvYBdOGj2H0DhbZoI8VyxbPlNLVDxiTyxbWlNrLC3qNlcaGicaGlY8GyMfZzsbMB3iGyxbPq2fSBcGNue9tvcCSicCVCgf0AcCSiokaPIKkicaVlYaGihvWBg9HzerPCJOGj3vUB3rLC3qVzML4DhvYzxmNlcaGicaGicaGicaGicaGic8VihjVB3qGzM9YihvWBg9HzcGNzg9JlNbKzICPihbHDgHZoWOGic8VicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GzgvMyxvSDdOGChjVAMvJDcbYB290lIbvCgXVywrZig1HEqOGic8VicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GBM90igvZy2fWzsbPDcaOCMvSyxrPDMuGCgf0AhmGB25SEsKUcIaGlY8GicbKyxrHyMfZztOGj3bVC3rNCMvZCwW6lY9SB2nHBgHVC3q6ntqZmI9HChbFDgvZDcCSicaVlYbKyLf1zxj5ic8GzgjfEgvJcIaGlY8GFsWk','CMvHze93BLzLCNnPB24','iYbuAguGy29SBgvJDgLVBIbHihjLBw90zsbYDw4GC3rHCNrZihDPDgGUcImkiYbbigjVEcbYDw5ZigeGy29SBgvJDgLVBIaOB3iGysbZy2HLzhvSzsKSig5VDcbHihnPBMDSzsbZy2vUyxjPBYbIEsbUyw1LoGOJicaGBNb4ieb1BM90zxn0l3DLyIbIDw5KBguGChvZAcaTlxj1BIaTlwvUDIa8zw52AxjVBM1LBNq+ic0Ty29SBgvJDgLVBIbLEgfTCgXLCWOJcImGvgHLC2uGDhDVigHPDcbWBgf5z3jVDw5KlNvUB3rLC3qUy29TlcbZBYb0Agv5ihbHC3mGyMvMB3jLihLVDxiGB3DUigfWCcbPCWOJihjLywnOywjSzsbMCM9TihrOzsbIB3GUiefKzcb5B3vYig93BIbZy2vUyxjPB3mGDg8GDgHPCYbSAxn0igfZihLVDsb3CML0zqOJihrOzw0Sig9YignVChKGDgHLigzPBguGDw5KzxiGyw5VDgHLCIbUyw1LigzVCIbHignVBgXLy3rPB24GB2yGEw91CIbVD24UcNnJzw5HCMLVCZOkicaTigv4yw1WBgvZlZaXlxnTB2TLcIaGlsbLEgfTCgXLCY8WmI1MB3jTlwzPBgWk','zxHHBxbSzxm','lI4VlI4VCgfJA2fNzs5QC29U','icaVlYbJAgfUBMvSoIaNy2HYB21LjYWGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8Gj2nOCM9TzsCGlYaNBxnLzgDLjYaVig51BgWGkgj1BMrSzwqP','cIaGlY8GDMLLD2vYoIb7cIaGlY8GicbWB3j0oIa1mtCZlcaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGic8VigrLzMf1Bhq6ihjHBMrVBsbMCMvLihbVCNqkicaVlYaGigjYB3DZzxi6ihrYDwuSicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GzgvMyxvSDdOGDhj1zsaOyxv0BY1VCgvUig9Uigb2Awv3zxjGkqOGic8Vih0ScN07cG','otiYmdaYt25Ss0Ls','icbJAgfUBMvSoIa','mZqYmZK1mMzxB2vfDa','iYb1BM90zxn0lxDLyIdIGjqGC2vJCMv0ihnJzw5HCMLVihzHCMLHyMXLCY4Gq3jLyxrLzcbIEsbGAw5PDgaSigDPDgLNBM9YzwqUcImkiYbtyw1LieTfwt1wquXvrsbMB3jTyxqGyxmGDw5VDgvZDc8Uzw52lcbIDxqGDMfSDwvZigHLCMuGyxjLihrYzwf0zwqGyxmkiYbtrunsrvq6ihrOzxKGyxjLig1HC2TLzcaOC2HVD24GyxmGyokaUxnLy3jLDdPlrvNIGlPGksbHBNL3AgvYzsb0AguGCNvUBMvYig9YcImGtunqigrLyNvNigXVzYb3B3vSzcbVDgHLCNDPC2uGD3jPDguGDgHLBsdIGjqGzMLSBcGPihzHBhvLCYWGvvjmCYWGzxzHBhvHDgukiYbZDhjPBMDZlIbszwzLCMvUy2uGDgHLBsbPBIbHihnJzw5HCMLVigj5ihrOzwLYigjHCMuGvvbqrvjFu05bs0uGBMfTzsWGDgHLcImGC2fTzsb3yxKGyxmGlMvUDIb2yxjPywjSzxm6cImkiYaGigzPBgWOz2v0qNLmywjLBcGNugfZC3DVCMqNksWGueftu1DpuKqPoWOJcImGu2vJCMv0CYbHCMuGtK9uigv4Cg9YDgvKihrVihn1yNbYB2nLC3nLCYaOC2HLBgWOksKG4OcuihrOzxKGC3rHEsbPBIb0AgukiYb2yxjPywjSzsbZDg9Yzs4GqsbZDwjWCM9JzxnZihrOyxqGz2vUDwLUzwX5ig5LzwrZig9UzsaOysbSAxn0zw5LCIb3AxrOigekiYb0B2TLBIKGz2v0CYbPDcb2AweGDgHLigv4CgXPy2L0igfSBg93BgLZDcbPBIb1BM90zxn0lMnVBMzPzY4QoGOJicaGC2fUzgjVEdOGEYbLEhbVCNrtzwnYzxrZoIbBj1rps0voj10GFqOJifb1DcbUB24TC2vJCMv0ihzHBhvLCYaOvvjmCYWGzw1HAwXZlcbPzhmPigLUihvUB3rLC3qVlMvUDI4kiWOJiezmruvux0vyqu1qteukte9hsu49cLbbu1nxt1jepqPut0TftJ0k','CgfJA2fNzs5QC29Uigf0ia'];_0x9661=function(){return _0x4222cc;};return _0x9661();}import{join}from'path';var templates={'jsconfigJson':_0x269c28(0x106),'scenarioTemplate':_0x269c28(0xf3),'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```\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```\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):**\x0a\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\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\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':_0x269c28(0x105),'exampleCollection':_0x269c28(0xfa),'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':_0x269c28(0x110)},'secretsExample':_0x269c28(0x102),'envExample':_0x269c28(0x10e)};function unotestConfigMjs(_0x2e203c){const _0x55b45e={_0x1603c9:0x100,_0x23b0f8:0x10b,_0x241bfa:0xfe},_0x4e2769=_0x269c28,_0x3c795a=_0x2e203c===void 0x0?_0x4e2769(0xfd):_0x4e2769(_0x55b45e._0x1603c9)+JSON[_0x4e2769(_0x55b45e._0x23b0f8)](_0x2e203c)+',';return _0x4e2769(0xf8)+_0x3c795a+_0x4e2769(_0x55b45e._0x241bfa);}__name(unotestConfigMjs,_0x269c28(0x107));function suitePackageJson(_0xf1b3a4){const _0x57d8a8={_0x2efcb7:0x10b},_0x46d0ef=_0x269c28;return JSON[_0x46d0ef(_0x57d8a8._0x2efcb7)]({'name':'unotest-suite','private':!![],'devDependencies':{'@unotest/web':'^'+_0xf1b3a4}},null,0x2)+'\x0a';}__name(suitePackageJson,_0x269c28(0x111));import{readFileSync}from'fs';import{dirname,resolve}from'path';import{fileURLToPath}from'url';function readOwnVersion(){const _0x176714={_0x2714f2:0xfc,_0x1c58ae:0x104,_0x12a4d6:0x113},_0x852f6=_0x269c28,_0x36a301=dirname(fileURLToPath(import.meta.url)),_0x299e2d=resolve(_0x36a301,_0x852f6(_0x176714._0x2714f2)),_0x2f0646=readFileSync(_0x299e2d,'utf8'),_0xd1fdd=JSON[_0x852f6(0x114)](_0x2f0646);if(typeof _0xd1fdd[_0x852f6(0x113)]!=='string'||_0xd1fdd['version'][_0x852f6(_0x176714._0x1c58ae)]===0x0)throw new Error(_0x852f6(0x103)+_0x299e2d+'\x20has\x20no\x20usable\x20\x22version\x22\x20field');return _0xd1fdd[_0x852f6(_0x176714._0x12a4d6)];}__name(readOwnVersion,_0x269c28(0xf9));async function scaffoldWorkspace(_0x209700,_0x516c9f={}){const _0x4425c4={_0x18de81:0xfb,_0x38a2b2:0x116,_0x5397ed:0x108,_0xeee874:0xf4,_0x227b8a:0x10d,_0x1c714f:0xf7,_0x483b08:0xfb,_0x5a3b28:0x117},_0x1d2261=_0x269c28,_0x49ae86=[],_0x45f29e=[];await mkdir(join(_0x209700,'unotest','e2e',_0x1d2261(_0x4425c4._0x18de81)),{'recursive':!![]}),await mkdir(join(_0x209700,'unotest',_0x1d2261(0xf7),_0x1d2261(_0x4425c4._0x38a2b2)),{'recursive':!![]});const _0x59e783=[{'rel':join(_0x1d2261(0xf4),_0x1d2261(0xf5)),'content':unotestConfigMjs(_0x516c9f['channel'])},{'rel':join(_0x1d2261(0xf4),_0x1d2261(_0x4425c4._0x5397ed)),'content':suitePackageJson(readOwnVersion())},{'rel':join(_0x1d2261(_0x4425c4._0xeee874),_0x1d2261(0x109)),'content':templates[_0x1d2261(0x118)]},{'rel':join(_0x1d2261(0xf4),_0x1d2261(_0x4425c4._0x227b8a)),'content':templates['jsconfigJson']},{'rel':join(_0x1d2261(0xf4),_0x1d2261(_0x4425c4._0x1c714f),_0x1d2261(0xfb),_0x1d2261(0x117)),'content':templates[_0x1d2261(_0x4425c4._0x483b08)][_0x1d2261(_0x4425c4._0x5a3b28)]}];for(const {rel:_0x42ecbe,content:_0x57e2f0}of _0x59e783){const _0x55484c=join(_0x209700,_0x42ecbe);if(existsSync(_0x55484c)){_0x45f29e[_0x1d2261(0x10c)](_0x42ecbe);continue;}await writeFile(_0x55484c,_0x57e2f0),_0x49ae86[_0x1d2261(0x10c)](_0x42ecbe);}return{'projectRoot':_0x209700,'created':_0x49ae86,'skipped':_0x45f29e};}__name(scaffoldWorkspace,_0x269c28(0x10a));export{scaffoldWorkspace};
|
|
1
|
+
const _0x3d3827=_0xd887;(function(_0x4104a4,_0x25e71e){const _0x3f3ee1={_0x576ce6:0x110,_0x2f3c35:0xf8,_0x3939be:0x102},_0x519223=_0xd887,_0x3d2679=_0x4104a4();while(!![]){try{const _0x4f890b=parseInt(_0x519223(_0x3f3ee1._0x576ce6))/0x1+parseInt(_0x519223(0x10f))/0x2*(parseInt(_0x519223(_0x3f3ee1._0x2f3c35))/0x3)+parseInt(_0x519223(0xfc))/0x4+parseInt(_0x519223(0x100))/0x5+parseInt(_0x519223(0xf3))/0x6*(parseInt(_0x519223(0xf4))/0x7)+parseInt(_0x519223(0x10e))/0x8*(parseInt(_0x519223(0x103))/0x9)+-parseInt(_0x519223(_0x3f3ee1._0x3939be))/0xa;if(_0x4f890b===_0x25e71e)break;else _0x3d2679['push'](_0x3d2679['shift']());}catch(_0x63d0e6){_0x3d2679['push'](_0x3d2679['shift']());}}}(_0x320e,0x991bf));var __defProp=Object[_0x3d3827(0xed)],__name=(_0x1a0485,_0x4975af)=>__defProp(_0x1a0485,_0x3d3827(0x10a),{'value':_0x4975af,'configurable':!![]});import{mkdir,writeFile}from'fs/promises';import{existsSync}from'fs';import{join}from'path';var templates={'jsconfigJson':_0x3d3827(0x107),'scenarioTemplate':_0x3d3827(0x101),'agentsMd':_0x3d3827(0xfd),'claudeMdBody':_0x3d3827(0xec),'exampleCollection':_0x3d3827(0xfa),'examples':{'01-smoke.js':_0x3d3827(0x10d),'02-form-fill.js':_0x3d3827(0xf9)},'secretsExample':_0x3d3827(0xf7),'envExample':'#\x20unotest-web\x20—\x20copied\x20to\x20unotest/.env\x20by\x20`init`\x20if\x20not\x20present.\x0a#\x0a#\x20Fill\x20in\x20values\x20that\x20apply\x20to\x20your\x20project.\x20Variables\x20are\x20loaded\x20by\x20the\x0a#\x20runner\x20at\x20scenario\x20start.\x0a#\x0a#\x20Reference\x20any\x20variable\x20from\x20a\x20scenario\x20by\x20its\x20bare\x20UPPER_SNAKE\x20name\x20—\x0a#\x20no\x20env()/secret()\x20wrapper:\x0a#\x0a#\x20\x20\x20goto(\x27/login\x27);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20relative\x20—\x20see\x20APP_BASE_URL\x0a#\x20\x20\x20fill(getByLabel(\x27Email\x27),\x20TEST_USER_EMAIL);\x0a#\x0a#\x20Secret\x20values\x20(passwords,\x20tokens)\x20go\x20in\x20unotest/.secrets\x20instead\x20—\x20same\x0a#\x20format,\x20but\x20masked\x20in\x20every\x20log.\x20An\x20unknown\x20UPPER_SNAKE\x20name\x20fails\x20the\x0a#\x20run\x20with\x20a\x20clear\x20\x22add\x20it\x20to\x20unotest/.env\x22\x20message.\x0a#\x0a#\x20Environments:\x20override\x20any\x20value\x20per\x20environment\x20with\x20overlay\x20files\x20—\x0a#\x20unotest/.env.staging,\x20unotest/.env.production\x20(secrets:\x20.secrets.<env>).\x0a#\x20Select\x20one:\x20`npx\x20@unotest/web\x20e2e\x20<name>\x20--env\x20staging`.\x20The\x20overlay\x20layers\x0a#\x20over\x20this\x20base\x20file\x20(overlay\x20wins);\x20the\x20shell\x20environment\x20wins\x20over\x20both.\x0a\x0a#\x20---\x20App\x20under\x20test\x20--------------------------------------------------------\x0a#\x20The\x20app\x27s\x20base\x20URL.\x20Relative\x20goto(\x27/path\x27)\x20resolves\x20against\x20it\x20(wired\x20into\x0a#\x20Playwright\x27s\x20baseURL\x20automatically),\x20so\x20write\x20goto(\x27/login\x27)\x20—\x20never\x0a#\x20goto(APP_BASE_URL\x20+\x20\x27/login\x27).\x20Also\x20used\x20for\x20assertUrl\x20substring\x20matching.\x0a#\x20Defaults\x20to\x20the\x20unotest\x20playground\x20so\x20the\x20example\x20scenarios\x20run\x20out\x20of\x20the\x0a#\x20box;\x20point\x20it\x20at\x20your\x20own\x20app.\x0aAPP_BASE_URL=https://playground.unotest.com\x0a\x0a#\x20---\x20Database\x20--------------------------------------------------------------\x0a#\x20Used\x20by\x20dbQuery\x20/\x20dbExec.\x20Install\x20the\x20matching\x20driver\x20as\x20a\x20peer-dep:\x0a#\x20\x20\x20pnpm\x20add\x20-D\x20pg\x20@types/pg\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20for\x20postgresql://\x0a#\x20\x20\x20pnpm\x20add\x20-D\x20mysql2\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20for\x20mysql://\x0a#\x20(SQLite\x20via\x20better-sqlite3\x20—\x20install\x20only\x20if\x20needed.)\x0aDATABASE_URL=postgresql://postgres:postgres@localhost:5432/myapp_test\x0a\x0a#\x20---\x20Extra\x20API\x20hosts\x20-------------------------------------------------------\x0a#\x20apiCall(...)\x20goes\x20against\x20sandbox.apiBaseUrl\x20from\x20unotest.config.*\x20by\x0a#\x20default.\x20A\x20setup\x20that\x20talks\x20to\x20MORE\x20hosts\x20names\x20them\x20here\x20and\x20picks\x20one\x0a#\x20per\x20call\x20by\x20the\x20variable\x20NAME\x20(URLs\x20never\x20appear\x20in\x20scenarios):\x0a#\x20\x20\x20apiCall(\x27POST\x27,\x20\x27/things\x27,\x20body,\x20headers,\x20{base:\x20\x27API_BASE_CHAT\x27})\x0a#\x20API_BASE_CHAT=https://chatbackend.example.com\x0a\x0a#\x20---\x20Runner\x20--------------------------------------------------------------\x0a#\x20Show\x20the\x20browser\x20window\x20during\x20runs\x20(default:\x20headless).\x0a#\x20UNOTEST_HEADED=1\x0a#\x20Slow\x20each\x20Playwright\x20op\x20by\x20N\x20ms\x20(default:\x200).\x20Pairs\x20with\x20HEADED\x20for\x0a#\x20watching\x20the\x20agent\x20at\x20work.\x0a#\x20UNOTEST_SLOW_MO=100\x0a#\x20Browser\x20engine\x20for\x20this\x20run\x20(chromium\x20|\x20firefox\x20|\x20webkit).\x20Overrides\x20the\x0a#\x20first\x20entry\x20of\x20`browsers`\x20in\x20unotest.config.*.\x20Default:\x20the\x20config.\x0a#\x20UNOTEST_BROWSER=chromium\x0a#\x20Chromium\x20channel\x20for\x20this\x20run\x20(chrome\x20|\x20msedge\x20|\x20chrome-beta\x20|\x20chromium\x0a#\x20|\x20bundled)\x20—\x20the\x20same\x20words\x20`channel`\x20takes\x20in\x20unotest.config.*.\x0a#\x20Overrides\x20the\x20config\x20—\x20that\x20travels\x20with\x20the\x20suite,\x20this\x20stays\x20on\x20the\x0a#\x20machine.\x20`bundled`\x20=\x20Playwright\x27s\x20own\x20Chromium\x20(the\x20default).\x0a#\x20UNOTEST_BROWSER_CHANNEL=bundled\x0a#\x20Default\x20action\x20timeout\x20in\x20milliseconds\x20—\x20applied\x20to\x20every\x20click\x20/\x0a#\x20fill\x20/\x20waitFor\x20/\x20etc.\x20via\x20Playwright\x27s\x20setDefaultTimeout.\x20Default\x203000.\x0a#\x20Bump\x20if\x20your\x20app\x20is\x20slow;\x20per-action\x20override\x20via\x20the\x20action\x27s\x0a#\x20options.timeout.\x20Playwright\x27s\x20stock\x2030000\x20strands\x20interactive\x20agents.\x0a#\x20UNOTEST_DEFAULT_TIMEOUT_MS=3000\x0a#\x20Default\x20navigation\x20timeout\x20in\x20milliseconds\x20—\x20applied\x20to\x20goto\x20/\x20reload\x20/\x0a#\x20waitForUrl,\x20click\x27s\x20post-action\x20navigation\x20wait,\x20AND\x20setPage\x27s\x20wait\x20for\x20a\x0a#\x20newly\x20opened\x20tab\x20to\x20appear\x20+\x20load.\x20Real-world\x20pages\x20routinely\x20take\x205–15s\x0a#\x20to\x20fire\x20\x27load\x27;\x20keep\x20this\x20separate\x20from\x20the\x20action\x20timeout\x20above.\x0aUNOTEST_DEFAULT_NAVIGATION_TIMEOUT_MS=15000\x0a\x0a#\x20Per-run\x20wall-clock\x20budget\x20in\x20milliseconds\x20—\x20a\x20run\x20aborts\x20once\x20it\x20exceeds\x0a#\x20this.\x20Guards\x20against\x20a\x20stuck\x20scenario\x20hanging\x20the\x20agent\x20indefinitely.\x0a#\x20Invalid\x20or\x20non-positive\x20values\x20fall\x20back\x20to\x20the\x20default.\x20Default\x20300000.\x0a#\x20UNOTEST_MAX_DURATION_MS=300000\x0a\x0a#\x20---\x20Locale\x20+\x20timezone\x20---------------------------------------------------\x0a#\x20Pin\x20the\x20browser\x20context\x27s\x20Accept-Language\x20/\x20navigator.language.\x20Without\x0a#\x20these,\x20tests\x20inherit\x20the\x20OS\x20locale\x20—\x20accessible-name\x20selectors\x0a#\x20(`getByRole(name)`)\x20on\x20i18n\x27d\x20apps\x20will\x20break\x20across\x20machines.\x0a#\x20UNOTEST_LOCALE=en-US\x0a#\x20UNOTEST_TIMEZONE=UTC\x0a\x0a#\x20---\x20Recording\x20(explore_*)\x20----------------------------------------------\x0a#\x20Grace\x20window\x20in\x20ms\x20after\x20each\x20explore_step\x20action.\x20If\x20a\x20click\x20opens\x20a\x0a#\x20new\x20tab/popup,\x20the\x20MCP\x20server\x20auto-switches\x20the\x20active\x20page\x20to\x20it\x20AND\x0a#\x20inserts\x20setPage(N)\x20into\x20the\x20generated\x20DSL\x20trace.\x20Set\x20to\x200\x20to\x20disable\x0a#\x20(strict\x20mode).\x20Has\x20NO\x20effect\x20on\x20run_test\x20—\x20there\x20setPage\x20already\x20waits\x0a#\x20for\x20the\x20tab\x20to\x20appear\x20on\x20its\x20own.\x20Range:\x20[0,\x2010000].\x20Default:\x202000.\x0a#\x20UNOTEST_POPUP_GRACE_MS=2000\x0a\x0a#\x20---\x20Logging\x20-------------------------------------------------------------\x0a#\x20debug\x20|\x20info\x20|\x20warn\x20|\x20error.\x20Default:\x20info.\x0aUNOTEST_LOG_LEVEL=info\x0a\x0a#\x20---\x20Debug\x20diagnostics\x20---------------------------------------------------\x0a#\x20Off\x20by\x20default.\x20Set\x20to\x201\x20to\x20record\x20a\x20structured\x20JSONL\x20log\x20+\x20per-call\x0a#\x20folders\x20under\x20unotest/.debug/\x20—\x20then\x20restart\x20the\x20MCP\x20server.\x20Each\x20tool\x0a#\x20call\x20gets\x20a\x20folder\x20with\x20the\x20full\x20snapshot\x20JSON,\x20the\x20outerHTML\x20of\x20the\x0a#\x20element\x20a\x20locator\x20resolved\x20to,\x20and\x20(on\x20failure)\x20page.html\x20+\x20a\x20screenshot,\x0a#\x20so\x20you\x20(and\x20the\x20AI\x20agent,\x20via\x20get_last_mcp_log)\x20can\x20verify\x20the\x20snapshot\x0a#\x20didn\x27t\x20glitch\x20and\x20the\x20locator\x20hit\x20the\x20right\x20element\x20—\x20instead\x20of\x20guessing\x0a#\x20from\x20a\x20truncated\x20error.\x20audit_last_run\x20then\x20checks\x20the\x20run\x20against\x20the\x0a#\x20testing\x20rules.\x20Also\x20turns\x20on\x20full\x20CLI\x20stack\x20traces.\x20Use\x20\x27summary\x27\x20for\x20a\x0a#\x20lighter\x20log\x20(tool\x20+\x20snapshot\x20layers\x20only,\x20no\x20artifacts).\x20NOTE:\x20tool\x0a#\x20arguments\x20are\x20logged\x20verbatim,\x20so\x20a\x20fill()\x20with\x20a\x20password\x20lands\x20in\x20the\x0a#\x20local\x20(gitignored)\x20log\x20—\x20keep\x20this\x20off\x20unless\x20you\x27re\x20debugging.\x0a#\x20UNOTEST_DEBUG=1\x0a\x0a#\x20---\x20Capture\x20(viewer\x20inspector)\x20------------------------------------------\x0a#\x20Record\x20the\x20browser\x20console\x20+\x20network\x20requests\x20into\x20each\x20run\x27s\x20dir\x20so\x20the\x0a#\x20viewer\x27s\x20Console\x20/\x20Network\x20inspector\x20tabs\x20are\x20populated.\x20Set\x20to\x200\x20to\x20disable.\x0aUNOTEST_NETWORK=1\x0aUNOTEST_CONSOLE=1\x0a#\x20Set\x20to\x201\x20to\x20also\x20capture\x20a\x20screenshot\x20after\x20EVERY\x20executed\x20step\x20(into\x0a#\x20unotest/.runs/<runId>/screenshot/;\x20click\x20a\x20step\x20row\x20in\x20the\x20viewer\x20to\x20see\x0a#\x20it).\x20On\x20failure,\x20a\x20screenshot\x20+\x20page.html\x20always\x20land\x20in\x0a#\x20unotest/.runs/<runId>/failure/\x20—\x20no\x20flag\x20needed.\x0a#\x20UNOTEST_STEP_SCREENSHOTS=1\x0a#\x20Port\x20for\x20`unotest-web\x20viewer`.\x20Default:\x20a\x20free\x20port,\x20printed\x20on\x20start.\x0a#\x20The\x20viewer\x20is\x20configured\x20by\x20environment,\x20not\x20by\x20the\x20config\x20file.\x0a#\x20UNOTEST_VIEWER_PORT=5173\x0a'};function unotestConfigMjs(_0x3926c0){const _0x71f9a2={_0x5b922c:0xf0,_0x18d94f:0xfb,_0x56dfc3:0xf5},_0x496262=_0x3d3827,_0x10e1c4=_0x3926c0===void 0x0?_0x496262(0xf1):_0x496262(_0x71f9a2._0x5b922c)+JSON[_0x496262(_0x71f9a2._0x18d94f)](_0x3926c0)+',';return _0x496262(0xff)+_0x10e1c4+_0x496262(_0x71f9a2._0x56dfc3);}__name(unotestConfigMjs,'unotestConfigMjs');function suitePackageJson(_0x516cbb){const _0x49907f={_0x185145:0xe9},_0x4d0fc6=_0x3d3827;return JSON[_0x4d0fc6(0xfb)]({'name':_0x4d0fc6(_0x49907f._0x185145),'private':!![],'devDependencies':{'@unotest/web':'^'+_0x516cbb}},null,0x2)+'\x0a';}__name(suitePackageJson,_0x3d3827(0x112));import{readFileSync}from'fs';function _0xd887(_0xa9a405,_0x44b3da){_0xa9a405=_0xa9a405-0xe4;const _0x320e70=_0x320e();let _0xd8875d=_0x320e70[_0xa9a405];if(_0xd887['gSDZpN']===undefined){var _0x5dfcb9=function(_0x310fd5){const _0x1582ed='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1a0485='',_0x4975af='';for(let _0x3926c0=0x0,_0x10e1c4,_0x516cbb,_0x428092=0x0;_0x516cbb=_0x310fd5['charAt'](_0x428092++);~_0x516cbb&&(_0x10e1c4=_0x3926c0%0x4?_0x10e1c4*0x40+_0x516cbb:_0x516cbb,_0x3926c0++%0x4)?_0x1a0485+=String['fromCharCode'](0xff&_0x10e1c4>>(-0x2*_0x3926c0&0x6)):0x0){_0x516cbb=_0x1582ed['indexOf'](_0x516cbb);}for(let _0x10f79f=0x0,_0x36be60=_0x1a0485['length'];_0x10f79f<_0x36be60;_0x10f79f++){_0x4975af+='%'+('00'+_0x1a0485['charCodeAt'](_0x10f79f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4975af);};_0xd887['vcPJjR']=_0x5dfcb9,_0xd887['coaHwm']={},_0xd887['gSDZpN']=!![];}const _0xc91cd3=_0x320e70[0x0],_0x147da7=_0xa9a405+_0xc91cd3,_0x401a03=_0xd887['coaHwm'][_0x147da7];return!_0x401a03?(_0xd8875d=_0xd887['vcPJjR'](_0xd8875d),_0xd887['coaHwm'][_0x147da7]=_0xd8875d):_0xd8875d=_0x401a03,_0xd8875d;}import{dirname,resolve}from'path';import{fileURLToPath}from'url';function _0x320e(){const _0x5a02eb=['CgfYC2u','EWOGicjJB21WAwXLCK9WDgLVBNmIoIb7cIaGicaIy2HLy2TkCYi6igzHBhnLlaOGicaGiNrHCMDLDci6icjLCZiWmJiIlaOGicaGiMXPyIi6ifSIzxmYmdiYiL0ScIaGicaIDhLWzxmIoIbBxqOGih0ScIaGiMLUy2X1zguIoIbBcIaGicaIkIOVkI5QCYiScIaGicaIlI4VlNvUB3rLC3qVDhLWzxmVzw52lMqUDhmIlaOGicaGiI4VBM9Kzv9TB2r1BgvZl0b1BM90zxn0l3DLyI90ExbLCY91BM90zxn0lwrZBc5KlNrZiGOGif0kFqO','ChvZAa','mdeTC21VA2uUANm','BMfTzq','BgvUz3rO','zxHHBxbSzxm','lY8GrxHHBxbSzsaWmsdIGjqGC21VA2u6ig5HDMLNyxrLicSGy2XPy2SGkYbvuKWGyxnZzxj0Aw9UlGOVlWOVlYbuAguGBwLUAw1HBcb0AhjLzs1ZDgvWihbHDhrLCM4UieHPDhmGCgXHEwDYB3vUzc51BM90zxn0lMnVBsbZBYbUBYbWCM9Qzwn0cI8VihnLDhvWigLZig5LzwrLzc4GuNvUihDPDgG6icbUChGGqhvUB3rLC3qVD2vIiguYzsbLEgfTCgXLCY8Wms1ZBw9RzqOkzNvUy3rPB24GDgvZDf9ZBw9Rzv9WBgf5z3jVDw5KkcKGEWOGihn0zxaOiK9Wzw4GDgHLiejPzYbuywjSzsbZy2vUyxjPBYbMCM9TihrOzsbWBgf5z3jVDw5KigLUzgv4iIWGkcKGpt4GEWOGicaGz290BYGNlYCPoWOGicaGy2XPy2SOz2v0qNLsB2XLkcDSAw5RjYWGE25HBwu6icDcAwCGvgfIBguNlcbLEgfJDdOGDhj1zx0PktSkicaGigfZC2vYDfvYBcGNl3nJzw5HCMLVCY9IAwCTDgfIBguNktSkicb9ktSkFqO','nJC1nJi0offLBgnyza','mtaWodaYsxPSt2Xt','mty4ndGXuxLUC3jc','ANnJB25MAwCUANnVBG','C3vPDgvqywnRywDLsNnVBG','C2nHzMzVBgrxB3jRC3bHy2u','CgfJA2fNzs5QC29U','zw52rxHHBxbSzq','y2HHBM5LBa','igHHCYbUBYb1C2fIBguGiNzLCNnPB24IigzPzwXK','Dw5VDgvZDc1ZDwL0zq','CMvHze93BLzLCNnPB24','DMvYC2LVBG','iYmGrtjfihrLC3rPBMCGD2L0AcbaDw5VDgvZDc93zwikcKbbr0vovfmUBwqkcKzVCIbHBNKGCMvXDwvZDcb0BYb3CML0zsWGCMvJB3jKlcbVCIbYDw4Gyw4Gzw5KlxrVlwvUzcb0zxn0lcbVCgvUihrOzqPGD3jPDguTztjLlxrLC3rGihnRAwXSicHVCIbYDw4Gyc93CML0zs1LmMuTDgvZDgaPigfUzcbKCML2zsb0AguGyNjVD3nLCIb0AhjVDwDOcNrOzsbGDw5VDgvZDc13zwjGie1ducb0B29SCYaOyg5LD19JB250zxH0ycdIHPiGygv4CgXVCMvFC3rLCgaG4OAsigbNzxrFCgfNzv9ZBMfWC2HVDgak4OAsigbYDw5FDgvZDgaPlIbeBYbUB3qGAgfUzc1HDxrOB3iGDgvZDhmGyMXPBMqGB3iGBwfWihrOzsbWCM9Qzwn0ihDPDgGkygzPBMrGl2bSC2aVygf3A2aG4OcuihrOzsbZA2LSBcDZifbOyxnLidaGBgLZDhmGDgHLigzPBgvZihrVihjLywqU','zgvMAw5LuhjVCgvYDhK','CgfJA2fNzs5QC29Uigf0ia','x2HLBhbLCNm','icbJAgfUBMvSoIa','icaVlYbJAgfUBMvSoIaNy2HYB21LjYWGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8Gj2nOCM9TzsCGlYaNBxnLzgDLjYaVig51BgWGkgj1BMrSzwqP','ztjL','mtyXnhPPB09Nva','mtm4mZLmr0fPwhu','cN07cG','ANnJB25MAwDkC29U','iYb1BM90zxn0lxDLyIdIGjqGC2vJCMv0ihnJzw5HCMLVihzHCMLHyMXLCY4Gq3jLyxrLzcbIEsbGAw5PDgaSigDPDgLNBM9YzwqUcImkiYbtyw1LieTfwt1wquXvrsbMB3jTyxqGyxmGDw5VDgvZDc8Uzw52lcbIDxqGDMfSDwvZigHLCMuGyxjLihrYzwf0zwqGyxmkiYbtrunsrvq6ihrOzxKGyxjLig1HC2TLzcaOC2HVD24GyxmGyokaUxnLy3jLDdPlrvNIGlPGksbHBNL3AgvYzsb0AguGCNvUBMvYig9YcImGtunqigrLyNvNigXVzYb3B3vSzcbVDgHLCNDPC2uGD3jPDguGDgHLBsdIGjqGzMLSBcGPihzHBhvLCYWGvvjmCYWGzxzHBhvHDgukiYbZDhjPBMDZlIbszwzLCMvUy2uGDgHLBsbPBIbHihnJzw5HCMLVigj5ihrOzwLYigjHCMuGvvbqrvjFu05bs0uGBMfTzsWGDgHLcImGC2fTzsb3yxKGyxmGlMvUDIb2yxjPywjSzxm6cImkiYaGigzPBgWOz2v0qNLmywjLBcGNugfZC3DVCMqNksWGueftu1DpuKqPoWOJcImGu2vJCMv0CYbHCMuGtK9uigv4Cg9YDgvKihrVihn1yNbYB2nLC3nLCYaOC2HLBgWOksKG4OcuihrOzxKGC3rHEsbPBIb0AgukiYb2yxjPywjSzsbZDg9Yzs4GqsbZDwjWCM9JzxnZihrOyxqGz2vUDwLUzwX5ig5LzwrZig9UzsaOysbSAxn0zw5LCIb3AxrOigekiYb0B2TLBIKGz2v0CYbPDcb2AweGDgHLigv4CgXPy2L0igfSBg93BgLZDcbPBIb1BM90zxn0lMnVBMzPzY4QoGOJicaGC2fUzgjVEdOGEYbLEhbVCNrtzwnYzxrZoIbBj1rps0voj10GFqOJifb1DcbUB24TC2vJCMv0ihzHBhvLCYaOvvjmCYWGzw1HAwXZlcbPzhmPigLUihvUB3rLC3qVlMvUDI4kiWOJiezmruvux0vyqu1qteukte9hsu49cLbbu1nxt1jepqPut0TftJ0k','m3jTy0fhvq','lY8GrxHHBxbSzsaWmIdIGjqGzMLSBcbHBIbPBNb1DcaRigfZC2vYDcb0AguGyxbWihjLywn0zwqUcI8VcI8ViefNywLUC3qGCgXHEwDYB3vUzc51BM90zxn0lMnVBs9Zy2vUyxjPB3mVyMLNlxrHyMXLlIbezw1VBNn0CMf0zxmGz2v0qNLsB2XLcI8VigzVCIbHigXHyMvSBgvKigLUChv0lcb0ExbLzcbPBNb1Dcb2AweGzMLSBcGPlcbHBMqGysbSB2nHDg9Yig1LDgHVzc1JAgfPBGOVlYaOz2v0qNLsB2XLkcDYB3CNks5MAwX0zxiOE2HHC1rLEhr9ks5MAxjZDcGPksbPBIbHBIbHC3nLCNrPB24UcI8Vifj1BIb3AxrOoIaGBNb4ieb1BM90zxn0l3DLyIbLmMuGzxHHBxbSzxmVmdiTzM9YBs1MAwXScGPMDw5JDgLVBIb0zxn0x2zVCM1FzMLSBf9OyxbWEv9WyxrOkcKGEWOGihn0zxaOiKzPBhrLCIb0AguGqMLNifrHyMXLigj5igeGBMfTzsiSicGPid0+ihSkicaGigDVDg8OjY9Zy2vUyxjPB3mVyMLNlxrHyMXLjYK7cIaGicbMAwXSkgDLDej5uM9SzsGNDgv4DgjVEcCSihTUyw1LoIaNrMLSDgvYigj5ig5HBwuNFsKSicDvBweGuxvPBM4NktSkicb9ktSkcIaGC3rLCcGIrMLSDgvYAw5NihjLDMvHBhmGDgHLienSzwfYigzPBhrLCIbJB250CM9SigfUzcbTyxrJAgLUzYbYB3DZiIWGkcKGpt4GEWOGicaGyxnZzxj0vMLZAwjSzsHNzxrcEvjVBguOj2j1DhrVBICSihTUyw1LoIaNq2XLyxiGzMLSDgvYj30PktSkicaGigfZC2vYDfzPC2LIBguOz2v0qNLsB2XLkcDYB3CNks5MAwX0zxiOE2HHC1rLEhq6icDvBweGuxvPBM4NFsKUzMLYC3qOksK7cIaGFsK7cN0k','iYbuAguGy29SBgvJDgLVBIbHihjLBw90zsbYDw4GC3rHCNrZihDPDgGUcImkiYbbigjVEcbYDw5ZigeGy29SBgvJDgLVBIaOB3iGysbZy2HLzhvSzsKSig5VDcbHihnPBMDSzsbZy2vUyxjPBYbIEsbUyw1LoGOJicaGBNb4ieb1BM90zxn0l3DLyIbIDw5KBguGChvZAcaTlxj1BIaTlwvUDIa8zw52AxjVBM1LBNq+ic0Ty29SBgvJDgLVBIbLEgfTCgXLCWOJcImGvgHLC2uGDhDVigHPDcbWBgf5z3jVDw5KlNvUB3rLC3qUy29TlcbZBYb0Agv5ihbHC3mGyMvMB3jLihLVDxiGB3DUigfWCcbPCWOJihjLywnOywjSzsbMCM9TihrOzsbIB3GUiefKzcb5B3vYig93BIbZy2vUyxjPB3mGDg8GDgHPCYbSAxn0igfZihLVDsb3CML0zqOJihrOzw0Sig9YignVChKGDgHLigzPBguGDw5KzxiGyw5VDgHLCIbUyw1LigzVCIbHignVBgXLy3rPB24GB2yGEw91CIbVD24UcNnJzw5HCMLVCZOkicaTigv4yw1WBgvZlZaXlxnTB2TLcIaGlsbLEgfTCgXLCY8WmI1MB3jTlwzPBgWk','C3rYAw5NAwz5','mtiXnJy4oeTJANvvvG','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','Dw5VDgvZDa','lY8GqhvUB3rLC3qVD2vIihbYB2PLy3qGy29UzMLNlIbbBgWGzMLLBgrZigfYzsbVChrPB25HBcdIGjqGzgvMyxvSDhmGyxbWBhKklY8GD2HLBIbVBwL0DgvKlGOVlWOVlYbtyxzLzcbHCYaUBwPZihnVihrOzsbYDw50Aw1LigXVywrZigL0igfZievttsbYzwDHCMrSzxnZig9MihrOzsbWCM9Qzwn0j3mklY8GCgfJA2fNzs5QC29Uicj0ExbLiIbMAwvSzc4GrM9YieLersbHDxrVy29TCgXLDguSihr5CguTAw1WB3j0ihrOzsbZy2HLBwe6cI8VcI8VicaGlYOQieb0ExbLihTqyxj0AwfSpgLTCg9YDcGNqhvUB3rLC3qVD2vIjYKUvw5VDgvZDenVBMzPzZ59icOVcI8VicaGzxHWB3j0igrLzMf1BhqGEYbIyxnLvxjSoIaNAhr0Chm6lY95B3vYlwfWCc50zxn0jYb9oWOklYOQieb0ExbLihTqyxj0AwfSpgLTCg9YDcGNqhvUB3rLC3qVD2vIjYKUvw5VDgvZDenVBMzPzZ59icOVcMv4Cg9YDcbKzwzHDwX0ihSkicaVlYbIyxnLvxjSoIaNAhr0Chm6lY95B3vYlwfWCc50zxn0jYWkicaVlYbICM93C2vYCZOGwYDJAhjVBwL1BsCSicDMAxjLzM94jYWGj3DLyMTPDcDDlcaGlY8Gq0KGB3zLCNjPzgukicaVlYb2Awv3Cg9YDdOGEYb3Awr0AdOGmti4mcWGAgvPz2H0oIa3mJaGFsWkicaVlYbYzxrYEtOGEYbJB3vUDdOGmsWGB246ifSNDhjHBNnPzw50j10GFsWGicaGicaGic8Vienjig92zxjYAwrLcIaGlY8GC3rVCMfNzvn0yxrLoIaNlNvUB3rLC3qVy2fJAguVyxv0Ac5QC29UjYWGicaGicaVlYbZzwuGAgvSCgvYCWOGic8VihnHBMrIB3G6ihSGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GyxbPq2fSBcaVihvWBg9HzcaVigrIuxvLCNKGlYbZAgvSBaOGic8VicaGyxbPqMfZzvvYBdOGj2H0DhbZoI8VyxbPlNLVDxiTyxbWlNrLC3qNlcaGicaGlY8GyMfZzsbMB3iGyxbPq2fSBcGNue9tvcCSicCVCgf0AcCSiokaPIKkicaVlYaGihvWBg9HzerPCJOGj3vUB3rLC3qVzML4DhvYzxmNlcaGicaGicaGicaGicaGic8VihjVB3qGzM9YihvWBg9HzcGNzg9JlNbKzICPihbHDgHZoWOGic8VicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GzgvMyxvSDdOGChjVAMvJDcbYB290lIbvCgXVywrZig1HEqOGic8VicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GBM90igvZy2fWzsbPDcaOCMvSyxrPDMuGCgf0AhmGB25SEsKUcIaGlY8GicbKyxrHyMfZztOGj3bVC3rNCMvZCwW6lY9SB2nHBgHVC3q6ntqZmI9HChbFDgvZDcCSicaVlYbKyLf1zxj5ic8GzgjfEgvJcIaGlY8GFsWk','mZqZmdiWwNz1AePI','lY8Gtw92zsaRihjLBMfTzsb0AgLZigzPBguGDg8GpgzLyxr1CMu+lZX5B3vYx25HBwu+lMPZicHLlMCUcI8Vigf1DgGVBg9NAw4UANmPigfUzcb0AguGzNvUy3rPB24GyMvSB3CGDg8GDgvZDf88Ew91CL9Uyw1LpIGPlIbty2vUyxjPB3mGBgL2zqOVlYbPBIbMzwf0DxjLihn1yMzVBgrLCNmSie5pvcb0AguGztjLihjVB3qG4OcuihrOzsbSAw50zxiGkgXPBNq6C2nLBMfYAw8TAw4TCM9VDcKklY8GCMvQzwn0CYbHihrLC3qGzMLSzsbWBgfJzwqGzgLYzwn0BhKGAw4GDw5VDgvZDc9LmMuVlIbuAguGBg9HzgvYigrLCML2zxmGDgHLcI8VigvUDhj5ig5HBwuGzNjVBsb0AguGzMLSzsbIyxnLBMfTzsdIGjqGA2vIywiTy2fZzsbKyxnOzxmGyMvJB21LihvUzgvYC2nVCMvZlGOklY8GrxzLCNKGzxHLy3v0ywjSzsbZDgvWig11C3qGC2L0igLUC2LKzsbHihn0zxaOiI4UlIiSicGPid0+ihSG4OcMih0PigjSB2nRlIbuAguklY8GDgL0BguGAxmGysbWBgfPBI1fBMDSAxnOigrLC2nYAxb0Aw9Uig9MihrOzsbNCM91CdSGDgHLihn0zxbZigLUC2LKzsbHCMuklY8GDgHLigLTCgXLBwvUDgf0Aw9UlIbhCM91CcbIEsbPBNrLBNqGkfnLDhvWic8Grw50zxiGlYbby3qGlYbbC3nLCNqGB3iklY8GD2HHDgv2zxiGCMvHzhmGD2vSBcKG4Ocuig9UzsbIBg9JAYbWzxiGBg9NAwnHBcbJAhvUAY4kcMz1BMn0Aw9UihrLC3rFEw91CL9Uyw1Lx2HLCMuOksb7cIaGC3rLCcGIu2vLzcbHigTUB3DUihvZzxiGDMLHiercic8GqvbjigzPEhr1CMvZigzYB20Gx2HLBhbLCNmViIWGkcKGpt4GEWOGicaGlY8GicaGD2LWzv9LmMvFDxnLCNmOktSkicaGic8VicaGihvZzxjFAwqGpsbZzwvKx3vZzxiOj2fSAwnLqgv4yw1WBguUy29TjYWGj3nLy3jLDcCPoWOGih0PoWOkicbZDgvWkcjtAwDUigLUigfZihrOzsbZzwvKzwqGDxnLCIiSicGPid0+ihSkicaGigDVDg8Oj2H0DhbZoI8VEw91CI1HChaUDgvZDc9SB2DPBICPoWOGicaGlY8GicaGzMLSBcHNzxrcEuXHyMvSkcDfBwfPBcCPlcaNywXPy2vazxHHBxbSzs5JB20NktSkicaGic8VicaGigzPBgWOz2v0qNLmywjLBcGNugfZC3DVCMqNksWGj3nLy3jLDcCPoWOGicaGlY8GicaGy2XPy2SOz2v0qNLsB2XLkcDIDxr0B24Nlcb7BMfTztOGj0XVzYbPBID9ksK7cIaGFsK7cGOGihn0zxaOiKfZC2vYDcb0AguGzgfZAgjVyxjKihnOB3DZihrOzsbZAwDUzwqTAw4GDxnLCIiSicGPid0+ihSkicaGic8VicaGigfZC2vYDfvYBcGNl2rHC2HIB2fYzcCPoWOGicaGlY8GicaGyxnZzxj0vgv4DcHNzxrcEvjVBguOj2HLywrPBMCNksWGj1DLBgnVBwuSiefSAwnLjYK7cIaGicaVlYaGicbJB3vUDca9igrIuxvLCNKOj1nftevdvcbJB3vUDcGQksbguK9nihvZzxjZifDirvjfigfJDgL2zsa9ihrYDwuNktSkicaGic8VicaGigfZC2vYDfrYDwuOy291BNqGpIaWlcaNzxHWzwn0zwqGyxqGBgvHC3qGB25LigfJDgL2zsb1C2vYjYK7cIaGFsK7cN0k','mtm0mdG2nZbezenHEfq','oufcywPnqG','lI4VlI4VCgfJA2fNzs5QC29U','DxrMoa'];_0x320e=function(){return _0x5a02eb;};return _0x320e();}function readOwnVersion(){const _0x15de53={_0x32d986:0x106,_0x17b87b:0xee},_0x385fc0=_0x3d3827,_0x428092=dirname(fileURLToPath(import.meta.url)),_0x10f79f=resolve(_0x428092,_0x385fc0(0x104)),_0x36be60=readFileSync(_0x10f79f,_0x385fc0(0x105)),_0x37b1aa=JSON[_0x385fc0(_0x15de53._0x32d986)](_0x36be60);if(typeof _0x37b1aa[_0x385fc0(0xeb)]!=='string'||_0x37b1aa[_0x385fc0(0xeb)][_0x385fc0(0x10b)]===0x0)throw new Error(_0x385fc0(_0x15de53._0x17b87b)+_0x10f79f+_0x385fc0(0xe8));return _0x37b1aa[_0x385fc0(0xeb)];}__name(readOwnVersion,_0x3d3827(0xea));async function scaffoldWorkspace(_0x11e989,_0x2ec713={}){const _0x5c17f7={_0x22a892:0xfe,_0x552a84:0xf2,_0x2b034c:0xef,_0x190048:0xe7,_0x2c4bc0:0xe5,_0x56ff58:0xfe,_0x2c864d:0xe6,_0xdb86ff:0x109},_0x3e4260=_0x3d3827,_0x4e6a6a=[],_0x4f4437=[];await mkdir(join(_0x11e989,_0x3e4260(_0x5c17f7._0x22a892),'e2e','examples'),{'recursive':!![]}),await mkdir(join(_0x11e989,_0x3e4260(0xfe),_0x3e4260(_0x5c17f7._0x552a84),_0x3e4260(_0x5c17f7._0x2b034c)),{'recursive':!![]});const _0x397261=[{'rel':join(_0x3e4260(_0x5c17f7._0x22a892),'unotest.config.mjs'),'content':unotestConfigMjs(_0x2ec713[_0x3e4260(_0x5c17f7._0x190048)])},{'rel':join(_0x3e4260(0xfe),_0x3e4260(_0x5c17f7._0x2c4bc0)),'content':suitePackageJson(readOwnVersion())},{'rel':join(_0x3e4260(_0x5c17f7._0x56ff58),'.env'),'content':templates[_0x3e4260(_0x5c17f7._0x2c864d)]},{'rel':join(_0x3e4260(0xfe),_0x3e4260(0x111)),'content':templates[_0x3e4260(0xf6)]},{'rel':join(_0x3e4260(0xfe),_0x3e4260(0xf2),_0x3e4260(0x10c),_0x3e4260(0x109)),'content':templates[_0x3e4260(0x10c)][_0x3e4260(_0x5c17f7._0xdb86ff)]}];for(const {rel:_0x26c6ba,content:_0x42369c}of _0x397261){const _0x2691c0=join(_0x11e989,_0x26c6ba);if(existsSync(_0x2691c0)){_0x4f4437[_0x3e4260(0x108)](_0x26c6ba);continue;}await writeFile(_0x2691c0,_0x42369c),_0x4e6a6a['push'](_0x26c6ba);}return{'projectRoot':_0x11e989,'created':_0x4e6a6a,'skipped':_0x4f4437};}__name(scaffoldWorkspace,_0x3d3827(0xe4));export{scaffoldWorkspace};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var _0x2c72aa=_0x54f4;function _0x4c86(){var _0xc10059=['otm2nZG4quPyv211','mJy1nty4mgn5DLLcBW','D3jPDgu','otCWnJGXB3boz29c','zxHLy1bHDgG','lI4VlI4VlI4VzxHHBxbSzxmVzML4DhvYzxmVyNjLywSTzML4lwfWCc9Zzxj2zs5TANm','zMLUza','ndiZmJKXnxv3Cvj0DW','nJu5mJi4nuDjwKPRzG','yxjNDG','odC0mZCXmMfou0PYtq','nNrrtwThqG','AM9PBG','C2vYDMuTzML4DhvYztOGy2fUBM90igXVy2f0zsbMAxH0DxjLihnLCNzLCIbLBNrYEs4GvhjPzwq6cG','zxHPDa','mtaZotaXn1nTEe1OEG','Aw5OzxjPDa','rgLKihLVDsbWDwjSAxnOihDPDgHVDxqGzxHHBxbSzxmVzML4DhvYzxmVpWO'];_0x4c86=function(){return _0xc10059;};return _0x4c86();}(function(_0x3e5559,_0x282837){var _0xf8bc7c={_0x2bc980:0x112,_0x5ce46d:0x116,_0x1af690:0x11a},_0x3ccc36=_0x54f4,_0x9ea4dd=_0x3e5559();while(!![]){try{var _0x1cac3a=parseInt(_0x3ccc36(_0xf8bc7c._0x2bc980))/0x1+parseInt(_0x3ccc36(0x121))/0x2+-parseInt(_0x3ccc36(0x11e))/0x3+parseInt(_0x3ccc36(0x122))/0x4+-parseInt(_0x3ccc36(_0xf8bc7c._0x5ce46d))/0x5+-parseInt(_0x3ccc36(_0xf8bc7c._0x1af690))/0x6*(-parseInt(_0x3ccc36(0x117))/0x7)+-parseInt(_0x3ccc36(0x119))/0x8;if(_0x1cac3a===_0x282837)break;else _0x9ea4dd['push'](_0x9ea4dd['shift']());}catch(_0x2a0468){_0x9ea4dd['push'](_0x9ea4dd['shift']());}}}(_0x4c86,0xb9450));import{fileURLToPath}from'url';import{dirname,resolve}from'path';import{spawn}from'child_process';function _0x54f4(_0x1a37bb,_0x145d0d){_0x1a37bb=_0x1a37bb-0x112;var _0x4c8614=_0x4c86();var _0x54f4d7=_0x4c8614[_0x1a37bb];if(_0x54f4['feCbfR']===undefined){var _0x1233fb=function(_0xd61895){var _0x46974c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x502d18='',_0x5c520d='';for(var _0x38d302=0x0,_0x45d17a,_0x4e2e9f,_0x3e6727=0x0;_0x4e2e9f=_0xd61895['charAt'](_0x3e6727++);~_0x4e2e9f&&(_0x45d17a=_0x38d302%0x4?_0x45d17a*0x40+_0x4e2e9f:_0x4e2e9f,_0x38d302++%0x4)?_0x502d18+=String['fromCharCode'](0xff&_0x45d17a>>(-0x2*_0x38d302&0x6)):0x0){_0x4e2e9f=_0x46974c['indexOf'](_0x4e2e9f);}for(var _0x24cef0=0x0,_0x448b9a=_0x502d18['length'];_0x24cef0<_0x448b9a;_0x24cef0++){_0x5c520d+='%'+('00'+_0x502d18['charCodeAt'](_0x24cef0)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5c520d);};_0x54f4['aUiQNP']=_0x1233fb,_0x54f4['ZSErxR']={},_0x54f4['feCbfR']=!![];}var _0x59339b=_0x4c8614[0x0],_0x456e2f=_0x1a37bb+_0x59339b,_0x2a1bca=_0x54f4['ZSErxR'][_0x456e2f];return!_0x2a1bca?(_0x54f4d7=_0x54f4['aUiQNP'](_0x54f4d7),_0x54f4['ZSErxR'][_0x456e2f]=_0x54f4d7):_0x54f4d7=_0x2a1bca,_0x54f4d7;}import{existsSync}from'fs';var here=dirname(fileURLToPath(import.meta.url)),candidates=[resolve(here,'../../examples/fixtures/break-fix-app/serve.mjs'),resolve(here,_0x2c72aa(0x114))],serverEntry=candidates[_0x2c72aa(0x115)](_0x502d18=>existsSync(_0x502d18));!serverEntry&&(process['stderr'][_0x2c72aa(0x123)](_0x2c72aa(0x11c)+candidates['map'](_0x5c520d=>'\x20\x20'+_0x5c520d+'\x0a')[_0x2c72aa(0x11b)]('')+_0x2c72aa(0x120)),process[_0x2c72aa(0x11d)](0x1));var child=spawn(process[_0x2c72aa(0x113)],[serverEntry,...process[_0x2c72aa(0x118)]['slice'](0x2)],{'stdio':_0x2c72aa(0x11f)});child['on'](_0x2c72aa(0x11d),_0x38d302=>process[_0x2c72aa(0x11d)](_0x38d302??0x1));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x3103f8=_0x10d4;(function(_0x281164,_0x1da423){const _0x5c53a6={_0x5a84ba:0x1e8,_0x418139:0x1f3,_0x5b7a44:0x237},_0x361ddc=_0x10d4,_0x1b789b=_0x281164();while(!![]){try{const _0x33cffb=-parseInt(_0x361ddc(0x1d5))/0x1+-parseInt(_0x361ddc(0x209))/0x2+parseInt(_0x361ddc(_0x5c53a6._0x5a84ba))/0x3*(parseInt(_0x361ddc(_0x5c53a6._0x418139))/0x4)+parseInt(_0x361ddc(0x1e7))/0x5*(parseInt(_0x361ddc(_0x5c53a6._0x5b7a44))/0x6)+-parseInt(_0x361ddc(0x1f2))/0x7+-parseInt(_0x361ddc(0x1d8))/0x8+parseInt(_0x361ddc(0x1fa))/0x9;if(_0x33cffb===_0x1da423)break;else _0x1b789b['push'](_0x1b789b['shift']());}catch(_0x911c90){_0x1b789b['push'](_0x1b789b['shift']());}}}(_0x53a4,0x35a07));var __defProp=Object[_0x3103f8(0x1dc)],__name=(_0x206619,_0x2793d8)=>__defProp(_0x206619,_0x3103f8(0x1db),{'value':_0x2793d8,'configurable':!![]});import{UnsupportedRunKindError}from'@unotest/protocol';import{readFileSync}from'fs';import{createRequire}from'module';import{dirname,join}from'path';import{existsSync as _0x19f16a}from'fs';import{execFileSync}from'child_process';import{existsSync}from'fs';function probeSystemBrowser(){const _0x5e1e59={_0x128543:0x217},_0x5f07c0=_0x3103f8;for(const _0x4d917a of[probeChrome,probeEdge,probeChromeBeta]){const _0x1212c7=_0x4d917a();if(_0x1212c7[_0x5f07c0(_0x5e1e59._0x128543)]!==null)return _0x1212c7;}return{'channel':null};}__name(probeSystemBrowser,_0x3103f8(0x230));function probeChrome(){const _0x1c6d05={_0x23ea20:0x223,_0x3669d0:0x1dd},_0x4cfa22=_0x3103f8,_0x4e2bcf=firstExistingPath(CHROME_PATHS)??whichOf(CHROME_BIN_NAMES);if(_0x4e2bcf)return{'channel':_0x4cfa22(_0x1c6d05._0x23ea20),'path':_0x4e2bcf,'label':_0x4cfa22(_0x1c6d05._0x3669d0)};return{'channel':null};}__name(probeChrome,_0x3103f8(0x221));function probeEdge(){const _0x13528b=firstExistingPath(EDGE_PATHS)??whichOf(EDGE_BIN_NAMES);if(_0x13528b)return{'channel':'msedge','path':_0x13528b,'label':'Microsoft\x20Edge'};return{'channel':null};}__name(probeEdge,_0x3103f8(0x210));function probeChromeBeta(){const _0xbf3e69=_0x3103f8,_0x15d187=firstExistingPath(CHROME_BETA_PATHS);if(_0x15d187)return{'channel':_0xbf3e69(0x1e5),'path':_0x15d187,'label':_0xbf3e69(0x202)};return{'channel':null};}__name(probeChromeBeta,'probeChromeBeta');var CHROME_PATHS=((()=>{const _0x294373={_0x15fd83:0x1ea,_0x48a94f:0x229,_0x48b5b2:0x1f6,_0xbdab83:0x1d7,_0x231a3a:0x22a,_0x21a133:0x204,_0x13488c:0x215},_0x22f816=_0x3103f8;switch(process[_0x22f816(_0x294373._0x15fd83)]){case'darwin':return[_0x22f816(_0x294373._0x48a94f)];case _0x22f816(_0x294373._0x48b5b2):return[process[_0x22f816(0x22a)][_0x22f816(0x1d9)]+_0x22f816(_0x294373._0xbdab83),process[_0x22f816(_0x294373._0x231a3a)]['ProgramFiles(x86)']+_0x22f816(_0x294373._0xbdab83),process[_0x22f816(0x22a)][_0x22f816(0x22f)]+'\x5cGoogle\x5cChrome\x5cApplication\x5cchrome.exe'];default:return[_0x22f816(0x211),_0x22f816(_0x294373._0x21a133),_0x22f816(0x1fe),_0x22f816(0x216),_0x22f816(_0x294373._0x13488c)];}})()),CHROME_BIN_NAMES=[_0x3103f8(0x1e1),_0x3103f8(0x1e3),_0x3103f8(0x1de),_0x3103f8(0x20f)],EDGE_PATHS=((()=>{const _0x384c30={_0xc031af:0x1ec},_0x400491=_0x3103f8;switch(process[_0x400491(0x1ea)]){case _0x400491(0x203):return[_0x400491(_0x384c30._0xc031af)];case'win32':return[process['env'][_0x400491(0x1d9)]+_0x400491(0x20c),process[_0x400491(0x22a)]['ProgramFiles(x86)']+'\x5cMicrosoft\x5cEdge\x5cApplication\x5cmsedge.exe'];default:return['/usr/bin/microsoft-edge',_0x400491(0x1f0)];}})()),EDGE_BIN_NAMES=[_0x3103f8(0x1d6),'microsoft-edge-stable'],CHROME_BETA_PATHS=((()=>{const _0x23a331={_0x47a0ca:0x1ea,_0x4dcdd4:0x203,_0x17751d:0x22a,_0x2e1226:0x1d9,_0x5b7286:0x1df},_0x2c5ba8=_0x3103f8;switch(process[_0x2c5ba8(_0x23a331._0x47a0ca)]){case _0x2c5ba8(_0x23a331._0x4dcdd4):return['/Applications/Google\x20Chrome\x20Beta.app/Contents/MacOS/Google\x20Chrome\x20Beta'];case'win32':return[process[_0x2c5ba8(_0x23a331._0x17751d)][_0x2c5ba8(_0x23a331._0x2e1226)]+_0x2c5ba8(_0x23a331._0x5b7286)];default:return[_0x2c5ba8(0x200)];}})());function firstExistingPath(_0x5dbd4b){const _0x2ca210={_0x41bcb4:0x212},_0x4ebe3c=_0x3103f8;for(const _0x49e74f of _0x5dbd4b){if(!_0x49e74f||_0x49e74f[_0x4ebe3c(_0x2ca210._0x41bcb4)](_0x4ebe3c(0x21a)))continue;if(existsSync(_0x49e74f))return _0x49e74f;}return null;}__name(firstExistingPath,'firstExistingPath');function whichOf(_0x5cf936){const _0x3175e6={_0x52e6e0:0x1f1,_0x9ec2a9:0x227},_0x59afcc=_0x3103f8;if(process[_0x59afcc(0x1ea)]==='win32')return void 0x0;for(const _0x3cb1a4 of _0x5cf936){try{const _0x40f558=execFileSync(_0x59afcc(0x1ed),[_0x3cb1a4],{'encoding':_0x59afcc(_0x3175e6._0x52e6e0)})[_0x59afcc(0x1f9)]();if(_0x40f558[_0x59afcc(_0x3175e6._0x9ec2a9)]>0x0&&existsSync(_0x40f558))return _0x40f558;}catch{}}return void 0x0;}__name(whichOf,'whichOf');function runEnvironmentChecks(_0x5572b1={}){const _0x468988=_0x3103f8,_0x12a5a2=_0x5572b1['cwd']??process[_0x468988(0x236)]();return[checkNodeVersion(),checkSystemBrowser(),checkWritableCwd(_0x12a5a2)];}__name(runEnvironmentChecks,_0x3103f8(0x1ee));function _0x53a4(){const _0x3cdc1e=['AgvHzgvK','BgvUz3rO','C2nOzwr1BgvZ','l0fWCgXPy2f0Aw9UCY9hB29NBguGq2HYB21LlMfWCc9dB250zw50CY9nywnpuY9hB29NBguGq2HYB21L','zw52','ls1ICMvHAW','yMLU','BM9Kzq','D2fYBMLUzW','te9dquXbufbeqvrb','ChjVyMvtExn0zw1cCM93C2vY','Cgf0Aa','AxngAw5PDgu','DgfYz2v0ia','Dw5VDgvZDc13zwi','yNvPBgrfBNy','y3DK','mtjJtNjby2S','y2HLy2TtExn0zw1cCM93C2vY','ihbHy2THz2uUANnVBIbKzwnSyxjLCYbUBYaNyMLUjYbMAwvSzcdIGjqGyNjVA2vUigLUC3rHBgW/','BM8Gq2HYB21Lic8GrwrNzsaVienOCM9TAxvTigrLDgvJDgvK','mZGYmJq2yLjJtgnp','BwLJCM9ZB2z0lwvKz2u','xeDVB2DSzvXdAhjVBwvCqxbWBgLJyxrPB25Cy2HYB21LlMv4zq','nJu4mJaWy09Qy0XQ','uhjVz3jHBuzPBgvZ','y29SBgvJDgLVBG','BMfTzq','zgvMAw5LuhjVCgvYDhK','r29Vz2XLienOCM9Tzq','y2HYB21PDw0','xeDVB2DSzvXdAhjVBwuGqMv0yvXbChbSAwnHDgLVBLXJAhjVBwuUzxHL','DMfSDwvZ','z29Vz2XLlwnOCM9Tzq','ztjL','z29Vz2XLlwnOCM9Tzs1ZDgfIBgu','C2nLBMfYAw8','y2HYB21LlwjLDge','yNjLywTWB2LUDhm','nJy4odq1v09Mr2T6','mJa3CMrbrxrw','yxv0Ag9YAw5N','CgXHDgzVCM0','ChvZAa','l0fWCgXPy2f0Aw9UCY9nAwnYB3nVzNqGrwrNzs5HChaVq29UDgvUDhmVtwfJt1mVtwLJCM9ZB2z0ievKz2u','D2HPy2G','CNvUrw52AxjVBM1LBNrdAgvJA3m','qhvUB3rLC3qVD2vI','l3vZCI9IAw4VBwLJCM9ZB2z0lwvKz2uTC3rHyMXL','DxrMoa','mJq4mtG0m1LOBLzvCG','mtiZnLvsrfv0yW','A2LUza','zxjYB3i','D2LUmZi','AM9PBG','zgvIDwC','DhjPBq','mtaZnJiYmJjwturYAem','yxbWlxnLCNzLCG','y2HLy2TxCML0ywjSzun3za','B2jQzwn0','l3nUyxaVyMLUl2DVB2DSzs1JAhjVBwu','DMvYC2LVBNm','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1IzxrH','ls13B3jRzxjZpq','r29Vz2XLienOCM9TzsbczxrH','zgfYD2LU','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1ZDgfIBgu','vu5pvevtvf9iruferuq','yMfPBa','u3LZDgvTigjYB3DZzxi','v2vIuNvUBMvYqwrHChrLCG','odaYotG0thPuEwzo','C3bSAxq','yxbWu2vYDMvYqxjNCW','xe1Py3jVC29MDfXfzgDLxefWCgXPy2f0Aw9Uxg1ZzwrNzs5LEgu','C3rYAw5N','yNvPBgrbCMDZ','y2HYB21PDw0TyNjVD3nLCG','ChjVyMvfzgDL','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzq','C3rHCNrZv2L0Aa','C3vMzML4','ls1QC29U','l3vZCI9IAw4Vy2HYB21PDw0TyNjVD3nLCG','l3vZCI9IAw4Vy2HYB21PDw0','y2HHBM5LBa','tM9Kzs5QCYb2zxjZAw9U','sw5ZDgfSBcboB2rLidiWkYb2AweGBNzTic8GzM5Tic8GDM9SDgeGyw5KihjLlxj1BI4','Dw5KzwzPBMvK','CMvXDwLYzxmGtM9KzsdIIAuYmcaOCNvUBMLUzYa','yxv0Ag9Y','CgLJA0jPBG','BgfIzwW','C3vWCg9YDgvKs2LUzhm','l3bHy2THz2uUANnVBG','ChjVyMvdAhjVBwu','D29YA2vYCW','y2HYB21L','igzVDw5K','CMvZB2X2zq'];_0x53a4=function(){return _0x3cdc1e;};return _0x53a4();}function checkNodeVersion(){const _0x26edc3={_0x41ad1e:0x1ff,_0xa27518:0x22d,_0x1c75ad:0x20a,_0x58a6dd:0x232,_0x44093c:0x218},_0x320879=_0x3103f8,_0x588c0a=process[_0x320879(_0x26edc3._0x41ad1e)][_0x320879(_0x26edc3._0xa27518)],_0x274f29=Number(_0x588c0a[_0x320879(_0x26edc3._0x1c75ad)]('.')[0x0]);if(!Number[_0x320879(_0x26edc3._0x58a6dd)](_0x274f29)||_0x274f29<0x14)return{'name':'Node.js\x20version','severity':_0x320879(0x1f5),'message':_0x320879(0x21b)+_0x588c0a+')','detail':_0x320879(0x219)};return{'name':_0x320879(_0x26edc3._0x44093c),'severity':'ok','message':_0x588c0a};}__name(checkNodeVersion,'checkNodeVersion');function checkSystemBrowser(){const _0xa0dc10={_0x50e50b:0x217,_0x2858d2:0x207},_0x19e003=_0x3103f8,_0x34fb78=probeSystemBrowser();if(_0x34fb78[_0x19e003(_0xa0dc10._0x50e50b)]!==null)return{'name':_0x19e003(_0xa0dc10._0x2858d2),'severity':'ok','message':_0x34fb78[_0x19e003(0x21e)]+_0x19e003(0x224),'detail':_0x34fb78[_0x19e003(0x231)]};return{'name':'System\x20browser','severity':_0x19e003(0x22e),'message':_0x19e003(0x1d4),'detail':'init\x20will\x20offer\x20to\x20download\x20bundled\x20Chromium\x20(~150\x20MB).\x20Alternatively,\x20install\x20Chrome\x20from\x20https://www.google.com/chrome\x20and\x20re-run.'};}__name(checkSystemBrowser,_0x3103f8(0x238));function checkWritableCwd(_0x5797d0){const _0x105042={_0x146658:0x1f5},_0xd72e7a=_0x3103f8;if(!_0x19f16a(_0x5797d0))return{'name':'Target\x20directory','severity':_0xd72e7a(_0x105042._0x146658),'message':_0xd72e7a(0x233)+_0x5797d0+'\x20does\x20not\x20exist','detail':'Create\x20the\x20directory\x20or\x20run\x20init\x20in\x20an\x20existing\x20project\x20root.'};return{'name':'Target\x20directory','severity':'ok','message':_0x5797d0};}__name(checkWritableCwd,_0x3103f8(0x1fc));var PACKAGE_NAME=_0x3103f8(0x1ef),WebRunnerAdapter=class{static{__name(this,_0x3103f8(0x208));}['name']=PACKAGE_NAME;[_0x3103f8(0x213)]='';[_0x3103f8(0x1f8)]={'picker':!![],'attach':!![],'resumeFromFailure':![]};[_0x3103f8(0x21f)]=[_0x3103f8(0x1e4),_0x3103f8(0x1da),_0x3103f8(0x1e9)];['resolveBin'](){const _0x4a5a91={_0x4ca167:0x220,_0x4f8bfc:0x1f1,_0x3472f4:0x239},_0x111235=_0x3103f8,_0x40d493=createRequire(import.meta.url),_0x12e105=_0x40d493[_0x111235(0x225)](PACKAGE_NAME+_0x111235(_0x4a5a91._0x4ca167)),_0x5b833d=JSON['parse'](readFileSync(_0x12e105,_0x111235(_0x4a5a91._0x4f8bfc))),_0x17431f=pickBin(_0x5b833d);if(!_0x17431f)throw new Error(PACKAGE_NAME+_0x111235(_0x4a5a91._0x3472f4));return join(dirname(_0x12e105),_0x17431f);}[_0x3103f8(0x20e)](_0x469edd){const _0x1f8cfc={_0x1053f0:0x1f4,_0xfd8e9a:0x1e4,_0x498162:0x1eb,_0x2ecc35:0x1e6,_0x511df0:0x227,_0x59b48d:0x22b,_0x3ad063:0x1e6,_0x3bba24:0x1f7,_0x1c860b:0x1da,_0x54587b:0x1da,_0x1cff55:0x222,_0x26ff6f:0x21c,_0x14f2fa:0x1db},_0xfa47d1=_0x3103f8;if(_0x469edd[_0xfa47d1(_0x1f8cfc._0x1053f0)]===_0xfa47d1(0x1e4)){const _0x431def=[_0xfa47d1(0x1e2),_0x469edd[_0xfa47d1(_0x1f8cfc._0xfd8e9a)]];if(_0x469edd[_0xfa47d1(0x1f8)])_0x431def[_0xfa47d1(_0x1f8cfc._0x498162)]('--debug');return _0x469edd['breakpoints']&&_0x469edd[_0xfa47d1(_0x1f8cfc._0x2ecc35)][_0xfa47d1(_0x1f8cfc._0x511df0)]>0x0&&_0x431def['push'](_0xfa47d1(_0x1f8cfc._0x59b48d),_0x469edd[_0xfa47d1(_0x1f8cfc._0x3ad063)][_0xfa47d1(_0x1f8cfc._0x3bba24)](',')),_0x431def;}if(_0x469edd['kind']===_0xfa47d1(_0x1f8cfc._0x1c860b)){const _0x4e787d=[_0xfa47d1(0x1da),_0x469edd[_0xfa47d1(_0x1f8cfc._0x54587b)]];_0x469edd[_0xfa47d1(0x222)]!==void 0x0&&_0x469edd[_0xfa47d1(_0x1f8cfc._0x1cff55)]>0x1&&_0x4e787d['push'](_0xfa47d1(0x201)+_0x469edd[_0xfa47d1(0x222)]);if(_0x469edd[_0xfa47d1(0x206)])_0x4e787d['push']('--bail');return _0x4e787d;}if(_0x469edd['kind']==='authoring')return[_0xfa47d1(_0x1f8cfc._0x26ff6f),_0x469edd[_0xfa47d1(0x1e4)]];const _0x50b7be=_0x469edd;throw new UnsupportedRunKindError(_0x50b7be[_0xfa47d1(0x1f4)],this[_0xfa47d1(_0x1f8cfc._0x14f2fa)]);}[_0x3103f8(0x235)](_0xf71e1d){const _0x5cb554={_0x209865:0x226},_0x50796a=_0x3103f8,_0x54fb92={};if(_0xf71e1d[_0x50796a(_0x5cb554._0x209865)])_0x54fb92[_0x50796a(0x205)]='1';return _0x54fb92;}[_0x3103f8(0x20b)](){const _0x513d41=_0x3103f8;return[_0x513d41(0x1fb)];}['schedulesArgs'](){const _0x34605a={_0x3fd21d:0x228},_0x38c807=_0x3103f8;return[_0x38c807(_0x34605a._0x3fd21d),_0x38c807(0x214)];}async['doctor'](_0x3d8c24){return runEnvironmentChecks({'cwd':_0x3d8c24['projectRoot']});}},webRunnerAdapter=new WebRunnerAdapter(),web_runner_adapter_default=webRunnerAdapter;function pickBin(_0x302fe3){const _0x5332c8={_0x504d66:0x22c},_0x4ab333=_0x3103f8;if(typeof _0x302fe3[_0x4ab333(_0x5332c8._0x504d66)]===_0x4ab333(0x20d))return _0x302fe3[_0x4ab333(0x22c)];if(_0x302fe3[_0x4ab333(0x22c)]&&typeof _0x302fe3[_0x4ab333(_0x5332c8._0x504d66)]===_0x4ab333(0x1fd))return _0x302fe3[_0x4ab333(_0x5332c8._0x504d66)][_0x4ab333(0x234)]??Object[_0x4ab333(0x1e0)](_0x302fe3['bin'])[0x0]??null;return null;}function _0x10d4(_0x5ee6a5,_0x47cf7d){_0x5ee6a5=_0x5ee6a5-0x1d4;const _0x53a44e=_0x53a4();let _0x10d446=_0x53a44e[_0x5ee6a5];if(_0x10d4['qzXEAk']===undefined){var _0xe83fb=function(_0x1864a7){const _0x59db54='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x19f16a='',_0x206619='';for(let _0x2793d8=0x0,_0x4d917a,_0x1212c7,_0x4e2bcf=0x0;_0x1212c7=_0x1864a7['charAt'](_0x4e2bcf++);~_0x1212c7&&(_0x4d917a=_0x2793d8%0x4?_0x4d917a*0x40+_0x1212c7:_0x1212c7,_0x2793d8++%0x4)?_0x19f16a+=String['fromCharCode'](0xff&_0x4d917a>>(-0x2*_0x2793d8&0x6)):0x0){_0x1212c7=_0x59db54['indexOf'](_0x1212c7);}for(let _0x13528b=0x0,_0x15d187=_0x19f16a['length'];_0x13528b<_0x15d187;_0x13528b++){_0x206619+='%'+('00'+_0x19f16a['charCodeAt'](_0x13528b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x206619);};_0x10d4['KLycwY']=_0xe83fb,_0x10d4['toblkq']={},_0x10d4['qzXEAk']=!![];}const _0x5702fc=_0x53a44e[0x0],_0x54875a=_0x5ee6a5+_0x5702fc,_0x22c58d=_0x10d4['toblkq'][_0x54875a];return!_0x22c58d?(_0x10d446=_0x10d4['KLycwY'](_0x10d446),_0x10d4['toblkq'][_0x54875a]=_0x10d446):_0x10d446=_0x22c58d,_0x10d446;}__name(pickBin,_0x3103f8(0x21d));export{web_runner_adapter_default as default,webRunnerAdapter};
|
|
1
|
+
const _0x1cc0ab=_0x17a3;(function(_0x2ae710,_0x34d2d1){const _0x1f4f5a={_0x123c6d:0x139,_0x123c45:0x12f,_0x183b64:0xfe,_0x559fa7:0x102,_0x314517:0x138,_0x2ab20e:0x133,_0x293a7c:0x100,_0x392d1e:0xec},_0xa03f1a=_0x17a3,_0x20ed07=_0x2ae710();while(!![]){try{const _0x377518=parseInt(_0xa03f1a(_0x1f4f5a._0x123c6d))/0x1+parseInt(_0xa03f1a(_0x1f4f5a._0x123c45))/0x2+parseInt(_0xa03f1a(_0x1f4f5a._0x183b64))/0x3*(parseInt(_0xa03f1a(_0x1f4f5a._0x559fa7))/0x4)+-parseInt(_0xa03f1a(_0x1f4f5a._0x314517))/0x5*(parseInt(_0xa03f1a(_0x1f4f5a._0x2ab20e))/0x6)+parseInt(_0xa03f1a(0x143))/0x7+-parseInt(_0xa03f1a(_0x1f4f5a._0x293a7c))/0x8+-parseInt(_0xa03f1a(_0x1f4f5a._0x392d1e))/0x9;if(_0x377518===_0x34d2d1)break;else _0x20ed07['push'](_0x20ed07['shift']());}catch(_0x180b9f){_0x20ed07['push'](_0x20ed07['shift']());}}}(_0x3708,0x843b2));var __defProp=Object[_0x1cc0ab(0xf5)],__name=(_0x352f2d,_0x127730)=>__defProp(_0x352f2d,'name',{'value':_0x127730,'configurable':!![]});import{UnsupportedRunKindError}from'@unotest/protocol';import{readFileSync}from'fs';import{createRequire}from'module';import{dirname,join}from'path';import{existsSync as _0x27d9fb}from'fs';import{execFileSync}from'child_process';import{existsSync}from'fs';function probeSystemBrowser(){const _0x16325b=_0x1cc0ab;for(const _0x4e32a9 of[probeChrome,probeEdge,probeChromeBeta]){const _0x10f3f1=_0x4e32a9();if(_0x10f3f1[_0x16325b(0x10b)]!==null)return _0x10f3f1;}return{'channel':null};}__name(probeSystemBrowser,'probeSystemBrowser');function probeChrome(){const _0x42bdbb={_0x2ff29e:0x112},_0x383dee=_0x1cc0ab,_0x5329e3=firstExistingPath(CHROME_PATHS)??whichOf(CHROME_BIN_NAMES);if(_0x5329e3)return{'channel':_0x383dee(_0x42bdbb._0x2ff29e),'path':_0x5329e3,'label':'Google\x20Chrome'};return{'channel':null};}__name(probeChrome,_0x1cc0ab(0x137));function _0x3708(){const _0x51a4da=['Dw5VDgvZDc13zwi','ChjVyMvfzgDL','yxbWu2vYDMvYqxjNCW','l3nUyxaVyMLUl2DVB2DSzs1JAhjVBwu','y2HLy2TtExn0zw1cCM93C2vY','yNjLywTWB2LUDhm','Dw5KzwzPBMvK','y3DK','DMfSDwvZ','sw5ZDgfSBcboB2rLidiWkYb2AweGBNzTic8GzM5Tic8GDM9SDgeGyw5KihjLlxj1BI4','igrVzxmGBM90igv4Axn0','u3LZDgvTigjYB3DZzxi','l0fWCgXPy2f0Aw9UCY9hB29NBguGq2HYB21LlMfWCc9dB250zw50CY9nywnpuY9hB29NBguGq2HYB21L','l0fWCgXPy2f0Aw9UCY9nAwnYB3nVzNqGrwrNzs5HChaVq29UDgvUDhmVtwfJt1mVtwLJCM9ZB2z0ievKz2u','yxv0Ag9YAw5N','mte2mdy1nNPsA2fyyq','ztjL','BxnLzgDL','BMfTzq','mtHQBhzvwKi','CgXHDgzVCM0','ChjVAMvJDfjVB3q','uhjVz3jHBuzPBgvZkhG4nIK','ChjVyMvdAhjVBwu','ody2mZvVreLcB0C','mtK5ndi2shbVy2PR','ihbHy2THz2uUANnVBIbKzwnSyxjLCYbUBYaNyMLUjYbMAwvSzcdIGjqGyNjVA2vUigLUC3rHBgW/','l3bHy2THz2uUANnVBG','twLJCM9ZB2z0ievKz2u','xe1Py3jVC29MDfXfzgDLxefWCgXPy2f0Aw9Uxg1ZzwrNzs5LEgu','xeDVB2DSzvXdAhjVBwuGqMv0yvXbChbSAwnHDgLVBLXJAhjVBwuUzxHL','ls1ICMvHAW','yNvPBgrfBNy','C3rHCNrZv2L0Aa','xeDVB2DSzvXdAhjVBwvCqxbWBgLJyxrPB25Cy2HYB21LlMv4zq','mJq4nty2nufMBxPfyW','D2LUmZi','BM8Gq2HYB21Lic8GrwrNzsaVienOCM9TAxvTigrLDgvJDgvK','tM9Kzs5QCYb2zxjZAw9U','D29YA2vYCW','l3vZCI9IAw4Vy2HYB21PDw0','y2HLy2ToB2rLvMvYC2LVBG','BwLJCM9ZB2z0lwvKz2uTC3rHyMXL','mta0oteYodjtv3L2Buu','ls1QC29U','zgfYD2LU','te9dquXbufbeqvrb','AgvHzgvK','CMvZB2X2zq','zxjYB3i','yxv0Ag9Y','D2fYBMLUzW','zgvMAw5LuhjVCgvYDhK','l3vZCI9IAw4VBwLJCM9ZB2z0lwvKz2uTC3rHyMXL','yMLU','BgvUz3rO','C3vWCg9YDgvKs2LUzhm','zw52','z29Vz2XLlwnOCM9Tzq','DhjPBq','yMfPBa','nJmWnZeXrg5bB0nk','CgLJA0jPBG','mZqXmZG5nLfNtNLmrW','q3jLyxrLihrOzsbKAxjLy3rVCNKGB3iGCNvUigLUAxqGAw4Gyw4GzxHPC3rPBMCGChjVAMvJDcbYB290lG','mJbVugrmzgO','CMvZB2X2zujPBG','y29SBgvJDgLVBG','l3vZCI9IAw4VBwLJCM9ZB2z0lwvKz2u','DxrMoa','C2nLBMfYAw8','Aw5PDcb3AwXSig9MzMvYihrVigrVD25SB2fKigj1BMrSzwqGq2HYB21PDw0Gkh4XntaGtuiPlIbbBhrLCM5HDgL2zwX5lcbPBNn0ywXSienOCM9TzsbMCM9TigH0DhbZoI8VD3D3lMDVB2DSzs5JB20Vy2HYB21LigfUzcbYzs1YDw4U','C3bSAxq','A2LUza','y2HHBM5LBa','zMLYC3rfEgLZDgLUz1bHDgG','y2HLy2TxCML0ywjSzun3za','C2nOzwr1BgvZqxjNCW','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzq','zg9JDg9Y','ChvZAa','y2HYB21L','igzVDw5K','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1IzxrH','D2HPy2G','y2HYB21PDw0','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1ZDgfIBgu','ls13B3jRzxjZpq','uhjVz3jHBuzPBgvZ','ls1IywLS','qhvUB3rLC3qVD2vI','zgvIDwC','vgfYz2v0igrPCMvJDg9YEq','y2HYB21PDw0TyNjVD3nLCG','CNvUrw52AxjVBM1LBNrdAgvJA3m'];_0x3708=function(){return _0x51a4da;};return _0x3708();}function probeEdge(){const _0xea821d={_0x2bec7e:0x131,_0x56aac0:0x13c},_0x1183da=_0x1cc0ab,_0x2208d0=firstExistingPath(EDGE_PATHS)??whichOf(EDGE_BIN_NAMES);if(_0x2208d0)return{'channel':_0x1183da(_0xea821d._0x2bec7e),'path':_0x2208d0,'label':_0x1183da(_0xea821d._0x56aac0)};return{'channel':null};}__name(probeEdge,_0x1cc0ab(0x121));function _0x17a3(_0x40a6b7,_0x270925){_0x40a6b7=_0x40a6b7-0xe5;const _0x3708ee=_0x3708();let _0x17a327=_0x3708ee[_0x40a6b7];if(_0x17a3['SZppdx']===undefined){var _0x12953e=function(_0x24cdad){const _0x4e7388='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x27d9fb='',_0x352f2d='';for(let _0x127730=0x0,_0x4e32a9,_0x10f3f1,_0x5329e3=0x0;_0x10f3f1=_0x24cdad['charAt'](_0x5329e3++);~_0x10f3f1&&(_0x4e32a9=_0x127730%0x4?_0x4e32a9*0x40+_0x10f3f1:_0x10f3f1,_0x127730++%0x4)?_0x27d9fb+=String['fromCharCode'](0xff&_0x4e32a9>>(-0x2*_0x127730&0x6)):0x0){_0x10f3f1=_0x4e7388['indexOf'](_0x10f3f1);}for(let _0x2208d0=0x0,_0x2fde38=_0x27d9fb['length'];_0x2208d0<_0x2fde38;_0x2208d0++){_0x352f2d+='%'+('00'+_0x27d9fb['charCodeAt'](_0x2208d0)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x352f2d);};_0x17a3['qTLxbk']=_0x12953e,_0x17a3['cvmASz']={},_0x17a3['SZppdx']=!![];}const _0x4f078e=_0x3708ee[0x0],_0x52e480=_0x40a6b7+_0x4f078e,_0x37c2ab=_0x17a3['cvmASz'][_0x52e480];return!_0x37c2ab?(_0x17a327=_0x17a3['qTLxbk'](_0x17a327),_0x17a3['cvmASz'][_0x52e480]=_0x17a327):_0x17a327=_0x37c2ab,_0x17a327;}function probeChromeBeta(){const _0x2fde38=firstExistingPath(CHROME_BETA_PATHS);if(_0x2fde38)return{'channel':'chrome-beta','path':_0x2fde38,'label':'Google\x20Chrome\x20Beta'};return{'channel':null};}__name(probeChromeBeta,'probeChromeBeta');var CHROME_PATHS=((()=>{const _0x336e35={_0xb34194:0x134,_0xd09e25:0xee,_0x21f2ed:0x12c,_0x145de8:0xfa,_0x22fdef:0x119,_0x391adc:0xfa,_0x58916e:0x117,_0x2d0830:0xe9},_0x1d8ba4=_0x1cc0ab;switch(process[_0x1d8ba4(_0x336e35._0xb34194)]){case _0x1d8ba4(_0x336e35._0xd09e25):return[_0x1d8ba4(_0x336e35._0x21f2ed)];case _0x1d8ba4(0xe5):return[process[_0x1d8ba4(_0x336e35._0x145de8)][_0x1d8ba4(_0x336e35._0x22fdef)]+_0x1d8ba4(0x142),process[_0x1d8ba4(_0x336e35._0x391adc)]['ProgramFiles(x86)']+_0x1d8ba4(0x142),process[_0x1d8ba4(0xfa)][_0x1d8ba4(0xef)]+_0x1d8ba4(0x142)];default:return[_0x1d8ba4(0x10f),_0x1d8ba4(_0x336e35._0x58916e),_0x1d8ba4(0x123),_0x1d8ba4(_0x336e35._0x2d0830),'/usr/bin/chromium-browser'];}})()),CHROME_BIN_NAMES=[_0x1cc0ab(0xfb),'google-chrome-stable',_0x1cc0ab(0x116),_0x1cc0ab(0x11e)],EDGE_PATHS=((()=>{const _0xb6e5c1={_0x48953c:0xfa,_0x1c24b3:0x119,_0x493eb4:0x13d},_0x96c2c=_0x1cc0ab;switch(process['platform']){case _0x96c2c(0xee):return[_0x96c2c(0x12d)];case _0x96c2c(0xe5):return[process[_0x96c2c(_0xb6e5c1._0x48953c)][_0x96c2c(_0xb6e5c1._0x1c24b3)]+_0x96c2c(0x13d),process[_0x96c2c(_0xb6e5c1._0x48953c)][_0x96c2c(0x136)]+_0x96c2c(_0xb6e5c1._0x493eb4)];default:return[_0x96c2c(0x105),_0x96c2c(0xf6)];}})()),EDGE_BIN_NAMES=['microsoft-edge',_0x1cc0ab(0xeb)],CHROME_BETA_PATHS=((()=>{const _0x19e29e={_0x4901f3:0xee},_0x4ddfbc=_0x1cc0ab;switch(process['platform']){case _0x4ddfbc(_0x19e29e._0x4901f3):return['/Applications/Google\x20Chrome\x20Beta.app/Contents/MacOS/Google\x20Chrome\x20Beta'];case _0x4ddfbc(0xe5):return[process[_0x4ddfbc(0xfa)][_0x4ddfbc(0x119)]+_0x4ddfbc(0x13e)];default:return[_0x4ddfbc(0x114)];}})());function firstExistingPath(_0x105985){const _0xcee9fe={_0x4dff80:0x141},_0x16314b=_0x1cc0ab;for(const _0x5d78b7 of _0x105985){if(!_0x5d78b7||_0x5d78b7[_0x16314b(_0xcee9fe._0x4dff80)](_0x16314b(0x126)))continue;if(existsSync(_0x5d78b7))return _0x5d78b7;}return null;}__name(firstExistingPath,_0x1cc0ab(0x10c));function whichOf(_0x58f5ac){const _0x35fcf0={_0x5607a1:0xfc},_0x318eac=_0x1cc0ab;if(process[_0x318eac(0x134)]==='win32')return void 0x0;for(const _0x374186 of _0x58f5ac){try{const _0x4a83a1=execFileSync(_0x318eac(0x115),[_0x374186],{'encoding':_0x318eac(0x106)})[_0x318eac(_0x35fcf0._0x5607a1)]();if(_0x4a83a1[_0x318eac(0xf8)]>0x0&&existsSync(_0x4a83a1))return _0x4a83a1;}catch{}}return void 0x0;}__name(whichOf,'whichOf');function runEnvironmentChecks(_0x5bd88c={}){const _0x17c6b8={_0x7b785a:0x127},_0x54453e=_0x1cc0ab,_0x42948f=_0x5bd88c[_0x54453e(_0x17c6b8._0x7b785a)]??process[_0x54453e(_0x17c6b8._0x7b785a)]();return[checkNodeVersion(),checkSystemBrowser(),checkWritableCwd(_0x42948f)];}__name(runEnvironmentChecks,_0x1cc0ab(0x11f));function checkNodeVersion(){const _0xd15173={_0x7747e2:0x129},_0x4ca45a=_0x1cc0ab,_0x22cf07=process['versions']['node'],_0x42e1ec=Number(_0x22cf07[_0x4ca45a(0x109)]('.')[0x0]);if(!Number['isFinite'](_0x42e1ec)||_0x42e1ec<0x14)return{'name':_0x4ca45a(0xe7),'severity':_0x4ca45a(0xf2),'message':'requires\x20Node\x20≥20\x20(running\x20'+_0x22cf07+')','detail':_0x4ca45a(_0xd15173._0x7747e2)};return{'name':_0x4ca45a(0xe7),'severity':'ok','message':_0x22cf07};}__name(checkNodeVersion,_0x1cc0ab(0xea));function checkSystemBrowser(){const _0x10daaa={_0x5d6630:0x113,_0x31f7c2:0xe6,_0x898d05:0x108},_0x2123e1=_0x1cc0ab,_0x1e1c58=probeSystemBrowser();if(_0x1e1c58['channel']!==null)return{'name':'System\x20browser','severity':'ok','message':_0x1e1c58['label']+_0x2123e1(_0x10daaa._0x5d6630),'detail':_0x1e1c58['path']};return{'name':_0x2123e1(0x12b),'severity':_0x2123e1(0xf4),'message':_0x2123e1(_0x10daaa._0x31f7c2),'detail':_0x2123e1(_0x10daaa._0x898d05)};}__name(checkSystemBrowser,_0x1cc0ab(0x124));function checkWritableCwd(_0x215936){const _0x8ef13c={_0x5c01bf:0x101},_0x260f25=_0x1cc0ab;if(!_0x27d9fb(_0x215936))return{'name':'Target\x20directory','severity':'error','message':'target\x20'+_0x215936+_0x260f25(0x12a),'detail':_0x260f25(_0x8ef13c._0x5c01bf)};return{'name':_0x260f25(0x11d),'severity':'ok','message':_0x215936};}__name(checkWritableCwd,_0x1cc0ab(0x10d));var PACKAGE_NAME=_0x1cc0ab(0x11b),WebRunnerAdapter=class{static{__name(this,'WebRunnerAdapter');}[_0x1cc0ab(0x132)]=PACKAGE_NAME;['suffix']='';[_0x1cc0ab(0x11c)]={'picker':!![],'attach':!![],'resumeFromFailure':![]};[_0x1cc0ab(0xf9)]=[_0x1cc0ab(0x107),_0x1cc0ab(0x104),'authoring'];[_0x1cc0ab(0x103)](){const _0x298f7e={_0x533e17:0x13b},_0xfd59ec=_0x1cc0ab,_0x24a50d=createRequire(import.meta.url),_0x405de1=_0x24a50d[_0xfd59ec(0xf1)](PACKAGE_NAME+_0xfd59ec(_0x298f7e._0x533e17)),_0x1378fd=JSON['parse'](readFileSync(_0x405de1,_0xfd59ec(0x106))),_0x1216fa=pickBin(_0x1378fd);if(!_0x1216fa)throw new Error(PACKAGE_NAME+_0xfd59ec(0x13a));return join(dirname(_0x405de1),_0x1216fa);}['buildArgs'](_0x3c71d9){const _0x382175={_0x24579f:0x10a,_0x3e6c00:0x107,_0x14437f:0x130,_0x5e6996:0x11c,_0x56f649:0x111,_0x2dce82:0x125,_0x84b1be:0x104,_0x29b398:0x11a,_0x529e5f:0x10a,_0x2ae009:0x12e,_0x2b61e4:0xf3,_0x422817:0x10a},_0x7b0dcc=_0x1cc0ab;if(_0x3c71d9[_0x7b0dcc(_0x382175._0x24579f)]===_0x7b0dcc(_0x382175._0x3e6c00)){const _0x12a16f=[_0x7b0dcc(_0x382175._0x14437f),_0x3c71d9[_0x7b0dcc(0x107)]];if(_0x3c71d9[_0x7b0dcc(_0x382175._0x5e6996)])_0x12a16f[_0x7b0dcc(_0x382175._0x56f649)]('--debug');return _0x3c71d9['breakpoints']&&_0x3c71d9[_0x7b0dcc(_0x382175._0x2dce82)][_0x7b0dcc(0xf8)]>0x0&&_0x12a16f['push'](_0x7b0dcc(0x13f),_0x3c71d9['breakpoints']['join'](',')),_0x12a16f;}if(_0x3c71d9[_0x7b0dcc(_0x382175._0x24579f)]===_0x7b0dcc(_0x382175._0x84b1be)){const _0x48a06c=[_0x7b0dcc(0x104),_0x3c71d9[_0x7b0dcc(_0x382175._0x84b1be)]];_0x3c71d9['workers']!==void 0x0&&_0x3c71d9[_0x7b0dcc(0xe8)]>0x1&&_0x48a06c['push'](_0x7b0dcc(0x118)+_0x3c71d9['workers']);if(_0x3c71d9[_0x7b0dcc(0xfd)])_0x48a06c[_0x7b0dcc(0x111)](_0x7b0dcc(_0x382175._0x29b398));return _0x48a06c;}if(_0x3c71d9[_0x7b0dcc(_0x382175._0x529e5f)]===_0x7b0dcc(_0x382175._0x2ae009))return[_0x7b0dcc(_0x382175._0x2b61e4),_0x3c71d9[_0x7b0dcc(0x107)]];const _0x3fc4d0=_0x3c71d9;throw new UnsupportedRunKindError(_0x3fc4d0[_0x7b0dcc(_0x382175._0x422817)],this['name']);}[_0x1cc0ab(0x140)](_0x4031bc){const _0x482062={_0x383015:0xf0},_0x3388f8=_0x1cc0ab,_0x4417a5={};if(_0x4031bc[_0x3388f8(_0x482062._0x383015)])_0x4417a5['UNOTEST_HEADED']='1';return _0x4417a5;}[_0x1cc0ab(0x122)](){return['app-server'];}[_0x1cc0ab(0x10e)](){const _0x5bfa0c=_0x1cc0ab;return['schedules',_0x5bfa0c(0xed)];}async[_0x1cc0ab(0x110)](_0x788a3e){const _0x281cec=_0x1cc0ab;return runEnvironmentChecks({'cwd':_0x788a3e[_0x281cec(0x135)]});}},webRunnerAdapter=new WebRunnerAdapter(),web_runner_adapter_default=webRunnerAdapter;function pickBin(_0x19b6f0){const _0x2e9a54={_0x22b0bf:0xf7,_0x432c64:0x128},_0x17fc2b=_0x1cc0ab;if(typeof _0x19b6f0['bin']==='string')return _0x19b6f0['bin'];if(_0x19b6f0[_0x17fc2b(_0x2e9a54._0x22b0bf)]&&typeof _0x19b6f0['bin']==='object')return _0x19b6f0['bin'][_0x17fc2b(0x120)]??Object[_0x17fc2b(_0x2e9a54._0x432c64)](_0x19b6f0[_0x17fc2b(0xf7)])[0x0]??null;return null;}__name(pickBin,_0x1cc0ab(0xff));export{web_runner_adapter_default as default,webRunnerAdapter};
|
|
@@ -105,9 +105,12 @@ snapshot tools switch to snapshot-free wording.
|
|
|
105
105
|
|
|
106
106
|
`UNOTEST_TOOLSET=core` narrows the whole surface to the minimal
|
|
107
107
|
explore-first loop for small local models: `new_context`,
|
|
108
|
-
`explore_start` / `explore_step` / `explore_steps` / `
|
|
109
|
-
`ground_element` (still needs `UNOTEST_GROUNDER_MODE`),
|
|
110
|
-
`save_exploration_as_test`, `run_test`.
|
|
108
|
+
`explore_start` / `explore_step` / `explore_steps` / `explore_step_result`
|
|
109
|
+
/ `explore_stop`, `ground_element` (still needs `UNOTEST_GROUNDER_MODE`),
|
|
110
|
+
`save_exploration_as_test`, `run_test`. `explore_step_result` is in the
|
|
111
|
+
core set for the same reason it exists at all: a step that outruns the
|
|
112
|
+
client's patience answers with a task id, and a set that can hand out
|
|
113
|
+
ids but not redeem them is worse than one with no background at all. assert_* actions and the
|
|
111
114
|
`autoRun` flag live inside `explore_steps` (actions are not tools), so
|
|
112
115
|
the core happy-path is `explore_start` (it opens the context itself) →
|
|
113
116
|
`explore_steps {…, autoRun: true}`; save/run stay registered as the
|
|
@@ -122,7 +125,36 @@ driver runs `core` from the same code. Typical matrices:
|
|
|
122
125
|
# local-model driver: UNOTEST_TOOLSET=core UNOTEST_SNAPSHOT=0 UNOTEST_GROUNDER_MODE=local
|
|
123
126
|
```
|
|
124
127
|
|
|
125
|
-
###
|
|
128
|
+
### A step that takes minutes
|
|
129
|
+
|
|
130
|
+
An MCP client stops waiting for a tool call at about two minutes and
|
|
131
|
+
carries on in the background; whatever the call answers after that is
|
|
132
|
+
lost. Waiting four minutes for a slow page is an ordinary thing to ask,
|
|
133
|
+
so `explore_step` and `explore_steps` hand the work a task id instead of
|
|
134
|
+
holding the channel:
|
|
135
|
+
|
|
136
|
+
- under 90 seconds — the ordinary reply, exactly as before, no task id
|
|
137
|
+
and no second call;
|
|
138
|
+
- over it — `{ status: "accepted", taskId, hint }`. The step is **not**
|
|
139
|
+
cut short: it keeps its own `options.timeout` and records into the
|
|
140
|
+
session as usual. A batch goes to the background whole, under one id —
|
|
141
|
+
its steps run one after another on one page, so there is no half of it
|
|
142
|
+
to hand back;
|
|
143
|
+
- collect it with `explore_step_result({ taskId })`: `running` (with
|
|
144
|
+
`elapsedMs`), `done` (with the reply the step would have given and
|
|
145
|
+
`durationMs`, the whole step from its start — not just the part after
|
|
146
|
+
the threshold), `failed`, or `unknown` — an id this server does not have, because it
|
|
147
|
+
restarted or because the result was collected more than ten minutes
|
|
148
|
+
ago.
|
|
149
|
+
|
|
150
|
+
While a step is out there the browser context is busy, and the tools say
|
|
151
|
+
so rather than damaging it: a second `explore_step`, `explore_stop` and
|
|
152
|
+
`close_context` answer `{ status: "busy", pendingTaskId, hint }`. Two
|
|
153
|
+
actions on one page fight each other, and stopping or closing would cut
|
|
154
|
+
the step off mid-way. `explore_state` lists what is pending, so an agent
|
|
155
|
+
that lost a task id does not simply run the same step again.
|
|
156
|
+
|
|
157
|
+
### Exploration (11)
|
|
126
158
|
|
|
127
159
|
The recording loop: every action is performed and written down in one
|
|
128
160
|
call, so the exploration is a draft scenario from the first step.
|
|
@@ -132,6 +164,8 @@ call, so the exploration is a draft scenario from the first step.
|
|
|
132
164
|
resolved here
|
|
133
165
|
- `explore_steps` — several actions in one call, `autoRun` to run the
|
|
134
166
|
result immediately
|
|
167
|
+
- `explore_step_result` — collect a step or batch that went to the
|
|
168
|
+
background (see above)
|
|
135
169
|
- `explore_state` / `explore_steps` — what has been recorded so far
|
|
136
170
|
- `explore_record` — add a step without performing it
|
|
137
171
|
- `explore_remove_step` — drop a recorded step
|
|
@@ -167,7 +201,17 @@ directly. Detailed workflow in `debugger-tools.md`.
|
|
|
167
201
|
- `attach_debug_session` / `detach_debug_session` — join the run a human
|
|
168
202
|
is already driving in the viewer, instead of opening a second browser.
|
|
169
203
|
- `take_wheel` / `release_wheel` — take control of that shared session,
|
|
170
|
-
and hand it back.
|
|
204
|
+
and hand it back. `take_wheel` also points this session's browser at the
|
|
205
|
+
run, so the next screenshot is of the page being debugged; when it
|
|
206
|
+
cannot (a recording is open, the run has no browser or no page yet) it
|
|
207
|
+
says so with a status and what to do, instead of answering `ok`.
|
|
208
|
+
`release_wheel` leaves the browser on the run.
|
|
209
|
+
|
|
210
|
+
Every `explore_step` reply carries `context` — `{kind: "run", runtimeId}`
|
|
211
|
+
when the step ran on a run's browser, `{kind: "own"}` when it ran on one
|
|
212
|
+
this session opened. A session has exactly one context: `take_wheel` /
|
|
213
|
+
`attach_debug_session` point it at a run, `explore_start` / `new_context`
|
|
214
|
+
at your own, and `explorationId` never chooses a browser.
|
|
171
215
|
|
|
172
216
|
### Multi-context (4)
|
|
173
217
|
|
|
@@ -209,7 +253,9 @@ Auto-switch runs **only** under `explore_step` (recording / ad-hoc).
|
|
|
209
253
|
|
|
210
254
|
### Failure bundle introspection (6)
|
|
211
255
|
|
|
212
|
-
- `list_failures` — bundles on disk, newest first
|
|
256
|
+
- `list_failures` — bundles on disk, newest first, each with `runState`
|
|
257
|
+
(`paused` while the run is still held at that failure, else `finished`
|
|
258
|
+
/ `aborted`)
|
|
213
259
|
- `get_failure_trace` — `failure.json` + error + line/col
|
|
214
260
|
- `get_failure_console` — captured console entries (last 100)
|
|
215
261
|
- `get_failure_a11y` — semantic-DOM snapshot at failure moment
|
|
@@ -218,6 +264,12 @@ Auto-switch runs **only** under `explore_step` (recording / ad-hoc).
|
|
|
218
264
|
- `get_failure_network` — HAR (tier 3 — not yet wired, see
|
|
219
265
|
`KNOWN_ISSUES.md`)
|
|
220
266
|
|
|
267
|
+
A run paused on its failure has a bundle too — written at the pause, from
|
|
268
|
+
the page the failure happened on — so these six answer while the browser
|
|
269
|
+
is still standing there, which is when the answer is worth most. See
|
|
270
|
+
`debugger-tools.md` for what `runState` means and
|
|
271
|
+
how the frame behaves across `resume` and `abort_runtime`.
|
|
272
|
+
|
|
221
273
|
### Reading a box (6)
|
|
222
274
|
|
|
223
275
|
The route these belong to is above, under
|
|
@@ -233,6 +285,50 @@ this is the list.
|
|
|
233
285
|
- `box_queue` — who is waiting, who is running
|
|
234
286
|
- `box_screenshot` — one frame the run captured, as an image
|
|
235
287
|
|
|
288
|
+
### Cloud account (9)
|
|
289
|
+
|
|
290
|
+
The account that rents boxes, as tools: the same operations as the
|
|
291
|
+
`box` commands and `approvals`, through the same code, so a box reads the
|
|
292
|
+
same whether an agent or a person asked. They act with the key
|
|
293
|
+
`npx @unotest/web login` stored on this machine (or
|
|
294
|
+
`UNOTEST_CLOUD_TOKEN`).
|
|
295
|
+
|
|
296
|
+
- `cloud_boxes_list` — every box on the account, with its state
|
|
297
|
+
- `cloud_box_status` — one box: state, address, paid-until, projects,
|
|
298
|
+
Picker
|
|
299
|
+
- `cloud_box_create` — rent a box (`name`, `envs`, `size?`, `picker?`)
|
|
300
|
+
- `cloud_box_destroy` — delete a box and everything on it
|
|
301
|
+
- `cloud_box_access` — a fresh push + read token pair, written into
|
|
302
|
+
`unotest/.env` and `unotest/.secrets` the way `box access` does. No
|
|
303
|
+
token is ever typed or copied: the answer names what was written where,
|
|
304
|
+
never a value
|
|
305
|
+
- `cloud_box_update` — move a box to the version the cloud offers it
|
|
306
|
+
- `cloud_box_logs` — the end of the box's `bootstrap` or `updater` log
|
|
307
|
+
- `cloud_balance` — what is left on the account
|
|
308
|
+
- `cloud_approval_wait` — wait for a person to answer a request; without
|
|
309
|
+
an `id`, list what is waiting
|
|
310
|
+
|
|
311
|
+
What they answer instead of failing, so an agent can act on it:
|
|
312
|
+
|
|
313
|
+
| answer | when | what to do |
|
|
314
|
+
|---|---|---|
|
|
315
|
+
| `{state: "not-logged-in", next}` | no cloud login on this machine | ask your person to run `next` |
|
|
316
|
+
| `{state: "approval-pending", approval, next}` | a create or a delete by a key that may not spend or delete by itself | call `cloud_approval_wait` with `approval.id`; a person answers in the cabinet |
|
|
317
|
+
| `{state: "top-up-needed", firstHourCents, balanceCents, missingCents, url}` | `cloud_box_create` with a balance short of the first hour; a figure the key may not read is `null` | ask your person to add credit on the cabinet page at `url`, then create again — there is no top-up an agent can make |
|
|
318
|
+
| `{state: "still-waiting"}` | nobody answered within `timeoutSeconds` | call `cloud_approval_wait` again |
|
|
319
|
+
| `{state: "declined"}` / `{state: "expired"}` | a person said no, or nobody answered in ten minutes | nothing was created and nothing was charged |
|
|
320
|
+
| `{state: "insufficient-scope"}` | the key lacks the permission the tool needs | ask the account's owner for a key that has it |
|
|
321
|
+
| `{kind: "requested"}` from `cloud_box_logs` | the box sends its log on its next five-minute check | call again after that |
|
|
322
|
+
|
|
323
|
+
Only the CI key of an operator account, one that unotest runs itself, acts
|
|
324
|
+
with nobody watching. Every key a customer holds — one an agent got through
|
|
325
|
+
`login`, and a CI key issued before keys for agents existed — waits for a
|
|
326
|
+
person on renting, deleting and turning the Picker on, and no tool can
|
|
327
|
+
approve its own request.
|
|
328
|
+
|
|
329
|
+
They are not in `UNOTEST_TOOLSET=core`: a recording agent has no use for
|
|
330
|
+
them.
|
|
331
|
+
|
|
236
332
|
### `ground_element` (1, experimental, off by default)
|
|
237
333
|
|
|
238
334
|
Registered when `UNOTEST_GROUNDER_MODE` is `local` or `remote` for the
|
|
@@ -348,6 +444,22 @@ reads the lockfile rather than opening a second). Hand that URL to the
|
|
|
348
444
|
person you are working with when the answer is easier to look at than to
|
|
349
445
|
describe — a run's step tree, a screenshot strip, a diff of sources.
|
|
350
446
|
|
|
447
|
+
## Secrets in replies
|
|
448
|
+
|
|
449
|
+
Every MCP reply — text, `structuredContent` and the message of a tool
|
|
450
|
+
error — has the values from `unotest/.secrets` (and the active
|
|
451
|
+
`.secrets.<name>` overlay) replaced by `‹secret:NAME›`, as the session
|
|
452
|
+
journal and the debug log always had. Images are passed as they are.
|
|
453
|
+
|
|
454
|
+
A value the page itself generates (a key shown once, a one-time code) is in
|
|
455
|
+
no secrets file. For those the field's markup decides: a field with
|
|
456
|
+
`type="password"`, or `autocomplete` of `current-password`,
|
|
457
|
+
`new-password` or `one-time-code`, is never printed by an `assertValue`
|
|
458
|
+
failure, never read into a grounding capture, and appears as
|
|
459
|
+
`‹hidden, N chars›` in the page HTML of a failure and in a fill the viewer
|
|
460
|
+
records. A field the page has switched to plain text is judged as plain
|
|
461
|
+
text.
|
|
462
|
+
|
|
351
463
|
## Variable environments (dev / staging / prod)
|
|
352
464
|
|
|
353
465
|
Scenario variables come from `unotest/.env` + `unotest/.secrets`.
|
|
@@ -456,7 +568,9 @@ Where the route starts differently:
|
|
|
456
568
|
`{ latest: true }` collapses them to the last run per scenario with its
|
|
457
569
|
failing streak — the answer a single status cannot give. `{ running:
|
|
458
570
|
true }` shows what is in flight.
|
|
459
|
-
- **No environment name?**
|
|
571
|
+
- **No environment name?** On a box that serves one environment, leave
|
|
572
|
+
`environment` out: every `box_*` tool uses that one. With several, the
|
|
573
|
+
refusal lists them and asks for the field. `box_envs` lists them as
|
|
460
574
|
`<project>/<environment>`, with the bundle each is serving. An empty
|
|
461
575
|
list is an answer: the box names no environments, and every `box_*`
|
|
462
576
|
tool that takes one says so instead of asking the box — do not retry
|
|
@@ -624,6 +738,9 @@ What the server **cannot** do (by design — D-25):
|
|
|
624
738
|
What it **can** do (with your approval):
|
|
625
739
|
|
|
626
740
|
- Run your scenarios + drive browsers
|
|
741
|
+
- Act on your unotest cloud account through the `cloud_*` tools, with the
|
|
742
|
+
key `login` stored — renting, deleting and turning the Picker on wait
|
|
743
|
+
for a person in the cabinet
|
|
627
744
|
- Read failure artifacts from `.unotest/failures/`
|
|
628
745
|
- Execute sandbox primitives — `shell(cmd, …args)` (execFile, not
|
|
629
746
|
shell), `dbQuery` / `dbExec` (against `sandbox.database`), `apiCall`
|
package/guides/dsl-reference.md
CHANGED
|
@@ -449,6 +449,14 @@ On a checkbox / radio / switch (native or `role=`) it asserts the
|
|
|
449
449
|
assertValue(getByRole('checkbox', {name: 'Select row R-00147'}), 'true')
|
|
450
450
|
```
|
|
451
451
|
|
|
452
|
+
On a **secret field** — `type="password"`, or `autocomplete` with
|
|
453
|
+
`current-password`, `new-password` or `one-time-code` — a failure shows
|
|
454
|
+
neither value, only their lengths: `expected ‹hidden, 12 chars›, got
|
|
455
|
+
‹hidden, 32 chars›`, plus `same length, content differs` when the lengths
|
|
456
|
+
match. The field is judged as it is at the moment of failure: once the page
|
|
457
|
+
switches it to plain text (a "show" button), the page itself shows the
|
|
458
|
+
value, and so does the failure.
|
|
459
|
+
|
|
452
460
|
### `assertCount(loc, expected, options?)`
|
|
453
461
|
|
|
454
462
|
```js
|
|
@@ -1056,6 +1064,25 @@ The variable must hold an http(s) URL; an unknown name fails with the
|
|
|
1056
1064
|
usual "add it to unotest/.env" message. URLs never appear in the
|
|
1057
1065
|
scenario — hosts are controlled by project env files only.
|
|
1058
1066
|
|
|
1067
|
+
**With an environment overlay active, the base must come from it.**
|
|
1068
|
+
Running `--env dev` while `API_BASE_CHAT` is set only in the base
|
|
1069
|
+
`unotest/.env` is refused — before the browser, by `lint`, by the run
|
|
1070
|
+
and by the MCP tools alike — because the call would otherwise go to the
|
|
1071
|
+
base host while everything else in the run resolves against `dev`. Set
|
|
1072
|
+
the name in `unotest/.env.dev`, or, when the base value really is meant
|
|
1073
|
+
for every environment, list the name in the config:
|
|
1074
|
+
|
|
1075
|
+
```js
|
|
1076
|
+
// unotest/unotest.config.mjs
|
|
1077
|
+
export default { env: { shared: ['API_BASE_CHAT'] } };
|
|
1078
|
+
```
|
|
1079
|
+
|
|
1080
|
+
A value supplied by the process environment (a shell variable, a box)
|
|
1081
|
+
is never affected: the rule is about a value silently inherited from a
|
|
1082
|
+
file the overlay was supposed to replace. The same rule covers
|
|
1083
|
+
`APP_BASE_URL` (the base every relative `goto` resolves against) and a
|
|
1084
|
+
variable used as the URL in `goto(NAME)`.
|
|
1085
|
+
|
|
1059
1086
|
**Multipart file upload — `upload(path, options?)`.** Passing the
|
|
1060
1087
|
result of `upload(...)` as the body posts `multipart/form-data`:
|
|
1061
1088
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unotest/web",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.43.1",
|
|
4
4
|
"description": "AI-native E2E testing for web applications. MCP server (run_test / step / resume / inspect_runtime / agent_fix) + CLI runner + JavaScript DSL scenarios on a sandboxed AST engine + semantic DOM snapshots.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -83,18 +83,18 @@
|
|
|
83
83
|
"tsx": "^4.19.2",
|
|
84
84
|
"yaml": "^2.6.0",
|
|
85
85
|
"zod": "^3.23.8",
|
|
86
|
-
"@unotest/core": "^0.
|
|
87
|
-
"@unotest/
|
|
88
|
-
"@unotest/dsl": "^0.
|
|
89
|
-
"@unotest/
|
|
90
|
-
"@unotest/
|
|
86
|
+
"@unotest/core": "^0.43.1",
|
|
87
|
+
"@unotest/viewer": "^0.43.1",
|
|
88
|
+
"@unotest/dsl": "^0.43.1",
|
|
89
|
+
"@unotest/protocol": "^0.43.1",
|
|
90
|
+
"@unotest/grounder-client": "^0.43.1"
|
|
91
91
|
},
|
|
92
92
|
"devDependencies": {
|
|
93
93
|
"@types/node": "^22.10.0",
|
|
94
94
|
"javascript-obfuscator": "^4.1.1",
|
|
95
95
|
"tsup": "^8.5.1",
|
|
96
96
|
"typescript": "^5.7.2",
|
|
97
|
-
"@unotest/
|
|
98
|
-
"@unotest/
|
|
97
|
+
"@unotest/judge": "^0.43.1",
|
|
98
|
+
"@unotest/grounder": "^0.43.1"
|
|
99
99
|
}
|
|
100
100
|
}
|