Skip to content
This repository was archived by the owner on Feb 26, 2024. It is now read-only.

Commit 7c302bb

Browse files
committed
test(WebWorker): add test for WebSocket patching in WebWorker
1 parent 9041a3a commit 7c302bb

4 files changed

Lines changed: 35 additions & 1 deletion

File tree

karma.conf.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,15 @@ module.exports = function (config) {
55
basePath: '',
66
files: [
77
'test/browser_entry_point.ts',
8+
'test/zone_worker_entry_point.ts',
89
'test/**/*.spec.ts',
910
{pattern: 'test/assets/**/*.*', watched: true, served: true, included: false},
1011
// Autowatcch all files to trigger rerun
1112
{pattern: 'lib/**/*.ts', watched: true, served: false, included: false},
12-
{pattern: 'test/**/*.ts', watched: true, served: false, included: false}
13+
{pattern: 'test/**/*.ts', watched: true, served: false, included: false},
14+
{pattern: 'test/ws-webworker-context.ts', watched: true, served: true, included: false},
15+
16+
{pattern: 'dist/**/*.js', watched: true, served: true, included: false}
1317
],
1418

1519
/*
@@ -23,7 +27,9 @@ module.exports = function (config) {
2327

2428
preprocessors: {
2529
'test/browser_entry_point.ts': [ 'webpack', 'sourcemap' ],
30+
'test/zone_worker_entry_point.ts': [ 'webpack', 'sourcemap' ],
2631
'test/**/*.spec.ts': [ 'webpack', 'sourcemap' ],
32+
'test/ws-webworker-context.ts': ['webpack', 'sourcemap']
2733
},
2834
webpack: {
2935
devtool: 'source-map',

test/patch/WebSocket.spec.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,15 @@ describe('WebSocket', ifEnvSupports('WebSocket', function () {
2424
});
2525

2626

27+
it('should be patched in a Web Worker', done => {
28+
var worker = new Worker('/base/test/ws-webworker-context.ts');
29+
worker.onmessage = (e:MessageEvent) => {
30+
expect(e.data).toBe('pass');
31+
done();
32+
}
33+
});
34+
35+
2736
it('should work with addEventListener', function (done) {
2837
testZone.run(function() {
2938
socket.addEventListener('message', function (event) {

test/ws-webworker-context.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
declare var zone;
2+
importScripts('/base/test/zone_worker_entry_point.ts');
3+
4+
zone.fork().run(() => {
5+
var websocket = new WebSocket('ws://localhost:8001');
6+
websocket.addEventListener('open', () => {
7+
var outerZone = (<any>self).zone;
8+
websocket.onmessage = () => {
9+
if((<any>self).zone.parent === outerZone) {
10+
(<any>self).postMessage('pass');
11+
} else {
12+
(<any>self).postMessage('fail');
13+
}
14+
};
15+
websocket.send('text');
16+
});
17+
});

test/zone_worker_entry_point.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
// Setup tests for Zone without microtask support
2+
import '../lib/browser/zone';

0 commit comments

Comments
 (0)