Skip to content

Commit 124d006

Browse files
committed
test: move progress.test.js to playwright
1 parent a7adbfa commit 124d006

File tree

1 file changed

+93
-0
lines changed

1 file changed

+93
-0
lines changed
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
"use strict";
2+
3+
const path = require("path");
4+
const { test } = require("@playwright/test");
5+
const { describe } = require("@playwright/test");
6+
const { expect } = require("@playwright/test");
7+
const fs = require("graceful-fs");
8+
const webpack = require("webpack");
9+
const Server = require("../../lib/Server");
10+
const reloadConfig = require("../fixtures/reload-config-2/webpack.config");
11+
const runBrowser = require("../helpers/run-browser");
12+
const port = require("../ports-map").progress;
13+
14+
const cssFilePath = path.resolve(
15+
__dirname,
16+
"../fixtures/reload-config-2/main.css",
17+
);
18+
19+
describe("progress", () => {
20+
test("should work and log progress in a browser console", async () => {
21+
fs.writeFileSync(cssFilePath, "body { background-color: rgb(0, 0, 255); }");
22+
23+
const compiler = webpack(reloadConfig);
24+
const devServerOptions = {
25+
port,
26+
client: {
27+
progress: true,
28+
},
29+
};
30+
const server = new Server(devServerOptions, compiler);
31+
32+
await server.start();
33+
34+
try {
35+
const { page, browser } = await runBrowser();
36+
37+
const consoleMessages = [];
38+
39+
try {
40+
let doHotUpdate = false;
41+
42+
page
43+
.on("console", (message) => {
44+
consoleMessages.push(message);
45+
})
46+
.on("request", (interceptedRequest) => {
47+
if (interceptedRequest.isInterceptResolutionHandled()) return;
48+
49+
if (/\.hot-update\.(json|js)$/.test(interceptedRequest.url())) {
50+
doHotUpdate = true;
51+
}
52+
});
53+
54+
await page.goto(`http://localhost:${port}/`, {
55+
waitUntil: "networkidle0",
56+
});
57+
58+
fs.writeFileSync(
59+
cssFilePath,
60+
"body { background-color: rgb(255, 0, 0); }",
61+
);
62+
63+
await new Promise((resolve) => {
64+
const timer = setInterval(() => {
65+
if (doHotUpdate) {
66+
clearInterval(timer);
67+
68+
resolve();
69+
}
70+
}, 100);
71+
});
72+
} catch (error) {
73+
throw error;
74+
} finally {
75+
await browser.close();
76+
}
77+
78+
const progressConsoleMessage = consoleMessages.filter((message) =>
79+
/^\[webpack-dev-server\] (\[[a-zA-Z]+\] )?[0-9]{1,3}% - /.test(
80+
message.text(),
81+
),
82+
);
83+
84+
expect(progressConsoleMessage.length > 0).toBe(true);
85+
} catch (error) {
86+
throw error;
87+
} finally {
88+
fs.unlinkSync(cssFilePath);
89+
90+
await server.stop();
91+
}
92+
});
93+
});

0 commit comments

Comments
 (0)