@vforsh/argus 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/argus.js +136 -82
- package/dist/cli/register/evalCommands.d.ts.map +1 -1
- package/dist/cli/register/evalCommands.js +13 -2
- package/dist/cli/register/evalCommands.js.map +1 -1
- package/dist/cli/register/fillCommand.d.ts.map +1 -1
- package/dist/cli/register/fillCommand.js +8 -1
- package/dist/cli/register/fillCommand.js.map +1 -1
- package/dist/commands/domFill.d.ts +1 -0
- package/dist/commands/domFill.d.ts.map +1 -1
- package/dist/commands/domFill.js.map +1 -1
- package/dist/commands/extension/doctor.js +9 -0
- package/dist/commands/extension/doctor.js.map +1 -1
- package/dist/commands/extension/targetSelection.d.ts +2 -0
- package/dist/commands/extension/targetSelection.d.ts.map +1 -1
- package/dist/commands/extension/targetSelection.js +2 -2
- package/dist/commands/extension/targetSelection.js.map +1 -1
- package/dist/extension/dist/background/service-worker.js +4 -1
- package/dist/extension/dist/background/service-worker.js.map +2 -2
- package/dist/extension/manifest.json +1 -1
- package/dist/skill/argus/SKILL.md +7 -0
- package/dist/skill/argus/reference/EXTENSION.md +8 -0
- package/package.json +2 -2
package/dist/argus.js
CHANGED
|
@@ -2130,7 +2130,7 @@ var {
|
|
|
2130
2130
|
// package.json
|
|
2131
2131
|
var package_default = {
|
|
2132
2132
|
name: "@vforsh/argus",
|
|
2133
|
-
version: "0.3.
|
|
2133
|
+
version: "0.3.1",
|
|
2134
2134
|
repository: {
|
|
2135
2135
|
type: "git",
|
|
2136
2136
|
url: "git+https://github.com/vforsh/argus.git",
|
|
@@ -2159,7 +2159,7 @@ var package_default = {
|
|
|
2159
2159
|
"@vforsh/argus-client": "^0.3.0",
|
|
2160
2160
|
"@vforsh/argus-core": "^0.3.0",
|
|
2161
2161
|
"@vforsh/argus-plugin-api": "^0.3.0",
|
|
2162
|
-
"@vforsh/argus-watcher": "^0.3.
|
|
2162
|
+
"@vforsh/argus-watcher": "^0.3.1",
|
|
2163
2163
|
commander: "14.0.2",
|
|
2164
2164
|
esbuild: "0.25.12",
|
|
2165
2165
|
prettier: "3.7.4"
|
|
@@ -8202,9 +8202,6 @@ var formatError3 = (error) => error instanceof Error ? error.message : String(er
|
|
|
8202
8202
|
// ../argus-watcher/dist/cdp/eval.js
|
|
8203
8203
|
var evaluateExpression = async (session, options) => {
|
|
8204
8204
|
const args = hasEvalArgs(options.args) ? options.args : undefined;
|
|
8205
|
-
if (args) {
|
|
8206
|
-
await installEvalArgs(session, args, options.timeoutMs);
|
|
8207
|
-
}
|
|
8208
8205
|
let scenarioBridge;
|
|
8209
8206
|
try {
|
|
8210
8207
|
if (options.scenario) {
|
|
@@ -8215,7 +8212,7 @@ var evaluateExpression = async (session, options) => {
|
|
|
8215
8212
|
}
|
|
8216
8213
|
const recordResult = await evaluateAndAwaitRecord(session, {
|
|
8217
8214
|
...options,
|
|
8218
|
-
expression: scenarioBridge?.expression ?? options.expression,
|
|
8215
|
+
expression: wrapExpressionWithArgs(scenarioBridge?.expression ?? options.expression, args),
|
|
8219
8216
|
replMode: scenarioBridge ? false : options.replMode
|
|
8220
8217
|
});
|
|
8221
8218
|
if (recordResult.exception)
|
|
@@ -8241,12 +8238,16 @@ var evaluateExpression = async (session, options) => {
|
|
|
8241
8238
|
};
|
|
8242
8239
|
} finally {
|
|
8243
8240
|
await scenarioBridge?.dispose();
|
|
8244
|
-
if (args) {
|
|
8245
|
-
await restoreEvalArgs(session, options.timeoutMs);
|
|
8246
|
-
}
|
|
8247
8241
|
}
|
|
8248
8242
|
};
|
|
8249
8243
|
var hasEvalArgs = (args) => args != null && Object.keys(args).length > 0;
|
|
8244
|
+
var wrapExpressionWithArgs = (expression, args) => {
|
|
8245
|
+
if (!args)
|
|
8246
|
+
return expression;
|
|
8247
|
+
return `{ const args = Object.freeze(${JSON.stringify(args)});
|
|
8248
|
+
${expression}
|
|
8249
|
+
}`;
|
|
8250
|
+
};
|
|
8250
8251
|
var evaluateAndAwaitRecord = async (session, options) => {
|
|
8251
8252
|
const payload = await evaluateRawExpression(session, options);
|
|
8252
8253
|
if (payload.exceptionDetails) {
|
|
@@ -8271,42 +8272,6 @@ var formatExceptionResponse = (payload) => ({
|
|
|
8271
8272
|
details: payload.exceptionDetails?.exception ?? null
|
|
8272
8273
|
}
|
|
8273
8274
|
});
|
|
8274
|
-
var EVAL_ARGS_STATE_KEY = "__argusEvalArgsPreviousDescriptor__";
|
|
8275
|
-
var installEvalArgs = async (session, args, timeoutMs) => {
|
|
8276
|
-
const payload = JSON.stringify(args);
|
|
8277
|
-
await sendInternalEval(session, `(() => {
|
|
8278
|
-
const previous = Object.getOwnPropertyDescriptor(globalThis, 'args');
|
|
8279
|
-
Object.defineProperty(globalThis, ${JSON.stringify(EVAL_ARGS_STATE_KEY)}, { value: previous, configurable: true });
|
|
8280
|
-
Object.defineProperty(globalThis, 'args', { value: Object.freeze(${payload}), configurable: true });
|
|
8281
|
-
})()`, timeoutMs);
|
|
8282
|
-
};
|
|
8283
|
-
var restoreEvalArgs = async (session, timeoutMs) => {
|
|
8284
|
-
await sendInternalEval(session, `(() => {
|
|
8285
|
-
const stateKey = ${JSON.stringify(EVAL_ARGS_STATE_KEY)};
|
|
8286
|
-
const previous = Object.getOwnPropertyDescriptor(globalThis, stateKey)?.value;
|
|
8287
|
-
delete globalThis[stateKey];
|
|
8288
|
-
delete globalThis.args;
|
|
8289
|
-
if (previous) Object.defineProperty(globalThis, 'args', previous);
|
|
8290
|
-
})()`, timeoutMs);
|
|
8291
|
-
};
|
|
8292
|
-
var sendInternalEval = async (session, expression, timeoutMs) => {
|
|
8293
|
-
const payload = await session.sendAndWait("Runtime.evaluate", {
|
|
8294
|
-
expression,
|
|
8295
|
-
replMode: false,
|
|
8296
|
-
awaitPromise: true,
|
|
8297
|
-
returnByValue: true
|
|
8298
|
-
}, { timeoutMs });
|
|
8299
|
-
if (payload.exceptionDetails) {
|
|
8300
|
-
throw new Error(formatInternalEvalError(payload.exceptionDetails));
|
|
8301
|
-
}
|
|
8302
|
-
};
|
|
8303
|
-
var formatInternalEvalError = (exceptionDetails) => {
|
|
8304
|
-
const exception = exceptionDetails.exception;
|
|
8305
|
-
if (exception != null && typeof exception === "object" && "description" in exception && typeof exception.description === "string") {
|
|
8306
|
-
return exception.description;
|
|
8307
|
-
}
|
|
8308
|
-
return exceptionDetails.text ?? "Failed to prepare eval args";
|
|
8309
|
-
};
|
|
8310
8275
|
var evaluateRawExpression = async (session, options) => await session.sendAndWait("Runtime.evaluate", {
|
|
8311
8276
|
expression: options.expression,
|
|
8312
8277
|
replMode: options.replMode ?? true,
|
|
@@ -8580,7 +8545,7 @@ var filterNodesByText = async (session, nodeIds, text) => {
|
|
|
8580
8545
|
|
|
8581
8546
|
// ../argus-watcher/dist/cdp/dom/selector.js
|
|
8582
8547
|
var getDomRootId = async (session) => {
|
|
8583
|
-
const targetContext = session.getTargetContext?.();
|
|
8548
|
+
const targetContext = session.getReadyTargetContext ? await session.getReadyTargetContext() : session.getTargetContext?.();
|
|
8584
8549
|
if (targetContext?.kind === "frame") {
|
|
8585
8550
|
return getFrameDomRootId(session, targetContext);
|
|
8586
8551
|
}
|
|
@@ -8665,6 +8630,18 @@ var describeNodeByBackendId = async (session, backendNodeId) => {
|
|
|
8665
8630
|
});
|
|
8666
8631
|
return described.node ?? null;
|
|
8667
8632
|
};
|
|
8633
|
+
var resolveNodeIdByBackendId = async (session, backendNodeId) => {
|
|
8634
|
+
const describedNode = await describeNodeByBackendId(session, backendNodeId);
|
|
8635
|
+
if (describedNode?.nodeId) {
|
|
8636
|
+
return describedNode.nodeId;
|
|
8637
|
+
}
|
|
8638
|
+
await getDomRootId(session);
|
|
8639
|
+
const pushed = await session.sendAndWait("DOM.pushNodesByBackendIdsToFrontend", {
|
|
8640
|
+
backendNodeIds: [backendNodeId]
|
|
8641
|
+
});
|
|
8642
|
+
const nodeId = pushed.nodeIds?.[0];
|
|
8643
|
+
return typeof nodeId === "number" && nodeId > 0 ? nodeId : null;
|
|
8644
|
+
};
|
|
8668
8645
|
var toDomNodeDescriptor = (handle) => {
|
|
8669
8646
|
if (handle.nodeId != null) {
|
|
8670
8647
|
return { nodeId: handle.nodeId };
|
|
@@ -9065,7 +9042,39 @@ var locateByLabel = async (session, elementRefs, request) => {
|
|
|
9065
9042
|
}
|
|
9066
9043
|
return matchesText(element.name, request.label, request.exact ?? false);
|
|
9067
9044
|
});
|
|
9068
|
-
return buildLocateResponse(session, request.all ?? false, matches);
|
|
9045
|
+
return buildLocateResponse(session, request.all ?? false, await removeCompositeLabelWrappers(session, matches));
|
|
9046
|
+
};
|
|
9047
|
+
var NATIVE_LABELABLE_TAGS = new Set(["button", "input", "select", "textarea"]);
|
|
9048
|
+
var removeCompositeLabelWrappers = async (session, matches) => {
|
|
9049
|
+
if (matches.length < 2)
|
|
9050
|
+
return matches;
|
|
9051
|
+
const candidates = await Promise.all(matches.map(async (match) => {
|
|
9052
|
+
const [node, nodeId] = await Promise.all([
|
|
9053
|
+
describeNodeByBackendId(session, match.backendNodeId),
|
|
9054
|
+
resolveNodeIdByBackendId(session, match.backendNodeId)
|
|
9055
|
+
]);
|
|
9056
|
+
const tag = node ? (node.localName ?? node.nodeName).toLowerCase() : "";
|
|
9057
|
+
return { match, nodeId, native: NATIVE_LABELABLE_TAGS.has(tag) };
|
|
9058
|
+
}));
|
|
9059
|
+
const nativeCandidates = candidates.filter((candidate) => candidate.native && candidate.nodeId != null);
|
|
9060
|
+
if (nativeCandidates.length === 0)
|
|
9061
|
+
return matches;
|
|
9062
|
+
const kept = [];
|
|
9063
|
+
for (const candidate of candidates) {
|
|
9064
|
+
if (candidate.native || candidate.nodeId == null) {
|
|
9065
|
+
kept.push(candidate.match);
|
|
9066
|
+
continue;
|
|
9067
|
+
}
|
|
9068
|
+
const descendants = await session.sendAndWait("DOM.querySelectorAll", {
|
|
9069
|
+
nodeId: candidate.nodeId,
|
|
9070
|
+
selector: "button,input,select,textarea"
|
|
9071
|
+
});
|
|
9072
|
+
const descendantIds = new Set(descendants.nodeIds ?? []);
|
|
9073
|
+
const wrapsMatchedNative = nativeCandidates.some((native) => native.nodeId != null && descendantIds.has(native.nodeId) && normalizeText(native.match.role) === normalizeText(candidate.match.role) && normalizeText(native.match.name) === normalizeText(candidate.match.name));
|
|
9074
|
+
if (!wrapsMatchedNative)
|
|
9075
|
+
kept.push(candidate.match);
|
|
9076
|
+
}
|
|
9077
|
+
return kept;
|
|
9069
9078
|
};
|
|
9070
9079
|
var buildLocateResponse = async (session, all, matches) => {
|
|
9071
9080
|
const selected = all ? matches : matches.slice(0, 1);
|
|
@@ -9576,8 +9585,8 @@ var setFileOnResolvedNodes = async (session, nodeIds, files) => {
|
|
|
9576
9585
|
// ../argus-watcher/dist/cdp/dom/fill.js
|
|
9577
9586
|
var FILL_FUNCTION = `function(value) {
|
|
9578
9587
|
var el = this;
|
|
9588
|
+
el.focus();
|
|
9579
9589
|
if (el.isContentEditable) {
|
|
9580
|
-
el.focus();
|
|
9581
9590
|
el.textContent = value;
|
|
9582
9591
|
el.dispatchEvent(new Event('input', { bubbles: true }));
|
|
9583
9592
|
el.dispatchEvent(new Event('change', { bubbles: true }));
|
|
@@ -13883,7 +13892,7 @@ import fs7 from "node:fs/promises";
|
|
|
13883
13892
|
// ../argus-watcher/dist/cdp/visualCapture.js
|
|
13884
13893
|
var createVisualCapturePlan = async (session, pageSession, request) => {
|
|
13885
13894
|
const subject = resolveVisualCaptureSubject(request);
|
|
13886
|
-
const targetContext = session.getTargetContext?.();
|
|
13895
|
+
const targetContext = session.getReadyTargetContext ? await session.getReadyTargetContext() : session.getTargetContext?.();
|
|
13887
13896
|
if (targetContext?.kind === "frame" && pageSession) {
|
|
13888
13897
|
return createFrameCapturePlan({
|
|
13889
13898
|
frameSession: session,
|
|
@@ -16285,7 +16294,6 @@ var createEmptyFrameState = () => ({
|
|
|
16285
16294
|
topFrameId: null,
|
|
16286
16295
|
requestedFrameId: null,
|
|
16287
16296
|
requestedFrameHint: null,
|
|
16288
|
-
requestedFrameDetached: false,
|
|
16289
16297
|
activeFrameId: null,
|
|
16290
16298
|
activeAttachedAt: null,
|
|
16291
16299
|
frames: new Map,
|
|
@@ -16414,7 +16422,7 @@ var resolveRequestedTarget = (state2) => {
|
|
|
16414
16422
|
if (nextFrameId) {
|
|
16415
16423
|
return { kind: "frame", frameId: nextFrameId };
|
|
16416
16424
|
}
|
|
16417
|
-
return
|
|
16425
|
+
return { kind: "pending" };
|
|
16418
16426
|
};
|
|
16419
16427
|
var resolveSelectedFrameCommandState = (state2) => {
|
|
16420
16428
|
if (state2.requestedFrameId == null) {
|
|
@@ -16455,7 +16463,7 @@ var buildFrameTargetContext = (state2, frameId) => ({
|
|
|
16455
16463
|
var findSingleMatchingFrameId = (state2, predicate) => {
|
|
16456
16464
|
let matchId = null;
|
|
16457
16465
|
for (const frame of state2.frames.values()) {
|
|
16458
|
-
if (!predicate(frame)) {
|
|
16466
|
+
if (frame.frameId === state2.topFrameId || !predicate(frame)) {
|
|
16459
16467
|
continue;
|
|
16460
16468
|
}
|
|
16461
16469
|
if (matchId) {
|
|
@@ -16545,7 +16553,8 @@ var createDelegatingSession = (options) => {
|
|
|
16545
16553
|
subscriptions.delete(subscription);
|
|
16546
16554
|
};
|
|
16547
16555
|
},
|
|
16548
|
-
getTargetContext: options.getTargetContext
|
|
16556
|
+
getTargetContext: options.getTargetContext,
|
|
16557
|
+
getReadyTargetContext: options.getReadyTargetContext
|
|
16549
16558
|
};
|
|
16550
16559
|
controller.rebind();
|
|
16551
16560
|
return { session, controller };
|
|
@@ -17075,31 +17084,54 @@ var seedExtensionFrameState = (session, state2) => {
|
|
|
17075
17084
|
return state2;
|
|
17076
17085
|
};
|
|
17077
17086
|
var getSelectedExtensionTarget = (session, state2) => {
|
|
17078
|
-
|
|
17087
|
+
const frameId = state2?.requestedFrameId ?? state2?.activeFrameId;
|
|
17088
|
+
if (!state2 || !frameId) {
|
|
17079
17089
|
return buildPageTarget(session, { attached: true });
|
|
17080
17090
|
}
|
|
17081
|
-
const frame = state2.frames.get(
|
|
17091
|
+
const frame = state2.frames.get(frameId);
|
|
17082
17092
|
if (frame) {
|
|
17083
17093
|
return frameToTarget(session.tabId, frame, { attached: true, faviconUrl: session.faviconUrl, topFrameId: state2.topFrameId });
|
|
17084
17094
|
}
|
|
17085
17095
|
return buildSelectedIframeFallbackTarget(session, state2);
|
|
17086
17096
|
};
|
|
17087
17097
|
var setRequestedTargetSelection = (state2, frameId) => {
|
|
17098
|
+
if (state2.requestedFrameId !== frameId) {
|
|
17099
|
+
state2.activeAttachedAt = null;
|
|
17100
|
+
}
|
|
17101
|
+
const previousHint = state2.requestedFrameId === frameId ? state2.requestedFrameHint : null;
|
|
17088
17102
|
state2.requestedFrameId = frameId;
|
|
17089
|
-
state2.requestedFrameHint = frameId ? createRequestedFrameHint(state2.frames.get(frameId)) : null;
|
|
17090
|
-
|
|
17103
|
+
state2.requestedFrameHint = frameId ? createRequestedFrameHint(state2.frames.get(frameId)) ?? previousHint : null;
|
|
17104
|
+
};
|
|
17105
|
+
var listExtensionTargets = (session, state2) => {
|
|
17106
|
+
if (!state2) {
|
|
17107
|
+
return [buildPageTarget(session, { attached: true })];
|
|
17108
|
+
}
|
|
17109
|
+
const selected = getSelectedExtensionTarget(session, state2);
|
|
17110
|
+
selected.targetReady = isSelectedTargetReady(state2);
|
|
17111
|
+
const targets = [buildPageTarget(session, { attached: false }), ...buildFrameTargets(state2, session.tabId, null, session.faviconUrl)];
|
|
17112
|
+
const selectedIndex = targets.findIndex((target) => target.id === selected.id);
|
|
17113
|
+
if (selectedIndex < 0) {
|
|
17114
|
+
targets.push(selected);
|
|
17115
|
+
} else {
|
|
17116
|
+
targets[selectedIndex] = selected;
|
|
17117
|
+
}
|
|
17118
|
+
return targets;
|
|
17091
17119
|
};
|
|
17092
17120
|
var reconcileExtensionTargetSelection = (session, state2, onTargetChanged) => {
|
|
17093
17121
|
const resolution = resolveRequestedTarget(state2);
|
|
17094
17122
|
if (resolution.kind === "page") {
|
|
17095
|
-
state2.requestedFrameDetached = false;
|
|
17096
17123
|
return activatePageTarget(state2, onTargetChanged);
|
|
17097
17124
|
}
|
|
17098
17125
|
if (resolution.kind === "pending") {
|
|
17099
|
-
|
|
17126
|
+
if (state2.activeFrameId == null && state2.activeAttachedAt != null) {
|
|
17127
|
+
return false;
|
|
17128
|
+
}
|
|
17129
|
+
state2.activeFrameId = null;
|
|
17130
|
+
state2.activeAttachedAt = Date.now();
|
|
17131
|
+
onTargetChanged();
|
|
17132
|
+
return true;
|
|
17100
17133
|
}
|
|
17101
17134
|
syncRequestedFrameSelection(state2, resolution.frameId);
|
|
17102
|
-
state2.requestedFrameDetached = false;
|
|
17103
17135
|
if (state2.activeFrameId === resolution.frameId) {
|
|
17104
17136
|
return false;
|
|
17105
17137
|
}
|
|
@@ -17116,7 +17148,6 @@ var removeExtensionFrame = (state2, frameId) => {
|
|
|
17116
17148
|
removeExtensionFrame(state2, childId);
|
|
17117
17149
|
}
|
|
17118
17150
|
if (state2.activeFrameId === frameId) {
|
|
17119
|
-
state2.requestedFrameDetached = state2.requestedFrameId === frameId;
|
|
17120
17151
|
state2.activeFrameId = null;
|
|
17121
17152
|
state2.activeAttachedAt = null;
|
|
17122
17153
|
}
|
|
@@ -17187,7 +17218,7 @@ var syncRequestedFrameSelection = (state2, frameId) => {
|
|
|
17187
17218
|
};
|
|
17188
17219
|
var buildSelectedIframeFallbackTarget = (session, state2) => {
|
|
17189
17220
|
const hint = state2.requestedFrameHint;
|
|
17190
|
-
const frameId = state2.activeFrameId;
|
|
17221
|
+
const frameId = state2.requestedFrameId ?? state2.activeFrameId;
|
|
17191
17222
|
if (!frameId) {
|
|
17192
17223
|
return buildPageTarget(session, { attached: true });
|
|
17193
17224
|
}
|
|
@@ -17198,7 +17229,8 @@ var buildSelectedIframeFallbackTarget = (session, state2) => {
|
|
|
17198
17229
|
type: "iframe",
|
|
17199
17230
|
parentId: formatPageTargetId(session.tabId),
|
|
17200
17231
|
faviconUrl: session.faviconUrl,
|
|
17201
|
-
attached: true
|
|
17232
|
+
attached: true,
|
|
17233
|
+
targetReady: false
|
|
17202
17234
|
};
|
|
17203
17235
|
};
|
|
17204
17236
|
|
|
@@ -17264,6 +17296,10 @@ var createExtensionSource = (options) => {
|
|
|
17264
17296
|
getCurrentSession: () => currentSession,
|
|
17265
17297
|
requireCurrentSession: getCurrentExtensionSession,
|
|
17266
17298
|
getTargetContext: () => getCurrentTargetContext() ?? { kind: "page" },
|
|
17299
|
+
getReadyTargetContext: async () => {
|
|
17300
|
+
const context = getCurrentTargetContext() ?? { kind: "page" };
|
|
17301
|
+
return context.kind === "frame" ? targetRecovery.waitForSelectedFrameCommandTarget() : context;
|
|
17302
|
+
},
|
|
17267
17303
|
prepareCommand: async ({ method, params, targetContext }) => {
|
|
17268
17304
|
if (targetContext.kind !== "frame") {
|
|
17269
17305
|
return;
|
|
@@ -17309,16 +17345,7 @@ var createExtensionSource = (options) => {
|
|
|
17309
17345
|
if (!session) {
|
|
17310
17346
|
return [];
|
|
17311
17347
|
}
|
|
17312
|
-
|
|
17313
|
-
if (!state2 || state2.frames.size === 0) {
|
|
17314
|
-
return [buildPageTarget(session, { attached: true })];
|
|
17315
|
-
}
|
|
17316
|
-
const activeFrameId = state2.activeFrameId;
|
|
17317
|
-
const targets = [buildPageTarget(session, { attached: activeFrameId == null })];
|
|
17318
|
-
for (const frame of buildFrameTargets(state2, session.tabId, activeFrameId, session.faviconUrl)) {
|
|
17319
|
-
targets.push(frame);
|
|
17320
|
-
}
|
|
17321
|
-
return targets;
|
|
17348
|
+
return listExtensionTargets(session, frameStateByTabId.get(session.tabId));
|
|
17322
17349
|
};
|
|
17323
17350
|
const attachTarget = async (targetId) => {
|
|
17324
17351
|
const target = parseExtensionTargetId(targetId);
|
|
@@ -17456,10 +17483,11 @@ var createExtensionSource = (options) => {
|
|
|
17456
17483
|
return null;
|
|
17457
17484
|
}
|
|
17458
17485
|
const state2 = frameStateByTabId.get(session.tabId);
|
|
17459
|
-
|
|
17486
|
+
const frameId = state2?.requestedFrameId ?? state2?.activeFrameId;
|
|
17487
|
+
if (!state2 || !frameId) {
|
|
17460
17488
|
return { kind: "page" };
|
|
17461
17489
|
}
|
|
17462
|
-
return buildFrameTargetContext(state2,
|
|
17490
|
+
return buildFrameTargetContext(state2, frameId);
|
|
17463
17491
|
}
|
|
17464
17492
|
function getOrCreateFrameState(tabId) {
|
|
17465
17493
|
const existing = frameStateByTabId.get(tabId);
|
|
@@ -21200,7 +21228,7 @@ var prepareEvalExpression = async (inline, options, output) => {
|
|
|
21200
21228
|
return null;
|
|
21201
21229
|
}
|
|
21202
21230
|
return {
|
|
21203
|
-
expression: wrapForIframeEval(
|
|
21231
|
+
expression: wrapForIframeEval(wrapExpressionWithArgs2(resolved.expression, args), {
|
|
21204
21232
|
selector: options.iframe,
|
|
21205
21233
|
namespace: options.iframeNamespace ?? "argus",
|
|
21206
21234
|
timeoutMs: iframeTimeoutMs.value ?? 5000
|
|
@@ -21372,7 +21400,7 @@ var parseCount = (value) => {
|
|
|
21372
21400
|
}
|
|
21373
21401
|
return { value: parsed };
|
|
21374
21402
|
};
|
|
21375
|
-
var
|
|
21403
|
+
var wrapExpressionWithArgs2 = (source, args) => {
|
|
21376
21404
|
if (!hasEvalArgs2(args)) {
|
|
21377
21405
|
return source;
|
|
21378
21406
|
}
|
|
@@ -24604,6 +24632,7 @@ var sharedEvalHeadOptions = (timeoutDescription) => [
|
|
|
24604
24632
|
{ flags: "-q, --silent", description: "Suppress success output; only emit output on error" }
|
|
24605
24633
|
];
|
|
24606
24634
|
var sharedEvalTailOptions = [
|
|
24635
|
+
{ flags: "--expression <js>", description: "Expression to evaluate (alternative to the positional expression)" },
|
|
24607
24636
|
{ flags: "-f, --file <path>", description: "Read expression from a file" },
|
|
24608
24637
|
{ flags: "--bundle", description: "Bundle --file and its resolved imports into one script before eval" },
|
|
24609
24638
|
{ flags: "--no-bundle", description: "Read --file as-is (skip bundling and auto-bundle)" },
|
|
@@ -24656,7 +24685,12 @@ var evalCommands = [
|
|
|
24656
24685
|
'argus eval app "document.title" --iframe "iframe" --iframe-timeout 10000'
|
|
24657
24686
|
],
|
|
24658
24687
|
action: async (id, expression, options) => {
|
|
24659
|
-
|
|
24688
|
+
if (expression != null && options.expression != null) {
|
|
24689
|
+
console.error("Provide either a positional expression or --expression, not both.");
|
|
24690
|
+
process.exitCode = 2;
|
|
24691
|
+
return;
|
|
24692
|
+
}
|
|
24693
|
+
await runEval(id, expression ?? options.expression, {
|
|
24660
24694
|
json: options.json,
|
|
24661
24695
|
await: options.await,
|
|
24662
24696
|
timeout: options.timeout,
|
|
@@ -24734,7 +24768,12 @@ var evalCommands = [
|
|
|
24734
24768
|
"argus wait app --file ./ready.js --args ./args.json --out ./ready.json"
|
|
24735
24769
|
],
|
|
24736
24770
|
action: async (id, expression, options) => {
|
|
24737
|
-
|
|
24771
|
+
if (expression != null && options.expression != null) {
|
|
24772
|
+
console.error("Provide either a positional expression or --expression, not both.");
|
|
24773
|
+
process.exitCode = 2;
|
|
24774
|
+
return;
|
|
24775
|
+
}
|
|
24776
|
+
await runEvalUntil(id, expression ?? options.expression, {
|
|
24738
24777
|
json: options.json,
|
|
24739
24778
|
await: options.await,
|
|
24740
24779
|
timeout: options.timeout,
|
|
@@ -48392,6 +48431,7 @@ var fillCommand = {
|
|
|
48392
48431
|
{ flags: "--testid <id>", description: `Shorthand for --selector "[data-testid='<id>']"` },
|
|
48393
48432
|
{ flags: "--ref <elementRef>", description: "Stable element ref from snapshot/locate output" },
|
|
48394
48433
|
{ flags: "--name <attr>", description: 'Shorthand for --selector "[name=<attr>]"' },
|
|
48434
|
+
{ flags: "--value <text>", description: "Value to fill (alternative to the positional value)" },
|
|
48395
48435
|
{ flags: "--value-file <path>", description: "Read value from a file" },
|
|
48396
48436
|
{ flags: "--value-stdin", description: 'Read value from stdin (also triggered by "-" as value arg)' },
|
|
48397
48437
|
{ flags: "--all", description: "Allow multiple matches (default: error if >1 match)" },
|
|
@@ -48404,6 +48444,7 @@ var fillCommand = {
|
|
|
48404
48444
|
'argus fill app --testid "username" "Bob"',
|
|
48405
48445
|
'argus fill app --ref e7 "Bob"',
|
|
48406
48446
|
'argus fill app --name "title" "Hello"',
|
|
48447
|
+
'argus fill app --selector "#username" --value "Bob"',
|
|
48407
48448
|
'argus fill app --selector "textarea" "New content"',
|
|
48408
48449
|
'argus fill app --selector "input[type=text]" --all "reset"',
|
|
48409
48450
|
'argus fill app --selector "#desc" --value-file ./description.txt',
|
|
@@ -48411,6 +48452,11 @@ var fillCommand = {
|
|
|
48411
48452
|
'argus fill app --selector "#input" - < value.txt'
|
|
48412
48453
|
],
|
|
48413
48454
|
action: async (id, value, options) => {
|
|
48455
|
+
if (value != null && options.value != null) {
|
|
48456
|
+
console.error("Provide either a positional value or --value, not both.");
|
|
48457
|
+
process.exitCode = 2;
|
|
48458
|
+
return;
|
|
48459
|
+
}
|
|
48414
48460
|
if (options.name && (options.testid || options.ref)) {
|
|
48415
48461
|
console.error("Cannot use --name with --testid or --ref.");
|
|
48416
48462
|
process.exitCode = 2;
|
|
@@ -48418,7 +48464,7 @@ var fillCommand = {
|
|
|
48418
48464
|
}
|
|
48419
48465
|
if (!resolveTestId(options))
|
|
48420
48466
|
return;
|
|
48421
|
-
await runDomFill(id, value, options);
|
|
48467
|
+
await runDomFill(id, value ?? options.value, options);
|
|
48422
48468
|
}
|
|
48423
48469
|
};
|
|
48424
48470
|
|
|
@@ -51311,7 +51357,7 @@ var resolveExtensionTarget = (targets, options) => {
|
|
|
51311
51357
|
};
|
|
51312
51358
|
var hasExtensionTargetSelector = (options) => Boolean(options.page === true || options.iframe || options.iframeUrl || options.iframeTitle);
|
|
51313
51359
|
var formatExtensionTargetLine = (target) => {
|
|
51314
|
-
const state2 = target.attached ? "attached" : "available";
|
|
51360
|
+
const state2 = target.targetReady === false ? "pending" : target.attached ? "attached" : "available";
|
|
51315
51361
|
const type = target.type ?? "target";
|
|
51316
51362
|
const title = target.title || "(untitled)";
|
|
51317
51363
|
const parent = target.parentId ? ` [parent: ${shortenId(target.parentId)}]` : "";
|
|
@@ -51384,7 +51430,7 @@ var scoreIframeTarget = (target, page) => {
|
|
|
51384
51430
|
var renderTargetNode = (target, prefix, isLast, childrenByParent, output, isRoot = false) => {
|
|
51385
51431
|
const connector = targetTreeConnector(isRoot, isLast);
|
|
51386
51432
|
const childPrefix = targetTreeChildPrefix(prefix, isRoot, isLast);
|
|
51387
|
-
const state2 = target.attached ? " attached" : "";
|
|
51433
|
+
const state2 = target.targetReady === false ? " pending" : target.attached ? " attached" : "";
|
|
51388
51434
|
output.writeHuman(`${prefix}${connector}${target.title || "(untitled)"} (${target.type ?? "target"}, ${shortenId(target.id)}${state2})`);
|
|
51389
51435
|
output.writeHuman(`${childPrefix}${target.url}`);
|
|
51390
51436
|
const children = childrenByParent.get(target.id) ?? [];
|
|
@@ -51641,6 +51687,14 @@ var inspectWatcher = async (id, diagnostics) => {
|
|
|
51641
51687
|
}
|
|
51642
51688
|
if (!bridge) {
|
|
51643
51689
|
issues.push(`Watcher ${resolved.watcher.id} is not present in extension diagnostics.`);
|
|
51690
|
+
} else if (!bridge.connected) {
|
|
51691
|
+
issues.push(`Watcher ${resolved.watcher.id} native bridge is disconnected.`);
|
|
51692
|
+
}
|
|
51693
|
+
if (status.ok && !status.status.attached) {
|
|
51694
|
+
issues.push(`Watcher ${resolved.watcher.id} has no debugger-attached target.`);
|
|
51695
|
+
}
|
|
51696
|
+
if (status.ok && status.status.targetReady === false) {
|
|
51697
|
+
issues.push(`Watcher ${resolved.watcher.id} selected target is not ready for commands.`);
|
|
51644
51698
|
}
|
|
51645
51699
|
if (status.ok && status.status.attached && !selectedTarget) {
|
|
51646
51700
|
issues.push(`Watcher ${resolved.watcher.id} is attached, but no selected target was reported by /targets.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evalCommands.d.ts","sourceRoot":"","sources":["../../../src/cli/register/evalCommands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAsB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"evalCommands.d.ts","sourceRoot":"","sources":["../../../src/cli/register/evalCommands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAsB,MAAM,qBAAqB,CAAA;AAiCrF,eAAO,MAAM,YAAY,EAAE,SAAS,sBAAsB,EA2JzD,CAAA"}
|
|
@@ -14,6 +14,7 @@ const sharedEvalHeadOptions = (timeoutDescription) => [
|
|
|
14
14
|
];
|
|
15
15
|
/** Trailing input/iframe/args options shared verbatim between `eval` and `eval-until`. */
|
|
16
16
|
const sharedEvalTailOptions = [
|
|
17
|
+
{ flags: '--expression <js>', description: 'Expression to evaluate (alternative to the positional expression)' },
|
|
17
18
|
{ flags: '-f, --file <path>', description: 'Read expression from a file' },
|
|
18
19
|
{ flags: '--bundle', description: 'Bundle --file and its resolved imports into one script before eval' },
|
|
19
20
|
{ flags: '--no-bundle', description: 'Read --file as-is (skip bundling and auto-bundle)' },
|
|
@@ -66,7 +67,12 @@ export const evalCommands = [
|
|
|
66
67
|
'argus eval app "document.title" --iframe "iframe" --iframe-timeout 10000',
|
|
67
68
|
],
|
|
68
69
|
action: async (id, expression, options) => {
|
|
69
|
-
|
|
70
|
+
if (expression != null && options.expression != null) {
|
|
71
|
+
console.error('Provide either a positional expression or --expression, not both.');
|
|
72
|
+
process.exitCode = 2;
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
await runEval(id, expression ?? options.expression, {
|
|
70
76
|
json: options.json,
|
|
71
77
|
await: options.await,
|
|
72
78
|
timeout: options.timeout,
|
|
@@ -144,7 +150,12 @@ export const evalCommands = [
|
|
|
144
150
|
'argus wait app --file ./ready.js --args ./args.json --out ./ready.json',
|
|
145
151
|
],
|
|
146
152
|
action: async (id, expression, options) => {
|
|
147
|
-
|
|
153
|
+
if (expression != null && options.expression != null) {
|
|
154
|
+
console.error('Provide either a positional expression or --expression, not both.');
|
|
155
|
+
process.exitCode = 2;
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
await runEvalUntil(id, expression ?? options.expression, {
|
|
148
159
|
json: options.json,
|
|
149
160
|
await: options.await,
|
|
150
161
|
timeout: options.timeout,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evalCommands.js","sourceRoot":"","sources":["../../../src/cli/register/evalCommands.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"evalCommands.js","sourceRoot":"","sources":["../../../src/cli/register/evalCommands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAEhE,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,WAAqB,EAAE,EAAY,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAA;AAE/F,4FAA4F;AAC5F,MAAM,qBAAqB,GAAG,CAAC,kBAA0B,EAAiC,EAAE,CAAC;IAC5F,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,uBAAuB,EAAE;IAC7D,EAAE,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,kBAAkB,EAAE;IAClE,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;IAC9D,EAAE,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,qCAAqC,EAAE;IACrF,EAAE,KAAK,EAAE,wBAAwB,EAAE,WAAW,EAAE,oDAAoD,EAAE;IACtG,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,wCAAwC,EAAE;IAC/E,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,oDAAoD,EAAE;CAC5F,CAAA;AAED,0FAA0F;AAC1F,MAAM,qBAAqB,GAAkC;IAC5D,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,mEAAmE,EAAE;IAChH,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,6BAA6B,EAAE;IAC1E,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,oEAAoE,EAAE;IACxG,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,mDAAmD,EAAE;IAC1F,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,4BAA4B,EAAE;IAC/D,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,8DAA8D,EAAE;IACzG,EAAE,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,yDAAyD,EAAE;IACxG,EAAE,KAAK,EAAE,2BAA2B,EAAE,WAAW,EAAE,sDAAsD,EAAE;IAC3G,EAAE,KAAK,EAAE,6BAA6B,EAAE,WAAW,EAAE,yEAAyE,EAAE;IAChI,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,+CAA+C,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,EAAE;IACpI,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,yDAAyD,EAAE;CAClG,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAsC;IAC9D;QACC,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,gDAAgD;QAC7D,SAAS,EAAE;YACV,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE;YACrD,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,qDAAqD,EAAE;SAC7F;QACD,OAAO,EAAE;YACR,GAAG,qBAAqB,CAAC,uEAAuE,CAAC;YACjG,EAAE,KAAK,EAAE,0BAA0B,EAAE,WAAW,EAAE,2CAA2C,EAAE;YAC/F,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,+CAA+C,EAAE;YACtF,EAAE,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,gEAAgE,EAAE;YAC/G,GAAG,qBAAqB;YACxB,EAAE,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,6BAA6B,EAAE;YACzE,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,2EAA2E,EAAE;SAC/G;QACD,QAAQ,EAAE;YACT,gCAAgC;YAChC,6DAA6D;YAC7D,mCAAmC;YACnC,4CAA4C;YAC5C,oEAAoE;YACpE,kEAAkE;YAClE,sDAAsD;YACtD,2DAA2D;YAC3D,4DAA4D;YAC5D,2EAA2E;YAC3E,oFAAoF;YACpF,wCAAwC;YACxC,8BAA8B;YAC9B,wDAAwD;YACxD,gCAAgC;YAChC,+BAA+B;YAC/B,uDAAuD;YACvD,+EAA+E;YAC/E,0DAA0D;YAC1D,0EAA0E;SAC1E;QACD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;YACzC,IAAI,UAAU,IAAI,IAAI,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;gBACtD,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAA;gBAClF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;gBACpB,OAAM;YACP,CAAC;YACD,MAAM,OAAO,CAAC,EAAE,EAAE,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE;gBACnD,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,MAAM,EAAE,OAAO,CAAC,MAAM;aACtB,CAAC,CAAA;QACH,CAAC;QACD,WAAW,EAAE;YACZ;gBACC,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,mEAAmE;gBAChF,OAAO,EAAE;oBACR,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC,EAAE;oBAChF,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,+BAA+B,EAAE;oBACnE,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE;oBACtE,EAAE,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,sCAAsC,EAAE;iBACpF;gBACD,QAAQ,EAAE;oBACT,sCAAsC;oBACtC,6CAA6C;oBAC7C,0CAA0C;oBAC1C,4CAA4C;iBAC5C;gBACD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBACzB,MAAM,eAAe,CAAC,OAAO,CAAC,CAAA;gBAC/B,CAAC;aACD;SACD;KACD;IACD;QACC,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,sDAAsD;QACnE,SAAS,EAAE;YACV,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE;YACrD,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,8DAA8D,EAAE;SACtG;QACD,OAAO,EAAE;YACR,GAAG,qBAAqB,CAAC,2EAA2E,CAAC;YACrG,EAAE,KAAK,EAAE,0BAA0B,EAAE,WAAW,EAAE,mCAAmC,EAAE;YACvF,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,yBAAyB,EAAE;YAChE,EAAE,KAAK,EAAE,4BAA4B,EAAE,WAAW,EAAE,oCAAoC,EAAE;YAC1F,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,oCAAoC,EAAE;YACzE,GAAG,qBAAqB;YACxB,EAAE,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,yCAAyC,EAAE;SACrF;QACD,QAAQ,EAAE;YACT,4DAA4D;YAC5D,qDAAqD;YACrD,wDAAwD;YACxD,yEAAyE;YACzE,8CAA8C;YAC9C,6DAA6D;YAC7D,2DAA2D;YAC3D,oEAAoE;YACpE,gFAAgF;YAChF,qEAAqE;YACrE,wEAAwE;SACxE;QACD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;YACzC,IAAI,UAAU,IAAI,IAAI,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;gBACtD,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAA;gBAClF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;gBACpB,OAAM;YACP,CAAC;YACD,MAAM,YAAY,CAAC,EAAE,EAAE,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE;gBACxD,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,GAAG,EAAE,OAAO,CAAC,GAAG;aAChB,CAAC,CAAA;QACH,CAAC;KACD;CACD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fillCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/register/fillCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAIjE,eAAO,MAAM,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"fillCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/register/fillCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAIjE,eAAO,MAAM,WAAW,EAAE,sBA8CzB,CAAA"}
|
|
@@ -12,6 +12,7 @@ export const fillCommand = {
|
|
|
12
12
|
{ flags: '--testid <id>', description: 'Shorthand for --selector "[data-testid=\'<id>\']"' },
|
|
13
13
|
{ flags: '--ref <elementRef>', description: 'Stable element ref from snapshot/locate output' },
|
|
14
14
|
{ flags: '--name <attr>', description: 'Shorthand for --selector "[name=<attr>]"' },
|
|
15
|
+
{ flags: '--value <text>', description: 'Value to fill (alternative to the positional value)' },
|
|
15
16
|
{ flags: '--value-file <path>', description: 'Read value from a file' },
|
|
16
17
|
{ flags: '--value-stdin', description: 'Read value from stdin (also triggered by "-" as value arg)' },
|
|
17
18
|
{ flags: '--all', description: 'Allow multiple matches (default: error if >1 match)' },
|
|
@@ -24,6 +25,7 @@ export const fillCommand = {
|
|
|
24
25
|
'argus fill app --testid "username" "Bob"',
|
|
25
26
|
'argus fill app --ref e7 "Bob"',
|
|
26
27
|
'argus fill app --name "title" "Hello"',
|
|
28
|
+
'argus fill app --selector "#username" --value "Bob"',
|
|
27
29
|
'argus fill app --selector "textarea" "New content"',
|
|
28
30
|
'argus fill app --selector "input[type=text]" --all "reset"',
|
|
29
31
|
'argus fill app --selector "#desc" --value-file ./description.txt',
|
|
@@ -31,6 +33,11 @@ export const fillCommand = {
|
|
|
31
33
|
'argus fill app --selector "#input" - < value.txt',
|
|
32
34
|
],
|
|
33
35
|
action: async (id, value, options) => {
|
|
36
|
+
if (value != null && options.value != null) {
|
|
37
|
+
console.error('Provide either a positional value or --value, not both.');
|
|
38
|
+
process.exitCode = 2;
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
34
41
|
if (options.name && (options.testid || options.ref)) {
|
|
35
42
|
console.error('Cannot use --name with --testid or --ref.');
|
|
36
43
|
process.exitCode = 2;
|
|
@@ -38,7 +45,7 @@ export const fillCommand = {
|
|
|
38
45
|
}
|
|
39
46
|
if (!resolveTestId(options))
|
|
40
47
|
return;
|
|
41
|
-
await runDomFill(id, value, options);
|
|
48
|
+
await runDomFill(id, value ?? options.value, options);
|
|
42
49
|
},
|
|
43
50
|
};
|
|
44
51
|
//# sourceMappingURL=fillCommand.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fillCommand.js","sourceRoot":"","sources":["../../../src/cli/register/fillCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAE/D,MAAM,CAAC,MAAM,WAAW,GAA2B;IAClD,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,2DAA2D;IACxE,SAAS,EAAE;QACV,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE;QACrD,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,qEAAqE,EAAE;KACxG;IACD,OAAO,EAAE;QACR,EAAE,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,oCAAoC,EAAE;QAChF,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,mDAAmD,EAAE;QAC5F,EAAE,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,gDAAgD,EAAE;QAC9F,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,0CAA0C,EAAE;QACnF,EAAE,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,wBAAwB,EAAE;QACvE,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,4DAA4D,EAAE;QACrG,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,qDAAqD,EAAE;QACtF,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,+DAA+D,EAAE;QAC1G,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,8CAA8C,EAAE;QAC3F,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;KAC9D;IACD,QAAQ,EAAE;QACT,6CAA6C;QAC7C,0CAA0C;QAC1C,+BAA+B;QAC/B,uCAAuC;QACvC,oDAAoD;QACpD,4DAA4D;QAC5D,kEAAkE;QAClE,iEAAiE;QACjE,kDAAkD;KAClD;IACD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAA;YAC1D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpB,OAAM;QACP,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAAE,OAAM;QACnC,MAAM,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"fillCommand.js","sourceRoot":"","sources":["../../../src/cli/register/fillCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAE/D,MAAM,CAAC,MAAM,WAAW,GAA2B;IAClD,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,2DAA2D;IACxE,SAAS,EAAE;QACV,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE;QACrD,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,qEAAqE,EAAE;KACxG;IACD,OAAO,EAAE;QACR,EAAE,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,oCAAoC,EAAE;QAChF,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,mDAAmD,EAAE;QAC5F,EAAE,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,gDAAgD,EAAE;QAC9F,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,0CAA0C,EAAE;QACnF,EAAE,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,qDAAqD,EAAE;QAC/F,EAAE,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,wBAAwB,EAAE;QACvE,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,4DAA4D,EAAE;QACrG,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,qDAAqD,EAAE;QACtF,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,+DAA+D,EAAE;QAC1G,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,8CAA8C,EAAE;QAC3F,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;KAC9D;IACD,QAAQ,EAAE;QACT,6CAA6C;QAC7C,0CAA0C;QAC1C,+BAA+B;QAC/B,uCAAuC;QACvC,qDAAqD;QACrD,oDAAoD;QACpD,4DAA4D;QAC5D,kEAAkE;QAClE,iEAAiE;QACjE,kDAAkD;KAClD;IACD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAA;YACxE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpB,OAAM;QACP,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAA;YAC1D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpB,OAAM;QACP,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAAE,OAAM;QACnC,MAAM,UAAU,CAAC,EAAE,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACtD,CAAC;CACD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domFill.d.ts","sourceRoot":"","sources":["../../src/commands/domFill.ts"],"names":[],"mappings":"AASA,wCAAwC;AACxC,MAAM,MAAM,cAAc,GAAG;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,mGAAmG;AACnG,eAAO,MAAM,UAAU,4GAWrB,CAAA"}
|
|
1
|
+
{"version":3,"file":"domFill.d.ts","sourceRoot":"","sources":["../../src/commands/domFill.ts"],"names":[],"mappings":"AASA,wCAAwC;AACxC,MAAM,MAAM,cAAc,GAAG;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,mGAAmG;AACnG,eAAO,MAAM,UAAU,4GAWrB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domFill.js","sourceRoot":"","sources":["../../src/commands/domFill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,EAAE,oBAAoB,EAA2B,MAAM,gCAAgC,CAAA;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"domFill.js","sourceRoot":"","sources":["../../src/commands/domFill.ts"],"names":[],"mappings":"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"}
|
|
@@ -158,6 +158,15 @@ const inspectWatcher = async (id, diagnostics) => {
|
|
|
158
158
|
if (!bridge) {
|
|
159
159
|
issues.push(`Watcher ${resolved.watcher.id} is not present in extension diagnostics.`);
|
|
160
160
|
}
|
|
161
|
+
else if (!bridge.connected) {
|
|
162
|
+
issues.push(`Watcher ${resolved.watcher.id} native bridge is disconnected.`);
|
|
163
|
+
}
|
|
164
|
+
if (status.ok && !status.status.attached) {
|
|
165
|
+
issues.push(`Watcher ${resolved.watcher.id} has no debugger-attached target.`);
|
|
166
|
+
}
|
|
167
|
+
if (status.ok && status.status.targetReady === false) {
|
|
168
|
+
issues.push(`Watcher ${resolved.watcher.id} selected target is not ready for commands.`);
|
|
169
|
+
}
|
|
161
170
|
if (status.ok && status.status.attached && !selectedTarget) {
|
|
162
171
|
issues.push(`Watcher ${resolved.watcher.id} is attached, but no selected target was reported by /targets.`);
|
|
163
172
|
}
|