diff --git a/packages/react/src/generators/application/application.spec.ts b/packages/react/src/generators/application/application.spec.ts index f34524051f..82ded98ce0 100644 --- a/packages/react/src/generators/application/application.spec.ts +++ b/packages/react/src/generators/application/application.spec.ts @@ -1002,5 +1002,23 @@ describe('app', () => { expect(viteAppTree.exists('/apps/my-app/index.html')).toBe(true); expect(viteAppTree.exists('/apps/my-app/vite.config.ts')).toBe(true); }); + + it('should not include a spec file when the bundler or unitTestRunner is vite and insourceTests is false', async () => { + // check to make sure that the other spec file exists + expect(viteAppTree.exists('/apps/my-app/src/app/app.spec.tsx')).toBe( + true + ); + + await applicationGenerator(viteAppTree, { + ...schema, + name: 'insourceTests', + bundler: 'vite', + inSourceTests: true, + }); + + expect( + viteAppTree.exists('/apps/insourceTests/src/app/app.spec.tsx') + ).toBe(false); + }); }); }); diff --git a/packages/react/src/generators/application/application.ts b/packages/react/src/generators/application/application.ts index e1cb436db2..7898d5bf9b 100644 --- a/packages/react/src/generators/application/application.ts +++ b/packages/react/src/generators/application/application.ts @@ -111,6 +111,18 @@ export async function applicationGenerator(host: Tree, schema: Schema) { tasks.push(vitestTask); } + if ( + (options.bundler === 'vite' || options.unitTestRunner === 'vitest') && + options.inSourceTests + ) { + host.delete( + joinPathFragments( + options.appProjectRoot, + `src/app/${options.fileName}.spec.tsx` + ) + ); + } + const lintTask = await addLinting(host, options); tasks.push(lintTask); @@ -120,8 +132,10 @@ export async function applicationGenerator(host: Tree, schema: Schema) { if (options.unitTestRunner === 'jest') { const jestTask = await addJest(host, options); tasks.push(jestTask); - updateSpecConfig(host, options); } + + // Handle tsconfig.spec.json for jest or vitest + updateSpecConfig(host, options); const styledTask = addStyledModuleDependencies(host, options.styledModule); tasks.push(styledTask); const routingTask = addRouting(host, options); diff --git a/packages/web/src/generators/application/application.spec.ts b/packages/web/src/generators/application/application.spec.ts index 9a6c258f1f..af91516866 100644 --- a/packages/web/src/generators/application/application.spec.ts +++ b/packages/web/src/generators/application/application.spec.ts @@ -573,5 +573,21 @@ describe('app', () => { expect(viteAppTree.exists('/apps/my-app/index.html')).toBe(true); expect(viteAppTree.exists('/apps/my-app/vite.config.ts')).toBe(true); }); + + it('should not include a spec file when the bundler or unitTestRunner is vite and insourceTests is false', async () => { + expect( + viteAppTree.exists('/apps/my-app/src/app/app.element.spec.ts') + ).toBe(true); + + await applicationGenerator(viteAppTree, { + name: 'insourceTests', + bundler: 'vite', + inSourceTests: true, + }); + + expect( + viteAppTree.exists('/apps/insource-tests/src/app/app.element.spec.ts') + ).toBe(false); + }); }); }); diff --git a/packages/web/src/generators/application/application.ts b/packages/web/src/generators/application/application.ts index bd7cced40f..c141b94abc 100644 --- a/packages/web/src/generators/application/application.ts +++ b/packages/web/src/generators/application/application.ts @@ -206,10 +206,11 @@ export async function applicationGenerator(host: Tree, schema: Schema) { host.delete(joinPathFragments(options.appProjectRoot, 'src/environments')); const viteTask = await viteConfigurationGenerator(host, { - uiFramework: 'react', + uiFramework: 'none', project: options.projectName, newProject: true, includeVitest: true, + inSourceTests: options.inSourceTests, }); tasks.push(viteTask); } @@ -223,6 +224,15 @@ export async function applicationGenerator(host: Tree, schema: Schema) { tasks.push(vitestTask); } + if ( + (options.bundler === 'vite' || options.unitTestRunner === 'vitest') && + options.inSourceTests + ) { + host.delete( + joinPathFragments(options.appProjectRoot, `src/app/app.element.spec.ts`) + ); + } + const lintTask = await lintProjectGenerator(host, { linter: options.linter, project: options.projectName,