-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test: add e2e tests for
setupMiddlewares
option
- Loading branch information
Showing
4 changed files
with
167 additions
and
0 deletions.
There are no files selected for viewing
21 changes: 21 additions & 0 deletions
21
test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
// Jest Snapshot v1, https://goo.gl/fbAQLP | ||
|
||
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: console messages 1`] = `Array []`; | ||
|
||
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: page errors 1`] = `Array []`; | ||
|
||
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response headers content-type 1`] = `"text/html; charset=utf-8"`; | ||
|
||
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response status 1`] = `200`; | ||
|
||
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response text 1`] = `"setup-middlewares option GET"`; | ||
|
||
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: console messages 1`] = `Array []`; | ||
|
||
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: page errors 1`] = `Array []`; | ||
|
||
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: response headers content-type 1`] = `"text/html; charset=utf-8"`; | ||
|
||
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: response status 1`] = `200`; | ||
|
||
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: response text 1`] = `"setup-middlewares option POST"`; |
21 changes: 21 additions & 0 deletions
21
test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
// Jest Snapshot v1, https://goo.gl/fbAQLP | ||
|
||
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: console messages 1`] = `Array []`; | ||
|
||
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: page errors 1`] = `Array []`; | ||
|
||
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response headers content-type 1`] = `"text/html; charset=utf-8"`; | ||
|
||
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response status 1`] = `200`; | ||
|
||
exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response text 1`] = `"setup-middlewares option GET"`; | ||
|
||
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: console messages 1`] = `Array []`; | ||
|
||
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: page errors 1`] = `Array []`; | ||
|
||
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: response headers content-type 1`] = `"text/html; charset=utf-8"`; | ||
|
||
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: response status 1`] = `200`; | ||
|
||
exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: response text 1`] = `"setup-middlewares option POST"`; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
"use strict"; | ||
|
||
const webpack = require("webpack"); | ||
const Server = require("../../lib/Server"); | ||
const config = require("../fixtures/client-config/webpack.config"); | ||
const runBrowser = require("../helpers/run-browser"); | ||
const port = require("../ports-map")["setup-middlewares-option"]; | ||
|
||
describe("setupMiddlewares option", () => { | ||
let compiler; | ||
let server; | ||
let page; | ||
let browser; | ||
let pageErrors; | ||
let consoleMessages; | ||
|
||
beforeEach(async () => { | ||
compiler = webpack(config); | ||
server = new Server( | ||
{ | ||
setupMiddlewares: (middlewares, devServer) => { | ||
if (!devServer) { | ||
throw new Error("webpack-dev-server is not defined"); | ||
} | ||
|
||
const sendResponses = (server) => { | ||
server.app.get("/setup-middleware/some/path", (_, response) => { | ||
response.send("setup-middlewares option GET"); | ||
}); | ||
|
||
server.app.post("/setup-middleware/some/path", (_, response) => { | ||
response.send("setup-middlewares option POST"); | ||
}); | ||
}; | ||
|
||
middlewares.push(sendResponses(devServer)); | ||
|
||
return middlewares; | ||
}, | ||
port, | ||
}, | ||
compiler | ||
); | ||
|
||
await server.start(); | ||
|
||
({ page, browser } = await runBrowser()); | ||
|
||
pageErrors = []; | ||
consoleMessages = []; | ||
}); | ||
|
||
afterEach(async () => { | ||
await browser.close(); | ||
await server.stop(); | ||
}); | ||
|
||
it("should handle GET request to /setup-middleware/some/path route", async () => { | ||
page | ||
.on("console", (message) => { | ||
consoleMessages.push(message); | ||
}) | ||
.on("pageerror", (error) => { | ||
pageErrors.push(error); | ||
}); | ||
|
||
const response = await page.goto( | ||
`http://127.0.0.1:${port}/setup-middleware/some/path`, | ||
{ | ||
waitUntil: "networkidle0", | ||
} | ||
); | ||
|
||
expect(response.headers()["content-type"]).toMatchSnapshot( | ||
"response headers content-type" | ||
); | ||
|
||
expect(response.status()).toMatchSnapshot("response status"); | ||
|
||
expect(await response.text()).toMatchSnapshot("response text"); | ||
|
||
expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( | ||
"console messages" | ||
); | ||
|
||
expect(pageErrors).toMatchSnapshot("page errors"); | ||
}); | ||
|
||
it("should handle POST request to /setup-middleware/some/path route", async () => { | ||
await page.setRequestInterception(true); | ||
|
||
page | ||
.on("console", (message) => { | ||
consoleMessages.push(message); | ||
}) | ||
.on("pageerror", (error) => { | ||
pageErrors.push(error); | ||
}) | ||
.on("request", (interceptedRequest) => { | ||
interceptedRequest.continue({ method: "POST" }); | ||
}); | ||
|
||
const response = await page.goto( | ||
`http://127.0.0.1:${port}/setup-middleware/some/path`, | ||
{ | ||
waitUntil: "networkidle0", | ||
} | ||
); | ||
|
||
expect(response.headers()["content-type"]).toMatchSnapshot( | ||
"response headers content-type" | ||
); | ||
|
||
expect(response.status()).toMatchSnapshot("response status"); | ||
|
||
expect(await response.text()).toMatchSnapshot("response text"); | ||
|
||
expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( | ||
"console messages" | ||
); | ||
|
||
expect(pageErrors).toMatchSnapshot("page errors"); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters