From b3d27ebe67909b3151fd657b25cf4c52396f7051 Mon Sep 17 00:00:00 2001 From: Younes Jaaidi Date: Fri, 3 May 2024 18:56:16 +0200 Subject: [PATCH] fix(vite-plugin-angular): honour user's test.pool choice (#1080) --- .../src/lib/angular-vitest-plugin.spec.ts | 33 +++++++++++++++++++ .../src/lib/angular-vitest-plugin.ts | 4 +-- 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 packages/vite-plugin-angular/src/lib/angular-vitest-plugin.spec.ts diff --git a/packages/vite-plugin-angular/src/lib/angular-vitest-plugin.spec.ts b/packages/vite-plugin-angular/src/lib/angular-vitest-plugin.spec.ts new file mode 100644 index 000000000..fc0b53eb0 --- /dev/null +++ b/packages/vite-plugin-angular/src/lib/angular-vitest-plugin.spec.ts @@ -0,0 +1,33 @@ +import { describe, it, expect } from 'vitest'; +import { angularVitestPlugin } from './angular-vitest-plugin'; +import { defineConfig, resolveConfig } from 'vite'; + +describe(angularVitestPlugin.name, () => { + /* Setting the pool to vmThreads by default to avoid issues related to global conflicts when using JSDOM. + * This also aligns with the default pool setting in Jest. + * This is not ideal as vmThreads comes with its own set of issues, but it's the best option we have for now. + * Cf. https://github.com/vitest-dev/vitest/issues/4685 + * Cf. https://vitest.dev/config/#vmthreads */ + it('should set pool to vmThreads', async () => { + const config = await resolveConfig( + defineConfig({ + plugins: [angularVitestPlugin()], + }), + 'serve' + ); + expect(config.test?.pool).toBe('vmThreads'); + }); + + it('should not override pool option if already set by user', async () => { + const config = await resolveConfig( + defineConfig({ + plugins: [angularVitestPlugin()], + test: { + pool: 'threads', + }, + }), + 'serve' + ); + expect(config.test?.pool).toBe('threads'); + }); +}); diff --git a/packages/vite-plugin-angular/src/lib/angular-vitest-plugin.ts b/packages/vite-plugin-angular/src/lib/angular-vitest-plugin.ts index 303227919..f886180f1 100644 --- a/packages/vite-plugin-angular/src/lib/angular-vitest-plugin.ts +++ b/packages/vite-plugin-angular/src/lib/angular-vitest-plugin.ts @@ -5,13 +5,13 @@ export function angularVitestPlugin(): Plugin { name: '@analogjs/vitest-angular-esm-plugin', apply: 'serve', enforce: 'post', - config() { + config(userConfig) { return { ssr: { noExternal: [/cdk\/fesm2022/], }, test: { - pool: 'vmThreads', + pool: userConfig.test?.pool ?? 'vmThreads', }, } as UserConfig; },