56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
import {
|
|
checkFilesExist,
|
|
killPorts,
|
|
readJson,
|
|
runCLI,
|
|
runCLIAsync,
|
|
runE2ETests,
|
|
} from '../../utils';
|
|
|
|
export async function checkApp(
|
|
appName: string,
|
|
opts: {
|
|
checkUnitTest: boolean;
|
|
checkLint: boolean;
|
|
checkE2E: boolean;
|
|
checkExport: boolean;
|
|
appsDir?: string;
|
|
}
|
|
) {
|
|
const appsDir = opts.appsDir ?? 'apps';
|
|
|
|
if (opts.checkLint) {
|
|
const lintResults = runCLI(`lint ${appName}`);
|
|
expect(lintResults).toContain('All files pass linting.');
|
|
}
|
|
|
|
if (opts.checkUnitTest) {
|
|
const testResults = await runCLIAsync(`test ${appName}`);
|
|
expect(testResults.combinedOutput).toContain(
|
|
'Test Suites: 1 passed, 1 total'
|
|
);
|
|
}
|
|
|
|
const buildResult = runCLI(`build ${appName}`);
|
|
expect(buildResult).toContain(`Successfully ran target build`);
|
|
checkFilesExist(`dist/${appsDir}/${appName}/.next/build-manifest.json`);
|
|
|
|
const packageJson = readJson(`dist/${appsDir}/${appName}/package.json`);
|
|
expect(packageJson.dependencies.react).toBeDefined();
|
|
expect(packageJson.dependencies['react-dom']).toBeDefined();
|
|
expect(packageJson.dependencies.next).toBeDefined();
|
|
|
|
if (opts.checkE2E && runE2ETests()) {
|
|
const e2eResults = runCLI(
|
|
`e2e ${appName}-e2e --no-watch --configuration=production`
|
|
);
|
|
expect(e2eResults).toContain('Successfully ran target e2e for project');
|
|
expect(await killPorts()).toBeTruthy();
|
|
}
|
|
|
|
if (opts.checkExport) {
|
|
runCLI(`export ${appName}`);
|
|
checkFilesExist(`dist/${appsDir}/${appName}/exported/index.html`);
|
|
}
|
|
}
|