@wdio/config 9.27.2 → 9.29.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.
@@ -4,6 +4,7 @@ type Spec = string | string[];
4
4
  interface TestrunnerOptionsWithParameters extends Options.Testrunner {
5
5
  watch?: boolean;
6
6
  coverage?: boolean;
7
+ headless?: boolean;
7
8
  spec?: string[];
8
9
  suite?: string[];
9
10
  repeat?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigParser.d.ts","sourceRoot":"","sources":["../../src/node/ConfigParser.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAa,QAAQ,EAAE,MAAM,aAAa,CAAA;AAO7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAM9C,KAAK,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;AAK7B,UAAU,+BAAgC,SAAQ,OAAO,CAAC,UAAU;IAChE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,YAAY,CAAC,sBAAsB,CAAA;IAClD,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,UAAU,WAAY,SAAQ,IAAI,CAAC,OAAO,CAAC,+BAA+B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7F,KAAK,CAAC,EAAE,IAAI,EAAE,CAAA;IACd,YAAY,CAAC,EAAE,IAAI,EAAE,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,CAAC,OAAO,OAAO,YAAY;;IAQzB;;;OAGG;IACH,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,YAAY;IAVxB,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,aAAa,CAAC,CAA0C;gBAG5D,cAAc,EAAE,MAAM;IACtB;;;OAGG;IACK,cAAc,GAAE,OAAO,CAAC,+BAA+B,CAAM,EAC7D,YAAY,GAAE,WAAyC;IAmBnE;;OAEG;IACG,UAAU,CAAC,MAAM,GAAE,WAAgB;IAgCzC;;;OAGG;YACW,aAAa;IA6D3B;;;;OAIG;IACH,OAAO,CAAC,KAAK;IA4Eb;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK;IAkClC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE;IAgF/C;;;;;;;;OAQG;IACH,0BAA0B,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO;IAgDnF;;OAEG;IACH,SAAS,IAIkB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;IAGvD;;OAEG;IACH,eAAe,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,sBAAsB,GAAG,YAAY,CAAC,+BAA+B;IAY/G;;;;;;;;OAQG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,WAAyC,EAAE,cAAc,CAAC,EAAE,MAAM;IAkDtI;;;;;;OAMG;IACH,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE;IA2BhD,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE;CAWtB"}
1
+ {"version":3,"file":"ConfigParser.d.ts","sourceRoot":"","sources":["../../src/node/ConfigParser.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAa,QAAQ,EAAE,MAAM,aAAa,CAAA;AAO7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAM9C,KAAK,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;AAK7B,UAAU,+BAAgC,SAAQ,OAAO,CAAC,UAAU;IAChE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,YAAY,CAAC,sBAAsB,CAAA;IAClD,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,UAAU,WAAY,SAAQ,IAAI,CAAC,OAAO,CAAC,+BAA+B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7F,KAAK,CAAC,EAAE,IAAI,EAAE,CAAA;IACd,YAAY,CAAC,EAAE,IAAI,EAAE,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,CAAC,OAAO,OAAO,YAAY;;IAQzB;;;OAGG;IACH,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,YAAY;IAVxB,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,aAAa,CAAC,CAA0C;gBAG5D,cAAc,EAAE,MAAM;IACtB;;;OAGG;IACK,cAAc,GAAE,OAAO,CAAC,+BAA+B,CAAM,EAC7D,YAAY,GAAE,WAAyC;IAmBnE;;OAEG;IACG,UAAU,CAAC,MAAM,GAAE,WAAgB;IA8CzC;;;OAGG;YACW,aAAa;IA6D3B;;;;OAIG;IACH,OAAO,CAAC,KAAK;IA4Eb;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK;IAkClC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE;IAgF/C;;;;;;;;OAQG;IACH,0BAA0B,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO;IAgDnF;;OAEG;IACH,SAAS,IAIkB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;IAGvD;;OAEG;IACH,eAAe,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,sBAAsB,GAAG,YAAY,CAAC,+BAA+B;IAY/G;;;;;;;;OAQG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,WAAyC,EAAE,cAAc,CAAC,EAAE,MAAM;IAkDtI;;;;;;OAMG;IACH,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE;IA2BhD,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE;CAWtB"}
@@ -208,6 +208,43 @@ var NO_NAMED_CONFIG_EXPORT = 'No named export object called "config" found. Make
208
208
 
209
209
  // src/utils.ts
210
210
  var validObjectOrArray = (object) => Array.isArray(object) && object.length > 0 || typeof object === "object" && Object.keys(object).length > 0;
211
+ function applyHeadlessFlag(caps, headless) {
212
+ const target = caps.alwaysMatch || caps;
213
+ const browser = (target.browserName || "").toLowerCase();
214
+ if (!browser && !("alwaysMatch" in caps)) {
215
+ for (const key of Object.keys(caps)) {
216
+ const val = caps[key];
217
+ if (val && typeof val === "object" && val.browserName) {
218
+ applyHeadlessFlag(val, headless);
219
+ }
220
+ }
221
+ return caps;
222
+ }
223
+ if (browser === "chrome" || browser === "chromium") {
224
+ const opts = target["goog:chromeOptions"] || {};
225
+ const args = opts.args || [];
226
+ const alreadyHasHeadless = args.some((a) => a === "--headless" || a === "headless" || a.startsWith("--headless="));
227
+ target["goog:chromeOptions"] = {
228
+ ...opts,
229
+ args: headless ? Array.from(/* @__PURE__ */ new Set([...args, ...alreadyHasHeadless ? [] : ["--headless"], "--disable-gpu"])) : args.filter((a) => a !== "--headless" && a !== "headless" && !a.startsWith("--headless="))
230
+ };
231
+ } else if (browser === "firefox") {
232
+ const opts = target["moz:firefoxOptions"] || {};
233
+ const args = opts.args || [];
234
+ target["moz:firefoxOptions"] = {
235
+ ...opts,
236
+ args: headless ? Array.from(/* @__PURE__ */ new Set([...args, "-headless"])) : args.filter((a) => a !== "-headless" && a !== "--headless")
237
+ };
238
+ } else if (browser === "microsoftedge" || browser === "msedge" || browser === "edge") {
239
+ const opts = target["ms:edgeOptions"] || {};
240
+ const args = opts.args || [];
241
+ target["ms:edgeOptions"] = {
242
+ ...opts,
243
+ args: headless ? Array.from(/* @__PURE__ */ new Set([...args, "--headless"])) : args.filter((a) => a !== "--headless" && a !== "headless" && !a.startsWith("--headless="))
244
+ };
245
+ }
246
+ return caps;
247
+ }
211
248
  function removeLineNumbers(filePath) {
212
249
  const matcher = filePath.match(/:\d+(:\d+$|$)/);
213
250
  if (matcher) {
@@ -237,6 +274,8 @@ var ConfigParser = class _ConfigParser {
237
274
  }
238
275
  this.merge(_initialConfig, false);
239
276
  }
277
+ _initialConfig;
278
+ _pathService;
240
279
  #isInitialised = false;
241
280
  #configFilePath;
242
281
  _config;
@@ -262,6 +301,16 @@ var ConfigParser = class _ConfigParser {
262
301
  };
263
302
  }
264
303
  }
304
+ if (typeof this._initialConfig.headless === "boolean") {
305
+ const headless = this._initialConfig.headless;
306
+ if (Array.isArray(this._capabilities)) {
307
+ for (const cap of this._capabilities) {
308
+ applyHeadlessFlag(cap, headless);
309
+ }
310
+ } else if (this._capabilities && typeof this._capabilities === "object") {
311
+ applyHeadlessFlag(this._capabilities, headless);
312
+ }
313
+ }
265
314
  this.#isInitialised = true;
266
315
  }
267
316
  /**
package/build/utils.d.ts CHANGED
@@ -1,5 +1,10 @@
1
1
  import type { Options } from '@wdio/types';
2
2
  export declare const validObjectOrArray: (object: object) => object is object | Array<unknown>;
3
+ /**
4
+ * Inject or strip headless CLI args from a single capability object.
5
+ * Handles Chrome/Chromium, Firefox, and Edge.
6
+ */
7
+ export declare function applyHeadlessFlag(caps: WebdriverIO.Capabilities, headless: boolean): WebdriverIO.Capabilities;
3
8
  /**
4
9
  * remove line numbers from file path, ex:
5
10
  * `/foo:9` or `c:\bar:14:5`
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAG1C,eAAO,MAAM,kBAAkB,GAAI,QAAQ,MAAM,KAAG,MAAM,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAClB,CAAA;AAElE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,UAMjD;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,WAGtE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,WAE/D;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,UAAU,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,KAAG,WAAW,CAAC,MAGpG,CAAA;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,GAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KA+C5G"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAG1C,eAAO,MAAM,kBAAkB,GAAI,QAAQ,MAAM,KAAG,MAAM,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAClB,CAAA;AAElE;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,GAAG,WAAW,CAAC,YAAY,CA8C7G;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,UAMjD;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,WAGtE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,WAE/D;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,UAAU,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,KAAG,WAAW,CAAC,MAGpG,CAAA;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,GAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KA+C5G"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wdio/config",
3
- "version": "9.27.2",
3
+ "version": "9.29.0",
4
4
  "description": "A helper utility to parse and validate WebdriverIO options",
5
5
  "author": "Christian Bromann <mail@bromann.dev>",
6
6
  "homepage": "https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-config",
@@ -37,8 +37,8 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "@wdio/logger": "9.18.0",
40
- "@wdio/types": "9.27.2",
41
- "@wdio/utils": "9.27.2",
40
+ "@wdio/types": "9.29.0",
41
+ "@wdio/utils": "9.29.0",
42
42
  "deepmerge-ts": "^7.0.3",
43
43
  "glob": "^10.2.2",
44
44
  "import-meta-resolve": "^4.0.0",
@@ -50,5 +50,5 @@
50
50
  "devDependencies": {
51
51
  "minimatch": "^9.0.0"
52
52
  },
53
- "gitHead": "a95ab41f3ac1fd9510341a21d365a359528212ac"
53
+ "gitHead": "c7808c59ca3ab6a677230cebd688454426cba0f2"
54
54
  }