nx/e2e/web/src/web-vite.test.ts
2023-11-29 15:58:49 +02:00

73 lines
2.2 KiB
TypeScript

import {
checkFilesDoNotExist,
checkFilesExist,
cleanupProject,
createFile,
isNotWindows,
killPorts,
newProject,
runCLI,
runCLIAsync,
runE2ETests,
setMaxWorkers,
uniq,
} from '@nx/e2e/utils';
import { join } from 'path';
describe('Web Components Applications with bundler set as vite', () => {
beforeEach(() => newProject());
afterEach(() => cleanupProject());
it('should be able to generate a web app', async () => {
const appName = uniq('app');
runCLI(`generate @nx/web:app ${appName} --bundler=vite --no-interactive`);
setMaxWorkers(join('apps', appName, 'project.json'));
const lintResults = runCLI(`lint ${appName}`);
expect(lintResults).toContain('All files pass linting.');
runCLI(`build ${appName}`);
checkFilesExist(`dist/apps/${appName}/index.html`);
const testResults = await runCLIAsync(`test ${appName}`);
expect(testResults.combinedOutput).toContain('Tests 2 passed (2)');
const lintE2eResults = runCLI(`lint ${appName}-e2e`);
expect(lintE2eResults).toContain('All files pass linting.');
if (isNotWindows() && runE2ETests()) {
const e2eResults = runCLI(`e2e ${appName}-e2e --no-watch`);
expect(e2eResults).toContain('All specs passed!');
expect(await killPorts()).toBeTruthy();
}
}, 500000);
it('should remove previous output before building', async () => {
const appName = uniq('app');
const libName = uniq('lib');
runCLI(`generate @nx/web:app ${appName} --bundler=vite --no-interactive`);
runCLI(
`generate @nx/react:lib ${libName} --bundler=vite --no-interactive --unitTestRunner=vitest`
);
setMaxWorkers(join('apps', appName, 'project.json'));
createFile(`dist/apps/${appName}/_should_remove.txt`);
createFile(`dist/libs/${libName}/_should_remove.txt`);
createFile(`dist/apps/_should_not_remove.txt`);
checkFilesExist(
`dist/apps/${appName}/_should_remove.txt`,
`dist/apps/_should_not_remove.txt`
);
runCLI(`build ${appName} --emptyOutDir`);
runCLI(`build ${libName} --emptyOutDir`);
checkFilesDoNotExist(
`dist/apps/${appName}/_should_remove.txt`,
`dist/libs/${libName}/_should_remove.txt`
);
checkFilesExist(`dist/apps/_should_not_remove.txt`);
}, 120000);
});