Skip to content

Commit c76af2d

Browse files
committed
test: move client-reconnect.test.js to Playwright
1 parent b2e867f commit c76af2d

9 files changed

+192
-0
lines changed
Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
"use strict";
2+
3+
const webpack = require("webpack");
4+
const { test } = require("@playwright/test");
5+
const { expect } = require("@playwright/test");
6+
const { describe } = require("@playwright/test");
7+
const { beforeEach } = require("@playwright/test");
8+
const Server = require("../../lib/Server");
9+
const config = require("../fixtures/simple-config/webpack.config");
10+
const port = require("../ports-map")["client-reconnect-option"];
11+
12+
describe("client.reconnect option", () => {
13+
describe("specified as true", () => {
14+
let compiler;
15+
let server;
16+
let pageErrors;
17+
let consoleMessages;
18+
19+
beforeEach(async () => {
20+
compiler = webpack(config);
21+
22+
server = new Server({ port, client: { reconnect: true } }, compiler);
23+
24+
await server.start();
25+
26+
pageErrors = [];
27+
consoleMessages = [];
28+
});
29+
30+
test("should try to reconnect unlimited times", async ({ page }) => {
31+
page
32+
.on("console", (message) => {
33+
consoleMessages.push(message);
34+
})
35+
.on("pageerror", (error) => {
36+
pageErrors.push(error);
37+
});
38+
39+
const response = await page.goto(`http://127.0.0.1:${port}/`, {
40+
waitUntil: "networkidle0",
41+
});
42+
43+
try {
44+
expect(JSON.stringify(response.status())).toMatchSnapshot();
45+
} catch (error) {
46+
throw error;
47+
} finally {
48+
await server.stop();
49+
}
50+
51+
let interval;
52+
53+
await new Promise((resolve) => {
54+
interval = setInterval(() => {
55+
const retryingMessages = consoleMessages.filter((message) =>
56+
message.text().includes("Trying to reconnect..."),
57+
);
58+
59+
if (retryingMessages.length >= 5) {
60+
clearInterval(interval);
61+
62+
resolve();
63+
}
64+
}, 1000);
65+
});
66+
67+
expect(JSON.stringify(pageErrors)).toMatchSnapshot();
68+
});
69+
});
70+
71+
describe("specified as false", () => {
72+
let compiler;
73+
let server;
74+
let pageErrors;
75+
let consoleMessages;
76+
77+
beforeEach(async () => {
78+
compiler = webpack(config);
79+
80+
server = new Server({ port, client: { reconnect: false } }, compiler);
81+
82+
await server.start();
83+
84+
pageErrors = [];
85+
consoleMessages = [];
86+
});
87+
88+
test("should not try to reconnect", async ({ page }) => {
89+
page
90+
.on("console", (message) => {
91+
consoleMessages.push(message);
92+
})
93+
.on("pageerror", (error) => {
94+
pageErrors.push(error);
95+
});
96+
97+
const response = await page.goto(`http://127.0.0.1:${port}/`, {
98+
waitUntil: "networkidle0",
99+
});
100+
101+
try {
102+
expect(JSON.stringify(response.status())).toMatchSnapshot();
103+
} catch (error) {
104+
throw error;
105+
} finally {
106+
await server.stop();
107+
}
108+
109+
// Can't wait to check for unlimited times so wait only for couple retries
110+
await new Promise((resolve) =>
111+
setTimeout(
112+
() => {
113+
resolve();
114+
},
115+
// eslint-disable-next-line no-restricted-properties
116+
1000 * Math.pow(2, 3),
117+
),
118+
);
119+
120+
expect(
121+
JSON.stringify(consoleMessages.map((message) => message.text())),
122+
).toMatchSnapshot();
123+
124+
expect(JSON.stringify(pageErrors)).toMatchSnapshot();
125+
});
126+
});
127+
128+
describe("specified as number", () => {
129+
let compiler;
130+
let server;
131+
let pageErrors;
132+
let consoleMessages;
133+
134+
beforeEach(async () => {
135+
compiler = webpack(config);
136+
137+
server = new Server({ port, client: { reconnect: 2 } }, compiler);
138+
139+
await server.start();
140+
141+
pageErrors = [];
142+
consoleMessages = [];
143+
});
144+
145+
test("should try to reconnect 2 times", async ({ page }) => {
146+
page
147+
.on("console", (message) => {
148+
consoleMessages.push(message);
149+
})
150+
.on("pageerror", (error) => {
151+
pageErrors.push(error);
152+
});
153+
154+
const response = await page.goto(`http://127.0.0.1:${port}/`, {
155+
waitUntil: "networkidle0",
156+
});
157+
158+
try {
159+
expect(JSON.stringify(response.status())).toMatchSnapshot();
160+
} catch (error) {
161+
throw error;
162+
} finally {
163+
await server.stop();
164+
}
165+
166+
// Can't wait to check for unlimited times so wait only for couple retries
167+
await new Promise((resolve) =>
168+
setTimeout(
169+
() => {
170+
resolve();
171+
},
172+
// eslint-disable-next-line no-restricted-properties
173+
1000 * Math.pow(2, 3),
174+
),
175+
);
176+
177+
expect(
178+
JSON.stringify(consoleMessages.map((message) => message.text())),
179+
).toMatchSnapshot();
180+
181+
expect(JSON.stringify(pageErrors)).toMatchSnapshot();
182+
});
183+
});
184+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
200
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
["[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.","[HMR] Waiting for update signal from WDS...","Hey.","[webpack-dev-server] Disconnected!"]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
200
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
["[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.","[HMR] Waiting for update signal from WDS...","Hey.","[webpack-dev-server] Disconnected!","[webpack-dev-server] Trying to reconnect...","WebSocket connection to 'ws://127.0.0.1:8163/ws' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED","[webpack-dev-server] Event","[webpack-dev-server] Trying to reconnect...","WebSocket connection to 'ws://127.0.0.1:8163/ws' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED","[webpack-dev-server] Event"]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
200
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]

0 commit comments

Comments
 (0)