@vforsh/argus 0.1.16 → 0.1.18
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/dist/.tsbuildinfo +1 -1
- package/dist/argus.js +19770 -17488
- package/dist/cli/defineCommand.d.ts +3 -0
- package/dist/cli/defineCommand.d.ts.map +1 -1
- package/dist/cli/defineCommand.js +11 -0
- package/dist/cli/defineCommand.js.map +1 -1
- package/dist/cli/plugins/registerPlugins.d.ts +3 -1
- package/dist/cli/plugins/registerPlugins.d.ts.map +1 -1
- package/dist/cli/plugins/registerPlugins.js +31 -12
- package/dist/cli/plugins/registerPlugins.js.map +1 -1
- package/dist/cli/register/authCommands.d.ts +3 -0
- package/dist/cli/register/authCommands.d.ts.map +1 -0
- package/dist/cli/register/authCommands.js +230 -0
- package/dist/cli/register/authCommands.js.map +1 -0
- package/dist/cli/register/chromeCommands.d.ts +3 -0
- package/dist/cli/register/chromeCommands.d.ts.map +1 -0
- package/dist/cli/register/chromeCommands.js +153 -0
- package/dist/cli/register/chromeCommands.js.map +1 -0
- package/dist/cli/register/codeCommands.d.ts +3 -0
- package/dist/cli/register/codeCommands.d.ts.map +1 -0
- package/dist/cli/register/codeCommands.js +116 -0
- package/dist/cli/register/codeCommands.js.map +1 -0
- package/dist/cli/register/configCommands.d.ts +3 -0
- package/dist/cli/register/configCommands.d.ts.map +1 -0
- package/dist/cli/register/configCommands.js +23 -0
- package/dist/cli/register/configCommands.js.map +1 -0
- package/dist/cli/register/dialogCommands.d.ts +3 -0
- package/dist/cli/register/dialogCommands.d.ts.map +1 -0
- package/dist/cli/register/dialogCommands.js +52 -0
- package/dist/cli/register/dialogCommands.js.map +1 -0
- package/dist/cli/register/domCommandBuilder.d.ts +7 -5
- package/dist/cli/register/domCommandBuilder.d.ts.map +1 -1
- package/dist/cli/register/domCommandBuilder.js +28 -23
- package/dist/cli/register/domCommandBuilder.js.map +1 -1
- package/dist/cli/register/domCommands.d.ts +3 -0
- package/dist/cli/register/domCommands.d.ts.map +1 -0
- package/dist/cli/register/domCommands.js +318 -0
- package/dist/cli/register/domCommands.js.map +1 -0
- package/dist/cli/register/evalCommands.d.ts +3 -0
- package/dist/cli/register/evalCommands.d.ts.map +1 -0
- package/dist/cli/register/evalCommands.js +173 -0
- package/dist/cli/register/evalCommands.js.map +1 -0
- package/dist/cli/register/extensionCommands.d.ts +3 -0
- package/dist/cli/register/extensionCommands.d.ts.map +1 -0
- package/dist/cli/register/extensionCommands.js +115 -0
- package/dist/cli/register/extensionCommands.js.map +1 -0
- package/dist/cli/register/fillCommand.d.ts +3 -0
- package/dist/cli/register/fillCommand.d.ts.map +1 -0
- package/dist/cli/register/fillCommand.js +44 -0
- package/dist/cli/register/fillCommand.js.map +1 -0
- package/dist/cli/register/hoverCommand.d.ts +3 -0
- package/dist/cli/register/hoverCommand.d.ts.map +1 -0
- package/dist/cli/register/hoverCommand.js +27 -0
- package/dist/cli/register/hoverCommand.js.map +1 -0
- package/dist/cli/register/index.d.ts.map +1 -1
- package/dist/cli/register/index.js +51 -52
- package/dist/cli/register/index.js.map +1 -1
- package/dist/cli/register/keydownCommand.d.ts +3 -0
- package/dist/cli/register/keydownCommand.d.ts.map +1 -0
- package/dist/cli/register/keydownCommand.js +21 -0
- package/dist/cli/register/keydownCommand.js.map +1 -0
- package/dist/cli/register/locateCommands.d.ts +3 -0
- package/dist/cli/register/locateCommands.d.ts.map +1 -0
- package/dist/cli/register/locateCommands.js +60 -0
- package/dist/cli/register/locateCommands.js.map +1 -0
- package/dist/cli/register/logsCommands.d.ts +3 -0
- package/dist/cli/register/logsCommands.d.ts.map +1 -0
- package/dist/cli/register/logsCommands.js +67 -0
- package/dist/cli/register/logsCommands.js.map +1 -0
- package/dist/cli/register/netCommands.d.ts +3 -0
- package/dist/cli/register/netCommands.d.ts.map +1 -0
- package/dist/cli/register/netCommands.js +442 -0
- package/dist/cli/register/netCommands.js.map +1 -0
- package/dist/cli/register/pageCommands.d.ts +3 -0
- package/dist/cli/register/pageCommands.d.ts.map +1 -0
- package/dist/cli/register/pageCommands.js +188 -0
- package/dist/cli/register/pageCommands.js.map +1 -0
- package/dist/cli/register/pluginCommands.d.ts +3 -0
- package/dist/cli/register/pluginCommands.d.ts.map +1 -0
- package/dist/cli/register/pluginCommands.js +51 -0
- package/dist/cli/register/pluginCommands.js.map +1 -0
- package/dist/cli/register/quickAccessCommands.d.ts +3 -0
- package/dist/cli/register/quickAccessCommands.d.ts.map +1 -0
- package/dist/cli/register/quickAccessCommands.js +138 -0
- package/dist/cli/register/quickAccessCommands.js.map +1 -0
- package/dist/cli/register/scrollToCommand.d.ts +3 -0
- package/dist/cli/register/scrollToCommand.d.ts.map +1 -0
- package/dist/cli/register/scrollToCommand.js +30 -0
- package/dist/cli/register/scrollToCommand.js.map +1 -0
- package/dist/cli/register/snapshotCommands.d.ts +3 -0
- package/dist/cli/register/snapshotCommands.d.ts.map +1 -0
- package/dist/cli/register/snapshotCommands.js +57 -0
- package/dist/cli/register/snapshotCommands.js.map +1 -0
- package/dist/cli/register/storageCommands.d.ts +3 -0
- package/dist/cli/register/storageCommands.d.ts.map +1 -0
- package/dist/cli/register/storageCommands.js +78 -0
- package/dist/cli/register/storageCommands.js.map +1 -0
- package/dist/cli/register/throttleCommands.d.ts +3 -0
- package/dist/cli/register/throttleCommands.d.ts.map +1 -0
- package/dist/cli/register/throttleCommands.js +48 -0
- package/dist/cli/register/throttleCommands.js.map +1 -0
- package/dist/cli/register/traceCommands.d.ts +3 -0
- package/dist/cli/register/traceCommands.d.ts.map +1 -0
- package/dist/cli/register/traceCommands.js +72 -0
- package/dist/cli/register/traceCommands.js.map +1 -0
- package/dist/cli/register/watcherCommands.d.ts +3 -0
- package/dist/cli/register/watcherCommands.d.ts.map +1 -0
- package/dist/cli/register/watcherCommands.js +180 -0
- package/dist/cli/register/watcherCommands.js.map +1 -0
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/code.d.ts +2 -2
- package/dist/commands/code.d.ts.map +1 -1
- package/dist/commands/code.js +42 -45
- package/dist/commands/code.js.map +1 -1
- package/dist/commands/codeEdit.d.ts.map +1 -1
- package/dist/commands/codeEdit.js.map +1 -1
- package/dist/commands/eval.d.ts +9 -1
- package/dist/commands/eval.d.ts.map +1 -1
- package/dist/commands/eval.js +20 -10
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/evalArgs.d.ts +31 -0
- package/dist/commands/evalArgs.d.ts.map +1 -0
- package/dist/commands/evalArgs.js +103 -0
- package/dist/commands/evalArgs.js.map +1 -0
- package/dist/commands/evalBundle.d.ts +4 -5
- package/dist/commands/evalBundle.d.ts.map +1 -1
- package/dist/commands/evalBundle.js +88 -69
- package/dist/commands/evalBundle.js.map +1 -1
- package/dist/commands/evalModuleSyntax.d.ts +6 -0
- package/dist/commands/evalModuleSyntax.d.ts.map +1 -0
- package/dist/commands/evalModuleSyntax.js +33 -0
- package/dist/commands/evalModuleSyntax.js.map +1 -0
- package/dist/commands/evalPolling.d.ts +1 -1
- package/dist/commands/evalPolling.d.ts.map +1 -1
- package/dist/commands/evalPolling.js +1 -1
- package/dist/commands/evalPolling.js.map +1 -1
- package/dist/commands/evalResultOutput.d.ts +25 -0
- package/dist/commands/evalResultOutput.d.ts.map +1 -0
- package/dist/commands/evalResultOutput.js +85 -0
- package/dist/commands/evalResultOutput.js.map +1 -0
- package/dist/commands/evalShared.d.ts +42 -17
- package/dist/commands/evalShared.d.ts.map +1 -1
- package/dist/commands/evalShared.js +96 -53
- package/dist/commands/evalShared.js.map +1 -1
- package/dist/commands/evalUntil.d.ts +7 -1
- package/dist/commands/evalUntil.d.ts.map +1 -1
- package/dist/commands/evalUntil.js +16 -27
- package/dist/commands/evalUntil.js.map +1 -1
- package/dist/commands/extension/attach.d.ts +3 -1
- package/dist/commands/extension/attach.d.ts.map +1 -1
- package/dist/commands/extension/attach.js +13 -78
- package/dist/commands/extension/attach.js.map +1 -1
- package/dist/commands/extension/show.d.ts +12 -0
- package/dist/commands/extension/show.d.ts.map +1 -0
- package/dist/commands/extension/show.js +208 -0
- package/dist/commands/extension/show.js.map +1 -0
- package/dist/commands/extension/tabSelection.d.ts +45 -0
- package/dist/commands/extension/tabSelection.d.ts.map +1 -0
- package/dist/commands/extension/tabSelection.js +76 -0
- package/dist/commands/extension/tabSelection.js.map +1 -0
- package/dist/commands/locate.d.ts.map +1 -1
- package/dist/commands/locate.js.map +1 -1
- package/dist/commands/netMock.d.ts +34 -0
- package/dist/commands/netMock.d.ts.map +1 -0
- package/dist/commands/netMock.js +323 -0
- package/dist/commands/netMock.js.map +1 -0
- package/dist/commands/netSse.d.ts +1 -1
- package/dist/commands/netSse.d.ts.map +1 -1
- package/dist/commands/netSse.js +19 -23
- package/dist/commands/netSse.js.map +1 -1
- package/dist/commands/netWebSocket.d.ts +2 -2
- package/dist/commands/netWebSocket.d.ts.map +1 -1
- package/dist/commands/netWebSocket.js +42 -55
- package/dist/commands/netWebSocket.js.map +1 -1
- package/dist/commands/pluginConfig.d.ts +1 -0
- package/dist/commands/pluginConfig.d.ts.map +1 -1
- package/dist/commands/pluginConfig.js +12 -2
- package/dist/commands/pluginConfig.js.map +1 -1
- package/dist/commands/start.d.ts +2 -2
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/startShared.d.ts +1 -1
- package/dist/commands/startShared.d.ts.map +1 -1
- package/dist/commands/watcherSession.d.ts +3 -3
- package/dist/commands/watcherSession.d.ts.map +1 -1
- package/dist/commands/watcherSession.js.map +1 -1
- package/dist/commands/watcherStart.d.ts +2 -2
- package/dist/commands/watcherStart.d.ts.map +1 -1
- package/dist/config/argusHome.d.ts +3 -0
- package/dist/config/argusHome.d.ts.map +1 -0
- package/dist/config/argusHome.js +11 -0
- package/dist/config/argusHome.js.map +1 -0
- package/dist/config/loadConfig.d.ts +13 -0
- package/dist/config/loadConfig.d.ts.map +1 -0
- package/dist/config/loadConfig.js +59 -0
- package/dist/config/loadConfig.js.map +1 -0
- package/dist/config/mergeConfig.d.ts +34 -0
- package/dist/config/mergeConfig.d.ts.map +1 -0
- package/dist/config/mergeConfig.js +57 -0
- package/dist/config/mergeConfig.js.map +1 -0
- package/dist/config/types.d.ts +51 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/validateConfig.d.ts +14 -0
- package/dist/config/validateConfig.d.ts.map +1 -0
- package/dist/config/{argusConfig.js → validateConfig.js} +136 -244
- package/dist/config/validateConfig.js.map +1 -0
- package/dist/eval/evalClient.d.ts +2 -0
- package/dist/eval/evalClient.d.ts.map +1 -1
- package/dist/eval/evalClient.js +26 -2
- package/dist/eval/evalClient.js.map +1 -1
- package/package.json +3 -1
- package/dist/cli/register/registerAuth.d.ts +0 -3
- package/dist/cli/register/registerAuth.d.ts.map +0 -1
- package/dist/cli/register/registerAuth.js +0 -133
- package/dist/cli/register/registerAuth.js.map +0 -1
- package/dist/cli/register/registerChrome.d.ts +0 -3
- package/dist/cli/register/registerChrome.d.ts.map +0 -1
- package/dist/cli/register/registerChrome.js +0 -118
- package/dist/cli/register/registerChrome.js.map +0 -1
- package/dist/cli/register/registerCode.d.ts +0 -3
- package/dist/cli/register/registerCode.d.ts.map +0 -1
- package/dist/cli/register/registerCode.js +0 -74
- package/dist/cli/register/registerCode.js.map +0 -1
- package/dist/cli/register/registerConfig.d.ts +0 -3
- package/dist/cli/register/registerConfig.d.ts.map +0 -1
- package/dist/cli/register/registerConfig.js +0 -14
- package/dist/cli/register/registerConfig.js.map +0 -1
- package/dist/cli/register/registerDialog.d.ts +0 -3
- package/dist/cli/register/registerDialog.d.ts.map +0 -1
- package/dist/cli/register/registerDialog.js +0 -45
- package/dist/cli/register/registerDialog.js.map +0 -1
- package/dist/cli/register/registerDom.d.ts +0 -3
- package/dist/cli/register/registerDom.d.ts.map +0 -1
- package/dist/cli/register/registerDom.js +0 -284
- package/dist/cli/register/registerDom.js.map +0 -1
- package/dist/cli/register/registerEval.d.ts +0 -3
- package/dist/cli/register/registerEval.d.ts.map +0 -1
- package/dist/cli/register/registerEval.js +0 -149
- package/dist/cli/register/registerEval.js.map +0 -1
- package/dist/cli/register/registerExtension.d.ts +0 -3
- package/dist/cli/register/registerExtension.d.ts.map +0 -1
- package/dist/cli/register/registerExtension.js +0 -72
- package/dist/cli/register/registerExtension.js.map +0 -1
- package/dist/cli/register/registerFill.d.ts +0 -3
- package/dist/cli/register/registerFill.d.ts.map +0 -1
- package/dist/cli/register/registerFill.js +0 -31
- package/dist/cli/register/registerFill.js.map +0 -1
- package/dist/cli/register/registerHover.d.ts +0 -3
- package/dist/cli/register/registerHover.d.ts.map +0 -1
- package/dist/cli/register/registerHover.js +0 -21
- package/dist/cli/register/registerHover.js.map +0 -1
- package/dist/cli/register/registerKeydown.d.ts +0 -3
- package/dist/cli/register/registerKeydown.d.ts.map +0 -1
- package/dist/cli/register/registerKeydown.js +0 -20
- package/dist/cli/register/registerKeydown.js.map +0 -1
- package/dist/cli/register/registerLocate.d.ts +0 -3
- package/dist/cli/register/registerLocate.d.ts.map +0 -1
- package/dist/cli/register/registerLocate.js +0 -48
- package/dist/cli/register/registerLocate.js.map +0 -1
- package/dist/cli/register/registerLogs.d.ts +0 -3
- package/dist/cli/register/registerLogs.d.ts.map +0 -1
- package/dist/cli/register/registerLogs.js +0 -64
- package/dist/cli/register/registerLogs.js.map +0 -1
- package/dist/cli/register/registerNet.d.ts +0 -3
- package/dist/cli/register/registerNet.d.ts.map +0 -1
- package/dist/cli/register/registerNet.js +0 -287
- package/dist/cli/register/registerNet.js.map +0 -1
- package/dist/cli/register/registerPage.d.ts +0 -3
- package/dist/cli/register/registerPage.d.ts.map +0 -1
- package/dist/cli/register/registerPage.js +0 -123
- package/dist/cli/register/registerPage.js.map +0 -1
- package/dist/cli/register/registerPlugin.d.ts +0 -3
- package/dist/cli/register/registerPlugin.d.ts.map +0 -1
- package/dist/cli/register/registerPlugin.js +0 -34
- package/dist/cli/register/registerPlugin.js.map +0 -1
- package/dist/cli/register/registerQuickAccess.d.ts +0 -3
- package/dist/cli/register/registerQuickAccess.d.ts.map +0 -1
- package/dist/cli/register/registerQuickAccess.js +0 -112
- package/dist/cli/register/registerQuickAccess.js.map +0 -1
- package/dist/cli/register/registerScrollTo.d.ts +0 -3
- package/dist/cli/register/registerScrollTo.d.ts.map +0 -1
- package/dist/cli/register/registerScrollTo.js +0 -22
- package/dist/cli/register/registerScrollTo.js.map +0 -1
- package/dist/cli/register/registerSnapshot.d.ts +0 -3
- package/dist/cli/register/registerSnapshot.d.ts.map +0 -1
- package/dist/cli/register/registerSnapshot.js +0 -38
- package/dist/cli/register/registerSnapshot.js.map +0 -1
- package/dist/cli/register/registerStorage.d.ts +0 -3
- package/dist/cli/register/registerStorage.d.ts.map +0 -1
- package/dist/cli/register/registerStorage.js +0 -61
- package/dist/cli/register/registerStorage.js.map +0 -1
- package/dist/cli/register/registerThrottle.d.ts +0 -3
- package/dist/cli/register/registerThrottle.d.ts.map +0 -1
- package/dist/cli/register/registerThrottle.js +0 -33
- package/dist/cli/register/registerThrottle.js.map +0 -1
- package/dist/cli/register/registerTrace.d.ts +0 -3
- package/dist/cli/register/registerTrace.d.ts.map +0 -1
- package/dist/cli/register/registerTrace.js +0 -57
- package/dist/cli/register/registerTrace.js.map +0 -1
- package/dist/cli/register/registerWatcher.d.ts +0 -3
- package/dist/cli/register/registerWatcher.d.ts.map +0 -1
- package/dist/cli/register/registerWatcher.js +0 -135
- package/dist/cli/register/registerWatcher.js.map +0 -1
- package/dist/config/argusConfig.d.ts +0 -76
- package/dist/config/argusConfig.d.ts.map +0 -1
- package/dist/config/argusConfig.js.map +0 -1
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { runChromeTargets, runChromeOpen, runChromeActivate, runChromeClose } from '../../commands/chrome.js';
|
|
2
|
-
import { runPageReload } from '../../commands/page.js';
|
|
3
|
-
import { runPageEmulationSet, runPageEmulationClear, runPageEmulationStatus } from '../../commands/pageEmulation.js';
|
|
4
|
-
import { runPageShow, runPageHide } from '../../commands/pageVisibility.js';
|
|
5
|
-
import { listPresetNames } from '../../emulation/devices.js';
|
|
6
|
-
import { collectParam } from '../validation.js';
|
|
7
|
-
export function registerPage(program) {
|
|
8
|
-
const page = program.command('page').alias('tab').description('Page/tab management commands');
|
|
9
|
-
page.command('ls')
|
|
10
|
-
.aliases(['targets', 'list'])
|
|
11
|
-
.description('List Chrome targets (tabs, extensions, etc.)')
|
|
12
|
-
.option('--type <type>', 'Filter by target type (e.g. page, worker, iframe)')
|
|
13
|
-
.option('--tree', 'Show targets as a tree with parent-child relationships')
|
|
14
|
-
.option('--cdp <host:port>', 'CDP host:port')
|
|
15
|
-
.option('--id <watcherId>', 'Use chrome config from a registered watcher')
|
|
16
|
-
.option('--json', 'Output JSON for automation')
|
|
17
|
-
.addHelpText('after', '\nExamples:\n $ argus page ls\n $ argus page ls --type page\n $ argus page ls --type iframe\n $ argus page ls --tree\n $ argus page ls --json\n $ argus page ls --id app\n')
|
|
18
|
-
.action(async (options) => {
|
|
19
|
-
await runChromeTargets(options);
|
|
20
|
-
});
|
|
21
|
-
page.command('open')
|
|
22
|
-
.alias('new')
|
|
23
|
-
.description('Open a new tab in Chrome')
|
|
24
|
-
.requiredOption('--url <url>', 'URL to open')
|
|
25
|
-
.option('--cdp <host:port>', 'CDP host:port')
|
|
26
|
-
.option('--id <watcherId>', 'Use chrome config from a registered watcher')
|
|
27
|
-
.option('--json', 'Output JSON for automation')
|
|
28
|
-
.addHelpText('after', '\nExamples:\n $ argus page open --url http://localhost:3000\n $ argus page open --url localhost:3000\n $ argus page open --url http://example.com --json\n')
|
|
29
|
-
.action(async (options) => {
|
|
30
|
-
await runChromeOpen(options);
|
|
31
|
-
});
|
|
32
|
-
page.command('activate')
|
|
33
|
-
.description('Activate (focus) a Chrome target')
|
|
34
|
-
.argument('[targetId]', 'Target ID to activate')
|
|
35
|
-
.option('--title <substring>', 'Case-insensitive substring match against target title')
|
|
36
|
-
.option('--url <substring>', 'Case-insensitive substring match against target URL')
|
|
37
|
-
.option('--match <substring>', 'Case-insensitive substring match against title + URL')
|
|
38
|
-
.option('--cdp <host:port>', 'CDP host:port')
|
|
39
|
-
.option('--id <watcherId>', 'Use chrome config from a registered watcher')
|
|
40
|
-
.option('--json', 'Output JSON for automation')
|
|
41
|
-
.addHelpText('after', '\nExamples:\n $ argus page activate ABCD1234\n $ argus page activate --title "Docs"\n $ argus page activate --url localhost:3000\n $ argus page activate --match "Argus" --json\n')
|
|
42
|
-
.action(async (targetId, options) => {
|
|
43
|
-
await runChromeActivate({ ...options, targetId });
|
|
44
|
-
});
|
|
45
|
-
page.command('close')
|
|
46
|
-
.description('Close a Chrome target')
|
|
47
|
-
.argument('<targetId>', 'Target ID to close')
|
|
48
|
-
.option('--cdp <host:port>', 'CDP host:port')
|
|
49
|
-
.option('--id <watcherId>', 'Use chrome config from a registered watcher')
|
|
50
|
-
.option('--json', 'Output JSON for automation')
|
|
51
|
-
.addHelpText('after', '\nExamples:\n $ argus page close ABCD1234\n $ argus page close ABCD1234 --json\n')
|
|
52
|
-
.action(async (targetId, options) => {
|
|
53
|
-
await runChromeClose({ ...options, targetId });
|
|
54
|
-
});
|
|
55
|
-
page.command('show')
|
|
56
|
-
.description('Lock the attached page as shown+focused (unthrottles rAF/timers when window is covered)')
|
|
57
|
-
.argument('[id]', 'Watcher ID')
|
|
58
|
-
.option('--json', 'Output JSON for automation')
|
|
59
|
-
.addHelpText('after', '\nExamples:\n $ argus page show app\n $ argus page show app --json\n\nForces focus emulation on the attached page so boot/preview flows keep\nmaking progress even if the Chrome window is backgrounded or covered.\nLock persists until `argus page hide <id>`; survives watcher reattach.\n')
|
|
60
|
-
.action(async (id, options) => {
|
|
61
|
-
await runPageShow(id, options);
|
|
62
|
-
});
|
|
63
|
-
page.command('hide')
|
|
64
|
-
.description('Release the visibility lock (restore default Chrome throttling behavior)')
|
|
65
|
-
.argument('[id]', 'Watcher ID')
|
|
66
|
-
.option('--json', 'Output JSON for automation')
|
|
67
|
-
.addHelpText('after', '\nExamples:\n $ argus page hide app\n $ argus page hide app --json\n')
|
|
68
|
-
.action(async (id, options) => {
|
|
69
|
-
await runPageHide(id, options);
|
|
70
|
-
});
|
|
71
|
-
page.command('reload')
|
|
72
|
-
.description('Reload a Chrome target')
|
|
73
|
-
.argument('[targetId]', 'Target ID to reload (omit with --id to reload the attached page)')
|
|
74
|
-
.option('--cdp <host:port>', 'CDP host:port')
|
|
75
|
-
.option('--id <watcherId>', 'Use chrome config from a registered watcher')
|
|
76
|
-
.option('--param <key=value>', 'Update query param (repeatable, overwrite semantics)', collectParam, [])
|
|
77
|
-
.option('--params <a=b&c=d>', 'Update query params from string (overwrite semantics)')
|
|
78
|
-
.option('--json', 'Output JSON for automation')
|
|
79
|
-
.addHelpText('after', '\nExamples:\n $ argus page reload ABCD1234\n $ argus page reload --id app\n $ argus page reload ABCD1234 --json\n $ argus page reload ABCD1234 --param foo=bar\n $ argus page reload ABCD1234 --param foo=bar --param baz=qux\n $ argus page reload ABCD1234 --params "a=1&b=2"\n')
|
|
80
|
-
.action(async (targetId, options) => {
|
|
81
|
-
await runPageReload({ ...options, targetId });
|
|
82
|
-
});
|
|
83
|
-
// -- emulation subcommand group --
|
|
84
|
-
const emulation = page.command('emulation').alias('emu').description('Device emulation controls (viewport, touch, user-agent)');
|
|
85
|
-
const presetList = listPresetNames().join(', ');
|
|
86
|
-
emulation
|
|
87
|
-
.command('set')
|
|
88
|
-
.description('Set device emulation on the watcher-attached page')
|
|
89
|
-
.argument('[id]', 'Watcher ID')
|
|
90
|
-
.option('--device <name>', `Device preset (${presetList})`)
|
|
91
|
-
.option('--width <n>', 'Viewport width (px)')
|
|
92
|
-
.option('--height <n>', 'Viewport height (px)')
|
|
93
|
-
.option('--dpr <n>', 'Device pixel ratio')
|
|
94
|
-
.option('--mobile', 'Enable mobile emulation')
|
|
95
|
-
.option('--no-mobile', 'Disable mobile emulation')
|
|
96
|
-
.option('--touch', 'Enable touch emulation')
|
|
97
|
-
.option('--no-touch', 'Disable touch emulation')
|
|
98
|
-
.option('--ua <string>', 'Override user-agent string')
|
|
99
|
-
.option('--json', 'Output JSON for automation')
|
|
100
|
-
.addHelpText('after', `\nExamples:\n $ argus page emulation set app --device iphone-14\n $ argus page emulation set app --width 1600 --height 900\n $ argus page emulation set app --device pixel-7 --width 500\n $ argus page emu set app --device desktop-1440\n\nAvailable devices: ${presetList}\n`)
|
|
101
|
-
.action(async (id, options) => {
|
|
102
|
-
await runPageEmulationSet(id, options);
|
|
103
|
-
});
|
|
104
|
-
emulation
|
|
105
|
-
.command('clear')
|
|
106
|
-
.description('Clear device emulation (restore defaults)')
|
|
107
|
-
.argument('[id]', 'Watcher ID')
|
|
108
|
-
.option('--json', 'Output JSON for automation')
|
|
109
|
-
.addHelpText('after', '\nExamples:\n $ argus page emulation clear app\n $ argus page emu clear app --json\n')
|
|
110
|
-
.action(async (id, options) => {
|
|
111
|
-
await runPageEmulationClear(id, options);
|
|
112
|
-
});
|
|
113
|
-
emulation
|
|
114
|
-
.command('status')
|
|
115
|
-
.description('Show current emulation state')
|
|
116
|
-
.argument('[id]', 'Watcher ID')
|
|
117
|
-
.option('--json', 'Output JSON for automation')
|
|
118
|
-
.addHelpText('after', '\nExamples:\n $ argus page emulation status app\n $ argus page emu status app --json\n')
|
|
119
|
-
.action(async (id, options) => {
|
|
120
|
-
await runPageEmulationStatus(id, options);
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
//# sourceMappingURL=registerPage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registerPage.js","sourceRoot":"","sources":["../../../src/cli/register/registerPage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registerPlugin.d.ts","sourceRoot":"","sources":["../../../src/cli/register/registerPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoCrD"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { runPluginList } from '../../commands/pluginList.js';
|
|
2
|
-
import { runPluginAdd, runPluginRemove } from '../../commands/pluginConfig.js';
|
|
3
|
-
export function registerPlugin(program) {
|
|
4
|
-
const plugin = program.command('plugin').alias('plugins').description('Manage Argus CLI plugins');
|
|
5
|
-
plugin
|
|
6
|
-
.command('list')
|
|
7
|
-
.alias('ls')
|
|
8
|
-
.description('List plugins discovered for this invocation')
|
|
9
|
-
.option('--json', 'Output JSON for automation')
|
|
10
|
-
.addHelpText('after', '\nExamples:\n $ argus plugin list\n $ argus --plugin ./plugins/foo.js plugin list --json\n')
|
|
11
|
-
.action((options) => {
|
|
12
|
-
runPluginList(options);
|
|
13
|
-
});
|
|
14
|
-
plugin
|
|
15
|
-
.command('add <specifier>')
|
|
16
|
-
.description('Add a plugin specifier or alias to the Argus config')
|
|
17
|
-
.option('--path <file>', 'Config file to update (default: discovered config or .argus/config.json)')
|
|
18
|
-
.option('--json', 'Output JSON for automation')
|
|
19
|
-
.addHelpText('after', '\nExamples:\n $ argus plugin add gsheets\n $ argus plugin add gs=@vforsh/argus-plugin-google-sheets\n $ argus plugin add ./plugins/foo.js\n')
|
|
20
|
-
.action(async (specifier, options) => {
|
|
21
|
-
await runPluginAdd(specifier, options);
|
|
22
|
-
});
|
|
23
|
-
plugin
|
|
24
|
-
.command('remove <specifierOrName>')
|
|
25
|
-
.alias('rm')
|
|
26
|
-
.description('Remove a plugin from the Argus config')
|
|
27
|
-
.option('--path <file>', 'Config file to update (default: discovered config or .argus/config.json)')
|
|
28
|
-
.option('--json', 'Output JSON for automation')
|
|
29
|
-
.addHelpText('after', '\nExamples:\n $ argus plugin remove @vforsh/argus-plugin-google-sheets\n $ argus plugin remove google-sheets\n')
|
|
30
|
-
.action(async (specifierOrName, options) => {
|
|
31
|
-
await runPluginRemove(specifierOrName, options);
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=registerPlugin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registerPlugin.js","sourceRoot":"","sources":["../../../src/cli/register/registerPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAE9E,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAA;IAEjG,MAAM;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;SAC9C,WAAW,CAAC,OAAO,EAAE,8FAA8F,CAAC;SACpH,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QACnB,aAAa,CAAC,OAAO,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEH,MAAM;SACJ,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,qDAAqD,CAAC;SAClE,MAAM,CAAC,eAAe,EAAE,0EAA0E,CAAC;SACnG,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;SAC9C,WAAW,CACX,OAAO,EACP,gJAAgJ,CAChJ;SACA,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QACpC,MAAM,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEH,MAAM;SACJ,OAAO,CAAC,0BAA0B,CAAC;SACnC,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,eAAe,EAAE,0EAA0E,CAAC;SACnG,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;SAC9C,WAAW,CAAC,OAAO,EAAE,kHAAkH,CAAC;SACxI,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE;QAC1C,MAAM,eAAe,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registerQuickAccess.d.ts","sourceRoot":"","sources":["../../../src/cli/register/registerQuickAccess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAYxC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyF1D"}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { runList } from '../../commands/list.js';
|
|
2
|
-
import { runStart } from '../../commands/start.js';
|
|
3
|
-
import { runDoctor } from '../../commands/doctor.js';
|
|
4
|
-
import { runReload } from '../../commands/reload.js';
|
|
5
|
-
import { loadArgusConfig, mergeChromeStartOptionsWithConfig, mergeWatcherStartOptionsWithConfig, resolveArgusConfigPath, } from '../../config/argusConfig.js';
|
|
6
|
-
export function registerQuickAccess(program) {
|
|
7
|
-
program
|
|
8
|
-
.command('list')
|
|
9
|
-
.alias('ls')
|
|
10
|
-
.description('List watchers and Chrome instances')
|
|
11
|
-
.option('--json', 'Output JSON for automation')
|
|
12
|
-
.option('--by-cwd <substring>', 'Filter watchers by working directory substring')
|
|
13
|
-
.addHelpText('after', '\nExamples:\n $ argus list\n $ argus ls\n $ argus list --json\n $ argus list --by-cwd my-project\n')
|
|
14
|
-
.action(async (options) => {
|
|
15
|
-
await runList(options);
|
|
16
|
-
});
|
|
17
|
-
program
|
|
18
|
-
.command('start')
|
|
19
|
-
.description('Launch Chrome and attach a watcher in one command')
|
|
20
|
-
.requiredOption('--id <watcherId>', 'Watcher id')
|
|
21
|
-
.option('--url <url>', 'URL to open in Chrome and match for the watcher')
|
|
22
|
-
.option('--auth-from <watcherId>', 'Clone auth state from another watcher into a fresh temp Chrome session before attaching')
|
|
23
|
-
.option('--profile <type>', 'Chrome profile mode: temp, default-full, default-medium, or default-lite (default: default-lite)')
|
|
24
|
-
.option('--dev-tools', 'Open DevTools for new tabs')
|
|
25
|
-
.option('--headless', 'Run Chrome in headless mode')
|
|
26
|
-
.option('--type <type>', 'Filter by target type (e.g., page, iframe, worker)')
|
|
27
|
-
.option('--origin <origin>', 'Match against URL origin only (protocol + host + port)')
|
|
28
|
-
.option('--target <targetId>', 'Connect to a specific target by its Chrome target ID')
|
|
29
|
-
.option('--parent <pattern>', 'Filter by parent target URL pattern')
|
|
30
|
-
.option('--no-page-indicator', 'Disable the in-page watcher indicator')
|
|
31
|
-
.option('--inject <path>', 'Path to JavaScript file to inject on watcher attach')
|
|
32
|
-
.option('--artifacts <dir>', 'Artifacts base directory')
|
|
33
|
-
.option('--config <path>', 'Path to Argus config file')
|
|
34
|
-
.option('--json', 'Output JSON for automation')
|
|
35
|
-
.addHelpText('after', '\nExamples:\n $ argus start --id app --url localhost:3000\n $ argus start --id app --auth-from extension-2\n $ argus start --id app --auth-from extension-2 --url https://target.app/\n $ argus start --id app --url localhost:3000 --dev-tools\n $ argus start --id app --url localhost:3000 --profile temp\n $ argus start --id app --type page --headless\n $ argus start --id app --url localhost:3000 --inject ./debug.js\n $ argus start --id app --url localhost:3000 --json\n')
|
|
36
|
-
.action(async (options, command) => {
|
|
37
|
-
const { config: configPath, inject, ...rest } = options;
|
|
38
|
-
const cliOptions = {
|
|
39
|
-
...rest,
|
|
40
|
-
inject: inject ? { file: inject } : undefined,
|
|
41
|
-
};
|
|
42
|
-
if (!normalizeStartAuthOptions(command, cliOptions)) {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
const resolvedPath = resolveArgusConfigPath({ cliPath: configPath, cwd: process.cwd() });
|
|
46
|
-
if (!resolvedPath) {
|
|
47
|
-
if (configPath) {
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
await runStart(applyStartAuthOverrides(command, cliOptions));
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
const configResult = loadArgusConfig(resolvedPath);
|
|
54
|
-
if (!configResult) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
const mergedChrome = mergeChromeStartOptionsWithConfig(cliOptions, command, configResult);
|
|
58
|
-
if (!mergedChrome) {
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
const mergedWatcher = mergeWatcherStartOptionsWithConfig(mergedChrome, command, configResult);
|
|
62
|
-
if (!mergedWatcher) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
await runStart(applyStartAuthOverrides(command, mergedWatcher));
|
|
66
|
-
});
|
|
67
|
-
program
|
|
68
|
-
.command('doctor')
|
|
69
|
-
.description('Run environment diagnostics for Argus')
|
|
70
|
-
.option('--json', 'Output JSON for automation')
|
|
71
|
-
.addHelpText('after', '\nExamples:\n $ argus doctor\n $ argus doctor --json\n')
|
|
72
|
-
.action(async (options) => {
|
|
73
|
-
await runDoctor(options);
|
|
74
|
-
});
|
|
75
|
-
program
|
|
76
|
-
.command('reload')
|
|
77
|
-
.argument('[id]', 'Watcher id to reload')
|
|
78
|
-
.description('Reload the page attached to a watcher')
|
|
79
|
-
.option('--ignore-cache', 'Bypass browser cache')
|
|
80
|
-
.option('--json', 'Output JSON for automation')
|
|
81
|
-
.addHelpText('after', '\nExamples:\n $ argus reload app\n $ argus reload app --ignore-cache\n $ argus reload app --json\n')
|
|
82
|
-
.action(async (id, options) => {
|
|
83
|
-
await runReload(id, options);
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
const normalizeStartAuthOptions = (command, options) => {
|
|
87
|
-
if (!options.authFrom) {
|
|
88
|
-
return true;
|
|
89
|
-
}
|
|
90
|
-
if (getOptionValueSource(command, 'profile') === 'cli') {
|
|
91
|
-
if (options.profile && options.profile !== 'temp') {
|
|
92
|
-
console.error('Cannot combine --auth-from with a copied Chrome profile. Use --profile temp or omit --profile.');
|
|
93
|
-
process.exitCode = 2;
|
|
94
|
-
return false;
|
|
95
|
-
}
|
|
96
|
-
return true;
|
|
97
|
-
}
|
|
98
|
-
options.profile = undefined;
|
|
99
|
-
return true;
|
|
100
|
-
};
|
|
101
|
-
const applyStartAuthOverrides = (command, options) => {
|
|
102
|
-
if (!options.authFrom) {
|
|
103
|
-
return options;
|
|
104
|
-
}
|
|
105
|
-
options.profile = 'temp';
|
|
106
|
-
if (getOptionValueSource(command, 'url') !== 'cli') {
|
|
107
|
-
options.url = undefined;
|
|
108
|
-
}
|
|
109
|
-
return options;
|
|
110
|
-
};
|
|
111
|
-
const getOptionValueSource = (command, key) => command.getOptionValueSource(key) ?? '';
|
|
112
|
-
//# sourceMappingURL=registerQuickAccess.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registerQuickAccess.js","sourceRoot":"","sources":["../../../src/cli/register/registerQuickAccess.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registerScrollTo.d.ts","sourceRoot":"","sources":["../../../src/cli/register/registerScrollTo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoBvD"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { runDomScrollTo } from '../../commands/domScrollTo.js';
|
|
2
|
-
import { resolveTestId } from '../../commands/resolveTestId.js';
|
|
3
|
-
export function registerScrollTo(program) {
|
|
4
|
-
program
|
|
5
|
-
.command('scroll-to')
|
|
6
|
-
.argument('[id]', 'Watcher id to query')
|
|
7
|
-
.description('Scroll the viewport or elements into view / to a position')
|
|
8
|
-
.option('--selector <css>', 'CSS selector to match element(s)')
|
|
9
|
-
.option('--testid <id>', 'Shorthand for --selector "[data-testid=\'<id>\']"')
|
|
10
|
-
.option('--to <x,y>', 'Scroll to absolute position (viewport or element)')
|
|
11
|
-
.option('--by <x,y>', 'Scroll by delta (viewport or element)')
|
|
12
|
-
.option('--all', 'Allow multiple matches (default: error if >1 match)')
|
|
13
|
-
.option('--text <string>', 'Filter by textContent (trimmed). Supports /regex/flags syntax')
|
|
14
|
-
.option('--json', 'Output JSON for automation')
|
|
15
|
-
.addHelpText('after', '\nExamples:\n $ argus scroll-to app --selector "#footer"\n $ argus scroll-to app --testid "footer"\n $ argus scroll-to app --to 0,1000\n $ argus scroll-to app --by 0,500\n $ argus scroll-to app --selector ".panel" --to 0,1000\n $ argus scroll-to app --selector ".panel" --by 0,500\n')
|
|
16
|
-
.action(async (id, options) => {
|
|
17
|
-
if (!resolveTestId(options))
|
|
18
|
-
return;
|
|
19
|
-
await runDomScrollTo(id, options);
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=registerScrollTo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registerScrollTo.js","sourceRoot":"","sources":["../../../src/cli/register/registerScrollTo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAE/D,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAChD,OAAO;SACL,OAAO,CAAC,WAAW,CAAC;SACpB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;SACvC,WAAW,CAAC,2DAA2D,CAAC;SACxE,MAAM,CAAC,kBAAkB,EAAE,kCAAkC,CAAC;SAC9D,MAAM,CAAC,eAAe,EAAE,mDAAmD,CAAC;SAC5E,MAAM,CAAC,YAAY,EAAE,mDAAmD,CAAC;SACzE,MAAM,CAAC,YAAY,EAAE,uCAAuC,CAAC;SAC7D,MAAM,CAAC,OAAO,EAAE,qDAAqD,CAAC;SACtE,MAAM,CAAC,iBAAiB,EAAE,+DAA+D,CAAC;SAC1F,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;SAC9C,WAAW,CACX,OAAO,EACP,kSAAkS,CAClS;SACA,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;QAC7B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAAE,OAAM;QACnC,MAAM,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registerSnapshot.d.ts","sourceRoot":"","sources":["../../../src/cli/register/registerSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsCvD"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { runScreenshot } from '../../commands/screenshot.js';
|
|
2
|
-
import { runSnapshot } from '../../commands/snapshot.js';
|
|
3
|
-
import { resolveTestId } from '../../commands/resolveTestId.js';
|
|
4
|
-
export function registerSnapshot(program) {
|
|
5
|
-
program
|
|
6
|
-
.command('screenshot')
|
|
7
|
-
.argument('[id]', 'Watcher id to query')
|
|
8
|
-
.description('Capture a screenshot to disk on the watcher')
|
|
9
|
-
.option('--out <file>', 'Output file path (absolute or relative to artifacts directory)')
|
|
10
|
-
.option('--selector <selector>', 'Optional CSS selector for element-only capture')
|
|
11
|
-
.option('--clip <x,y,width,height>', 'Viewport-relative rectangle crop in CSS pixels')
|
|
12
|
-
.option('--testid <id>', 'Shorthand for --selector "[data-testid=\'<id>\']"')
|
|
13
|
-
.option('--json', 'Output JSON for automation')
|
|
14
|
-
.addHelpText('after', '\nExamples:\n $ argus screenshot app\n $ argus screenshot app --out /tmp/screenshot.png\n $ argus screenshot app --selector "body"\n $ argus screenshot app --clip 100,80,640,360\n')
|
|
15
|
-
.action(async (id, options) => {
|
|
16
|
-
if (!resolveTestId(options))
|
|
17
|
-
return;
|
|
18
|
-
await runScreenshot(id, options);
|
|
19
|
-
});
|
|
20
|
-
program
|
|
21
|
-
.command('snapshot')
|
|
22
|
-
.alias('snap')
|
|
23
|
-
.alias('ax')
|
|
24
|
-
.argument('[id]', 'Watcher id to query')
|
|
25
|
-
.description('Capture an accessibility tree snapshot of the page')
|
|
26
|
-
.option('--selector <css>', 'Scope snapshot to a DOM subtree')
|
|
27
|
-
.option('--testid <id>', 'Shorthand for --selector "[data-testid=\'<id>\']"')
|
|
28
|
-
.option('--depth <n>', 'Max tree depth')
|
|
29
|
-
.option('-i, --interactive', 'Only show interactive elements (buttons, links, inputs, etc.)')
|
|
30
|
-
.option('--json', 'Output JSON for automation')
|
|
31
|
-
.addHelpText('after', '\nExamples:\n $ argus snapshot app\n $ argus snapshot app --interactive\n $ argus snapshot app --selector "form"\n $ argus snapshot app --testid "login-form"\n $ argus snapshot app --depth 3\n $ argus snap app -i\n $ argus ax app\n')
|
|
32
|
-
.action(async (id, options) => {
|
|
33
|
-
if (!resolveTestId(options))
|
|
34
|
-
return;
|
|
35
|
-
await runSnapshot(id, options);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=registerSnapshot.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registerSnapshot.js","sourceRoot":"","sources":["../../../src/cli/register/registerSnapshot.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAE/D,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAChD,OAAO;SACL,OAAO,CAAC,YAAY,CAAC;SACrB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;SACvC,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,cAAc,EAAE,gEAAgE,CAAC;SACxF,MAAM,CAAC,uBAAuB,EAAE,gDAAgD,CAAC;SACjF,MAAM,CAAC,2BAA2B,EAAE,gDAAgD,CAAC;SACrF,MAAM,CAAC,eAAe,EAAE,mDAAmD,CAAC;SAC5E,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;SAC9C,WAAW,CACX,OAAO,EACP,yLAAyL,CACzL;SACA,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;QAC7B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAAE,OAAM;QACnC,MAAM,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEH,OAAO;SACL,OAAO,CAAC,UAAU,CAAC;SACnB,KAAK,CAAC,MAAM,CAAC;SACb,KAAK,CAAC,IAAI,CAAC;SACX,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;SACvC,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,kBAAkB,EAAE,iCAAiC,CAAC;SAC7D,MAAM,CAAC,eAAe,EAAE,mDAAmD,CAAC;SAC5E,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC;SACvC,MAAM,CAAC,mBAAmB,EAAE,+DAA+D,CAAC;SAC5F,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;SAC9C,WAAW,CACX,OAAO,EACP,gPAAgP,CAChP;SACA,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;QAC7B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAAE,OAAM;QACnC,MAAM,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registerStorage.d.ts","sourceRoot":"","sources":["../../../src/cli/register/registerStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAKtD"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { runStorageClear, runStorageGet, runStorageList, runStorageRemove, runStorageSet } from '../../commands/storage.js';
|
|
2
|
-
export function registerStorage(program) {
|
|
3
|
-
const storage = program.command('storage').description('Interact with browser storage APIs');
|
|
4
|
-
registerStorageArea(storage, 'local');
|
|
5
|
-
registerStorageArea(storage, 'session');
|
|
6
|
-
}
|
|
7
|
-
const registerStorageArea = (storage, area) => {
|
|
8
|
-
const storageName = `${area}Storage`;
|
|
9
|
-
const storageArea = storage.command(area).description(`Manage ${storageName} for the attached page`);
|
|
10
|
-
storageArea
|
|
11
|
-
.command('get')
|
|
12
|
-
.argument('[id]', 'Watcher id')
|
|
13
|
-
.argument('<key>', `${storageName} key to retrieve`)
|
|
14
|
-
.option('--origin <origin>', 'Validate page origin matches this value')
|
|
15
|
-
.option('--json', 'Output JSON for automation')
|
|
16
|
-
.addHelpText('after', `\nExamples:\n $ argus storage ${area} get app myKey\n $ argus storage ${area} get app myKey --json\n`)
|
|
17
|
-
.action(async (id, key, options) => {
|
|
18
|
-
await runStorageGet(area, id, key, options);
|
|
19
|
-
});
|
|
20
|
-
storageArea
|
|
21
|
-
.command('set')
|
|
22
|
-
.argument('[id]', 'Watcher id')
|
|
23
|
-
.argument('<key>', `${storageName} key to set`)
|
|
24
|
-
.argument('<value>', 'Value to store')
|
|
25
|
-
.option('--origin <origin>', 'Validate page origin matches this value')
|
|
26
|
-
.option('--json', 'Output JSON for automation')
|
|
27
|
-
.addHelpText('after', `\nExamples:\n $ argus storage ${area} set app myKey "myValue"\n $ argus storage ${area} set app config '{"debug":true}'\n`)
|
|
28
|
-
.action(async (id, key, value, options) => {
|
|
29
|
-
await runStorageSet(area, id, key, value, options);
|
|
30
|
-
});
|
|
31
|
-
storageArea
|
|
32
|
-
.command('remove')
|
|
33
|
-
.argument('[id]', 'Watcher id')
|
|
34
|
-
.argument('<key>', `${storageName} key to remove`)
|
|
35
|
-
.option('--origin <origin>', 'Validate page origin matches this value')
|
|
36
|
-
.option('--json', 'Output JSON for automation')
|
|
37
|
-
.addHelpText('after', `\nExamples:\n $ argus storage ${area} remove app myKey\n`)
|
|
38
|
-
.action(async (id, key, options) => {
|
|
39
|
-
await runStorageRemove(area, id, key, options);
|
|
40
|
-
});
|
|
41
|
-
storageArea
|
|
42
|
-
.command('ls')
|
|
43
|
-
.alias('list')
|
|
44
|
-
.argument('[id]', 'Watcher id')
|
|
45
|
-
.option('--origin <origin>', 'Validate page origin matches this value')
|
|
46
|
-
.option('--json', 'Output JSON for automation')
|
|
47
|
-
.addHelpText('after', `\nExamples:\n $ argus storage ${area} ls app\n $ argus storage ${area} ls app --json\n`)
|
|
48
|
-
.action(async (id, options) => {
|
|
49
|
-
await runStorageList(area, id, options);
|
|
50
|
-
});
|
|
51
|
-
storageArea
|
|
52
|
-
.command('clear')
|
|
53
|
-
.argument('[id]', 'Watcher id')
|
|
54
|
-
.option('--origin <origin>', 'Validate page origin matches this value')
|
|
55
|
-
.option('--json', 'Output JSON for automation')
|
|
56
|
-
.addHelpText('after', `\nExamples:\n $ argus storage ${area} clear app\n`)
|
|
57
|
-
.action(async (id, options) => {
|
|
58
|
-
await runStorageClear(area, id, options);
|
|
59
|
-
});
|
|
60
|
-
};
|
|
61
|
-
//# sourceMappingURL=registerStorage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registerStorage.js","sourceRoot":"","sources":["../../../src/cli/register/registerStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registerThrottle.d.ts","sourceRoot":"","sources":["../../../src/cli/register/registerThrottle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoCvD"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { runThrottleSet, runThrottleClear, runThrottleStatus } from '../../commands/throttle.js';
|
|
2
|
-
export function registerThrottle(program) {
|
|
3
|
-
const throttle = program.command('throttle').description('CPU throttling');
|
|
4
|
-
throttle
|
|
5
|
-
.command('set')
|
|
6
|
-
.description('Set CPU throttle rate')
|
|
7
|
-
.argument('[id]', 'Watcher ID')
|
|
8
|
-
.argument('<rate>', 'Throttle rate (1 = none, 4 = 4x slowdown)')
|
|
9
|
-
.option('--json', 'Output JSON for automation')
|
|
10
|
-
.addHelpText('after', '\nExamples:\n $ argus throttle set app 4\n $ argus throttle set app 6\n $ argus throttle set app 1 # effectively disables\n $ argus throttle set app 4 --json\n')
|
|
11
|
-
.action(async (id, rate, options) => {
|
|
12
|
-
await runThrottleSet(id, rate, options);
|
|
13
|
-
});
|
|
14
|
-
throttle
|
|
15
|
-
.command('clear')
|
|
16
|
-
.description('Clear CPU throttle')
|
|
17
|
-
.argument('[id]', 'Watcher ID')
|
|
18
|
-
.option('--json', 'Output JSON for automation')
|
|
19
|
-
.addHelpText('after', '\nExamples:\n $ argus throttle clear app\n $ argus throttle clear app --json\n')
|
|
20
|
-
.action(async (id, options) => {
|
|
21
|
-
await runThrottleClear(id, options);
|
|
22
|
-
});
|
|
23
|
-
throttle
|
|
24
|
-
.command('status')
|
|
25
|
-
.description('Show current CPU throttle state')
|
|
26
|
-
.argument('[id]', 'Watcher ID')
|
|
27
|
-
.option('--json', 'Output JSON for automation')
|
|
28
|
-
.addHelpText('after', '\nExamples:\n $ argus throttle status app\n $ argus throttle status app --json\n')
|
|
29
|
-
.action(async (id, options) => {
|
|
30
|
-
await runThrottleStatus(id, options);
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=registerThrottle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registerThrottle.js","sourceRoot":"","sources":["../../../src/cli/register/registerThrottle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAEhG,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAA;IAE1E,QAAQ;SACN,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,uBAAuB,CAAC;SACpC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;SAC9B,QAAQ,CAAC,QAAQ,EAAE,2CAA2C,CAAC;SAC/D,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;SAC9C,WAAW,CACX,OAAO,EACP,yKAAyK,CACzK;SACA,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACnC,MAAM,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEH,QAAQ;SACN,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,oBAAoB,CAAC;SACjC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;SAC9B,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;SAC9C,WAAW,CAAC,OAAO,EAAE,kFAAkF,CAAC;SACxG,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;QAC7B,MAAM,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEH,QAAQ;SACN,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,iCAAiC,CAAC;SAC9C,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;SAC9B,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;SAC9C,WAAW,CAAC,OAAO,EAAE,oFAAoF,CAAC;SAC1G,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;QAC7B,MAAM,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registerTrace.d.ts","sourceRoot":"","sources":["../../../src/cli/register/registerTrace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuCpD"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { runTrace, runTraceStart, runTraceStop } from '../../commands/trace.js';
|
|
2
|
-
export function registerTrace(program) {
|
|
3
|
-
const trace = program
|
|
4
|
-
.command('trace')
|
|
5
|
-
.argument('[id]', 'Watcher id to query')
|
|
6
|
-
.description('Capture a Chrome trace to disk on the watcher')
|
|
7
|
-
.option('--duration <duration>', 'Capture for duration (e.g. 3s, 500ms)')
|
|
8
|
-
.option('--out <file>', 'Output trace file path (relative to artifacts base directory)')
|
|
9
|
-
.option('--categories <categories>', 'Comma-separated tracing categories')
|
|
10
|
-
.option('--options <options>', 'Tracing options string')
|
|
11
|
-
.option('--json', 'Output JSON for automation')
|
|
12
|
-
.addHelpText('after', '\nExamples:\n $ argus trace app --duration 3s --out trace.json\n')
|
|
13
|
-
.action(async (id, options, command) => {
|
|
14
|
-
await runTrace(id, resolveActionOptions(options, command));
|
|
15
|
-
});
|
|
16
|
-
trace
|
|
17
|
-
.command('start')
|
|
18
|
-
.argument('[id]', 'Watcher id to query')
|
|
19
|
-
.description('Start Chrome tracing')
|
|
20
|
-
.option('--out <file>', 'Output trace file path (relative to artifacts base directory)')
|
|
21
|
-
.option('--categories <categories>', 'Comma-separated tracing categories')
|
|
22
|
-
.option('--options <options>', 'Tracing options string')
|
|
23
|
-
.option('--json', 'Output JSON for automation')
|
|
24
|
-
.addHelpText('after', '\nExamples:\n $ argus trace start app --out trace.json\n')
|
|
25
|
-
.action(async (id, options, command) => {
|
|
26
|
-
await runTraceStart(id, resolveActionOptions(options, command));
|
|
27
|
-
});
|
|
28
|
-
trace
|
|
29
|
-
.command('stop')
|
|
30
|
-
.argument('[id]', 'Watcher id to query')
|
|
31
|
-
.description('Stop Chrome tracing')
|
|
32
|
-
.option('--trace-id <id>', 'Trace id returned from start')
|
|
33
|
-
.option('--out <file>', 'Move the saved trace file to this path before returning')
|
|
34
|
-
.option('--json', 'Output JSON for automation')
|
|
35
|
-
.addHelpText('after', '\nExamples:\n $ argus trace stop app\n $ argus trace stop app --out trace.json --json\n')
|
|
36
|
-
.action(async (id, options, command) => {
|
|
37
|
-
await runTraceStop(id, resolveActionOptions(options, command));
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
function resolveActionOptions(options, command) {
|
|
41
|
-
const maybeCommand = options;
|
|
42
|
-
if (typeof maybeCommand?.opts === 'function') {
|
|
43
|
-
return {
|
|
44
|
-
...(typeof maybeCommand.parent?.opts === 'function' ? maybeCommand.parent.opts() : {}),
|
|
45
|
-
...maybeCommand.opts(),
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
if (typeof command?.opts === 'function') {
|
|
49
|
-
return {
|
|
50
|
-
...(typeof command.parent?.opts === 'function' ? command.parent.opts() : {}),
|
|
51
|
-
...command.opts(),
|
|
52
|
-
...options,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
return options;
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=registerTrace.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registerTrace.js","sourceRoot":"","sources":["../../../src/cli/register/registerTrace.ts"],"names":[],"mappings":"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"}
|