Skip to content

Commit 41b3e23

Browse files
author
kanekotic
committed
added integration tests with puppeteer
1 parent d2a63e4 commit 41b3e23

10 files changed

+520
-42
lines changed

examples/example-class.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,4 @@ var params = {
1616
args: [4]
1717
}
1818

19-
execute(params)
20-
.then(console.log)
21-
.catch(console.error)
19+
export default () => execute(params)

examples/example-context-args.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,5 @@ let params = {
1212
context: instance,
1313
args: [4]
1414
}
15-
execute(params)
16-
.then(console.log)
17-
.catch(console.error)
15+
16+
export default () => execute(params)

examples/example-context.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,5 @@ let params = {
1111
fn: instance.foo,
1212
context: instance
1313
}
14-
execute(params)
15-
.then(console.log)
16-
.catch(console.error)
14+
15+
export default () => execute(params)

examples/example-function.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,5 @@ let params = {
77
fn: func.toString(),
88
args: [2]
99
}
10-
execute(params)
11-
.then(console.log)
12-
.catch(console.error)
10+
11+
export default () => execute(params)

examples/index-cjs.js

+42-7
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,16 @@ var worker = (function () {
2121

2222
var workerString = worker.toString();
2323
var code = workerString.substring(workerString.indexOf("{") + 1, workerString.lastIndexOf("return"));
24-
2524
function execute(param) {
2625
return new Promise(function (resolve, reject) {
2726
var webWorker = new Worker(URL.createObjectURL(new Blob([code], { type: 'text/javascript' })));
28-
var copy = Object.assign({}, param, { fn: param.fn.toString() });
29-
webWorker.postMessage([copy]);
3027
webWorker.onmessage = function (result) {
3128
if (param.context) Object.assign(param.context, result.data[1]);
3229
resolve(result.data[0]);
3330
};
3431
webWorker.onerror = reject;
32+
var copy = Object.assign({}, param, { fn: param.fn.toString() });
33+
webWorker.postMessage([copy]);
3534
});
3635
}
3736

@@ -42,7 +41,10 @@ var params = {
4241
fn: func.toString(),
4342
args: [2]
4443
};
45-
execute(params).then(console.log).catch(console.error);
44+
45+
var ex1 = (function () {
46+
return execute(params);
47+
});
4648

4749
function Func(value) {
4850
this.value = value;
@@ -55,7 +57,10 @@ var params$1 = {
5557
fn: instance.foo,
5658
context: instance
5759
};
58-
execute(params$1).then(console.log).catch(console.error);
60+
61+
var ex2 = (function () {
62+
return execute(params$1);
63+
});
5964

6065
function Func$1(value) {
6166
this.value = value;
@@ -69,7 +74,10 @@ var params$2 = {
6974
context: instance$1,
7075
args: [4]
7176
};
72-
execute(params$2).then(console.log).catch(console.error);
77+
78+
var ex3 = (function () {
79+
return execute(params$2);
80+
});
7381

7482
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
7583

@@ -99,4 +107,31 @@ var params$3 = {
99107
args: [4]
100108
};
101109

102-
execute(params$3).then(console.log).catch(console.error);
110+
var ex4 = (function () {
111+
return execute(params$3);
112+
});
113+
114+
var element1 = document.getElementById("el1");
115+
var element2 = document.getElementById("el2");
116+
var element3 = document.getElementById("el3");
117+
var element4 = document.getElementById("el4");
118+
ex1().then(function (result) {
119+
element1.innerHTML = result;
120+
}).catch(function () {
121+
element1.innerHTML = "Fail";
122+
});
123+
ex2().then(function (result) {
124+
element2.innerHTML = result;
125+
}).catch(function () {
126+
element2.innerHTML = "Fail";
127+
});
128+
ex3().then(function (result) {
129+
element3.innerHTML = result;
130+
}).catch(function () {
131+
element3.innerHTML = "Fail";
132+
});
133+
ex4().then(function (result) {
134+
element4.innerHTML = result;
135+
}).catch(function () {
136+
element4.innerHTML = "Fail";
137+
});

examples/index.html

+14-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,15 @@
11
<meta charset="UTF-8">
2-
<script src="./index-cjs.js"></script>
2+
<html>
3+
<head>
4+
5+
</head>
6+
<body>
7+
<div>
8+
<div id="el1"></div>
9+
<div id="el2"></div>
10+
<div id="el3"></div>
11+
<div id="el4"></div>
12+
</div>
13+
<script src="./index-cjs.js"></script>
14+
</body>
15+
</html>

examples/index.js

+28-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,28 @@
1-
import * as ex1 from './example-function'
2-
import * as ex2 from './example-context'
3-
import * as ex3 from './example-context-args'
4-
import * as ex4 from './example-class'
1+
import ex1 from './example-function'
2+
import ex2 from './example-context'
3+
import ex3 from './example-context-args'
4+
import ex4 from './example-class'
5+
var element1 = document.getElementById("el1")
6+
var element2 = document.getElementById("el2")
7+
var element3 = document.getElementById("el3")
8+
var element4 = document.getElementById("el4")
9+
ex1().then((result) => {
10+
element1.innerHTML = result;
11+
}).catch(() => {
12+
element1.innerHTML = "Fail";
13+
});
14+
ex2().then((result) => {
15+
element2.innerHTML = result;
16+
}).catch(() => {
17+
element2.innerHTML = "Fail";
18+
});
19+
ex3().then((result) => {
20+
element3.innerHTML = result;
21+
}).catch(() => {
22+
element3.innerHTML = "Fail";
23+
});
24+
ex4().then((result) => {
25+
element4.innerHTML = result;
26+
}).catch(() => {
27+
element4.innerHTML = "Fail";
28+
});

package.json

+7-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,11 @@
1717
"preversion": "yarn test"
1818
},
1919
"keywords": [
20-
"Web Workers",
21-
"Multithreading"
20+
"web workers",
21+
"multithreading",
22+
"async",
23+
"generic workers",
24+
"generic web workers"
2225
],
2326
"repository": "[email protected]:kanekotic/web-threads.git",
2427
"author": "kanekotic <[email protected]>",
@@ -31,6 +34,8 @@
3134
"coveralls": "3.0.2",
3235
"faker": "4.1.0",
3336
"jest": "23.5.0",
37+
"jest-puppeteer": "3.3.1",
38+
"puppeteer": "1.7.0",
3439
"rollup": "0.65.0",
3540
"rollup-plugin-babel": "3.0.7",
3641
"rollup-plugin-uglify": "4.0.0",

test/integration/integration-test.js

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// const puppeteer = require('puppeteer');
2+
// const path = require('path');
3+
4+
// (async () => {
5+
6+
// const browser = await puppeteer.launch();
7+
// const page = await browser.newPage();
8+
9+
// await page.goto(`file:${path.join(__dirname, '../../examples/index.html')}`);
10+
// console.log('Current workers:');
11+
// await page.waitFor(100);
12+
// page.workers().forEach(async (worker) => {
13+
// let result = await worker
14+
// console.log(result)
15+
// });
16+
// await browser.close();
17+
// })();
18+
import worker from '../../lib/worker'
19+
import puppeteer from 'puppeteer'
20+
import path from 'path'
21+
22+
function Func(value){
23+
this.value = value
24+
}
25+
26+
describe('integration should', () => {
27+
let browser
28+
beforeAll(async () => {
29+
browser = await puppeteer.launch();
30+
})
31+
afterAll(async () => {
32+
await browser.close();
33+
})
34+
test('webworkers should resolve to elements', async () => {
35+
const page = await browser.newPage();
36+
await page.goto(`file:${path.join(__dirname, '../../examples/index.html')}`);
37+
await page.waitFor(100);
38+
const el1 = await page.evaluate(() => document.querySelector('#el1').textContent);
39+
const el2 = await page.evaluate(() => document.querySelector('#el2').textContent);
40+
const el3 = await page.evaluate(() => document.querySelector('#el3').textContent);
41+
const el4 = await page.evaluate(() => document.querySelector('#el4').textContent);
42+
expect(el1).toEqual("4")
43+
expect(el2).toEqual("4")
44+
expect(el3).toEqual("8")
45+
expect(el4).toEqual("8")
46+
})
47+
})

0 commit comments

Comments
 (0)