Skip to content

Commit d54aa9e

Browse files
authored
test: add cases for webSocktURL option with https & http2 (#3941)
1 parent cdce214 commit d54aa9e

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

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,50 @@ Array [
261261

262262
exports[`web socket server URL should work with "client.webSocketURL.port" and "webSocketServer.options.port" options as string ("ws"): page errors 1`] = `Array []`;
263263

264+
exports[`web socket server URL should work with "http2" option ("sockjs"): console messages 1`] = `
265+
Array [
266+
"[HMR] Waiting for update signal from WDS...",
267+
"Hey.",
268+
"[webpack-dev-server] Hot Module Replacement enabled.",
269+
"[webpack-dev-server] Live Reloading enabled.",
270+
]
271+
`;
272+
273+
exports[`web socket server URL should work with "http2" option ("sockjs"): page errors 1`] = `Array []`;
274+
275+
exports[`web socket server URL should work with "http2" option ("ws"): console messages 1`] = `
276+
Array [
277+
"[HMR] Waiting for update signal from WDS...",
278+
"Hey.",
279+
"[webpack-dev-server] Hot Module Replacement enabled.",
280+
"[webpack-dev-server] Live Reloading enabled.",
281+
]
282+
`;
283+
284+
exports[`web socket server URL should work with "http2" option ("ws"): page errors 1`] = `Array []`;
285+
286+
exports[`web socket server URL should work with "https" option ("sockjs"): console messages 1`] = `
287+
Array [
288+
"[HMR] Waiting for update signal from WDS...",
289+
"Hey.",
290+
"[webpack-dev-server] Hot Module Replacement enabled.",
291+
"[webpack-dev-server] Live Reloading enabled.",
292+
]
293+
`;
294+
295+
exports[`web socket server URL should work with "https" option ("sockjs"): page errors 1`] = `Array []`;
296+
297+
exports[`web socket server URL should work with "https" option ("ws"): console messages 1`] = `
298+
Array [
299+
"[HMR] Waiting for update signal from WDS...",
300+
"Hey.",
301+
"[webpack-dev-server] Hot Module Replacement enabled.",
302+
"[webpack-dev-server] Live Reloading enabled.",
303+
]
304+
`;
305+
306+
exports[`web socket server URL should work with "https" option ("ws"): page errors 1`] = `Array []`;
307+
264308
exports[`web socket server URL should work with default "/ws" value of the "client.webSocketURL.pathname" option ("sockjs"): console messages 1`] = `
265309
Array [
266310
"[HMR] Waiting for update signal from WDS...",

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

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,50 @@ Array [
261261

262262
exports[`web socket server URL should work with "client.webSocketURL.port" and "webSocketServer.options.port" options as string ("ws"): page errors 1`] = `Array []`;
263263

264+
exports[`web socket server URL should work with "http2" option ("sockjs"): console messages 1`] = `
265+
Array [
266+
"[HMR] Waiting for update signal from WDS...",
267+
"Hey.",
268+
"[webpack-dev-server] Hot Module Replacement enabled.",
269+
"[webpack-dev-server] Live Reloading enabled.",
270+
]
271+
`;
272+
273+
exports[`web socket server URL should work with "http2" option ("sockjs"): page errors 1`] = `Array []`;
274+
275+
exports[`web socket server URL should work with "http2" option ("ws"): console messages 1`] = `
276+
Array [
277+
"[HMR] Waiting for update signal from WDS...",
278+
"Hey.",
279+
"[webpack-dev-server] Hot Module Replacement enabled.",
280+
"[webpack-dev-server] Live Reloading enabled.",
281+
]
282+
`;
283+
284+
exports[`web socket server URL should work with "http2" option ("ws"): page errors 1`] = `Array []`;
285+
286+
exports[`web socket server URL should work with "https" option ("sockjs"): console messages 1`] = `
287+
Array [
288+
"[HMR] Waiting for update signal from WDS...",
289+
"Hey.",
290+
"[webpack-dev-server] Hot Module Replacement enabled.",
291+
"[webpack-dev-server] Live Reloading enabled.",
292+
]
293+
`;
294+
295+
exports[`web socket server URL should work with "https" option ("sockjs"): page errors 1`] = `Array []`;
296+
297+
exports[`web socket server URL should work with "https" option ("ws"): console messages 1`] = `
298+
Array [
299+
"[HMR] Waiting for update signal from WDS...",
300+
"Hey.",
301+
"[webpack-dev-server] Hot Module Replacement enabled.",
302+
"[webpack-dev-server] Live Reloading enabled.",
303+
]
304+
`;
305+
306+
exports[`web socket server URL should work with "https" option ("ws"): page errors 1`] = `Array []`;
307+
264308
exports[`web socket server URL should work with default "/ws" value of the "client.webSocketURL.pathname" option ("sockjs"): console messages 1`] = `
265309
Array [
266310
"[HMR] Waiting for update signal from WDS...",

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

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1939,6 +1939,134 @@ describe("web socket server URL", () => {
19391939
await server.stop();
19401940
});
19411941

1942+
it(`should work with "https" option ("${webSocketServer}")`, async () => {
1943+
const hostname = "127.0.0.1";
1944+
const compiler = webpack(config);
1945+
const devServerOptions = {
1946+
webSocketServer,
1947+
port: port1,
1948+
https: true,
1949+
};
1950+
const server = new Server(devServerOptions, compiler);
1951+
1952+
await server.start();
1953+
1954+
const { page, browser } = await runBrowser();
1955+
1956+
const pageErrors = [];
1957+
const consoleMessages = [];
1958+
1959+
page
1960+
.on("console", (message) => {
1961+
consoleMessages.push(message);
1962+
})
1963+
.on("pageerror", (error) => {
1964+
pageErrors.push(error);
1965+
});
1966+
1967+
const webSocketRequests = [];
1968+
1969+
if (webSocketServer === "ws") {
1970+
const client = page._client;
1971+
1972+
client.on("Network.webSocketCreated", (test) => {
1973+
webSocketRequests.push(test);
1974+
});
1975+
} else {
1976+
page.on("request", (request) => {
1977+
if (/\/ws\//.test(request.url())) {
1978+
webSocketRequests.push({ url: request.url() });
1979+
}
1980+
});
1981+
}
1982+
1983+
await page.goto(`https://${hostname}:${port1}/main`, {
1984+
waitUntil: "networkidle0",
1985+
});
1986+
1987+
const webSocketRequest = webSocketRequests[0];
1988+
1989+
if (webSocketServer === "ws") {
1990+
expect(webSocketRequest.url).toContain(`wss://${hostname}:${port1}/ws`);
1991+
} else {
1992+
expect(webSocketRequest.url).toContain(
1993+
`https://${hostname}:${port1}/ws`
1994+
);
1995+
}
1996+
1997+
expect(consoleMessages.map((message) => message.text())).toMatchSnapshot(
1998+
"console messages"
1999+
);
2000+
expect(pageErrors).toMatchSnapshot("page errors");
2001+
2002+
await browser.close();
2003+
await server.stop();
2004+
});
2005+
2006+
it(`should work with "http2" option ("${webSocketServer}")`, async () => {
2007+
const hostname = "127.0.0.1";
2008+
const compiler = webpack(config);
2009+
const devServerOptions = {
2010+
webSocketServer,
2011+
port: port1,
2012+
http2: true,
2013+
};
2014+
const server = new Server(devServerOptions, compiler);
2015+
2016+
await server.start();
2017+
2018+
const { page, browser } = await runBrowser();
2019+
2020+
const pageErrors = [];
2021+
const consoleMessages = [];
2022+
2023+
page
2024+
.on("console", (message) => {
2025+
consoleMessages.push(message);
2026+
})
2027+
.on("pageerror", (error) => {
2028+
pageErrors.push(error);
2029+
});
2030+
2031+
const webSocketRequests = [];
2032+
2033+
if (webSocketServer === "ws") {
2034+
const client = page._client;
2035+
2036+
client.on("Network.webSocketCreated", (test) => {
2037+
webSocketRequests.push(test);
2038+
});
2039+
} else {
2040+
page.on("request", (request) => {
2041+
if (/\/ws\//.test(request.url())) {
2042+
webSocketRequests.push({ url: request.url() });
2043+
}
2044+
});
2045+
}
2046+
2047+
await page.goto(`https://${hostname}:${port1}/main`, {
2048+
waitUntil: "networkidle0",
2049+
});
2050+
2051+
const webSocketRequest = webSocketRequests[0];
2052+
2053+
if (webSocketServer === "ws") {
2054+
expect(webSocketRequest.url).toContain(`wss://${hostname}:${port1}/ws`);
2055+
} else {
2056+
expect(webSocketRequest.url).toContain(
2057+
`https://${hostname}:${port1}/ws`
2058+
);
2059+
}
2060+
2061+
expect(consoleMessages.map((message) => message.text())).toMatchSnapshot(
2062+
"console messages"
2063+
);
2064+
expect(pageErrors).toMatchSnapshot("page errors");
2065+
2066+
await browser.close();
2067+
await server.stop();
2068+
});
2069+
19422070
it(`should work when "port" option is "auto" ("${webSocketServer}")`, async () => {
19432071
process.env.WEBPACK_DEV_SERVER_BASE_PORT = 50000;
19442072

0 commit comments

Comments
 (0)