diff --git a/code/core/src/cli/AddonVitestService.test.ts b/code/core/src/cli/AddonVitestService.test.ts index 6c2f9fa19d2a..17379adac94a 100644 --- a/code/core/src/cli/AddonVitestService.test.ts +++ b/code/core/src/cli/AddonVitestService.test.ts @@ -168,6 +168,28 @@ describe('AddonVitestService', () => { expect(result.reasons).toBeUndefined(); }); + it('should return compatible when vitest prerelease >= 3.0.0', async () => { + vi.mocked(mockPackageManager.getInstalledVersion) + .mockResolvedValueOnce('3.0.0-beta.1') // vitest + .mockResolvedValueOnce(null); // msw + + const result = await service.validatePackageVersions(); + + expect(result.compatible).toBe(true); + expect(result.reasons).toBeUndefined(); + }); + + it('should return compatible when vitest canary is used', async () => { + vi.mocked(mockPackageManager.getInstalledVersion) + .mockResolvedValueOnce('0.0.0-833c515fa25cef20905a7f9affb156dfa6f151ab') // vitest + .mockResolvedValueOnce(null); // msw + + const result = await service.validatePackageVersions(); + + expect(result.compatible).toBe(true); + expect(result.reasons).toBeUndefined(); + }); + it('should return compatible when vitest >=4.0.0', async () => { vi.mocked(mockPackageManager.getInstalledVersion) .mockResolvedValueOnce('4.0.0') // vitest diff --git a/code/core/src/cli/AddonVitestService.ts b/code/core/src/cli/AddonVitestService.ts index d959c843c718..2212f74b9b4d 100644 --- a/code/core/src/cli/AddonVitestService.ts +++ b/code/core/src/cli/AddonVitestService.ts @@ -243,8 +243,9 @@ export class AddonVitestService { // Check Vitest version (>=3.0.0 - stricter requirement from postinstall) const vitestVersionSpecifier = await this.packageManager.getInstalledVersion('vitest'); const coercedVitestVersion = vitestVersionSpecifier ? coerce(vitestVersionSpecifier) : null; + const isCanary = coercedVitestVersion?.version.startsWith('0.0.0') ?? false; - if (coercedVitestVersion && !satisfies(coercedVitestVersion, '>=3.0.0')) { + if (coercedVitestVersion && !satisfies(coercedVitestVersion, '>=3.0.0') && !isCanary) { reasons.push( `The addon requires Vitest 3.0.0 or higher. You are currently using ${vitestVersionSpecifier}.` );