Skip to content

Commit 5ecbd77

Browse files
test: target
1 parent 50e930d commit 5ecbd77

File tree

5 files changed

+235
-0
lines changed

5 files changed

+235
-0
lines changed

lib/utils/DevServerPlugin.js

+1
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ class DevServerPlugin {
214214
: [
215215
'web',
216216
'webworker',
217+
'electron-preload',
217218
'electron-renderer',
218219
'node-webkit',
219220
// eslint-disable-next-line no-undefined
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`target should work using "async-node" target: console messages 1`] = `Array []`;
4+
5+
exports[`target should work using "electron-main" target: console messages 1`] = `Array []`;
6+
7+
exports[`target should work using "electron-preload" target: console messages 1`] = `Array []`;
8+
9+
exports[`target should work using "electron-renderer" target: console messages 1`] = `Array []`;
10+
11+
exports[`target should work using "node" target: console messages 1`] = `Array []`;
12+
13+
exports[`target should work using "node-webkit" target: console messages 1`] = `Array []`;
14+
15+
exports[`target should work using "web" target: console messages 1`] = `
16+
Array [
17+
"[HMR] Waiting for update signal from WDS...",
18+
"Hey.",
19+
"[webpack-dev-server] Hot Module Replacement enabled.",
20+
"[webpack-dev-server] Live Reloading enabled.",
21+
]
22+
`;
23+
24+
exports[`target should work using "web" target: page errors 1`] = `Array []`;
25+
26+
exports[`target should work using "webworker" target: console messages 1`] = `
27+
Array [
28+
"[HMR] Waiting for update signal from WDS...",
29+
"Hey.",
30+
"[webpack-dev-server] Hot Module Replacement enabled.",
31+
"[webpack-dev-server] Live Reloading enabled.",
32+
]
33+
`;
34+
35+
exports[`target should work using "webworker" target: page errors 1`] = `Array []`;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`target should work using "async-node" target: console messages 1`] = `Array []`;
4+
5+
exports[`target should work using "browserslist:defaults" target: console messages 1`] = `
6+
Array [
7+
"[HMR] Waiting for update signal from WDS...",
8+
"Hey.",
9+
"[webpack-dev-server] Hot Module Replacement enabled.",
10+
"[webpack-dev-server] Live Reloading enabled.",
11+
]
12+
`;
13+
14+
exports[`target should work using "browserslist:defaults" target: page errors 1`] = `Array []`;
15+
16+
exports[`target should work using "electron-main" target: console messages 1`] = `Array []`;
17+
18+
exports[`target should work using "electron-preload" target: console messages 1`] = `Array []`;
19+
20+
exports[`target should work using "electron-renderer" target: console messages 1`] = `Array []`;
21+
22+
exports[`target should work using "es5" target: console messages 1`] = `
23+
Array [
24+
"[HMR] Waiting for update signal from WDS...",
25+
"Hey.",
26+
]
27+
`;
28+
29+
exports[`target should work using "es5" target: page errors 1`] = `Array []`;
30+
31+
exports[`target should work using "false" target: console messages 1`] = `
32+
Array [
33+
"[HMR] Waiting for update signal from WDS...",
34+
"Hey.",
35+
]
36+
`;
37+
38+
exports[`target should work using "false" target: page errors 1`] = `Array []`;
39+
40+
exports[`target should work using "node" target: console messages 1`] = `Array []`;
41+
42+
exports[`target should work using "node-webkit" target: console messages 1`] = `Array []`;
43+
44+
exports[`target should work using "nwjs" target: console messages 1`] = `Array []`;
45+
46+
exports[`target should work using "web" target: console messages 1`] = `
47+
Array [
48+
"[HMR] Waiting for update signal from WDS...",
49+
"Hey.",
50+
"[webpack-dev-server] Hot Module Replacement enabled.",
51+
"[webpack-dev-server] Live Reloading enabled.",
52+
]
53+
`;
54+
55+
exports[`target should work using "web" target: page errors 1`] = `Array []`;
56+
57+
exports[`target should work using "web,es5" target: console messages 1`] = `
58+
Array [
59+
"[HMR] Waiting for update signal from WDS...",
60+
"Hey.",
61+
"[webpack-dev-server] Hot Module Replacement enabled.",
62+
"[webpack-dev-server] Live Reloading enabled.",
63+
]
64+
`;
65+
66+
exports[`target should work using "web,es5" target: page errors 1`] = `Array []`;
67+
68+
exports[`target should work using "webworker" target: console messages 1`] = `
69+
Array [
70+
"[HMR] Waiting for update signal from WDS...",
71+
"Hey.",
72+
"[webpack-dev-server] Hot Module Replacement enabled.",
73+
"[webpack-dev-server] Live Reloading enabled.",
74+
]
75+
`;
76+
77+
exports[`target should work using "webworker" target: page errors 1`] = `Array []`;

test/e2e/target.test.js

+121
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
'use strict';
2+
3+
const webpack = require('webpack');
4+
const Server = require('../../lib/Server');
5+
const config = require('../fixtures/client-config/webpack.config');
6+
const runBrowser = require('../helpers/run-browser');
7+
const isWebpack5 = require('../helpers/isWebpack5');
8+
const port = require('../ports-map').target;
9+
10+
describe('target', () => {
11+
const targets = isWebpack5
12+
? [
13+
false,
14+
'browserslist:defaults',
15+
'web',
16+
'webworker',
17+
'node',
18+
'async-node',
19+
'electron-main',
20+
'electron-preload',
21+
'electron-renderer',
22+
'nwjs',
23+
'node-webkit',
24+
'es5',
25+
['web', 'es5'],
26+
]
27+
: [
28+
'web',
29+
'webworker',
30+
'node',
31+
'async-node',
32+
'electron-main',
33+
'electron-preload',
34+
'electron-renderer',
35+
'node-webkit',
36+
];
37+
38+
for (const target of targets) {
39+
it(`should work using "${target}" target`, async () => {
40+
const compiler = webpack({
41+
...config,
42+
target,
43+
...(target === false || target === 'es5'
44+
? {
45+
output: { chunkFormat: 'array-push', path: '/' },
46+
}
47+
: {}),
48+
});
49+
const devServerOptions = {
50+
host: '127.0.0.1',
51+
port,
52+
};
53+
const server = new Server(devServerOptions, compiler);
54+
55+
await new Promise((resolve, reject) => {
56+
server.listen(port, '127.0.0.1', (error) => {
57+
if (error) {
58+
reject(error);
59+
60+
return;
61+
}
62+
63+
resolve();
64+
});
65+
});
66+
67+
const { page, browser } = await runBrowser();
68+
69+
const pageErrors = [];
70+
const consoleMessages = [];
71+
72+
page
73+
.on('console', (message) => {
74+
consoleMessages.push(message);
75+
})
76+
.on('pageerror', (error) => {
77+
pageErrors.push(error);
78+
});
79+
80+
await page.goto(`http://127.0.0.1:${port}/main`, {
81+
waitUntil: 'networkidle0',
82+
});
83+
84+
expect(consoleMessages.map((message) => message.text())).toMatchSnapshot(
85+
'console messages'
86+
);
87+
88+
if (
89+
target === 'node' ||
90+
target === 'async-node' ||
91+
target === 'electron-main' ||
92+
target === 'electron-preload' ||
93+
target === 'electron-renderer' ||
94+
target === 'nwjs' ||
95+
target === 'node-webkit'
96+
) {
97+
const hasRequireOrGlobalError =
98+
pageErrors.filter((pageError) =>
99+
/require is not defined|global is not defined/.test(pageError)
100+
).length === 1;
101+
102+
expect(hasRequireOrGlobalError).toBe(true);
103+
} else {
104+
expect(pageErrors).toMatchSnapshot('page errors');
105+
}
106+
107+
await browser.close();
108+
await new Promise((resolve, reject) => {
109+
server.close((error) => {
110+
if (error) {
111+
reject(error);
112+
113+
return;
114+
}
115+
116+
resolve();
117+
});
118+
});
119+
});
120+
}
121+
});

test/ports-map.js

+1
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ const listOfTests = {
6464
'cli-static': 1,
6565
'cli-watch-files': 1,
6666
'cli-web-socket-server': 1,
67+
target: 1,
6768
};
6869

6970
let startPort = 8089;

0 commit comments

Comments
 (0)