- This adds `vitest` option to `unitTestRunner` for Angular generators. - This **does not** add vitest option to `create-nx-workspace` but I think we should provide this as an option in the future. Please let me know if you wantme to add this here or as a future feature. --------- Co-authored-by: Colum Ferry <cferry09@gmail.com>
85 lines
1.9 KiB
TypeScript
85 lines
1.9 KiB
TypeScript
import {
|
|
addDependenciesToPackageJson,
|
|
ensurePackage,
|
|
joinPathFragments,
|
|
type Tree,
|
|
} from '@nx/devkit';
|
|
import { analogVitestAngular, nxVersion } from '../../utils/versions';
|
|
|
|
export type AddVitestOptions = {
|
|
name: string;
|
|
projectRoot: string;
|
|
skipPackageJson: boolean;
|
|
strict: boolean;
|
|
};
|
|
|
|
export async function addVitest(
|
|
tree: Tree,
|
|
options: AddVitestOptions
|
|
): Promise<void> {
|
|
if (!options.skipPackageJson) {
|
|
addDependenciesToPackageJson(
|
|
tree,
|
|
{},
|
|
{
|
|
'@analogjs/vitest-angular': analogVitestAngular,
|
|
'@analogjs/vite-plugin-angular': analogVitestAngular,
|
|
},
|
|
undefined,
|
|
true
|
|
);
|
|
}
|
|
|
|
const { createOrEditViteConfig, viteConfigurationGenerator } = ensurePackage<
|
|
typeof import('@nx/vite')
|
|
>('@nx/vite', nxVersion);
|
|
|
|
const relativeTestSetupPath = joinPathFragments('src', 'test-setup.ts');
|
|
|
|
const setupFile = joinPathFragments(
|
|
options.projectRoot,
|
|
relativeTestSetupPath
|
|
);
|
|
if (!tree.exists(setupFile)) {
|
|
tree.write(
|
|
setupFile,
|
|
`import '@analogjs/vitest-angular/setup-zone';
|
|
|
|
import {
|
|
BrowserDynamicTestingModule,
|
|
platformBrowserDynamicTesting,
|
|
} from '@angular/platform-browser-dynamic/testing';
|
|
import { getTestBed } from '@angular/core/testing';
|
|
|
|
getTestBed().initTestEnvironment(
|
|
BrowserDynamicTestingModule,
|
|
platformBrowserDynamicTesting()
|
|
);
|
|
`
|
|
);
|
|
|
|
await viteConfigurationGenerator(tree, {
|
|
project: options.name,
|
|
newProject: true,
|
|
uiFramework: 'none',
|
|
includeVitest: true,
|
|
testEnvironment: 'jsdom',
|
|
});
|
|
|
|
createOrEditViteConfig(
|
|
tree,
|
|
{
|
|
project: options.name,
|
|
includeLib: false,
|
|
includeVitest: true,
|
|
inSourceTests: false,
|
|
imports: [`import angular from '@analogjs/vite-plugin-angular'`],
|
|
plugins: ['angular()'],
|
|
setupFile: relativeTestSetupPath,
|
|
useEsmExtension: true,
|
|
},
|
|
true
|
|
);
|
|
}
|
|
}
|