From 285bc6132e3c62411446d5c439bf1a18a9f72ea2 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Sun, 10 Dec 2023 01:59:28 +0900 Subject: [PATCH] test(browser): add test case for cjs import (#4690) --- pnpm-lock.yaml | 3 +++ test/browser/cjs-lib/index.js | 7 +++++++ test/browser/cjs-lib/package.json | 7 +++++++ test/browser/package.json | 1 + test/browser/specs/runner.test.mjs | 4 ++-- test/browser/test/cjs-lib.test.ts | 21 +++++++++++++++++++++ test/browser/vitest.config.mts | 3 +++ 7 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 test/browser/cjs-lib/index.js create mode 100644 test/browser/cjs-lib/package.json create mode 100644 test/browser/test/cjs-lib.test.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8341e86a8..91ffce256 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1479,6 +1479,9 @@ importers: '@vitest/browser': specifier: workspace:* version: link:../../packages/browser + '@vitest/cjs-lib': + specifier: link:./cjs-lib + version: link:cjs-lib execa: specifier: ^7.1.1 version: 7.1.1 diff --git a/test/browser/cjs-lib/index.js b/test/browser/cjs-lib/index.js new file mode 100644 index 000000000..efd596a57 --- /dev/null +++ b/test/browser/cjs-lib/index.js @@ -0,0 +1,7 @@ +module.exports = { + a: 'a', + b: 'b', + object: { + h: 'h', + }, +} diff --git a/test/browser/cjs-lib/package.json b/test/browser/cjs-lib/package.json new file mode 100644 index 000000000..7ea91ce84 --- /dev/null +++ b/test/browser/cjs-lib/package.json @@ -0,0 +1,7 @@ +{ + "name": "@vitest/cjs-lib", + "type": "commonjs", + "exports": { + "default": "./index.js" + } +} diff --git a/test/browser/package.json b/test/browser/package.json index ec97bb065..6f1f4214b 100644 --- a/test/browser/package.json +++ b/test/browser/package.json @@ -10,6 +10,7 @@ }, "devDependencies": { "@vitest/browser": "workspace:*", + "@vitest/cjs-lib": "link:./cjs-lib", "execa": "^7.1.1", "safaridriver": "^0.0.4", "vitest": "workspace:*" diff --git a/test/browser/specs/runner.test.mjs b/test/browser/specs/runner.test.mjs index 3c9619d31..49bba6971 100644 --- a/test/browser/specs/runner.test.mjs +++ b/test/browser/specs/runner.test.mjs @@ -24,8 +24,8 @@ const passedTests = getPassed(browserResultJson.testResults) const failedTests = getFailed(browserResultJson.testResults) await test('tests are actually running', async () => { - assert.ok(browserResultJson.testResults.length === 8, 'Not all the tests have been run') - assert.ok(passedTests.length === 7, 'Some tests failed') + assert.ok(browserResultJson.testResults.length === 9, 'Not all the tests have been run') + assert.ok(passedTests.length === 8, 'Some tests failed') assert.ok(failedTests.length === 1, 'Some tests have passed but should fail') assert.doesNotMatch(stderr, /Unhandled Error/, 'doesn\'t have any unhandled errors') diff --git a/test/browser/test/cjs-lib.test.ts b/test/browser/test/cjs-lib.test.ts new file mode 100644 index 000000000..a28b593f7 --- /dev/null +++ b/test/browser/test/cjs-lib.test.ts @@ -0,0 +1,21 @@ +import { expect, test } from 'vitest' +import cjsDefault, { a as cjsNamed } from '@vitest/cjs-lib' +import * as cjsNamespace from '@vitest/cjs-lib' + +test('cjs namespace import', () => { + expect(cjsNamespace).toEqual({ + a: 'a', + b: 'b', + object: { + h: 'h', + }, + }) +}) + +test('cjs named import', () => { + expect(cjsNamed).toEqual('a') +}) + +test('cjs default import not supported when slowHijackESM', () => { + expect(cjsDefault).toBeUndefined() +}) diff --git a/test/browser/vitest.config.mts b/test/browser/vitest.config.mts index 784ae11c0..baefd42c8 100644 --- a/test/browser/vitest.config.mts +++ b/test/browser/vitest.config.mts @@ -7,6 +7,9 @@ const dir = dirname(fileURLToPath(import.meta.url)) function noop() {} export default defineConfig({ + optimizeDeps: { + include: ['@vitest/cjs-lib'], + }, test: { include: ['test/**.test.{ts,js}'], browser: { -- 2.51.2