@midscene/cli 1.5.7 → 1.5.8-beta-20260324073120.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/lib/index.js CHANGED
@@ -3015,9 +3015,7 @@ var __webpack_modules__ = {
3015
3015
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
3016
3016
  var main = __webpack_require__("../../node_modules/.pnpm/dotenv@16.4.5/node_modules/dotenv/lib/main.js");
3017
3017
  var main_default = /*#__PURE__*/ __webpack_require__.n(main);
3018
- var package_namespaceObject = {
3019
- rE: "1.5.7"
3020
- };
3018
+ var package_namespaceObject = JSON.parse('{"rE":"1.5.8-beta-20260324073120.0"}');
3021
3019
  const yaml_namespaceObject = require("@midscene/core/yaml");
3022
3020
  const common_namespaceObject = require("@midscene/shared/common");
3023
3021
  const puppeteer_agent_launcher_namespaceObject = require("@midscene/web/puppeteer-agent-launcher");
@@ -3212,6 +3210,28 @@ var __webpack_modules__ = {
3212
3210
  urlToVisit = webTarget.url.startsWith('/') ? `http://${serverAddress?.address}:${serverAddress?.port}${webTarget.url}` : `http://${serverAddress?.address}:${serverAddress?.port}/${webTarget.url}`;
3213
3211
  webTarget.url = urlToVisit;
3214
3212
  }
3213
+ if (webTarget.cdpEndpoint && webTarget.bridgeMode) throw new Error('cdpEndpoint and bridgeMode are mutually exclusive. Please specify only one.');
3214
+ if (webTarget.cdpEndpoint) {
3215
+ const cdpBrowser = options?.browser ?? await external_puppeteer_default().connect({
3216
+ browserWSEndpoint: webTarget.cdpEndpoint,
3217
+ defaultViewport: null
3218
+ });
3219
+ if (webTarget.chromeArgs) console.warn('chromeArgs are not supported in CDP mode (browser is already running). They will be ignored.');
3220
+ const { agent, freeFn: newFreeFn } = await (0, puppeteer_agent_launcher_namespaceObject.puppeteerAgentForTarget)(webTarget, {
3221
+ ...preference,
3222
+ ...buildAgentOptions(clonedYamlScript.agent, preference.testId, fileName)
3223
+ }, cdpBrowser, options?.page);
3224
+ const cleanFreeFn = newFreeFn.filter((f)=>'puppeteer_browser' !== f.name);
3225
+ if (!options?.browser) cleanFreeFn.push({
3226
+ name: 'cdp_browser_disconnect',
3227
+ fn: ()=>cdpBrowser.disconnect()
3228
+ });
3229
+ freeFn.push(...cleanFreeFn);
3230
+ return {
3231
+ agent,
3232
+ freeFn
3233
+ };
3234
+ }
3215
3235
  if (!webTarget.bridgeMode) {
3216
3236
  const { agent, freeFn: newFreeFn } = await (0, puppeteer_agent_launcher_namespaceObject.puppeteerAgentForTarget)(webTarget, {
3217
3237
  ...preference,
@@ -3783,25 +3803,31 @@ var __webpack_modules__ = {
3783
3803
  const needsBrowser = fileContextList.some((ctx)=>Object.keys(ctx.executionConfig.web || ctx.executionConfig.target || {}).length > 0);
3784
3804
  if (needsBrowser && this.config.shareBrowserContext) {
3785
3805
  const globalWebConfig = this.config.globalConfig?.web;
3786
- const width = globalWebConfig?.viewportWidth ?? puppeteer_agent_launcher_namespaceObject.defaultViewportWidth;
3787
- const height = globalWebConfig?.viewportHeight ?? puppeteer_agent_launcher_namespaceObject.defaultViewportHeight;
3788
- const args = (0, puppeteer_agent_launcher_namespaceObject.buildChromeArgs)({
3789
- userAgent: globalWebConfig?.userAgent,
3790
- windowSize: headed ? {
3791
- width,
3792
- height
3793
- } : void 0,
3794
- chromeArgs: globalWebConfig?.chromeArgs
3795
- });
3796
- browser = await external_puppeteer_default().launch({
3797
- headless: !headed,
3798
- defaultViewport: headed ? null : {
3799
- width,
3800
- height
3801
- },
3802
- args,
3803
- acceptInsecureCerts: globalWebConfig?.acceptInsecureCerts
3806
+ if (globalWebConfig?.cdpEndpoint) browser = await external_puppeteer_default().connect({
3807
+ browserWSEndpoint: globalWebConfig.cdpEndpoint,
3808
+ defaultViewport: null
3804
3809
  });
3810
+ else {
3811
+ const width = globalWebConfig?.viewportWidth ?? puppeteer_agent_launcher_namespaceObject.defaultViewportWidth;
3812
+ const height = globalWebConfig?.viewportHeight ?? puppeteer_agent_launcher_namespaceObject.defaultViewportHeight;
3813
+ const args = (0, puppeteer_agent_launcher_namespaceObject.buildChromeArgs)({
3814
+ userAgent: globalWebConfig?.userAgent,
3815
+ windowSize: headed ? {
3816
+ width,
3817
+ height
3818
+ } : void 0,
3819
+ chromeArgs: globalWebConfig?.chromeArgs
3820
+ });
3821
+ browser = await external_puppeteer_default().launch({
3822
+ headless: !headed,
3823
+ defaultViewport: headed ? null : {
3824
+ width,
3825
+ height
3826
+ },
3827
+ args,
3828
+ acceptInsecureCerts: globalWebConfig?.acceptInsecureCerts
3829
+ });
3830
+ }
3805
3831
  sharedPage = await browser.newPage();
3806
3832
  for (const context of fileContextList){
3807
3833
  context.options.browser = browser;
@@ -3811,7 +3837,11 @@ var __webpack_modules__ = {
3811
3837
  const { executedResults, notExecutedContexts } = await this.executeFiles(fileContextList);
3812
3838
  this.results = await this.processResults(executedResults, notExecutedContexts);
3813
3839
  } finally{
3814
- if (browser && !this.config.keepWindow) await browser.close();
3840
+ if (browser && !this.config.keepWindow) {
3841
+ const isCdp = !!this.config.globalConfig?.web?.cdpEndpoint;
3842
+ if (isCdp) browser.disconnect();
3843
+ else await browser.close();
3844
+ }
3815
3845
  await this.generateOutputIndex();
3816
3846
  }
3817
3847
  return this.results;
@@ -11940,7 +11970,7 @@ Usage:
11940
11970
  type: 'boolean',
11941
11971
  description: `Turn on logging to help debug why certain keys or values are not being set as you expect, default is ${config_factory_defaultConfig.dotenvDebug}`
11942
11972
  }
11943
- }).version('version', 'Show version number', "1.5.7").help().epilogue(`For complete list of configuration options, please visit:
11973
+ }).version('version', 'Show version number', "1.5.8-beta-20260324073120.0").help().epilogue(`For complete list of configuration options, please visit:
11944
11974
  • Web options: https://midscenejs.com/automate-with-scripts-in-yaml#the-web-part
11945
11975
  • Android options: https://midscenejs.com/automate-with-scripts-in-yaml#the-android-part
11946
11976
  • iOS options: https://midscenejs.com/automate-with-scripts-in-yaml#the-ios-part