nx/e2e/schematics/ng-new.test.ts

105 lines
3.0 KiB
TypeScript

import {
newApp,
newLib,
newProject,
readJson,
runCLI,
updateFile,
exists,
runNgNew,
cleanup,
copyMissingPackages,
getSize,
expectTestsPass,
runCLIAsync,
ensureProject,
uniq,
runsInWSL
} from '../utils';
import { toClassName } from '@nrwl/schematics/src/utils/name-utils';
describe('Nrwl Workspace', () => {
fit('should work', async () => {
ensureProject();
const myapp = uniq('myapp');
const mylib = uniq('mylib');
newApp(`${myapp} --directory=myDir`);
newLib(`${mylib} --directory=myDir`);
updateFile(
`apps/my-dir/${myapp}/src/app/app.module.ts`,
`
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { MyDir${toClassName(
mylib
)}Module } from '@proj/my-dir/${mylib}';
import { AppComponent } from './app.component';
@NgModule({
imports: [BrowserModule, MyDir${toClassName(mylib)}Module],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule {}
`
);
runCLI(`build --prod --project=my-dir-${myapp} --output-hashing none`);
expect(exists(`./tmp/proj/dist/apps/my-dir/${myapp}/main.js`)).toEqual(
true
);
// This is a loose requirement because there are a lot of
// influences external from this project that affect this.
const bundleSize = getSize(`./tmp/proj/dist/apps/my-dir/${myapp}/main.js`);
console.log(`The current bundle size is ${bundleSize} KB`);
expect(bundleSize).toBeLessThanOrEqual(200000);
// running tests for the app
expectTestsPass(
await runCLIAsync(`test --project=my-dir-${myapp} --no-watch`)
);
// running tests for the lib
expectTestsPass(
await runCLIAsync(`test --project=my-dir-${mylib} --no-watch`)
);
if (!runsInWSL()) {
expect(
runCLI(`e2e --project=my-dir-${myapp}-e2e --headless --watch=false`)
).toContain('All specs passed!');
}
}, 1000000);
it('should support router config generation (lazy)', async () => {
ensureProject();
const myapp = uniq('myapp');
const mylib = uniq('mylib');
newApp(`${myapp} --directory=myDir --routing`);
newLib(
`${mylib} --directory=myDir --routing --lazy --parentModule=apps/my-dir/${myapp}/src/app/app.module.ts`
);
runCLI(`build --aot --project=my-dir-${myapp}`);
expectTestsPass(
await runCLIAsync(`test --project=my-dir-${myapp} --no-watch`)
);
}, 1000000);
it('should support router config generation (eager)', async () => {
ensureProject();
const myapp = uniq('myapp');
newApp(`${myapp} --directory=myDir --routing`);
const mylib = uniq('mylib');
newLib(
`${mylib} --directory=myDir --routing --parentModule=apps/my-dir/${myapp}/src/app/app.module.ts`
);
runCLI(`build --aot --project=my-dir-${myapp}`);
expectTestsPass(
await runCLIAsync(`test --project=my-dir-${myapp} --no-watch`)
);
}, 1000000);
});