Skip to content

Commit 0af2eb1

Browse files
alan-agius4Keen Yee Liau
authored and
Keen Yee Liau
committed
test: update platform-server e2e to use @nguniversal/express-engine
1 parent 426c1da commit 0af2eb1

File tree

1 file changed

+28
-172
lines changed

1 file changed

+28
-172
lines changed
Lines changed: 28 additions & 172 deletions
Original file line numberDiff line numberDiff line change
@@ -1,192 +1,48 @@
11
import { normalize } from 'path';
22
import { getGlobalVariable } from '../../utils/env';
3-
import { appendToFile, expectFileToMatch, prependToFile, writeFile } from '../../utils/fs';
3+
import { expectFileToMatch, writeFile } from '../../utils/fs';
44
import { exec, ng, silentNpm } from '../../utils/process';
55
import { updateJsonFile } from '../../utils/project';
66
import { readNgVersion } from '../../utils/version';
77

8-
export default function() {
9-
let platformServerVersion = readNgVersion();
10-
11-
if (getGlobalVariable('argv')['ng-snapshots']) {
12-
platformServerVersion = 'github:angular/platform-server-builds';
13-
}
14-
8+
export default async function () {
159
// Skip this test in Angular 2/4.
1610
if (getGlobalVariable('argv').ng2 || getGlobalVariable('argv').ng4) {
17-
return Promise.resolve();
11+
return;
1812
}
1913

20-
return (
21-
Promise.resolve()
22-
.then(() =>
23-
updateJsonFile('package.json', packageJson => {
24-
const dependencies = packageJson['dependencies'];
25-
dependencies['@angular/platform-server'] = platformServerVersion;
26-
}),
27-
)
28-
.then(() =>
29-
updateJsonFile('angular.json', workspaceJson => {
30-
const appArchitect = workspaceJson.projects['test-project'].architect;
31-
appArchitect['server'] = {
32-
builder: '@angular-devkit/build-angular:server',
33-
options: {
34-
outputPath: 'dist/test-project-server',
35-
main: 'src/main.server.ts',
36-
tsConfig: 'tsconfig.server.json',
37-
},
38-
};
39-
}),
40-
)
41-
.then(() =>
42-
writeFile(
43-
'./tsconfig.server.json',
44-
`
45-
{
46-
"extends": "./tsconfig.app.json",
47-
"compilerOptions": {
48-
"outDir": "../dist-server",
49-
"baseUrl": "./",
50-
"module": "commonjs",
51-
"types": []
52-
},
53-
"files": [
54-
"src/main.server.ts"
55-
],
56-
"include": [
57-
"src/**/*.d.ts"
58-
],
59-
"angularCompilerOptions": {
60-
"entryModule": "src/app/app.server.module#AppServerModule"
61-
}
62-
}
63-
`,
64-
),
65-
)
66-
.then(() =>
67-
writeFile(
68-
'./src/main.server.ts',
69-
`
70-
import { enableProdMode } from '@angular/core';
71-
72-
import { environment } from './environments/environment';
73-
74-
if (environment.production) {
75-
enableProdMode();
76-
}
14+
await ng('add', '@nguniversal/express-engine', '--client-project', 'test-project');
7715

78-
export { AppServerModule } from './app/app.server.module';
79-
`,
80-
),
81-
)
82-
.then(() =>
83-
writeFile(
84-
'./src/app/app.server.module.ts',
85-
`
86-
import { NgModule } from '@angular/core';
87-
import { BrowserModule } from '@angular/platform-browser';
88-
import { ServerModule } from '@angular/platform-server';
16+
await updateJsonFile('package.json', packageJson => {
17+
const dependencies = packageJson['dependencies'];
18+
dependencies['@angular/platform-server'] = getGlobalVariable('argv')['ng-snapshots']
19+
? 'github:angular/platform-server-builds'
20+
: readNgVersion();
21+
});
8922

90-
import { AppModule } from './app.module';
91-
import { AppComponent } from './app.component';
23+
await silentNpm('install');
24+
await ng('run', 'test-project:server:production');
25+
await expectFileToMatch('dist/server/main.js', /exports.*AppServerModuleNgFactory/);
9226

93-
@NgModule({
94-
imports: [
95-
AppModule,
96-
BrowserModule.withServerTransition(\{ appId: 'app' \}),
97-
ServerModule,
98-
],
99-
bootstrap: [AppComponent],
100-
})
101-
export class AppServerModule {}
102-
`,
103-
),
104-
)
105-
.then(() => silentNpm('install'))
106-
// This part of the test requires a non-aot build, which isn't available anymore.
107-
// .then(() => ng('run', 'test-project:server'))
108-
// // files were created successfully
109-
// .then(() => expectFileToMatch('dist/test-project-server/main.js',
110-
// /exports.*AppServerModule/))
111-
// .then(() => writeFile('./index.js', `
112-
// require('zone.js/dist/zone-node');
113-
// require('reflect-metadata');
114-
// const fs = require('fs');
115-
// const \{ AppServerModule \} = require('./dist/test-project-server/main');
116-
// const \{ renderModule \} = require('@angular/platform-server');
117-
118-
// renderModule(AppServerModule, \{
119-
// url: '/',
120-
// document: '<app-root></app-root>'
121-
// \}).then(html => \{
122-
// fs.writeFileSync('dist/test-project-server/index.html', html);
123-
// \});
124-
// `))
125-
// .then(() => exec(normalize('node'), 'index.js'))
126-
// .then(() => expectFileToMatch('dist/test-project-server/index.html',
127-
// new RegExp('<h2 _ngcontent-c0="">Here are some links to help you start: </h2>')))
128-
.then(() => ng('run', 'test-project:server'))
129-
// files were created successfully
130-
.then(() =>
131-
expectFileToMatch('dist/test-project-server/main.js', /exports.*AppServerModuleNgFactory/),
132-
)
133-
.then(() =>
134-
writeFile(
135-
'./index.js',
136-
`
137-
require('zone.js/dist/zone-node');
138-
require('reflect-metadata');
27+
await writeFile(
28+
'./index.js',
29+
` require('zone.js/dist/zone-node');
13930
const fs = require('fs');
140-
const \{ AppServerModuleNgFactory \} = require('./dist/test-project-server/main');
141-
const \{ renderModuleFactory \} = require('@angular/platform-server');
31+
const { AppServerModuleNgFactory } = require('./dist/server/main');
32+
const { renderModuleFactory } = require('@angular/platform-server');
14233
143-
renderModuleFactory(AppServerModuleNgFactory, \{
34+
renderModuleFactory(AppServerModuleNgFactory, {
14435
url: '/',
14536
document: '<app-root></app-root>'
146-
\}).then(html => \{
147-
fs.writeFileSync('dist/test-project-server/index.html', html);
148-
\});
149-
`,
150-
),
151-
)
152-
.then(() => exec(normalize('node'), 'index.js'))
153-
.then(() =>
154-
expectFileToMatch(
155-
'dist/test-project-server/index.html',
156-
/<p.*>Here are some links to help you get started:<\/p>/,
157-
),
158-
)
159-
.then(() =>
160-
expectFileToMatch(
161-
'./dist/test-project-server/main.js',
162-
/require\(["']@angular\/[^"']*["']\)/,
163-
),
164-
)
165-
166-
// Check externals.
167-
.then(() =>
168-
prependToFile(
169-
'./src/app/app.server.module.ts',
170-
`
171-
import 'zone.js/dist/zone-node';
172-
import 'reflect-metadata';
173-
`,
174-
).then(() =>
175-
appendToFile(
176-
'./src/app/app.server.module.ts',
177-
`
178-
import * as fs from 'fs';
179-
import { renderModule } from '@angular/platform-server';
37+
}).then(html => {
38+
fs.writeFileSync('dist/server/index.html', html);
39+
});
40+
`,
41+
);
18042

181-
renderModule(AppModule, \{
182-
url: '/',
183-
document: '<app-root></app-root>'
184-
\}).then(html => \{
185-
fs.writeFileSync('dist/test-project-server/index.html', html);
186-
\});
187-
`,
188-
),
189-
),
190-
)
43+
await exec(normalize('node'), 'index.js');
44+
await expectFileToMatch(
45+
'dist/server/index.html',
46+
/<p.*>Here are some links to help you get started:<\/p>/,
19147
);
19248
}

0 commit comments

Comments
 (0)