@ranger-testing/ranger-cli 2.5.4-alpha.a98f848-6 → 2.5.4-alpha.b28d3b1-14
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/build/cli.js +1 -1
- package/build/commands/addEnv.js +1 -1
- package/build/commands/authEncrypt.js +1 -1
- package/build/commands/clean.js +1 -1
- package/build/commands/config.js +1 -1
- package/build/commands/env.js +1 -1
- package/build/commands/feature.js +1 -1
- package/build/commands/hook.js +1 -1
- package/build/commands/hooks/autoPrompt.js +1 -1
- package/build/commands/hooks/disable.js +1 -1
- package/build/commands/hooks/enable.js +1 -1
- package/build/commands/hooks/exitPlanMode.js +1 -1
- package/build/commands/hooks/index.js +1 -1
- package/build/commands/hooks/output.js +1 -1
- package/build/commands/hooks/planReminder.js +1 -1
- package/build/commands/hooks/planStart.js +1 -1
- package/build/commands/hooks/postEdit.js +1 -1
- package/build/commands/hooks/preCompact.js +1 -1
- package/build/commands/hooks/sessionEnd.js +1 -1
- package/build/commands/hooks/sessionStart.js +1 -1
- package/build/commands/hooks/stopHook.js +1 -1
- package/build/commands/index.js +1 -1
- package/build/commands/login.js +1 -1
- package/build/commands/mcpBootstrap.js +1 -1
- package/build/commands/migrateProfile.js +1 -1
- package/build/commands/setup/claude.js +1 -1
- package/build/commands/setup/opencode.js +1 -1
- package/build/commands/setupCi.js +1 -1
- package/build/commands/skillup.js +1 -1
- package/build/commands/start.js +1 -1
- package/build/commands/status.js +1 -1
- package/build/commands/update.js +1 -1
- package/build/commands/updateEnv.js +1 -1
- package/build/commands/useEnv.js +1 -1
- package/build/commands/utils/activeProfile.js +1 -1
- package/build/commands/utils/agentEnv.js +1 -1
- package/build/commands/utils/browserSessionsApi.js +1 -1
- package/build/commands/utils/claudeConfig.js +1 -1
- package/build/commands/utils/claudeOverrideSettings.js +1 -1
- package/build/commands/utils/claudePlugin.js +1 -1
- package/build/commands/utils/cloudProfile.js +1 -1
- package/build/commands/utils/cloudProfileSession.js +1 -1
- package/build/commands/utils/crypto.js +1 -1
- package/build/commands/utils/desirePathLog.js +1 -1
- package/build/commands/utils/deviceAuth.js +1 -1
- package/build/commands/utils/environment.js +1 -1
- package/build/commands/utils/featureApi.js +1 -1
- package/build/commands/utils/fixWebmDuration.js +1 -1
- package/build/commands/utils/gitTracked.js +1 -1
- package/build/commands/utils/keychain.js +1 -1
- package/build/commands/utils/legacyWarning.js +1 -0
- package/build/commands/utils/localAgentInstallationsApi.js +1 -1
- package/build/commands/utils/matchAuthEnvironment.js +1 -1
- package/build/commands/utils/mcpImageBase64.js +1 -1
- package/build/commands/utils/model.js +1 -1
- package/build/commands/utils/opencodeConfig.js +1 -1
- package/build/commands/utils/playwrightCli.js +1 -1
- package/build/commands/utils/profileMessages.js +1 -1
- package/build/commands/utils/profileSetupBanner.js +1 -1
- package/build/commands/utils/projectsConfig.js +1 -1
- package/build/commands/utils/rangerConfig.js +1 -1
- package/build/commands/utils/rangerRoot.js +1 -1
- package/build/commands/utils/resolveProfileContext.js +1 -1
- package/build/commands/utils/resolveProfileUrl.js +1 -1
- package/build/commands/utils/retry.js +1 -1
- package/build/commands/utils/sessionCache.js +1 -1
- package/build/commands/utils/settings.js +1 -1
- package/build/commands/utils/skillContent.js +1 -1
- package/build/commands/utils/skills.js +1 -1
- package/build/commands/utils/stitchWebmFiles.js +1 -1
- package/build/commands/utils/telemetry.js +1 -1
- package/build/commands/utils/tokenRefresh.js +1 -1
- package/build/commands/utils/traceSnapshotMapper.js +1 -1
- package/build/commands/utils/userApi.js +1 -1
- package/build/commands/utils/version.js +1 -1
- package/build/commands/verifyFeature.js +1 -1
- package/build/commands/verifyFeatureCli.js +1 -1
- package/build/skills/ranger/SKILL.md +13 -7
- package/build/skills/ranger/create.md +16 -3
- package/build/skills/ranger/verify.md +25 -18
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
function _0x169a(_0x5283ed,_0x43d610){_0x5283ed=_0x5283ed-0xb3;const _0x393726=_0x3937();let _0x169a0d=_0x393726[_0x5283ed];return _0x169a0d;}(function(_0x3993ab,_0x583861){const _0x5d3237=_0x169a,_0x3d0bba=_0x3993ab();while(!![]){try{const _0x2cc7aa=-parseInt(_0x5d3237(0xd5))/0x1+-parseInt(_0x5d3237(0x10a))/0x2+-parseInt(_0x5d3237(0xfb))/0x3*(parseInt(_0x5d3237(0x113))/0x4)+-parseInt(_0x5d3237(0xc9))/0x5*(parseInt(_0x5d3237(0x109))/0x6)+parseInt(_0x5d3237(0x11b))/0x7+-parseInt(_0x5d3237(0xd4))/0x8*(parseInt(_0x5d3237(0xcf))/0x9)+parseInt(_0x5d3237(0xcd))/0xa*(parseInt(_0x5d3237(0x10b))/0xb);if(_0x2cc7aa===_0x583861)break;else _0x3d0bba['push'](_0x3d0bba['shift']());}catch(_0x180848){_0x3d0bba['push'](_0x3d0bba['shift']());}}}(_0x3937,0xc1ded));import{mkdir,readFile,readdir,rename,stat}from'fs/promises';import{basename,join}from'path';import{extractBashCommand,parsePlaywrightCliCommand,quoteShellArg,runPlaywrightCliCommand}from'./utils/playwrightCli.js';const PLAYWRIGHT_CLI_COMMAND_TIMEOUT_MS=0xea60,PLAYWRIGHT_CLI_PREVIEW_LIMIT=0xf0,VERIFY_FEATURE_CLI_ARTIFACT_FILE_PATTERN=/^(?:\d{2}_.+\.(?:png|ya?ml)|key_.+\.png|session-recording(?:-\d+)?\.webm|trace(?:\.trace)?(?:-\d+)?\.zip|current_snap\.ya?ml)$/i;function truncatePreview(_0x54c1ff,_0xcb85bb=PLAYWRIGHT_CLI_PREVIEW_LIMIT){const _0x2db0af=_0x169a,_0x47b17e={'hJDwd':function(_0xcb2c9,_0x437db9){return _0xcb2c9>_0x437db9;},'wsSvz':'...'};return _0x47b17e['hJDwd'](_0x54c1ff[_0x2db0af(0x13c)],_0xcb85bb)?_0x54c1ff['slice'](0x0,_0xcb85bb)+_0x47b17e[_0x2db0af(0x129)]:_0x54c1ff;}function buildCliArtifactPath(_0x3619f7,_0x26a63e){return join(_0x3619f7,_0x26a63e);}function toStepDisplayName(_0x4131fd){const _0x234ae8=_0x169a,_0x56a412={'AYWgs':function(_0x2eb6c4,_0x26ea4a){return _0x2eb6c4(_0x26ea4a);}},_0x3485ee=_0x56a412[_0x234ae8(0xde)](basename,_0x4131fd)[_0x234ae8(0x11c)](/\.(?:png|ya?ml)$/i,'')[_0x234ae8(0x11c)](/^key_/i,'')[_0x234ae8(0x11c)](/^\d+_/,'')['replace'](/-/g,'\x20');return{'name':_0x3485ee,'isKeyStep':/^key_/i['test'](basename(_0x4131fd))};}function extractShellValue(_0x5c39f5){if(!_0x5c39f5)return null;return _0x5c39f5[0x1]??_0x5c39f5[0x2]??_0x5c39f5[0x3]??null;}function extractFilenameOption(_0x357da8){const _0x24dd08=_0x169a;return extractShellValue(_0x357da8[_0x24dd08(0x13e)](/--filename(?:=|\s+)(?:"([^"]+)"|'([^']+)'|(\S+))/));}function extractFirstCommandArgument(_0x5f15b3,_0x551c7){const _0x5a74c4=_0x169a,_0x26f7ac={'qwdvu':function(_0x37f1bc,_0x444b1f){return _0x37f1bc(_0x444b1f);}},_0x11603c=_0x551c7[_0x5a74c4(0x11c)](/[.*+?^${}()|[\]\\]/g,_0x5a74c4(0x12a));return _0x26f7ac[_0x5a74c4(0x10c)](extractShellValue,_0x5f15b3[_0x5a74c4(0x13e)](new RegExp(_0x5a74c4(0x102)+_0x11603c+_0x5a74c4(0x127))));}function formatCommandTarget(_0x329aef){const _0xaf0bdb=_0x169a,_0x56d1bf={'WNvhO':_0xaf0bdb(0x135),'uJXmo':function(_0x10ac64,_0x79c572,_0x45607a){return _0x10ac64(_0x79c572,_0x45607a);}};if(!_0x329aef)return _0x56d1bf['WNvhO'];if(/^e\d+$/i[_0xaf0bdb(0x124)](_0x329aef))return'ref\x20'+_0x329aef;return JSON['stringify'](_0x56d1bf[_0xaf0bdb(0x110)](truncatePreview,_0x329aef,0x78));}function _0x3937(){const _0x348027=['aTGSB','ccyaN','ARjru','AyCCu','yvhme','`\x20to\x20inspect\x20the\x20current\x20app\x20state.\x0a5.\x20Read\x20snapshot\x20YAML\x20files\x20to\x20find\x20element\x20references\x20like\x20`e12`,\x20then\x20use\x20them\x20with\x20`click`,\x20`fill`,\x20`check`,\x20or\x20`select`.\x0a6.\x20Use\x20`','select\x20tab\x20','plgPk','start\x20tracing','run-code','[playwright-cli]\x20','xdjMW','tracing-start','`:\x20\x22','36835EiNfnd','sBfYM','\x0a\x0aAfter\x20completing\x20authentication,\x20proceed\x20with\x20the\x20verification\x20task\x20below.\x0aIf\x20authentication\x20fails,\x20return\x20immediately\x20with\x20evaluation\x20\x22blocked\x22\x20and\x20describe\x20the\x20auth\x20failure.','split','1390OaJuzt','`\x0a9.\x20Run\x20`','657gaJBLJ','playwright_cli_video_stop','authorEmail','close','\x0a\x0a##\x20Expected\x20Flow\x20(from\x20previous\x20verification)\x0a','64208yGOTLQ','1294855WpwqpP','\x0a\x0a1.\x20Run\x20`','Kndxc','PostToolUse','cjmod','\x0a\x0a##\x20Authentication\x0aBEFORE\x20starting\x20the\x20verification\x20task,\x20you\x20MUST\x20authenticate\x20using\x20these\x20steps:\x0a','ygXTF','GtIbG','VzZKl','AYWgs','njzLJ','numeric','push','authorName','\x20(on\x20element:\x20<','name','You\x20are\x20testing\x20browser\x20automation.\x20Your\x20task\x20is\x20simple:\x0a\x0aUse\x20Bash\x20and\x20Playwright\x20CLI\x20only.\x20The\x20browser\x20command\x20prefix\x20is:\x0a','\x0a\x0a##\x20Browser\x20Command\x20Reference\x0aUse\x20Bash\x20to\x20run\x20Playwright\x20CLI\x20commands\x20with\x20this\x20exact\x20prefix:\x0a`','02_button-clicked.png','get','en-US','02_state.yml','zEGgt','01_initial-state.png','UqUjm','fill','trim','WOTWe','.\x0aThis\x20is\x20NOT\x20a\x20web\x20app\x20—\x20there\x20is\x20no\x20URL\x20to\x20navigate\x20to.\x20The\x20app\x20is\x20already\x20running\x20and\x20connected.','`\x0a10.\x20Return\x20immediately\x20with\x20the\x20structured\x20output\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format.','tool_input','\x22\x0a-\x20Number\x20prefixes\x20(01_,\x2002_,\x20etc.)\x20help\x20maintain\x20chronological\x20order\x0a-\x20For\x20KEY\x20MOMENTS\x20that\x20prove\x20the\x20scenario\x20is\x20complete,\x20prefix\x20with\x20\x22key_\x22:\x20\x22','qqcDO','\x20open`,\x20then\x20`','rXQHb','HlSDv','select\x20tab','press','6231OCnhmo','lGNsr','click','values','Bash','00_mozilla-homepage.yml','`\x20and\x20read\x20the\x20snapshot\x20file\x20to\x20inspect\x20the\x20page.\x0a5.\x20**IMMEDIATELY\x20check\x20for\x20blocking\x20HTTP\x20errors\x20before\x20proceeding.**\x0a6.\x20Execute\x20the\x20task\x20step-by-step\x20with\x20Playwright\x20CLI\x20commands.\x0a7.\x20Use\x20`','(?:^|\x5cs)','\x20open\x20https://www.mozilla.org`\x0a2.\x20Run\x20`','IAoAl','\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`','hDNAh','start\x20video\x20recording','tfSAC','804khUyHk','477732RLBWZV','294371wWiZiI','qwdvu','\x0a\x0a##\x20Critical:\x20Early\x20Error\x20Detection\x0aAfter\x20taking\x20the\x20initial\x20snapshot,\x20IMMEDIATELY\x20check\x20for\x20blocking\x20errors:\x0a\x0a**Blocking\x20errors\x20to\x20detect:**\x0a-\x20Crash\x20or\x20error\x20dialogs\x20(\x22An\x20error\x20occurred\x22,\x20\x22Something\x20went\x20wrong\x22,\x20unhandled\x20exception\x20messages)\x0a-\x20Blank\x20or\x20empty\x20window\x20with\x20no\x20rendered\x20content\x0a-\x20Framework\x20error\x20boundaries\x20(React\x20error\x20page,\x20Electron\x20crash\x20reporter)\x0a-\x20Unresponsive\x20or\x20frozen\x20UI\x20(no\x20interactive\x20elements\x20in\x20snapshot)\x0a\x0a**If\x20ANY\x20blocking\x20error\x20is\x20detected:**\x0a1.\x20DO\x20NOT\x20continue\x20with\x20the\x20task\x0a2.\x20Return\x20IMMEDIATELY\x20with\x20evaluation:\x20\x22blocked\x22\x0a3.\x20Set\x20evaluationReason\x20to\x20describe\x20the\x20specific\x20error\x20(e.g.,\x20\x22App\x20crashed\x20—\x20error\x20dialog\x20visible\x20on\x20launch\x22)\x0a4.\x20Include\x20the\x20error\x20in\x20issues\x20array\x20with\x20severity:\x20\x22BLOCKER\x22\x20and\x20type:\x20\x22APP_ERROR\x22\x0a\x0aThis\x20early\x20exit\x20prevents\x20wasting\x20time\x20on\x20tasks\x20that\x20cannot\x20succeed\x20due\x20to\x20fundamental\x20errors.','Gpecn','`\x0a\x0a-\x20Write\x20all\x20artifacts\x20under\x20`','uJXmo','open\x20','LtWYf','2476XoUoUX','video-start','XFFNi','canonicalFlow','run\x20custom\x20Playwright\x20code','toLocaleDateString','`\x0a5.\x20Read\x20the\x20snapshot\x20file\x20to\x20find\x20the\x20\x22Learn\x20More\x22\x20link\x20reference\x0a6.\x20Run\x20`','screenshot','10267418MrRged','replace','Reviewer','\x22,\x20\x22','jYzqR','XlYzx','\x20snapshot\x20--filename\x20','Ebrrb','capture\x20snapshot','test','hook_event_name','tracing-stop','(?:\x5cs+(?:\x22([^\x22]+)\x22|\x27([^\x27]+)\x27|(\x5cS+)))','trackPhaseError','wsSvz','\x5c$&','textContent','\x20video-start`\x0a4.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`','\x20screenshot\x20--filename\x20','[ranger-verification-agent]\x20','tab-new','open\x20new\x20tab\x20','short','CRITICAL\x20URL\x20REQUIREMENT:\x0aYour\x20base\x20URL\x20is:\x20','notes','\x20tracing-start`,\x20then\x20`','target','slice','domRef','Yqjkv','pop','click\x20','eQpZm','length','capture\x20key\x20step\x20`','match','check','open\x20browser','isFile','01_mozilla-homepage.png','check\x20','stderr','\x20open\x20','key_04_success-state.png','keys','\x0a\x0a##\x20Task\x20to\x20Execute\x0a',']\x20**','03_learn-more.png','02_learn-more.yml','DEBUG','open','`\x0a-\x20`run-code\x20\x22await\x20page.waitForTimeout(1000)\x22`\x20for\x20waits\x20or\x20small\x20custom\x20checks\x0a\x0a##\x20Screenshot\x20Guidelines\x20-\x20IMPORTANT\x0aTake\x20screenshots\x20throughout\x20the\x20verification\x20flow\x20so\x20a\x20human\x20can\x20review\x20it\x20for\x20completeness.\x20Screenshots\x20are\x20your\x20evidence\x20trail.\x0a\x0a**When\x20to\x20take\x20screenshots\x20(use\x20Playwright\x20CLI\x20screenshot):**\x0a-\x20After\x20the\x20initial\x20snapshot\x20(capture\x20starting\x20state)\x0a-\x20Before\x20and\x20after\x20clicking\x20buttons\x20or\x20submitting\x20forms\x0a-\x20When\x20important\x20UI\x20elements\x20appear\x20(modals,\x20notifications,\x20loading\x20states)\x0a-\x20After\x20navigating\x20to\x20different\x20views\x20or\x20pages\x0a-\x20When\x20verifying\x20specific\x20elements\x20exist\x0a-\x20At\x20the\x20final\x20state\x20showing\x20the\x20completed\x20action\x0a\x0a**Screenshot\x20naming:**\x0a-\x20Use\x20descriptive\x20filenames\x20under\x20`'];_0x3937=function(){return _0x348027;};return _0x3937();}function formatPlaywrightCliLog(_0x440c4d,_0x33433d){const _0x415e36=_0x169a,_0x3103e0={'XlYzx':function(_0x2671c3,_0x5494d1,_0x2d9b7b){return _0x2671c3(_0x5494d1,_0x2d9b7b);},'XNySQ':_0x415e36(0x140),'JPSVw':_0x415e36(0x126),'Ccobd':'stop\x20tracing','XFFNi':_0x415e36(0x114),'TcGWA':'snapshot','hrjUQ':_0x415e36(0x11a),'UKSOH':function(_0x39db23,_0x2f3910){return _0x39db23(_0x2f3910);},'Gldtp':'capture\x20screenshot','Yqjkv':function(_0x275510,_0x5c1ec9){return _0x275510(_0x5c1ec9);},'Ebrrb':_0x415e36(0x13f),'ARjru':function(_0x475729,_0x4ba36e){return _0x475729(_0x4ba36e);},'Kndxc':_0x415e36(0xee),'cjmod':_0x415e36(0xfa),'Gpecn':'open\x20new\x20tab','nKzNT':'tab-select','AyCCu':function(_0x4df732,_0x462399,_0xde5762){return _0x4df732(_0x462399,_0xde5762);}};switch(_0x33433d){case _0x415e36(0xb9):{const _0x15c2f5=_0x3103e0['XlYzx'](extractFirstCommandArgument,_0x440c4d,_0x33433d);return _0x15c2f5?_0x415e36(0x111)+_0x15c2f5:_0x3103e0['XNySQ'];}case _0x415e36(0xc7):return _0x415e36(0xc3);case _0x3103e0['JPSVw']:return _0x3103e0['Ccobd'];case _0x3103e0[_0x415e36(0x115)]:return _0x415e36(0x107);case'video-stop':return'stop\x20video\x20recording';case _0x3103e0['TcGWA']:{const _0x282290=extractFilenameOption(_0x440c4d);if(!_0x282290)return _0x415e36(0x123);const {name:_0x106738}=toStepDisplayName(_0x282290);return'capture\x20snapshot\x20`'+_0x106738+'`';}case _0x3103e0['hrjUQ']:{const _0x4c4b6e=_0x3103e0['UKSOH'](extractFilenameOption,_0x440c4d);if(!_0x4c4b6e)return _0x3103e0['Gldtp'];const {name:_0x39ab55,isKeyStep:_0x5c7b91}=toStepDisplayName(_0x4c4b6e);return _0x5c7b91?_0x415e36(0x13d)+_0x39ab55+'`':'capture\x20step\x20`'+_0x39ab55+'`';}case _0x415e36(0xfd):return _0x415e36(0x13a)+_0x3103e0[_0x415e36(0x138)](formatCommandTarget,_0x3103e0[_0x415e36(0x120)](extractFirstCommandArgument,_0x440c4d,_0x33433d));case _0x3103e0[_0x415e36(0x122)]:return _0x415e36(0x143)+_0x3103e0[_0x415e36(0xbd)](formatCommandTarget,extractFirstCommandArgument(_0x440c4d,_0x33433d));case _0x3103e0[_0x415e36(0xd7)]:return'fill\x20'+formatCommandTarget(extractFirstCommandArgument(_0x440c4d,_0x33433d));case _0x3103e0[_0x415e36(0xd9)]:return'press\x20'+formatCommandTarget(extractFirstCommandArgument(_0x440c4d,_0x33433d));case _0x415e36(0xc4):return _0x415e36(0x117);case _0x415e36(0x12f):{const _0x7cc170=extractFirstCommandArgument(_0x440c4d,_0x33433d);return _0x7cc170?_0x415e36(0x130)+_0x7cc170:_0x3103e0[_0x415e36(0x10e)];}case _0x3103e0['nKzNT']:{const _0x3df6c9=_0x3103e0[_0x415e36(0xbe)](extractFirstCommandArgument,_0x440c4d,_0x33433d);return _0x3df6c9?_0x415e36(0xc1)+_0x3df6c9:_0x415e36(0xf9);}default:return _0x33433d;}}function extractPlaywrightCliToolDescription(_0x131955){const _0x397082=_0x169a,_0x349e77={'tfSAC':'string'},_0x24ed0d=_0x131955['description'];if(typeof _0x24ed0d!==_0x349e77[_0x397082(0x108)])return null;const _0x4730e8=_0x24ed0d[_0x397082(0xef)]()['replace'](/\s+/g,'\x20');return _0x4730e8['length']>0x0?_0x4730e8:null;}export function formatPlaywrightCliConsoleLogMessage(_0x7d0736,_0x2eba37,_0x8337eb){const _0x3c6012=_0x169a,_0x41055b=formatPlaywrightCliLog(_0x2eba37,_0x8337eb),_0x2993d3=extractPlaywrightCliToolDescription(_0x7d0736);if(!_0x2993d3)return _0x3c6012(0xc5)+_0x41055b;if(process['env'][_0x3c6012(0xb8)])return _0x3c6012(0x12e)+_0x2993d3+'\x20('+_0x41055b+')';return _0x3c6012(0x12e)+_0x2993d3;}export function buildVerifyFeatureCliDebugPrompt(_0x1f8a85,_0x5de2c1){const _0x2458ce=_0x169a,_0x1054cb={'WOTWe':function(_0x23a677,_0x1eab6f,_0x5c381e){return _0x23a677(_0x1eab6f,_0x5c381e);},'sBfYM':function(_0x4e4741,_0xcf66b9,_0x3660a6){return _0x4e4741(_0xcf66b9,_0x3660a6);},'zEGgt':_0x2458ce(0x142),'ccyaN':_0x2458ce(0xb6),'AMNVX':function(_0x123ed8,_0x302e06){return _0x123ed8(_0x302e06);}},_0x158a1a=_0x1054cb['WOTWe'](buildCliArtifactPath,_0x5de2c1,_0x2458ce(0x100)),_0x4512f7=_0x1054cb[_0x2458ce(0xca)](buildCliArtifactPath,_0x5de2c1,_0x1054cb[_0x2458ce(0xeb)]),_0x4f9f53=_0x1054cb[_0x2458ce(0xf0)](buildCliArtifactPath,_0x5de2c1,_0x2458ce(0xb7)),_0x2ba003=_0x1054cb[_0x2458ce(0xca)](buildCliArtifactPath,_0x5de2c1,_0x1054cb[_0x2458ce(0xbc)]),_0x5c8a05=quoteShellArg(_0x158a1a),_0x1a1643=quoteShellArg(_0x4512f7),_0x4cfd4c=_0x1054cb['AMNVX'](quoteShellArg,_0x4f9f53),_0x4ea42b=quoteShellArg(_0x2ba003);return _0x2458ce(0xe5)+_0x1f8a85+_0x2458ce(0xd6)+_0x1f8a85+_0x2458ce(0x103)+_0x1f8a85+'\x20tracing-start`\x0a3.\x20Run\x20`'+_0x1f8a85+_0x2458ce(0x12c)+_0x5de2c1+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a5.\x20Run\x20`'+_0x1f8a85+_0x2458ce(0x121)+_0x5c8a05+_0x2458ce(0x119)+_0x1f8a85+_0x2458ce(0x12d)+_0x1a1643+'`\x0a7.\x20Click\x20the\x20\x22Learn\x20More\x22\x20link\x20with\x20Playwright\x20CLI\x0a8.\x20Run\x20`'+_0x1f8a85+_0x2458ce(0x121)+_0x4cfd4c+_0x2458ce(0xce)+_0x1f8a85+_0x2458ce(0x12d)+_0x4ea42b+_0x2458ce(0xf2);}export function buildVerifyFeatureCliPrompt(_0x3e008c){const _0x1e6ad5=_0x169a,_0x3692c1={'LtWYf':_0x1e6ad5(0x131),'TvRzn':_0x1e6ad5(0xe0),'GtIbG':_0x1e6ad5(0x11d),'VusVB':'\x20>\x20','IAoAl':function(_0x4a30a5,_0x37a203,_0x858eab){return _0x4a30a5(_0x37a203,_0x858eab);},'OYfIh':function(_0xd9be51,_0x40ba65,_0x510683){return _0xd9be51(_0x40ba65,_0x510683);},'plgPk':function(_0x1c1fe3,_0x357cf8){return _0x1c1fe3(_0x357cf8);},'CcklD':function(_0x3d0a05,_0x1546c9){return _0x3d0a05>_0x1546c9;},'eQpZm':function(_0x4466fb,_0x5e242c,_0x5ac8f4){return _0x4466fb(_0x5e242c,_0x5ac8f4);},'xdjMW':'03_result-visible.png'},{checklistItem:_0x34a102,itemFeedback:_0x53db80,taskDescription:_0x4e0db8,cliCommandPrefix:_0x9fc891,cliArtifactDir:_0x423b4d,isCdpMode:_0x3a817d,url:_0x3cc32f,cdpEndpoint:_0x13fe58,loginInstructions:_0x50531a}=_0x3e008c,_0x1e2e16=buildCliArtifactPath(_0x423b4d,'01_initial.yml'),_0x5badbf=buildCliArtifactPath(_0x423b4d,_0x1e6ad5(0xea)),_0x3f8665=_0x3692c1[_0x1e6ad5(0x104)](buildCliArtifactPath,_0x423b4d,'key_03_success-state.png'),_0x351254=_0x3692c1['OYfIh'](buildCliArtifactPath,_0x423b4d,_0x1e6ad5(0xec)),_0x438abd=_0x3692c1[_0x1e6ad5(0xc2)](quoteShellArg,_0x1e2e16),_0x59ee6d=quoteShellArg(_0x5badbf),_0x3e87b2=quoteShellArg(_0x3f8665),_0x5d05f5=_0x3692c1[_0x1e6ad5(0xc2)](quoteShellArg,_0x351254),_0x385f10=_0x34a102[_0x1e6ad5(0x133)]?'\x0a\x0a##\x20Additional\x20Notes\x0a'+_0x34a102[_0x1e6ad5(0x133)]:'';let _0x4f188d='';if(_0x53db80&&_0x3692c1['CcklD'](_0x53db80['unaddressedComments'][_0x1e6ad5(0x13c)],0x0)){const _0xe61e48=_0x53db80['unaddressedComments']['map'](_0x26a08f=>{const _0x52af33=_0x1e6ad5,_0x4fc01a=new Date(_0x26a08f['createdAt'])[_0x52af33(0x118)](_0x52af33(0xe9),{'month':_0x3692c1[_0x52af33(0x112)],'day':_0x3692c1['TvRzn']}),_0x495309=_0x26a08f[_0x52af33(0xe2)]||_0x26a08f[_0x52af33(0xd1)]||_0x3692c1[_0x52af33(0xdc)],_0x4a8f2c=_0x26a08f[_0x52af33(0x137)]?_0x52af33(0xe3)+(_0x26a08f['domRef']['selector']['split'](_0x3692c1['VusVB'])[_0x52af33(0x139)]()?.[_0x52af33(0xcc)](':')[0x0]||'element')+'>\x20\x22'+(_0x26a08f[_0x52af33(0x137)][_0x52af33(0x12b)]||'')[_0x52af33(0x136)](0x0,0x32)+'\x22)':'';return'-\x20['+_0x26a08f['id']+_0x52af33(0xb5)+_0x495309+'**\x20('+_0x4fc01a+'):\x20\x22'+_0x26a08f['content']+'\x22'+_0x4a8f2c;})['join']('\x0a');_0x4f188d='\x0a\x0a##\x20Reviewer\x20Feedback\x20to\x20Address\x0aThe\x20following\x20reviewer\x20comments\x20were\x20left\x20on\x20the\x20previous\x20version\x20of\x20this\x20item.\x0aVerify\x20that\x20each\x20concern\x20has\x20been\x20addressed\x20in\x20the\x20current\x20implementation.\x0aFor\x20each\x20comment\x20you\x20believe\x20has\x20been\x20addressed,\x20include\x20its\x20ID\x20(the\x20bracketed\x20value)\x20in\x20the\x20addressedCommentIds\x20array\x20in\x20your\x20output.\x0a\x0a'+_0xe61e48;}const _0x3d4759=_0x53db80?.[_0x1e6ad5(0x116)]?_0x1e6ad5(0xd3)+_0x53db80['canonicalFlow']:'',_0xd3688d=_0x3a817d?'##\x20App\x20Context\x0aYou\x20are\x20connected\x20to\x20a\x20desktop\x20application\x20via\x20CDP\x20(Chrome\x20DevTools\x20Protocol)\x20at\x20'+_0x13fe58+_0x1e6ad5(0xf1):_0x1e6ad5(0x132)+_0x3cc32f+'\x0a-\x20You\x20may\x20ONLY\x20navigate\x20to\x20paths\x20under\x20this\x20base\x20URL\x20(same\x20protocol,\x20host,\x20and\x20port)\x0a-\x20For\x20example,\x20if\x20the\x20base\x20URL\x20is\x20\x22http://localhost:3000\x22,\x20you\x20can\x20navigate\x20to\x20\x22http://localhost:3000/home\x22,\x20\x22http://localhost:3000/settings\x22,\x20etc.\x0a-\x20DO\x20NOT\x20navigate\x20to\x20any\x20different\x20domain,\x20host,\x20or\x20port\x20under\x20any\x20circumstances\x0a-\x20If\x20documentation\x20or\x20code\x20diffs\x20suggest\x20a\x20path\x20exists\x20(e.g.,\x20\x22/dashboard\x22),\x20you\x20may\x20navigate\x20to\x20that\x20path\x20ONLY\x20under\x20the\x20base\x20URL\x20above\x0a-\x20The\x20base\x20URL\x20above\x20is\x20the\x20ONLY\x20authorized\x20profile\x20for\x20this\x20verification',_0x71ab77=_0x3cc32f?quoteShellArg(_0x3cc32f):'',_0x196781=_0x3a817d?'##\x20Instructions\x0a1.\x20Use\x20Bash\x20plus\x20Playwright\x20CLI\x20only.\x20Do\x20NOT\x20call\x20MCP\x20browser\x20tools.\x0a2.\x20Start\x20by\x20running\x20`'+_0x9fc891+_0x1e6ad5(0xf6)+_0x9fc891+_0x1e6ad5(0x134)+_0x9fc891+_0x1e6ad5(0x105)+_0x423b4d+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`'+_0x9fc891+_0x1e6ad5(0x121)+_0x438abd+_0x1e6ad5(0xc0)+_0x9fc891+_0x1e6ad5(0x12d)+_0x5d05f5+'`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a6.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`'+_0x9fc891+'\x20run-code\x20\x22<playwright\x20code>\x22`.\x0a7.\x20Do\x20not\x20run\x20`close`,\x20`tracing-stop`,\x20or\x20`video-stop`;\x20the\x20host\x20finalizes\x20the\x20session\x20and\x20artifacts.\x0a8.\x20After\x20completing\x20the\x20verification,\x20evaluate\x20whether\x20the\x20result\x20adequately\x20verifies\x20the\x20scenario':'##\x20Instructions\x0a1.\x20Use\x20Bash\x20plus\x20Playwright\x20CLI\x20only.\x20Do\x20NOT\x20call\x20MCP\x20browser\x20tools.\x0a2.\x20Start\x20by\x20running\x20`'+_0x9fc891+_0x1e6ad5(0x145)+_0x71ab77+'`,\x20then\x20`'+_0x9fc891+_0x1e6ad5(0x134)+_0x9fc891+'\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x423b4d+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`'+_0x9fc891+_0x1e6ad5(0x121)+_0x438abd+_0x1e6ad5(0x101)+_0x9fc891+_0x1e6ad5(0x12d)+_0x5d05f5+'`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a8.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`'+_0x9fc891+'\x20run-code\x20\x22<playwright\x20code>\x22`.\x0a9.\x20Do\x20not\x20run\x20`close`,\x20`tracing-stop`,\x20or\x20`video-stop`;\x20the\x20host\x20finalizes\x20the\x20session\x20and\x20artifacts.\x0a10.\x20After\x20completing\x20the\x20verification,\x20evaluate\x20whether\x20the\x20result\x20adequately\x20verifies\x20the\x20scenario',_0x149d14=_0x3a817d?_0x1e6ad5(0x10d):'\x0a\x0a##\x20Critical:\x20Early\x20Error\x20Detection\x0aAfter\x20step\x202\x20(taking\x20initial\x20snapshot),\x20IMMEDIATELY\x20check\x20for\x20blocking\x20HTTP\x20errors:\x0a\x0a**Blocking\x20errors\x20to\x20detect:**\x0a-\x20HTTP\x20404:\x20\x22404\x22,\x20\x22Not\x20Found\x22,\x20\x22Page\x20not\x20found\x22,\x20\x22does\x20not\x20exist\x22\x0a-\x20HTTP\x20500:\x20\x22500\x22,\x20\x22Internal\x20Server\x20Error\x22,\x20\x22Server\x20Error\x22,\x20\x22Something\x20went\x20wrong\x22\x0a-\x20HTTP\x20400:\x20\x22400\x22,\x20\x22Bad\x20Request\x22,\x20\x22Invalid\x20request\x22\x0a\x0a**Also\x20check\x20for:**\x0a-\x20Framework\x20error\x20pages\x20(Next.js\x20error\x20boundary,\x20React\x20error\x20page,\x20\x22Application\x20error\x22)\x0a-\x20Completely\x20blank/empty\x20pages\x20with\x20no\x20content\x0a-\x20\x22Cannot\x20GET\x20/path\x22\x20messages\x0a\x0a**If\x20ANY\x20blocking\x20error\x20is\x20detected:**\x0a1.\x20DO\x20NOT\x20continue\x20with\x20the\x20task\x0a2.\x20Return\x20IMMEDIATELY\x20with\x20evaluation:\x20\x22blocked\x22\x0a3.\x20Set\x20evaluationReason\x20to\x20describe\x20the\x20specific\x20error\x20(e.g.,\x20\x22HTTP\x20404\x20-\x20Page\x20not\x20found\x20at\x20/dashboard\x22)\x0a4.\x20Include\x20the\x20error\x20in\x20issues\x20array\x20with\x20severity:\x20\x22BLOCKER\x22\x20and\x20appropriate\x20type\x20(HTTP_404,\x20HTTP_500,\x20HTTP_400,\x20or\x20NAVIGATION_ERROR)\x0a\x0aThis\x20early\x20exit\x20prevents\x20wasting\x20time\x20on\x20tasks\x20that\x20cannot\x20succeed\x20due\x20to\x20fundamental\x20errors.',_0x4015e4=_0x50531a?_0x1e6ad5(0xda)+_0x50531a+_0x1e6ad5(0xcb):'';return'You\x20are\x20a\x20Feature\x20Review\x20Verifier.\x20Your\x20job\x20is\x20to\x20verify\x20a\x20scenario\x20by\x20executing\x20a\x20UI\x20flow\x20and\x20evaluating\x20whether\x20it\x20adequately\x20completes\x20the\x20scenario.\x0a\x0a##\x20Scenario\x20to\x20Verify\x0a'+_0x34a102['description']+_0x385f10+_0x4f188d+_0x3d4759+_0x1e6ad5(0xb4)+_0x4e0db8+'\x0a\x0a'+_0xd3688d+_0x4015e4+'\x0a\x0a'+_0x196781+_0x1e6ad5(0xe6)+_0x9fc891+_0x1e6ad5(0x10f)+_0x423b4d+'`\x0a-\x20`snapshot\x20--filename\x20'+_0x59ee6d+'`\x20writes\x20a\x20YAML\x20snapshot\x20you\x20can\x20read\x20for\x20element\x20refs\x0a-\x20`click\x20<ref>`,\x20`fill\x20<ref>\x20\x22text\x22`,\x20`check\x20<ref>`,\x20`press\x20Enter`\x0a-\x20`tab-list`,\x20`tab-select\x20<index>`,\x20`tab-new\x20<url>`\x0a-\x20`screenshot\x20--filename\x20'+_0x3e87b2+_0x1e6ad5(0xba)+_0x423b4d+_0x1e6ad5(0xc8)+_0x351254+'\x22,\x20\x22'+_0x3692c1[_0x1e6ad5(0x104)](buildCliArtifactPath,_0x423b4d,_0x1e6ad5(0xe7))+_0x1e6ad5(0x11e)+_0x3692c1[_0x1e6ad5(0x13b)](buildCliArtifactPath,_0x423b4d,_0x3692c1[_0x1e6ad5(0xc6)])+_0x1e6ad5(0xf4)+_0x3692c1[_0x1e6ad5(0x104)](buildCliArtifactPath,_0x423b4d,_0x1e6ad5(0x146))+'\x22\x0a-\x20The\x20\x22key_\x22\x20prefix\x20marks\x20screenshots\x20as\x20high-priority\x20evidence\x20for\x20human\x20reviewers\x0a\x0a**Aim\x20for\x203-6\x20screenshots\x20per\x20verification**\x20to\x20document\x20the\x20complete\x20flow.\x20Mark\x201-2\x20of\x20the\x20most\x20important\x20ones\x20with\x20the\x20\x22key_\x22\x20prefix.\x0a'+_0x149d14+'\x0a##\x20Evaluation\x20Criteria\x0a-\x20VERIFIED:\x20The\x20task\x20completed\x20successfully\x20and\x20the\x20scenario\x20requirements\x20are\x20fully\x20met\x0a-\x20PARTIAL:\x20The\x20task\x20partially\x20completed\x20but\x20some\x20aspects\x20of\x20the\x20scenario\x20are\x20not\x20verified\x0a-\x20BLOCKED:\x20A\x20blocking\x20issue\x20(bug,\x20error,\x20missing\x20feature)\x20prevents\x20completion\x0a-\x20FAILED:\x20The\x20task\x20could\x20not\x20be\x20completed\x20due\x20to\x20errors\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format\x20with\x20your\x20evaluation.';}export function summarizeVerifyFeatureCliCommandAvailability(_0x5a4ab4){const _0x58408c=_0x169a,_0x391b87=[..._0x5a4ab4[_0x58408c(0xb3)]()]['sort']();let _0x38ac0a=0x0;for(const _0x5c405a of _0x5a4ab4[_0x58408c(0xfe)]()){_0x38ac0a+=_0x5c405a;}return{'cliCommandCount':_0x38ac0a,'cliCommandsSeen':_0x391b87,'noCliCommandsCalled':_0x38ac0a===0x0};}export function createVerifyFeatureCliHooks(_0x156654){const _0x37e850=_0x169a,_0x400630={'yvhme':_0x37e850(0xd8),'jYzqR':function(_0x362b94,_0x47be90){return _0x362b94!==_0x47be90;},'ygXTF':function(_0x114e7d,_0x5a9ce2){return _0x114e7d(_0x5a9ce2);},'qqcDO':'tool_call','rXQHb':'playwright-cli','jXJMq':function(_0x242937,_0x36bedf){return _0x242937(_0x36bedf);},'aTGSB':function(_0x4d9bb0,_0x5b8403,_0x3d4992,_0x30dc0b){return _0x4d9bb0(_0x5b8403,_0x3d4992,_0x30dc0b);},'lGNsr':'tool_failure','VzZKl':'Bash'},_0x29ab50=new Map(),_0x3a17a9=async _0x3036f9=>{const _0x49064f=_0x37e850;if(_0x3036f9[_0x49064f(0x125)]!==_0x400630[_0x49064f(0xbf)])return{};const _0x4d6369=_0x3036f9;if(_0x400630['jYzqR'](_0x4d6369['tool_name'],_0x49064f(0xff)))return{};const _0x1540c7=_0x4d6369[_0x49064f(0xf3)],_0x46cfa2=extractBashCommand(_0x1540c7);if(!_0x46cfa2)return{};const _0x4101f6=_0x400630[_0x49064f(0xdb)](parsePlaywrightCliCommand,_0x46cfa2);if(!_0x4101f6)return{};return _0x29ab50['set'](_0x4101f6,(_0x29ab50[_0x49064f(0xe8)](_0x4101f6)||0x0)+0x1),_0x156654['trackPhaseStart'](_0x400630[_0x49064f(0xf5)],{'transport':'playwright-cli','toolName':_0x4101f6}),_0x156654['trackPhaseEnd'](_0x400630[_0x49064f(0xf5)],{'transport':_0x400630[_0x49064f(0xf7)],'toolName':_0x4101f6,'bashCommandPreview':_0x400630['jXJMq'](truncatePreview,_0x46cfa2)}),_0x400630[_0x49064f(0x11f)](_0x4101f6,'snapshot')&&console['log'](_0x400630[_0x49064f(0xbb)](formatPlaywrightCliConsoleLogMessage,_0x1540c7,_0x46cfa2,_0x4101f6)),{};},_0x5c0b38=async _0x3d5e9e=>{const _0xc20c66=_0x37e850;if(_0x3d5e9e[_0xc20c66(0x125)]!=='PostToolUseFailure')return{};const _0x2e423c=_0x3d5e9e;if(_0x2e423c['tool_name']!==_0xc20c66(0xff))return{};return await _0x156654[_0xc20c66(0x128)](_0x400630[_0xc20c66(0xfc)],_0x2e423c['error'],{'transport':'playwright-cli','toolName':_0x400630[_0xc20c66(0xdd)]}),{};};return{'postToolUseHook':_0x3a17a9,'postToolUseFailureHook':_0x5c0b38,'commandCounts':_0x29ab50};}async function runPlaywrightCliLifecycleCommand(_0x4f8420){const _0x37e45b=_0x169a,_0x45b6e2={'njzLJ':function(_0x5d32b2,_0x45d153){return _0x5d32b2??_0x45d153;},'FjULk':function(_0x305673,_0xdb8a94,_0xb7a33e){return _0x305673(_0xdb8a94,_0xb7a33e);}},{sessionId:_0x29f357,configPath:_0x40f616,commandArgs:_0x3b65b9,env:_0x192e1a,telemetry:_0x1fe31c,phase:_0x29fb72,metadata:_0x1a8a07,timeoutMs:_0x4b6345}=_0x4f8420;_0x1fe31c['trackPhaseStart'](_0x29fb72,_0x1a8a07);try{const _0x4ec6cd=await runPlaywrightCliCommand({'sessionId':_0x29f357,'configPath':_0x40f616,'commandArgs':_0x3b65b9,'cwd':process['cwd'](),'env':_0x192e1a,'timeoutMs':_0x45b6e2[_0x37e45b(0xdf)](_0x4b6345,PLAYWRIGHT_CLI_COMMAND_TIMEOUT_MS)});_0x1fe31c['trackPhaseEnd'](_0x29fb72,{..._0x1a8a07,'subcommand':_0x4ec6cd['invocation']['subcommand'],'stdoutPreview':truncatePreview(_0x4ec6cd['stdout'],0x7d0),'stderrPreview':_0x45b6e2['FjULk'](truncatePreview,_0x4ec6cd[_0x37e45b(0x144)],0x7d0)});}catch(_0x279da0){await _0x1fe31c[_0x37e45b(0x128)](_0x29fb72,_0x279da0,_0x1a8a07);throw _0x279da0;}}export async function finalizeVerifyFeatureCliSession(_0x406048){const _0x479579=_0x169a,_0x4486a4={'suBqN':'playwright_cli_tracing_stop','SKlPu':_0x479579(0x126),'hDNAh':'video-stop','AgJZd':function(_0x1a9727,_0x15fa54,_0x540267){return _0x1a9727(_0x15fa54,_0x540267);},'ybTuL':'session-recording.webm','yWFMN':_0x479579(0xd2),'GrjqU':function(_0x48c455,_0xcef2b6){return _0x48c455(_0xcef2b6);}},{telemetry:_0x1adff3,sessionId:_0x34a7e3,configPath:_0x571967,cliArtifactDir:_0x7ee3fa,env:_0x2c4e81,transportMetadata:_0x32bf46}=_0x406048,_0x44a9b4=[{'phase':_0x4486a4['suBqN'],'commandArgs':[_0x4486a4['SKlPu']]},{'phase':_0x479579(0xd0),'commandArgs':[_0x4486a4[_0x479579(0x106)],'--filename='+_0x4486a4['AgJZd'](buildCliArtifactPath,_0x7ee3fa,_0x4486a4['ybTuL'])]},{'phase':'playwright_cli_close','commandArgs':[_0x4486a4['yWFMN']]}];for(const _0x277b96 of _0x44a9b4){try{await _0x4486a4['GrjqU'](runPlaywrightCliLifecycleCommand,{'sessionId':_0x34a7e3,'configPath':_0x571967,'commandArgs':[..._0x277b96['commandArgs']],'env':_0x2c4e81,'telemetry':_0x1adff3,'phase':_0x277b96['phase'],'metadata':_0x32bf46});}catch{}}}export async function loadVerifyFeatureCliTraceUploadArtifact(_0x3f84dc){const _0x41e559=_0x169a,_0x498471={'cFvIz':'trace.trace.zip','HlSDv':function(_0x476844,_0x1208cc,_0x5771c6){return _0x476844(_0x1208cc,_0x5771c6);},'ONYkt':function(_0x2b70e9,_0x10695b){return _0x2b70e9(_0x10695b);}},_0x7a9f2e=['trace.zip',_0x498471['cFvIz']];for(const _0x1b0d32 of _0x7a9f2e){const _0xd0445=_0x498471[_0x41e559(0xf8)](join,_0x3f84dc,_0x1b0d32);try{return{'buffer':await _0x498471['ONYkt'](readFile,_0xd0445),'source':_0xd0445};}catch{}}return null;}export async function rehomeVerifyFeatureCliArtifacts(_0x1f5d1f){const _0x3b80cb=_0x169a,_0x15e3c4={'aKJFV':function(_0x2d07fa,_0x2c8118,_0x34f7af){return _0x2d07fa(_0x2c8118,_0x34f7af);},'UqUjm':function(_0x224523,_0x4c1ace){return _0x224523(_0x4c1ace);},'Brsxi':function(_0xe9dd9b,_0x38f664){return _0xe9dd9b<_0x38f664;},'wtgxS':function(_0x5a4c5a,_0x4590b9){return _0x5a4c5a===_0x4590b9;}},{cwd:_0x3cb3bd,cliArtifactDir:_0x57ed50,startTime:_0x49d60c}=_0x1f5d1f,_0x5b4896=[];await _0x15e3c4['aKJFV'](mkdir,_0x57ed50,{'recursive':!![]});const _0x4151cd=await _0x15e3c4['aKJFV'](readdir,_0x3cb3bd,{'withFileTypes':!![]});for(const _0x4947d1 of _0x4151cd){if(!_0x4947d1[_0x3b80cb(0x141)]()||!VERIFY_FEATURE_CLI_ARTIFACT_FILE_PATTERN['test'](_0x4947d1[_0x3b80cb(0xe4)]))continue;const _0x459ac6=_0x15e3c4['aKJFV'](join,_0x3cb3bd,_0x4947d1['name']),_0x26b17e=await _0x15e3c4[_0x3b80cb(0xed)](stat,_0x459ac6);if(_0x15e3c4['Brsxi'](_0x26b17e['mtimeMs']+0x7d0,_0x49d60c))continue;const _0x40ed4e=buildCliArtifactPath(_0x57ed50,_0x4947d1[_0x3b80cb(0xe4)]);if(_0x15e3c4['wtgxS'](_0x459ac6,_0x40ed4e))continue;await rename(_0x459ac6,_0x40ed4e),_0x5b4896[_0x3b80cb(0xe1)](_0x4947d1['name']);}return _0x5b4896['sort']();}
|
|
1
|
+
(function(_0x46e15c,_0x95fe4){const _0x18ee48=_0x5277,_0x539d91=_0x46e15c();while(!![]){try{const _0x516cf9=parseInt(_0x18ee48(0x1ff))/0x1*(parseInt(_0x18ee48(0x201))/0x2)+-parseInt(_0x18ee48(0x217))/0x3*(-parseInt(_0x18ee48(0x22a))/0x4)+-parseInt(_0x18ee48(0x262))/0x5+-parseInt(_0x18ee48(0x266))/0x6+parseInt(_0x18ee48(0x1f2))/0x7*(parseInt(_0x18ee48(0x216))/0x8)+parseInt(_0x18ee48(0x24b))/0x9+-parseInt(_0x18ee48(0x26c))/0xa*(parseInt(_0x18ee48(0x1f3))/0xb);if(_0x516cf9===_0x95fe4)break;else _0x539d91['push'](_0x539d91['shift']());}catch(_0x2a8e1a){_0x539d91['push'](_0x539d91['shift']());}}}(_0x4753,0xca5e3));import{mkdir,readFile,readdir,rename,stat}from'fs/promises';import{basename,join}from'path';import{extractBashCommand,parsePlaywrightCliCommand,quoteShellArg,runPlaywrightCliCommand}from'./utils/playwrightCli.js';const PLAYWRIGHT_CLI_COMMAND_TIMEOUT_MS=0xea60,PLAYWRIGHT_CLI_PREVIEW_LIMIT=0xf0,VERIFY_FEATURE_CLI_ARTIFACT_FILE_PATTERN=/^(?:\d{2}_.+\.(?:png|ya?ml)|key_.+\.png|session-recording(?:-\d+)?\.webm|trace(?:\.trace)?(?:-\d+)?\.zip|current_snap\.ya?ml)$/i;function truncatePreview(_0x145386,_0x1479e8=PLAYWRIGHT_CLI_PREVIEW_LIMIT){const _0x300534={'CdiIK':function(_0xb1e1b1,_0x2b2a59){return _0xb1e1b1>_0x2b2a59;}};return _0x300534['CdiIK'](_0x145386['length'],_0x1479e8)?_0x145386['slice'](0x0,_0x1479e8)+'...':_0x145386;}function buildCliArtifactPath(_0x485c72,_0x3ab742){return join(_0x485c72,_0x3ab742);}function toStepDisplayName(_0x1045c5){const _0xebcb33=_0x5277,_0x475679=basename(_0x1045c5)[_0xebcb33(0x26e)](/\.(?:png|ya?ml)$/i,'')[_0xebcb33(0x26e)](/^key_/i,'')[_0xebcb33(0x26e)](/^\d+_/,'')['replace'](/-/g,'\x20');return{'name':_0x475679,'isKeyStep':/^key_/i[_0xebcb33(0x20b)](basename(_0x1045c5))};}function extractShellValue(_0x20e628){if(!_0x20e628)return null;return _0x20e628[0x1]??_0x20e628[0x2]??_0x20e628[0x3]??null;}function extractFilenameOption(_0x5b998b){const _0x289bbc=_0x5277;return extractShellValue(_0x5b998b[_0x289bbc(0x22f)](/--filename(?:=|\s+)(?:"([^"]+)"|'([^']+)'|(\S+))/));}function extractFirstCommandArgument(_0x2b9614,_0x2652da){const _0x479122=_0x5277,_0x4320d8={'WjKZq':'\x5c$&'},_0x3e8c97=_0x2652da[_0x479122(0x26e)](/[.*+?^${}()|[\]\\]/g,_0x4320d8[_0x479122(0x207)]);return extractShellValue(_0x2b9614[_0x479122(0x22f)](new RegExp(_0x479122(0x1ec)+_0x3e8c97+_0x479122(0x227))));}function formatCommandTarget(_0x3a48bf){const _0x38ac95=_0x5277,_0x551412={'CesFR':function(_0x57ffb5,_0x4fc903,_0x4528fc){return _0x57ffb5(_0x4fc903,_0x4528fc);}};if(!_0x3a48bf)return _0x38ac95(0x26d);if(/^e\d+$/i[_0x38ac95(0x20b)](_0x3a48bf))return _0x38ac95(0x231)+_0x3a48bf;return JSON['stringify'](_0x551412[_0x38ac95(0x254)](truncatePreview,_0x3a48bf,0x78));}function formatPlaywrightCliLog(_0x3607ae,_0x25dc5a){const _0x124495=_0x5277,_0x42a178={'wEOyr':_0x124495(0x20c),'tWnej':'tracing-start','sSnbl':'stop\x20tracing','kvzbD':'video-stop','JZQNn':'stop\x20video\x20recording','uxOFd':_0x124495(0x234),'IYLJS':function(_0x222f94,_0x2429f7){return _0x222f94(_0x2429f7);},'FKmDZ':'check','vlQpQ':function(_0x4c6836,_0x23d6d5,_0x3edbc3){return _0x4c6836(_0x23d6d5,_0x3edbc3);},'NoOxb':_0x124495(0x1ea),'ACJUk':function(_0x2a207b,_0x36c056,_0x54d852){return _0x2a207b(_0x36c056,_0x54d852);},'cRdoi':_0x124495(0x258),'UCcAv':function(_0x4ccfe5,_0x3779af,_0x28550a){return _0x4ccfe5(_0x3779af,_0x28550a);},'rbkWJ':'run-code','Xybgi':'run\x20custom\x20Playwright\x20code','ghSZr':_0x124495(0x274),'rEPJm':function(_0x28db32,_0x54ed3b,_0x2a9117){return _0x28db32(_0x54ed3b,_0x2a9117);},'NSrAe':'open\x20new\x20tab','TVVJH':_0x124495(0x1fe),'Hdowt':function(_0x367da8,_0x391846,_0x237c26){return _0x367da8(_0x391846,_0x237c26);}};switch(_0x25dc5a){case'open':{const _0x1868c6=extractFirstCommandArgument(_0x3607ae,_0x25dc5a);return _0x1868c6?_0x124495(0x24f)+_0x1868c6:_0x42a178['wEOyr'];}case _0x42a178['tWnej']:return _0x124495(0x21b);case _0x124495(0x209):return _0x42a178[_0x124495(0x25c)];case _0x124495(0x240):return'start\x20video\x20recording';case _0x42a178['kvzbD']:return _0x42a178['JZQNn'];case _0x124495(0x22d):{const _0x576393=extractFilenameOption(_0x3607ae);if(!_0x576393)return _0x124495(0x214);const {name:_0x437c44}=toStepDisplayName(_0x576393);return _0x124495(0x23f)+_0x437c44+'`';}case'screenshot':{const _0x791980=extractFilenameOption(_0x3607ae);if(!_0x791980)return _0x42a178['uxOFd'];const {name:_0x487b0f,isKeyStep:_0x2a8dd9}=toStepDisplayName(_0x791980);return _0x2a8dd9?_0x124495(0x23e)+_0x487b0f+'`':'capture\x20step\x20`'+_0x487b0f+'`';}case _0x124495(0x226):return _0x124495(0x1ef)+_0x42a178['IYLJS'](formatCommandTarget,extractFirstCommandArgument(_0x3607ae,_0x25dc5a));case _0x42a178['FKmDZ']:return'check\x20'+formatCommandTarget(_0x42a178['vlQpQ'](extractFirstCommandArgument,_0x3607ae,_0x25dc5a));case _0x42a178['NoOxb']:return _0x124495(0x269)+formatCommandTarget(_0x42a178['ACJUk'](extractFirstCommandArgument,_0x3607ae,_0x25dc5a));case _0x42a178[_0x124495(0x213)]:return'press\x20'+_0x42a178['IYLJS'](formatCommandTarget,_0x42a178[_0x124495(0x243)](extractFirstCommandArgument,_0x3607ae,_0x25dc5a));case _0x42a178['rbkWJ']:return _0x42a178['Xybgi'];case _0x42a178[_0x124495(0x268)]:{const _0xea6ec3=_0x42a178['rEPJm'](extractFirstCommandArgument,_0x3607ae,_0x25dc5a);return _0xea6ec3?'open\x20new\x20tab\x20'+_0xea6ec3:_0x42a178[_0x124495(0x272)];}case _0x42a178['TVVJH']:{const _0x3a25c9=_0x42a178[_0x124495(0x260)](extractFirstCommandArgument,_0x3607ae,_0x25dc5a);return _0x3a25c9?_0x124495(0x25d)+_0x3a25c9:'select\x20tab';}default:return _0x25dc5a;}}function extractPlaywrightCliToolDescription(_0xa16ce){const _0x256616=_0x5277,_0x1380a4={'LKOse':function(_0xd3278c,_0x2d8034){return _0xd3278c!==_0x2d8034;},'FcyPp':function(_0x3c4811,_0x174a7c){return _0x3c4811>_0x174a7c;}},_0x311b4b=_0xa16ce[_0x256616(0x23a)];if(_0x1380a4[_0x256616(0x215)](typeof _0x311b4b,'string'))return null;const _0x41c181=_0x311b4b['trim']()['replace'](/\s+/g,'\x20');return _0x1380a4[_0x256616(0x206)](_0x41c181['length'],0x0)?_0x41c181:null;}export function formatPlaywrightCliConsoleLogMessage(_0x5dea7d,_0x3f734c,_0x3abae5){const _0x45cb2c=_0x5277,_0x20943d={'WwdVE':function(_0x715d4d,_0x5b9a0f,_0x3e8403){return _0x715d4d(_0x5b9a0f,_0x3e8403);}},_0x122408=_0x20943d[_0x45cb2c(0x21e)](formatPlaywrightCliLog,_0x3f734c,_0x3abae5),_0x3a314c=extractPlaywrightCliToolDescription(_0x5dea7d);if(!_0x3a314c)return'[playwright-cli]\x20'+_0x122408;if(process[_0x45cb2c(0x200)][_0x45cb2c(0x222)])return _0x45cb2c(0x1ee)+_0x3a314c+'\x20('+_0x122408+')';return _0x45cb2c(0x1ee)+_0x3a314c;}export function buildVerifyFeatureCliDebugPrompt(_0x876bc1,_0x39875f){const _0x261fea=_0x5277,_0x49323a={'SupZo':function(_0x228e2e,_0x4aa8cc,_0x31ea28){return _0x228e2e(_0x4aa8cc,_0x31ea28);},'BUXwH':'00_mozilla-homepage.yml','WXiJA':'02_learn-more.yml','TLlec':function(_0x3acfb0,_0x25e20c){return _0x3acfb0(_0x25e20c);},'RynfJ':function(_0x167c4c,_0x311733){return _0x167c4c(_0x311733);}},_0x46adb6=_0x49323a[_0x261fea(0x205)](buildCliArtifactPath,_0x39875f,_0x49323a[_0x261fea(0x224)]),_0x612b46=_0x49323a['SupZo'](buildCliArtifactPath,_0x39875f,_0x261fea(0x24e)),_0x504526=buildCliArtifactPath(_0x39875f,_0x49323a['WXiJA']),_0x115afa=buildCliArtifactPath(_0x39875f,'03_learn-more.png'),_0x1223c7=quoteShellArg(_0x46adb6),_0x56c499=_0x49323a[_0x261fea(0x242)](quoteShellArg,_0x612b46),_0x3a963c=_0x49323a[_0x261fea(0x25a)](quoteShellArg,_0x504526),_0x2efef1=quoteShellArg(_0x115afa);return _0x261fea(0x23b)+_0x876bc1+'\x0a\x0a1.\x20Run\x20`'+_0x876bc1+_0x261fea(0x24c)+_0x876bc1+'\x20tracing-start`\x0a3.\x20Run\x20`'+_0x876bc1+'\x20video-start`\x0a4.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x39875f+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a5.\x20Run\x20`'+_0x876bc1+_0x261fea(0x246)+_0x1223c7+_0x261fea(0x1e9)+_0x876bc1+'\x20screenshot\x20--filename\x20'+_0x56c499+_0x261fea(0x244)+_0x876bc1+'\x20snapshot\x20--filename\x20'+_0x3a963c+'`\x0a9.\x20Run\x20`'+_0x876bc1+_0x261fea(0x202)+_0x2efef1+_0x261fea(0x23d);}export function buildVerifyFeatureCliPrompt(_0x4d47ff){const _0x2b60b2=_0x5277,_0x4c69d3={'rFxso':_0x2b60b2(0x20a),'UtbWy':'numeric','oBSct':_0x2b60b2(0x1e7),'nQiNX':'\x20>\x20','eDIuv':function(_0x107f1c,_0x30a0bc,_0x1df612){return _0x107f1c(_0x30a0bc,_0x1df612);},'puYTf':_0x2b60b2(0x237),'ekvzS':function(_0x400d03,_0x2e736b){return _0x400d03(_0x2e736b);},'rkiUT':function(_0x579e17,_0x40b8a4){return _0x579e17(_0x40b8a4);},'aLiFc':function(_0x31fbd7,_0x5cd18b){return _0x31fbd7(_0x5cd18b);},'kzbIs':function(_0x18f490,_0x489682){return _0x18f490>_0x489682;},'NqSCY':_0x2b60b2(0x21d),'AcBaB':_0x2b60b2(0x25f)},{checklistItem:_0xe7d014,itemFeedback:_0x1ab93d,taskDescription:_0x618ab8,cliCommandPrefix:_0x3f264f,cliArtifactDir:_0xc535af,isCdpMode:_0x15e565,url:_0x14c974,cdpEndpoint:_0x121474,loginInstructions:_0x322a17}=_0x4d47ff,_0xd1d1bf=buildCliArtifactPath(_0xc535af,_0x2b60b2(0x225)),_0x3c9a27=buildCliArtifactPath(_0xc535af,_0x2b60b2(0x204)),_0x2d90ed=buildCliArtifactPath(_0xc535af,_0x2b60b2(0x1f7)),_0x178307=_0x4c69d3[_0x2b60b2(0x259)](buildCliArtifactPath,_0xc535af,_0x4c69d3[_0x2b60b2(0x210)]),_0x8c2243=_0x4c69d3['ekvzS'](quoteShellArg,_0xd1d1bf),_0x317db5=_0x4c69d3['rkiUT'](quoteShellArg,_0x3c9a27),_0xb28a66=_0x4c69d3[_0x2b60b2(0x219)](quoteShellArg,_0x2d90ed),_0x5aba4c=_0x4c69d3['aLiFc'](quoteShellArg,_0x178307),_0x44e1cd=_0xe7d014[_0x2b60b2(0x21a)]?_0x2b60b2(0x230)+_0xe7d014[_0x2b60b2(0x21a)]:'';let _0xc89d70='';if(_0x1ab93d&&_0x4c69d3[_0x2b60b2(0x22b)](_0x1ab93d['unaddressedComments'][_0x2b60b2(0x256)],0x0)){const _0x29aaa9=_0x1ab93d[_0x2b60b2(0x25b)][_0x2b60b2(0x221)](_0x4ae36b=>{const _0x148394=_0x2b60b2,_0x350cea=new Date(_0x4ae36b['createdAt'])[_0x148394(0x24d)]('en-US',{'month':_0x4c69d3[_0x148394(0x24a)],'day':_0x4c69d3[_0x148394(0x25e)]}),_0x254f23=_0x4ae36b[_0x148394(0x249)]||_0x4ae36b[_0x148394(0x239)]||_0x4c69d3[_0x148394(0x236)],_0x242c59=_0x4ae36b['domRef']?'\x20(on\x20element:\x20<'+(_0x4ae36b['domRef']['selector']['split'](_0x4c69d3[_0x148394(0x233)])[_0x148394(0x26a)]()?.[_0x148394(0x257)](':')[0x0]||'element')+_0x148394(0x261)+(_0x4ae36b['domRef']['textContent']||'')['slice'](0x0,0x32)+'\x22)':'';return'-\x20['+_0x4ae36b['id']+']\x20**'+_0x254f23+'**\x20('+_0x350cea+'):\x20\x22'+_0x4ae36b['content']+'\x22'+_0x242c59;})[_0x2b60b2(0x1e5)]('\x0a');_0xc89d70='\x0a\x0a##\x20Reviewer\x20Feedback\x20to\x20Address\x0aThe\x20following\x20reviewer\x20comments\x20were\x20left\x20on\x20the\x20previous\x20version\x20of\x20this\x20item.\x0aVerify\x20that\x20each\x20concern\x20has\x20been\x20addressed\x20in\x20the\x20current\x20implementation.\x0aFor\x20each\x20comment\x20you\x20believe\x20has\x20been\x20addressed,\x20include\x20its\x20ID\x20(the\x20bracketed\x20value)\x20in\x20the\x20addressedCommentIds\x20array\x20in\x20your\x20output.\x0a\x0a'+_0x29aaa9;}const _0x4cca88=_0x1ab93d?.[_0x2b60b2(0x264)]?'\x0a\x0a##\x20Expected\x20Flow\x20(from\x20previous\x20verification)\x0a'+_0x1ab93d['canonicalFlow']:'',_0x5cf24e=_0x15e565?'##\x20App\x20Context\x0aYou\x20are\x20connected\x20to\x20a\x20desktop\x20application\x20via\x20CDP\x20(Chrome\x20DevTools\x20Protocol)\x20at\x20'+_0x121474+'.\x0aThis\x20is\x20NOT\x20a\x20web\x20app\x20—\x20there\x20is\x20no\x20URL\x20to\x20navigate\x20to.\x20The\x20app\x20is\x20already\x20running\x20and\x20connected.':'CRITICAL\x20URL\x20REQUIREMENT:\x0aYour\x20base\x20URL\x20is:\x20'+_0x14c974+'\x0a-\x20You\x20may\x20ONLY\x20navigate\x20to\x20paths\x20under\x20this\x20base\x20URL\x20(same\x20protocol,\x20host,\x20and\x20port)\x0a-\x20For\x20example,\x20if\x20the\x20base\x20URL\x20is\x20\x22http://localhost:3000\x22,\x20you\x20can\x20navigate\x20to\x20\x22http://localhost:3000/home\x22,\x20\x22http://localhost:3000/settings\x22,\x20etc.\x0a-\x20DO\x20NOT\x20navigate\x20to\x20any\x20different\x20domain,\x20host,\x20or\x20port\x20under\x20any\x20circumstances\x0a-\x20If\x20documentation\x20or\x20code\x20diffs\x20suggest\x20a\x20path\x20exists\x20(e.g.,\x20\x22/dashboard\x22),\x20you\x20may\x20navigate\x20to\x20that\x20path\x20ONLY\x20under\x20the\x20base\x20URL\x20above\x0a-\x20The\x20base\x20URL\x20above\x20is\x20the\x20ONLY\x20authorized\x20profile\x20for\x20this\x20verification',_0x32c53e=_0x14c974?quoteShellArg(_0x14c974):'',_0x370e9d=_0x15e565?_0x2b60b2(0x235)+_0x3f264f+'\x20open`,\x20then\x20`'+_0x3f264f+_0x2b60b2(0x218)+_0x3f264f+'\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0xc535af+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`'+_0x3f264f+'\x20snapshot\x20--filename\x20'+_0x8c2243+'`\x20to\x20inspect\x20the\x20current\x20app\x20state.\x0a5.\x20Read\x20snapshot\x20YAML\x20files\x20to\x20find\x20element\x20references\x20like\x20`e12`,\x20then\x20use\x20them\x20with\x20`click`,\x20`fill`,\x20`check`,\x20or\x20`select`.\x0a6.\x20Use\x20`'+_0x3f264f+'\x20screenshot\x20--filename\x20'+_0x5aba4c+_0x2b60b2(0x245)+_0x3f264f+_0x2b60b2(0x271):'##\x20Instructions\x0a1.\x20Use\x20Bash\x20plus\x20Playwright\x20CLI\x20only.\x20Do\x20NOT\x20call\x20MCP\x20browser\x20tools.\x0a2.\x20Start\x20by\x20running\x20`'+_0x3f264f+_0x2b60b2(0x20f)+_0x32c53e+_0x2b60b2(0x270)+_0x3f264f+_0x2b60b2(0x218)+_0x3f264f+'\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0xc535af+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`'+_0x3f264f+'\x20snapshot\x20--filename\x20'+_0x8c2243+_0x2b60b2(0x229)+_0x3f264f+_0x2b60b2(0x202)+_0x5aba4c+'`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a8.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`'+_0x3f264f+'\x20run-code\x20\x22<playwright\x20code>\x22`.\x0a9.\x20Do\x20not\x20run\x20`close`,\x20`tracing-stop`,\x20or\x20`video-stop`;\x20the\x20host\x20finalizes\x20the\x20session\x20and\x20artifacts.\x0a10.\x20After\x20completing\x20the\x20verification,\x20evaluate\x20whether\x20the\x20result\x20adequately\x20verifies\x20the\x20scenario',_0x1368c6=_0x15e565?'\x0a\x0a##\x20Critical:\x20Early\x20Error\x20Detection\x0aAfter\x20taking\x20the\x20initial\x20snapshot,\x20IMMEDIATELY\x20check\x20for\x20blocking\x20errors:\x0a\x0a**Blocking\x20errors\x20to\x20detect:**\x0a-\x20Crash\x20or\x20error\x20dialogs\x20(\x22An\x20error\x20occurred\x22,\x20\x22Something\x20went\x20wrong\x22,\x20unhandled\x20exception\x20messages)\x0a-\x20Blank\x20or\x20empty\x20window\x20with\x20no\x20rendered\x20content\x0a-\x20Framework\x20error\x20boundaries\x20(React\x20error\x20page,\x20Electron\x20crash\x20reporter)\x0a-\x20Unresponsive\x20or\x20frozen\x20UI\x20(no\x20interactive\x20elements\x20in\x20snapshot)\x0a\x0a**If\x20ANY\x20blocking\x20error\x20is\x20detected:**\x0a1.\x20DO\x20NOT\x20continue\x20with\x20the\x20task\x0a2.\x20Return\x20IMMEDIATELY\x20with\x20evaluation:\x20\x22blocked\x22\x0a3.\x20Set\x20evaluationReason\x20to\x20describe\x20the\x20specific\x20error\x20(e.g.,\x20\x22App\x20crashed\x20—\x20error\x20dialog\x20visible\x20on\x20launch\x22)\x0a4.\x20Include\x20the\x20error\x20in\x20issues\x20array\x20with\x20severity:\x20\x22BLOCKER\x22\x20and\x20type:\x20\x22APP_ERROR\x22\x0a\x0aThis\x20early\x20exit\x20prevents\x20wasting\x20time\x20on\x20tasks\x20that\x20cannot\x20succeed\x20due\x20to\x20fundamental\x20errors.':_0x2b60b2(0x1f9),_0x211f09=_0x322a17?_0x2b60b2(0x1e6)+_0x322a17+_0x2b60b2(0x20e):'';return _0x2b60b2(0x250)+_0xe7d014['description']+_0x44e1cd+_0xc89d70+_0x4cca88+_0x2b60b2(0x1f1)+_0x618ab8+'\x0a\x0a'+_0x5cf24e+_0x211f09+'\x0a\x0a'+_0x370e9d+'\x0a\x0a##\x20Browser\x20Command\x20Reference\x0aUse\x20Bash\x20to\x20run\x20Playwright\x20CLI\x20commands\x20with\x20this\x20exact\x20prefix:\x0a`'+_0x3f264f+'`\x0a\x0a-\x20Write\x20all\x20artifacts\x20under\x20`'+_0xc535af+'`\x0a-\x20`snapshot\x20--filename\x20'+_0x317db5+_0x2b60b2(0x1f4)+_0xb28a66+'`\x0a-\x20`run-code\x20\x22await\x20page.waitForTimeout(1000)\x22`\x20for\x20waits\x20or\x20small\x20custom\x20checks\x0a\x0a##\x20Screenshot\x20Guidelines\x20-\x20IMPORTANT\x0aTake\x20screenshots\x20throughout\x20the\x20verification\x20flow\x20so\x20a\x20human\x20can\x20review\x20it\x20for\x20completeness.\x20Screenshots\x20are\x20your\x20evidence\x20trail.\x0a\x0a**When\x20to\x20take\x20screenshots\x20(use\x20Playwright\x20CLI\x20screenshot):**\x0a-\x20After\x20the\x20initial\x20snapshot\x20(capture\x20starting\x20state)\x0a-\x20Before\x20and\x20after\x20clicking\x20buttons\x20or\x20submitting\x20forms\x0a-\x20When\x20important\x20UI\x20elements\x20appear\x20(modals,\x20notifications,\x20loading\x20states)\x0a-\x20After\x20navigating\x20to\x20different\x20views\x20or\x20pages\x0a-\x20When\x20verifying\x20specific\x20elements\x20exist\x0a-\x20At\x20the\x20final\x20state\x20showing\x20the\x20completed\x20action\x0a\x0a**Screenshot\x20naming:**\x0a-\x20Use\x20descriptive\x20filenames\x20under\x20`'+_0xc535af+'`:\x20\x22'+_0x178307+_0x2b60b2(0x1f8)+buildCliArtifactPath(_0xc535af,_0x2b60b2(0x220))+'\x22,\x20\x22'+_0x4c69d3['eDIuv'](buildCliArtifactPath,_0xc535af,_0x4c69d3[_0x2b60b2(0x203)])+'\x22\x0a-\x20Number\x20prefixes\x20(01_,\x2002_,\x20etc.)\x20help\x20maintain\x20chronological\x20order\x0a-\x20For\x20KEY\x20MOMENTS\x20that\x20prove\x20the\x20scenario\x20is\x20complete,\x20prefix\x20with\x20\x22key_\x22:\x20\x22'+buildCliArtifactPath(_0xc535af,_0x4c69d3[_0x2b60b2(0x22e)])+_0x2b60b2(0x26b)+_0x1368c6+_0x2b60b2(0x1fd);}export function summarizeVerifyFeatureCliCommandAvailability(_0x2bb660){const _0x561df1=_0x5277,_0x5efa8d=[..._0x2bb660[_0x561df1(0x1ed)]()]['sort']();let _0x2d62f1=0x0;for(const _0x2bec76 of _0x2bb660['values']()){_0x2d62f1+=_0x2bec76;}return{'cliCommandCount':_0x2d62f1,'cliCommandsSeen':_0x5efa8d,'noCliCommandsCalled':_0x2d62f1===0x0};}export function createVerifyFeatureCliHooks(_0x11039c){const _0x50772d=_0x5277,_0x2ff98e={'DyEqt':'PostToolUse','bpCOr':function(_0xe014ca,_0x375f77){return _0xe014ca(_0x375f77);},'SbWLw':_0x50772d(0x23c),'ngrvO':'playwright-cli','KSKkl':function(_0x4fe1a3,_0x2d78ce){return _0x4fe1a3(_0x2d78ce);},'PGSUJ':function(_0x4f007d,_0x5c60dc){return _0x4f007d!==_0x5c60dc;},'Odbhg':'snapshot','KauRZ':function(_0x5af34d,_0x15a79c,_0x50c259,_0x162e48){return _0x5af34d(_0x15a79c,_0x50c259,_0x162e48);},'tkEQS':_0x50772d(0x1f0),'oABve':function(_0x495ea1,_0x59363d){return _0x495ea1!==_0x59363d;},'imBar':'Bash','GaCBX':_0x50772d(0x252)},_0x559e4d=new Map(),_0x3a3390=async _0x4b4510=>{const _0x1c83bc=_0x50772d;if(_0x4b4510['hook_event_name']!==_0x2ff98e[_0x1c83bc(0x255)])return{};const _0x4aa06c=_0x4b4510;if(_0x4aa06c[_0x1c83bc(0x1eb)]!=='Bash')return{};const _0x18d9c6=_0x4aa06c['tool_input'],_0x521ecb=_0x2ff98e[_0x1c83bc(0x251)](extractBashCommand,_0x18d9c6);if(!_0x521ecb)return{};const _0x4a5a1b=_0x2ff98e['bpCOr'](parsePlaywrightCliCommand,_0x521ecb);if(!_0x4a5a1b)return{};return _0x559e4d[_0x1c83bc(0x238)](_0x4a5a1b,(_0x559e4d['get'](_0x4a5a1b)||0x0)+0x1),_0x11039c[_0x1c83bc(0x22c)](_0x2ff98e['SbWLw'],{'transport':_0x2ff98e['ngrvO'],'toolName':_0x4a5a1b}),_0x11039c[_0x1c83bc(0x208)]('tool_call',{'transport':'playwright-cli','toolName':_0x4a5a1b,'bashCommandPreview':_0x2ff98e[_0x1c83bc(0x26f)](truncatePreview,_0x521ecb)}),_0x2ff98e[_0x1c83bc(0x273)](_0x4a5a1b,_0x2ff98e[_0x1c83bc(0x1fc)])&&console[_0x1c83bc(0x211)](_0x2ff98e[_0x1c83bc(0x1e8)](formatPlaywrightCliConsoleLogMessage,_0x18d9c6,_0x521ecb,_0x4a5a1b)),{};},_0x1733ee=async _0x1ceb49=>{const _0x5db64b=_0x50772d;if(_0x1ceb49['hook_event_name']!==_0x2ff98e['tkEQS'])return{};const _0x22dd41=_0x1ceb49;if(_0x2ff98e[_0x5db64b(0x265)](_0x22dd41['tool_name'],_0x2ff98e['imBar']))return{};return await _0x11039c[_0x5db64b(0x1f6)](_0x2ff98e['GaCBX'],_0x22dd41['error'],{'transport':_0x2ff98e['ngrvO'],'toolName':'Bash'}),{};};return{'postToolUseHook':_0x3a3390,'postToolUseFailureHook':_0x1733ee,'commandCounts':_0x559e4d};}async function runPlaywrightCliLifecycleCommand(_0x348b7f){const _0x23a190=_0x5277,_0x5dd772={'XMMPK':function(_0x28845e,_0x2e6605){return _0x28845e(_0x2e6605);},'XsslY':function(_0xf5cdcd,_0x145ef3){return _0xf5cdcd??_0x145ef3;},'aTiYy':function(_0x341410,_0x431f51,_0x4f0fe8){return _0x341410(_0x431f51,_0x4f0fe8);},'tyjeu':function(_0x489f14,_0x43d84d,_0x4e5dec){return _0x489f14(_0x43d84d,_0x4e5dec);}},{sessionId:_0x16fdc6,configPath:_0x38dfb5,commandArgs:_0x597302,env:_0x2d36be,telemetry:_0xc7252e,phase:_0x5a8923,metadata:_0x41d606,timeoutMs:_0x22845a}=_0x348b7f;_0xc7252e[_0x23a190(0x22c)](_0x5a8923,_0x41d606);try{const _0x42c952=await _0x5dd772['XMMPK'](runPlaywrightCliCommand,{'sessionId':_0x16fdc6,'configPath':_0x38dfb5,'commandArgs':_0x597302,'cwd':process[_0x23a190(0x21f)](),'env':_0x2d36be,'timeoutMs':_0x5dd772[_0x23a190(0x1fa)](_0x22845a,PLAYWRIGHT_CLI_COMMAND_TIMEOUT_MS)});_0xc7252e[_0x23a190(0x208)](_0x5a8923,{..._0x41d606,'subcommand':_0x42c952[_0x23a190(0x20d)]['subcommand'],'stdoutPreview':_0x5dd772[_0x23a190(0x21c)](truncatePreview,_0x42c952['stdout'],0x7d0),'stderrPreview':_0x5dd772['tyjeu'](truncatePreview,_0x42c952[_0x23a190(0x228)],0x7d0)});}catch(_0x24ee40){await _0xc7252e['trackPhaseError'](_0x5a8923,_0x24ee40,_0x41d606);throw _0x24ee40;}}export async function finalizeVerifyFeatureCliSession(_0x1247b1){const _0xf1c8a4=_0x5277,_0x2d285b={'vXLuN':'tracing-stop','RXRCa':'playwright_cli_video_stop','temGx':function(_0x1ec7be,_0x4cbb60,_0x518c50){return _0x1ec7be(_0x4cbb60,_0x518c50);}},{telemetry:_0x4d1209,sessionId:_0x5c4ed7,configPath:_0x48b74a,cliArtifactDir:_0x2bfc1b,env:_0x5a0168,transportMetadata:_0x1262d0}=_0x1247b1,_0x5e056e=[{'phase':'playwright_cli_tracing_stop','commandArgs':[_0x2d285b['vXLuN']]},{'phase':_0x2d285b['RXRCa'],'commandArgs':[_0xf1c8a4(0x263),_0xf1c8a4(0x1f5)+_0x2d285b[_0xf1c8a4(0x232)](buildCliArtifactPath,_0x2bfc1b,'session-recording.webm')]},{'phase':_0xf1c8a4(0x247),'commandArgs':[_0xf1c8a4(0x248)]}];for(const _0x4c921a of _0x5e056e){try{await runPlaywrightCliLifecycleCommand({'sessionId':_0x5c4ed7,'configPath':_0x48b74a,'commandArgs':[..._0x4c921a['commandArgs']],'env':_0x5a0168,'telemetry':_0x4d1209,'phase':_0x4c921a['phase'],'metadata':_0x1262d0});}catch{}}}export async function loadVerifyFeatureCliTraceUploadArtifact(_0x492e84){const _0x17ca2e=_0x5277,_0x4e3002={'LXxXy':'trace.zip','fqsPy':function(_0x2768d5,_0xc38d12){return _0x2768d5(_0xc38d12);}},_0x147dfc=[_0x4e3002['LXxXy'],_0x17ca2e(0x253)];for(const _0x52d503 of _0x147dfc){const _0x34a746=join(_0x492e84,_0x52d503);try{return{'buffer':await _0x4e3002['fqsPy'](readFile,_0x34a746),'source':_0x34a746};}catch{}}return null;}function _0x5277(_0x1fc352,_0x324efc){_0x1fc352=_0x1fc352-0x1e5;const _0x47530d=_0x4753();let _0x527704=_0x47530d[_0x1fc352];return _0x527704;}function _0x4753(){const _0x8be5d8=['env','3242498vxiTTe','\x20screenshot\x20--filename\x20','NqSCY','02_state.yml','SupZo','FcyPp','WjKZq','trackPhaseEnd','tracing-stop','short','test','open\x20browser','invocation','\x0a\x0aAfter\x20completing\x20authentication,\x20proceed\x20with\x20the\x20verification\x20task\x20below.\x0aIf\x20authentication\x20fails,\x20return\x20immediately\x20with\x20evaluation\x20\x22blocked\x22\x20and\x20describe\x20the\x20auth\x20failure.','\x20open\x20','puYTf','log','isFile','cRdoi','capture\x20snapshot','LKOse','120ESMYRV','15240IvFlAg','\x20tracing-start`,\x20then\x20`','rkiUT','notes','start\x20tracing','aTiYy','03_result-visible.png','WwdVE','cwd','02_button-clicked.png','map','DEBUG','push','BUXwH','01_initial.yml','click','(?:\x5cs+(?:\x22([^\x22]+)\x22|\x27([^\x27]+)\x27|(\x5cS+)))','stderr','`\x20and\x20read\x20the\x20snapshot\x20file\x20to\x20inspect\x20the\x20page.\x0a5.\x20**IMMEDIATELY\x20check\x20for\x20blocking\x20HTTP\x20errors\x20before\x20proceeding.**\x0a6.\x20Execute\x20the\x20task\x20step-by-step\x20with\x20Playwright\x20CLI\x20commands.\x0a7.\x20Use\x20`','424CEpack','kzbIs','trackPhaseStart','snapshot','AcBaB','match','\x0a\x0a##\x20Additional\x20Notes\x0a','ref\x20','temGx','nQiNX','capture\x20screenshot','##\x20Instructions\x0a1.\x20Use\x20Bash\x20plus\x20Playwright\x20CLI\x20only.\x20Do\x20NOT\x20call\x20MCP\x20browser\x20tools.\x0a2.\x20Start\x20by\x20running\x20`','oBSct','01_initial-state.png','set','authorEmail','description','You\x20are\x20testing\x20browser\x20automation.\x20Your\x20task\x20is\x20simple:\x0a\x0aUse\x20Bash\x20and\x20Playwright\x20CLI\x20only.\x20The\x20browser\x20command\x20prefix\x20is:\x0a','tool_call','`\x0a10.\x20Return\x20immediately\x20with\x20the\x20structured\x20output\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format.','capture\x20key\x20step\x20`','capture\x20snapshot\x20`','video-start','name','TLlec','UCcAv','`\x0a7.\x20Click\x20the\x20\x22Learn\x20More\x22\x20link\x20with\x20Playwright\x20CLI\x0a8.\x20Run\x20`','`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a6.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`','\x20snapshot\x20--filename\x20','playwright_cli_close','close','authorName','rFxso','9436212WmRwWV','\x20open\x20https://www.mozilla.org`\x0a2.\x20Run\x20`','toLocaleDateString','01_mozilla-homepage.png','open\x20','You\x20are\x20a\x20Feature\x20Review\x20Verifier.\x20Your\x20job\x20is\x20to\x20verify\x20a\x20scenario\x20by\x20executing\x20a\x20UI\x20flow\x20and\x20evaluating\x20whether\x20it\x20adequately\x20completes\x20the\x20scenario.\x0a\x0a##\x20Scenario\x20to\x20Verify\x0a','bpCOr','tool_failure','trace.trace.zip','CesFR','DyEqt','length','split','press','eDIuv','RynfJ','unaddressedComments','sSnbl','select\x20tab\x20','UtbWy','key_04_success-state.png','Hdowt','>\x20\x22','7535380xwHFSc','video-stop','canonicalFlow','oABve','8638164HlJjib','sort','ghSZr','fill\x20','pop','\x22\x0a-\x20The\x20\x22key_\x22\x20prefix\x20marks\x20screenshots\x20as\x20high-priority\x20evidence\x20for\x20human\x20reviewers\x0a\x0a**Aim\x20for\x203-6\x20screenshots\x20per\x20verification**\x20to\x20document\x20the\x20complete\x20flow.\x20Mark\x201-2\x20of\x20the\x20most\x20important\x20ones\x20with\x20the\x20\x22key_\x22\x20prefix.\x0a','4730saxwfm','target','replace','KSKkl','`,\x20then\x20`','\x20run-code\x20\x22<playwright\x20code>\x22`.\x0a7.\x20Do\x20not\x20run\x20`close`,\x20`tracing-stop`,\x20or\x20`video-stop`;\x20the\x20host\x20finalizes\x20the\x20session\x20and\x20artifacts.\x0a8.\x20After\x20completing\x20the\x20verification,\x20evaluate\x20whether\x20the\x20result\x20adequately\x20verifies\x20the\x20scenario','NSrAe','PGSUJ','tab-new','join','\x0a\x0a##\x20Authentication\x0aBEFORE\x20starting\x20the\x20verification\x20task,\x20you\x20MUST\x20authenticate\x20using\x20these\x20steps:\x0a','Reviewer','KauRZ','`\x0a5.\x20Read\x20the\x20snapshot\x20file\x20to\x20find\x20the\x20\x22Learn\x20More\x22\x20link\x20reference\x0a6.\x20Run\x20`','fill','tool_name','(?:^|\x5cs)','keys','[ranger-verification-agent]\x20','click\x20','PostToolUseFailure','\x0a\x0a##\x20Task\x20to\x20Execute\x0a','341194VfvnyG','3806rnvxlS','`\x20writes\x20a\x20YAML\x20snapshot\x20you\x20can\x20read\x20for\x20element\x20refs\x0a-\x20`click\x20<ref>`,\x20`fill\x20<ref>\x20\x22text\x22`,\x20`check\x20<ref>`,\x20`press\x20Enter`\x0a-\x20`tab-list`,\x20`tab-select\x20<index>`,\x20`tab-new\x20<url>`\x0a-\x20`screenshot\x20--filename\x20','--filename=','trackPhaseError','key_03_success-state.png','\x22,\x20\x22','\x0a\x0a##\x20Critical:\x20Early\x20Error\x20Detection\x0aAfter\x20step\x202\x20(taking\x20initial\x20snapshot),\x20IMMEDIATELY\x20check\x20for\x20blocking\x20HTTP\x20errors:\x0a\x0a**Blocking\x20errors\x20to\x20detect:**\x0a-\x20HTTP\x20404:\x20\x22404\x22,\x20\x22Not\x20Found\x22,\x20\x22Page\x20not\x20found\x22,\x20\x22does\x20not\x20exist\x22\x0a-\x20HTTP\x20500:\x20\x22500\x22,\x20\x22Internal\x20Server\x20Error\x22,\x20\x22Server\x20Error\x22,\x20\x22Something\x20went\x20wrong\x22\x0a-\x20HTTP\x20400:\x20\x22400\x22,\x20\x22Bad\x20Request\x22,\x20\x22Invalid\x20request\x22\x0a\x0a**Also\x20check\x20for:**\x0a-\x20Framework\x20error\x20pages\x20(Next.js\x20error\x20boundary,\x20React\x20error\x20page,\x20\x22Application\x20error\x22)\x0a-\x20Completely\x20blank/empty\x20pages\x20with\x20no\x20content\x0a-\x20\x22Cannot\x20GET\x20/path\x22\x20messages\x0a\x0a**If\x20ANY\x20blocking\x20error\x20is\x20detected:**\x0a1.\x20DO\x20NOT\x20continue\x20with\x20the\x20task\x0a2.\x20Return\x20IMMEDIATELY\x20with\x20evaluation:\x20\x22blocked\x22\x0a3.\x20Set\x20evaluationReason\x20to\x20describe\x20the\x20specific\x20error\x20(e.g.,\x20\x22HTTP\x20404\x20-\x20Page\x20not\x20found\x20at\x20/dashboard\x22)\x0a4.\x20Include\x20the\x20error\x20in\x20issues\x20array\x20with\x20severity:\x20\x22BLOCKER\x22\x20and\x20appropriate\x20type\x20(HTTP_404,\x20HTTP_500,\x20HTTP_400,\x20or\x20NAVIGATION_ERROR)\x0a\x0aThis\x20early\x20exit\x20prevents\x20wasting\x20time\x20on\x20tasks\x20that\x20cannot\x20succeed\x20due\x20to\x20fundamental\x20errors.','XsslY','mtimeMs','Odbhg','\x0a##\x20Evaluation\x20Criteria\x0a-\x20VERIFIED:\x20The\x20task\x20completed\x20successfully\x20and\x20the\x20scenario\x20requirements\x20are\x20fully\x20met\x0a-\x20PARTIAL:\x20The\x20task\x20partially\x20completed\x20but\x20some\x20aspects\x20of\x20the\x20scenario\x20are\x20not\x20verified\x0a-\x20BLOCKED:\x20A\x20blocking\x20issue\x20(bug,\x20error,\x20missing\x20feature)\x20prevents\x20completion\x0a-\x20FAILED:\x20The\x20task\x20could\x20not\x20be\x20completed\x20due\x20to\x20errors\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format\x20with\x20your\x20evaluation.','tab-select','1AgCNXo'];_0x4753=function(){return _0x8be5d8;};return _0x4753();}export async function rehomeVerifyFeatureCliArtifacts(_0x13eb49){const _0x2b53c4=_0x5277,_0x4aad2d={'rIQIO':function(_0x4b34db,_0x1c0f6d,_0xe0f86f){return _0x4b34db(_0x1c0f6d,_0xe0f86f);},'fNndM':function(_0x2d01ff,_0x402977){return _0x2d01ff(_0x402977);},'fPGCC':function(_0x3038e6,_0x309661){return _0x3038e6<_0x309661;},'mJpfQ':function(_0x1f0956,_0x4ed66a){return _0x1f0956+_0x4ed66a;},'yhwDh':function(_0x1f33f0,_0x508431){return _0x1f33f0===_0x508431;}},{cwd:_0x870bd4,cliArtifactDir:_0x18128a,startTime:_0x25d184}=_0x13eb49,_0x54410c=[];await mkdir(_0x18128a,{'recursive':!![]});const _0x4a18cf=await _0x4aad2d['rIQIO'](readdir,_0x870bd4,{'withFileTypes':!![]});for(const _0x198257 of _0x4a18cf){if(!_0x198257[_0x2b53c4(0x212)]()||!VERIFY_FEATURE_CLI_ARTIFACT_FILE_PATTERN['test'](_0x198257[_0x2b53c4(0x241)]))continue;const _0x388431=join(_0x870bd4,_0x198257['name']),_0x38b157=await _0x4aad2d['fNndM'](stat,_0x388431);if(_0x4aad2d['fPGCC'](_0x4aad2d['mJpfQ'](_0x38b157[_0x2b53c4(0x1fb)],0x7d0),_0x25d184))continue;const _0x54f92f=_0x4aad2d['rIQIO'](buildCliArtifactPath,_0x18128a,_0x198257['name']);if(_0x4aad2d['yhwDh'](_0x388431,_0x54f92f))continue;await _0x4aad2d['rIQIO'](rename,_0x388431,_0x54f92f),_0x54410c[_0x2b53c4(0x223)](_0x198257['name']);}return _0x54410c[_0x2b53c4(0x267)]();}
|
|
@@ -13,22 +13,28 @@ If you are running in Claude Code, read and suggest the following claude-specifi
|
|
|
13
13
|
|
|
14
14
|
Use Ranger when the work includes any UI or frontend component. Do not suggest Ranger for backend-only or infra-only changes unless the user asks.
|
|
15
15
|
|
|
16
|
-
## One-shot verification
|
|
16
|
+
## One-shot verification (default path)
|
|
17
17
|
|
|
18
|
-
When the user gives you credentials and a goal in a single message (e.g. "use `alice@example.com` / `hunter2` to log in and check the dashboard renders"),
|
|
18
|
+
When the user gives you credentials and a goal in a single message (e.g. "use `alice@example.com` / `hunter2` to log in and check the dashboard renders"), run `go` DIRECTLY with the creds inline. No `create`, no `profile add`, no `resume` first:
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
RANGER_TEST_USERNAME='alice@example.com' RANGER_TEST_PASSWORD='hunter2' \
|
|
22
|
-
ranger-cli go --url <target-url> --notes '<the goal verbatim>'
|
|
22
|
+
ranger-cli go --base-url <target-url> --notes '<the goal verbatim>'
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
The CLI:
|
|
26
|
+
- Materializes a cloud profile from `RANGER_TEST_USERNAME` if one doesn't exist
|
|
27
|
+
- Runs the org's server-side login automatically (if configured) — no human at a browser needed
|
|
28
|
+
- Creates a feature review if one is required but missing
|
|
29
|
+
- Captures trace + screenshots as evidence
|
|
26
30
|
|
|
27
|
-
|
|
31
|
+
Do **not** chain `ranger-cli create` before `go` unless the user explicitly asks for a structured multi-scenario feature review. The one-shot flow is the happy path for ad-hoc "verify this thing" requests.
|
|
28
32
|
|
|
29
|
-
|
|
33
|
+
If credentials live in a `.env` next to the user's repo (look for `RANGER_TEST_USERNAME` / `RANGER_TEST_PASSWORD` / `TARGET_URL`), source that file inline before running `go` instead of typing values (`set -a; source ./.env; set +a`).
|
|
30
34
|
|
|
31
|
-
|
|
35
|
+
The rest of this skill covers structured workflows for multi-scenario feature reviews. Use those only when the one-shot flow doesn't fit.
|
|
36
|
+
|
|
37
|
+
## Structured workflows
|
|
32
38
|
|
|
33
39
|
| Workflow | When to Use | Required Reading |
|
|
34
40
|
|----------|-------------|------------------|
|
|
@@ -2,11 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
Create a feature review when starting new work that doesn't have an existing feature review to resume.
|
|
4
4
|
|
|
5
|
-
## When NOT to use this
|
|
5
|
+
## ⚠️ When NOT to use this
|
|
6
6
|
|
|
7
|
-
If the user just wants a quick browser check (e.g. "log in as X and confirm the dashboard renders"
|
|
7
|
+
**If the user just wants a quick browser check** (e.g. "log in as X and confirm the dashboard renders", "check that the new button appears on /settings"), **do not run `ranger-cli create`**. Run `ranger-cli go` directly:
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
```bash
|
|
10
|
+
RANGER_TEST_USERNAME='...' RANGER_TEST_PASSWORD='...' \
|
|
11
|
+
ranger-cli go --base-url <target> --notes '<goal verbatim>'
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
The CLI creates a feature review automatically when one is needed. Chaining `create` first is wasted ceremony and shows up as noise for the reviewer. See the **One-shot verification** section in the parent `SKILL.md`.
|
|
15
|
+
|
|
16
|
+
Reach for `ranger-cli create` only when:
|
|
17
|
+
|
|
18
|
+
1. The work is genuinely multi-scenario (2+ distinct user journeys worth tracking separately)
|
|
19
|
+
2. You need to enumerate the scenarios up front for the reviewer to see before verification runs
|
|
20
|
+
3. The user explicitly asks for a "feature review" rather than just a "browser check"
|
|
21
|
+
|
|
22
|
+
When in doubt, start with one-shot `go` — you can always add scenarios later with `ranger-cli add-scenario`.
|
|
10
23
|
|
|
11
24
|
## Basic Command
|
|
12
25
|
|
|
@@ -1,44 +1,51 @@
|
|
|
1
1
|
# Verifying Scenarios
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## One-shot: creds + goal in, verification out
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
When the user gives you credentials and a goal (e.g. "use alice@example.com / hunter2 and check the dashboard renders"), run `go` directly with env vars inline — no `create`, no `profile add`, no ceremony:
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
|
|
8
|
+
RANGER_TEST_USERNAME='alice@example.com' RANGER_TEST_PASSWORD='hunter2' \
|
|
9
|
+
ranger-cli go --base-url <target-url> --notes '<the goal verbatim>'
|
|
9
10
|
```
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
If credentials already live in a nearby `.env`, source it inline before running `go` instead of typing values (`set -a; source ./.env; set +a`).
|
|
13
|
+
|
|
14
|
+
This is the default path for ad-hoc verification. The CLI:
|
|
15
|
+
|
|
16
|
+
- Materializes a cloud profile from `RANGER_TEST_USERNAME` if one doesn't exist
|
|
17
|
+
- Runs the org's server-side login if no session is cached
|
|
18
|
+
- Creates a feature review automatically when one is needed
|
|
19
|
+
- Captures a trace + screenshots you can link to
|
|
20
|
+
|
|
21
|
+
Do **not** run `ranger-cli create` first unless the user explicitly asks for a structured feature review with multiple scenarios.
|
|
12
22
|
|
|
13
|
-
##
|
|
23
|
+
## Scenario-driven verification
|
|
14
24
|
|
|
15
|
-
|
|
25
|
+
After implementing code against a scenario in an active feature review, verify it:
|
|
16
26
|
|
|
17
27
|
```bash
|
|
18
|
-
|
|
19
|
-
ranger-cli go --url <target> --notes '<what to verify>'
|
|
28
|
+
ranger-cli go --scenario <N> --notes "<what to verify>"
|
|
20
29
|
```
|
|
21
30
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
`go` resolves which profile to use in this order:
|
|
31
|
+
## Profile resolution order
|
|
25
32
|
|
|
26
33
|
1. `--profile <name>` flag (or `RANGER_PROFILE` env var)
|
|
27
|
-
2.
|
|
28
|
-
3. `RANGER_TEST_USERNAME` (
|
|
29
|
-
4. The org's
|
|
34
|
+
2. Saved active profile (`ranger-cli profile use <name>`)
|
|
35
|
+
3. `RANGER_TEST_USERNAME` (reuses or creates a matching profile)
|
|
36
|
+
4. The org's sole profile when exactly one exists
|
|
30
37
|
|
|
31
|
-
|
|
38
|
+
## Active feature review (only needed for scenario-driven runs)
|
|
32
39
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
`go` requires an active feature review. If you don't have one:
|
|
40
|
+
If you're verifying a scenario (not a one-shot):
|
|
36
41
|
|
|
37
42
|
```bash
|
|
38
43
|
ranger-cli list # Find feature reviews to resume
|
|
39
44
|
ranger-cli resume <id> # Resume a specific feature review
|
|
40
45
|
```
|
|
41
46
|
|
|
47
|
+
For a one-shot `go --base-url ... --notes '...'`, the CLI handles feature-review creation for you.
|
|
48
|
+
|
|
42
49
|
## The Verification Flow
|
|
43
50
|
|
|
44
51
|
1. **Select scenario** - CLI prompts which scenario this verifies
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ranger-testing/ranger-cli",
|
|
3
|
-
"version": "2.5.4-alpha.
|
|
3
|
+
"version": "2.5.4-alpha.b28d3b1-14",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"ranger": "./build/cli.js",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
},
|
|
42
42
|
"overrides": {
|
|
43
43
|
"minimatch": "^10.2.3",
|
|
44
|
-
"brace-expansion": "^5.0.5"
|
|
44
|
+
"brace-expansion": "^5.0.5",
|
|
45
|
+
"fast-uri": "3.1.2"
|
|
45
46
|
}
|
|
46
47
|
}
|