@vitest/browser 2.1.0-beta.3 → 2.1.0-beta.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.
@@ -23,7 +23,7 @@
23
23
  })();
24
24
  </script>
25
25
  <!-- !LOAD_METADATA! -->
26
- <script type="module" crossorigin src="./assets/index-uh8h5Yzr.js"></script>
26
+ <script type="module" crossorigin src="./assets/index-BzrnDBXn.js"></script>
27
27
  <link rel="stylesheet" crossorigin href="./assets/index-JTfsnJeu.css">
28
28
  </head>
29
29
  <body>
@@ -1,7 +1,7 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { _ as __vitePreload, g as getBrowserState, a as getConfig, r as relative } from "./preload-helper-Btt6SgIy.js";
4
+ import { _ as __vitePreload, g as getBrowserState, a as getConfig, r as relative } from "./preload-helper-BrGs795G.js";
5
5
  import { channel, client, globalChannel } from "@vitest/browser/client";
6
6
  function generateHash(str) {
7
7
  let hash = 0;
@@ -278,7 +278,9 @@ const __vitePreload = function preload(baseModule, deps, importerUrl) {
278
278
  );
279
279
  }
280
280
  return promise.then(() => baseModule()).catch((err) => {
281
- const e = new Event("vite:preloadError", { cancelable: true });
281
+ const e = new Event("vite:preloadError", {
282
+ cancelable: true
283
+ });
282
284
  e.payload = err;
283
285
  window.dispatchEvent(e);
284
286
  if (!e.defaultPrevented) {
@@ -1,12 +1,12 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { a as getConfig, i as importFs, b as importId, e as extname, g as getBrowserState, _ as __vitePreload, j as join, c as getWorkerState } from "./preload-helper-Btt6SgIy.js";
4
+ import { a as getConfig, i as importFs, b as importId, e as extname, g as getBrowserState, _ as __vitePreload, j as join, c as getWorkerState } from "./preload-helper-BrGs795G.js";
5
5
  import { loadDiffConfig, loadSnapshotSerializers, takeCoverageInsideWorker, setupCommonEnv, startTests, collectTests, SpyModule } from "vitest/browser";
6
+ import { page } from "@vitest/browser/context";
6
7
  import { globalChannel, channel, waitForChannel, client, onCancel } from "@vitest/browser/client";
7
8
  import { getSafeTimers, stringify, format, TraceMap, originalPositionFor } from "vitest/utils";
8
9
  import { VitestTestRunner, NodeBenchmarkRunner } from "vitest/runners";
9
- import { page } from "@vitest/browser/context";
10
10
  import { expect } from "vitest";
11
11
  function getType(value) {
12
12
  return Object.prototype.toString.apply(value).slice(8, -1);
@@ -11892,6 +11892,7 @@ async function setupExpectDom() {
11892
11892
  }, options);
11893
11893
  };
11894
11894
  }
11895
+ const cleanupSymbol = Symbol.for("vitest:component-cleanup");
11895
11896
  const url = new URL(location.href);
11896
11897
  const reloadStart = url.searchParams.get("__reloadStart");
11897
11898
  function debug(...args) {
@@ -11975,6 +11976,17 @@ async function executeTests(method, files) {
11975
11976
  }
11976
11977
  }
11977
11978
  } finally {
11979
+ try {
11980
+ if (cleanupSymbol in page) {
11981
+ page[cleanupSymbol]();
11982
+ }
11983
+ } catch (error) {
11984
+ await client.rpc.onUnhandledError({
11985
+ name: error.name,
11986
+ message: error.message,
11987
+ stack: String(error.stack)
11988
+ }, "Cleanup Error");
11989
+ }
11978
11990
  state.environmentTeardownRun = true;
11979
11991
  debug("finished running tests");
11980
11992
  done(files);
@@ -26,8 +26,8 @@
26
26
  {__VITEST_INJECTOR__}
27
27
  {__VITEST_ERROR_CATCHER__}
28
28
  {__VITEST_SCRIPTS__}
29
- <script type="module" crossorigin src="/__vitest_browser__/orchestrator-BObhEEvc.js"></script>
30
- <link rel="modulepreload" crossorigin href="/__vitest_browser__/preload-helper-Btt6SgIy.js">
29
+ <script type="module" crossorigin src="/__vitest_browser__/orchestrator-CnT07ZeZ.js"></script>
30
+ <link rel="modulepreload" crossorigin href="/__vitest_browser__/preload-helper-BrGs795G.js">
31
31
  </head>
32
32
  <body>
33
33
  <div id="vitest-tester"></div>
@@ -20,10 +20,10 @@
20
20
  <script>{__VITEST_STATE__}</script>
21
21
  {__VITEST_INTERNAL_SCRIPTS__}
22
22
  {__VITEST_SCRIPTS__}
23
- <script type="module" crossorigin src="/__vitest_browser__/tester-CRcWWhrn.js"></script>
24
- <link rel="modulepreload" crossorigin href="/__vitest_browser__/preload-helper-Btt6SgIy.js">
23
+ <script type="module" crossorigin src="/__vitest_browser__/tester-BG73i7yi.js"></script>
24
+ <link rel="modulepreload" crossorigin href="/__vitest_browser__/preload-helper-BrGs795G.js">
25
25
  </head>
26
- <body data-vitest-body>
26
+ <body>
27
27
  {__VITEST_APPEND__}
28
28
  </body>
29
29
  </html>
@@ -0,0 +1,207 @@
1
+ import { server, page } from '@vitest/browser/context';
2
+ import { I as Ivya, a as getByRoleSelector, c as getByAltTextSelector, g as getByLabelSelector, d as getByPlaceholderSelector, b as getByTestIdSelector, e as getByTextSelector, f as getByTitleSelector, h as getElementError } from './public-utils-D6S2-5kI.js';
3
+
4
+ // @__NO_SIDE_EFFECTS__
5
+ function getBrowserState() {
6
+ return window.__vitest_browser_runner__;
7
+ }
8
+ // @__NO_SIDE_EFFECTS__
9
+ function getWorkerState() {
10
+ const state = window.__vitest_worker__;
11
+ if (!state) {
12
+ throw new Error("Worker state is not found. This is an issue with Vitest. Please, open an issue.");
13
+ }
14
+ return state;
15
+ }
16
+ // @__NO_SIDE_EFFECTS__
17
+ function convertElementToCssSelector(element) {
18
+ if (!element || !(element instanceof Element)) {
19
+ throw new Error(
20
+ `Expected DOM element to be an instance of Element, received ${typeof element}`
21
+ );
22
+ }
23
+ return getUniqueCssSelector(element);
24
+ }
25
+ function escapeIdForCSSSelector(id) {
26
+ return id.split("").map((char) => {
27
+ const code = char.charCodeAt(0);
28
+ if (char === " " || char === "#" || char === "." || char === ":" || char === "[" || char === "]" || char === ">" || char === "+" || char === "~" || char === "\\") {
29
+ return `\\${char}`;
30
+ } else if (code >= 65536) {
31
+ return `\\${code.toString(16).toUpperCase().padStart(6, "0")} `;
32
+ } else if (code < 32 || code === 127) {
33
+ return `\\${code.toString(16).toUpperCase().padStart(2, "0")} `;
34
+ } else if (code >= 128) {
35
+ return `\\${code.toString(16).toUpperCase().padStart(2, "0")} `;
36
+ } else {
37
+ return char;
38
+ }
39
+ }).join("");
40
+ }
41
+ function getUniqueCssSelector(el) {
42
+ const path = [];
43
+ let parent;
44
+ let hasShadowRoot = false;
45
+ while (parent = getParent(el)) {
46
+ if (parent.shadowRoot) {
47
+ hasShadowRoot = true;
48
+ }
49
+ const tag = el.tagName;
50
+ if (el.id) {
51
+ path.push(`#${escapeIdForCSSSelector(el.id)}`);
52
+ } else if (!el.nextElementSibling && !el.previousElementSibling) {
53
+ path.push(tag.toLowerCase());
54
+ } else {
55
+ let index = 0;
56
+ let sameTagSiblings = 0;
57
+ let elementIndex = 0;
58
+ for (const sibling of parent.children) {
59
+ index++;
60
+ if (sibling.tagName === tag) {
61
+ sameTagSiblings++;
62
+ }
63
+ if (sibling === el) {
64
+ elementIndex = index;
65
+ }
66
+ }
67
+ if (sameTagSiblings > 1) {
68
+ path.push(`${tag.toLowerCase()}:nth-child(${elementIndex})`);
69
+ } else {
70
+ path.push(tag.toLowerCase());
71
+ }
72
+ }
73
+ el = parent;
74
+ }
75
+ return `${(/* @__PURE__ */ getBrowserState()).provider === "webdriverio" && hasShadowRoot ? ">>>" : ""}${path.reverse().join(" > ")}`;
76
+ }
77
+ function getParent(el) {
78
+ const parent = el.parentNode;
79
+ if (parent instanceof ShadowRoot) {
80
+ return parent.host;
81
+ }
82
+ return parent;
83
+ }
84
+
85
+ const selectorEngine = Ivya.create({
86
+ browser: ((name) => {
87
+ switch (name) {
88
+ case "edge":
89
+ case "chrome":
90
+ return "chromium";
91
+ case "safari":
92
+ return "webkit";
93
+ default:
94
+ return name;
95
+ }
96
+ })(server.config.browser.name),
97
+ testIdAttribute: server.config.browser.locators.testIdAttribute
98
+ });
99
+ class Locator {
100
+ _parsedSelector;
101
+ _container;
102
+ _pwSelector;
103
+ click(options = {}) {
104
+ return this.triggerCommand("__vitest_click", this.selector, options);
105
+ }
106
+ dblClick(options = {}) {
107
+ return this.triggerCommand("__vitest_dblClick", this.selector, options);
108
+ }
109
+ tripleClick(options = {}) {
110
+ return this.triggerCommand("__vitest_tripleClick", this.selector, options);
111
+ }
112
+ clear() {
113
+ return this.triggerCommand("__vitest_clear", this.selector);
114
+ }
115
+ hover(options) {
116
+ return this.triggerCommand("__vitest_hover", this.selector, options);
117
+ }
118
+ unhover(options) {
119
+ return this.triggerCommand("__vitest_hover", "html > body", options);
120
+ }
121
+ fill(text, options) {
122
+ return this.triggerCommand("__vitest_fill", this.selector, text, options);
123
+ }
124
+ dropTo(target, options = {}) {
125
+ return this.triggerCommand(
126
+ "__vitest_dragAndDrop",
127
+ this.selector,
128
+ target.selector,
129
+ options
130
+ );
131
+ }
132
+ selectOptions(value) {
133
+ const values = (Array.isArray(value) ? value : [value]).map((v) => {
134
+ if (typeof v !== "string") {
135
+ const selector = "element" in v ? v.selector : selectorEngine.generateSelectorSimple(v);
136
+ return { element: selector };
137
+ }
138
+ return v;
139
+ });
140
+ return this.triggerCommand("__vitest_selectOptions", this.selector, values);
141
+ }
142
+ screenshot(options) {
143
+ return page.screenshot({
144
+ ...options,
145
+ element: this
146
+ });
147
+ }
148
+ getByRole(role, options) {
149
+ return this.locator(getByRoleSelector(role, options));
150
+ }
151
+ getByAltText(text, options) {
152
+ return this.locator(getByAltTextSelector(text, options));
153
+ }
154
+ getByLabelText(text, options) {
155
+ return this.locator(getByLabelSelector(text, options));
156
+ }
157
+ getByPlaceholder(text, options) {
158
+ return this.locator(getByPlaceholderSelector(text, options));
159
+ }
160
+ getByTestId(testId) {
161
+ return this.locator(getByTestIdSelector(server.config.browser.locators.testIdAttribute, testId));
162
+ }
163
+ getByText(text, options) {
164
+ return this.locator(getByTextSelector(text, options));
165
+ }
166
+ getByTitle(title, options) {
167
+ return this.locator(getByTitleSelector(title, options));
168
+ }
169
+ query() {
170
+ const parsedSelector = this._parsedSelector || (this._parsedSelector = selectorEngine.parseSelector(this._pwSelector || this.selector));
171
+ return selectorEngine.querySelector(parsedSelector, document.documentElement, true);
172
+ }
173
+ element() {
174
+ const element = this.query();
175
+ if (!element) {
176
+ throw getElementError(this._pwSelector || this.selector, this._container || document.body);
177
+ }
178
+ return element;
179
+ }
180
+ elements() {
181
+ const parsedSelector = this._parsedSelector || (this._parsedSelector = selectorEngine.parseSelector(this._pwSelector || this.selector));
182
+ return selectorEngine.querySelectorAll(parsedSelector, document.documentElement);
183
+ }
184
+ all() {
185
+ return this.elements().map((element) => this.elementLocator(element));
186
+ }
187
+ get state() {
188
+ return getBrowserState();
189
+ }
190
+ get worker() {
191
+ return getWorkerState();
192
+ }
193
+ get rpc() {
194
+ return this.worker.rpc;
195
+ }
196
+ triggerCommand(command, ...args) {
197
+ const filepath = this.worker.filepath || this.worker.current?.file?.filepath || void 0;
198
+ return this.rpc.triggerCommand(
199
+ this.state.contextId,
200
+ command,
201
+ filepath,
202
+ args
203
+ );
204
+ }
205
+ }
206
+
207
+ export { Locator as L, convertElementToCssSelector as c, selectorEngine as s };
package/dist/index.js CHANGED
@@ -2050,10 +2050,11 @@ async function resolveTester(server, url, res) {
2050
2050
  `<script type="module" src="${server.errorCatcherUrl}"><\/script>`,
2051
2051
  server.locatorsUrl ? `<script type="module" src="${server.locatorsUrl}"><\/script>` : ""
2052
2052
  ].join("\n"),
2053
- __VITEST_APPEND__: `<script type="module">
2053
+ __VITEST_APPEND__: `<script data-vitest-append type="module">
2054
2054
  __vitest_browser_runner__.runningFiles = ${tests}
2055
2055
  __vitest_browser_runner__.iframeId = ${iframeId}
2056
2056
  __vitest_browser_runner__.${method === "run" ? "runTests" : "collectTests"}(__vitest_browser_runner__.runningFiles)
2057
+ document.querySelector('script[data-vitest-append]').remove()
2057
2058
  <\/script>`
2058
2059
  });
2059
2060
  }
@@ -2213,6 +2214,48 @@ var BrowserPlugin = (browserServer, base = "/") => {
2213
2214
  entries.push(coverage.customProviderModule);
2214
2215
  }
2215
2216
  }
2217
+ const include = [
2218
+ "vitest > @vitest/snapshot > magic-string",
2219
+ "vitest > chai",
2220
+ "vitest > chai > loupe",
2221
+ "vitest > @vitest/utils > loupe",
2222
+ "@vitest/browser > @testing-library/user-event",
2223
+ "@vitest/browser > @testing-library/dom"
2224
+ ];
2225
+ const react = tryResolve("vitest-browser-react", [project.ctx.config.root]);
2226
+ if (react) {
2227
+ include.push(react);
2228
+ }
2229
+ const vue = tryResolve("vitest-browser-react", [project.ctx.config.root]);
2230
+ if (vue) {
2231
+ include.push(vue);
2232
+ }
2233
+ const exclude = [
2234
+ "vitest",
2235
+ "vitest/utils",
2236
+ "vitest/browser",
2237
+ "vitest/runners",
2238
+ "@vitest/browser",
2239
+ "@vitest/browser/client",
2240
+ "@vitest/utils",
2241
+ "@vitest/utils/source-map",
2242
+ "@vitest/runner",
2243
+ "@vitest/spy",
2244
+ "@vitest/utils/error",
2245
+ "@vitest/snapshot",
2246
+ "@vitest/expect",
2247
+ "std-env",
2248
+ "tinybench",
2249
+ "tinyspy",
2250
+ "tinyrainbow",
2251
+ "pathe",
2252
+ "msw",
2253
+ "msw/browser"
2254
+ ];
2255
+ const svelte = tryResolve("vitest-browser-svelte", [project.ctx.config.root]);
2256
+ if (svelte) {
2257
+ exclude.push(svelte);
2258
+ }
2216
2259
  return {
2217
2260
  define,
2218
2261
  resolve: {
@@ -2220,36 +2263,8 @@ var BrowserPlugin = (browserServer, base = "/") => {
2220
2263
  },
2221
2264
  optimizeDeps: {
2222
2265
  entries,
2223
- exclude: [
2224
- "vitest",
2225
- "vitest/utils",
2226
- "vitest/browser",
2227
- "vitest/runners",
2228
- "@vitest/browser",
2229
- "@vitest/browser/client",
2230
- "@vitest/utils",
2231
- "@vitest/utils/source-map",
2232
- "@vitest/runner",
2233
- "@vitest/spy",
2234
- "@vitest/utils/error",
2235
- "@vitest/snapshot",
2236
- "@vitest/expect",
2237
- "std-env",
2238
- "tinybench",
2239
- "tinyspy",
2240
- "tinyrainbow",
2241
- "pathe",
2242
- "msw",
2243
- "msw/browser"
2244
- ],
2245
- include: [
2246
- "vitest > @vitest/snapshot > magic-string",
2247
- "vitest > chai",
2248
- "vitest > chai > loupe",
2249
- "vitest > @vitest/utils > loupe",
2250
- "@vitest/browser > @testing-library/user-event",
2251
- "@vitest/browser > @testing-library/dom"
2252
- ]
2266
+ exclude,
2267
+ include
2253
2268
  }
2254
2269
  };
2255
2270
  },
@@ -221,8 +221,8 @@ declare const selectorEngine: Ivya;
221
221
  declare abstract class Locator {
222
222
  abstract selector: string;
223
223
  private _parsedSelector;
224
+ protected _container?: Element | undefined;
224
225
  protected _pwSelector?: string | undefined;
225
- protected _forceElement?: Element | undefined;
226
226
  click(options?: UserEventClickOptions): Promise<void>;
227
227
  dblClick(options?: UserEventClickOptions): Promise<void>;
228
228
  tripleClick(options?: UserEventClickOptions): Promise<void>;
@@ -1,2 +1,4 @@
1
1
  import '@vitest/browser/context';
2
- export { L as Locator, s as selectorEngine } from '../index-BHH2eSIh.js';
2
+ import '../public-utils-D6S2-5kI.js';
3
+ export { L as Locator, s as selectorEngine } from '../index-DcU_z8HM.js';
4
+ import 'vitest/utils';
@@ -1,5 +1,7 @@
1
1
  import { page, server } from '@vitest/browser/context';
2
- import { g as getByLabelSelector, a as getByRoleSelector, b as getByTestIdSelector, c as getByAltTextSelector, d as getByPlaceholderSelector, e as getByTextSelector, f as getByTitleSelector, s as selectorEngine, L as Locator } from '../index-BHH2eSIh.js';
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-DcU_z8HM.js';
4
+ import 'vitest/utils';
3
5
 
4
6
  page.extend({
5
7
  getByLabelText(text, options) {
@@ -24,19 +26,25 @@ page.extend({
24
26
  return new PlaywrightLocator(getByTitleSelector(title, options));
25
27
  },
26
28
  elementLocator(element) {
27
- return new PlaywrightLocator(selectorEngine.generateSelectorSimple(element), element);
29
+ return new PlaywrightLocator(
30
+ selectorEngine.generateSelectorSimple(element),
31
+ element
32
+ );
28
33
  }
29
34
  });
30
35
  class PlaywrightLocator extends Locator {
31
- constructor(selector, _forceElement) {
36
+ constructor(selector, _container) {
32
37
  super();
33
38
  this.selector = selector;
34
- this._forceElement = _forceElement;
39
+ this._container = _container;
35
40
  }
36
41
  locator(selector) {
37
- return new PlaywrightLocator(`${this.selector} >> ${selector}`);
42
+ return new PlaywrightLocator(`${this.selector} >> ${selector}`, this._container);
38
43
  }
39
44
  elementLocator(element) {
40
- return new PlaywrightLocator(selectorEngine.generateSelectorSimple(element), element);
45
+ return new PlaywrightLocator(
46
+ selectorEngine.generateSelectorSimple(element),
47
+ element
48
+ );
41
49
  }
42
50
  }
@@ -1,6 +1,8 @@
1
1
  import { page, server } from '@vitest/browser/context';
2
2
  import { userEvent } from '@testing-library/user-event';
3
- import { g as getByLabelSelector, a as getByRoleSelector, b as getByTestIdSelector, c as getByAltTextSelector, d as getByPlaceholderSelector, e as getByTextSelector, f as getByTitleSelector, s as selectorEngine, L as Locator, h as convertElementToCssSelector } from '../index-BHH2eSIh.js';
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-DcU_z8HM.js';
5
+ import 'vitest/utils';
4
6
 
5
7
  page.extend({
6
8
  getByLabelText(text, options) {
@@ -25,19 +27,22 @@ page.extend({
25
27
  return new PreviewLocator(getByTitleSelector(title, options));
26
28
  },
27
29
  elementLocator(element) {
28
- return new PreviewLocator(selectorEngine.generateSelectorSimple(element), element);
30
+ return new PreviewLocator(
31
+ selectorEngine.generateSelectorSimple(element),
32
+ element
33
+ );
29
34
  }
30
35
  });
31
36
  class PreviewLocator extends Locator {
32
- constructor(_pwSelector, _forceElement) {
37
+ constructor(_pwSelector, _container) {
33
38
  super();
34
39
  this._pwSelector = _pwSelector;
35
- this._forceElement = _forceElement;
40
+ this._container = _container;
36
41
  }
37
42
  get selector() {
38
43
  const selectors = this.elements().map((element) => convertElementToCssSelector(element));
39
44
  if (!selectors.length) {
40
- throw new Error(`element not found: ${this._pwSelector}`);
45
+ throw getElementError(this._pwSelector, this._container || document.body);
41
46
  }
42
47
  return selectors.join(", ");
43
48
  }
@@ -78,9 +83,12 @@ class PreviewLocator extends Locator {
78
83
  throw new Error('The "preview" provider doesn\'t support `screenshot` method.');
79
84
  }
80
85
  locator(selector) {
81
- return new PreviewLocator(`${this._pwSelector} >> ${selector}`);
86
+ return new PreviewLocator(`${this._pwSelector} >> ${selector}`, this._container);
82
87
  }
83
88
  elementLocator(element) {
84
- return new PreviewLocator(selectorEngine.generateSelectorSimple(element), element);
89
+ return new PreviewLocator(
90
+ selectorEngine.generateSelectorSimple(element),
91
+ element
92
+ );
85
93
  }
86
94
  }
@@ -1,5 +1,7 @@
1
1
  import { page, server } from '@vitest/browser/context';
2
- import { g as getByLabelSelector, a as getByRoleSelector, b as getByTestIdSelector, c as getByAltTextSelector, d as getByPlaceholderSelector, e as getByTextSelector, f as getByTitleSelector, s as selectorEngine, L as Locator, h as convertElementToCssSelector } from '../index-BHH2eSIh.js';
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-DcU_z8HM.js';
4
+ import 'vitest/utils';
3
5
 
4
6
  page.extend({
5
7
  getByLabelText(text, options) {
@@ -24,19 +26,19 @@ page.extend({
24
26
  return new WebdriverIOLocator(getByTitleSelector(title, options));
25
27
  },
26
28
  elementLocator(element) {
27
- return new WebdriverIOLocator(selectorEngine.generateSelectorSimple(element), element);
29
+ return new WebdriverIOLocator(selectorEngine.generateSelectorSimple(element));
28
30
  }
29
31
  });
30
32
  class WebdriverIOLocator extends Locator {
31
- constructor(_pwSelector, _forceElement) {
33
+ constructor(_pwSelector, _container) {
32
34
  super();
33
35
  this._pwSelector = _pwSelector;
34
- this._forceElement = _forceElement;
36
+ this._container = _container;
35
37
  }
36
38
  get selector() {
37
39
  const selectors = this.elements().map((element) => convertElementToCssSelector(element));
38
40
  if (!selectors.length) {
39
- throw new Error(`element not found: ${this._pwSelector}`);
41
+ throw getElementError(this._pwSelector, this._container || document.body);
40
42
  }
41
43
  return selectors.join(", ");
42
44
  }
@@ -45,7 +47,7 @@ class WebdriverIOLocator extends Locator {
45
47
  return this.triggerCommand("__vitest_selectOptions", this.selector, values);
46
48
  }
47
49
  locator(selector) {
48
- return new WebdriverIOLocator(`${this._pwSelector} >> ${selector}`);
50
+ return new WebdriverIOLocator(`${this._pwSelector} >> ${selector}`, this._container);
49
51
  }
50
52
  elementLocator(element) {
51
53
  return new WebdriverIOLocator(selectorEngine.generateSelectorSimple(element), element);