@vitest/browser 2.0.0-beta.10 → 2.0.0-beta.11
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/context.d.ts +129 -12
- package/context.js +2 -0
- package/dist/client/.vite/manifest.json +8 -8
- package/dist/client/__vitest__/assets/index-BfnqOMHY.js +51 -0
- package/dist/client/__vitest__/assets/{index-BcFb8Rbc.css → index-qZYZB8Y3.css} +1 -1
- package/dist/client/__vitest__/index.html +16 -11
- package/dist/client/__vitest_browser__/{orchestrator-BCpOi5ot.js → orchestrator-DQ4hbmZ_.js} +141 -104
- package/dist/client/__vitest_browser__/{rpc-CImfI7bO.js → rpc-D6HtJ5Rb.js} +75 -55
- package/dist/client/__vitest_browser__/{tester-e70VCOgC.js → tester-IF8AbWCS.js} +256 -199
- package/dist/client/esm-client-injector.js +19 -18
- package/dist/client/orchestrator.html +2 -2
- package/dist/client/{tester.html → tester/tester.html} +12 -3
- package/dist/context.js +104 -16
- package/dist/index.d.ts +101 -5
- package/dist/index.js +1745 -270
- package/dist/providers.js +10 -6
- package/dist/state.js +1 -0
- package/dist/{webdriver-CXn0ag9T.js → webdriver-BRud6NtS.js} +22 -12
- package/package.json +9 -7
- package/providers/playwright.d.ts +27 -5
- package/dist/client/__vitest__/assets/index-BMAciMM5.js +0 -51
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-BRud6NtS.js';
|
|
2
2
|
|
|
3
3
|
class PreviewBrowserProvider {
|
|
4
4
|
name = "preview";
|
|
@@ -17,17 +17,21 @@ class PreviewBrowserProvider {
|
|
|
17
17
|
async initialize(ctx) {
|
|
18
18
|
this.ctx = ctx;
|
|
19
19
|
this.open = false;
|
|
20
|
-
if (ctx.config.browser.headless)
|
|
21
|
-
throw new Error(
|
|
20
|
+
if (ctx.config.browser.headless) {
|
|
21
|
+
throw new Error(
|
|
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
|
+
);
|
|
24
|
+
}
|
|
22
25
|
}
|
|
23
26
|
async openPage(_contextId, url) {
|
|
24
27
|
this.open = true;
|
|
25
|
-
if (!this.ctx.browser)
|
|
28
|
+
if (!this.ctx.browser) {
|
|
26
29
|
throw new Error("Browser is not initialized");
|
|
27
|
-
|
|
30
|
+
}
|
|
31
|
+
const options = this.ctx.browser.vite.config.server;
|
|
28
32
|
const _open = options.open;
|
|
29
33
|
options.open = url;
|
|
30
|
-
this.ctx.browser.openBrowser();
|
|
34
|
+
this.ctx.browser.vite.openBrowser();
|
|
31
35
|
options.open = _open;
|
|
32
36
|
}
|
|
33
37
|
async close() {
|
package/dist/state.js
ADDED
|
@@ -0,0 +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 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,mockMap:new Map,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;
|
|
@@ -18,10 +18,12 @@ class PlaywrightBrowserProvider {
|
|
|
18
18
|
this.options = options;
|
|
19
19
|
}
|
|
20
20
|
async openBrowser() {
|
|
21
|
-
if (this.browserPromise)
|
|
21
|
+
if (this.browserPromise) {
|
|
22
22
|
return this.browserPromise;
|
|
23
|
-
|
|
23
|
+
}
|
|
24
|
+
if (this.browser) {
|
|
24
25
|
return this.browser;
|
|
26
|
+
}
|
|
25
27
|
this.browserPromise = (async () => {
|
|
26
28
|
const options = this.ctx.config.browser;
|
|
27
29
|
const playwright = await import('playwright');
|
|
@@ -36,8 +38,9 @@ class PlaywrightBrowserProvider {
|
|
|
36
38
|
return this.browserPromise;
|
|
37
39
|
}
|
|
38
40
|
async createContext(contextId) {
|
|
39
|
-
if (this.contexts.has(contextId))
|
|
41
|
+
if (this.contexts.has(contextId)) {
|
|
40
42
|
return this.contexts.get(contextId);
|
|
43
|
+
}
|
|
41
44
|
const browser = await this.openBrowser();
|
|
42
45
|
const context = await browser.newContext({
|
|
43
46
|
...this.options?.context,
|
|
@@ -49,18 +52,18 @@ class PlaywrightBrowserProvider {
|
|
|
49
52
|
}
|
|
50
53
|
getPage(contextId) {
|
|
51
54
|
const page = this.pages.get(contextId);
|
|
52
|
-
if (!page)
|
|
55
|
+
if (!page) {
|
|
53
56
|
throw new Error(`Page "${contextId}" not found`);
|
|
57
|
+
}
|
|
54
58
|
return page;
|
|
55
59
|
}
|
|
56
60
|
getCommandsContext(contextId) {
|
|
57
61
|
const page = this.getPage(contextId);
|
|
58
|
-
const tester = page.frameLocator("iframe[data-vitest]");
|
|
59
62
|
return {
|
|
60
63
|
page,
|
|
61
|
-
|
|
62
|
-
get
|
|
63
|
-
return page.
|
|
64
|
+
context: this.contexts.get(contextId),
|
|
65
|
+
get frame() {
|
|
66
|
+
return page.frame("vitest-iframe");
|
|
64
67
|
}
|
|
65
68
|
};
|
|
66
69
|
}
|
|
@@ -108,7 +111,10 @@ class WebdriverBrowserProvider {
|
|
|
108
111
|
}
|
|
109
112
|
async beforeCommand() {
|
|
110
113
|
const page = this.browser;
|
|
111
|
-
const iframe = await page.findElement(
|
|
114
|
+
const iframe = await page.findElement(
|
|
115
|
+
"css selector",
|
|
116
|
+
"iframe[data-vitest]"
|
|
117
|
+
);
|
|
112
118
|
await page.switchToFrame(iframe);
|
|
113
119
|
}
|
|
114
120
|
async afterCommand() {
|
|
@@ -120,12 +126,16 @@ class WebdriverBrowserProvider {
|
|
|
120
126
|
};
|
|
121
127
|
}
|
|
122
128
|
async openBrowser() {
|
|
123
|
-
if (this.browser)
|
|
129
|
+
if (this.browser) {
|
|
124
130
|
return this.browser;
|
|
131
|
+
}
|
|
125
132
|
const options = this.ctx.config.browser;
|
|
126
133
|
if (this.browserName === "safari") {
|
|
127
|
-
if (options.headless)
|
|
128
|
-
throw new Error(
|
|
134
|
+
if (options.headless) {
|
|
135
|
+
throw new Error(
|
|
136
|
+
"You've enabled headless mode for Safari but it doesn't currently support it."
|
|
137
|
+
);
|
|
138
|
+
}
|
|
129
139
|
}
|
|
130
140
|
const { remote } = await import('webdriverio');
|
|
131
141
|
this.browser = await remote({
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vitest/browser",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.0.0-beta.
|
|
4
|
+
"version": "2.0.0-beta.11",
|
|
5
5
|
"description": "Browser running for Vitest",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"funding": "https://opencollective.com/vitest",
|
|
@@ -41,13 +41,14 @@
|
|
|
41
41
|
"types": "./dist/index.d.ts",
|
|
42
42
|
"files": [
|
|
43
43
|
"*.d.ts",
|
|
44
|
+
"context.js",
|
|
44
45
|
"dist",
|
|
45
46
|
"providers"
|
|
46
47
|
],
|
|
47
48
|
"peerDependencies": {
|
|
48
49
|
"playwright": "*",
|
|
49
50
|
"webdriverio": "*",
|
|
50
|
-
"vitest": "2.0.0-beta.
|
|
51
|
+
"vitest": "2.0.0-beta.11"
|
|
51
52
|
},
|
|
52
53
|
"peerDependenciesMeta": {
|
|
53
54
|
"playwright": {
|
|
@@ -66,7 +67,8 @@
|
|
|
66
67
|
"magic-string": "^0.30.10",
|
|
67
68
|
"msw": "^2.3.1",
|
|
68
69
|
"sirv": "^2.0.4",
|
|
69
|
-
"
|
|
70
|
+
"ws": "^8.17.1",
|
|
71
|
+
"@vitest/utils": "2.0.0-beta.11"
|
|
70
72
|
},
|
|
71
73
|
"devDependencies": {
|
|
72
74
|
"@types/ws": "^8.5.10",
|
|
@@ -79,10 +81,10 @@
|
|
|
79
81
|
"playwright-core": "^1.44.1",
|
|
80
82
|
"safaridriver": "^0.1.2",
|
|
81
83
|
"webdriverio": "^8.38.2",
|
|
82
|
-
"@vitest/
|
|
83
|
-
"@vitest/
|
|
84
|
-
"
|
|
85
|
-
"vitest": "2.0.0-beta.
|
|
84
|
+
"@vitest/ws-client": "2.0.0-beta.11",
|
|
85
|
+
"@vitest/runner": "2.0.0-beta.11",
|
|
86
|
+
"vitest": "2.0.0-beta.11",
|
|
87
|
+
"@vitest/ui": "2.0.0-beta.11"
|
|
86
88
|
},
|
|
87
89
|
"scripts": {
|
|
88
90
|
"build": "rimraf dist && pnpm build:node && pnpm build:client",
|
|
@@ -1,20 +1,42 @@
|
|
|
1
1
|
import type {
|
|
2
|
+
BrowserContext,
|
|
2
3
|
BrowserContextOptions,
|
|
3
|
-
|
|
4
|
+
Frame,
|
|
4
5
|
LaunchOptions,
|
|
5
|
-
Locator,
|
|
6
6
|
Page,
|
|
7
7
|
} from 'playwright'
|
|
8
8
|
|
|
9
9
|
declare module 'vitest/node' {
|
|
10
10
|
interface BrowserProviderOptions {
|
|
11
11
|
launch?: LaunchOptions
|
|
12
|
-
context?: Omit<
|
|
12
|
+
context?: Omit<
|
|
13
|
+
BrowserContextOptions,
|
|
14
|
+
'ignoreHTTPSErrors' | 'serviceWorkers'
|
|
15
|
+
>
|
|
13
16
|
}
|
|
14
17
|
|
|
15
18
|
export interface BrowserCommandContext {
|
|
16
19
|
page: Page
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
frame: Frame
|
|
21
|
+
context: BrowserContext
|
|
19
22
|
}
|
|
20
23
|
}
|
|
24
|
+
|
|
25
|
+
type PWHoverOptions = Parameters<Page['hover']>[1]
|
|
26
|
+
type PWClickOptions = Parameters<Page['click']>[1]
|
|
27
|
+
type PWDoubleClickOptions = Parameters<Page['dblclick']>[1]
|
|
28
|
+
type PWFillOptions = Parameters<Page['fill']>[2]
|
|
29
|
+
type PWScreenshotOptions = Parameters<Page['screenshot']>[0]
|
|
30
|
+
type PWSelectOptions = Parameters<Page['selectOption']>[2]
|
|
31
|
+
type PWDragAndDropOptions = Parameters<Page['dragAndDrop']>[2]
|
|
32
|
+
|
|
33
|
+
declare module '@vitest/browser/context' {
|
|
34
|
+
export interface UserEventHoverOptions extends PWHoverOptions {}
|
|
35
|
+
export interface UserEventClickOptions extends PWClickOptions {}
|
|
36
|
+
export interface UserEventDoubleClickOptions extends PWDoubleClickOptions {}
|
|
37
|
+
export interface UserEventFillOptions extends PWFillOptions {}
|
|
38
|
+
export interface UserEventSelectOptions extends PWSelectOptions {}
|
|
39
|
+
export interface UserEventDragOptions extends UserEventDragAndDropOptions {}
|
|
40
|
+
|
|
41
|
+
export interface ScreenshotOptions extends PWScreenshotOptions {}
|
|
42
|
+
}
|