Skip to content

Commit

Permalink
test: add e2e tests for setupMiddlewares option
Browse files Browse the repository at this point in the history
  • Loading branch information
snitin315 committed Dec 2, 2021
1 parent 23d2492 commit 34d8431
Show file tree
Hide file tree
Showing 4 changed files with 167 additions and 0 deletions.
21 changes: 21 additions & 0 deletions test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack4
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 test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack5
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"`;
124 changes: 124 additions & 0 deletions test/e2e/setup-middlewares.test.js
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");
});
});
1 change: 1 addition & 0 deletions test/ports-map.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ const listOfTests = {
"client-reconnect-option": 1,
"cli-server": 1,
"server-option": 1,
"setup-middlewares-option": 1,
};

let startPort = 8089;
Expand Down

0 comments on commit 34d8431

Please sign in to comment.