@ranger-testing/ranger-cli 2.5.4-alpha.ed286f1-2 → 2.5.4-alpha.f6504c0-8

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.
Files changed (80) hide show
  1. package/build/cli.js +1 -1
  2. package/build/commands/addEnv.js +1 -1
  3. package/build/commands/authEncrypt.js +1 -1
  4. package/build/commands/clean.js +1 -1
  5. package/build/commands/config.js +1 -1
  6. package/build/commands/env.js +1 -1
  7. package/build/commands/feature.js +1 -1
  8. package/build/commands/hook.js +1 -1
  9. package/build/commands/hooks/autoPrompt.js +1 -1
  10. package/build/commands/hooks/disable.js +1 -1
  11. package/build/commands/hooks/enable.js +1 -1
  12. package/build/commands/hooks/exitPlanMode.js +1 -1
  13. package/build/commands/hooks/index.js +1 -1
  14. package/build/commands/hooks/output.js +1 -1
  15. package/build/commands/hooks/planReminder.js +1 -1
  16. package/build/commands/hooks/planStart.js +1 -1
  17. package/build/commands/hooks/postEdit.js +1 -1
  18. package/build/commands/hooks/preCompact.js +1 -1
  19. package/build/commands/hooks/sessionEnd.js +1 -1
  20. package/build/commands/hooks/sessionStart.js +1 -1
  21. package/build/commands/hooks/stopHook.js +1 -1
  22. package/build/commands/index.js +1 -1
  23. package/build/commands/login.js +1 -1
  24. package/build/commands/mcpBootstrap.js +1 -1
  25. package/build/commands/migrateProfile.js +1 -0
  26. package/build/commands/setup/claude.js +1 -1
  27. package/build/commands/setup/opencode.js +1 -1
  28. package/build/commands/setupCi.js +1 -1
  29. package/build/commands/skillup.js +1 -1
  30. package/build/commands/start.js +1 -1
  31. package/build/commands/status.js +1 -1
  32. package/build/commands/update.js +1 -1
  33. package/build/commands/updateEnv.js +1 -1
  34. package/build/commands/useEnv.js +1 -1
  35. package/build/commands/utils/activeProfile.js +1 -1
  36. package/build/commands/utils/agentEnv.js +1 -1
  37. package/build/commands/utils/browserSessionsApi.js +1 -1
  38. package/build/commands/utils/claudeConfig.js +1 -1
  39. package/build/commands/utils/claudeOverrideSettings.js +1 -1
  40. package/build/commands/utils/claudePlugin.js +1 -1
  41. package/build/commands/utils/cloudProfile.js +1 -0
  42. package/build/commands/utils/cloudProfileSession.js +1 -0
  43. package/build/commands/utils/crypto.js +1 -1
  44. package/build/commands/utils/desirePathLog.js +1 -1
  45. package/build/commands/utils/deviceAuth.js +1 -1
  46. package/build/commands/utils/environment.js +1 -1
  47. package/build/commands/utils/featureApi.js +1 -1
  48. package/build/commands/utils/fixWebmDuration.js +1 -1
  49. package/build/commands/utils/gitTracked.js +1 -0
  50. package/build/commands/utils/keychain.js +1 -1
  51. package/build/commands/utils/localAgentInstallationsApi.js +1 -1
  52. package/build/commands/utils/matchAuthEnvironment.js +1 -0
  53. package/build/commands/utils/mcpImageBase64.js +1 -1
  54. package/build/commands/utils/model.js +1 -1
  55. package/build/commands/utils/opencodeConfig.js +1 -1
  56. package/build/commands/utils/playwrightCli.js +1 -1
  57. package/build/commands/utils/profileMessages.js +1 -1
  58. package/build/commands/utils/profileSetupBanner.js +1 -1
  59. package/build/commands/utils/projectsConfig.js +1 -0
  60. package/build/commands/utils/rangerConfig.js +1 -1
  61. package/build/commands/utils/rangerRoot.js +1 -1
  62. package/build/commands/utils/resolveProfileContext.js +1 -0
  63. package/build/commands/utils/resolveProfileUrl.js +1 -0
  64. package/build/commands/utils/retry.js +1 -1
  65. package/build/commands/utils/sessionCache.js +1 -1
  66. package/build/commands/utils/settings.js +1 -1
  67. package/build/commands/utils/skillContent.js +1 -1
  68. package/build/commands/utils/skills.js +1 -1
  69. package/build/commands/utils/stitchWebmFiles.js +1 -1
  70. package/build/commands/utils/telemetry.js +1 -1
  71. package/build/commands/utils/tokenRefresh.js +1 -1
  72. package/build/commands/utils/traceSnapshotMapper.js +1 -1
  73. package/build/commands/utils/userApi.js +1 -1
  74. package/build/commands/utils/version.js +1 -1
  75. package/build/commands/verifyFeature.js +1 -1
  76. package/build/commands/verifyFeatureCli.js +1 -1
  77. package/build/skills/ranger/SKILL.md +18 -4
  78. package/build/skills/ranger/create.md +6 -0
  79. package/build/skills/ranger/verify.md +17 -3
  80. package/package.json +1 -1
@@ -1 +1 @@
1
- (function(_0x49e888,_0x447eaf){const _0x3fa4c0=_0x49a5,_0x46b51a=_0x49e888();while(!![]){try{const _0x2acfcb=parseInt(_0x3fa4c0(0x14b))/0x1+parseInt(_0x3fa4c0(0x157))/0x2*(parseInt(_0x3fa4c0(0x161))/0x3)+parseInt(_0x3fa4c0(0x10a))/0x4*(parseInt(_0x3fa4c0(0x10b))/0x5)+-parseInt(_0x3fa4c0(0x174))/0x6+parseInt(_0x3fa4c0(0xf2))/0x7*(parseInt(_0x3fa4c0(0x127))/0x8)+-parseInt(_0x3fa4c0(0x14d))/0x9+-parseInt(_0x3fa4c0(0x130))/0xa*(parseInt(_0x3fa4c0(0x145))/0xb);if(_0x2acfcb===_0x447eaf)break;else _0x46b51a['push'](_0x46b51a['shift']());}catch(_0x44e2cd){_0x46b51a['push'](_0x46b51a['shift']());}}}(_0x245b,0x8e7e6));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(_0x5aafc0,_0xd2cca5=PLAYWRIGHT_CLI_PREVIEW_LIMIT){const _0x1e0fa4=_0x49a5,_0x79a7b={'Tldcr':function(_0x21779b,_0x321b66){return _0x21779b>_0x321b66;},'kOOGD':'...'};return _0x79a7b[_0x1e0fa4(0xf5)](_0x5aafc0['length'],_0xd2cca5)?_0x5aafc0[_0x1e0fa4(0x153)](0x0,_0xd2cca5)+_0x79a7b[_0x1e0fa4(0xf6)]:_0x5aafc0;}function buildCliArtifactPath(_0x42449a,_0x2a051c){return join(_0x42449a,_0x2a051c);}function _0x245b(){const _0xaf1bd1=['sort','qWcww','##\x20App\x20Context\x0aYou\x20are\x20connected\x20to\x20a\x20desktop\x20application\x20via\x20CDP\x20(Chrome\x20DevTools\x20Protocol)\x20at\x20','Reviewer','bnfyK','trackPhaseStart','tool_name','`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a5.\x20Run\x20`','347677kOBopD','test','values','join','element','\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.','941136jSPXDf','uaVNT','7936632dHWTgr','playwright_cli_video_stop','stringify','WPEXi','run\x20custom\x20Playwright\x20code','\x20screenshot\x20--filename\x20','slice','TpIkR','name','PostToolUseFailure','86XjScMC','QbTnJ','split','OkrFn','twwKJ','03_result-visible.png','target','You\x20are\x20testing\x20browser\x20automation.\x20Your\x20task\x20is\x20simple:\x0a\x0aUse\x20Bash\x20and\x20Playwright\x20CLI\x20only.\x20The\x20browser\x20command\x20prefix\x20is:\x0a','zGwmc','BmRqj','5178wajtJo','-\x20[','unaddressedComments','dGqvD','env','trackPhaseEnd','stdout','start\x20video\x20recording','):\x20\x22','selector','##\x20Instructions\x0a1.\x20Use\x20Bash\x20plus\x20Playwright\x20CLI\x20only.\x20Do\x20NOT\x20call\x20MCP\x20browser\x20tools.\x0a2.\x20Start\x20by\x20running\x20`','`\x0a7.\x20Click\x20the\x20\x22Learn\x20More\x22\x20link\x20with\x20Playwright\x20CLI\x0a8.\x20Run\x20`','\x20snapshot\x20--filename\x20','WHUSY','BhoIb','`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`','authorName','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`','2133114EzCIsx','\x0a\x0a##\x20Task\x20to\x20Execute\x0a','short','\x22,\x20\x22','authorEmail','stop\x20video\x20recording','description','`\x0a-\x20`snapshot\x20--filename\x20','vIFIa','ccVTV','isFile','02_button-clicked.png','inZwe','video-stop','DZncx','NXXcf','hLlGi','`\x0a\x0a-\x20Write\x20all\x20artifacts\x20under\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','Rjnyz','\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`','numeric','4578lbSGkr','run-code','pRaQt','Tldcr','kOOGD','DEBUG','jTPIN','\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','\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.','ref\x20','press','stderr','01_initial-state.png','ubwsv','commandArgs','yTEcH','`\x0a5.\x20Read\x20the\x20snapshot\x20file\x20to\x20find\x20the\x20\x22Learn\x20More\x22\x20link\x20reference\x0a6.\x20Run\x20`','playwright-cli','PostToolUse','KBYKo','\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.','02_learn-more.yml','\x0a\x0a##\x20Expected\x20Flow\x20(from\x20previous\x20verification)\x0a','(?:^|\x5cs)','148936WShlYf','10VQuipS','`,\x20then\x20`','key_03_success-state.png','.\x0aThis\x20is\x20NOT\x20a\x20web\x20app\x20—\x20there\x20is\x20no\x20URL\x20to\x20navigate\x20to.\x20The\x20app\x20is\x20already\x20running\x20and\x20connected.','[ranger-verification-agent]\x20','OkSzk','trackPhaseError','OjgnD','select\x20tab','\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.','`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a8.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`','replace','tool_call','nfFKZ','mlDDK','length','snapshot','content','textContent','phase','key_04_success-state.png','\x20(on\x20element:\x20<','\x20open\x20https://www.mozilla.org`\x0a2.\x20Run\x20`','domRef','`\x0a10.\x20Return\x20immediately\x20with\x20the\x20structured\x20output\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format.','Bash','\x20open\x20','tab-select','12424HRvzJm','map','\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','tracing-stop','`\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','open','`\x0a9.\x20Run\x20`','FbLMl','en-US','90fTeuLE','`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a6.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`','`\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`','capture\x20snapshot\x20`','notes','canonicalFlow','stop\x20tracing','BuDLq','oeDQv','keys','ZADGt','close','open\x20browser'];_0x245b=function(){return _0xaf1bd1;};return _0x245b();}function toStepDisplayName(_0x33dadd){const _0x481464=_0x49a5,_0x12413d={'mlDDK':function(_0xbffbc8,_0x3d82a7){return _0xbffbc8(_0x3d82a7);}},_0x51c950=basename(_0x33dadd)['replace'](/\.(?:png|ya?ml)$/i,'')['replace'](/^key_/i,'')[_0x481464(0x116)](/^\d+_/,'')['replace'](/-/g,'\x20');return{'name':_0x51c950,'isKeyStep':/^key_/i[_0x481464(0x146)](_0x12413d[_0x481464(0x119)](basename,_0x33dadd))};}function extractShellValue(_0x5b7233){if(!_0x5b7233)return null;return _0x5b7233[0x1]??_0x5b7233[0x2]??_0x5b7233[0x3]??null;}function extractFilenameOption(_0x2fce7a){return extractShellValue(_0x2fce7a['match'](/--filename(?:=|\s+)(?:"([^"]+)"|'([^']+)'|(\S+))/));}function extractFirstCommandArgument(_0x19d5e,_0x169b72){const _0x124f5d=_0x49a5,_0xb6e98e={'QbTnJ':'\x5c$&','hxVPO':function(_0x435f5f,_0x45e792){return _0x435f5f(_0x45e792);}},_0x442691=_0x169b72['replace'](/[.*+?^${}()|[\]\\]/g,_0xb6e98e[_0x124f5d(0x158)]);return _0xb6e98e['hxVPO'](extractShellValue,_0x19d5e['match'](new RegExp(_0x124f5d(0x109)+_0x442691+'(?:\x5cs+(?:\x22([^\x22]+)\x22|\x27([^\x27]+)\x27|(\x5cS+)))')));}function formatCommandTarget(_0x26f495){const _0x52db9a=_0x49a5,_0x43b721={'ZTdHT':function(_0x27747b,_0xa770ec,_0x499f08){return _0x27747b(_0xa770ec,_0x499f08);}};if(!_0x26f495)return _0x52db9a(0x15d);if(/^e\d+$/i['test'](_0x26f495))return _0x52db9a(0xfb)+_0x26f495;return JSON[_0x52db9a(0x14f)](_0x43b721['ZTdHT'](truncatePreview,_0x26f495,0x78));}function formatPlaywrightCliLog(_0x102c75,_0x41ec36){const _0x4ab8ad=_0x49a5,_0x34de1f={'BhoIb':_0x4ab8ad(0x12c),'OjgnD':function(_0x543889,_0x1e4ce8,_0x592e42){return _0x543889(_0x1e4ce8,_0x592e42);},'pRaQt':_0x4ab8ad(0x13c),'HCIQD':'start\x20tracing','cAgqV':_0x4ab8ad(0x12a),'ccVTV':_0x4ab8ad(0x136),'hmCqm':'video-start','FbLMl':'video-stop','nUxII':_0x4ab8ad(0x179),'GMdfJ':function(_0x25adde,_0x484169){return _0x25adde(_0x484169);},'zQAYr':'capture\x20screenshot','ubwsv':function(_0x521666,_0x47e2f0){return _0x521666(_0x47e2f0);},'inZwe':function(_0x4b5968,_0x488856,_0x4c84ee){return _0x4b5968(_0x488856,_0x4c84ee);},'sQotj':function(_0x1f6269,_0x20b085){return _0x1f6269(_0x20b085);},'nfFKZ':'tab-new'};switch(_0x41ec36){case _0x34de1f[_0x4ab8ad(0x16f)]:{const _0x25b99f=_0x34de1f[_0x4ab8ad(0x112)](extractFirstCommandArgument,_0x102c75,_0x41ec36);return _0x25b99f?'open\x20'+_0x25b99f:_0x34de1f[_0x4ab8ad(0xf4)];}case'tracing-start':return _0x34de1f['HCIQD'];case _0x34de1f['cAgqV']:return _0x34de1f[_0x4ab8ad(0x17d)];case _0x34de1f['hmCqm']:return _0x4ab8ad(0x168);case _0x34de1f[_0x4ab8ad(0x12e)]:return _0x34de1f['nUxII'];case _0x4ab8ad(0x11b):{const _0x3a9a50=extractFilenameOption(_0x102c75);if(!_0x3a9a50)return'capture\x20snapshot';const {name:_0x5cd39c}=_0x34de1f['GMdfJ'](toStepDisplayName,_0x3a9a50);return _0x4ab8ad(0x133)+_0x5cd39c+'`';}case'screenshot':{const _0xd25dd2=extractFilenameOption(_0x102c75);if(!_0xd25dd2)return _0x34de1f['zQAYr'];const {name:_0x2e8489,isKeyStep:_0x8135be}=toStepDisplayName(_0xd25dd2);return _0x8135be?'capture\x20key\x20step\x20`'+_0x2e8489+'`':'capture\x20step\x20`'+_0x2e8489+'`';}case'click':return'click\x20'+_0x34de1f[_0x4ab8ad(0xff)](formatCommandTarget,_0x34de1f['OjgnD'](extractFirstCommandArgument,_0x102c75,_0x41ec36));case'check':return'check\x20'+formatCommandTarget(extractFirstCommandArgument(_0x102c75,_0x41ec36));case'fill':return'fill\x20'+formatCommandTarget(_0x34de1f[_0x4ab8ad(0xe8)](extractFirstCommandArgument,_0x102c75,_0x41ec36));case _0x4ab8ad(0xfc):return'press\x20'+_0x34de1f['sQotj'](formatCommandTarget,extractFirstCommandArgument(_0x102c75,_0x41ec36));case _0x4ab8ad(0xf3):return _0x4ab8ad(0x151);case _0x34de1f[_0x4ab8ad(0x118)]:{const _0x2d251b=extractFirstCommandArgument(_0x102c75,_0x41ec36);return _0x2d251b?'open\x20new\x20tab\x20'+_0x2d251b:'open\x20new\x20tab';}case _0x4ab8ad(0x126):{const _0x2edb82=_0x34de1f[_0x4ab8ad(0xe8)](extractFirstCommandArgument,_0x102c75,_0x41ec36);return _0x2edb82?'select\x20tab\x20'+_0x2edb82:_0x4ab8ad(0x113);}default:return _0x41ec36;}}function extractPlaywrightCliToolDescription(_0x19674a){const _0x2700f5=_0x49a5,_0x1bb2a1=_0x19674a['description'];if(typeof _0x1bb2a1!=='string')return null;const _0x1bd28a=_0x1bb2a1['trim']()['replace'](/\s+/g,'\x20');return _0x1bd28a[_0x2700f5(0x11a)]>0x0?_0x1bd28a:null;}export function formatPlaywrightCliConsoleLogMessage(_0xe07aca,_0x21eb4d,_0xcb594b){const _0x2be2ea=_0x49a5,_0x1c0e37={'oeDQv':function(_0x130dd2,_0x3eead3){return _0x130dd2(_0x3eead3);}},_0x54062c=formatPlaywrightCliLog(_0x21eb4d,_0xcb594b),_0x571bd=_0x1c0e37[_0x2be2ea(0x138)](extractPlaywrightCliToolDescription,_0xe07aca);if(!_0x571bd)return'[playwright-cli]\x20'+_0x54062c;if(process[_0x2be2ea(0x165)][_0x2be2ea(0xf7)])return _0x2be2ea(0x10f)+_0x571bd+'\x20('+_0x54062c+')';return _0x2be2ea(0x10f)+_0x571bd;}export function buildVerifyFeatureCliDebugPrompt(_0x5a8621,_0x28758e){const _0x8cdc2b=_0x49a5,_0x3b8d20={'dGqvD':function(_0x5d52ed,_0x2e457a,_0x19bbb8){return _0x5d52ed(_0x2e457a,_0x19bbb8);},'jTPIN':function(_0x123628,_0x577604,_0x414930){return _0x123628(_0x577604,_0x414930);},'OkrFn':'03_learn-more.png','vIFIa':function(_0x2b80a8,_0x5be207){return _0x2b80a8(_0x5be207);}},_0x42f2fc=buildCliArtifactPath(_0x28758e,_0x8cdc2b(0x172)),_0x36fda5=buildCliArtifactPath(_0x28758e,'01_mozilla-homepage.png'),_0x538297=_0x3b8d20[_0x8cdc2b(0x164)](buildCliArtifactPath,_0x28758e,_0x8cdc2b(0x107)),_0x57f591=_0x3b8d20[_0x8cdc2b(0xf8)](buildCliArtifactPath,_0x28758e,_0x3b8d20[_0x8cdc2b(0x15a)]),_0xd1517b=_0x3b8d20[_0x8cdc2b(0x17c)](quoteShellArg,_0x42f2fc),_0x1dccbd=quoteShellArg(_0x36fda5),_0x16ca52=quoteShellArg(_0x538297),_0x43855f=_0x3b8d20['vIFIa'](quoteShellArg,_0x57f591);return _0x8cdc2b(0x15e)+_0x5a8621+'\x0a\x0a1.\x20Run\x20`'+_0x5a8621+_0x8cdc2b(0x121)+_0x5a8621+'\x20tracing-start`\x0a3.\x20Run\x20`'+_0x5a8621+'\x20video-start`\x0a4.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x28758e+_0x8cdc2b(0x144)+_0x5a8621+'\x20snapshot\x20--filename\x20'+_0xd1517b+_0x8cdc2b(0x102)+_0x5a8621+'\x20screenshot\x20--filename\x20'+_0x1dccbd+_0x8cdc2b(0x16c)+_0x5a8621+_0x8cdc2b(0x16d)+_0x16ca52+_0x8cdc2b(0x12d)+_0x5a8621+_0x8cdc2b(0x152)+_0x43855f+_0x8cdc2b(0x123);}export function buildVerifyFeatureCliPrompt(_0xd09e01){const _0x17d872=_0x49a5,_0x2653c9={'BmRqj':_0x17d872(0x176),'FapwP':_0x17d872(0xf1),'ocehI':_0x17d872(0x140),'HjFCl':_0x17d872(0x149),'XLGuW':'02_state.yml','aTMhb':function(_0x528e40,_0x15c4ca,_0x1b8255){return _0x528e40(_0x15c4ca,_0x1b8255);},'BSIgp':_0x17d872(0x10d),'Rjnyz':function(_0x21e130,_0xe748c1,_0x490814){return _0x21e130(_0xe748c1,_0x490814);},'OkSzk':_0x17d872(0xfe),'IQkps':function(_0x439331,_0xefc282){return _0x439331(_0xefc282);},'qqGLb':function(_0x48b465,_0x24ef61){return _0x48b465>_0x24ef61;},'NXXcf':function(_0x424add,_0xd830ef){return _0x424add(_0xd830ef);},'qfJlS':function(_0x16fd08,_0x8f99bc,_0x39e8d1){return _0x16fd08(_0x8f99bc,_0x39e8d1);},'bnfyK':_0x17d872(0xe7),'WPEXi':_0x17d872(0x15c)},{checklistItem:_0x54ab6e,itemFeedback:_0x1e0323,taskDescription:_0xff06e8,cliCommandPrefix:_0x11d8a5,cliArtifactDir:_0x5eca7f,isCdpMode:_0x57aafa,url:_0x3a59d9,cdpEndpoint:_0x1ad1d2,loginInstructions:_0x36da80}=_0xd09e01,_0x4d1535=buildCliArtifactPath(_0x5eca7f,'01_initial.yml'),_0x2655c8=buildCliArtifactPath(_0x5eca7f,_0x2653c9['XLGuW']),_0x45ff20=_0x2653c9['aTMhb'](buildCliArtifactPath,_0x5eca7f,_0x2653c9['BSIgp']),_0x301220=_0x2653c9['Rjnyz'](buildCliArtifactPath,_0x5eca7f,_0x2653c9[_0x17d872(0x110)]),_0x17080b=_0x2653c9['IQkps'](quoteShellArg,_0x4d1535),_0x52dfa8=quoteShellArg(_0x2655c8),_0x13eb91=_0x2653c9['IQkps'](quoteShellArg,_0x45ff20),_0x16388c=quoteShellArg(_0x301220),_0x561fce=_0x54ab6e[_0x17d872(0x134)]?'\x0a\x0a##\x20Additional\x20Notes\x0a'+_0x54ab6e['notes']:'';let _0x1bc343='';if(_0x1e0323&&_0x2653c9['qqGLb'](_0x1e0323[_0x17d872(0x163)]['length'],0x0)){const _0x58a923=_0x1e0323['unaddressedComments'][_0x17d872(0x128)](_0x3ac271=>{const _0x20046b=_0x17d872,_0x587a3b=new Date(_0x3ac271['createdAt'])['toLocaleDateString'](_0x20046b(0x12f),{'month':_0x2653c9[_0x20046b(0x160)],'day':_0x2653c9['FapwP']}),_0x1c16c7=_0x3ac271[_0x20046b(0x171)]||_0x3ac271[_0x20046b(0x178)]||_0x2653c9['ocehI'],_0x156b66=_0x3ac271[_0x20046b(0x122)]?_0x20046b(0x120)+(_0x3ac271['domRef'][_0x20046b(0x16a)]['split']('\x20>\x20')['pop']()?.[_0x20046b(0x159)](':')[0x0]||_0x2653c9['HjFCl'])+'>\x20\x22'+(_0x3ac271[_0x20046b(0x122)][_0x20046b(0x11d)]||'')[_0x20046b(0x153)](0x0,0x32)+'\x22)':'';return _0x20046b(0x162)+_0x3ac271['id']+']\x20**'+_0x1c16c7+'**\x20('+_0x587a3b+_0x20046b(0x169)+_0x3ac271[_0x20046b(0x11c)]+'\x22'+_0x156b66;})[_0x17d872(0x148)]('\x0a');_0x1bc343='\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'+_0x58a923;}const _0x224f38=_0x1e0323?.['canonicalFlow']?_0x17d872(0x108)+_0x1e0323[_0x17d872(0x135)]:'',_0x199307=_0x57aafa?_0x17d872(0x13f)+_0x1ad1d2+_0x17d872(0x10e):'CRITICAL\x20URL\x20REQUIREMENT:\x0aYour\x20base\x20URL\x20is:\x20'+_0x3a59d9+'\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',_0x34ca05=_0x3a59d9?_0x2653c9[_0x17d872(0xeb)](quoteShellArg,_0x3a59d9):'',_0x55bf0f=_0x57aafa?_0x17d872(0x16b)+_0x11d8a5+'\x20open`,\x20then\x20`'+_0x11d8a5+'\x20tracing-start`,\x20then\x20`'+_0x11d8a5+_0x17d872(0xf0)+_0x5eca7f+_0x17d872(0x170)+_0x11d8a5+_0x17d872(0x16d)+_0x17080b+_0x17d872(0x132)+_0x11d8a5+'\x20screenshot\x20--filename\x20'+_0x16388c+_0x17d872(0x131)+_0x11d8a5+'\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':_0x17d872(0x16b)+_0x11d8a5+_0x17d872(0x125)+_0x34ca05+_0x17d872(0x10c)+_0x11d8a5+'\x20tracing-start`,\x20then\x20`'+_0x11d8a5+_0x17d872(0xf0)+_0x5eca7f+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`'+_0x11d8a5+_0x17d872(0x16d)+_0x17080b+_0x17d872(0x173)+_0x11d8a5+'\x20screenshot\x20--filename\x20'+_0x16388c+_0x17d872(0x115)+_0x11d8a5+'\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',_0x5e96cd=_0x57aafa?_0x17d872(0x14a):_0x17d872(0x106),_0x4d4710=_0x36da80?'\x0a\x0a##\x20Authentication\x0aBEFORE\x20starting\x20the\x20verification\x20task,\x20you\x20MUST\x20authenticate\x20using\x20these\x20steps:\x0a'+_0x36da80+_0x17d872(0xfa):'';return _0x17d872(0xee)+_0x54ab6e[_0x17d872(0x17a)]+_0x561fce+_0x1bc343+_0x224f38+_0x17d872(0x175)+_0xff06e8+'\x0a\x0a'+_0x199307+_0x4d4710+'\x0a\x0a'+_0x55bf0f+'\x0a\x0a##\x20Browser\x20Command\x20Reference\x0aUse\x20Bash\x20to\x20run\x20Playwright\x20CLI\x20commands\x20with\x20this\x20exact\x20prefix:\x0a`'+_0x11d8a5+_0x17d872(0xed)+_0x5eca7f+_0x17d872(0x17b)+_0x52dfa8+_0x17d872(0x12b)+_0x13eb91+'`\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`'+_0x5eca7f+'`:\x20\x22'+_0x301220+_0x17d872(0x177)+_0x2653c9['qfJlS'](buildCliArtifactPath,_0x5eca7f,_0x2653c9[_0x17d872(0x141)])+_0x17d872(0x177)+_0x2653c9[_0x17d872(0xef)](buildCliArtifactPath,_0x5eca7f,_0x2653c9[_0x17d872(0x150)])+_0x17d872(0x129)+buildCliArtifactPath(_0x5eca7f,_0x17d872(0x11f))+_0x17d872(0xf9)+_0x5e96cd+_0x17d872(0x114);}function _0x49a5(_0x84263c,_0x254d63){_0x84263c=_0x84263c-0xe6;const _0x245bfb=_0x245b();let _0x49a51b=_0x245bfb[_0x84263c];return _0x49a51b;}export function summarizeVerifyFeatureCliCommandAvailability(_0xe044de){const _0xa25f3=_0x49a5,_0x2cd6ea={'qiFSb':function(_0x4a11fe,_0xd6618a){return _0x4a11fe===_0xd6618a;}},_0x2081fc=[..._0xe044de[_0xa25f3(0x139)]()][_0xa25f3(0x13d)]();let _0x2600c0=0x0;for(const _0x431cf6 of _0xe044de[_0xa25f3(0x147)]()){_0x2600c0+=_0x431cf6;}return{'cliCommandCount':_0x2600c0,'cliCommandsSeen':_0x2081fc,'noCliCommandsCalled':_0x2cd6ea['qiFSb'](_0x2600c0,0x0)};}export function createVerifyFeatureCliHooks(_0x1fd72e){const _0x565236=_0x49a5,_0x47d643={'twwKJ':function(_0x314144,_0x159552){return _0x314144!==_0x159552;},'BuDLq':_0x565236(0x104),'aWRzN':function(_0x4d8e05,_0x3ea081){return _0x4d8e05!==_0x3ea081;},'oBpKx':function(_0x2788f3,_0x39a303){return _0x2788f3(_0x39a303);},'UNaiz':function(_0x43fafb,_0x4e5c27){return _0x43fafb+_0x4e5c27;},'qWcww':_0x565236(0x103),'hLlGi':_0x565236(0x117),'GvkSp':function(_0x345acb,_0xe5b061){return _0x345acb!==_0xe5b061;},'DZncx':_0x565236(0x124)},_0x40fd24=new Map(),_0x17c23d=async _0x957ce=>{const _0x11e1be=_0x565236;if(_0x47d643[_0x11e1be(0x15b)](_0x957ce['hook_event_name'],_0x47d643[_0x11e1be(0x137)]))return{};const _0x4c92b8=_0x957ce;if(_0x47d643['aWRzN'](_0x4c92b8[_0x11e1be(0x143)],_0x11e1be(0x124)))return{};const _0x5bbef2=_0x4c92b8['tool_input'],_0x3dd277=_0x47d643['oBpKx'](extractBashCommand,_0x5bbef2);if(!_0x3dd277)return{};const _0x6f50d5=parsePlaywrightCliCommand(_0x3dd277);if(!_0x6f50d5)return{};return _0x40fd24['set'](_0x6f50d5,_0x47d643['UNaiz'](_0x40fd24['get'](_0x6f50d5)||0x0,0x1)),_0x1fd72e[_0x11e1be(0x142)]('tool_call',{'transport':_0x47d643[_0x11e1be(0x13e)],'toolName':_0x6f50d5}),_0x1fd72e[_0x11e1be(0x166)](_0x47d643[_0x11e1be(0xec)],{'transport':'playwright-cli','toolName':_0x6f50d5,'bashCommandPreview':truncatePreview(_0x3dd277)}),_0x47d643['GvkSp'](_0x6f50d5,_0x11e1be(0x11b))&&console['log'](formatPlaywrightCliConsoleLogMessage(_0x5bbef2,_0x3dd277,_0x6f50d5)),{};},_0x57173e=async _0x2f5523=>{const _0x1df2cc=_0x565236;if(_0x47d643['GvkSp'](_0x2f5523['hook_event_name'],_0x1df2cc(0x156)))return{};const _0x1cd4ad=_0x2f5523;if(_0x47d643['twwKJ'](_0x1cd4ad['tool_name'],_0x1df2cc(0x124)))return{};return await _0x1fd72e['trackPhaseError']('tool_failure',_0x1cd4ad['error'],{'transport':'playwright-cli','toolName':_0x47d643[_0x1df2cc(0xea)]}),{};};return{'postToolUseHook':_0x17c23d,'postToolUseFailureHook':_0x57173e,'commandCounts':_0x40fd24};}async function runPlaywrightCliLifecycleCommand(_0xf41f6f){const _0x18c226=_0x49a5,_0x3fd6f9={'NnyRk':function(_0x5e865c,_0x5dfc4f,_0x9aaef6){return _0x5e865c(_0x5dfc4f,_0x9aaef6);}},{sessionId:_0x3d609f,configPath:_0x26a63c,commandArgs:_0x43224a,env:_0x11d1f1,telemetry:_0x3fe71a,phase:_0x9d9eaa,metadata:_0x126195,timeoutMs:_0x5e2939}=_0xf41f6f;_0x3fe71a['trackPhaseStart'](_0x9d9eaa,_0x126195);try{const _0x273337=await runPlaywrightCliCommand({'sessionId':_0x3d609f,'configPath':_0x26a63c,'commandArgs':_0x43224a,'cwd':process['cwd'](),'env':_0x11d1f1,'timeoutMs':_0x5e2939??PLAYWRIGHT_CLI_COMMAND_TIMEOUT_MS});_0x3fe71a[_0x18c226(0x166)](_0x9d9eaa,{..._0x126195,'subcommand':_0x273337['invocation']['subcommand'],'stdoutPreview':_0x3fd6f9['NnyRk'](truncatePreview,_0x273337[_0x18c226(0x167)],0x7d0),'stderrPreview':truncatePreview(_0x273337[_0x18c226(0xfd)],0x7d0)});}catch(_0x4796ee){await _0x3fe71a[_0x18c226(0x111)](_0x9d9eaa,_0x4796ee,_0x126195);throw _0x4796ee;}}export async function finalizeVerifyFeatureCliSession(_0x4ef0ba){const _0x3cbd31=_0x49a5,_0x5b8e51={'zGwmc':'tracing-stop','ZADGt':'session-recording.webm','TpIkR':_0x3cbd31(0x13b),'cBhvR':function(_0x460fbb,_0x592770){return _0x460fbb(_0x592770);}},{telemetry:_0x3fd091,sessionId:_0x904b8,configPath:_0x5656c2,cliArtifactDir:_0x52c028,env:_0x483660,transportMetadata:_0x7db437}=_0x4ef0ba,_0x5eaff3=[{'phase':'playwright_cli_tracing_stop','commandArgs':[_0x5b8e51[_0x3cbd31(0x15f)]]},{'phase':_0x3cbd31(0x14e),'commandArgs':[_0x3cbd31(0xe9),'--filename='+buildCliArtifactPath(_0x52c028,_0x5b8e51[_0x3cbd31(0x13a)])]},{'phase':'playwright_cli_close','commandArgs':[_0x5b8e51[_0x3cbd31(0x154)]]}];for(const _0x197c46 of _0x5eaff3){try{await _0x5b8e51['cBhvR'](runPlaywrightCliLifecycleCommand,{'sessionId':_0x904b8,'configPath':_0x5656c2,'commandArgs':[..._0x197c46[_0x3cbd31(0x100)]],'env':_0x483660,'telemetry':_0x3fd091,'phase':_0x197c46[_0x3cbd31(0x11e)],'metadata':_0x7db437});}catch{}}}export async function loadVerifyFeatureCliTraceUploadArtifact(_0x89b581){const _0x4cf83e=_0x49a5,_0x2a8037={'yTEcH':'trace.zip','KBYKo':function(_0x1549e3,_0x4d8911,_0x55118c){return _0x1549e3(_0x4d8911,_0x55118c);}},_0x4d05b9=[_0x2a8037[_0x4cf83e(0x101)],'trace.trace.zip'];for(const _0x53a3c4 of _0x4d05b9){const _0x14467c=_0x2a8037[_0x4cf83e(0x105)](join,_0x89b581,_0x53a3c4);try{return{'buffer':await readFile(_0x14467c),'source':_0x14467c};}catch{}}return null;}export async function rehomeVerifyFeatureCliArtifacts(_0x52d17c){const _0x480358=_0x49a5,_0x5aae2c={'URrMb':function(_0x4dcb53,_0x133cd7,_0x286f66){return _0x4dcb53(_0x133cd7,_0x286f66);},'WHUSY':function(_0x26433f,_0x3f5f7f){return _0x26433f(_0x3f5f7f);},'uaVNT':function(_0xeed622,_0x21084a){return _0xeed622+_0x21084a;}},{cwd:_0x5f0fa0,cliArtifactDir:_0x2e80e7,startTime:_0x535006}=_0x52d17c,_0x154775=[];await _0x5aae2c['URrMb'](mkdir,_0x2e80e7,{'recursive':!![]});const _0x44de32=await _0x5aae2c['URrMb'](readdir,_0x5f0fa0,{'withFileTypes':!![]});for(const _0x489b84 of _0x44de32){if(!_0x489b84[_0x480358(0xe6)]()||!VERIFY_FEATURE_CLI_ARTIFACT_FILE_PATTERN[_0x480358(0x146)](_0x489b84['name']))continue;const _0x39cf31=join(_0x5f0fa0,_0x489b84[_0x480358(0x155)]),_0x3d83a9=await _0x5aae2c[_0x480358(0x16e)](stat,_0x39cf31);if(_0x5aae2c[_0x480358(0x14c)](_0x3d83a9['mtimeMs'],0x7d0)<_0x535006)continue;const _0x1456b9=_0x5aae2c['URrMb'](buildCliArtifactPath,_0x2e80e7,_0x489b84[_0x480358(0x155)]);if(_0x39cf31===_0x1456b9)continue;await rename(_0x39cf31,_0x1456b9),_0x154775['push'](_0x489b84['name']);}return _0x154775[_0x480358(0x13d)]();}
1
+ (function(_0x3d2e50,_0x42d17d){const _0x2aab7b=_0x4dc5,_0xefc70a=_0x3d2e50();while(!![]){try{const _0x3040f6=-parseInt(_0x2aab7b(0x192))/0x1+parseInt(_0x2aab7b(0x164))/0x2*(parseInt(_0x2aab7b(0x1dc))/0x3)+parseInt(_0x2aab7b(0x1a2))/0x4+parseInt(_0x2aab7b(0x1bd))/0x5+parseInt(_0x2aab7b(0x189))/0x6*(-parseInt(_0x2aab7b(0x1e5))/0x7)+parseInt(_0x2aab7b(0x1b1))/0x8*(-parseInt(_0x2aab7b(0x1e3))/0x9)+parseInt(_0x2aab7b(0x1f2))/0xa;if(_0x3040f6===_0x42d17d)break;else _0xefc70a['push'](_0xefc70a['shift']());}catch(_0x2351ba){_0xefc70a['push'](_0xefc70a['shift']());}}}(_0x10f0,0xe2179));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 _0x10f0(){const _0x1168e1=['playwright_cli_video_stop','\x0a\x0a##\x20Expected\x20Flow\x20(from\x20previous\x20verification)\x0a','GDnGW','video-stop','Reviewer','\x20open\x20','\x20open\x20https://www.mozilla.org`\x0a2.\x20Run\x20`','stderr','capture\x20step\x20`','3367240bMdoek','en-US','6SRILcj','join','`\x0a\x0a-\x20Write\x20all\x20artifacts\x20under\x20`','\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.','open\x20browser','\x20snapshot\x20--filename\x20','capture\x20snapshot\x20`','press','textContent','JndgK','log','01_mozilla-homepage.png','shMoC','description','fill','Bash','\x20open`,\x20then\x20`','cwd','open\x20new\x20tab','\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','`\x0a-\x20`snapshot\x20--filename\x20','hook_event_name','AQsXb','GHHgW','`:\x20\x22','map','video-start','createdAt','tOtpU','YzClk','click\x20','DEBUG','xAbGa','rtPqK','invocation','element','string','30uUgymt','\x22,\x20\x22','select\x20tab\x20','##\x20Instructions\x0a1.\x20Use\x20Bash\x20plus\x20Playwright\x20CLI\x20only.\x20Do\x20NOT\x20call\x20MCP\x20browser\x20tools.\x0a2.\x20Start\x20by\x20running\x20`','trim','session-recording.webm','replace','stdout','`\x0a5.\x20Read\x20the\x20snapshot\x20file\x20to\x20find\x20the\x20\x22Learn\x20More\x22\x20link\x20reference\x0a6.\x20Run\x20`','523582NdXVzN','02_learn-more.yml','keys','ref\x20','`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`','check','key_04_success-state.png','trackPhaseError','jKnBz','NqUbi','\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','selector','MOEfF','KfUBq','length','tool_input','1808012QfwjAA','FqnwI','Klsoc','tab-select','match','\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.','Pthhw','snapshot','content','test','ZIcov','sSQNL','vvGkV','`\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`','split','2479312jaQvHy','playwright_cli_close','short','numeric','playwright-cli','subcommand','run\x20custom\x20Playwright\x20code','`\x0a7.\x20Click\x20the\x20\x22Learn\x20More\x22\x20link\x20with\x20Playwright\x20CLI\x0a8.\x20Run\x20`','FXUXM','tool_call','close','eIPtP','4813750KFjDjm','error','\x0a\x0a##\x20Browser\x20Command\x20Reference\x0aUse\x20Bash\x20to\x20run\x20Playwright\x20CLI\x20commands\x20with\x20this\x20exact\x20prefix:\x0a`','##\x20App\x20Context\x0aYou\x20are\x20connected\x20to\x20a\x20desktop\x20application\x20via\x20CDP\x20(Chrome\x20DevTools\x20Protocol)\x20at\x20','`\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`','**\x20(','authorEmail','`,\x20then\x20`','\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','slice','\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','.\x0aThis\x20is\x20NOT\x20a\x20web\x20app\x20—\x20there\x20is\x20no\x20URL\x20to\x20navigate\x20to.\x20The\x20app\x20is\x20already\x20running\x20and\x20connected.','set','...','ljEVz','name','--filename=','fill\x20','wdYmj','\x20>\x20','\x20video-start`\x0a4.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`','PqWPf','HsmOq','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','toLocaleDateString','mtimeMs','`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a8.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`','start\x20tracing','rgWPA','yyywa','phase','355077nEYNnK','\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`','click','\x20screenshot\x20--filename\x20','01_initial-state.png','lSBDC','domRef','9kwOnBp','trackPhaseEnd','485779sHjotp','xajwq','trace.trace.zip',']\x20**'];_0x10f0=function(){return _0x1168e1;};return _0x10f0();}function truncatePreview(_0x1c909c,_0x3a30f6=PLAYWRIGHT_CLI_PREVIEW_LIMIT){const _0x4ecb3b=_0x4dc5;return _0x1c909c[_0x4ecb3b(0x1a0)]>_0x3a30f6?_0x1c909c['slice'](0x0,_0x3a30f6)+_0x4ecb3b(0x1ca):_0x1c909c;}function buildCliArtifactPath(_0x236773,_0x3472e3){const _0x15a13={'VnSKL':function(_0x477bf1,_0x56acdc,_0x3a8bd0){return _0x477bf1(_0x56acdc,_0x3a8bd0);}};return _0x15a13['VnSKL'](join,_0x236773,_0x3472e3);}function _0x4dc5(_0x396d94,_0x4d1db0){_0x396d94=_0x396d94-0x164;const _0x10f00e=_0x10f0();let _0x4dc573=_0x10f00e[_0x396d94];return _0x4dc573;}function toStepDisplayName(_0x325e29){const _0x5c488b=_0x4dc5,_0x330651={'yyywa':function(_0x15a4f4,_0x334a3f){return _0x15a4f4(_0x334a3f);}},_0x32091d=basename(_0x325e29)[_0x5c488b(0x18f)](/\.(?:png|ya?ml)$/i,'')['replace'](/^key_/i,'')['replace'](/^\d+_/,'')['replace'](/-/g,'\x20');return{'name':_0x32091d,'isKeyStep':/^key_/i[_0x5c488b(0x1ab)](_0x330651[_0x5c488b(0x1da)](basename,_0x325e29))};}function extractShellValue(_0x3d535d){if(!_0x3d535d)return null;return _0x3d535d[0x1]??_0x3d535d[0x2]??_0x3d535d[0x3]??null;}function extractFilenameOption(_0xab7dde){return extractShellValue(_0xab7dde['match'](/--filename(?:=|\s+)(?:"([^"]+)"|'([^']+)'|(\S+))/));}function extractFirstCommandArgument(_0x50bf85,_0x3b9be1){const _0xaca3a9=_0x4dc5,_0x398607=_0x3b9be1[_0xaca3a9(0x18f)](/[.*+?^${}()|[\]\\]/g,'\x5c$&');return extractShellValue(_0x50bf85[_0xaca3a9(0x1a6)](new RegExp('(?:^|\x5cs)'+_0x398607+'(?:\x5cs+(?:\x22([^\x22]+)\x22|\x27([^\x27]+)\x27|(\x5cS+)))')));}function formatCommandTarget(_0x4d9a54){const _0x867f2f=_0x4dc5,_0x2090a0={'WTHlt':'target'};if(!_0x4d9a54)return _0x2090a0['WTHlt'];if(/^e\d+$/i['test'](_0x4d9a54))return _0x867f2f(0x195)+_0x4d9a54;return JSON['stringify'](truncatePreview(_0x4d9a54,0x78));}function formatPlaywrightCliLog(_0x49e075,_0x2f27fd){const _0x313870=_0x4dc5,_0x45b207={'JndgK':function(_0x1414f6,_0x3cae33,_0x114e3b){return _0x1414f6(_0x3cae33,_0x114e3b);},'sfadj':'tracing-start','RvPUS':_0x313870(0x1d8),'xajwq':'stop\x20tracing','sSQNL':_0x313870(0x17e),'xAbGa':'start\x20video\x20recording','Mhtul':'stop\x20video\x20recording','shMoC':'capture\x20snapshot','HJQsN':'screenshot','Pthhw':'capture\x20screenshot','dmUid':_0x313870(0x172),'rtPqK':function(_0x5b46a3,_0x197439){return _0x5b46a3(_0x197439);},'eIPtP':_0x313870(0x16b),'rhePf':_0x313870(0x1b7)};switch(_0x2f27fd){case'open':{const _0x3c8a9b=_0x45b207['JndgK'](extractFirstCommandArgument,_0x49e075,_0x2f27fd);return _0x3c8a9b?'open\x20'+_0x3c8a9b:_0x313870(0x168);}case _0x45b207['sfadj']:return _0x45b207['RvPUS'];case'tracing-stop':return _0x45b207[_0x313870(0x1e6)];case _0x45b207[_0x313870(0x1ad)]:return _0x45b207[_0x313870(0x184)];case _0x313870(0x1ec):return _0x45b207['Mhtul'];case _0x313870(0x1a9):{const _0x159385=extractFilenameOption(_0x49e075);if(!_0x159385)return _0x45b207[_0x313870(0x170)];const {name:_0x227b51}=toStepDisplayName(_0x159385);return _0x313870(0x16a)+_0x227b51+'`';}case _0x45b207['HJQsN']:{const _0x1da8ba=extractFilenameOption(_0x49e075);if(!_0x1da8ba)return _0x45b207[_0x313870(0x1a8)];const {name:_0x79f4db,isKeyStep:_0x642648}=toStepDisplayName(_0x1da8ba);return _0x642648?'capture\x20key\x20step\x20`'+_0x79f4db+'`':_0x313870(0x1f1)+_0x79f4db+'`';}case _0x313870(0x1de):return _0x313870(0x182)+formatCommandTarget(_0x45b207['JndgK'](extractFirstCommandArgument,_0x49e075,_0x2f27fd));case _0x313870(0x197):return'check\x20'+formatCommandTarget(extractFirstCommandArgument(_0x49e075,_0x2f27fd));case _0x45b207['dmUid']:return _0x313870(0x1ce)+_0x45b207[_0x313870(0x185)](formatCommandTarget,extractFirstCommandArgument(_0x49e075,_0x2f27fd));case _0x45b207[_0x313870(0x1bc)]:return'press\x20'+formatCommandTarget(_0x45b207[_0x313870(0x16d)](extractFirstCommandArgument,_0x49e075,_0x2f27fd));case'run-code':return _0x45b207['rhePf'];case'tab-new':{const _0x5c4068=extractFirstCommandArgument(_0x49e075,_0x2f27fd);return _0x5c4068?'open\x20new\x20tab\x20'+_0x5c4068:_0x313870(0x176);}case _0x313870(0x1a5):{const _0x3fa5b7=_0x45b207[_0x313870(0x16d)](extractFirstCommandArgument,_0x49e075,_0x2f27fd);return _0x3fa5b7?_0x313870(0x18b)+_0x3fa5b7:'select\x20tab';}default:return _0x2f27fd;}}function extractPlaywrightCliToolDescription(_0x502100){const _0x39dd17=_0x4dc5,_0x357d24={'qsfPe':function(_0x27f78c,_0x528d65){return _0x27f78c>_0x528d65;}},_0x367e2d=_0x502100['description'];if(typeof _0x367e2d!==_0x39dd17(0x188))return null;const _0x3ad094=_0x367e2d[_0x39dd17(0x18d)]()[_0x39dd17(0x18f)](/\s+/g,'\x20');return _0x357d24['qsfPe'](_0x3ad094[_0x39dd17(0x1a0)],0x0)?_0x3ad094:null;}export function formatPlaywrightCliConsoleLogMessage(_0x353555,_0x511bd8,_0x182675){const _0x338162=_0x4dc5,_0x10b575={'FqnwI':function(_0x18a50b,_0x5dbc50){return _0x18a50b(_0x5dbc50);}},_0x2a0fd8=formatPlaywrightCliLog(_0x511bd8,_0x182675),_0x26cf10=_0x10b575[_0x338162(0x1a3)](extractPlaywrightCliToolDescription,_0x353555);if(!_0x26cf10)return'[playwright-cli]\x20'+_0x2a0fd8;if(process['env'][_0x338162(0x183)])return'[ranger-verification-agent]\x20'+_0x26cf10+'\x20('+_0x2a0fd8+')';return'[ranger-verification-agent]\x20'+_0x26cf10;}export function buildVerifyFeatureCliDebugPrompt(_0x45a5d0,_0x20857b){const _0x283d63=_0x4dc5,_0x43d9dc={'Unqwv':'00_mozilla-homepage.yml','lSBDC':function(_0x8e4e38,_0x28deb1,_0xc2afcb){return _0x8e4e38(_0x28deb1,_0xc2afcb);},'pUGZK':function(_0x32343a,_0x432aba,_0x16abac){return _0x32343a(_0x432aba,_0x16abac);},'rgWPA':'03_learn-more.png','akcYH':function(_0x587546,_0x2f87f9){return _0x587546(_0x2f87f9);},'Mepzd':function(_0x349b77,_0x1979fa){return _0x349b77(_0x1979fa);},'tJkby':function(_0x11f6a3,_0x365024){return _0x11f6a3(_0x365024);}},_0x1c6d64=buildCliArtifactPath(_0x20857b,_0x43d9dc['Unqwv']),_0xd86262=_0x43d9dc[_0x283d63(0x1e1)](buildCliArtifactPath,_0x20857b,_0x283d63(0x16f)),_0x5676ad=_0x43d9dc['pUGZK'](buildCliArtifactPath,_0x20857b,_0x283d63(0x193)),_0x47cb67=buildCliArtifactPath(_0x20857b,_0x43d9dc[_0x283d63(0x1d9)]),_0x7ffffe=_0x43d9dc['akcYH'](quoteShellArg,_0x1c6d64),_0x547a13=quoteShellArg(_0xd86262),_0x4bca35=_0x43d9dc['Mepzd'](quoteShellArg,_0x5676ad),_0x473d88=_0x43d9dc['tJkby'](quoteShellArg,_0x47cb67);return'You\x20are\x20testing\x20browser\x20automation.\x20Your\x20task\x20is\x20simple:\x0a\x0aUse\x20Bash\x20and\x20Playwright\x20CLI\x20only.\x20The\x20browser\x20command\x20prefix\x20is:\x0a'+_0x45a5d0+'\x0a\x0a1.\x20Run\x20`'+_0x45a5d0+_0x283d63(0x1ef)+_0x45a5d0+'\x20tracing-start`\x0a3.\x20Run\x20`'+_0x45a5d0+_0x283d63(0x1d1)+_0x20857b+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a5.\x20Run\x20`'+_0x45a5d0+_0x283d63(0x169)+_0x7ffffe+_0x283d63(0x191)+_0x45a5d0+_0x283d63(0x1df)+_0x547a13+_0x283d63(0x1b8)+_0x45a5d0+_0x283d63(0x169)+_0x4bca35+'`\x0a9.\x20Run\x20`'+_0x45a5d0+_0x283d63(0x1df)+_0x473d88+'`\x0a10.\x20Return\x20immediately\x20with\x20the\x20structured\x20output\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format.';}export function buildVerifyFeatureCliPrompt(_0x5756d2){const _0x24cb39=_0x4dc5,_0xbc7d02={'VLWFr':_0x24cb39(0x1b4),'UyzDL':_0x24cb39(0x187),'PqWPf':function(_0x4d9ff9,_0x3edaaf,_0x5c20e6){return _0x4d9ff9(_0x3edaaf,_0x5c20e6);},'xBymD':function(_0x1d6cf0,_0x2e1ad7){return _0x1d6cf0(_0x2e1ad7);},'tOJYG':function(_0x1f7f76,_0x5d10be){return _0x1f7f76(_0x5d10be);},'ZXuok':_0x24cb39(0x198)},{checklistItem:_0x1041b1,itemFeedback:_0x23ad59,taskDescription:_0x2ecf08,cliCommandPrefix:_0x3568d7,cliArtifactDir:_0x13d7c0,isCdpMode:_0x27dc1d,url:_0x1d5676,cdpEndpoint:_0x318fd4,loginInstructions:_0x173a62}=_0x5756d2,_0x2b5e33=_0xbc7d02[_0x24cb39(0x1d2)](buildCliArtifactPath,_0x13d7c0,'01_initial.yml'),_0x17de28=buildCliArtifactPath(_0x13d7c0,'02_state.yml'),_0x2d3ac6=buildCliArtifactPath(_0x13d7c0,'key_03_success-state.png'),_0x37a592=_0xbc7d02[_0x24cb39(0x1d2)](buildCliArtifactPath,_0x13d7c0,_0x24cb39(0x1e0)),_0x3d59a6=_0xbc7d02['xBymD'](quoteShellArg,_0x2b5e33),_0x85f1de=quoteShellArg(_0x17de28),_0x242b27=quoteShellArg(_0x2d3ac6),_0x92dd52=_0xbc7d02['tOJYG'](quoteShellArg,_0x37a592),_0x228123=_0x1041b1['notes']?'\x0a\x0a##\x20Additional\x20Notes\x0a'+_0x1041b1['notes']:'';let _0x4983d8='';if(_0x23ad59&&_0x23ad59['unaddressedComments'][_0x24cb39(0x1a0)]>0x0){const _0x1a9865=_0x23ad59['unaddressedComments'][_0x24cb39(0x17d)](_0x30cccd=>{const _0x4ffafa=_0x24cb39,_0x172fa8=new Date(_0x30cccd[_0x4ffafa(0x17f)])[_0x4ffafa(0x1d5)](_0x4ffafa(0x1f3),{'month':_0x4ffafa(0x1b3),'day':_0xbc7d02['VLWFr']}),_0x3a9a7b=_0x30cccd['authorName']||_0x30cccd[_0x4ffafa(0x1c3)]||_0x4ffafa(0x1ed),_0x549a23=_0x30cccd['domRef']?'\x20(on\x20element:\x20<'+(_0x30cccd[_0x4ffafa(0x1e2)][_0x4ffafa(0x19d)][_0x4ffafa(0x1b0)](_0x4ffafa(0x1d0))['pop']()?.[_0x4ffafa(0x1b0)](':')[0x0]||_0xbc7d02['UyzDL'])+'>\x20\x22'+(_0x30cccd[_0x4ffafa(0x1e2)][_0x4ffafa(0x16c)]||'')[_0x4ffafa(0x1c6)](0x0,0x32)+'\x22)':'';return'-\x20['+_0x30cccd['id']+_0x4ffafa(0x1e8)+_0x3a9a7b+_0x4ffafa(0x1c2)+_0x172fa8+'):\x20\x22'+_0x30cccd[_0x4ffafa(0x1aa)]+'\x22'+_0x549a23;})[_0x24cb39(0x165)]('\x0a');_0x4983d8='\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'+_0x1a9865;}const _0x29693a=_0x23ad59?.['canonicalFlow']?_0x24cb39(0x1ea)+_0x23ad59['canonicalFlow']:'',_0x24dbcc=_0x27dc1d?_0x24cb39(0x1c0)+_0x318fd4+_0x24cb39(0x1c8):'CRITICAL\x20URL\x20REQUIREMENT:\x0aYour\x20base\x20URL\x20is:\x20'+_0x1d5676+_0x24cb39(0x177),_0x361a84=_0x1d5676?quoteShellArg(_0x1d5676):'',_0x487210=_0x27dc1d?_0x24cb39(0x18c)+_0x3568d7+_0x24cb39(0x174)+_0x3568d7+'\x20tracing-start`,\x20then\x20`'+_0x3568d7+'\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x13d7c0+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`'+_0x3568d7+_0x24cb39(0x169)+_0x3d59a6+'`\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`'+_0x3568d7+'\x20screenshot\x20--filename\x20'+_0x92dd52+'`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a6.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`'+_0x3568d7+_0x24cb39(0x19c):_0x24cb39(0x18c)+_0x3568d7+_0x24cb39(0x1ee)+_0x361a84+_0x24cb39(0x1c4)+_0x3568d7+'\x20tracing-start`,\x20then\x20`'+_0x3568d7+_0x24cb39(0x1dd)+_0x13d7c0+_0x24cb39(0x196)+_0x3568d7+'\x20snapshot\x20--filename\x20'+_0x3d59a6+_0x24cb39(0x1c1)+_0x3568d7+'\x20screenshot\x20--filename\x20'+_0x92dd52+_0x24cb39(0x1d7)+_0x3568d7+'\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',_0x11a2de=_0x27dc1d?'\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.':_0x24cb39(0x1a7),_0x1f2643=_0x173a62?'\x0a\x0a##\x20Authentication\x0aBEFORE\x20starting\x20the\x20verification\x20task,\x20you\x20MUST\x20authenticate\x20using\x20these\x20steps:\x0a'+_0x173a62+_0x24cb39(0x167):'';return _0x24cb39(0x1d4)+_0x1041b1[_0x24cb39(0x171)]+_0x228123+_0x4983d8+_0x29693a+'\x0a\x0a##\x20Task\x20to\x20Execute\x0a'+_0x2ecf08+'\x0a\x0a'+_0x24dbcc+_0x1f2643+'\x0a\x0a'+_0x487210+_0x24cb39(0x1bf)+_0x3568d7+_0x24cb39(0x166)+_0x13d7c0+_0x24cb39(0x178)+_0x85f1de+'`\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'+_0x242b27+_0x24cb39(0x1af)+_0x13d7c0+_0x24cb39(0x17c)+_0x37a592+'\x22,\x20\x22'+_0xbc7d02[_0x24cb39(0x1d2)](buildCliArtifactPath,_0x13d7c0,'02_button-clicked.png')+_0x24cb39(0x18a)+buildCliArtifactPath(_0x13d7c0,'03_result-visible.png')+_0x24cb39(0x1c5)+_0xbc7d02['PqWPf'](buildCliArtifactPath,_0x13d7c0,_0xbc7d02['ZXuok'])+_0x24cb39(0x1c7)+_0x11a2de+'\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(_0x2ec9f7){const _0xe1a91a=_0x4dc5,_0x5a768a=[..._0x2ec9f7[_0xe1a91a(0x194)]()]['sort']();let _0x371733=0x0;for(const _0x50e3a0 of _0x2ec9f7['values']()){_0x371733+=_0x50e3a0;}return{'cliCommandCount':_0x371733,'cliCommandsSeen':_0x5a768a,'noCliCommandsCalled':_0x371733===0x0};}export function createVerifyFeatureCliHooks(_0x493285){const _0x37b4af=_0x4dc5,_0x378d65={'vvGkV':function(_0x4b48a6,_0x512a31){return _0x4b48a6!==_0x512a31;},'AUGdL':'PostToolUse','MOEfF':function(_0x340cb5,_0x301e7a){return _0x340cb5!==_0x301e7a;},'YzClk':function(_0x332e3b,_0x485160){return _0x332e3b(_0x485160);},'MHzcJ':function(_0x128127,_0x4d1a82){return _0x128127+_0x4d1a82;},'Klsoc':_0x37b4af(0x1b5),'eegUf':_0x37b4af(0x1ba),'oxxlX':function(_0x51fc6d,_0x57d010){return _0x51fc6d!==_0x57d010;},'fyGEQ':'snapshot','wdYmj':'PostToolUseFailure','exCXz':function(_0xe8dfb,_0xc2dca8){return _0xe8dfb!==_0xc2dca8;},'tOtpU':'Bash','wYTrM':'tool_failure'},_0x292210=new Map(),_0xfe71fe=async _0x577f06=>{const _0x1f88c8=_0x37b4af;if(_0x378d65['vvGkV'](_0x577f06[_0x1f88c8(0x179)],_0x378d65['AUGdL']))return{};const _0x46c2a7=_0x577f06;if(_0x378d65[_0x1f88c8(0x19e)](_0x46c2a7['tool_name'],_0x1f88c8(0x173)))return{};const _0x57473b=_0x46c2a7[_0x1f88c8(0x1a1)],_0x42097d=extractBashCommand(_0x57473b);if(!_0x42097d)return{};const _0x277be5=_0x378d65[_0x1f88c8(0x181)](parsePlaywrightCliCommand,_0x42097d);if(!_0x277be5)return{};return _0x292210[_0x1f88c8(0x1c9)](_0x277be5,_0x378d65['MHzcJ'](_0x292210['get'](_0x277be5)||0x0,0x1)),_0x493285['trackPhaseStart']('tool_call',{'transport':_0x378d65['Klsoc'],'toolName':_0x277be5}),_0x493285[_0x1f88c8(0x1e4)](_0x378d65['eegUf'],{'transport':_0x378d65[_0x1f88c8(0x1a4)],'toolName':_0x277be5,'bashCommandPreview':truncatePreview(_0x42097d)}),_0x378d65['oxxlX'](_0x277be5,_0x378d65['fyGEQ'])&&console[_0x1f88c8(0x16e)](formatPlaywrightCliConsoleLogMessage(_0x57473b,_0x42097d,_0x277be5)),{};},_0x5357cc=async _0x3421fe=>{const _0x32b398=_0x37b4af;if(_0x378d65[_0x32b398(0x1ae)](_0x3421fe['hook_event_name'],_0x378d65[_0x32b398(0x1cf)]))return{};const _0x54a67e=_0x3421fe;if(_0x378d65['exCXz'](_0x54a67e['tool_name'],_0x378d65[_0x32b398(0x180)]))return{};return await _0x493285['trackPhaseError'](_0x378d65['wYTrM'],_0x54a67e[_0x32b398(0x1be)],{'transport':_0x378d65['Klsoc'],'toolName':_0x378d65[_0x32b398(0x180)]}),{};};return{'postToolUseHook':_0xfe71fe,'postToolUseFailureHook':_0x5357cc,'commandCounts':_0x292210};}async function runPlaywrightCliLifecycleCommand(_0x2e545b){const _0x44bf38=_0x4dc5,_0x766b8d={'FXUXM':function(_0x39a07b,_0x1807db){return _0x39a07b??_0x1807db;}},{sessionId:_0x2874d4,configPath:_0x1b4bd1,commandArgs:_0x2f437c,env:_0x4c7f63,telemetry:_0x256c25,phase:_0x3c04f9,metadata:_0x1ff8ef,timeoutMs:_0x252420}=_0x2e545b;_0x256c25['trackPhaseStart'](_0x3c04f9,_0x1ff8ef);try{const _0xedc265=await runPlaywrightCliCommand({'sessionId':_0x2874d4,'configPath':_0x1b4bd1,'commandArgs':_0x2f437c,'cwd':process[_0x44bf38(0x175)](),'env':_0x4c7f63,'timeoutMs':_0x766b8d[_0x44bf38(0x1b9)](_0x252420,PLAYWRIGHT_CLI_COMMAND_TIMEOUT_MS)});_0x256c25[_0x44bf38(0x1e4)](_0x3c04f9,{..._0x1ff8ef,'subcommand':_0xedc265[_0x44bf38(0x186)][_0x44bf38(0x1b6)],'stdoutPreview':truncatePreview(_0xedc265[_0x44bf38(0x190)],0x7d0),'stderrPreview':truncatePreview(_0xedc265[_0x44bf38(0x1f0)],0x7d0)});}catch(_0x5691fd){await _0x256c25[_0x44bf38(0x199)](_0x3c04f9,_0x5691fd,_0x1ff8ef);throw _0x5691fd;}}export async function finalizeVerifyFeatureCliSession(_0x593ad6){const _0x330dd7=_0x4dc5,_0x247e93={'wwkKD':'tracing-stop','AQsXb':_0x330dd7(0x1e9),'NqUbi':function(_0xaa6140,_0x3864d6,_0x5d2c6c){return _0xaa6140(_0x3864d6,_0x5d2c6c);},'jKnBz':_0x330dd7(0x1b2),'HsmOq':_0x330dd7(0x1bb),'KfUBq':function(_0x5de1b5,_0x1d1067){return _0x5de1b5(_0x1d1067);}},{telemetry:_0x3d2cb4,sessionId:_0x511e94,configPath:_0x3916a6,cliArtifactDir:_0x45e617,env:_0x555659,transportMetadata:_0x144cbb}=_0x593ad6,_0x3aa988=[{'phase':'playwright_cli_tracing_stop','commandArgs':[_0x247e93['wwkKD']]},{'phase':_0x247e93[_0x330dd7(0x17a)],'commandArgs':['video-stop',_0x330dd7(0x1cd)+_0x247e93[_0x330dd7(0x19b)](buildCliArtifactPath,_0x45e617,_0x330dd7(0x18e))]},{'phase':_0x247e93[_0x330dd7(0x19a)],'commandArgs':[_0x247e93[_0x330dd7(0x1d3)]]}];for(const _0x57c4d7 of _0x3aa988){try{await _0x247e93[_0x330dd7(0x19f)](runPlaywrightCliLifecycleCommand,{'sessionId':_0x511e94,'configPath':_0x3916a6,'commandArgs':[..._0x57c4d7['commandArgs']],'env':_0x555659,'telemetry':_0x3d2cb4,'phase':_0x57c4d7[_0x330dd7(0x1db)],'metadata':_0x144cbb});}catch{}}}export async function loadVerifyFeatureCliTraceUploadArtifact(_0x295499){const _0x43daa8=_0x4dc5,_0x2dd7c={'gKpIb':function(_0x309f94,_0x5b1b3b,_0x1653d5){return _0x309f94(_0x5b1b3b,_0x1653d5);},'GHHgW':function(_0x495818,_0x487d95){return _0x495818(_0x487d95);}},_0x5a01b0=['trace.zip',_0x43daa8(0x1e7)];for(const _0x4b4a82 of _0x5a01b0){const _0x1d240b=_0x2dd7c['gKpIb'](join,_0x295499,_0x4b4a82);try{return{'buffer':await _0x2dd7c[_0x43daa8(0x17b)](readFile,_0x1d240b),'source':_0x1d240b};}catch{}}return null;}export async function rehomeVerifyFeatureCliArtifacts(_0x220914){const _0x76e912=_0x4dc5,_0x4771f5={'GDnGW':function(_0x3ba6aa,_0x224f8f,_0x50f05f){return _0x3ba6aa(_0x224f8f,_0x50f05f);},'ZFgsP':function(_0x4ef663,_0x1ef473,_0x1591b8){return _0x4ef663(_0x1ef473,_0x1591b8);},'ZIcov':function(_0x3aa088,_0x477eea){return _0x3aa088<_0x477eea;},'axWHa':function(_0x40dde2,_0x4f884d){return _0x40dde2+_0x4f884d;},'ljEVz':function(_0x4c0650,_0x1eef64){return _0x4c0650===_0x1eef64;}},{cwd:_0x87b297,cliArtifactDir:_0xc24340,startTime:_0x944011}=_0x220914,_0x30b2c0=[];await _0x4771f5[_0x76e912(0x1eb)](mkdir,_0xc24340,{'recursive':!![]});const _0x412287=await _0x4771f5['GDnGW'](readdir,_0x87b297,{'withFileTypes':!![]});for(const _0x407870 of _0x412287){if(!_0x407870['isFile']()||!VERIFY_FEATURE_CLI_ARTIFACT_FILE_PATTERN[_0x76e912(0x1ab)](_0x407870[_0x76e912(0x1cc)]))continue;const _0x83a542=_0x4771f5['ZFgsP'](join,_0x87b297,_0x407870[_0x76e912(0x1cc)]),_0x40e4ee=await stat(_0x83a542);if(_0x4771f5[_0x76e912(0x1ac)](_0x4771f5['axWHa'](_0x40e4ee[_0x76e912(0x1d6)],0x7d0),_0x944011))continue;const _0x3b1a77=buildCliArtifactPath(_0xc24340,_0x407870[_0x76e912(0x1cc)]);if(_0x4771f5[_0x76e912(0x1cb)](_0x83a542,_0x3b1a77))continue;await rename(_0x83a542,_0x3b1a77),_0x30b2c0['push'](_0x407870[_0x76e912(0x1cc)]);}return _0x30b2c0['sort']();}
@@ -7,12 +7,25 @@ description: "Ranger’s browser verification tooling that supplements a coding
7
7
 
8
8
  Run Ranger commands using `ranger-cli <args>`.
9
9
 
10
- **IMPORTANT: At the start of any session, run `ranger-cli update` to ensure you have the latest CLI and skills.**
10
+ **IMPORTANT: At the start of any session, check that you have the latest CLI and skills. If you were installed from `@latest`, run `ranger-cli update`. If you are on a prerelease (e.g., `@alpha`, version contains `-alpha.`), do NOT run `ranger-cli update` it will move you to `@latest` and off the prerelease track. Check with your team lead or re-install with `npm i -g @ranger-testing/ranger-cli@alpha` to stay current on that channel.**
11
11
 
12
12
  If you are running in Claude Code, read and suggest the following claude-specific commands to the user: [claude.md](./claude.md).
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 from user creds
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"), skip the create/setup ceremony and run verification directly:
19
+
20
+ ```bash
21
+ RANGER_TEST_USERNAME='alice@example.com' RANGER_TEST_PASSWORD='hunter2' \
22
+ ranger-cli go --url <target-url> --notes '<the goal verbatim>'
23
+ ```
24
+
25
+ If a feature review is required and none is active, the CLI will create one automatically. Do **not** run `ranger-cli create` first unless the user explicitly asks for a structured feature review with multiple scenarios.
26
+
27
+ When credentials sit 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 the values.
28
+
16
29
  This skill covers three workflows for Ranger feature review tracking:
17
30
 
18
31
  ## Supported Workflows
@@ -232,9 +245,10 @@ When completing your work or ending the session, your final message to the user
232
245
 
233
246
  If you encounter authentication issues:
234
247
 
235
- 1. **Check your profiles**: Run `ranger-cli profile ls` to see all configured profiles and their details
236
- 2. **Switch profiles**: Use `ranger-cli profile use <profile-name>` to switch to a different profile
237
- 3. **Refresh auth**: Instruct the user to run `ranger-cli profile update <profile-name>` to re-capture authentication for a profile (user will need to help with that)
248
+ 1. **Log in with provided credentials**: Set `RANGER_TEST_USERNAME` and `RANGER_TEST_PASSWORD` and re-run `ranger-cli go ...`. The CLI uses those credentials to log in and reuses the same profile on subsequent runs.
249
+ 2. **Check existing profiles**: Run `ranger-cli profile ls` to see all configured profiles.
250
+ 3. **Pin a specific profile**: Use `ranger-cli profile use <profile-name>` (or pass `--profile <name>` / set `RANGER_PROFILE`).
251
+ 4. **Refresh auth**: Ask the user to run `ranger-cli profile update <profile-name>` to re-capture authentication for a profile.
238
252
 
239
253
 
240
254
  ### Authentication Issues to Ranger
@@ -2,6 +2,12 @@
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
6
+
7
+ If the user just wants a quick browser check (e.g. "log in as X and confirm the dashboard renders"), skip this step. Run `ranger-cli go --url <target> --notes '<goal>'` directly — a feature review will be created automatically when one is needed. See the **One-shot verification from user creds** section in the parent `SKILL.md`.
8
+
9
+ Reach for `ranger-cli create` when the work is multi-scenario or you want to enumerate the user journeys up front for the reviewer.
10
+
5
11
  ## Basic Command
6
12
 
7
13
  ```bash
@@ -8,7 +8,21 @@ After implementing code for a scenario, verify it works in the browser. This cre
8
8
  ranger-cli go --scenario <N> --notes "<what to verify>"
9
9
  ```
10
10
 
11
- The URL is derived from your active profile's `baseUrl` setting.
11
+ ## Profile resolution
12
+
13
+ When the user gives you a username + password, set them inline and run `go` — no `profile add` step:
14
+
15
+ ```bash
16
+ RANGER_TEST_USERNAME='alice@example.com' RANGER_TEST_PASSWORD='hunter2' \
17
+ ranger-cli go --url <target> --notes '<what to verify>'
18
+ ```
19
+
20
+ Resolution order:
21
+
22
+ 1. `--profile <name>` flag (or `RANGER_PROFILE` env var)
23
+ 2. Saved active profile (`ranger-cli profile use <name>`)
24
+ 3. `RANGER_TEST_USERNAME` (reuses or creates a matching profile)
25
+ 4. The org's sole profile when exactly one exists
12
26
 
13
27
  ## Required: Active Feature Review
14
28
 
@@ -41,7 +55,7 @@ You do NOT need to manually include reviewer feedback in your `--notes` descript
41
55
 
42
56
  | Option | Required | Description |
43
57
  |--------|----------|-------------|
44
- | `--profile` | No | Profile to use (defaults to active profile) |
58
+ | `--profile` | No | Profile to use. Equivalent to `RANGER_PROFILE` env var. Defaults to active profile, or to the user keyed by `RANGER_TEST_USERNAME` if set. |
45
59
  | `--notes` | No | What to verify (defaults to scenario description) |
46
60
  | `--scenario` | No | Scenario index to verify (skips selection prompt) |
47
61
  | `--start-path` | No | Path to start on (appended to base URL, e.g., `/dashboard`) |
@@ -182,7 +196,7 @@ Always end the conversational turn by sharing the dashboard link whenever you ru
182
196
  Run `ranger-cli list` to find feature reviews, then `ranger-cli resume <id>` to resume one.
183
197
 
184
198
  ### "No active profile"
185
- Run `ranger-cli profile use <profile-name>` to set a profile with browser access.
199
+ Either set `RANGER_TEST_USERNAME` (and `RANGER_TEST_PASSWORD` for first-time login) and re-run, or pin one explicitly with `ranger-cli profile use <profile-name>`.
186
200
 
187
201
  ### Verification times out
188
202
  The agent has 59 minutes max. For very long flows, break into smaller scenarios.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ranger-testing/ranger-cli",
3
- "version": "2.5.4-alpha.ed286f1-2",
3
+ "version": "2.5.4-alpha.f6504c0-8",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "ranger": "./build/cli.js",