@ranger-testing/ranger-cli 2.5.4-alpha.bc88254-5 → 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.
- 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/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 +17 -4
- package/build/skills/ranger/create.md +6 -0
- package/build/skills/ranger/verify.md +13 -11
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(_0x4bc1e1,_0x4e485b){const _0x444ab6=_0x3644,_0x957365=_0x4bc1e1();while(!![]){try{const _0x1086d8=parseInt(_0x444ab6(0x12a))/0x1*(-parseInt(_0x444ab6(0x147))/0x2)+parseInt(_0x444ab6(0x165))/0x3*(-parseInt(_0x444ab6(0x148))/0x4)+-parseInt(_0x444ab6(0x11a))/0x5+-parseInt(_0x444ab6(0x116))/0x6+-parseInt(_0x444ab6(0x14c))/0x7*(parseInt(_0x444ab6(0x102))/0x8)+-parseInt(_0x444ab6(0x11d))/0x9*(-parseInt(_0x444ab6(0x152))/0xa)+parseInt(_0x444ab6(0x17d))/0xb;if(_0x1086d8===_0x4e485b)break;else _0x957365['push'](_0x957365['shift']());}catch(_0x139e8e){_0x957365['push'](_0x957365['shift']());}}}(_0x167e,0xf414b));import{mkdir,readFile,readdir,rename,stat}from'fs/promises';import{basename,join}from'path';function _0x3644(_0x33691e,_0x30a321){_0x33691e=_0x33691e-0xe4;const _0x167e11=_0x167e();let _0x36447d=_0x167e11[_0x33691e];return _0x36447d;}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(_0x354021,_0x1cc011=PLAYWRIGHT_CLI_PREVIEW_LIMIT){const _0x7a5207=_0x3644,_0x38502c={'DNctC':function(_0x4a2166,_0x5e5009){return _0x4a2166+_0x5e5009;}};return _0x354021['length']>_0x1cc011?_0x38502c[_0x7a5207(0xed)](_0x354021['slice'](0x0,_0x1cc011),_0x7a5207(0x11f)):_0x354021;}function buildCliArtifactPath(_0xddb2d,_0x4e3dc7){return join(_0xddb2d,_0x4e3dc7);}function toStepDisplayName(_0x5d7d77){const _0x404a39=_0x3644,_0x465988={'BhVJw':function(_0x3f3a78,_0x3e26bd){return _0x3f3a78(_0x3e26bd);}},_0x58be9e=basename(_0x5d7d77)['replace'](/\.(?:png|ya?ml)$/i,'')[_0x404a39(0x130)](/^key_/i,'')['replace'](/^\d+_/,'')[_0x404a39(0x130)](/-/g,'\x20');return{'name':_0x58be9e,'isKeyStep':/^key_/i[_0x404a39(0x14d)](_0x465988['BhVJw'](basename,_0x5d7d77))};}function extractShellValue(_0x62d049){if(!_0x62d049)return null;return _0x62d049[0x1]??_0x62d049[0x2]??_0x62d049[0x3]??null;}function extractFilenameOption(_0x50f5b5){const _0x54f46b={'ZTzij':function(_0x299179,_0x429f01){return _0x299179(_0x429f01);}};return _0x54f46b['ZTzij'](extractShellValue,_0x50f5b5['match'](/--filename(?:=|\s+)(?:"([^"]+)"|'([^']+)'|(\S+))/));}function extractFirstCommandArgument(_0x2f5831,_0x2d55b1){const _0x410ee4=_0x3644,_0x114340=_0x2d55b1['replace'](/[.*+?^${}()|[\]\\]/g,'\x5c$&');return extractShellValue(_0x2f5831['match'](new RegExp('(?:^|\x5cs)'+_0x114340+_0x410ee4(0x111))));}function formatCommandTarget(_0x49f17f){const _0x3d0356=_0x3644,_0x10ac70={'iodXS':function(_0xbeef1b,_0x502d6c,_0x44b4ca){return _0xbeef1b(_0x502d6c,_0x44b4ca);}};if(!_0x49f17f)return'target';if(/^e\d+$/i['test'](_0x49f17f))return'ref\x20'+_0x49f17f;return JSON[_0x3d0356(0xe8)](_0x10ac70['iodXS'](truncatePreview,_0x49f17f,0x78));}function _0x167e(){const _0x3b9a32=['yUsda','video-stop','DEBUG','bgZth','##\x20Instructions\x0a1.\x20Use\x20Bash\x20plus\x20Playwright\x20CLI\x20only.\x20Do\x20NOT\x20call\x20MCP\x20browser\x20tools.\x0a2.\x20Start\x20by\x20running\x20`','unaddressedComments','set','01_initial-state.png','nOQPM','402632RRXsya','playwright_cli_close','xugfA','tool_name','`\x0a10.\x20Return\x20immediately\x20with\x20the\x20structured\x20output\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format.','tracing-stop','`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a5.\x20Run\x20`','run-code','\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','\x20open\x20https://www.mozilla.org`\x0a2.\x20Run\x20`','[ranger-verification-agent]\x20','fill\x20','press','QmGKY','capture\x20step\x20`','(?:\x5cs+(?:\x22([^\x22]+)\x22|\x27([^\x27]+)\x27|(\x5cS+)))','`\x0a\x0a-\x20Write\x20all\x20artifacts\x20under\x20`','PoAzr','BlDTJ','`\x0a5.\x20Read\x20the\x20snapshot\x20file\x20to\x20find\x20the\x20\x22Learn\x20More\x22\x20link\x20reference\x0a6.\x20Run\x20`','7451544ohxdHc','`\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`','oRwaV','NSqLr','1609775xIcMQX','values','pWtFA','9zIZTeC','length','...','capture\x20snapshot','en-US','kyaWZ','BHXhS','toLocaleDateString','selector','01_initial.yml','02_state.yml','\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','key_04_success-state.png','752yrFqJV','pop','\x20screenshot\x20--filename\x20','textContent','hrDkL','screenshot','replace','get','ZKRHp','mlvWO','split','\x20snapshot\x20--filename\x20','\x20video-start`\x0a4.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`','XUPKn','MEjif','`\x0a9.\x20Run\x20`','fRKIq','session-recording.webm','\x0a\x0a##\x20Task\x20to\x20Execute\x0a',']\x20**','##\x20App\x20Context\x0aYou\x20are\x20connected\x20to\x20a\x20desktop\x20application\x20via\x20CDP\x20(Chrome\x20DevTools\x20Protocol)\x20at\x20','`\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`','PostToolUseFailure','`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a8.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`','hook_event_name','\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','snapshot','**\x20(','name','1682AHofRf','236PRLUBT','CRITICAL\x20URL\x20REQUIREMENT:\x0aYour\x20base\x20URL\x20is:\x20','QavPs','playwright_cli_video_stop','203bTVZjL','test','You\x20are\x20testing\x20browser\x20automation.\x20Your\x20task\x20is\x20simple:\x0a\x0aUse\x20Bash\x20and\x20Playwright\x20CLI\x20only.\x20The\x20browser\x20command\x20prefix\x20is:\x0a','\x0a\x0a##\x20Expected\x20Flow\x20(from\x20previous\x20verification)\x0a','dIsua','stderr','10510790UNGOiv','rjyhH','stdout','click\x20','phase','open\x20','numeric','feclK','trackPhaseEnd','`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`','gWyki','`:\x20\x22','check','stop\x20video\x20recording','tool_input','BOUIS','subcommand','`\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','\x0a\x0a##\x20Additional\x20Notes\x0a','77955pKWyof','mgIcw','BRZyF','03_result-visible.png','PQyXc','content','isFile','03_learn-more.png','eZEFI','>\x20\x22','\x0a\x0a1.\x20Run\x20`','\x20tracing-start`,\x20then\x20`','trackPhaseStart','short','QSZtP','NVNYC','MocbO','video-start','fill','trim','open\x20browser','PHwgC','flnHR','select\x20tab','56514073GvVtRe','string','domRef','start\x20tracing','env','stringify','FZqZc','CqKWz','notes','playwright-cli','DNctC','open\x20new\x20tab\x20','authorEmail','\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`','ztzeW','hoUWc','canonicalFlow','AcldB','sort','authorName','uWWDC','tool_failure'];_0x167e=function(){return _0x3b9a32;};return _0x167e();}function formatPlaywrightCliLog(_0x4dafb5,_0x5df9cd){const _0x59480c=_0x3644,_0x269dc3={'PHwgC':'open','FZqZc':function(_0x26b036,_0x490ba3,_0x2959d5){return _0x26b036(_0x490ba3,_0x2959d5);},'VpmCG':_0x59480c(0x179),'fRKIq':_0x59480c(0xe6),'eCIqN':_0x59480c(0x107),'pJOEj':'stop\x20tracing','PQyXc':_0x59480c(0x176),'tXoTN':function(_0x3aef19,_0x3168f1){return _0x3aef19(_0x3168f1);},'gWyki':_0x59480c(0x12f),'feclK':function(_0x4b0a59,_0x53f45e){return _0x4b0a59(_0x53f45e);},'flnHR':'capture\x20screenshot','CqKWz':'click','paAxv':function(_0x3f6a4b,_0x12b629,_0xc19a7e){return _0x3f6a4b(_0x12b629,_0xc19a7e);},'eAlTq':function(_0x2ebf45,_0x3dac5f){return _0x2ebf45(_0x3dac5f);},'hdSwk':function(_0x542545,_0x32d451){return _0x542545(_0x32d451);},'QavPs':_0x59480c(0x10e),'QmGKY':_0x59480c(0x109),'dIsua':'run\x20custom\x20Playwright\x20code','ztzeW':'tab-select','NVNYC':_0x59480c(0x17c)};switch(_0x5df9cd){case _0x269dc3[_0x59480c(0x17a)]:{const _0x1ce41d=_0x269dc3['FZqZc'](extractFirstCommandArgument,_0x4dafb5,_0x5df9cd);return _0x1ce41d?_0x59480c(0x157)+_0x1ce41d:_0x269dc3['VpmCG'];}case'tracing-start':return _0x269dc3[_0x59480c(0x13a)];case _0x269dc3['eCIqN']:return _0x269dc3['pJOEj'];case _0x269dc3[_0x59480c(0x169)]:return'start\x20video\x20recording';case _0x59480c(0xfa):return _0x59480c(0x15f);case _0x59480c(0x144):{const _0x5b8fb3=extractFilenameOption(_0x4dafb5);if(!_0x5b8fb3)return _0x59480c(0x120);const {name:_0x188328}=_0x269dc3['tXoTN'](toStepDisplayName,_0x5b8fb3);return'capture\x20snapshot\x20`'+_0x188328+'`';}case _0x269dc3[_0x59480c(0x15c)]:{const _0xefd6c6=_0x269dc3['feclK'](extractFilenameOption,_0x4dafb5);if(!_0xefd6c6)return _0x269dc3[_0x59480c(0x17b)];const {name:_0x4fb85a,isKeyStep:_0x510974}=_0x269dc3['tXoTN'](toStepDisplayName,_0xefd6c6);return _0x510974?'capture\x20key\x20step\x20`'+_0x4fb85a+'`':_0x59480c(0x110)+_0x4fb85a+'`';}case _0x269dc3[_0x59480c(0xea)]:return _0x59480c(0x155)+_0x269dc3[_0x59480c(0x159)](formatCommandTarget,_0x269dc3['paAxv'](extractFirstCommandArgument,_0x4dafb5,_0x5df9cd));case _0x59480c(0x15e):return'check\x20'+_0x269dc3['eAlTq'](formatCommandTarget,_0x269dc3[_0x59480c(0xe9)](extractFirstCommandArgument,_0x4dafb5,_0x5df9cd));case _0x59480c(0x177):return _0x59480c(0x10d)+_0x269dc3['hdSwk'](formatCommandTarget,extractFirstCommandArgument(_0x4dafb5,_0x5df9cd));case _0x269dc3[_0x59480c(0x14a)]:return'press\x20'+formatCommandTarget(extractFirstCommandArgument(_0x4dafb5,_0x5df9cd));case _0x269dc3[_0x59480c(0x10f)]:return _0x269dc3[_0x59480c(0x150)];case'tab-new':{const _0x35ea63=_0x269dc3[_0x59480c(0xe9)](extractFirstCommandArgument,_0x4dafb5,_0x5df9cd);return _0x35ea63?_0x59480c(0xee)+_0x35ea63:'open\x20new\x20tab';}case _0x269dc3[_0x59480c(0xf1)]:{const _0x30b499=extractFirstCommandArgument(_0x4dafb5,_0x5df9cd);return _0x30b499?'select\x20tab\x20'+_0x30b499:_0x269dc3[_0x59480c(0x174)];}default:return _0x5df9cd;}}function extractPlaywrightCliToolDescription(_0x5183ee){const _0x4deb6e=_0x3644,_0x450996=_0x5183ee['description'];if(typeof _0x450996!==_0x4deb6e(0xe4))return null;const _0x352c54=_0x450996[_0x4deb6e(0x178)]()['replace'](/\s+/g,'\x20');return _0x352c54['length']>0x0?_0x352c54:null;}export function formatPlaywrightCliConsoleLogMessage(_0x3f9c38,_0x135e72,_0x24b866){const _0x5efba6=_0x3644,_0x2c720d={'XUPKn':function(_0x5c6ea6,_0x3bad68,_0x18e63c){return _0x5c6ea6(_0x3bad68,_0x18e63c);},'HXxZF':function(_0x480a90,_0x5d1ba2){return _0x480a90(_0x5d1ba2);}},_0x5f3dbb=_0x2c720d[_0x5efba6(0x137)](formatPlaywrightCliLog,_0x135e72,_0x24b866),_0x3aadcc=_0x2c720d['HXxZF'](extractPlaywrightCliToolDescription,_0x3f9c38);if(!_0x3aadcc)return'[playwright-cli]\x20'+_0x5f3dbb;if(process[_0x5efba6(0xe7)][_0x5efba6(0xfb)])return'[ranger-verification-agent]\x20'+_0x3aadcc+'\x20('+_0x5f3dbb+')';return _0x5efba6(0x10c)+_0x3aadcc;}export function buildVerifyFeatureCliDebugPrompt(_0x4d3583,_0x2f5326){const _0xf9184e=_0x3644,_0x1537b5={'uWWDC':function(_0x44ddf9,_0x22500b,_0x479d9b){return _0x44ddf9(_0x22500b,_0x479d9b);},'oRwaV':'01_mozilla-homepage.png','mgIcw':function(_0x4404c7,_0x4daf96,_0x50a816){return _0x4404c7(_0x4daf96,_0x50a816);},'VQThF':'02_learn-more.yml','rjyhH':function(_0x2a1017,_0x3c4009){return _0x2a1017(_0x3c4009);},'nOQPM':function(_0x4c6c0e,_0x4e221f){return _0x4c6c0e(_0x4e221f);}},_0x5b89b9=_0x1537b5['uWWDC'](buildCliArtifactPath,_0x2f5326,'00_mozilla-homepage.yml'),_0x531b43=_0x1537b5[_0xf9184e(0xf7)](buildCliArtifactPath,_0x2f5326,_0x1537b5[_0xf9184e(0x118)]),_0x454248=_0x1537b5['mgIcw'](buildCliArtifactPath,_0x2f5326,_0x1537b5['VQThF']),_0x508ef0=_0x1537b5[_0xf9184e(0x166)](buildCliArtifactPath,_0x2f5326,_0xf9184e(0x16c)),_0x140c90=_0x1537b5['rjyhH'](quoteShellArg,_0x5b89b9),_0x58a91d=quoteShellArg(_0x531b43),_0x577242=_0x1537b5[_0xf9184e(0x153)](quoteShellArg,_0x454248),_0x23a088=_0x1537b5[_0xf9184e(0x101)](quoteShellArg,_0x508ef0);return _0xf9184e(0x14e)+_0x4d3583+_0xf9184e(0x16f)+_0x4d3583+_0xf9184e(0x10b)+_0x4d3583+'\x20tracing-start`\x0a3.\x20Run\x20`'+_0x4d3583+_0xf9184e(0x136)+_0x2f5326+_0xf9184e(0x108)+_0x4d3583+_0xf9184e(0x135)+_0x140c90+_0xf9184e(0x115)+_0x4d3583+'\x20screenshot\x20--filename\x20'+_0x58a91d+'`\x0a7.\x20Click\x20the\x20\x22Learn\x20More\x22\x20link\x20with\x20Playwright\x20CLI\x0a8.\x20Run\x20`'+_0x4d3583+'\x20snapshot\x20--filename\x20'+_0x577242+_0xf9184e(0x139)+_0x4d3583+_0xf9184e(0x12c)+_0x23a088+_0xf9184e(0x106);}export function buildVerifyFeatureCliPrompt(_0x2b748d){const _0x4d1e7c=_0x3644,_0xcd50f2={'pWtFA':_0x4d1e7c(0x121),'BlDTJ':_0x4d1e7c(0x158),'QKdVl':'Reviewer','pjoIA':'element','ZKRHp':function(_0x57c18e,_0x5d6883,_0x5625ed){return _0x57c18e(_0x5d6883,_0x5625ed);},'xykbD':function(_0x509fcc,_0x3f55cf,_0x9726bb){return _0x509fcc(_0x3f55cf,_0x9726bb);},'MocbO':_0x4d1e7c(0x100),'AcldB':function(_0x3f84d4,_0x4ae09f){return _0x3f84d4(_0x4ae09f);},'mlvWO':'02_button-clicked.png','leMSl':_0x4d1e7c(0x129)},{checklistItem:_0x21f881,itemFeedback:_0x714aa4,taskDescription:_0xcab1fc,cliCommandPrefix:_0x537d88,cliArtifactDir:_0x16b3e7,isCdpMode:_0x42abda,url:_0x525359,cdpEndpoint:_0x299f55,loginInstructions:_0x384b63}=_0x2b748d,_0x41f00f=_0xcd50f2['ZKRHp'](buildCliArtifactPath,_0x16b3e7,_0x4d1e7c(0x126)),_0x21677e=_0xcd50f2[_0x4d1e7c(0x132)](buildCliArtifactPath,_0x16b3e7,_0x4d1e7c(0x127)),_0x53f1ef=buildCliArtifactPath(_0x16b3e7,'key_03_success-state.png'),_0x5d5029=_0xcd50f2['xykbD'](buildCliArtifactPath,_0x16b3e7,_0xcd50f2[_0x4d1e7c(0x175)]),_0x16c6bd=_0xcd50f2[_0x4d1e7c(0xf4)](quoteShellArg,_0x41f00f),_0xf23031=_0xcd50f2[_0x4d1e7c(0xf4)](quoteShellArg,_0x21677e),_0x93284=quoteShellArg(_0x53f1ef),_0x51640e=quoteShellArg(_0x5d5029),_0xd76dae=_0x21f881[_0x4d1e7c(0xeb)]?_0x4d1e7c(0x164)+_0x21f881[_0x4d1e7c(0xeb)]:'';let _0x449bbd='';if(_0x714aa4&&_0x714aa4[_0x4d1e7c(0xfe)][_0x4d1e7c(0x11e)]>0x0){const _0x235d92=_0x714aa4['unaddressedComments']['map'](_0x1441de=>{const _0x484c19=_0x4d1e7c,_0x476d99=new Date(_0x1441de['createdAt'])[_0x484c19(0x124)](_0xcd50f2[_0x484c19(0x11c)],{'month':_0x484c19(0x172),'day':_0xcd50f2[_0x484c19(0x114)]}),_0x4d4411=_0x1441de[_0x484c19(0xf6)]||_0x1441de[_0x484c19(0xef)]||_0xcd50f2['QKdVl'],_0x208cff=_0x1441de[_0x484c19(0xe5)]?'\x20(on\x20element:\x20<'+(_0x1441de['domRef'][_0x484c19(0x125)][_0x484c19(0x134)]('\x20>\x20')[_0x484c19(0x12b)]()?.[_0x484c19(0x134)](':')[0x0]||_0xcd50f2['pjoIA'])+_0x484c19(0x16e)+(_0x1441de['domRef'][_0x484c19(0x12d)]||'')['slice'](0x0,0x32)+'\x22)':'';return'-\x20['+_0x1441de['id']+_0x484c19(0x13d)+_0x4d4411+_0x484c19(0x145)+_0x476d99+'):\x20\x22'+_0x1441de[_0x484c19(0x16a)]+'\x22'+_0x208cff;})['join']('\x0a');_0x449bbd='\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'+_0x235d92;}const _0x4beac1=_0x714aa4?.[_0x4d1e7c(0xf3)]?_0x4d1e7c(0x14f)+_0x714aa4['canonicalFlow']:'',_0x3e6992=_0x42abda?_0x4d1e7c(0x13e)+_0x299f55+'.\x0aThis\x20is\x20NOT\x20a\x20web\x20app\x20—\x20there\x20is\x20no\x20URL\x20to\x20navigate\x20to.\x20The\x20app\x20is\x20already\x20running\x20and\x20connected.':_0x4d1e7c(0x149)+_0x525359+'\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',_0x57a1ee=_0x525359?quoteShellArg(_0x525359):'',_0x3dff35=_0x42abda?_0x4d1e7c(0xfd)+_0x537d88+'\x20open`,\x20then\x20`'+_0x537d88+'\x20tracing-start`,\x20then\x20`'+_0x537d88+'\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x16b3e7+_0x4d1e7c(0x15b)+_0x537d88+'\x20snapshot\x20--filename\x20'+_0x16c6bd+'`\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`'+_0x537d88+_0x4d1e7c(0x12c)+_0x51640e+'`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a6.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`'+_0x537d88+_0x4d1e7c(0x128):'##\x20Instructions\x0a1.\x20Use\x20Bash\x20plus\x20Playwright\x20CLI\x20only.\x20Do\x20NOT\x20call\x20MCP\x20browser\x20tools.\x0a2.\x20Start\x20by\x20running\x20`'+_0x537d88+'\x20open\x20'+_0x57a1ee+'`,\x20then\x20`'+_0x537d88+_0x4d1e7c(0x170)+_0x537d88+_0x4d1e7c(0xf0)+_0x16b3e7+_0x4d1e7c(0x15b)+_0x537d88+_0x4d1e7c(0x135)+_0x16c6bd+_0x4d1e7c(0x117)+_0x537d88+_0x4d1e7c(0x12c)+_0x51640e+_0x4d1e7c(0x141)+_0x537d88+_0x4d1e7c(0x10a),_0x3949b2=_0x42abda?'\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.':'\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.',_0x570f9e=_0x384b63?'\x0a\x0a##\x20Authentication\x0aBEFORE\x20starting\x20the\x20verification\x20task,\x20you\x20MUST\x20authenticate\x20using\x20these\x20steps:\x0a'+_0x384b63+'\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.':'';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'+_0x21f881['description']+_0xd76dae+_0x449bbd+_0x4beac1+_0x4d1e7c(0x13c)+_0xcab1fc+'\x0a\x0a'+_0x3e6992+_0x570f9e+'\x0a\x0a'+_0x3dff35+'\x0a\x0a##\x20Browser\x20Command\x20Reference\x0aUse\x20Bash\x20to\x20run\x20Playwright\x20CLI\x20commands\x20with\x20this\x20exact\x20prefix:\x0a`'+_0x537d88+_0x4d1e7c(0x112)+_0x16b3e7+'`\x0a-\x20`snapshot\x20--filename\x20'+_0xf23031+_0x4d1e7c(0x163)+_0x93284+_0x4d1e7c(0x13f)+_0x16b3e7+_0x4d1e7c(0x15d)+_0x5d5029+'\x22,\x20\x22'+buildCliArtifactPath(_0x16b3e7,_0xcd50f2[_0x4d1e7c(0x133)])+'\x22,\x20\x22'+buildCliArtifactPath(_0x16b3e7,_0x4d1e7c(0x168))+'\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(_0x16b3e7,_0xcd50f2['leMSl'])+_0x4d1e7c(0x143)+_0x3949b2+'\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(_0x2a490c){const _0x3b119e=_0x3644,_0x1b3835=[..._0x2a490c['keys']()][_0x3b119e(0xf5)]();let _0x4b5602=0x0;for(const _0x447c26 of _0x2a490c[_0x3b119e(0x11b)]()){_0x4b5602+=_0x447c26;}return{'cliCommandCount':_0x4b5602,'cliCommandsSeen':_0x1b3835,'noCliCommandsCalled':_0x4b5602===0x0};}export function createVerifyFeatureCliHooks(_0x215a54){const _0x456cf5=_0x3644,_0x45ed2c={'KDDVv':'PostToolUse','QSZtP':function(_0x104bab,_0x285586){return _0x104bab!==_0x285586;},'eZEFI':function(_0x466beb,_0x5b8e42){return _0x466beb(_0x5b8e42);},'NSqLr':function(_0x44d35e,_0x597b8c){return _0x44d35e(_0x597b8c);},'BRZyF':'tool_call','kyaWZ':function(_0x2b20ae,_0x2888fc){return _0x2b20ae!==_0x2888fc;},'bgZth':'snapshot','BHXhS':function(_0x3c8ea7,_0x549ede,_0x48c329,_0x2ebee0){return _0x3c8ea7(_0x549ede,_0x48c329,_0x2ebee0);},'bcfKM':_0x456cf5(0x140),'hrDkL':_0x456cf5(0xec)},_0x331da8=new Map(),_0x5ead52=async _0x35d23a=>{const _0x562ead=_0x456cf5;if(_0x35d23a[_0x562ead(0x142)]!==_0x45ed2c['KDDVv'])return{};const _0x3e7994=_0x35d23a;if(_0x45ed2c[_0x562ead(0x173)](_0x3e7994[_0x562ead(0x105)],'Bash'))return{};const _0x2f07d6=_0x3e7994[_0x562ead(0x160)],_0x9af4e4=_0x45ed2c[_0x562ead(0x16d)](extractBashCommand,_0x2f07d6);if(!_0x9af4e4)return{};const _0x2eb257=_0x45ed2c[_0x562ead(0x119)](parsePlaywrightCliCommand,_0x9af4e4);if(!_0x2eb257)return{};return _0x331da8[_0x562ead(0xff)](_0x2eb257,(_0x331da8[_0x562ead(0x131)](_0x2eb257)||0x0)+0x1),_0x215a54[_0x562ead(0x171)](_0x45ed2c[_0x562ead(0x167)],{'transport':_0x562ead(0xec),'toolName':_0x2eb257}),_0x215a54[_0x562ead(0x15a)]('tool_call',{'transport':_0x562ead(0xec),'toolName':_0x2eb257,'bashCommandPreview':truncatePreview(_0x9af4e4)}),_0x45ed2c['kyaWZ'](_0x2eb257,_0x45ed2c[_0x562ead(0xfc)])&&console['log'](_0x45ed2c[_0x562ead(0x123)](formatPlaywrightCliConsoleLogMessage,_0x2f07d6,_0x9af4e4,_0x2eb257)),{};},_0x1469f6=async _0x5bf10a=>{const _0x151416=_0x456cf5;if(_0x45ed2c['kyaWZ'](_0x5bf10a['hook_event_name'],_0x45ed2c['bcfKM']))return{};const _0x4ead80=_0x5bf10a;if(_0x45ed2c[_0x151416(0x122)](_0x4ead80[_0x151416(0x105)],'Bash'))return{};return await _0x215a54['trackPhaseError'](_0x151416(0xf8),_0x4ead80['error'],{'transport':_0x45ed2c[_0x151416(0x12e)],'toolName':'Bash'}),{};};return{'postToolUseHook':_0x5ead52,'postToolUseFailureHook':_0x1469f6,'commandCounts':_0x331da8};}async function runPlaywrightCliLifecycleCommand(_0x579318){const _0x1e1e60=_0x3644,_0x2e03db={'SekKg':function(_0x44886a,_0x3a76a6){return _0x44886a(_0x3a76a6);},'PoAzr':function(_0x1effc8,_0x92049){return _0x1effc8??_0x92049;},'hoUWc':function(_0x2ddcf3,_0x2ba18d,_0x10051e){return _0x2ddcf3(_0x2ba18d,_0x10051e);}},{sessionId:_0x15f56a,configPath:_0x47970f,commandArgs:_0x4f1036,env:_0x344c28,telemetry:_0x22504e,phase:_0x1a3e30,metadata:_0x21f513,timeoutMs:_0x4d6d11}=_0x579318;_0x22504e[_0x1e1e60(0x171)](_0x1a3e30,_0x21f513);try{const _0x3f807d=await _0x2e03db['SekKg'](runPlaywrightCliCommand,{'sessionId':_0x15f56a,'configPath':_0x47970f,'commandArgs':_0x4f1036,'cwd':process['cwd'](),'env':_0x344c28,'timeoutMs':_0x2e03db[_0x1e1e60(0x113)](_0x4d6d11,PLAYWRIGHT_CLI_COMMAND_TIMEOUT_MS)});_0x22504e[_0x1e1e60(0x15a)](_0x1a3e30,{..._0x21f513,'subcommand':_0x3f807d['invocation'][_0x1e1e60(0x162)],'stdoutPreview':truncatePreview(_0x3f807d[_0x1e1e60(0x154)],0x7d0),'stderrPreview':_0x2e03db[_0x1e1e60(0xf2)](truncatePreview,_0x3f807d[_0x1e1e60(0x151)],0x7d0)});}catch(_0x5d2a7c){await _0x22504e['trackPhaseError'](_0x1a3e30,_0x5d2a7c,_0x21f513);throw _0x5d2a7c;}}export async function finalizeVerifyFeatureCliSession(_0xecc237){const _0xc553b7=_0x3644,_0x967fa0={'sEkgY':'close'},{telemetry:_0x456a7a,sessionId:_0xf738f0,configPath:_0x1f56a0,cliArtifactDir:_0x3ed167,env:_0x2383f7,transportMetadata:_0x36d222}=_0xecc237,_0x1119a4=[{'phase':'playwright_cli_tracing_stop','commandArgs':[_0xc553b7(0x107)]},{'phase':_0xc553b7(0x14b),'commandArgs':[_0xc553b7(0xfa),'--filename='+buildCliArtifactPath(_0x3ed167,_0xc553b7(0x13b))]},{'phase':_0xc553b7(0x103),'commandArgs':[_0x967fa0['sEkgY']]}];for(const _0x15721b of _0x1119a4){try{await runPlaywrightCliLifecycleCommand({'sessionId':_0xf738f0,'configPath':_0x1f56a0,'commandArgs':[..._0x15721b['commandArgs']],'env':_0x2383f7,'telemetry':_0x456a7a,'phase':_0x15721b[_0xc553b7(0x156)],'metadata':_0x36d222});}catch{}}}export async function loadVerifyFeatureCliTraceUploadArtifact(_0x1f914f){const _0x5535fe=_0x3644,_0x5b46fd={'yUsda':'trace.trace.zip','xugfA':function(_0x2c5b51,_0x5e6332,_0x31fe1c){return _0x2c5b51(_0x5e6332,_0x31fe1c);}},_0x28e004=['trace.zip',_0x5b46fd[_0x5535fe(0xf9)]];for(const _0x9c50f8 of _0x28e004){const _0x122c31=_0x5b46fd[_0x5535fe(0x104)](join,_0x1f914f,_0x9c50f8);try{return{'buffer':await readFile(_0x122c31),'source':_0x122c31};}catch{}}return null;}export async function rehomeVerifyFeatureCliArtifacts(_0x23213c){const _0x2d673c=_0x3644,_0x135cd8={'MEjif':function(_0x55ac0a,_0x4ae5b1,_0x240c7c){return _0x55ac0a(_0x4ae5b1,_0x240c7c);},'BOUIS':function(_0x15f0e9,_0xbfcbb9,_0x2f2c8d){return _0x15f0e9(_0xbfcbb9,_0x2f2c8d);},'RzISq':function(_0x445626,_0x9d3b4b){return _0x445626<_0x9d3b4b;},'vNhUw':function(_0x30bc78,_0x42ff06){return _0x30bc78===_0x42ff06;}},{cwd:_0x135bb2,cliArtifactDir:_0x1f6373,startTime:_0x295ac5}=_0x23213c,_0x9dd3a1=[];await _0x135cd8[_0x2d673c(0x138)](mkdir,_0x1f6373,{'recursive':!![]});const _0xc2da1c=await readdir(_0x135bb2,{'withFileTypes':!![]});for(const _0x35c8fa of _0xc2da1c){if(!_0x35c8fa[_0x2d673c(0x16b)]()||!VERIFY_FEATURE_CLI_ARTIFACT_FILE_PATTERN[_0x2d673c(0x14d)](_0x35c8fa['name']))continue;const _0x59feb8=_0x135cd8[_0x2d673c(0x161)](join,_0x135bb2,_0x35c8fa['name']),_0x25a705=await stat(_0x59feb8);if(_0x135cd8['RzISq'](_0x25a705['mtimeMs']+0x7d0,_0x295ac5))continue;const _0x640bb6=buildCliArtifactPath(_0x1f6373,_0x35c8fa[_0x2d673c(0x146)]);if(_0x135cd8['vNhUw'](_0x59feb8,_0x640bb6))continue;await rename(_0x59feb8,_0x640bb6),_0x9dd3a1['push'](_0x35c8fa[_0x2d673c(0x146)]);}return _0x9dd3a1['sort']();}
|
|
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']();}
|
|
@@ -13,6 +13,19 @@ 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 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,10 +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. **
|
|
236
|
-
2. **Check existing profiles**: Run `ranger-cli profile ls` to see all configured profiles
|
|
237
|
-
3. **Pin a specific profile**: Use `ranger-cli profile use <profile-name>` (or pass `--profile <name>` / set `RANGER_PROFILE`)
|
|
238
|
-
4. **Refresh auth**:
|
|
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.
|
|
239
252
|
|
|
240
253
|
|
|
241
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,19 +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
|
-
|
|
11
|
+
## Profile resolution
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
When the user gives you a username + password, set them inline and run `go` — no `profile add` step:
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
3. **Ad-hoc materialization**: if `RANGER_TEST_USERNAME` is set and no profile is otherwise selected, a cloud profile is created on-the-fly using that username, with `RANGER_TEST_PASSWORD` stored alongside it. Subsequent runs reuse the same profile.
|
|
15
|
+
```bash
|
|
16
|
+
RANGER_TEST_USERNAME='alice@example.com' RANGER_TEST_PASSWORD='hunter2' \
|
|
17
|
+
ranger-cli go --url <target> --notes '<what to verify>'
|
|
18
|
+
```
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
Resolution order:
|
|
22
21
|
|
|
23
|
-
|
|
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
|
|
24
26
|
|
|
25
27
|
## Required: Active Feature Review
|
|
26
28
|
|
|
@@ -53,7 +55,7 @@ You do NOT need to manually include reviewer feedback in your `--notes` descript
|
|
|
53
55
|
|
|
54
56
|
| Option | Required | Description |
|
|
55
57
|
|--------|----------|-------------|
|
|
56
|
-
| `--profile` | No | Profile to use. Equivalent to `RANGER_PROFILE` env var. Defaults to active profile, or
|
|
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. |
|
|
57
59
|
| `--notes` | No | What to verify (defaults to scenario description) |
|
|
58
60
|
| `--scenario` | No | Scenario index to verify (skips selection prompt) |
|
|
59
61
|
| `--start-path` | No | Path to start on (appended to base URL, e.g., `/dashboard`) |
|
|
@@ -194,7 +196,7 @@ Always end the conversational turn by sharing the dashboard link whenever you ru
|
|
|
194
196
|
Run `ranger-cli list` to find feature reviews, then `ranger-cli resume <id>` to resume one.
|
|
195
197
|
|
|
196
198
|
### "No active profile"
|
|
197
|
-
Either set `RANGER_TEST_USERNAME` (and `RANGER_TEST_PASSWORD` for first-time login) and re-run
|
|
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>`.
|
|
198
200
|
|
|
199
201
|
### Verification times out
|
|
200
202
|
The agent has 59 minutes max. For very long flows, break into smaller scenarios.
|