@rstest/browser 0.9.7 → 0.9.9

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.
@@ -0,0 +1 @@
1
+ /*! LICENSE: lib-react.9e703e1b29.js.LICENSE.txt */
@@ -12,7 +12,7 @@
12
12
  <script>
13
13
  window.__RSTEST_BROWSER_OPTIONS__ = __RSTEST_OPTIONS_PLACEHOLDER__;
14
14
  </script>
15
- <script defer src="/container-static/js/lib-react.57a7325be2.js"></script><script defer src="/container-static/js/407.89ee95c89d.js"></script><script defer src="/container-static/js/index.3ad6624086.js"></script><link href="/container-static/css/index.5c72297783.css" rel="stylesheet"></head>
15
+ <script defer src="/container-static/js/lib-react.9e703e1b29.js"></script><script defer src="/container-static/js/464.89762ff658.js"></script><script defer src="/container-static/js/index.c13dfe1ecf.js"></script><link href="/container-static/css/index.5c72297783.css" rel="stylesheet"></head>
16
16
  <body>
17
17
  <div id="root"></div>
18
18
  </body>
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import { existsSync } from "node:fs";
2
2
  import promises from "node:fs/promises";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import { isDeepStrictEqual } from "node:util";
5
- import { color, getSetupFiles, getTestEntries, isDebug, loadCoverageProvider, logger, rsbuild, serializableConfig } from "@rstest/core/browser";
5
+ import { color, createCoverageProvider, getSetupFiles, getTestEntries, isDebug, loadCoverageProvider, logger, rsbuild, serializableConfig } from "@rstest/core/browser";
6
6
  import open_editor from "open-editor";
7
7
  import { basename, dirname, join, normalize, relative, resolve as external_pathe_resolve } from "pathe";
8
8
  import sirv from "sirv";
@@ -3651,10 +3651,23 @@ const runBrowserController = async (context, options)=>{
3651
3651
  if (skipOnTestRunEnd) return;
3652
3652
  for (const reporter of context.reporters)await reporter.onTestRunStart?.();
3653
3653
  };
3654
+ const coverageConfig = browserProjects.find((project)=>project.normalizedConfig.coverage?.enabled)?.normalizedConfig.coverage;
3655
+ const coverageProvider = coverageConfig?.enabled ? await createCoverageProvider(coverageConfig, context.rootPath) : null;
3654
3656
  const notifyTestRunEnd = async ({ duration, unhandledErrors, filterRerunTestPaths })=>{
3655
3657
  if (skipOnTestRunEnd) return;
3658
+ let mergedCoverage;
3659
+ if (coverageProvider) {
3660
+ const coverageMap = coverageProvider.createCoverageMap();
3661
+ let hasCoverage = false;
3662
+ for (const result of context.reporterResults.results)if (result.coverage) {
3663
+ coverageMap.merge(result.coverage);
3664
+ hasCoverage = true;
3665
+ }
3666
+ if (hasCoverage) mergedCoverage = coverageMap.toJSON();
3667
+ }
3656
3668
  for (const reporter of context.reporters)await reporter.onTestRunEnd?.({
3657
3669
  results: context.reporterResults.results,
3670
+ coverage: mergedCoverage,
3658
3671
  testResults: context.reporterResults.testResults,
3659
3672
  duration,
3660
3673
  snapshotSummary: context.snapshotManager.summary,
@@ -4221,7 +4234,6 @@ const runBrowserController = async (context, options)=>{
4221
4234
  if (currentRunnerFramesSignature === signature) return;
4222
4235
  await new Promise((resolve, reject)=>{
4223
4236
  const waiters = runnerFramesWaiters.get(signature) ?? new Set();
4224
- let timeoutId;
4225
4237
  const cleanup = ()=>{
4226
4238
  const currentWaiters = runnerFramesWaiters.get(signature);
4227
4239
  if (!currentWaiters) return;
@@ -4233,7 +4245,7 @@ const runBrowserController = async (context, options)=>{
4233
4245
  cleanup();
4234
4246
  resolve();
4235
4247
  };
4236
- timeoutId = setTimeout(()=>{
4248
+ const timeoutId = setTimeout(()=>{
4237
4249
  cleanup();
4238
4250
  reject(new Error(`Timed out waiting for headed runner frames to be ready for ${testFiles.length} file(s).`));
4239
4251
  }, RUNNER_FRAMES_READY_TIMEOUT_MS);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rstest/browser",
3
- "version": "0.9.7",
3
+ "version": "0.9.9",
4
4
  "description": "Browser mode support for Rstest testing framework.",
5
5
  "keywords": [
6
6
  "rstest",
@@ -52,18 +52,18 @@
52
52
  "@types/convert-source-map": "^2.0.3",
53
53
  "@types/picomatch": "^4.0.3",
54
54
  "@types/ws": "^8.18.1",
55
- "@typescript/native-preview": "7.0.0-dev.20260408.1",
55
+ "@typescript/native-preview": "7.0.0-dev.20260412.1",
56
56
  "@vitest/snapshot": "^3.2.4",
57
57
  "birpc": "^4.0.0",
58
58
  "picomatch": "^4.0.4",
59
59
  "playwright": "^1.59.1",
60
60
  "@rstest/browser-ui": "0.0.0",
61
- "@rstest/core": "0.9.7",
61
+ "@rstest/core": "0.9.9",
62
62
  "@rstest/tsconfig": "0.0.1"
63
63
  },
64
64
  "peerDependencies": {
65
65
  "playwright": "^1.49.1",
66
- "@rstest/core": "^0.9.7"
66
+ "@rstest/core": "^0.9.9"
67
67
  },
68
68
  "peerDependenciesMeta": {
69
69
  "playwright": {
@@ -8,7 +8,9 @@ import type { Rspack } from '@rstest/core';
8
8
  import {
9
9
  type BrowserTestRunOptions,
10
10
  type BrowserTestRunResult,
11
+ type CoverageMapData,
11
12
  color,
13
+ createCoverageProvider,
12
14
  type FormattedError,
13
15
  getSetupFiles,
14
16
  getTestEntries,
@@ -1781,6 +1783,13 @@ export const runBrowserController = async (
1781
1783
  }
1782
1784
  };
1783
1785
 
1786
+ const coverageConfig = browserProjects.find(
1787
+ (project) => project.normalizedConfig.coverage?.enabled,
1788
+ )?.normalizedConfig.coverage;
1789
+ const coverageProvider = coverageConfig?.enabled
1790
+ ? await createCoverageProvider(coverageConfig, context.rootPath)
1791
+ : null;
1792
+
1784
1793
  const notifyTestRunEnd = async ({
1785
1794
  duration,
1786
1795
  unhandledErrors,
@@ -1798,9 +1807,26 @@ export const runBrowserController = async (
1798
1807
  return;
1799
1808
  }
1800
1809
 
1810
+ // Merge per-file coverage into a single CoverageMapData for reporters
1811
+ let mergedCoverage: CoverageMapData | undefined;
1812
+ if (coverageProvider) {
1813
+ const coverageMap = coverageProvider.createCoverageMap();
1814
+ let hasCoverage = false;
1815
+ for (const result of context.reporterResults.results) {
1816
+ if (result.coverage) {
1817
+ coverageMap.merge(result.coverage);
1818
+ hasCoverage = true;
1819
+ }
1820
+ }
1821
+ if (hasCoverage) {
1822
+ mergedCoverage = coverageMap.toJSON();
1823
+ }
1824
+ }
1825
+
1801
1826
  for (const reporter of context.reporters) {
1802
1827
  await reporter.onTestRunEnd?.({
1803
1828
  results: context.reporterResults.results,
1829
+ coverage: mergedCoverage,
1804
1830
  testResults: context.reporterResults.testResults,
1805
1831
  duration,
1806
1832
  snapshotSummary: context.snapshotManager.summary,
@@ -2731,7 +2757,6 @@ export const runBrowserController = async (
2731
2757
  await new Promise<void>((resolve, reject) => {
2732
2758
  const waiters =
2733
2759
  runnerFramesWaiters.get(signature) ?? new Set<() => void>();
2734
- let timeoutId: ReturnType<typeof setTimeout> | undefined;
2735
2760
 
2736
2761
  const cleanup = () => {
2737
2762
  const currentWaiters = runnerFramesWaiters.get(signature);
@@ -2752,7 +2777,7 @@ export const runBrowserController = async (
2752
2777
  resolve();
2753
2778
  };
2754
2779
 
2755
- timeoutId = setTimeout(() => {
2780
+ const timeoutId = setTimeout(() => {
2756
2781
  cleanup();
2757
2782
  reject(
2758
2783
  new Error(
@@ -1 +0,0 @@
1
- /*! LICENSE: 407.89ee95c89d.js.LICENSE.txt */
@@ -1 +0,0 @@
1
- /*! LICENSE: lib-react.57a7325be2.js.LICENSE.txt */