@vitest/browser 2.1.3 → 2.1.5

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,4 +1,4 @@
1
1
  import '@vitest/browser/context';
2
2
  import '../public-utils-D6S2-5kI.js';
3
- export { L as Locator, s as selectorEngine } from '../index-Cgg35wOd.js';
3
+ export { L as Locator, s as selectorEngine } from '../index-CKtADM3n.js';
4
4
  import 'vitest/utils';
@@ -1,6 +1,6 @@
1
1
  import { page, server } from '@vitest/browser/context';
2
2
  import { g as getByLabelSelector, a as getByRoleSelector, b as getByTestIdSelector, c as getByAltTextSelector, d as getByPlaceholderSelector, e as getByTextSelector, f as getByTitleSelector } from '../public-utils-D6S2-5kI.js';
3
- import { s as selectorEngine, L as Locator } from '../index-Cgg35wOd.js';
3
+ import { s as selectorEngine, L as Locator } from '../index-CKtADM3n.js';
4
4
  import 'vitest/utils';
5
5
 
6
6
  page.extend({
@@ -1,7 +1,7 @@
1
- import { page, server } from '@vitest/browser/context';
2
1
  import { userEvent } from '@testing-library/user-event';
2
+ import { page, server } from '@vitest/browser/context';
3
3
  import { g as getByLabelSelector, a as getByRoleSelector, b as getByTestIdSelector, c as getByAltTextSelector, d as getByPlaceholderSelector, e as getByTextSelector, f as getByTitleSelector, h as getElementError } from '../public-utils-D6S2-5kI.js';
4
- import { s as selectorEngine, L as Locator, c as convertElementToCssSelector } from '../index-Cgg35wOd.js';
4
+ import { s as selectorEngine, L as Locator, c as convertElementToCssSelector, e as ensureAwaited } from '../index-CKtADM3n.js';
5
5
  import 'vitest/utils';
6
6
 
7
7
  page.extend({
@@ -47,23 +47,23 @@ class PreviewLocator extends Locator {
47
47
  return selectors.join(", ");
48
48
  }
49
49
  click() {
50
- return userEvent.click(this.element());
50
+ return ensureAwaited(() => userEvent.click(this.element()));
51
51
  }
52
52
  dblClick() {
53
- return userEvent.dblClick(this.element());
53
+ return ensureAwaited(() => userEvent.dblClick(this.element()));
54
54
  }
55
55
  tripleClick() {
56
- return userEvent.tripleClick(this.element());
56
+ return ensureAwaited(() => userEvent.tripleClick(this.element()));
57
57
  }
58
58
  hover() {
59
- return userEvent.hover(this.element());
59
+ return ensureAwaited(() => userEvent.hover(this.element()));
60
60
  }
61
61
  unhover() {
62
- return userEvent.unhover(this.element());
62
+ return ensureAwaited(() => userEvent.unhover(this.element()));
63
63
  }
64
64
  async fill(text) {
65
65
  await this.clear();
66
- return userEvent.type(this.element(), text);
66
+ return ensureAwaited(() => userEvent.type(this.element(), text));
67
67
  }
68
68
  async upload(file) {
69
69
  const uploadPromise = (Array.isArray(file) ? file : [file]).map(async (file2) => {
@@ -75,7 +75,7 @@ class PreviewLocator extends Locator {
75
75
  return fileInstance;
76
76
  });
77
77
  const uploadFiles = await Promise.all(uploadPromise);
78
- return userEvent.upload(this.element(), uploadFiles);
78
+ return ensureAwaited(() => userEvent.upload(this.element(), uploadFiles));
79
79
  }
80
80
  selectOptions(options_) {
81
81
  const options = (Array.isArray(options_) ? options_ : [options_]).map((option) => {
@@ -84,13 +84,13 @@ class PreviewLocator extends Locator {
84
84
  }
85
85
  return option;
86
86
  });
87
- return userEvent.selectOptions(this.element(), options);
87
+ return ensureAwaited(() => userEvent.selectOptions(this.element(), options));
88
88
  }
89
89
  async dropTo() {
90
90
  throw new Error('The "preview" provider doesn\'t support `dropTo` method.');
91
91
  }
92
92
  clear() {
93
- return userEvent.clear(this.element());
93
+ return ensureAwaited(() => userEvent.clear(this.element()));
94
94
  }
95
95
  async screenshot() {
96
96
  throw new Error('The "preview" provider doesn\'t support `screenshot` method.');
@@ -1,6 +1,6 @@
1
1
  import { page, server } from '@vitest/browser/context';
2
2
  import { g as getByLabelSelector, a as getByRoleSelector, b as getByTestIdSelector, c as getByAltTextSelector, d as getByPlaceholderSelector, e as getByTextSelector, f as getByTitleSelector, h as getElementError } from '../public-utils-D6S2-5kI.js';
3
- import { s as selectorEngine, L as Locator, c as convertElementToCssSelector } from '../index-Cgg35wOd.js';
3
+ import { s as selectorEngine, L as Locator, c as convertElementToCssSelector } from '../index-CKtADM3n.js';
4
4
  import 'vitest/utils';
5
5
 
6
6
  page.extend({
package/dist/providers.js CHANGED
@@ -3,7 +3,7 @@ import { W as WebdriverBrowserProvider, P as PlaywrightBrowserProvider } from '.
3
3
  class PreviewBrowserProvider {
4
4
  name = "preview";
5
5
  supportsParallelism = false;
6
- ctx;
6
+ project;
7
7
  open = false;
8
8
  getSupportedBrowsers() {
9
9
  return [];
@@ -14,24 +14,25 @@ class PreviewBrowserProvider {
14
14
  getCommandsContext() {
15
15
  return {};
16
16
  }
17
- async initialize(ctx) {
18
- this.ctx = ctx;
17
+ async initialize(project) {
18
+ this.project = project;
19
19
  this.open = false;
20
- if (ctx.config.browser.headless) {
20
+ if (project.config.browser.headless) {
21
21
  throw new Error(
22
22
  `You've enabled headless mode for "preview" provider but it doesn't support it. Use "playwright" or "webdriverio" instead: https://vitest.dev/guide/browser/#configuration`
23
23
  );
24
24
  }
25
+ project.ctx.logger.printBrowserBanner(project);
25
26
  }
26
27
  async openPage(_contextId, url) {
27
28
  this.open = true;
28
- if (!this.ctx.browser) {
29
+ if (!this.project.browser) {
29
30
  throw new Error("Browser is not initialized");
30
31
  }
31
- const options = this.ctx.browser.vite.config.server;
32
+ const options = this.project.browser.vite.config.server;
32
33
  const _open = options.open;
33
34
  options.open = url;
34
- this.ctx.browser.vite.openBrowser();
35
+ this.project.browser.vite.openBrowser();
35
36
  options.open = _open;
36
37
  }
37
38
  async close() {
package/dist/state.js CHANGED
@@ -1 +1 @@
1
- const{parse:$parse,stringify:$stringify}=JSON;const{keys}=Object;const Primitive=String;const primitive="string";const ignore={};const object="object";const noop=(_,value)=>value;const primitives=value=>value instanceof Primitive?Primitive(value):value;const Primitives=(_,value)=>typeof value===primitive?new Primitive(value):value;const revive=(input,parsed,output,$)=>{const lazy=[];for(let ke=keys(output),{length}=ke,y=0;y<length;y++){const k=ke[y];const value=output[k];if(value instanceof Primitive){const tmp=input[value];if(typeof tmp===object&&!parsed.has(tmp)){parsed.add(tmp);output[k]=ignore;lazy.push({k,a:[input,parsed,tmp,$]})}else output[k]=$.call(output,k,tmp)}else if(output[k]!==ignore)output[k]=$.call(output,k,value)}for(let{length}=lazy,i=0;i<length;i++){const{k,a}=lazy[i];output[k]=$.call(output,k,revive.apply(null,a))}return output};const parse=(text,reviver)=>{const input=$parse(text,Primitives).map(primitives);const value=input[0];const $=noop;const tmp=typeof value===object&&value?revive(input,new Set,value,$):value;return $.call({"":tmp},"",tmp)};function getBrowserState(){return window.__vitest_browser_runner__}const config=getBrowserState().config;const contextId=getBrowserState().contextId;const providedContext=parse(getBrowserState().providedContext);const state={ctx:{pool:"browser",worker:"./browser.js",workerId:1,config,projectName:config.name||"",files:[],environment:{name:"browser",options:null},providedContext,invalidates:[]},onCancel:null,config,environment:{name:"browser",transformMode:"web",setup(){throw new Error("Not called in the browser")}},moduleCache:getBrowserState().moduleCache,rpc:null,durations:{environment:0,prepare:performance.now()},providedContext};globalThis.__vitest_browser__=true;globalThis.__vitest_worker__=state;getBrowserState().cdp=createCdp();function rpc(){return state.rpc}function createCdp(){const listenersMap=new WeakMap;function getId(listener){const id=listenersMap.get(listener)||crypto.randomUUID();listenersMap.set(listener,id);return id}const listeners={};const cdp={send(method,params){return rpc().sendCdpEvent(contextId,method,params)},on(event,listener){const listenerId=getId(listener);listeners[event]=listeners[event]||[];listeners[event].push(listener);rpc().trackCdpEvent(contextId,"on",event,listenerId).catch(error);return cdp},once(event,listener){const listenerId=getId(listener);const handler=data=>{listener(data);cdp.off(event,listener)};listeners[event]=listeners[event]||[];listeners[event].push(handler);rpc().trackCdpEvent(contextId,"once",event,listenerId).catch(error);return cdp},off(event,listener){const listenerId=getId(listener);if(listeners[event]){listeners[event]=listeners[event].filter(l=>l!==listener)}rpc().trackCdpEvent(contextId,"off",event,listenerId).catch(error);return cdp},emit(event,payload){if(listeners[event]){listeners[event].forEach(l=>{try{l(payload)}catch(err){error(err)}})}}};return cdp}function error(err){window.dispatchEvent(new ErrorEvent("error",{error:err}))}
1
+ (function(){"use strict";const{parse:$parse,stringify:$stringify}=JSON;const{keys}=Object;const Primitive=String;const primitive="string";const ignore={};const object="object";const noop=(_,value)=>value;const primitives=value=>value instanceof Primitive?Primitive(value):value;const Primitives=(_,value)=>typeof value===primitive?new Primitive(value):value;const revive=(input,parsed,output,$)=>{const lazy=[];for(let ke=keys(output),{length}=ke,y=0;y<length;y++){const k=ke[y];const value=output[k];if(value instanceof Primitive){const tmp=input[value];if(typeof tmp===object&&!parsed.has(tmp)){parsed.add(tmp);output[k]=ignore;lazy.push({k,a:[input,parsed,tmp,$]})}else output[k]=$.call(output,k,tmp)}else if(output[k]!==ignore)output[k]=$.call(output,k,value)}for(let{length}=lazy,i=0;i<length;i++){const{k,a}=lazy[i];output[k]=$.call(output,k,revive.apply(null,a))}return output};const parse=(text,reviver)=>{const input=$parse(text,Primitives).map(primitives);const value=input[0];const $=noop;const tmp=typeof value===object&&value?revive(input,new Set,value,$):value;return $.call({"":tmp},"",tmp)};function getBrowserState(){return window.__vitest_browser_runner__}const config=getBrowserState().config;const contextId=getBrowserState().contextId;const providedContext=parse(getBrowserState().providedContext);const state={ctx:{pool:"browser",worker:"./browser.js",workerId:1,config,projectName:config.name||"",files:[],environment:{name:"browser",options:null},providedContext,invalidates:[]},onCancel:null,config,environment:{name:"browser",transformMode:"web",setup(){throw new Error("Not called in the browser")}},moduleCache:getBrowserState().moduleCache,rpc:null,durations:{environment:0,prepare:performance.now()},providedContext};globalThis.__vitest_browser__=true;globalThis.__vitest_worker__=state;getBrowserState().cdp=createCdp();function rpc(){return state.rpc}function createCdp(){const listenersMap=new WeakMap;function getId(listener){const id=listenersMap.get(listener)||crypto.randomUUID();listenersMap.set(listener,id);return id}const listeners={};const cdp={send(method,params){return rpc().sendCdpEvent(contextId,method,params)},on(event,listener){const listenerId=getId(listener);listeners[event]=listeners[event]||[];listeners[event].push(listener);rpc().trackCdpEvent(contextId,"on",event,listenerId).catch(error);return cdp},once(event,listener){const listenerId=getId(listener);const handler=data=>{listener(data);cdp.off(event,listener)};listeners[event]=listeners[event]||[];listeners[event].push(handler);rpc().trackCdpEvent(contextId,"once",event,listenerId).catch(error);return cdp},off(event,listener){const listenerId=getId(listener);if(listeners[event]){listeners[event]=listeners[event].filter(l=>l!==listener)}rpc().trackCdpEvent(contextId,"off",event,listenerId).catch(error);return cdp},emit(event,payload){if(listeners[event]){listeners[event].forEach(l=>{try{l(payload)}catch(err){error(err)}})}}};return cdp}function error(err){window.dispatchEvent(new ErrorEvent("error",{error:err}))}})();
package/dist/utils.js CHANGED
@@ -1,3 +1,3 @@
1
1
  import '@vitest/browser/context';
2
- import 'vitest/utils';
3
2
  export { j as debug, h as getElementError, i as getElementLocatorSelectors, p as prettyDOM } from './public-utils-D6S2-5kI.js';
3
+ import 'vitest/utils';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vitest/browser",
3
3
  "type": "module",
4
- "version": "2.1.3",
4
+ "version": "2.1.5",
5
5
  "description": "Browser running for Vitest",
6
6
  "license": "MIT",
7
7
  "funding": "https://opencollective.com/vitest",
@@ -62,7 +62,7 @@
62
62
  "peerDependencies": {
63
63
  "playwright": "*",
64
64
  "webdriverio": "*",
65
- "vitest": "2.1.3"
65
+ "vitest": "2.1.5"
66
66
  },
67
67
  "peerDependenciesMeta": {
68
68
  "playwright": {
@@ -78,32 +78,32 @@
78
78
  "dependencies": {
79
79
  "@testing-library/dom": "^10.4.0",
80
80
  "@testing-library/user-event": "^14.5.2",
81
- "magic-string": "^0.30.11",
82
- "msw": "^2.3.5",
83
- "sirv": "^2.0.4",
81
+ "magic-string": "^0.30.12",
82
+ "msw": "^2.6.4",
83
+ "sirv": "^3.0.0",
84
84
  "tinyrainbow": "^1.2.0",
85
85
  "ws": "^8.18.0",
86
- "@vitest/mocker": "2.1.3",
87
- "@vitest/utils": "2.1.3"
86
+ "@vitest/mocker": "2.1.5",
87
+ "@vitest/utils": "2.1.5"
88
88
  },
89
89
  "devDependencies": {
90
- "@testing-library/jest-dom": "^6.4.8",
91
- "@types/ws": "^8.5.12",
92
- "@wdio/protocols": "^8.38.0",
93
- "birpc": "0.2.17",
90
+ "@testing-library/jest-dom": "^6.6.3",
91
+ "@types/ws": "^8.5.13",
92
+ "@wdio/protocols": "^8.40.3",
93
+ "birpc": "0.2.19",
94
94
  "flatted": "^3.3.1",
95
95
  "ivya": "^1.1.1",
96
96
  "mime": "^4.0.4",
97
97
  "pathe": "^1.1.2",
98
98
  "periscopic": "^4.0.2",
99
- "playwright": "^1.46.0",
100
- "playwright-core": "^1.46.0",
99
+ "playwright": "^1.48.2",
100
+ "playwright-core": "^1.48.2",
101
101
  "safaridriver": "^0.1.2",
102
- "webdriverio": "^8.40.2",
103
- "@vitest/runner": "2.1.3",
104
- "@vitest/ui": "2.1.3",
105
- "@vitest/ws-client": "2.1.3",
106
- "vitest": "2.1.3"
102
+ "webdriverio": "^8.40.6",
103
+ "@vitest/runner": "2.1.5",
104
+ "@vitest/ws-client": "2.1.5",
105
+ "vitest": "2.1.5",
106
+ "@vitest/ui": "2.1.5"
107
107
  },
108
108
  "scripts": {
109
109
  "build": "rimraf dist && pnpm build:node && pnpm build:client",