Skip to content

Commit ae4dc05

Browse files
alan-agius4vikerman
authored andcommitted
fix(@angular-devkit/build-angular): karma builder now serves global styles
Closes: #11072
1 parent b16cb27 commit ae4dc05

File tree

4 files changed

+62
-3
lines changed

4 files changed

+62
-3
lines changed

packages/angular_devkit/build_angular/src/angular-cli-files/plugins/karma-context.html

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
<script type="text/javascript" src="_karma_webpack_/polyfills.js" crossorigin="anonymous"></script>
3131
<!-- Dynamically replaced with <script> tags -->
3232
%SCRIPTS%
33+
<script type="text/javascript" src="_karma_webpack_/styles.js" crossorigin="anonymous"></script>
3334
<script type="text/javascript" src="_karma_webpack_/scripts.js" crossorigin="anonymous"></script>
3435
<script type="text/javascript" src="_karma_webpack_/vendor.js" crossorigin="anonymous"></script>
3536
<script type="text/javascript" src="_karma_webpack_/main.js" crossorigin="anonymous"></script>

packages/angular_devkit/build_angular/src/angular-cli-files/plugins/karma-debug.html

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
<script type="text/javascript" src="_karma_webpack_/polyfills.js" crossorigin="anonymous"></script>
3333
<!-- Dynamically replaced with <script> tags -->
3434
%SCRIPTS%
35+
<script type="text/javascript" src="_karma_webpack_/styles.js" crossorigin="anonymous"></script>
3536
<script type="text/javascript" src="_karma_webpack_/scripts.js" crossorigin="anonymous"></script>
3637
<script type="text/javascript" src="_karma_webpack_/vendor.js" crossorigin="anonymous"></script>
3738
<script type="text/javascript" src="_karma_webpack_/main.js" crossorigin="anonymous"></script>

packages/angular_devkit/build_angular/src/angular-cli-files/plugins/karma.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,6 @@ const init: any = (config: any, emitter: any, customFileHandlers: any) => {
125125
config.middleware = config.middleware || [];
126126
config.middleware.push('@angular-devkit/build-angular--fallback');
127127

128-
// Delete global styles entry, we don't want to load them.
129-
delete webpackConfig.entry.styles;
130-
131128
// The webpack tier owns the watch behavior so we want to force it in the config.
132129
webpackConfig.watch = !config.singleRun;
133130
if (config.singleRun) {
@@ -198,6 +195,7 @@ const init: any = (config: any, emitter: any, customFileHandlers: any) => {
198195
'/_karma_webpack_/runtime.js',
199196
'/_karma_webpack_/polyfills.js',
200197
'/_karma_webpack_/scripts.js',
198+
'/_karma_webpack_/styles.js',
201199
'/_karma_webpack_/vendor.js',
202200
];
203201
if (alwaysServe.indexOf(req.url) != -1) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/**
2+
* @license
3+
* Copyright Google Inc. All Rights Reserved.
4+
*
5+
* Use of this source code is governed by an MIT-style license that can be
6+
* found in the LICENSE file at https://angular.io/license
7+
*/
8+
9+
import { runTargetSpec } from '@angular-devkit/architect/testing';
10+
import { tap } from 'rxjs/operators';
11+
import { host, karmaTargetSpec } from '../utils';
12+
13+
14+
describe('Karma Builder global styles', () => {
15+
beforeEach(done => host.initialize().toPromise().then(done, done.fail));
16+
afterEach(done => host.restore().toPromise().then(done, done.fail));
17+
18+
it('works', (done) => {
19+
host.writeMultipleFiles({
20+
'src/styles.css': 'p {display: none}',
21+
'src/app/app.component.ts': `
22+
import { Component } from '@angular/core';
23+
24+
@Component({
25+
selector: 'app-root',
26+
template: '<p>Hello World</p>'
27+
})
28+
export class AppComponent {
29+
}
30+
`,
31+
'src/app/app.component.spec.ts': `
32+
import { TestBed, async } from '@angular/core/testing';
33+
import { HttpModule } from '@angular/http';
34+
import { AppComponent } from './app.component';
35+
36+
describe('AppComponent', () => {
37+
beforeEach(async(() => {
38+
TestBed.configureTestingModule({
39+
imports: [
40+
HttpModule
41+
],
42+
declarations: [
43+
AppComponent
44+
]
45+
}).compileComponents();
46+
}));
47+
48+
it('should not contain text that is hidden via css', async(() => {
49+
const fixture = TestBed.createComponent(AppComponent);
50+
expect(fixture.nativeElement.innerText).not.toContain('Hello World');
51+
}));
52+
});`,
53+
});
54+
55+
runTargetSpec(host, karmaTargetSpec).pipe(
56+
tap(buildEvent => expect(buildEvent.success).toBe(true)),
57+
).toPromise().then(done, done.fail);
58+
});
59+
});

0 commit comments

Comments
 (0)