diff --git a/packages/browser/package.json b/packages/browser/package.json index e8ee6d438ad9..51036762b5fd 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -90,6 +90,7 @@ "magic-string": "^0.30.11", "msw": "^2.3.5", "sirv": "^2.0.4", + "tinyrainbow": "^1.2.0", "ws": "^8.18.0" }, "devDependencies": { diff --git a/packages/browser/src/node/index.ts b/packages/browser/src/node/index.ts index 0aec26679174..545e329e79ba 100644 --- a/packages/browser/src/node/index.ts +++ b/packages/browser/src/node/index.ts @@ -1,6 +1,8 @@ import type { WorkspaceProject } from 'vitest/node' import type { Plugin } from 'vitest/config' import { createServer } from 'vitest/node' +import c from 'tinyrainbow' +import { version } from '../../package.json' import { setupBrowserRpc } from './rpc' import { BrowserServer } from './server' import BrowserPlugin from './plugin' @@ -14,6 +16,16 @@ export async function createBrowserServer( prePlugins: Plugin[] = [], postPlugins: Plugin[] = [], ) { + if (project.ctx.version !== version) { + project.ctx.logger.warn( + c.yellow( + `Loaded ${c.inverse(c.yellow(` vitest@${project.ctx.version} `))} and ${c.inverse(c.yellow(` @vitest/browser@${version} `))}.` + + '\nRunning mixed versions is not supported and may lead into bugs' + + '\nUpdate your dependencies and make sure the versions match.', + ), + ) + } + const server = new BrowserServer(project, '/') const configPath = typeof configFile === 'string' ? configFile : false diff --git a/packages/ui/node/index.ts b/packages/ui/node/index.ts index d7135bd6832d..ef2a3fe8598c 100644 --- a/packages/ui/node/index.ts +++ b/packages/ui/node/index.ts @@ -3,10 +3,22 @@ import { basename, resolve } from 'pathe' import sirv from 'sirv' import type { Plugin } from 'vite' import { coverageConfigDefaults } from 'vitest/config' -import type { Vitest } from 'vitest' +import type { Vitest } from 'vitest/node' import { toArray } from '@vitest/utils' +import c from 'tinyrainbow' +import { version } from '../package.json' export default (ctx: Vitest): Plugin => { + if (ctx.version !== version) { + ctx.logger.warn( + c.yellow( + `Loaded ${c.inverse(c.yellow(` vitest@${ctx.version} `))} and ${c.inverse(c.yellow(` @vitest/ui@${version} `))}.` + + '\nRunning mixed versions is not supported and may lead into bugs' + + '\nUpdate your dependencies and make sure the versions match.', + ), + ) + } + return { name: 'vitest:ui', apply: 'serve', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 97e34ba78aa1..98c3ce267775 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -448,6 +448,9 @@ importers: sirv: specifier: ^2.0.4 version: 2.0.4 + tinyrainbow: + specifier: ^1.2.0 + version: 1.2.0 ws: specifier: ^8.18.0 version: 8.18.0