Skip to content

Commit f0d6811

Browse files
snitin315alexander-akait
authored andcommitted
test: add e2e tests for setupMiddlewares option
1 parent 3ff6405 commit f0d6811

File tree

4 files changed

+167
-0
lines changed

4 files changed

+167
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: console messages 1`] = `Array []`;
4+
5+
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: page errors 1`] = `Array []`;
6+
7+
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response headers content-type 1`] = `"text/html; charset=utf-8"`;
8+
9+
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response status 1`] = `200`;
10+
11+
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response text 1`] = `"setup-middlewares option GET"`;
12+
13+
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: console messages 1`] = `Array []`;
14+
15+
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: page errors 1`] = `Array []`;
16+
17+
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: response headers content-type 1`] = `"text/html; charset=utf-8"`;
18+
19+
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: response status 1`] = `200`;
20+
21+
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: response text 1`] = `"setup-middlewares option POST"`;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: console messages 1`] = `Array []`;
4+
5+
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: page errors 1`] = `Array []`;
6+
7+
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response headers content-type 1`] = `"text/html; charset=utf-8"`;
8+
9+
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response status 1`] = `200`;
10+
11+
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response text 1`] = `"setup-middlewares option GET"`;
12+
13+
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: console messages 1`] = `Array []`;
14+
15+
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: page errors 1`] = `Array []`;
16+
17+
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: response headers content-type 1`] = `"text/html; charset=utf-8"`;
18+
19+
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: response status 1`] = `200`;
20+
21+
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: response text 1`] = `"setup-middlewares option POST"`;

test/e2e/setup-middlewares.test.js

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
"use strict";
2+
3+
const webpack = require("webpack");
4+
const Server = require("../../lib/Server");
5+
const config = require("../fixtures/client-config/webpack.config");
6+
const runBrowser = require("../helpers/run-browser");
7+
const port = require("../ports-map")["setup-middlewares-option"];
8+
9+
describe("setupMiddlewares option", () => {
10+
let compiler;
11+
let server;
12+
let page;
13+
let browser;
14+
let pageErrors;
15+
let consoleMessages;
16+
17+
beforeEach(async () => {
18+
compiler = webpack(config);
19+
server = new Server(
20+
{
21+
setupMiddlewares: (middlewares, devServer) => {
22+
if (!devServer) {
23+
throw new Error("webpack-dev-server is not defined");
24+
}
25+
26+
const sendResponses = (server) => {
27+
server.app.get("/setup-middleware/some/path", (_, response) => {
28+
response.send("setup-middlewares option GET");
29+
});
30+
31+
server.app.post("/setup-middleware/some/path", (_, response) => {
32+
response.send("setup-middlewares option POST");
33+
});
34+
};
35+
36+
middlewares.push(sendResponses(devServer));
37+
38+
return middlewares;
39+
},
40+
port,
41+
},
42+
compiler
43+
);
44+
45+
await server.start();
46+
47+
({ page, browser } = await runBrowser());
48+
49+
pageErrors = [];
50+
consoleMessages = [];
51+
});
52+
53+
afterEach(async () => {
54+
await browser.close();
55+
await server.stop();
56+
});
57+
58+
it("should handle GET request to /setup-middleware/some/path route", async () => {
59+
page
60+
.on("console", (message) => {
61+
consoleMessages.push(message);
62+
})
63+
.on("pageerror", (error) => {
64+
pageErrors.push(error);
65+
});
66+
67+
const response = await page.goto(
68+
`http://127.0.0.1:${port}/setup-middleware/some/path`,
69+
{
70+
waitUntil: "networkidle0",
71+
}
72+
);
73+
74+
expect(response.headers()["content-type"]).toMatchSnapshot(
75+
"response headers content-type"
76+
);
77+
78+
expect(response.status()).toMatchSnapshot("response status");
79+
80+
expect(await response.text()).toMatchSnapshot("response text");
81+
82+
expect(consoleMessages.map((message) => message.text())).toMatchSnapshot(
83+
"console messages"
84+
);
85+
86+
expect(pageErrors).toMatchSnapshot("page errors");
87+
});
88+
89+
it("should handle POST request to /setup-middleware/some/path route", async () => {
90+
await page.setRequestInterception(true);
91+
92+
page
93+
.on("console", (message) => {
94+
consoleMessages.push(message);
95+
})
96+
.on("pageerror", (error) => {
97+
pageErrors.push(error);
98+
})
99+
.on("request", (interceptedRequest) => {
100+
interceptedRequest.continue({ method: "POST" });
101+
});
102+
103+
const response = await page.goto(
104+
`http://127.0.0.1:${port}/setup-middleware/some/path`,
105+
{
106+
waitUntil: "networkidle0",
107+
}
108+
);
109+
110+
expect(response.headers()["content-type"]).toMatchSnapshot(
111+
"response headers content-type"
112+
);
113+
114+
expect(response.status()).toMatchSnapshot("response status");
115+
116+
expect(await response.text()).toMatchSnapshot("response text");
117+
118+
expect(consoleMessages.map((message) => message.text())).toMatchSnapshot(
119+
"console messages"
120+
);
121+
122+
expect(pageErrors).toMatchSnapshot("page errors");
123+
});
124+
});

test/ports-map.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ const listOfTests = {
7878
"cli-server": 1,
7979
"server-option": 1,
8080
"normalize-option": 1,
81+
"setup-middlewares-option": 1,
8182
};
8283

8384
let startPort = 8089;

0 commit comments

Comments
 (0)