diff --git a/packages/browser/src/client/runner.ts b/packages/browser/src/client/runner.ts index ff36a5a7c7f4..bf8b694b2902 100644 --- a/packages/browser/src/client/runner.ts +++ b/packages/browser/src/client/runner.ts @@ -42,7 +42,8 @@ export function createBrowserRunner(original: any, coverageModule: CoverageHandl async onAfterRun() { await super.onAfterRun?.() const coverage = await coverageModule?.takeCoverage?.() - await rpc().onAfterSuiteRun({ coverage }) + if (coverage) + await rpc().onAfterSuiteRun({ coverage }) } onCollected(files: File[]): unknown { diff --git a/packages/vitest/src/api/setup.ts b/packages/vitest/src/api/setup.ts index ad06cc32cea3..6e7e63b0d9bf 100644 --- a/packages/vitest/src/api/setup.ts +++ b/packages/vitest/src/api/setup.ts @@ -92,7 +92,7 @@ export function setup(vitestOrWorkspace: Vitest | WorkspaceProject, server?: Vit await ctx.rerunFiles(files) }, getConfig() { - return ctx.config + return vitestOrWorkspace.config }, async getTransformResult(id) { const result: TransformResultWithSource | null | undefined = await ctx.vitenode.transformRequest(id) diff --git a/packages/vitest/src/node/core.ts b/packages/vitest/src/node/core.ts index 05ef4e94eed2..c61ae7032709 100644 --- a/packages/vitest/src/node/core.ts +++ b/packages/vitest/src/node/core.ts @@ -53,7 +53,7 @@ export class Vitest { restartsCount = 0 runner: ViteNodeRunner = undefined! - private coreWorkspace!: WorkspaceProject + private coreWorkspaceProject!: WorkspaceProject public projects: WorkspaceProject[] = [] private projectsTestFiles = new Map>() @@ -145,12 +145,12 @@ export class Vitest { runner: this.runner, server: this.vitenode, }) - this.coreWorkspace = coreWorkspace + this.coreWorkspaceProject = coreWorkspace return coreWorkspace } public getCoreWorkspaceProject(): WorkspaceProject | null { - return this.coreWorkspace || null + return this.coreWorkspaceProject || null } public getProjectByTaskId(taskId: string): WorkspaceProject { @@ -198,7 +198,7 @@ export class Vitest { onlyFiles: false, markDirectories: true, cwd: this.config.root, - ignore: ['**/node_modules/**'], + ignore: ['**/node_modules/**', '**/*.timestamp-*'], } const workspacesFs = await fg(workspaceGlobMatches, globOptions) @@ -221,6 +221,21 @@ export class Vitest { return filepath })) + const workspacesByFolder = resolvedWorkspacesPaths + .reduce((configByFolder, filepath) => { + const dir = dirname(filepath) + configByFolder[dir] ??= [] + configByFolder[dir].push(filepath) + return configByFolder + }, {} as Record) + + const filteredWorkspaces = Object.values(workspacesByFolder).map((configFiles) => { + if (configFiles.length === 1) + return configFiles[0] + const vitestConfig = configFiles.find(configFile => basename(configFile).startsWith('vitest.config')) + return vitestConfig || configFiles[0] + }) + const overridesOptions = [ 'logHeapUsage', 'allowOnly', @@ -239,7 +254,7 @@ export class Vitest { return acc }, {} as UserConfig) - const projects = resolvedWorkspacesPaths.map(async (workspacePath) => { + const projects = filteredWorkspaces.map(async (workspacePath) => { // don't start a new server, but reuse existing one if ( this.server.config.configFile === workspacePath @@ -725,7 +740,8 @@ export class Vitest { if (!this.closingPromise) { const closePromises = this.projects.map(w => w.close().then(() => w.server = undefined as any)) // close the core workspace server only once - if (this.coreWorkspace && !this.projects.includes(this.coreWorkspace)) + // it's possible that it's not initialized at all because it's not running any tests + if (!this.coreWorkspaceProject || !this.projects.includes(this.coreWorkspaceProject)) closePromises.push(this.server.close().then(() => this.server = undefined as any)) if (this.pool) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b9b54a997e11..58ee55b81ae5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -325,10 +325,10 @@ importers: version: 13.3.0(react-dom@18.0.0)(react@18.0.0) '@types/node': specifier: latest - version: 20.4.6 + version: 20.5.0 '@types/react': specifier: latest - version: 18.2.18 + version: 18.2.20 '@vitejs/plugin-react': specifier: latest version: 4.0.4(vite@4.3.9) @@ -774,7 +774,7 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: latest - version: 2.4.3(svelte@4.0.5)(vite@4.3.9) + version: 2.4.5(svelte@4.0.5)(vite@4.3.9) '@testing-library/svelte': specifier: ^4.0.3 version: 4.0.3(svelte@4.0.5) @@ -2009,6 +2009,15 @@ importers: specifier: workspace:* version: link:../../packages/vitest + test/workspaces-browser: + devDependencies: + '@vitest/browser': + specifier: workspace:^ + version: link:../../packages/browser + vitest: + specifier: workspace:* + version: link:../../packages/vitest + packages: /@aashutoshrathi/word-wrap@1.2.6: @@ -2366,7 +2375,7 @@ packages: gensync: 1.0.0-beta.2 json5: 2.2.3 lodash: 4.17.21 - resolve: 1.22.2 + resolve: 1.22.3 semver: 5.7.1 source-map: 0.5.7 transitivePeerDependencies: @@ -2654,7 +2663,7 @@ packages: '@babel/traverse': 7.22.8 debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 - resolve: 1.22.2 + resolve: 1.22.3 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -2670,7 +2679,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 - resolve: 1.22.2 + resolve: 1.22.3 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -2686,7 +2695,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 - resolve: 1.22.2 + resolve: 1.22.3 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -5992,7 +6001,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 20.4.6 + '@types/node': 20.5.0 chalk: 4.1.2 jest-message-util: 27.5.1 jest-util: 27.5.1 @@ -6013,7 +6022,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.4.6 + '@types/node': 20.5.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.8.1 @@ -6050,7 +6059,7 @@ packages: dependencies: '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.4.6 + '@types/node': 20.5.0 jest-mock: 27.5.1 dev: true @@ -6067,7 +6076,7 @@ packages: dependencies: '@jest/types': 27.5.1 '@sinonjs/fake-timers': 8.1.0 - '@types/node': 20.4.6 + '@types/node': 20.5.0 jest-message-util: 27.5.1 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -6096,7 +6105,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.4.6 + '@types/node': 20.5.0 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -6209,7 +6218,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.4.6 + '@types/node': 20.5.0 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -6220,7 +6229,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.4.6 + '@types/node': 20.5.0 '@types/yargs': 16.0.5 chalk: 4.1.2 dev: true @@ -6232,7 +6241,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.4.6 + '@types/node': 20.5.0 '@types/yargs': 17.0.12 chalk: 4.1.2 dev: true @@ -6756,7 +6765,7 @@ packages: engines: {node: '>=14'} hasBin: true dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 playwright-core: 1.28.0 dev: true @@ -6976,7 +6985,7 @@ packages: builtin-modules: 3.3.0 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.2 + resolve: 1.22.3 rollup: 2.79.1 dev: true @@ -8488,7 +8497,7 @@ packages: svelte: ^3.54.0 || ^4.0.0-next.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.3(svelte@3.59.1)(vite@4.3.9) + '@sveltejs/vite-plugin-svelte': 2.4.5(svelte@3.59.1)(vite@4.3.9) '@types/cookie': 0.5.1 cookie: 0.5.0 devalue: 4.3.2 @@ -8507,7 +8516,7 @@ packages: - supports-color dev: true - /@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.3)(svelte@3.59.1)(vite@4.3.9): + /@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.5)(svelte@3.59.1)(vite@4.3.9): resolution: {integrity: sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==} engines: {node: ^14.18.0 || >= 16} peerDependencies: @@ -8515,7 +8524,7 @@ packages: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.3(svelte@3.59.1)(vite@4.3.9) + '@sveltejs/vite-plugin-svelte': 2.4.5(svelte@3.59.1)(vite@4.3.9) debug: 4.3.4(supports-color@8.1.1) svelte: 3.59.1 vite: 4.3.9(@types/node@18.16.19)(less@4.1.3) @@ -8523,7 +8532,7 @@ packages: - supports-color dev: true - /@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.3)(svelte@4.0.5)(vite@4.3.9): + /@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.5)(svelte@4.0.5)(vite@4.3.9): resolution: {integrity: sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==} engines: {node: ^14.18.0 || >= 16} peerDependencies: @@ -8531,7 +8540,7 @@ packages: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.3(svelte@4.0.5)(vite@4.3.9) + '@sveltejs/vite-plugin-svelte': 2.4.5(svelte@4.0.5)(vite@4.3.9) debug: 4.3.4(supports-color@8.1.1) svelte: 4.0.5 vite: 4.3.9(@types/node@18.16.19)(less@4.1.3) @@ -8539,40 +8548,40 @@ packages: - supports-color dev: true - /@sveltejs/vite-plugin-svelte@2.4.3(svelte@3.59.1)(vite@4.3.9): - resolution: {integrity: sha512-NY2h+B54KHZO3kDURTdARqthn6D4YSIebtfW75NvZ/fwyk4G+AJw3V/i0OBjyN4406Ht9yZcnNWMuRUFnDNNiA==} + /@sveltejs/vite-plugin-svelte@2.4.5(svelte@3.59.1)(vite@4.3.9): + resolution: {integrity: sha512-UJKsFNwhzCVuiZd06jM/psscyNJNDwjQC+qIeb7GBJK9iWeQCcIyfcPWDvbCudfcJggY9jtxJeeaZH7uny93FQ==} engines: {node: ^14.18.0 || >= 16} peerDependencies: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 1.0.3(@sveltejs/vite-plugin-svelte@2.4.3)(svelte@3.59.1)(vite@4.3.9) + '@sveltejs/vite-plugin-svelte-inspector': 1.0.3(@sveltejs/vite-plugin-svelte@2.4.5)(svelte@3.59.1)(vite@4.3.9) debug: 4.3.4(supports-color@8.1.1) deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.1 + magic-string: 0.30.2 svelte: 3.59.1 - svelte-hmr: 0.15.2(svelte@3.59.1) + svelte-hmr: 0.15.3(svelte@3.59.1) vite: 4.3.9(@types/node@18.16.19)(less@4.1.3) vitefu: 0.2.4(vite@4.3.9) transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte@2.4.3(svelte@4.0.5)(vite@4.3.9): - resolution: {integrity: sha512-NY2h+B54KHZO3kDURTdARqthn6D4YSIebtfW75NvZ/fwyk4G+AJw3V/i0OBjyN4406Ht9yZcnNWMuRUFnDNNiA==} + /@sveltejs/vite-plugin-svelte@2.4.5(svelte@4.0.5)(vite@4.3.9): + resolution: {integrity: sha512-UJKsFNwhzCVuiZd06jM/psscyNJNDwjQC+qIeb7GBJK9iWeQCcIyfcPWDvbCudfcJggY9jtxJeeaZH7uny93FQ==} engines: {node: ^14.18.0 || >= 16} peerDependencies: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 1.0.3(@sveltejs/vite-plugin-svelte@2.4.3)(svelte@4.0.5)(vite@4.3.9) + '@sveltejs/vite-plugin-svelte-inspector': 1.0.3(@sveltejs/vite-plugin-svelte@2.4.5)(svelte@4.0.5)(vite@4.3.9) debug: 4.3.4(supports-color@8.1.1) deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.1 + magic-string: 0.30.2 svelte: 4.0.5 - svelte-hmr: 0.15.2(svelte@4.0.5) + svelte-hmr: 0.15.3(svelte@4.0.5) vite: 4.3.9(@types/node@18.16.19)(less@4.1.3) vitefu: 0.2.4(vite@4.3.9) transitivePeerDependencies: @@ -8843,7 +8852,7 @@ packages: /@types/cheerio@0.22.31: resolution: {integrity: sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw==} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 dev: true /@types/codemirror@5.60.8: @@ -8882,7 +8891,7 @@ packages: resolution: {integrity: sha512-xryQlOEIe1TduDWAOphR0ihfebKFSWOXpIsk+70JskCfRfW+xALdnJ0r1ZOTo85F9Qsjk6vtlU7edTYHbls9tA==} dependencies: '@types/cheerio': 0.22.31 - '@types/react': 18.2.18 + '@types/react': 18.2.20 dev: true /@types/eslint-scope@3.7.4: @@ -8913,33 +8922,33 @@ packages: resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} dependencies: '@types/jsonfile': 6.1.1 - '@types/node': 20.4.6 + '@types/node': 18.16.19 dev: true /@types/fs-extra@9.0.13: resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 dev: true /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.1 - '@types/node': 20.4.6 + '@types/node': 20.5.0 dev: true /@types/glob@8.0.0: resolution: {integrity: sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==} dependencies: '@types/minimatch': 5.1.1 - '@types/node': 20.4.6 + '@types/node': 20.5.0 dev: true /@types/graceful-fs@4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 dev: true /@types/hast@2.3.4: @@ -9011,7 +9020,7 @@ packages: /@types/jsdom@21.1.1: resolution: {integrity: sha512-cZFuoVLtzKP3gmq9eNosUL1R50U+USkbLtUQ1bYVgl/lKp0FZM7Cq4aIHAL8oIvQ17uSHi7jXPtfDOdjPwBE7A==} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 '@types/tough-cookie': 4.0.2 parse5: 7.1.2 dev: true @@ -9023,7 +9032,7 @@ packages: /@types/jsonfile@6.1.1: resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 dev: true /@types/lodash@4.14.195: @@ -9057,7 +9066,7 @@ packages: /@types/node-fetch@2.6.2: resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 form-data: 3.0.1 dev: true @@ -9076,8 +9085,8 @@ packages: resolution: {integrity: sha512-46yIhxSe5xEaJZXWdIBP7GU4HDTG8/eo0qd9atdiL+lFpA03y8KS+lkTN834TWJj5767GbWv4n/P6efyTFt1Dw==} dev: false - /@types/node@20.4.6: - resolution: {integrity: sha512-q0RkvNgMweWWIvSMDiXhflGUKMdIxBo2M2tYM/0kEGDueQByFzK4KZAgu5YHGFNxziTlppNpTIBcqHQAxlfHdA==} + /@types/node@20.5.0: + resolution: {integrity: sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q==} dev: true /@types/normalize-package-data@2.4.1: @@ -9106,7 +9115,7 @@ packages: /@types/prompts@2.4.4: resolution: {integrity: sha512-p5N9uoTH76lLvSAaYSZtBCdEXzpOOufsRjnhjVSrZGXikVGHX9+cc9ERtHRV4hvBKHyZb1bg4K+56Bd2TqUn4A==} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 kleur: 3.0.3 dev: true @@ -9130,19 +9139,19 @@ packages: /@types/react-dom@18.0.6: resolution: {integrity: sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==} dependencies: - '@types/react': 18.2.18 + '@types/react': 18.2.20 dev: true /@types/react-dom@18.0.8: resolution: {integrity: sha512-C3GYO0HLaOkk9dDAz3Dl4sbe4AKUGTCfFIZsz3n/82dPNN8Du533HzKatDxeUYWu24wJgMP1xICqkWk1YOLOIw==} dependencies: - '@types/react': 18.2.18 + '@types/react': 18.2.20 dev: true /@types/react-is@17.0.3: resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==} dependencies: - '@types/react': 18.2.18 + '@types/react': 18.2.20 dev: false /@types/react-test-renderer@17.0.2: @@ -9154,7 +9163,7 @@ packages: /@types/react-transition-group@4.4.5: resolution: {integrity: sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==} dependencies: - '@types/react': 18.2.18 + '@types/react': 18.2.20 dev: false /@types/react@17.0.49: @@ -9173,8 +9182,8 @@ packages: csstype: 3.1.0 dev: true - /@types/react@18.2.18: - resolution: {integrity: sha512-da4NTSeBv/P34xoZPhtcLkmZuJ+oYaCxHmyHzwaDQo9RQPBeXV+06gEk2FpqEcsX9XrnNLvRpVh6bdavDSjtiQ==} + /@types/react@18.2.20: + resolution: {integrity: sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 @@ -9183,7 +9192,7 @@ packages: /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 dev: true /@types/resolve@1.20.2: @@ -9200,7 +9209,7 @@ packages: /@types/set-cookie-parser@2.4.2: resolution: {integrity: sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w==} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 dev: true /@types/sinonjs__fake-timers@8.1.1: @@ -9242,7 +9251,7 @@ packages: /@types/through@0.0.30: resolution: {integrity: sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 dev: true /@types/tough-cookie@4.0.2: @@ -9280,7 +9289,7 @@ packages: /@types/webpack-sources@3.2.0: resolution: {integrity: sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 '@types/source-list-map': 0.1.2 source-map: 0.7.4 dev: true @@ -9288,7 +9297,7 @@ packages: /@types/webpack@4.41.32: resolution: {integrity: sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 '@types/tapable': 1.0.8 '@types/uglify-js': 3.17.0 '@types/webpack-sources': 3.2.0 @@ -9303,7 +9312,7 @@ packages: /@types/ws@8.5.5: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: - '@types/node': 20.4.6 + '@types/node': 18.16.19 dev: true /@types/yargs-parser@21.0.0: @@ -9332,7 +9341,7 @@ packages: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 dev: true optional: true @@ -9744,7 +9753,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.9) '@rollup/pluginutils': 4.2.1 react-refresh: 0.13.0 - resolve: 1.22.2 + resolve: 1.22.3 transitivePeerDependencies: - supports-color dev: true @@ -9774,7 +9783,7 @@ packages: '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.9) '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.9) react-refresh: 0.14.0 - vite: 4.3.9(@types/node@20.4.6) + vite: 4.3.9(@types/node@20.5.0) transitivePeerDependencies: - supports-color dev: true @@ -9935,7 +9944,7 @@ packages: '@vue/reactivity-transform': 3.3.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 - magic-string: 0.30.1 + magic-string: 0.30.2 postcss: 8.4.24 source-map-js: 1.0.2 @@ -9971,7 +9980,7 @@ packages: '@vue/compiler-core': 3.3.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 - magic-string: 0.30.1 + magic-string: 0.30.2 /@vue/reactivity@3.2.38: resolution: {integrity: sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw==} @@ -10274,14 +10283,14 @@ packages: resolution: {integrity: sha512-VZ1WFHTNKjR8Ga97TtV2SZM6fvRjWbYI2i/f4pJB4PtusorKvONAMJf2LQcUBIyzbVobqr7KSrcjmSwRolI+yw==} engines: {node: ^16.13 || >=18} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 dev: true /@wdio/types@8.10.4: resolution: {integrity: sha512-aLJ1QQW+hhALeRK3bvMLjIrlUVyhOs3Od+91pR4Z4pLwyeNG1bJZCJRD5bAJK/mm7CnFa0NsdixPS9jJxZcRrw==} engines: {node: ^16.13 || >=18} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 dev: true /@wdio/utils@8.12.1: @@ -11391,7 +11400,7 @@ packages: dependencies: '@babel/runtime': 7.18.9 cosmiconfig: 7.0.1 - resolve: 1.22.2 + resolve: 1.22.3 /babel-plugin-polyfill-corejs2@0.3.2(@babel/core@7.18.13): resolution: {integrity: sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==} @@ -12267,7 +12276,7 @@ packages: engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.3.0 @@ -13566,7 +13575,7 @@ packages: resolution: {integrity: sha512-R72raQLN1lDSqbr2DVj9SRh07JRyojzmrcLa33VBa2nw3cf5ZyHOHe0DgxlJ/5c2Dfs1+wGNJy16gWKGBq+xgg==} engines: {node: ^16.13 || >=18} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 '@wdio/config': 8.12.1 '@wdio/logger': 8.11.0 '@wdio/protocols': 8.11.0 @@ -14573,7 +14582,7 @@ packages: dependencies: debug: 3.2.7(supports-color@8.1.1) is-core-module: 2.12.1 - resolve: 1.22.2 + resolve: 1.22.3 transitivePeerDependencies: - supports-color dev: true @@ -14732,7 +14741,7 @@ packages: ignore: 5.2.0 is-core-module: 2.12.1 minimatch: 3.1.2 - resolve: 1.22.2 + resolve: 1.22.3 semver: 7.5.4 dev: true @@ -17586,7 +17595,7 @@ packages: '@jest/environment': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.4.6 + '@types/node': 20.5.0 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -17722,7 +17731,7 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.4.6 + '@types/node': 20.5.0 jest-mock: 27.5.1 jest-util: 27.5.1 jsdom: 16.7.0 @@ -17740,7 +17749,7 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.4.6 + '@types/node': 20.5.0 jest-mock: 27.5.1 jest-util: 27.5.1 dev: true @@ -17761,7 +17770,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 20.4.6 + '@types/node': 20.5.0 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -17784,7 +17793,7 @@ packages: dependencies: '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.5 - '@types/node': 20.4.6 + '@types/node': 20.5.0 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -17824,7 +17833,7 @@ packages: '@jest/source-map': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.4.6 + '@types/node': 20.5.0 chalk: 4.1.2 co: 4.6.0 expect: 27.5.1 @@ -17904,7 +17913,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 20.4.6 + '@types/node': 20.5.0 dev: true /jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): @@ -17951,7 +17960,7 @@ packages: jest-pnp-resolver: 1.2.3(jest-resolve@27.5.1) jest-util: 27.5.1 jest-validate: 27.5.1 - resolve: 1.22.2 + resolve: 1.22.3 resolve.exports: 1.1.1 slash: 3.0.0 dev: true @@ -17965,7 +17974,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.4.6 + '@types/node': 20.5.0 chalk: 4.1.2 emittery: 0.8.1 graceful-fs: 4.2.10 @@ -18022,7 +18031,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 graceful-fs: 4.2.10 dev: true @@ -18030,7 +18039,7 @@ packages: resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 graceful-fs: 4.2.10 dev: true @@ -18069,7 +18078,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 20.4.6 + '@types/node': 20.5.0 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -18081,7 +18090,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 20.4.6 + '@types/node': 20.5.0 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.10 @@ -18093,7 +18102,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.0.1 - '@types/node': 20.4.6 + '@types/node': 20.5.0 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.10 @@ -18118,7 +18127,7 @@ packages: dependencies: '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.4.6 + '@types/node': 20.5.0 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 27.5.1 @@ -18129,7 +18138,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -18138,7 +18147,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -19047,6 +19056,12 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + /magic-string@0.30.2: + resolution: {integrity: sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -19906,7 +19921,7 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.2 + resolve: 1.22.3 semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: true @@ -21498,7 +21513,7 @@ packages: estree-to-babel: 3.2.1 neo-async: 2.6.2 node-dir: 0.1.17 - resolve: 1.22.2 + resolve: 1.22.3 strip-indent: 3.0.0 transitivePeerDependencies: - supports-color @@ -22171,6 +22186,7 @@ packages: is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true /resolve@1.22.3: resolution: {integrity: sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==} @@ -22179,7 +22195,6 @@ packages: is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true /responselike@3.0.0: resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} @@ -23594,20 +23609,20 @@ packages: - sugarss dev: true - /svelte-hmr@0.15.2(svelte@3.59.1): - resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==} + /svelte-hmr@0.15.3(svelte@3.59.1): + resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: - svelte: ^3.19.0 || ^4.0.0-next.0 + svelte: ^3.19.0 || ^4.0.0 dependencies: svelte: 3.59.1 dev: true - /svelte-hmr@0.15.2(svelte@4.0.5): - resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==} + /svelte-hmr@0.15.3(svelte@4.0.5): + resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: - svelte: ^3.19.0 || ^4.0.0-next.0 + svelte: ^3.19.0 || ^4.0.0 dependencies: svelte: 4.0.5 dev: true @@ -23679,7 +23694,7 @@ packages: estree-walker: 3.0.3 is-reference: 3.0.1 locate-character: 3.0.0 - magic-string: 0.30.1 + magic-string: 0.30.2 periscopic: 3.1.0 dev: true @@ -24484,7 +24499,7 @@ packages: escape-string-regexp: 5.0.0 fast-glob: 3.3.0 local-pkg: 0.4.3 - magic-string: 0.30.1 + magic-string: 0.30.2 mlly: 1.4.0 pathe: 1.1.1 pkg-types: 1.0.3 @@ -24502,7 +24517,7 @@ packages: escape-string-regexp: 5.0.0 fast-glob: 3.3.0 local-pkg: 0.4.3 - magic-string: 0.30.1 + magic-string: 0.30.2 mlly: 1.4.0 pathe: 1.1.1 pkg-types: 1.0.3 @@ -24725,7 +24740,7 @@ packages: '@rollup/pluginutils': 5.0.2(rollup@3.26.0) fast-glob: 3.3.0 local-pkg: 0.4.3 - magic-string: 0.30.1 + magic-string: 0.30.2 minimatch: 9.0.3 unimport: 3.0.14(rollup@3.26.0) unplugin: 1.3.2 @@ -24754,7 +24769,7 @@ packages: local-pkg: 0.4.3 magic-string: 0.30.1 minimatch: 9.0.3 - resolve: 1.22.2 + resolve: 1.22.3 unplugin: 1.3.2 vue: 3.3.4 transitivePeerDependencies: @@ -24781,9 +24796,9 @@ packages: debug: 4.3.4(supports-color@8.1.1) fast-glob: 3.3.0 local-pkg: 0.4.3 - magic-string: 0.30.1 + magic-string: 0.30.2 minimatch: 9.0.3 - resolve: 1.22.2 + resolve: 1.22.3 unplugin: 1.3.2 vue: 3.3.4 transitivePeerDependencies: @@ -25170,7 +25185,7 @@ packages: fsevents: 2.3.2 dev: false - /vite@4.3.9(@types/node@20.4.6): + /vite@4.3.9(@types/node@20.5.0): resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -25195,7 +25210,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 esbuild: 0.17.18 postcss: 8.4.24 rollup: 3.23.0 @@ -25507,7 +25522,7 @@ packages: resolution: {integrity: sha512-Ca+MUYUXfl5gsnX40xAIUgfoa76qQsfX7REGFzMl09Cb7vHKtM17bEOGDaTbXIX4kbkXylyUSAuBpe3gCtDDKg==} engines: {node: ^16.13 || >=18} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 '@types/ws': 8.5.5 '@wdio/config': 8.12.1 '@wdio/logger': 8.11.0 @@ -25527,7 +25542,7 @@ packages: resolution: {integrity: sha512-lW0Qo3fy64cVbYWWAZbXxLIOK0pbTARgpY89J+0Sr6zh2K2NKtd/0D11k3WfMeYxd0b0he7E7XC1b6M6w4h75A==} engines: {node: ^16.13 || >=18} dependencies: - '@types/node': 20.4.6 + '@types/node': 20.5.0 '@wdio/config': 8.12.1 '@wdio/logger': 8.11.0 '@wdio/protocols': 8.11.0 diff --git a/test/workspaces-browser/.gitignore b/test/workspaces-browser/.gitignore new file mode 100644 index 000000000000..4e711a62f292 --- /dev/null +++ b/test/workspaces-browser/.gitignore @@ -0,0 +1 @@ +results.json \ No newline at end of file diff --git a/test/workspaces-browser/globalTest.ts b/test/workspaces-browser/globalTest.ts new file mode 100644 index 000000000000..960543608678 --- /dev/null +++ b/test/workspaces-browser/globalTest.ts @@ -0,0 +1,17 @@ +import { readFile } from 'node:fs/promises' +import assert from 'node:assert/strict' + +export async function teardown() { + const results = JSON.parse(await readFile('./results.json', 'utf-8')) + + try { + assert.ok(results.success) + assert.equal(results.numTotalTestSuites, 3) + assert.equal(results.numTotalTests, 3) + assert.equal(results.numPassedTests, 3) + } + catch (err) { + console.error(err) + process.exit(1) + } +} diff --git a/test/workspaces-browser/package.json b/test/workspaces-browser/package.json new file mode 100644 index 000000000000..708dbe7d7fa1 --- /dev/null +++ b/test/workspaces-browser/package.json @@ -0,0 +1,12 @@ +{ + "name": "@vitest/test-workspaces", + "type": "module", + "private": true, + "scripts": { + "test": "vitest run" + }, + "devDependencies": { + "@vitest/browser": "workspace:^", + "vitest": "workspace:*" + } +} diff --git a/test/workspaces-browser/space_1/test/math.spec.ts b/test/workspaces-browser/space_1/test/math.spec.ts new file mode 100644 index 000000000000..89170fcbbddd --- /dev/null +++ b/test/workspaces-browser/space_1/test/math.spec.ts @@ -0,0 +1,6 @@ +import { expect, test } from 'vitest' +import { sum } from '../../src/math' + +test('3 + 3 = 6', () => { + expect(sum(3, 3)).toBe(6) +}) diff --git a/test/workspaces-browser/space_1/test/node.spec.ts b/test/workspaces-browser/space_1/test/node.spec.ts new file mode 100644 index 000000000000..aedb5817ce96 --- /dev/null +++ b/test/workspaces-browser/space_1/test/node.spec.ts @@ -0,0 +1,5 @@ +import { expect, test } from 'vitest' + +test('window is undefined', () => { + expect(globalThis.window).toBeUndefined() +}) diff --git a/test/workspaces-browser/space_1/vite.config.ts b/test/workspaces-browser/space_1/vite.config.ts new file mode 100644 index 000000000000..a24c9b983002 --- /dev/null +++ b/test/workspaces-browser/space_1/vite.config.ts @@ -0,0 +1,7 @@ +import { defineProject } from 'vitest/config' + +export default defineProject({ + test: { + name: 'space_1', + }, +}) diff --git a/test/workspaces-browser/space_1/vitest.config.ts.timestamp-4345324-324424.mjs b/test/workspaces-browser/space_1/vitest.config.ts.timestamp-4345324-324424.mjs new file mode 100644 index 000000000000..23a2b17accb3 --- /dev/null +++ b/test/workspaces-browser/space_1/vitest.config.ts.timestamp-4345324-324424.mjs @@ -0,0 +1,8 @@ +import { defineProject } from 'vitest/config' + +export default defineProject({ + test: { + name: 'space_1', + environment: 'happy-dom', + }, +}) diff --git a/test/workspaces-browser/space_browser/test/browser.spec.ts b/test/workspaces-browser/space_browser/test/browser.spec.ts new file mode 100644 index 000000000000..6ac6351b1216 --- /dev/null +++ b/test/workspaces-browser/space_browser/test/browser.spec.ts @@ -0,0 +1,5 @@ +import { expect, test } from 'vitest' + +test('window is not defined', () => { + expect(typeof window).toBe('object') +}) diff --git a/test/workspaces-browser/space_browser/vitest.config.ts b/test/workspaces-browser/space_browser/vitest.config.ts new file mode 100644 index 000000000000..c3ac0296bb67 --- /dev/null +++ b/test/workspaces-browser/space_browser/vitest.config.ts @@ -0,0 +1,12 @@ +import { defineProject } from 'vitest/config' + +export default defineProject({ + test: { + browser: { + enabled: true, + name: process.env.BROWSER || 'chrome', + headless: true, + provider: process.env.PROVIDER || 'webdriverio', + }, + }, +}) diff --git a/test/workspaces-browser/src/math.ts b/test/workspaces-browser/src/math.ts new file mode 100644 index 000000000000..f1e1874089f6 --- /dev/null +++ b/test/workspaces-browser/src/math.ts @@ -0,0 +1,14 @@ +/* eslint-disable unused-imports/no-unused-vars */ +export function sum(a: number, b: number) { + if (a === 3 && b === 4) { + // This should be uncovered + return 7 + } + + return a + b +} + +function uncoveredFunction() { + // This should be uncovered + return 1 +} diff --git a/test/workspaces-browser/vitest.config.ts b/test/workspaces-browser/vitest.config.ts new file mode 100644 index 000000000000..12cb29f9a46d --- /dev/null +++ b/test/workspaces-browser/vitest.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from 'vitest/config' + +if (process.env.TEST_WATCH) { + // Patch stdin on the process so that we can fake it to seem like a real interactive terminal and pass the TTY checks + process.stdin.isTTY = true + process.stdin.setRawMode = () => process.stdin +} + +export default defineConfig({ + test: { + reporters: ['default', 'json'], + outputFile: './results.json', + globalSetup: './globalTest.ts', + }, +}) diff --git a/test/workspaces-browser/vitest.workspace.ts b/test/workspaces-browser/vitest.workspace.ts new file mode 100644 index 000000000000..f6ba42b0e886 --- /dev/null +++ b/test/workspaces-browser/vitest.workspace.ts @@ -0,0 +1,5 @@ +import { defineWorkspace } from 'vitest/config' + +export default defineWorkspace([ + './space_*/*.config.ts', +]) diff --git a/test/workspaces/space_1/vite.config.ts.timestamp-4345324-324424.mjs b/test/workspaces/space_1/vite.config.ts.timestamp-4345324-324424.mjs new file mode 100644 index 000000000000..23a2b17accb3 --- /dev/null +++ b/test/workspaces/space_1/vite.config.ts.timestamp-4345324-324424.mjs @@ -0,0 +1,8 @@ +import { defineProject } from 'vitest/config' + +export default defineProject({ + test: { + name: 'space_1', + environment: 'happy-dom', + }, +}) diff --git a/test/workspaces/space_3/vite.config.ts b/test/workspaces/space_3/vite.config.ts new file mode 100644 index 000000000000..824596396c31 --- /dev/null +++ b/test/workspaces/space_3/vite.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from 'vite' + +export default defineConfig({ + plugins: [ + { + name: 'throw-error', + config() { + throw new Error('This file should not initiate a workspace project.') + }, + }, + ], +})