@vitest/browser 2.1.1 → 2.1.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.
@@ -7,7 +7,7 @@ import { page } from "@vitest/browser/context";
7
7
  import { globalChannel, channel, client, onCancel, waitForChannel } from "@vitest/browser/client";
8
8
  import { getSafeTimers, stringify, format, TraceMap, originalPositionFor } from "vitest/utils";
9
9
  import { VitestTestRunner, NodeBenchmarkRunner } from "vitest/runners";
10
- import { expect } from "vitest";
10
+ import { expect, chai } from "vitest";
11
11
  function mockObject(options, object, mockExports = {}) {
12
12
  const finalizers = new Array();
13
13
  const refs = new RefTracker();
@@ -782,6 +782,7 @@ function createBrowserRunner(runnerClass, mocker, state, coverageModule) {
782
782
  if (coverage) {
783
783
  await rpc$1().onAfterSuiteRun({
784
784
  coverage,
785
+ testFiles: files.map((file) => file.name),
785
786
  transformMode: "browser",
786
787
  projectName: this.config.name
787
788
  });
@@ -880,11 +881,13 @@ class VitestBrowserClientMocker extends ModuleMocker {
880
881
  const exports = Object.keys(module);
881
882
  channel.postMessage({
882
883
  type: "mock-factory:response",
884
+ eventId: e.data.eventId,
883
885
  exports
884
886
  });
885
887
  } catch (err) {
886
888
  channel.postMessage({
887
889
  type: "mock-factory:error",
890
+ eventId: e.data.eventId,
888
891
  error: {
889
892
  name: err.name,
890
893
  message: err.message,
@@ -12049,10 +12052,15 @@ async function setupExpectDom() {
12049
12052
  if (!(elementOrLocator instanceof Element) && !("element" in elementOrLocator)) {
12050
12053
  throw new Error(`Invalid element or locator: ${elementOrLocator}. Expected an instance of Element or Locator, received ${typeof elementOrLocator}`);
12051
12054
  }
12052
- return expect.poll(() => {
12053
- if (elementOrLocator instanceof Element) {
12055
+ return expect.poll(function element() {
12056
+ if (elementOrLocator instanceof Element || elementOrLocator == null) {
12054
12057
  return elementOrLocator;
12055
12058
  }
12059
+ const isNot = chai.util.flag(this, "negate");
12060
+ const name = chai.util.flag(this, "_name");
12061
+ if (isNot && name === "toBeInTheDocument") {
12062
+ return elementOrLocator.query();
12063
+ }
12056
12064
  return elementOrLocator.element();
12057
12065
  }, options);
12058
12066
  };
@@ -26,7 +26,7 @@
26
26
  {__VITEST_INJECTOR__}
27
27
  {__VITEST_ERROR_CATCHER__}
28
28
  {__VITEST_SCRIPTS__}
29
- <script type="module" crossorigin src="/__vitest_browser__/orchestrator-qtq9EW1J.js"></script>
29
+ <script type="module" crossorigin src="/__vitest_browser__/orchestrator-BCPid0xo.js"></script>
30
30
  <link rel="modulepreload" crossorigin href="/__vitest_browser__/preload-helper-D-WYp1PK.js">
31
31
  </head>
32
32
  <body>
@@ -20,7 +20,7 @@
20
20
  <script>{__VITEST_STATE__}</script>
21
21
  {__VITEST_INTERNAL_SCRIPTS__}
22
22
  {__VITEST_SCRIPTS__}
23
- <script type="module" crossorigin src="/__vitest_browser__/tester-Bm6k0JOu.js"></script>
23
+ <script type="module" crossorigin src="/__vitest_browser__/tester-DZCtFstH.js"></script>
24
24
  <link rel="modulepreload" crossorigin href="/__vitest_browser__/preload-helper-D-WYp1PK.js">
25
25
  </head>
26
26
  <body>
package/dist/index.js CHANGED
@@ -16,7 +16,7 @@ import { resolve as resolve$1, dirname as dirname$1, basename as basename$1, nor
16
16
  import crypto from 'node:crypto';
17
17
  import * as nodeos from 'node:os';
18
18
 
19
- var version = "2.1.1";
19
+ var version = "2.1.3";
20
20
 
21
21
  const _DRIVE_LETTER_START_RE = /^[A-Za-z]:\//;
22
22
  function normalizeWindowsPath(input = "") {
@@ -1949,7 +1949,7 @@ async function resolveTester(server, url, res) {
1949
1949
  const testerScripts = await server.formatScripts(
1950
1950
  project.config.browser.testerScripts
1951
1951
  );
1952
- const clientScript = `<script type="module" src="${server.project.config.base || "/"}@vite/client"><\/script>`;
1952
+ const clientScript = `<script type="module" src="${server.base}@vite/client"><\/script>`;
1953
1953
  const stateJs = typeof server.stateJs === "string" ? server.stateJs : await server.stateJs;
1954
1954
  const stateScript = `<script type="module">${stateJs}<\/script>`;
1955
1955
  server.testerScripts = `${stateScript}${clientScript}${testerScripts}`;
@@ -2201,7 +2201,7 @@ var BrowserPlugin = (browserServer, base = "/") => {
2201
2201
  {
2202
2202
  name: "vitest:browser:resolve-virtual",
2203
2203
  async resolveId(rawId) {
2204
- if (rawId === "/__vitest_msw__") {
2204
+ if (rawId === "/mockServiceWorker.js") {
2205
2205
  return this.resolve("msw/mockServiceWorker.js", distRoot, {
2206
2206
  skipSelf: true
2207
2207
  });
@@ -2210,8 +2210,14 @@ var BrowserPlugin = (browserServer, base = "/") => {
2210
2210
  },
2211
2211
  {
2212
2212
  name: "vitest:browser:assets",
2213
+ configureServer(server) {
2214
+ server.middlewares.use(
2215
+ "/__vitest__",
2216
+ sirv(resolve(distRoot, "client/__vitest__"))
2217
+ );
2218
+ },
2213
2219
  resolveId(id) {
2214
- if (id.startsWith("/__vitest_browser__/") || id.startsWith("/__vitest__/")) {
2220
+ if (id.startsWith("/__vitest_browser__/")) {
2215
2221
  return resolve(distRoot, "client", id.slice(1));
2216
2222
  }
2217
2223
  },
@@ -2231,18 +2237,20 @@ var BrowserPlugin = (browserServer, base = "/") => {
2231
2237
  enforce: "post",
2232
2238
  async config(viteConfig) {
2233
2239
  // Enables using ignore hint for coverage providers with @preserve keyword
2234
- viteConfig.esbuild ||= {};
2235
- viteConfig.esbuild.legalComments = "inline";
2236
- const server = resolveApiServerConfig(
2240
+ if (viteConfig.esbuild !== false) {
2241
+ viteConfig.esbuild ||= {};
2242
+ viteConfig.esbuild.legalComments = "inline";
2243
+ }
2244
+ const api = resolveApiServerConfig(
2237
2245
  viteConfig.test?.browser || {},
2238
2246
  defaultBrowserPort
2239
2247
  ) || {
2240
2248
  port: defaultBrowserPort
2241
2249
  };
2242
- server.middlewareMode = false;
2243
2250
  viteConfig.server = {
2244
2251
  ...viteConfig.server,
2245
- ...server,
2252
+ ...api,
2253
+ middlewareMode: false,
2246
2254
  open: false
2247
2255
  };
2248
2256
  viteConfig.server.fs ??= {};
@@ -2278,6 +2286,19 @@ var BrowserPlugin = (browserServer, base = "/") => {
2278
2286
  };
2279
2287
  }
2280
2288
  },
2289
+ {
2290
+ name: "vitest:browser:worker",
2291
+ transform(code, id, _options) {
2292
+ if (/(?:\?|&)worker_file&type=\w+(?:&|$)/.test(id)) {
2293
+ const s = new MagicString(code);
2294
+ s.prepend("globalThis.__vitest_browser_runner__ = { wrapDynamicImport: f => f() };\n");
2295
+ return {
2296
+ code: s.toString(),
2297
+ map: s.generateMap({ hires: "boundary" })
2298
+ };
2299
+ }
2300
+ }
2301
+ },
2281
2302
  // TODO: remove this when @testing-library/vue supports ESM
2282
2303
  {
2283
2304
  name: "vitest:browser:support-testing-library",
@@ -71,7 +71,7 @@ class PreviewLocator extends Locator {
71
71
  return file2;
72
72
  }
73
73
  const { content: base64, basename, mime } = await this.triggerCommand("__vitest_fileInfo", file2, "base64");
74
- const fileInstance = fetch(base64).then((r) => r.blob()).then((blob) => new File([blob], basename, { type: mime }));
74
+ const fileInstance = fetch(`data:${mime};base64,${base64}`).then((r) => r.blob()).then((blob) => new File([blob], basename, { type: mime }));
75
75
  return fileInstance;
76
76
  });
77
77
  const uploadFiles = await Promise.all(uploadPromise);
package/matchers.d.ts CHANGED
@@ -16,7 +16,7 @@ declare module 'vitest' {
16
16
  type PromisifyDomAssertion<T> = Promisify<Assertion<T>>
17
17
 
18
18
  interface ExpectStatic {
19
- element: <T extends Element | Locator>(element: T, options?: ExpectPollOptions) => PromisifyDomAssertion<Awaited<Element>>
19
+ element: <T extends Element | Locator>(element: T, options?: ExpectPollOptions) => PromisifyDomAssertion<Awaited<Element | null>>
20
20
  }
21
21
  }
22
22
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vitest/browser",
3
3
  "type": "module",
4
- "version": "2.1.1",
4
+ "version": "2.1.3",
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.1"
65
+ "vitest": "2.1.3"
66
66
  },
67
67
  "peerDependenciesMeta": {
68
68
  "playwright": {
@@ -83,8 +83,8 @@
83
83
  "sirv": "^2.0.4",
84
84
  "tinyrainbow": "^1.2.0",
85
85
  "ws": "^8.18.0",
86
- "@vitest/utils": "2.1.1",
87
- "@vitest/mocker": "2.1.1"
86
+ "@vitest/mocker": "2.1.3",
87
+ "@vitest/utils": "2.1.3"
88
88
  },
89
89
  "devDependencies": {
90
90
  "@testing-library/jest-dom": "^6.4.8",
@@ -100,17 +100,17 @@
100
100
  "playwright-core": "^1.46.0",
101
101
  "safaridriver": "^0.1.2",
102
102
  "webdriverio": "^8.40.2",
103
- "@vitest/runner": "2.1.1",
104
- "@vitest/ws-client": "2.1.1",
105
- "@vitest/ui": "2.1.1",
106
- "vitest": "2.1.1"
103
+ "@vitest/runner": "2.1.3",
104
+ "@vitest/ui": "2.1.3",
105
+ "@vitest/ws-client": "2.1.3",
106
+ "vitest": "2.1.3"
107
107
  },
108
108
  "scripts": {
109
109
  "build": "rimraf dist && pnpm build:node && pnpm build:client",
110
110
  "build:client": "vite build src/client",
111
111
  "build:node": "rollup -c",
112
112
  "dev:client": "vite build src/client --watch",
113
- "dev:node": "rollup -c --watch --watch.include 'src/node/**'",
113
+ "dev:node": "rollup -c --watch --watch.include 'src/**'",
114
114
  "dev": "rimraf dist && pnpm run --stream '/^dev:/'"
115
115
  }
116
116
  }