@vitest/browser 3.0.0-beta.2 → 3.0.0-beta.3
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/client/.vite/manifest.json +2 -2
- package/dist/client/__vitest__/assets/{index-BgsOOCCp.js → index-JmEkKNR0.js} +1 -1
- package/dist/client/__vitest__/index.html +1 -1
- package/dist/client/__vitest_browser__/{orchestrator-DnP17K36.js → orchestrator-vOivV83Y.js} +7 -5
- package/dist/client/__vitest_browser__/{tester-BdwA4c5U.js → tester-CDBn6hqf.js} +16 -7
- package/dist/client/esm-client-injector.js +1 -1
- package/dist/client/orchestrator.html +1 -1
- package/dist/client/tester/tester.html +1 -1
- package/dist/client.js +4 -4
- package/dist/context.js +3 -3
- package/dist/{index-CMAn5ZST.js → index-VFFcOojA.js} +1 -1
- package/dist/index.d.ts +52 -34
- package/dist/index.js +2427 -1970
- package/dist/locators/index.js +1 -1
- package/dist/locators/playwright.js +1 -1
- package/dist/locators/preview.js +1 -1
- package/dist/locators/webdriverio.js +1 -1
- package/dist/providers.js +3 -3
- package/dist/state.js +1 -1
- package/dist/{webdriver-JzwxG3Ek.js → webdriver-dkCg9pjp.js} +22 -22
- package/package.json +14 -14
- package/providers/webdriverio.d.ts +1 -1
package/dist/locators/index.js
CHANGED
|
@@ -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-
|
|
3
|
+
import { s as selectorEngine, L as Locator } from '../index-VFFcOojA.js';
|
|
4
4
|
import 'vitest/utils';
|
|
5
5
|
|
|
6
6
|
page.extend({
|
package/dist/locators/preview.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { page, server, userEvent } 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-
|
|
3
|
+
import { s as selectorEngine, L as Locator, c as convertElementToCssSelector } from '../index-VFFcOojA.js';
|
|
4
4
|
import 'vitest/utils';
|
|
5
5
|
|
|
6
6
|
page.extend({
|
|
@@ -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-
|
|
3
|
+
import { s as selectorEngine, L as Locator, c as convertElementToCssSelector } from '../index-VFFcOojA.js';
|
|
4
4
|
import 'vitest/utils';
|
|
5
5
|
|
|
6
6
|
page.extend({
|
package/dist/providers.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { W as WebdriverBrowserProvider, P as PlaywrightBrowserProvider } from './webdriver-
|
|
1
|
+
import { W as WebdriverBrowserProvider, P as PlaywrightBrowserProvider } from './webdriver-dkCg9pjp.js';
|
|
2
2
|
|
|
3
3
|
class PreviewBrowserProvider {
|
|
4
4
|
name = "preview";
|
|
@@ -22,9 +22,9 @@ class PreviewBrowserProvider {
|
|
|
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.
|
|
25
|
+
project.vitest.logger.printBrowserBanner(project);
|
|
26
26
|
}
|
|
27
|
-
async openPage(
|
|
27
|
+
async openPage(_sessionId, url) {
|
|
28
28
|
this.open = true;
|
|
29
29
|
if (!this.project.browser) {
|
|
30
30
|
throw new Error("Browser is not initialized");
|
package/dist/state.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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
|
|
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 sessionId=getBrowserState().sessionId;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(sessionId,method,params)},on(event,listener){const listenerId=getId(listener);listeners[event]=listeners[event]||[];listeners[event].push(listener);rpc().trackCdpEvent(sessionId,"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(sessionId,"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(sessionId,"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}))}})();
|
|
@@ -37,7 +37,7 @@ class PlaywrightBrowserProvider {
|
|
|
37
37
|
launchOptions.args ||= [];
|
|
38
38
|
launchOptions.args.push(`--remote-debugging-port=${port}`);
|
|
39
39
|
launchOptions.args.push(`--remote-debugging-address=${host}`);
|
|
40
|
-
this.project.logger.log(`Debugger listening on ws://${host}:${port}`);
|
|
40
|
+
this.project.vitest.logger.log(`Debugger listening on ws://${host}:${port}`);
|
|
41
41
|
}
|
|
42
42
|
if (this.project.config.browser.ui && this.browserName === "chromium") {
|
|
43
43
|
if (!launchOptions.args) {
|
|
@@ -54,9 +54,9 @@ class PlaywrightBrowserProvider {
|
|
|
54
54
|
})();
|
|
55
55
|
return this.browserPromise;
|
|
56
56
|
}
|
|
57
|
-
async createContext(
|
|
58
|
-
if (this.contexts.has(
|
|
59
|
-
return this.contexts.get(
|
|
57
|
+
async createContext(sessionId) {
|
|
58
|
+
if (this.contexts.has(sessionId)) {
|
|
59
|
+
return this.contexts.get(sessionId);
|
|
60
60
|
}
|
|
61
61
|
const browser = await this.openBrowser();
|
|
62
62
|
const { actionTimeout, ...contextOptions } = this.options?.context ?? {};
|
|
@@ -72,21 +72,21 @@ class PlaywrightBrowserProvider {
|
|
|
72
72
|
if (actionTimeout) {
|
|
73
73
|
context.setDefaultTimeout(actionTimeout);
|
|
74
74
|
}
|
|
75
|
-
this.contexts.set(
|
|
75
|
+
this.contexts.set(sessionId, context);
|
|
76
76
|
return context;
|
|
77
77
|
}
|
|
78
|
-
getPage(
|
|
79
|
-
const page = this.pages.get(
|
|
78
|
+
getPage(sessionId) {
|
|
79
|
+
const page = this.pages.get(sessionId);
|
|
80
80
|
if (!page) {
|
|
81
|
-
throw new Error(`Page "${
|
|
81
|
+
throw new Error(`Page "${sessionId}" not found in ${this.browserName} browser.`);
|
|
82
82
|
}
|
|
83
83
|
return page;
|
|
84
84
|
}
|
|
85
|
-
getCommandsContext(
|
|
86
|
-
const page = this.getPage(
|
|
85
|
+
getCommandsContext(sessionId) {
|
|
86
|
+
const page = this.getPage(sessionId);
|
|
87
87
|
return {
|
|
88
88
|
page,
|
|
89
|
-
context: this.contexts.get(
|
|
89
|
+
context: this.contexts.get(sessionId),
|
|
90
90
|
frame() {
|
|
91
91
|
return new Promise((resolve, reject) => {
|
|
92
92
|
const frame = page.frame("vitest-iframe");
|
|
@@ -108,15 +108,15 @@ class PlaywrightBrowserProvider {
|
|
|
108
108
|
}
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
|
-
async openBrowserPage(
|
|
112
|
-
if (this.pages.has(
|
|
113
|
-
const page2 = this.pages.get(
|
|
111
|
+
async openBrowserPage(sessionId) {
|
|
112
|
+
if (this.pages.has(sessionId)) {
|
|
113
|
+
const page2 = this.pages.get(sessionId);
|
|
114
114
|
await page2.close();
|
|
115
|
-
this.pages.delete(
|
|
115
|
+
this.pages.delete(sessionId);
|
|
116
116
|
}
|
|
117
|
-
const context = await this.createContext(
|
|
117
|
+
const context = await this.createContext(sessionId);
|
|
118
118
|
const page = await context.newPage();
|
|
119
|
-
this.pages.set(
|
|
119
|
+
this.pages.set(sessionId, page);
|
|
120
120
|
if (process.env.VITEST_PW_DEBUG) {
|
|
121
121
|
page.on("requestfailed", (request) => {
|
|
122
122
|
console.error(
|
|
@@ -131,13 +131,13 @@ class PlaywrightBrowserProvider {
|
|
|
131
131
|
}
|
|
132
132
|
return page;
|
|
133
133
|
}
|
|
134
|
-
async openPage(
|
|
135
|
-
const browserPage = await this.openBrowserPage(
|
|
134
|
+
async openPage(sessionId, url, beforeNavigate) {
|
|
135
|
+
const browserPage = await this.openBrowserPage(sessionId);
|
|
136
136
|
await beforeNavigate?.();
|
|
137
137
|
await browserPage.goto(url, { timeout: 0 });
|
|
138
138
|
}
|
|
139
|
-
async getCDPSession(
|
|
140
|
-
const page = this.getPage(
|
|
139
|
+
async getCDPSession(sessionid) {
|
|
140
|
+
const page = this.getPage(sessionid);
|
|
141
141
|
const cdp = await page.context().newCDPSession(page);
|
|
142
142
|
return {
|
|
143
143
|
async send(method, params) {
|
|
@@ -247,7 +247,7 @@ class WebdriverBrowserProvider {
|
|
|
247
247
|
}
|
|
248
248
|
return capabilities;
|
|
249
249
|
}
|
|
250
|
-
async openPage(
|
|
250
|
+
async openPage(_sessionId, url) {
|
|
251
251
|
const browserInstance = await this.openBrowser();
|
|
252
252
|
await browserInstance.url(url);
|
|
253
253
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vitest/browser",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "3.0.0-beta.
|
|
4
|
+
"version": "3.0.0-beta.3",
|
|
5
5
|
"description": "Browser running for Vitest",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"funding": "https://opencollective.com/vitest",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"peerDependencies": {
|
|
66
66
|
"playwright": "*",
|
|
67
67
|
"webdriverio": "*",
|
|
68
|
-
"vitest": "3.0.0-beta.
|
|
68
|
+
"vitest": "3.0.0-beta.3"
|
|
69
69
|
},
|
|
70
70
|
"peerDependenciesMeta": {
|
|
71
71
|
"playwright": {
|
|
@@ -81,13 +81,13 @@
|
|
|
81
81
|
"dependencies": {
|
|
82
82
|
"@testing-library/dom": "^10.4.0",
|
|
83
83
|
"@testing-library/user-event": "^14.5.2",
|
|
84
|
-
"magic-string": "^0.30.
|
|
85
|
-
"msw": "^2.
|
|
84
|
+
"magic-string": "^0.30.17",
|
|
85
|
+
"msw": "^2.7.0",
|
|
86
86
|
"sirv": "^3.0.0",
|
|
87
87
|
"tinyrainbow": "^1.2.0",
|
|
88
88
|
"ws": "^8.18.0",
|
|
89
|
-
"@vitest/mocker": "3.0.0-beta.
|
|
90
|
-
"@vitest/utils": "3.0.0-beta.
|
|
89
|
+
"@vitest/mocker": "3.0.0-beta.3",
|
|
90
|
+
"@vitest/utils": "3.0.0-beta.3"
|
|
91
91
|
},
|
|
92
92
|
"devDependencies": {
|
|
93
93
|
"@testing-library/jest-dom": "^6.6.3",
|
|
@@ -96,17 +96,17 @@
|
|
|
96
96
|
"birpc": "0.2.19",
|
|
97
97
|
"flatted": "^3.3.2",
|
|
98
98
|
"ivya": "^1.1.1",
|
|
99
|
-
"mime": "^4.0.
|
|
99
|
+
"mime": "^4.0.6",
|
|
100
100
|
"pathe": "^1.1.2",
|
|
101
101
|
"periscopic": "^4.0.2",
|
|
102
|
-
"playwright": "^1.49.
|
|
103
|
-
"playwright-core": "^1.49.
|
|
102
|
+
"playwright": "^1.49.1",
|
|
103
|
+
"playwright-core": "^1.49.1",
|
|
104
104
|
"safaridriver": "^1.0.0",
|
|
105
|
-
"webdriverio": "^8.
|
|
106
|
-
"@vitest/
|
|
107
|
-
"@vitest/
|
|
108
|
-
"@vitest/
|
|
109
|
-
"vitest": "3.0.0-beta.
|
|
105
|
+
"webdriverio": "^8.41.0",
|
|
106
|
+
"@vitest/runner": "3.0.0-beta.3",
|
|
107
|
+
"@vitest/ui": "3.0.0-beta.3",
|
|
108
|
+
"@vitest/ws-client": "3.0.0-beta.3",
|
|
109
|
+
"vitest": "3.0.0-beta.3"
|
|
110
110
|
},
|
|
111
111
|
"scripts": {
|
|
112
112
|
"build": "rimraf dist && pnpm build:node && pnpm build:client",
|
|
@@ -2,7 +2,7 @@ import type { RemoteOptions, ClickOptions, DragAndDropOptions } from 'webdriveri
|
|
|
2
2
|
import '../matchers.js'
|
|
3
3
|
|
|
4
4
|
declare module 'vitest/node' {
|
|
5
|
-
interface BrowserProviderOptions extends RemoteOptions {}
|
|
5
|
+
interface BrowserProviderOptions extends Partial<RemoteOptions> {}
|
|
6
6
|
|
|
7
7
|
export interface UserEventClickOptions extends ClickOptions {}
|
|
8
8
|
|