Skip to content

Commit d930302

Browse files
authored
test: add e2e tests for headers option (#3791)
1 parent 8ec3cc8 commit d930302

File tree

4 files changed

+328
-137
lines changed

4 files changed

+328
-137
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`headers option as a function should handle GET request with headers as a function: console messages 1`] = `Array []`;
4+
5+
exports[`headers option as a function should handle GET request with headers as a function: page errors 1`] = `Array []`;
6+
7+
exports[`headers option as a function should handle GET request with headers as a function: response headers x-bar 1`] = `
8+
"key1=value1
9+
key2=value2"
10+
`;
11+
12+
exports[`headers option as a function should handle GET request with headers as a function: response status 1`] = `200`;
13+
14+
exports[`headers option as a string should handle GET request with headers: console messages 1`] = `Array []`;
15+
16+
exports[`headers option as a string should handle GET request with headers: page errors 1`] = `Array []`;
17+
18+
exports[`headers option as a string should handle GET request with headers: response headers x-foo 1`] = `"dev-server headers"`;
19+
20+
exports[`headers option as a string should handle GET request with headers: response status 1`] = `200`;
21+
22+
exports[`headers option as an array should handle GET request with headers as an array: console messages 1`] = `Array []`;
23+
24+
exports[`headers option as an array should handle GET request with headers as an array: page errors 1`] = `Array []`;
25+
26+
exports[`headers option as an array should handle GET request with headers as an array: response headers x-bar 1`] = `
27+
"key1=value1
28+
key2=value2"
29+
`;
30+
31+
exports[`headers option as an array should handle GET request with headers as an array: response status 1`] = `200`;
32+
33+
exports[`headers option dev middleware headers take precedence for dev middleware output files should handle GET request with headers as a function: console messages 1`] = `Array []`;
34+
35+
exports[`headers option dev middleware headers take precedence for dev middleware output files should handle GET request with headers as a function: page errors 1`] = `Array []`;
36+
37+
exports[`headers option dev middleware headers take precedence for dev middleware output files should handle GET request with headers as a function: response headers x-foo 1`] = `"dev-middleware-headers"`;
38+
39+
exports[`headers option dev middleware headers take precedence for dev middleware output files should handle GET request with headers as a function: response status 1`] = `200`;
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`headers option as a function should handle GET request with headers as a function: console messages 1`] = `Array []`;
4+
5+
exports[`headers option as a function should handle GET request with headers as a function: page errors 1`] = `Array []`;
6+
7+
exports[`headers option as a function should handle GET request with headers as a function: response headers x-bar 1`] = `
8+
"key1=value1
9+
key2=value2"
10+
`;
11+
12+
exports[`headers option as a function should handle GET request with headers as a function: response status 1`] = `200`;
13+
14+
exports[`headers option as a string should handle GET request with headers: console messages 1`] = `Array []`;
15+
16+
exports[`headers option as a string should handle GET request with headers: page errors 1`] = `Array []`;
17+
18+
exports[`headers option as a string should handle GET request with headers: response headers x-foo 1`] = `"dev-server headers"`;
19+
20+
exports[`headers option as a string should handle GET request with headers: response status 1`] = `200`;
21+
22+
exports[`headers option as an array should handle GET request with headers as an array: console messages 1`] = `Array []`;
23+
24+
exports[`headers option as an array should handle GET request with headers as an array: page errors 1`] = `Array []`;
25+
26+
exports[`headers option as an array should handle GET request with headers as an array: response headers x-bar 1`] = `
27+
"key1=value1
28+
key2=value2"
29+
`;
30+
31+
exports[`headers option as an array should handle GET request with headers as an array: response status 1`] = `200`;
32+
33+
exports[`headers option dev middleware headers take precedence for dev middleware output files should handle GET request with headers as a function: console messages 1`] = `Array []`;
34+
35+
exports[`headers option dev middleware headers take precedence for dev middleware output files should handle GET request with headers as a function: page errors 1`] = `Array []`;
36+
37+
exports[`headers option dev middleware headers take precedence for dev middleware output files should handle GET request with headers as a function: response headers x-foo 1`] = `"dev-middleware-headers"`;
38+
39+
exports[`headers option dev middleware headers take precedence for dev middleware output files should handle GET request with headers as a function: response status 1`] = `200`;

test/e2e/headers.test.js

Lines changed: 250 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,250 @@
1+
"use strict";
2+
3+
const webpack = require("webpack");
4+
const Server = require("../../lib/Server");
5+
const config = require("../fixtures/simple-config/webpack.config");
6+
const runBrowser = require("../helpers/run-browser");
7+
const port = require("../ports-map")["headers-option"];
8+
9+
describe("headers option", () => {
10+
describe("as a string", () => {
11+
let compiler;
12+
let server;
13+
let page;
14+
let browser;
15+
let pageErrors;
16+
let consoleMessages;
17+
18+
beforeEach(async () => {
19+
compiler = webpack(config);
20+
21+
server = new Server(
22+
{
23+
headers: { "X-Foo": "dev-server headers" },
24+
port,
25+
},
26+
compiler
27+
);
28+
29+
await server.start();
30+
31+
({ page, browser } = await runBrowser());
32+
33+
pageErrors = [];
34+
consoleMessages = [];
35+
});
36+
37+
afterEach(async () => {
38+
await browser.close();
39+
await server.stop();
40+
});
41+
42+
it("should handle GET request with headers", async () => {
43+
page
44+
.on("console", (message) => {
45+
consoleMessages.push(message);
46+
})
47+
.on("pageerror", (error) => {
48+
pageErrors.push(error);
49+
});
50+
51+
const response = await page.goto(`http://127.0.0.1:${port}/main.js`, {
52+
waitUntil: "networkidle0",
53+
});
54+
55+
expect(response.headers()["x-foo"]).toMatchSnapshot(
56+
"response headers x-foo"
57+
);
58+
59+
expect(response.status()).toMatchSnapshot("response status");
60+
61+
expect(consoleMessages.map((message) => message.text())).toMatchSnapshot(
62+
"console messages"
63+
);
64+
65+
expect(pageErrors).toMatchSnapshot("page errors");
66+
});
67+
});
68+
69+
describe("as an array", () => {
70+
let compiler;
71+
let server;
72+
let page;
73+
let browser;
74+
let pageErrors;
75+
let consoleMessages;
76+
77+
beforeEach(async () => {
78+
compiler = webpack(config);
79+
80+
server = new Server(
81+
{
82+
headers: { "X-Bar": ["key1=value1", "key2=value2"] },
83+
port,
84+
},
85+
compiler
86+
);
87+
88+
await server.start();
89+
90+
({ page, browser } = await runBrowser());
91+
92+
pageErrors = [];
93+
consoleMessages = [];
94+
});
95+
96+
afterEach(async () => {
97+
await browser.close();
98+
await server.stop();
99+
});
100+
101+
it("should handle GET request with headers as an array", async () => {
102+
page
103+
.on("console", (message) => {
104+
consoleMessages.push(message);
105+
})
106+
.on("pageerror", (error) => {
107+
pageErrors.push(error);
108+
});
109+
110+
const response = await page.goto(`http://127.0.0.1:${port}/main.js`, {
111+
waitUntil: "networkidle0",
112+
});
113+
114+
expect(response.headers()["x-bar"]).toMatchSnapshot(
115+
"response headers x-bar"
116+
);
117+
118+
expect(response.status()).toMatchSnapshot("response status");
119+
120+
expect(consoleMessages.map((message) => message.text())).toMatchSnapshot(
121+
"console messages"
122+
);
123+
124+
expect(pageErrors).toMatchSnapshot("page errors");
125+
});
126+
});
127+
128+
describe("as a function", () => {
129+
let compiler;
130+
let server;
131+
let page;
132+
let browser;
133+
let pageErrors;
134+
let consoleMessages;
135+
136+
beforeEach(async () => {
137+
compiler = webpack(config);
138+
139+
server = new Server(
140+
{
141+
headers: () => {
142+
return { "X-Bar": ["key1=value1", "key2=value2"] };
143+
},
144+
port,
145+
},
146+
compiler
147+
);
148+
149+
await server.start();
150+
151+
({ page, browser } = await runBrowser());
152+
153+
pageErrors = [];
154+
consoleMessages = [];
155+
});
156+
157+
afterEach(async () => {
158+
await browser.close();
159+
await server.stop();
160+
});
161+
162+
it("should handle GET request with headers as a function", async () => {
163+
page
164+
.on("console", (message) => {
165+
consoleMessages.push(message);
166+
})
167+
.on("pageerror", (error) => {
168+
pageErrors.push(error);
169+
});
170+
171+
const response = await page.goto(`http://127.0.0.1:${port}/main.js`, {
172+
waitUntil: "networkidle0",
173+
});
174+
175+
expect(response.headers()["x-bar"]).toMatchSnapshot(
176+
"response headers x-bar"
177+
);
178+
179+
expect(response.status()).toMatchSnapshot("response status");
180+
181+
expect(consoleMessages.map((message) => message.text())).toMatchSnapshot(
182+
"console messages"
183+
);
184+
185+
expect(pageErrors).toMatchSnapshot("page errors");
186+
});
187+
});
188+
189+
describe("dev middleware headers take precedence for dev middleware output files", () => {
190+
let compiler;
191+
let server;
192+
let page;
193+
let browser;
194+
let pageErrors;
195+
let consoleMessages;
196+
197+
beforeEach(async () => {
198+
compiler = webpack(config);
199+
200+
server = new Server(
201+
{
202+
headers: { "X-Foo": "dev-server-headers" },
203+
devMiddleware: {
204+
headers: { "X-Foo": "dev-middleware-headers" },
205+
},
206+
port,
207+
},
208+
compiler
209+
);
210+
211+
await server.start();
212+
213+
({ page, browser } = await runBrowser());
214+
215+
pageErrors = [];
216+
consoleMessages = [];
217+
});
218+
219+
afterEach(async () => {
220+
await browser.close();
221+
await server.stop();
222+
});
223+
224+
it("should handle GET request with headers as a function", async () => {
225+
page
226+
.on("console", (message) => {
227+
consoleMessages.push(message);
228+
})
229+
.on("pageerror", (error) => {
230+
pageErrors.push(error);
231+
});
232+
233+
const response = await page.goto(`http://127.0.0.1:${port}/main.js`, {
234+
waitUntil: "networkidle0",
235+
});
236+
237+
expect(response.headers()["x-foo"]).toMatchSnapshot(
238+
"response headers x-foo"
239+
);
240+
241+
expect(response.status()).toMatchSnapshot("response status");
242+
243+
expect(consoleMessages.map((message) => message.text())).toMatchSnapshot(
244+
"console messages"
245+
);
246+
247+
expect(pageErrors).toMatchSnapshot("page errors");
248+
});
249+
});
250+
});

0 commit comments

Comments
 (0)