@midscene/cli 0.14.3 → 0.14.4-beta-20250415065130.0
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/es/index.js +76 -49
- package/dist/es/index.js.map +1 -1
- package/dist/lib/index.js +76 -49
- package/dist/lib/index.js.map +1 -1
- package/package.json +4 -3
package/dist/lib/index.js
CHANGED
|
@@ -13950,7 +13950,7 @@ Usage: $0 [options] <path-to-yaml-script-file-or-directory>`
|
|
|
13950
13950
|
default: false,
|
|
13951
13951
|
description: "Keep the browser window open after the script finishes. This is useful when debugging, but will consume more resources"
|
|
13952
13952
|
}
|
|
13953
|
-
}).version("version", "Show version number", "0.14.
|
|
13953
|
+
}).version("version", "Show version number", "0.14.4-beta-20250415065130.0").help().wrap(yargs_default().terminalWidth());
|
|
13954
13954
|
const argv = await args.argv;
|
|
13955
13955
|
return {
|
|
13956
13956
|
path: argv._[0],
|
|
@@ -14595,6 +14595,7 @@ function getRenderedRowCount(contents, stream2) {
|
|
|
14595
14595
|
|
|
14596
14596
|
// src/yaml-runner.ts
|
|
14597
14597
|
var import_node_assert = __toESM(require("assert"));
|
|
14598
|
+
var import_android = require("@midscene/android");
|
|
14598
14599
|
var import_bridge_mode = require("@midscene/web/bridge-mode");
|
|
14599
14600
|
var import_puppeteer = require("@midscene/web/puppeteer");
|
|
14600
14601
|
var launchServer = async (dir) => {
|
|
@@ -14621,60 +14622,86 @@ async function playYamlFiles(files, options) {
|
|
|
14621
14622
|
};
|
|
14622
14623
|
const player = new import_yaml.ScriptPlayer(script, async (target) => {
|
|
14623
14624
|
const freeFn = [];
|
|
14624
|
-
|
|
14625
|
-
|
|
14626
|
-
|
|
14627
|
-
|
|
14628
|
-
|
|
14629
|
-
|
|
14630
|
-
|
|
14631
|
-
|
|
14632
|
-
|
|
14625
|
+
const webTarget = script.web || script.target;
|
|
14626
|
+
if (webTarget) {
|
|
14627
|
+
if (script.target) {
|
|
14628
|
+
console.warn(
|
|
14629
|
+
"target is deprecated, please use web instead. See https://midscenejs.com/automate-with-scripts-in-yaml for more information. Sorry for the inconvenience."
|
|
14630
|
+
);
|
|
14631
|
+
}
|
|
14632
|
+
let localServer;
|
|
14633
|
+
let urlToVisit;
|
|
14634
|
+
if (webTarget.serve) {
|
|
14635
|
+
(0, import_node_assert.default)(
|
|
14636
|
+
typeof webTarget.url === "string",
|
|
14637
|
+
"url is required in serve mode"
|
|
14638
|
+
);
|
|
14639
|
+
localServer = await launchServer(webTarget.serve);
|
|
14640
|
+
const serverAddress = localServer.server.address();
|
|
14641
|
+
freeFn.push({
|
|
14642
|
+
name: "local_server",
|
|
14643
|
+
fn: () => localServer?.server.close()
|
|
14644
|
+
});
|
|
14645
|
+
if (webTarget.url.startsWith("/")) {
|
|
14646
|
+
urlToVisit = `http://${serverAddress?.address}:${serverAddress?.port}${webTarget.url}`;
|
|
14647
|
+
} else {
|
|
14648
|
+
urlToVisit = `http://${serverAddress?.address}:${serverAddress?.port}/${webTarget.url}`;
|
|
14649
|
+
}
|
|
14650
|
+
webTarget.url = urlToVisit;
|
|
14651
|
+
}
|
|
14652
|
+
if (!webTarget.bridgeMode) {
|
|
14653
|
+
const { agent: agent2, freeFn: newFreeFn } = await (0, import_puppeteer.puppeteerAgentForTarget)(
|
|
14654
|
+
webTarget,
|
|
14655
|
+
preference
|
|
14656
|
+
);
|
|
14657
|
+
freeFn.push(...newFreeFn);
|
|
14658
|
+
return { agent: agent2, freeFn };
|
|
14659
|
+
}
|
|
14660
|
+
(0, import_node_assert.default)(
|
|
14661
|
+
webTarget.bridgeMode === "newTabWithUrl" || webTarget.bridgeMode === "currentTab",
|
|
14662
|
+
`bridgeMode config value must be either "newTabWithUrl" or "currentTab", but got ${webTarget.bridgeMode}`
|
|
14663
|
+
);
|
|
14664
|
+
if (webTarget.userAgent || webTarget.viewportWidth || webTarget.viewportHeight || webTarget.viewportScale || webTarget.waitForNetworkIdle || webTarget.cookie) {
|
|
14665
|
+
console.warn(
|
|
14666
|
+
"puppeteer options (userAgent, viewportWidth, viewportHeight, viewportScale, waitForNetworkIdle, cookie) are not supported in bridge mode. They will be ignored."
|
|
14667
|
+
);
|
|
14668
|
+
}
|
|
14669
|
+
const agent = new import_bridge_mode.AgentOverChromeBridge({
|
|
14670
|
+
closeNewTabsAfterDisconnect: webTarget.closeNewTabsAfterDisconnect,
|
|
14671
|
+
cacheId: fileName
|
|
14633
14672
|
});
|
|
14634
|
-
if (
|
|
14635
|
-
|
|
14673
|
+
if (webTarget.bridgeMode === "newTabWithUrl") {
|
|
14674
|
+
await agent.connectNewTabWithUrl(webTarget.url);
|
|
14636
14675
|
} else {
|
|
14637
|
-
|
|
14676
|
+
if (webTarget.url) {
|
|
14677
|
+
console.warn(
|
|
14678
|
+
'url will be ignored in bridge mode with "currentTab"'
|
|
14679
|
+
);
|
|
14680
|
+
}
|
|
14681
|
+
await agent.connectCurrentTab();
|
|
14638
14682
|
}
|
|
14639
|
-
|
|
14683
|
+
freeFn.push({
|
|
14684
|
+
name: "destroy_agent_over_chrome_bridge",
|
|
14685
|
+
fn: () => agent.destroy()
|
|
14686
|
+
});
|
|
14687
|
+
return {
|
|
14688
|
+
agent,
|
|
14689
|
+
freeFn
|
|
14690
|
+
};
|
|
14640
14691
|
}
|
|
14641
|
-
if (
|
|
14642
|
-
const
|
|
14643
|
-
|
|
14644
|
-
|
|
14645
|
-
|
|
14646
|
-
|
|
14647
|
-
|
|
14692
|
+
if (script.android) {
|
|
14693
|
+
const androidTarget = script.android;
|
|
14694
|
+
const agent = await (0, import_android.agentFromAdbDevice)(androidTarget.deviceId);
|
|
14695
|
+
await agent.launch(androidTarget.launch);
|
|
14696
|
+
freeFn.push({
|
|
14697
|
+
name: "destroy_android_agent",
|
|
14698
|
+
fn: () => agent.destroy()
|
|
14699
|
+
});
|
|
14700
|
+
return { agent, freeFn };
|
|
14648
14701
|
}
|
|
14649
|
-
|
|
14650
|
-
target
|
|
14651
|
-
`bridgeMode config value must be either "newTabWithUrl" or "currentTab", but got ${target.bridgeMode}`
|
|
14702
|
+
throw new Error(
|
|
14703
|
+
'No valid target configuration found in the yaml script, should be either "web" or "android"'
|
|
14652
14704
|
);
|
|
14653
|
-
if (target.userAgent || target.viewportWidth || target.viewportHeight || target.viewportScale || target.waitForNetworkIdle || target.cookie) {
|
|
14654
|
-
console.warn(
|
|
14655
|
-
"puppeteer options (userAgent, viewportWidth, viewportHeight, viewportScale, waitForNetworkIdle, cookie) are not supported in bridge mode. They will be ignored."
|
|
14656
|
-
);
|
|
14657
|
-
}
|
|
14658
|
-
const agent = new import_bridge_mode.AgentOverChromeBridge({
|
|
14659
|
-
closeNewTabsAfterDisconnect: target.closeNewTabsAfterDisconnect,
|
|
14660
|
-
cacheId: fileName
|
|
14661
|
-
});
|
|
14662
|
-
if (target.bridgeMode === "newTabWithUrl") {
|
|
14663
|
-
await agent.connectNewTabWithUrl(target.url);
|
|
14664
|
-
} else {
|
|
14665
|
-
if (target.url) {
|
|
14666
|
-
console.warn('url will be ignored in bridge mode with "currentTab"');
|
|
14667
|
-
}
|
|
14668
|
-
await agent.connectCurrentTab();
|
|
14669
|
-
}
|
|
14670
|
-
freeFn.push({
|
|
14671
|
-
name: "destroy_agent_over_chrome_bridge",
|
|
14672
|
-
fn: () => agent.destroy()
|
|
14673
|
-
});
|
|
14674
|
-
return {
|
|
14675
|
-
agent,
|
|
14676
|
-
freeFn
|
|
14677
|
-
};
|
|
14678
14705
|
});
|
|
14679
14706
|
fileContextList.push({ file, player });
|
|
14680
14707
|
}
|