Skip to content

Commit 3edb898

Browse files
committed
test(cli): add snapshot tests
1 parent 0ab7237 commit 3edb898

File tree

3 files changed

+147
-7
lines changed

3 files changed

+147
-7
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`CLI --hot webpack 4 1`] = `
4+
"<i> [webpack-dev-server] Project is running at http://localhost:8080/
5+
<i> [webpack-dev-middleware] Hash: 117092dd882494dacaa4
6+
<i> Version: webpack x.x.x Time: Xms
7+
<i> Built at: Thu Jan 01 1970 <CLR=BOLD>00:00:00</CLR> GMT
8+
<i> Asset Size Chunks Chunk Names
9+
<i> main.js 225 KiB main [emitted] main
10+
<i> Entrypoint main = main.js
11+
<i> [0] multi Xdir/client/default?http://localhost (webpack)/hot/dev-server.js ./foo.js 52 bytes {main} [built]
12+
<i> [../../../client/default/index.js?http://localhost] Xdir/client/default?http://localhost 4.4 KiB {main} [built]
13+
<i> [../../../client/default/overlay.js] Xdir/client/default/overlay.js 3.59 KiB {main} [built]
14+
<i> [../../../client/default/socket.js] Xdir/client/default/socket.js 1.27 KiB {main} [built]
15+
<i> [../../../client/default/utils/createSocketUrl.js] Xdir/client/default/utils/createSocketUrl.js 2.87 KiB {main} [built]
16+
<i> [../../../client/default/utils/log.js] Xdir/client/default/utils/log.js 414 bytes {main} [built]
17+
<i> [../../../client/default/utils/reloadApp.js] Xdir/client/default/utils/reloadApp.js 1.58 KiB {main} [built]
18+
<i> [../../../client/default/utils/sendMessage.js] Xdir/client/default/utils/sendMessage.js 402 bytes {main} [built]
19+
<i> [../../../client/transpiled-modules/strip-ansi.js] Xdir/client/transpiled-modules/strip-ansi.js 1.4 KiB {main} [built]
20+
<i> [../../../node_modules/webpack/hot sync ^\\\\.\\\\/log$] (webpack)/hot sync nonrecursive ^\\\\.\\\\/log$ 170 bytes {main} [built]
21+
<i> [../../../node_modules/webpack/hot/dev-server.js] (webpack)/hot/dev-server.js 1.59 KiB {main} [built]
22+
<i> [../../../node_modules/webpack/hot/emitter.js] (webpack)/hot/emitter.js 75 bytes {main} [built]
23+
<i> [../../../node_modules/webpack/hot/log-apply-result.js] (webpack)/hot/log-apply-result.js 1.27 KiB {main} [built]
24+
<i> [../../../node_modules/webpack/hot/log.js] (webpack)/hot/log.js 1.34 KiB {main} [built]
25+
<i> [./foo.js] 41 bytes {main} [built]
26+
<i> + 18 hidden modules
27+
<i> [webpack-dev-middleware] Compiled successfully."
28+
`;
29+
30+
exports[`CLI --hot webpack 5 1`] = `
31+
"<i> [webpack-dev-server] Project is running at http://localhost:8080/
32+
<i> [webpack-dev-middleware] asset main.js 232 KiB [emitted] (name: main)
33+
<i> runtime modules 24.7 KiB 10 modules
34+
<i> cacheable modules 169 KiB
35+
<i> modules by path ../../../node_modules/ 122 KiB 16 modules
36+
<i> modules by path ../../../client/ 46.6 KiB
37+
<i> modules by path ../../../client/default/ 15.2 KiB 8 modules
38+
<i> modules by path ../../../client/transpiled-modules/*.js 26.4 KiB 2 modules
39+
<i> modules by path ../../../client/clients/*.js 5.12 KiB
40+
<i> ../../../client/clients/WebsocketClient.js 4.07 KiB [built] [code generated]
41+
<i> ../../../client/clients/BaseClient.js 1.04 KiB [built] [code generated]
42+
<i> ./foo.js 41 bytes [built] [code generated]
43+
<i> ../../../node_modules/webpack/hot/ sync nonrecursive ^\\\\.\\\\/log$ 170 bytes [built] [code generated]
44+
<i> webpack x.x.x compiled successfully in X ms
45+
<i> [webpack-dev-middleware] Compiled successfully."
46+
`;
47+
48+
exports[`CLI --no-hot webpack 4 1`] = `
49+
"<i> [webpack-dev-server] Project is running at http://localhost:8080/
50+
<i> [webpack-dev-middleware] Hash: 73d25db0c363d7def7a6
51+
<i> Version: webpack x.x.x Time: Xms
52+
<i> Built at: Thu Jan 01 1970 <CLR=BOLD>00:00:00</CLR> GMT
53+
<i> Asset Size Chunks Chunk Names
54+
<i> main.js 194 KiB main [emitted] main
55+
<i> Entrypoint main = main.js
56+
<i> [0] multi Xdir/client/default?http://localhost ./foo.js 40 bytes {main} [built]
57+
<i> [../../../client/clients/WebsocketClient.js] Xdir/client/clients/WebsocketClient.js 4.07 KiB {main} [built]
58+
<i> [../../../client/default/index.js?http://localhost] Xdir/client/default?http://localhost 4.4 KiB {main} [built]
59+
<i> [../../../client/default/overlay.js] Xdir/client/default/overlay.js 3.59 KiB {main} [built]
60+
<i> [../../../client/default/socket.js] Xdir/client/default/socket.js 1.27 KiB {main} [built]
61+
<i> [../../../client/default/utils/createSocketUrl.js] Xdir/client/default/utils/createSocketUrl.js 2.87 KiB {main} [built]
62+
<i> [../../../client/default/utils/getCurrentScriptSource.js] Xdir/client/default/utils/getCurrentScriptSource.js 673 bytes {main} [built]
63+
<i> [../../../client/default/utils/log.js] Xdir/client/default/utils/log.js 414 bytes {main} [built]
64+
<i> [../../../client/default/utils/reloadApp.js] Xdir/client/default/utils/reloadApp.js 1.58 KiB {main} [built]
65+
<i> [../../../client/default/utils/sendMessage.js] Xdir/client/default/utils/sendMessage.js 402 bytes {main} [built]
66+
<i> [../../../client/transpiled-modules/log.js] Xdir/client/transpiled-modules/log.js 25 KiB {main} [built]
67+
<i> [../../../client/transpiled-modules/strip-ansi.js] Xdir/client/transpiled-modules/strip-ansi.js 1.4 KiB {main} [built]
68+
<i> [../../../node_modules/ansi-html/index.js] Xdir/node_modules/ansi-html/index.js 4.16 KiB {main} [built]
69+
<i> [../../../node_modules/webpack/hot sync ^\\\\.\\\\/log$] (webpack)/hot sync nonrecursive ^\\\\.\\\\/log$ 170 bytes {main} [built]
70+
<i> [./foo.js] 41 bytes {main} [built]
71+
<i> + 16 hidden modules
72+
<i> [webpack-dev-middleware] Compiled successfully."
73+
`;
74+
75+
exports[`CLI --no-hot webpack 5 1`] = `
76+
"<i> [webpack-dev-server] Project is running at http://localhost:8080/
77+
<i> [webpack-dev-middleware] asset main.js 192 KiB [emitted] (name: main)
78+
<i> runtime modules 430 bytes 3 modules
79+
<i> cacheable modules 166 KiB
80+
<i> modules by path ../../../node_modules/ 119 KiB 14 modules
81+
<i> modules by path ../../../client/ 46.6 KiB
82+
<i> modules by path ../../../client/default/ 15.2 KiB 8 modules
83+
<i> modules by path ../../../client/transpiled-modules/*.js 26.4 KiB 2 modules
84+
<i> modules by path ../../../client/clients/*.js 5.12 KiB
85+
<i> ../../../client/clients/WebsocketClient.js 4.07 KiB [built] [code generated]
86+
<i> ../../../client/clients/BaseClient.js 1.04 KiB [built] [code generated]
87+
<i> ./foo.js 41 bytes [built] [code generated]
88+
<i> ../../../node_modules/webpack/hot/ sync nonrecursive ^\\\\.\\\\/log$ 170 bytes [built] [code generated]
89+
<i> webpack x.x.x compiled successfully in X ms
90+
<i> [webpack-dev-middleware] Compiled successfully."
91+
`;

test/cli/cli.test.js

Lines changed: 56 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,83 @@
11
'use strict';
22

3-
const { resolve } = require('path');
3+
const { join, resolve } = require('path');
44
const execa = require('execa');
55
const testBin = require('../helpers/test-bin');
6+
const isWebpack5 = require('../helpers/isWebpack5');
67

78
// skip if webpack-dev-server is not linked
89
let runCLITest = describe;
10+
let basePath;
911
try {
10-
require.resolve('webpack-dev-server');
12+
basePath = join(require.resolve('webpack-dev-server'), '..', '..');
1113
} catch {
1214
runCLITest = describe.skip;
1315
}
1416

1517
runCLITest('CLI', () => {
16-
it('--hot', (done) => {
18+
/* Based on webpack/test/StatsTestCases.test.js */
19+
/**
20+
* Escapes regular expression metacharacters
21+
* @param {string} str String to quote
22+
* @returns {string} Escaped string
23+
*/
24+
const quotemeta = (str) => {
25+
return str.replace(/[-[\]\\/{}()*+?.^$|]/g, '\\$&');
26+
};
27+
28+
const normalizeOutput = (output) =>
29+
output
30+
// eslint-disable-next-line no-control-regex
31+
.replace(/\u001b\[[0-9;]*m/g, '')
32+
.replace(/[.0-9]+(\s?ms)/g, 'X$1')
33+
.replace(
34+
/(Built at:) (.*)$/gm,
35+
'$1 Thu Jan 01 1970 <CLR=BOLD>00:00:00</CLR> GMT'
36+
)
37+
.replace(/webpack [^ )]+/g, 'webpack x.x.x')
38+
.replace(new RegExp(quotemeta(basePath), 'g'), 'Xdir')
39+
.replace(/(\w)\\(\w)/g, '$1/$2')
40+
.replace(/ dependencies:Xms/g, '')
41+
.replace(/, additional resolving: X ms/g, '');
42+
43+
const webpack4Test = isWebpack5 ? it.skip : it;
44+
const webpack5Test = isWebpack5 ? it : it.skip;
45+
46+
webpack4Test('--hot webpack 4', (done) => {
1747
testBin('--hot')
1848
.then((output) => {
1949
expect(output.exitCode).toEqual(0);
20-
expect(output.stderr).toContain('/hot/dev-server');
50+
expect(normalizeOutput(output.stderr)).toMatchSnapshot();
2151
done();
2252
})
2353
.catch(done);
2454
});
2555

26-
it('--no-hot', (done) => {
56+
webpack4Test('--no-hot webpack 4', (done) => {
2757
testBin('--no-hot')
2858
.then((output) => {
2959
expect(output.exitCode).toEqual(0);
30-
expect(output.stderr).not.toContain('/hot/dev-server');
60+
expect(normalizeOutput(output.stderr)).toMatchSnapshot();
61+
done();
62+
})
63+
.catch(done);
64+
});
65+
66+
webpack5Test('--hot webpack 5', (done) => {
67+
testBin('--hot')
68+
.then((output) => {
69+
expect(output.exitCode).toEqual(0);
70+
expect(normalizeOutput(output.stderr)).toMatchSnapshot();
71+
done();
72+
})
73+
.catch(done);
74+
});
75+
76+
webpack5Test('--no-hot webpack 5', (done) => {
77+
testBin('--no-hot')
78+
.then((output) => {
79+
expect(output.exitCode).toEqual(0);
80+
expect(normalizeOutput(output.stderr)).toMatchSnapshot();
3181
done();
3282
})
3383
.catch(done);

test/fixtures/cli/webpack.config.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ module.exports = {
44
mode: 'development',
55
context: __dirname,
66
entry: './foo.js',
7-
stats: 'verbose',
87
plugins: [
98
{
109
apply(compiler) {

0 commit comments

Comments
 (0)