* it's tricky to get out of the runfiles tree with `bazel test` as `BUILD_WORKSPACE_DIRECTORY` is not set but I employed a trick to read the `DO_NOT_BUILD_HERE` file that is one level up from `execroot` and that contains the workspace directory. This is experimental and if `bazel test //:test.debug` fails than `bazel run` is still guaranteed to work as `BUILD_WORKSPACE_DIRECTORY` will be set in that context * test //integration:bazel_test and //integration:bazel-schematics_test exclusively * run "exclusive" and "manual" bazel-in-bazel integration tests in their own CI job as they take 8m+ to execute ``` //integration:bazel-schematics_test PASSED in 317.2s //integration:bazel_test PASSED in 167.8s ``` * Skip all integration tests that are now handled by angular_integration_test except the tests that are tracked for payload size; these are: - cli-hello-world* - hello_world__closure * add & pin @babel deps as newer versions of babel break //packages/localize/src/tools/test:test @babel/core dep had to be pinned to 7.6.4 or else //packages/localize/src/tools/test:test failed. Also //packages/localize uses @babel/generator, @babel/template, @babel/traverse & @babel/types so these deps were added to package.json as they were not being hoisted anymore from @babel/core transitive. NB: integration/hello_world__systemjs_umd test must run with systemjs 0.20.0 NB: systemjs must be at 0.18.10 for legacy saucelabs job to pass NB: With Bazel 2.0, the glob for the files to test `"integration/bazel/**"` is empty if integation/bazel is in .bazelignore. This glob worked under these conditions with 1.1.0. I did not bother testing with 1.2.x as not having integration/bazel in .bazelignore is correct. PR Close #33927
45 lines
1.5 KiB
TypeScript
45 lines
1.5 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright Google Inc. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.io/license
|
|
*/
|
|
/* tslint:disable:no-console */
|
|
require('zone.js/dist/zone-node.js');
|
|
|
|
import {enableProdMode, NgModuleFactory} from '@angular/core';
|
|
import {renderModuleFactory} from '@angular/platform-server';
|
|
import * as express from 'express';
|
|
|
|
import {HelloWorldServerModuleNgFactory} from './helloworld/app.server.ngfactory';
|
|
const helloworld = require('raw-loader!./helloworld/index.html');
|
|
|
|
import {TransferStateServerModuleNgFactory} from './transferstate/app.server.ngfactory';
|
|
const transferstate = require('raw-loader!./transferstate/index.html');
|
|
|
|
const app = express();
|
|
|
|
function render<T>(moduleFactory: NgModuleFactory<T>, html: string) {
|
|
return (req, res) => {
|
|
renderModuleFactory(moduleFactory, {
|
|
document: html,
|
|
url: req.url,
|
|
}).then((response) => { res.send(response); });
|
|
};
|
|
}
|
|
|
|
enableProdMode();
|
|
|
|
// Client bundles will be statically served from the built/ directory.
|
|
app.use('/built', express.static('built'));
|
|
|
|
// Keep the browser logs free of errors.
|
|
app.get('/favicon.ico', (req, res) => { res.send(''); });
|
|
|
|
//-----------ADD YOUR SERVER SIDE RENDERED APP HERE ----------------------
|
|
app.get('/helloworld', render(HelloWorldServerModuleNgFactory, helloworld));
|
|
app.get('/transferstate', render(TransferStateServerModuleNgFactory, transferstate));
|
|
|
|
app.listen(4206, function() { console.log('Server listening on port 4206!'); });
|