Skip to content

Commit 8fe87d2

Browse files
snitin315Michael Mok
authored and
Michael Mok
committed
test: add cases for webSocketURL with server option (webpack#4346)
1 parent 8c81343 commit 8fe87d2

File tree

3 files changed

+216
-0
lines changed

3 files changed

+216
-0
lines changed

test/e2e/__snapshots__/web-socket-server-url.test.js.snap.webpack4

+44
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,50 @@ Array [
303303

304304
exports[`web socket server URL should work with "https" option ("ws"): page errors 1`] = `Array []`;
305305

306+
exports[`web socket server URL should work with "server: 'https'" option ("sockjs"): console messages 1`] = `
307+
Array [
308+
"[HMR] Waiting for update signal from WDS...",
309+
"Hey.",
310+
"[webpack-dev-server] Hot Module Replacement enabled.",
311+
"[webpack-dev-server] Live Reloading enabled.",
312+
]
313+
`;
314+
315+
exports[`web socket server URL should work with "server: 'https'" option ("sockjs"): page errors 1`] = `Array []`;
316+
317+
exports[`web socket server URL should work with "server: 'https'" option ("ws"): console messages 1`] = `
318+
Array [
319+
"[HMR] Waiting for update signal from WDS...",
320+
"Hey.",
321+
"[webpack-dev-server] Hot Module Replacement enabled.",
322+
"[webpack-dev-server] Live Reloading enabled.",
323+
]
324+
`;
325+
326+
exports[`web socket server URL should work with "server: 'https'" option ("ws"): page errors 1`] = `Array []`;
327+
328+
exports[`web socket server URL should work with "server: 'spdy'" option ("sockjs"): console messages 1`] = `
329+
Array [
330+
"[HMR] Waiting for update signal from WDS...",
331+
"Hey.",
332+
"[webpack-dev-server] Hot Module Replacement enabled.",
333+
"[webpack-dev-server] Live Reloading enabled.",
334+
]
335+
`;
336+
337+
exports[`web socket server URL should work with "server: 'spdy'" option ("sockjs"): page errors 1`] = `Array []`;
338+
339+
exports[`web socket server URL should work with "server: 'spdy'" option ("ws"): console messages 1`] = `
340+
Array [
341+
"[HMR] Waiting for update signal from WDS...",
342+
"Hey.",
343+
"[webpack-dev-server] Hot Module Replacement enabled.",
344+
"[webpack-dev-server] Live Reloading enabled.",
345+
]
346+
`;
347+
348+
exports[`web socket server URL should work with "server: 'spdy'" option ("ws"): page errors 1`] = `Array []`;
349+
306350
exports[`web socket server URL should work with default "/ws" value of the "client.webSocketURL.pathname" option ("sockjs"): console messages 1`] = `
307351
Array [
308352
"[HMR] Waiting for update signal from WDS...",

test/e2e/__snapshots__/web-socket-server-url.test.js.snap.webpack5

+44
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,50 @@ Array [
303303

304304
exports[`web socket server URL should work with "https" option ("ws"): page errors 1`] = `Array []`;
305305

306+
exports[`web socket server URL should work with "server: 'https'" option ("sockjs"): console messages 1`] = `
307+
Array [
308+
"[HMR] Waiting for update signal from WDS...",
309+
"Hey.",
310+
"[webpack-dev-server] Hot Module Replacement enabled.",
311+
"[webpack-dev-server] Live Reloading enabled.",
312+
]
313+
`;
314+
315+
exports[`web socket server URL should work with "server: 'https'" option ("sockjs"): page errors 1`] = `Array []`;
316+
317+
exports[`web socket server URL should work with "server: 'https'" option ("ws"): console messages 1`] = `
318+
Array [
319+
"[HMR] Waiting for update signal from WDS...",
320+
"Hey.",
321+
"[webpack-dev-server] Hot Module Replacement enabled.",
322+
"[webpack-dev-server] Live Reloading enabled.",
323+
]
324+
`;
325+
326+
exports[`web socket server URL should work with "server: 'https'" option ("ws"): page errors 1`] = `Array []`;
327+
328+
exports[`web socket server URL should work with "server: 'spdy'" option ("sockjs"): console messages 1`] = `
329+
Array [
330+
"[HMR] Waiting for update signal from WDS...",
331+
"Hey.",
332+
"[webpack-dev-server] Hot Module Replacement enabled.",
333+
"[webpack-dev-server] Live Reloading enabled.",
334+
]
335+
`;
336+
337+
exports[`web socket server URL should work with "server: 'spdy'" option ("sockjs"): page errors 1`] = `Array []`;
338+
339+
exports[`web socket server URL should work with "server: 'spdy'" option ("ws"): console messages 1`] = `
340+
Array [
341+
"[HMR] Waiting for update signal from WDS...",
342+
"Hey.",
343+
"[webpack-dev-server] Hot Module Replacement enabled.",
344+
"[webpack-dev-server] Live Reloading enabled.",
345+
]
346+
`;
347+
348+
exports[`web socket server URL should work with "server: 'spdy'" option ("ws"): page errors 1`] = `Array []`;
349+
306350
exports[`web socket server URL should work with default "/ws" value of the "client.webSocketURL.pathname" option ("sockjs"): console messages 1`] = `
307351
Array [
308352
"[HMR] Waiting for update signal from WDS...",

test/e2e/web-socket-server-url.test.js

+128
Original file line numberDiff line numberDiff line change
@@ -2066,6 +2066,134 @@ describe("web socket server URL", () => {
20662066
await server.stop();
20672067
});
20682068

2069+
it(`should work with "server: 'https'" option ("${webSocketServer}")`, async () => {
2070+
const hostname = "127.0.0.1";
2071+
const compiler = webpack(config);
2072+
const devServerOptions = {
2073+
webSocketServer,
2074+
port: port1,
2075+
server: "https",
2076+
};
2077+
const server = new Server(devServerOptions, compiler);
2078+
2079+
await server.start();
2080+
2081+
const { page, browser } = await runBrowser();
2082+
2083+
const pageErrors = [];
2084+
const consoleMessages = [];
2085+
2086+
page
2087+
.on("console", (message) => {
2088+
consoleMessages.push(message);
2089+
})
2090+
.on("pageerror", (error) => {
2091+
pageErrors.push(error);
2092+
});
2093+
2094+
const webSocketRequests = [];
2095+
2096+
if (webSocketServer === "ws") {
2097+
const client = page._client;
2098+
2099+
client.on("Network.webSocketCreated", (test) => {
2100+
webSocketRequests.push(test);
2101+
});
2102+
} else {
2103+
page.on("request", (request) => {
2104+
if (/\/ws\//.test(request.url())) {
2105+
webSocketRequests.push({ url: request.url() });
2106+
}
2107+
});
2108+
}
2109+
2110+
await page.goto(`https://${hostname}:${port1}/`, {
2111+
waitUntil: "networkidle0",
2112+
});
2113+
2114+
const webSocketRequest = webSocketRequests[0];
2115+
2116+
if (webSocketServer === "ws") {
2117+
expect(webSocketRequest.url).toContain(`wss://${hostname}:${port1}/ws`);
2118+
} else {
2119+
expect(webSocketRequest.url).toContain(
2120+
`https://${hostname}:${port1}/ws`
2121+
);
2122+
}
2123+
2124+
expect(consoleMessages.map((message) => message.text())).toMatchSnapshot(
2125+
"console messages"
2126+
);
2127+
expect(pageErrors).toMatchSnapshot("page errors");
2128+
2129+
await browser.close();
2130+
await server.stop();
2131+
});
2132+
2133+
it(`should work with "server: 'spdy'" option ("${webSocketServer}")`, async () => {
2134+
const hostname = "127.0.0.1";
2135+
const compiler = webpack(config);
2136+
const devServerOptions = {
2137+
webSocketServer,
2138+
port: port1,
2139+
server: "spdy",
2140+
};
2141+
const server = new Server(devServerOptions, compiler);
2142+
2143+
await server.start();
2144+
2145+
const { page, browser } = await runBrowser();
2146+
2147+
const pageErrors = [];
2148+
const consoleMessages = [];
2149+
2150+
page
2151+
.on("console", (message) => {
2152+
consoleMessages.push(message);
2153+
})
2154+
.on("pageerror", (error) => {
2155+
pageErrors.push(error);
2156+
});
2157+
2158+
const webSocketRequests = [];
2159+
2160+
if (webSocketServer === "ws") {
2161+
const client = page._client;
2162+
2163+
client.on("Network.webSocketCreated", (test) => {
2164+
webSocketRequests.push(test);
2165+
});
2166+
} else {
2167+
page.on("request", (request) => {
2168+
if (/\/ws\//.test(request.url())) {
2169+
webSocketRequests.push({ url: request.url() });
2170+
}
2171+
});
2172+
}
2173+
2174+
await page.goto(`https://${hostname}:${port1}/`, {
2175+
waitUntil: "networkidle0",
2176+
});
2177+
2178+
const webSocketRequest = webSocketRequests[0];
2179+
2180+
if (webSocketServer === "ws") {
2181+
expect(webSocketRequest.url).toContain(`wss://${hostname}:${port1}/ws`);
2182+
} else {
2183+
expect(webSocketRequest.url).toContain(
2184+
`https://${hostname}:${port1}/ws`
2185+
);
2186+
}
2187+
2188+
expect(consoleMessages.map((message) => message.text())).toMatchSnapshot(
2189+
"console messages"
2190+
);
2191+
expect(pageErrors).toMatchSnapshot("page errors");
2192+
2193+
await browser.close();
2194+
await server.stop();
2195+
});
2196+
20692197
it(`should work when "port" option is "auto" ("${webSocketServer}")`, async () => {
20702198
process.env.WEBPACK_DEV_SERVER_BASE_PORT = 50000;
20712199

0 commit comments

Comments
 (0)