Skip to content

Commit 2d20683

Browse files
committed
fix(@angular/cli): fix ng test report sourcemaps
angular#6160 broke `ng test` sourcemaps in Chrome, this PR fixes it. Before: ``` kamik@T460p MINGW64 D:/sandbox/master-project (master) $ ng test --sr 10% building modules 1/1 modules 0 active13 07 2017 16:38:43.942:INFO [karma]: Karma v1.7.0 server started at http://0.0.0.0:9876/ 13 07 2017 16:38:43.945:INFO [launcher]: Launching browser Chrome with unlimited concurrency 13 07 2017 16:38:43.953:INFO [launcher]: Starting browser Chrome 13 07 2017 16:38:54.099:INFO [Chrome 59.0. 3071 (Windows 10 0.0.0)]: Connected on socket Xdep72ofT_Q7MWBHAAAA with id 76010950 Chrome 59.0.3071 (Windows 10 0.0.0) AppComponent should have as title 'app' FAILED Expected 'app' to equal 'forced bug'. at Object.<anonymous> (http://localhost:9876/_karma_webpack_/main.bundle.js:89:27) at ZoneDelegate.webpackJsonp.../../../../../../../sandbox/master-project/node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (http://localhost:9 876/_karma_webpack_/polyfills.bundle.js:2704:26) at AsyncTestZoneSpec.webpackJsonp.../../../../../../../sandbox/master-project/node_modules/zone.js/dist/async-test.js.AsyncTestZoneSpec.onInvoke ( http://localhost:9876/_karma_webpack_/vendor.bundle.js:55972:39) at ProxyZoneSpec.webpackJsonp.../../../../../../../sandbox/master-project/node_modules/zone.js/dist/proxy.js.ProxyZoneSpec.onInvoke (http://localh ost:9876/_karma_webpack_/vendor.bundle.js:56735:39) Chrome 59.0.3071 (Windows 10 0.0.0): Executed 2 of 3 (1 FAILED) (0 secs / 0.162 secs) Chrome 59.0.3071 (Windows 10 0.0.0) AppComponent should have as title 'app' FAILED Expected 'app' to equal 'forced bug'. at Object.<anonymous> (http://localhost:9876/_karma_webpack_/main.bundle.js:89:27) at ZoneDelegate.webpackJsonp.../../../../../../../sandbox/master-project/node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (http://localhost:9 876/_karma_webpack_/polyfills.bundle.js:2704:26) at AsyncTestZoneSpec.webpackJsonp.../../../../../../../sandbox/master-project/node_modules/zone.js/dist/async-test.js.AsyncTestZoneSpec.onInvoke ( http://localhost:9876/_karma_webpack_/vendor.bundle.js:55972:39) at ProxyZoneSpec.webpackJsonp.../../../../../../../sandbox/master-project/node_modules/zone.js/dist/proxy.js.ProxyZoneSpec.onInvoke (http://localh Chrome 59.0.3071 (Windows 10 0.0.0): Executed 3 of 3 (1 FAILED) (0.225 secs / 0.204 secs) ``` After: ``` kamik@T460p MINGW64 D:/sandbox/master-project (master) $ ng test --sr 10% building modules 1/1 modules 0 active13 07 2017 16:37:59.478:INFO [karma]: Karma v1.7.0 server started at http://0.0.0.0:9876/ 13 07 2017 16:37:59.481:INFO [launcher]: Launching browser Chrome with unlimited concurrency 13 07 2017 16:37:59.487:INFO [launcher]: Starting browser Chrome 13 07 2017 16:38:08.559:INFO [Chrome 59.0. 3071 (Windows 10 0.0.0)]: Connected on socket ixHN4NzVFTEW1iYiAAAA with id 92819713 Chrome 59.0.3071 (Windows 10 0.0.0) AppComponent should have as title 'app' FAILED Expected 'app' to equal 'forced bug'. at Object.<anonymous> D:/sandbox/master-project/src/app/app.component.spec.ts:23:23) at ZoneDelegate.webpackJsonp.../../../../../../../sandbox/master-project/node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke D:/sandbox/master-p roject/node_modules/zone.js/dist/zone.js:391:1) at AsyncTestZoneSpec.webpackJsonp.../../../../../../../sandbox/master-project/node_modules/zone.js/dist/async-test.js.AsyncTestZoneSpec.onInvoke D :/sandbox/master-project/node_modules/zone.js/dist/async-test.js:49:1) at ProxyZoneSpec.webpackJsonp.../../../../../../../sandbox/master-project/node_modules/zone.js/dist/proxy.js.ProxyZoneSpec.onInvoke D:/sandbox/mas ter-project/node_modules/zone.js/dist/proxy.js:76:1) Chrome 59.0.3071 (Windows 10 0.0.0): Executed 2 of 3 (1 FAILED) (0 secs / 0.367 secs) Chrome 59.0.3071 (Windows 10 0.0.0) AppComponent should have as title 'app' FAILED Expected 'app' to equal 'forced bug'. at Object.<anonymous> D:/sandbox/master-project/src/app/app.component.spec.ts:23:23) at ZoneDelegate.webpackJsonp.../../../../../../../sandbox/master-project/node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke D:/sandbox/master-p roject/node_modules/zone.js/dist/zone.js:391:1) at AsyncTestZoneSpec.webpackJsonp.../../../../../../../sandbox/master-project/node_modules/zone.js/dist/async-test.js.AsyncTestZoneSpec.onInvoke D :/sandbox/master-project/node_modules/zone.js/dist/async-test.js:49:1) at ProxyZoneSpec.webpackJsonp.../../../../../../../sandbox/master-project/node_modules/zone.js/dist/proxy.js.ProxyZoneSpec.onInvoke D:/sandbox/mas Chrome 59.0.3071 (Windows 10 0.0.0): Executed 3 of 3 (1 FAILED) (0.421 secs / 0.4 secs) ``` Fix angular#6583
1 parent ea592a1 commit 2d20683

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
"isbinaryfile": "^3.0.0",
6767
"istanbul-instrumenter-loader": "^2.0.0",
6868
"json-loader": "^0.5.4",
69+
"karma-source-map-support": "^1.2.0",
6970
"less": "^2.7.2",
7071
"less-loader": "^4.0.5",
7172
"license-webpack-plugin": "^0.4.3",

packages/@angular/cli/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
"inquirer": "^3.0.0",
5454
"isbinaryfile": "^3.0.0",
5555
"json-loader": "^0.5.4",
56+
"karma-source-map-support": "^1.2.0",
5657
"less": "^2.7.2",
5758
"less-loader": "^4.0.5",
5859
"license-webpack-plugin": "^0.4.2",

packages/@angular/cli/plugins/karma.ts

+31-1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,20 @@ const init: any = (config: any, emitter: any, customFileHandlers: any) => {
5454
progress: true,
5555
}, config.angularCli);
5656

57+
if (testConfig.sourcemaps) {
58+
config.reporters.unshift('@angular/cli');
59+
// Code taken from https://github.com/tschaub/karma-source-map-support.
60+
// We can't use it directly because we need to add it conditionally in this file, and karma
61+
// frameworks cannot be added dynamically.
62+
const smsPath = path.dirname(require.resolve('source-map-support'));
63+
const ksmsPath = path.dirname(require.resolve('karma-source-map-support'));
64+
65+
addKarmaFiles(config.files, [
66+
{ pattern: path.join(smsPath, 'browser-source-map-support.js'), watched: false },
67+
{ pattern: path.join(ksmsPath, 'client.js'), watched: false }
68+
], true);
69+
}
70+
5771
// Add assets. This logic is mimics the one present in GlobCopyWebpackPlugin.
5872
if (appConfig.assets) {
5973
config.proxies = config.proxies || {};
@@ -227,9 +241,25 @@ function requestBlocker() {
227241
};
228242
}
229243

230-
// Also export karma-webpack and karma-sourcemap-loader.
244+
// Strip the server address and webpack scheme (webpack://) from error log.
245+
const initSourcemapReporter: any = function (baseReporterDecorator: any) {
246+
baseReporterDecorator(this);
247+
const urlRegexp = /\(http:\/\/localhost:\d+\/_karma_webpack_\/webpack:\//gi;
248+
249+
this.onSpecComplete = function (_browser: any, result: any) {
250+
if (!result.success && result.log.length > 0) {
251+
result.log.forEach((log: string, idx: number) => {
252+
result.log[idx] = log.replace(urlRegexp, '');
253+
});
254+
}
255+
};
256+
};
257+
258+
initSourcemapReporter.$inject = ['baseReporterDecorator'];
259+
231260
module.exports = Object.assign({
232261
'framework:@angular/cli': ['factory', init],
233262
'preprocessor:@angular/cli': ['factory', preprocessor],
263+
'reporter:@angular/cli': ['type', initSourcemapReporter],
234264
'middleware:angularCliBlocker': ['factory', requestBlocker]
235265
});

0 commit comments

Comments
 (0)