-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
/
progress.test.js
77 lines (59 loc) · 1.86 KB
/
progress.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
"use strict";
const fs = require("fs");
const path = require("path");
const webpack = require("webpack");
const Server = require("../../lib/Server");
const reloadConfig = require("../fixtures/reload-config-2/webpack.config");
const runBrowser = require("../helpers/run-browser");
const port = require("../ports-map").progress;
const cssFilePath = path.resolve(
__dirname,
"../fixtures/reload-config-2/main.css"
);
describe("progress", () => {
it("should work and log progress in a browser console", async () => {
fs.writeFileSync(cssFilePath, "body { background-color: rgb(0, 0, 255); }");
const compiler = webpack(reloadConfig);
const devServerOptions = {
port,
client: {
progress: true,
},
};
const server = new Server(devServerOptions, compiler);
await server.start();
const { page, browser } = await runBrowser();
const consoleMessages = [];
let doHotUpdate = false;
page
.on("console", (message) => {
consoleMessages.push(message);
})
.on("request", (requestObj) => {
if (/\.hot-update\.(json|js)$/.test(requestObj.url())) {
doHotUpdate = true;
}
});
await page.goto(`http://localhost:${port}/main`, {
waitUntil: "networkidle0",
});
fs.writeFileSync(cssFilePath, "body { background-color: rgb(255, 0, 0); }");
await new Promise((resolve) => {
const timer = setInterval(() => {
if (doHotUpdate) {
clearInterval(timer);
resolve();
}
}, 100);
});
await browser.close();
const progressConsoleMessage = consoleMessages.filter((message) =>
/^\[webpack-dev-server\] (\[[a-zA-Z]+\] )?[0-9]{1,3}% - /.test(
message.text()
)
);
expect(progressConsoleMessage.length > 0).toBe(true);
fs.unlinkSync(cssFilePath);
await server.stop();
});
});