@wdio/browser-runner 9.2.0 → 9.2.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/browser/driver.ts"],"names":[],"mappings":"AA6BA,MAAM,CAAC,OAAO,OAAO,WAAW;;WAGf,UAAU,CACnB,MAAM,EAAE,GAAG,EACX,QAAQ,EAAE,KAAK,EACf,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,EACjD,cAAc,EAAE,GAAG;CA0P1B"}
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/browser/driver.ts"],"names":[],"mappings":"AA8BA,MAAM,CAAC,OAAO,OAAO,WAAW;;WAGf,UAAU,CACnB,MAAM,EAAE,GAAG,EACX,QAAQ,EAAE,KAAK,EACf,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,EACjD,cAAc,EAAE,GAAG;CAgQ1B"}
@@ -11,7 +11,6 @@ import { commands } from "virtual:wdio";
11
11
  import { webdriverMonad, sessionEnvironmentDetector } from "@wdio/utils";
12
12
  import { getEnvironmentVars, initiateBidi, parseBidiMessage } from "webdriver";
13
13
  import { MESSAGE_TYPES } from "@wdio/types";
14
- import { browser } from "@wdio/globals";
15
14
  import safeStringify from "safe-stringify";
16
15
  import EventEmitter from "events";
17
16
 
@@ -68,6 +67,7 @@ var CONSOLE_METHODS = ["log", "info", "warn", "error", "debug"];
68
67
  var HIDE_REPORTER_FOR_COMMANDS = ["saveScreenshot", "savePDF"];
69
68
  var mochaFramework = document.querySelector("mocha-framework");
70
69
  var id = 0;
70
+ var browser;
71
71
  var _commandMessages, _ProxyDriver_static, getMockedCommand_fn, handleServerMessage_fn, handleCommandResponse_fn, handleBrowserInitiation_fn, wrapConsolePrototype_fn, commandRequest_fn, consoleMessage_fn;
72
72
  var ProxyDriver = class {
73
73
  static async newSession(params, modifier, userPrototype, commandWrapper) {
@@ -147,6 +147,7 @@ var ProxyDriver = class {
147
147
  type: MESSAGE_TYPES.initiateBrowserStateRequest,
148
148
  value: { cid }
149
149
  });
150
+ browser = client;
150
151
  return client;
151
152
  }
152
153
  };
@@ -219,6 +220,9 @@ handleBrowserInitiation_fn = function(value) {
219
220
  if (!cid) {
220
221
  return;
221
222
  }
223
+ if (!browser) {
224
+ throw new Error("Could not connect to browser");
225
+ }
222
226
  for (const commandName of value.customCommands) {
223
227
  browser.addCommand(commandName, __privateMethod(this, _ProxyDriver_static, getMockedCommand_fn).call(this, commandName));
224
228
  }
package/build/index.js CHANGED
@@ -123,12 +123,14 @@ import path from "node:path";
123
123
  import logger from "@wdio/logger";
124
124
  import { resolve } from "import-meta-resolve";
125
125
  var log = logger("@wdio/browser-runner");
126
+ var __dirname = path.dirname(url.fileURLToPath(import.meta.url));
126
127
  async function getTemplate(options, env, spec, p = process) {
127
128
  const root = options.rootDir || process.cwd();
128
- const rootFileUrl = url.pathToFileURL(root).href;
129
129
  const isHeadless = options.headless || Boolean(process.env.CI);
130
130
  const alias = options.viteConfig?.resolve?.alias || {};
131
131
  const usesTailwindCSS = await hasFileByExtensions(path.join(root, "tailwind.config"));
132
+ const mochaCSSHref = path.join(__dirname, "third_party", "mocha.css");
133
+ const mochaJSSrc = path.join(__dirname, "third_party", "mocha.js");
132
134
  if ("runner" in env.config) {
133
135
  delete env.config.runner;
134
136
  }
@@ -142,9 +144,6 @@ async function getTemplate(options, env, spec, p = process) {
142
144
  } catch (err) {
143
145
  log.error(`Failed to setup source-map-support: ${err.message}`);
144
146
  }
145
- const mochaPath = await resolve("mocha", `${rootFileUrl}/node_modules`);
146
- const mochaCSSHref = path.join(url.fileURLToPath(path.dirname(mochaPath)), "mocha.css");
147
- const mochaJSSrc = path.join(url.fileURLToPath(path.dirname(mochaPath)), "mocha.js");
148
147
  return (
149
148
  /* html */
150
149
  `
@@ -309,7 +308,7 @@ function getErrorTemplate(filename, error) {
309
308
 
310
309
  // src/vite/plugins/testrunner.ts
311
310
  var log2 = logger2("@wdio/browser-runner:plugin");
312
- var __dirname = url2.fileURLToPath(new URL(".", import.meta.url));
311
+ var __dirname2 = url2.fileURLToPath(new URL(".", import.meta.url));
313
312
  var commands = deepmerge(
314
313
  WebDriverProtocol,
315
314
  MJsonWProtocol,
@@ -348,7 +347,7 @@ var POLYFILLS = [
348
347
  ...builtinModules.map((m) => `node:${m}`)
349
348
  ];
350
349
  function testrunner(options) {
351
- const browserModules = path2.resolve(__dirname, "browser");
350
+ const browserModules = path2.resolve(__dirname2, "browser");
352
351
  const automationProtocolPath = `/@fs${url2.pathToFileURL(path2.resolve(browserModules, "driver.js")).pathname}`;
353
352
  const mockModulePath = path2.resolve(browserModules, "mock.js");
354
353
  const setupModulePath = path2.resolve(browserModules, "setup.js");
@@ -1045,7 +1044,7 @@ async function optimizeForTailwindCSS(rootDir) {
1045
1044
  import path8 from "node:path";
1046
1045
  import url6 from "node:url";
1047
1046
  import { findStaticImports, parseStaticImport } from "mlly";
1048
- var __dirname2 = url6.fileURLToPath(new URL(".", import.meta.url));
1047
+ var __dirname3 = url6.fileURLToPath(new URL(".", import.meta.url));
1049
1048
  var STENCIL_IMPORT = "@stencil/core";
1050
1049
  async function isUsingStencilJS(rootDir, options) {
1051
1050
  return Boolean(options.preset === "stencil" || await hasFileByExtensions(path8.join(rootDir, "stencil.config")));
@@ -1070,7 +1069,7 @@ async function optimizeForStencil(rootDir) {
1070
1069
  }
1071
1070
  async function stencilVitePlugin(rootDir) {
1072
1071
  const { transpileSync, ts } = await import("@stencil/core/compiler/stencil.js");
1073
- const stencilHelperPath = path8.resolve(__dirname2, "browser", "integrations", "stencil.js");
1072
+ const stencilHelperPath = path8.resolve(__dirname3, "browser", "integrations", "stencil.js");
1074
1073
  return {
1075
1074
  name: "wdio-stencil",
1076
1075
  enforce: "pre",
@@ -0,0 +1,429 @@
1
+ @charset "utf-8";
2
+
3
+ :root {
4
+ --mocha-color: #000;
5
+ --mocha-bg-color: #fff;
6
+ --mocha-pass-icon-color: #00d6b2;
7
+ --mocha-pass-color: #fff;
8
+ --mocha-pass-shadow-color: rgba(0,0,0,.2);
9
+ --mocha-pass-mediump-color: #c09853;
10
+ --mocha-pass-slow-color: #b94a48;
11
+ --mocha-test-pending-color: #0b97c4;
12
+ --mocha-test-pending-icon-color: #0b97c4;
13
+ --mocha-test-fail-color: #c00;
14
+ --mocha-test-fail-icon-color: #c00;
15
+ --mocha-test-fail-pre-color: #000;
16
+ --mocha-test-fail-pre-error-color: #c00;
17
+ --mocha-test-html-error-color: #000;
18
+ --mocha-box-shadow-color: #eee;
19
+ --mocha-box-bottom-color: #ddd;
20
+ --mocha-test-replay-color: #000;
21
+ --mocha-test-replay-bg-color: #eee;
22
+ --mocha-stats-color: #888;
23
+ --mocha-stats-em-color: #000;
24
+ --mocha-stats-hover-color: #eee;
25
+ --mocha-progress-ring-color: #eee;
26
+ --mocha-progress-ring-highlight-color: #9f9f9f;
27
+ --mocha-progress-text-color: #000;
28
+ --mocha-error-color: #c00;
29
+
30
+ --mocha-code-comment: #ddd;
31
+ --mocha-code-init: #2f6fad;
32
+ --mocha-code-string: #5890ad;
33
+ --mocha-code-keyword: #8a6343;
34
+ --mocha-code-number: #2f6fad;
35
+ }
36
+
37
+ @media (prefers-color-scheme: dark) {
38
+ :root {
39
+ --mocha-color: #fff;
40
+ --mocha-bg-color: #222;
41
+ --mocha-pass-icon-color: #00d6b2;
42
+ --mocha-pass-color: #222;
43
+ --mocha-pass-shadow-color: rgba(255,255,255,.2);
44
+ --mocha-pass-mediump-color: #f1be67;
45
+ --mocha-pass-slow-color: #f49896;
46
+ --mocha-test-pending-color: #0b97c4;
47
+ --mocha-test-pending-icon-color: #0b97c4;
48
+ --mocha-test-fail-color: #f44;
49
+ --mocha-test-fail-icon-color: #f44;
50
+ --mocha-test-fail-pre-color: #fff;
51
+ --mocha-test-fail-pre-error-color: #f44;
52
+ --mocha-test-html-error-color: #fff;
53
+ --mocha-box-shadow-color: #444;
54
+ --mocha-box-bottom-color: #555;
55
+ --mocha-test-replay-color: #fff;
56
+ --mocha-test-replay-bg-color: #444;
57
+ --mocha-stats-color: #aaa;
58
+ --mocha-stats-em-color: #fff;
59
+ --mocha-stats-hover-color: #444;
60
+ --mocha-progress-ring-color: #444;
61
+ --mocha-progress-ring-highlight-color: #888;
62
+ --mocha-progress-text-color: #fff;
63
+ --mocha-error-color: #f44;
64
+
65
+ --mocha-code-comment: #ddd;
66
+ --mocha-code-init: #9cc7f1;
67
+ --mocha-code-string: #80d4ff;
68
+ --mocha-code-keyword: #e3a470;
69
+ --mocha-code-number: #4ca7ff;
70
+ }
71
+ }
72
+
73
+ body {
74
+ margin:0;
75
+ background-color: var(--mocha-bg-color);
76
+ color: var(--mocha-color);
77
+ }
78
+
79
+ #mocha {
80
+ font: 20px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif;
81
+ margin: 60px 50px;
82
+ }
83
+
84
+ #mocha ul,
85
+ #mocha li {
86
+ margin: 0;
87
+ padding: 0;
88
+ }
89
+
90
+ #mocha ul {
91
+ list-style: none;
92
+ }
93
+
94
+ #mocha h1,
95
+ #mocha h2 {
96
+ margin: 0;
97
+ }
98
+
99
+ #mocha h1 {
100
+ margin-top: 15px;
101
+ font-size: 1em;
102
+ font-weight: 200;
103
+ }
104
+
105
+ #mocha h1 a {
106
+ text-decoration: none;
107
+ color: inherit;
108
+ }
109
+
110
+ #mocha h1 a:hover {
111
+ text-decoration: underline;
112
+ }
113
+
114
+ #mocha .suite .suite h1 {
115
+ margin-top: 0;
116
+ font-size: .8em;
117
+ }
118
+
119
+ #mocha .hidden {
120
+ display: none;
121
+ }
122
+
123
+ #mocha h2 {
124
+ font-size: 12px;
125
+ font-weight: normal;
126
+ cursor: pointer;
127
+ }
128
+
129
+ #mocha .suite {
130
+ margin-left: 15px;
131
+ }
132
+
133
+ #mocha .test {
134
+ margin-left: 15px;
135
+ overflow: hidden;
136
+ }
137
+
138
+ #mocha .test.pending:hover h2::after {
139
+ content: '(pending)';
140
+ font-family: arial, sans-serif;
141
+ }
142
+
143
+ #mocha .test.pass.medium .duration {
144
+ background: var(--mocha-pass-mediump-color);
145
+ }
146
+
147
+ #mocha .test.pass.slow .duration {
148
+ background: var(--mocha-pass-slow-color);
149
+ }
150
+
151
+ #mocha .test.pass::before {
152
+ content: '✓';
153
+ font-size: 12px;
154
+ display: block;
155
+ float: left;
156
+ margin-right: 5px;
157
+ color: var(--mocha-pass-icon-color);
158
+ }
159
+
160
+ #mocha .test.pass .duration {
161
+ font-size: 9px;
162
+ margin-left: 5px;
163
+ padding: 2px 5px;
164
+ color: var(--mocha-pass-color);
165
+ -webkit-box-shadow: inset 0 1px 1px var(--mocha-pass-shadow-color);
166
+ -moz-box-shadow: inset 0 1px 1px var(--mocha-pass-shadow-color);
167
+ box-shadow: inset 0 1px 1px var(--mocha-pass-shadow-color);
168
+ -webkit-border-radius: 5px;
169
+ -moz-border-radius: 5px;
170
+ -ms-border-radius: 5px;
171
+ -o-border-radius: 5px;
172
+ border-radius: 5px;
173
+ }
174
+
175
+ #mocha .test.pass.fast .duration {
176
+ display: none;
177
+ }
178
+
179
+ #mocha .test.pending {
180
+ color: var(--mocha-test-pending-color);
181
+ }
182
+
183
+ #mocha .test.pending::before {
184
+ content: '◦';
185
+ color: var(--mocha-test-pending-icon-color);
186
+ }
187
+
188
+ #mocha .test.fail {
189
+ color: var(--mocha-test-fail-color);
190
+ }
191
+
192
+ #mocha .test.fail pre {
193
+ color: var(--mocha-test-fail-pre-color);
194
+ }
195
+
196
+ #mocha .test.fail::before {
197
+ content: '✖';
198
+ font-size: 12px;
199
+ display: block;
200
+ float: left;
201
+ margin-right: 5px;
202
+ color: var(--mocha-test-fail-icon-color);
203
+ }
204
+
205
+ #mocha .test pre.error {
206
+ color: var(--mocha-test-fail-pre-error-color);
207
+ max-height: 300px;
208
+ overflow: auto;
209
+ }
210
+
211
+ #mocha .test .html-error {
212
+ overflow: auto;
213
+ color: var(--mocha-test-html-error-color);
214
+ display: block;
215
+ float: left;
216
+ clear: left;
217
+ font: 12px/1.5 monaco, monospace;
218
+ margin: 5px;
219
+ padding: 15px;
220
+ border: 1px solid var(--mocha-box-shadow-color);
221
+ max-width: 85%; /*(1)*/
222
+ max-width: -webkit-calc(100% - 42px);
223
+ max-width: -moz-calc(100% - 42px);
224
+ max-width: calc(100% - 42px); /*(2)*/
225
+ max-height: 300px;
226
+ word-wrap: break-word;
227
+ border-bottom-color: var(--mocha-box-bottom-color);
228
+ -webkit-box-shadow: 0 1px 3px var(--mocha-box-shadow-color);
229
+ -moz-box-shadow: 0 1px 3px var(--mocha-box-shadow-color);
230
+ box-shadow: 0 1px 3px var(--mocha-box-shadow-color);
231
+ -webkit-border-radius: 3px;
232
+ -moz-border-radius: 3px;
233
+ border-radius: 3px;
234
+ }
235
+
236
+ #mocha .test .html-error pre.error {
237
+ border: none;
238
+ -webkit-border-radius: 0;
239
+ -moz-border-radius: 0;
240
+ border-radius: 0;
241
+ -webkit-box-shadow: 0;
242
+ -moz-box-shadow: 0;
243
+ box-shadow: 0;
244
+ padding: 0;
245
+ margin: 0;
246
+ margin-top: 18px;
247
+ max-height: none;
248
+ }
249
+
250
+ /**
251
+ * (1): approximate for browsers not supporting calc
252
+ * (2): 42 = 2*15 + 2*10 + 2*1 (padding + margin + border)
253
+ * ^^ seriously
254
+ */
255
+ #mocha .test pre {
256
+ display: block;
257
+ float: left;
258
+ clear: left;
259
+ font: 12px/1.5 monaco, monospace;
260
+ margin: 5px;
261
+ padding: 15px;
262
+ border: 1px solid var(--mocha-box-shadow-color);
263
+ max-width: 85%; /*(1)*/
264
+ max-width: -webkit-calc(100% - 42px);
265
+ max-width: -moz-calc(100% - 42px);
266
+ max-width: calc(100% - 42px); /*(2)*/
267
+ word-wrap: break-word;
268
+ border-bottom-color: var(--mocha-box-bottom-color);
269
+ -webkit-box-shadow: 0 1px 3px var(--mocha-box-shadow-color);
270
+ -moz-box-shadow: 0 1px 3px var(--mocha-box-shadow-color);
271
+ box-shadow: 0 1px 3px var(--mocha-box-shadow-color);
272
+ -webkit-border-radius: 3px;
273
+ -moz-border-radius: 3px;
274
+ border-radius: 3px;
275
+ }
276
+
277
+ #mocha .test h2 {
278
+ position: relative;
279
+ }
280
+
281
+ #mocha .test a.replay {
282
+ position: absolute;
283
+ top: 3px;
284
+ right: 0;
285
+ text-decoration: none;
286
+ vertical-align: middle;
287
+ display: block;
288
+ width: 15px;
289
+ height: 15px;
290
+ line-height: 15px;
291
+ text-align: center;
292
+ background: var(--mocha-test-replay-bg-color);
293
+ font-size: 15px;
294
+ -webkit-border-radius: 15px;
295
+ -moz-border-radius: 15px;
296
+ border-radius: 15px;
297
+ -webkit-transition:opacity 200ms;
298
+ -moz-transition:opacity 200ms;
299
+ -o-transition:opacity 200ms;
300
+ transition: opacity 200ms;
301
+ opacity: 0.7;
302
+ color: var(--mocha-test-replay-color);
303
+ }
304
+
305
+ #mocha .test:hover a.replay {
306
+ box-shadow: 0 0 1px inset var(--mocha-test-replay-color);
307
+ opacity: 1;
308
+ }
309
+
310
+ #mocha-report.pass .test.fail {
311
+ display: none;
312
+ }
313
+
314
+ #mocha-report.fail .test.pass {
315
+ display: none;
316
+ }
317
+
318
+ #mocha-report.pending .test.pass,
319
+ #mocha-report.pending .test.fail {
320
+ display: none;
321
+ }
322
+ #mocha-report.pending .test.pass.pending {
323
+ display: block;
324
+ }
325
+
326
+ #mocha-error {
327
+ color: var(--mocha-error-color);
328
+ font-size: 1.5em;
329
+ font-weight: 100;
330
+ letter-spacing: 1px;
331
+ }
332
+
333
+ #mocha-stats {
334
+ --ring-container-size: 40px;
335
+ --ring-size: 39px;
336
+ --ring-radius: calc(var(--ring-size) / 2);
337
+
338
+ position: fixed;
339
+ top: 15px;
340
+ right: 10px;
341
+ font-size: 12px;
342
+ margin: 0;
343
+ color: var(--mocha-stats-color);
344
+ z-index: 1;
345
+ }
346
+
347
+ #mocha-stats .progress-contain {
348
+ float: right;
349
+ padding: 0;
350
+ }
351
+
352
+ #mocha-stats :is(.progress-element, .progress-text) {
353
+ width: var(--ring-container-size);
354
+ display: block;
355
+ top: 12px;
356
+ position: absolute;
357
+ }
358
+
359
+ #mocha-stats .progress-element {
360
+ visibility: hidden;
361
+ height: calc(var(--ring-container-size) / 2);
362
+ }
363
+
364
+ #mocha-stats .progress-text {
365
+ text-align: center;
366
+ text-overflow: clip;
367
+ overflow: hidden;
368
+ color: var(--mocha-stats-em-color);
369
+ font-size: 11px;
370
+ }
371
+
372
+ #mocha-stats .progress-ring {
373
+ width: var(--ring-container-size);
374
+ height: var(--ring-container-size);
375
+ }
376
+
377
+ #mocha-stats :is(.ring-flatlight, .ring-highlight) {
378
+ --stroke-thickness: 1.65px;
379
+ --center: calc(var(--ring-container-size) / 2);
380
+ cx: var(--center);
381
+ cy: var(--center);
382
+ r: calc(var(--ring-radius) - calc(var(--stroke-thickness) / 2));
383
+ fill: hsla(0, 0%, 0%, 0);
384
+ stroke-width: var(--stroke-thickness);
385
+ }
386
+
387
+ #mocha-stats .ring-flatlight {
388
+ stroke: var(--mocha-progress-ring-color);
389
+ }
390
+
391
+ #mocha-stats .ring-highlight {
392
+ stroke: var(--mocha-progress-ring-highlight-color);
393
+ }
394
+
395
+ #mocha-stats em {
396
+ color: var(--mocha-stats-em-color);
397
+ }
398
+
399
+ #mocha-stats a {
400
+ text-decoration: none;
401
+ color: inherit;
402
+ }
403
+
404
+ #mocha-stats a:hover {
405
+ border-bottom: 1px solid var(--mocha-stats-hover-color);
406
+ }
407
+
408
+ #mocha-stats li {
409
+ display: inline-block;
410
+ margin: 0 5px;
411
+ list-style: none;
412
+ padding-top: 11px;
413
+ }
414
+
415
+ #mocha code .comment { color: var(--mocha-code-comment); }
416
+ #mocha code .init { color: var(--mocha-code-init); }
417
+ #mocha code .string { color: var(--mocha-code-string); }
418
+ #mocha code .keyword { color: var(--mocha-code-keyword); }
419
+ #mocha code .number { color: var(--mocha-code-number); }
420
+
421
+ @media screen and (max-device-width: 480px) {
422
+ #mocha {
423
+ margin: 60px 0px;
424
+ }
425
+
426
+ #mocha #stats {
427
+ position: absolute;
428
+ }
429
+ }