nx/e2e/web.test.ts
Jack Hsu 811c50b92c feat(web): use babel-loader instead of ts-loader for web build builder
- removes the `differentialLoading` build option
- differential loading is always enabled for prod builds

BEFORE (without ESM):

Benchmark #1: nx build demo --prod
  Time (mean ± σ):     13.834 s ±  1.731 s    [User: 11.817 s, System: 1.352 s]
  Range (min … max):   11.947 s … 16.015 s    10 runs

AFTER (with ESM):

Benchmark #1: nx build demo --prod
  Time (mean ± σ):     18.711 s ±  1.310 s    [User: 12.172 s, System: 1.394 s]
  Range (min … max):   17.232 s … 20.770 s    10 runs
2019-09-05 15:34:01 -04:00

62 lines
1.9 KiB
TypeScript

import {
checkFilesExist,
ensureProject,
readFile,
runCLI,
runCLIAsync,
uniq,
forEachCli,
supportUi
} from './utils';
forEachCli(currentCLIName => {
describe('Web Components Applications', () => {
it('should be able to generate a web app', async () => {
ensureProject();
const appName = uniq('app');
const linter = currentCLIName === 'angular' ? 'tslint' : 'eslint';
runCLI(
`generate @nrwl/web:app ${appName} --no-interactive --linter=${linter}`
);
const lintResults = runCLI(`lint ${appName}`);
expect(lintResults).toContain('All files pass linting.');
runCLI(`build ${appName}`);
checkFilesExist(
`dist/apps/${appName}/index.html`,
`dist/apps/${appName}/runtime.js`,
`dist/apps/${appName}/polyfills.js`,
`dist/apps/${appName}/main.js`,
`dist/apps/${appName}/styles.js`
);
expect(readFile(`dist/apps/${appName}/main.js`)).toContain(
'class AppElement'
);
runCLI(`build ${appName} --prod --output-hashing none`);
checkFilesExist(
`dist/apps/${appName}/index.html`,
`dist/apps/${appName}/runtime.js`,
`dist/apps/${appName}/polyfills.esm.js`,
`dist/apps/${appName}/main.esm.js`,
`dist/apps/${appName}/polyfills.es5.js`,
`dist/apps/${appName}/main.es5.js`,
`dist/apps/${appName}/styles.css`
);
expect(readFile(`dist/apps/${appName}/index.html`)).toContain(
`<link rel="stylesheet" href="styles.css">`
);
const testResults = await runCLIAsync(`test ${appName}`);
expect(testResults.stderr).toContain('Test Suites: 1 passed, 1 total');
const lintE2eResults = runCLI(`lint ${appName}-e2e`);
expect(lintE2eResults).toContain('All files pass linting.');
if (supportUi()) {
const e2eResults = runCLI(`e2e ${appName}-e2e`);
expect(e2eResults).toContain('All specs passed!');
}
}, 120000);
});
});