From 00e4c8e19c8345602d02ad6fe5d01e1a70266b0c Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Mon, 13 Sep 2021 19:58:17 +0300 Subject: [PATCH 01/14] fix: reloading logic for multi compiler mode --- client-src/index.js | 1 + client-src/utils/reloadApp.js | 17 ++--------------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/client-src/index.js b/client-src/index.js index 63251d7992..eb2ff4bc1d 100644 --- a/client-src/index.js +++ b/client-src/index.js @@ -87,6 +87,7 @@ const onSocketMessage = { sendMessage("Invalid"); }, hash(hash) { + status.previousHash = status.currentHash; status.currentHash = hash; }, logging: setAllLogLevel, diff --git a/client-src/utils/reloadApp.js b/client-src/utils/reloadApp.js index adc976b20a..8dfbffde3d 100644 --- a/client-src/utils/reloadApp.js +++ b/client-src/utils/reloadApp.js @@ -8,23 +8,10 @@ function reloadApp({ hot, liveReload }, status) { return; } - // TODO Workaround for webpack v4, `__webpack_hash__` is not replaced without HotModuleReplacement plugin - const webpackHash = - // eslint-disable-next-line camelcase - typeof __webpack_hash__ !== "undefined" - ? // eslint-disable-next-line camelcase - __webpack_hash__ - : status.previousHash || ""; - const isInitial = status.currentHash.indexOf(webpackHash) >= 0; + const { currentHash, previousHash } = status; + const isInitial = currentHash.indexOf(previousHash) >= 0; if (isInitial) { - const isLegacyInitial = - webpackHash === "" && hot === false && liveReload === true; - - if (isLegacyInitial) { - status.previousHash = status.currentHash; - } - return; } From 1e72dd9b1da28d22993adb6038e04039caa27fe6 Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Mon, 13 Sep 2021 21:37:14 +0300 Subject: [PATCH 02/14] test: more --- .../multi-compiler.test.js.snap.webpack4 | 10 +++ .../multi-compiler.test.js.snap.webpack5 | 10 +++ test/e2e/multi-compiler.test.js | 83 +++++++++++++++++++ .../multi-compiler-two-configurations/one.js | 1 + .../multi-compiler-two-configurations/two.js | 1 + 5 files changed, 105 insertions(+) diff --git a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 index 5b7650e8a4..827c5edbc6 100644 --- a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 +++ b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 @@ -57,6 +57,10 @@ exports[`multi compiler should work with two web target configurations with only Array [ "one", "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", + "one", + "[webpack-dev-server] Live Reloading enabled.", ] `; @@ -64,6 +68,8 @@ exports[`multi compiler should work with two web target configurations with only Array [ "two", "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", ] `; @@ -96,6 +102,10 @@ exports[`multi compiler should work with universal configurations with only live Array [ "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", + "Hello from the browser", + "[webpack-dev-server] Live Reloading enabled.", ] `; diff --git a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 index 5b7650e8a4..827c5edbc6 100644 --- a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 @@ -57,6 +57,10 @@ exports[`multi compiler should work with two web target configurations with only Array [ "one", "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", + "one", + "[webpack-dev-server] Live Reloading enabled.", ] `; @@ -64,6 +68,8 @@ exports[`multi compiler should work with two web target configurations with only Array [ "two", "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", ] `; @@ -96,6 +102,10 @@ exports[`multi compiler should work with universal configurations with only live Array [ "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", + "Hello from the browser", + "[webpack-dev-server] Live Reloading enabled.", ] `; diff --git a/test/e2e/multi-compiler.test.js b/test/e2e/multi-compiler.test.js index b4e5749afe..2c59b638c8 100644 --- a/test/e2e/multi-compiler.test.js +++ b/test/e2e/multi-compiler.test.js @@ -1,5 +1,7 @@ "use strict"; +const path = require("path"); +const fs = require("graceful-fs"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const oneWebTargetConfiguration = require("../fixtures/multi-compiler-one-configuration/webpack.config"); @@ -139,6 +141,16 @@ describe("multi compiler", () => { hot: false, liveReload: true, }; + const pathToOneEntry = path.resolve( + __dirname, + "../fixtures/multi-compiler-two-configurations/one.js" + ); + const originalOneEntryContent = fs.readFileSync(pathToOneEntry); + const pathToTwoEntry = path.resolve( + __dirname, + "../fixtures/multi-compiler-two-configurations/two.js" + ); + const originalTwoEntryContent = fs.readFileSync(pathToTwoEntry); const server = new Server(devServerOptions, compiler); @@ -157,10 +169,30 @@ describe("multi compiler", () => { pageErrors.push(error); }); + // Change own entry for the `one` configuration await pageOne.goto(`http://127.0.0.1:${port}/one-main`, { waitUntil: "networkidle0", }); + fs.writeFileSync(pathToOneEntry, `${originalOneEntryContent}// comment`); + + await new Promise((resolve) => { + const interval = setInterval(() => { + if ( + consoleMessages.includes( + "[webpack-dev-server] App updated. Reloading..." + ) && + consoleMessages.includes( + "[webpack-dev-server] Live Reloading enabled." + ) + ) { + clearInterval(interval); + + resolve(); + } + }, 100); + }); + expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); @@ -171,9 +203,31 @@ describe("multi compiler", () => { waitUntil: "networkidle0", }); + fs.writeFileSync(pathToTwoEntry, `${originalTwoEntryContent}// comment`); + + await new Promise((resolve) => { + const interval = setInterval(() => { + if ( + consoleMessages.includes( + "[webpack-dev-server] App updated. Reloading..." + ) && + consoleMessages.includes( + "[webpack-dev-server] Live Reloading enabled." + ) + ) { + clearInterval(interval); + + resolve(); + } + }, 100); + }); + expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); + fs.writeFileSync(pathToOneEntry, originalOneEntryContent); + fs.writeFileSync(pathToTwoEntry, originalTwoEntryContent); + await browser.close(); await server.stop(); }); @@ -278,6 +332,11 @@ describe("multi compiler", () => { liveReload: true, }; const server = new Server(devServerOptions, compiler); + const pathToBrowserEntry = path.resolve( + __dirname, + "../fixtures/universal-compiler-config/browser.js" + ); + const originalBrowserEntryContent = fs.readFileSync(pathToBrowserEntry); await server.start(); @@ -298,6 +357,28 @@ describe("multi compiler", () => { waitUntil: "networkidle0", }); + fs.writeFileSync( + pathToBrowserEntry, + `${originalBrowserEntryContent}// comment` + ); + + await new Promise((resolve) => { + const interval = setInterval(() => { + if ( + consoleMessages.includes( + "[webpack-dev-server] App updated. Reloading..." + ) && + consoleMessages.includes( + "[webpack-dev-server] Live Reloading enabled." + ) + ) { + clearInterval(interval); + + resolve(); + } + }, 100); + }); + expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); @@ -313,6 +394,8 @@ describe("multi compiler", () => { expect(serverResponseText).toContain("Hello from the server"); expect(serverResponseText).not.toContain("WebsocketServer"); + fs.writeFileSync(pathToBrowserEntry, originalBrowserEntryContent); + await browser.close(); await server.stop(); }); diff --git a/test/fixtures/multi-compiler-two-configurations/one.js b/test/fixtures/multi-compiler-two-configurations/one.js index e767ff32f1..21aaff9181 100644 --- a/test/fixtures/multi-compiler-two-configurations/one.js +++ b/test/fixtures/multi-compiler-two-configurations/one.js @@ -1,3 +1,4 @@ "use strict"; console.log("one"); +// comment diff --git a/test/fixtures/multi-compiler-two-configurations/two.js b/test/fixtures/multi-compiler-two-configurations/two.js index 83bf26e4bb..213a03b319 100644 --- a/test/fixtures/multi-compiler-two-configurations/two.js +++ b/test/fixtures/multi-compiler-two-configurations/two.js @@ -1,3 +1,4 @@ "use strict"; console.log("two"); +// comment From c3486ae66ae20ce16d97daac471bcf8e04886aa2 Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Mon, 13 Sep 2021 23:19:02 +0300 Subject: [PATCH 03/14] test: more --- .../multi-compiler.test.js.snap.webpack4 | 206 ++++++- .../multi-compiler.test.js.snap.webpack5 | 206 ++++++- test/e2e/multi-compiler.test.js | 522 ++++++++++++++++-- .../multi-compiler-two-configurations/one.js | 1 + .../universal-compiler-config/browser.js | 1 + .../universal-compiler-config/server.js | 1 + .../webpack.config.js | 3 + 7 files changed, 851 insertions(+), 89 deletions(-) diff --git a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 index 827c5edbc6..42e928db7b 100644 --- a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 +++ b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 @@ -11,102 +11,252 @@ Array [ exports[`multi compiler should work with one web target configuration: page errors 1`] = `Array []`; -exports[`multi compiler should work with two web target configurations with hot and live reload: console messages 1`] = ` +exports[`multi compiler should work with universal configuration and do nothing: console messages 1`] = ` Array [ "[HMR] Waiting for update signal from WDS...", - "one", + "Hello from the browser", "[webpack-dev-server] Hot Module Replacement enabled.", "[webpack-dev-server] Live Reloading enabled.", ] `; -exports[`multi compiler should work with two web target configurations with hot and live reload: console messages 2`] = ` +exports[`multi compiler should work with universal configuration and do nothing: page errors 1`] = `Array []`; + +exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compile by default when browser entry changed: console messages 1`] = ` Array [ "[HMR] Waiting for update signal from WDS...", - "two", + "Hello from the browser", + "[webpack-dev-server] Hot Module Replacement enabled.", + "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App hot update...", + "[HMR] Checking for updates on the server...", + "[webpack-dev-server] App updated. Recompiling...", + "[HMR] Cannot apply update. Need to do a full reload!", + "[HMR] Error: Aborted because ./browser.js is not accepted +Update propagation: ./browser.js + ", + "[HMR] Waiting for update signal from WDS...", + "Hello from the browser", "[webpack-dev-server] Hot Module Replacement enabled.", "[webpack-dev-server] Live Reloading enabled.", ] `; -exports[`multi compiler should work with two web target configurations with hot and live reload: page errors 1`] = `Array []`; +exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compile by default when browser entry changed: console messages 2`] = `Array []`; + +exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compile by default when browser entry changed: page errors 1`] = `Array []`; -exports[`multi compiler should work with two web target configurations with hot and live reload: page errors 2`] = `Array []`; +exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compile by default when browser entry changed: page errors 2`] = `Array []`; -exports[`multi compiler should work with two web target configurations with only hot reload: console messages 1`] = ` +exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry: console messages 1`] = ` +Array [ + "[HMR] Waiting for update signal from WDS...", + "Hello from the browser", + "[webpack-dev-server] Hot Module Replacement enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App hot update...", + "[HMR] Checking for updates on the server...", + "[webpack-dev-server] App updated. Recompiling...", + "[HMR] Cannot apply update. Need to do a full reload!", + "[HMR] Error: Aborted because ./browser.js is not accepted +Update propagation: ./browser.js + at applyHandler (http://127.0.0.1:8103/browser.js:1094:31) + at http://127.0.0.1:8103/browser.js:794:21 + at Array.map () + at internalApply (http://127.0.0.1:8103/browser.js:793:54) + at http://127.0.0.1:8103/browser.js:767:26 + at waitForBlockingPromises (http://127.0.0.1:8103/browser.js:720:55) + at http://127.0.0.1:8103/browser.js:765:24", + "[HMR] Waiting for update signal from WDS...", + "Hello from the browser", + "[webpack-dev-server] Hot Module Replacement enabled.", +] +`; + +exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry: page errors 1`] = `Array []`; + +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing entries: console messages 1`] = ` +Array [ + "Hello from the browser", + "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", + "Hello from the browser", + "[webpack-dev-server] Live Reloading enabled.", +] +`; + +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing entries: console messages 2`] = ` +Array [ + "Hello from the browser", + "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", + "Hello from the browser", + "[webpack-dev-server] Live Reloading enabled.", +] +`; + +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing entries: page errors 1`] = `Array []`; + +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing entries: page errors 2`] = `Array []`; + +exports[`multi compiler should work with web target configurations and do nothing: console messages 1`] = ` Array [ "[HMR] Waiting for update signal from WDS...", "one", "[webpack-dev-server] Hot Module Replacement enabled.", + "[webpack-dev-server] Live Reloading enabled.", ] `; -exports[`multi compiler should work with two web target configurations with only hot reload: console messages 2`] = ` +exports[`multi compiler should work with web target configurations and do nothing: console messages 2`] = ` Array [ "[HMR] Waiting for update signal from WDS...", "two", "[webpack-dev-server] Hot Module Replacement enabled.", + "[webpack-dev-server] Live Reloading enabled.", ] `; -exports[`multi compiler should work with two web target configurations with only hot reload: page errors 1`] = `Array []`; +exports[`multi compiler should work with web target configurations and do nothing: page errors 1`] = `Array []`; -exports[`multi compiler should work with two web target configurations with only hot reload: page errors 2`] = `Array []`; +exports[`multi compiler should work with web target configurations and do nothing: page errors 2`] = `Array []`; -exports[`multi compiler should work with two web target configurations with only live reload: console messages 1`] = ` +exports[`multi compiler should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries: console messages 1`] = ` Array [ + "[HMR] Waiting for update signal from WDS...", "one", + "[webpack-dev-server] Hot Module Replacement enabled.", "[webpack-dev-server] Live Reloading enabled.", "[webpack-dev-server] App updated. Recompiling...", - "[webpack-dev-server] App updated. Reloading...", + "[webpack-dev-server] App hot update...", + "[HMR] Checking for updates on the server...", + "[HMR] Cannot apply update. Need to do a full reload!", + "[HMR] Error: Aborted because ./one.js is not accepted +Update propagation: ./one.js + ", + "[HMR] Waiting for update signal from WDS...", "one", + "[webpack-dev-server] Hot Module Replacement enabled.", "[webpack-dev-server] Live Reloading enabled.", ] `; -exports[`multi compiler should work with two web target configurations with only live reload: console messages 2`] = ` +exports[`multi compiler should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries: console messages 2`] = ` Array [ + "[HMR] Waiting for update signal from WDS...", "two", + "[webpack-dev-server] Hot Module Replacement enabled.", "[webpack-dev-server] Live Reloading enabled.", "[webpack-dev-server] App updated. Recompiling...", - "[webpack-dev-server] App updated. Reloading...", + "[webpack-dev-server] App hot update...", + "[HMR] Checking for updates on the server...", + "[HMR] Cannot apply update. Need to do a full reload!", + "[HMR] Error: Aborted because ./two.js is not accepted +Update propagation: ./two.js + ", + "[HMR] Waiting for update signal from WDS...", + "two", + "[webpack-dev-server] Hot Module Replacement enabled.", + "[webpack-dev-server] Live Reloading enabled.", ] `; -exports[`multi compiler should work with two web target configurations with only live reload: page errors 1`] = `Array []`; +exports[`multi compiler should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries: page errors 1`] = `Array []`; -exports[`multi compiler should work with two web target configurations with only live reload: page errors 2`] = `Array []`; +exports[`multi compiler should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries: page errors 2`] = `Array []`; -exports[`multi compiler should work with universal configurations with hot and live reload: console messages 1`] = ` +exports[`multi compiler should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries: console messages 1`] = ` Array [ "[HMR] Waiting for update signal from WDS...", - "Hello from the browser", + "one", + "[webpack-dev-server] Hot Module Replacement enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App hot update...", + "[HMR] Checking for updates on the server...", + "[HMR] Cannot apply update. Need to do a full reload!", + "[HMR] Error: Aborted because ./one.js is not accepted +Update propagation: ./one.js + ", + "[HMR] Waiting for update signal from WDS...", + "one", "[webpack-dev-server] Hot Module Replacement enabled.", - "[webpack-dev-server] Live Reloading enabled.", ] `; -exports[`multi compiler should work with universal configurations with hot and live reload: page errors 1`] = `Array []`; - -exports[`multi compiler should work with universal configurations with only hot reload: console messages 1`] = ` +exports[`multi compiler should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries: console messages 2`] = ` Array [ "[HMR] Waiting for update signal from WDS...", - "Hello from the browser", + "two", + "[webpack-dev-server] Hot Module Replacement enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App hot update...", + "[HMR] Checking for updates on the server...", + "[HMR] Cannot apply update. Need to do a full reload!", + "[HMR] Error: Aborted because ./two.js is not accepted +Update propagation: ./two.js + ", + "[HMR] Waiting for update signal from WDS...", + "two", "[webpack-dev-server] Hot Module Replacement enabled.", ] `; -exports[`multi compiler should work with universal configurations with only hot reload: page errors 1`] = `Array []`; +exports[`multi compiler should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries: page errors 1`] = `Array []`; -exports[`multi compiler should work with universal configurations with only live reload: console messages 1`] = ` +exports[`multi compiler should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries: page errors 2`] = `Array []`; + +exports[`multi compiler should work with web target configurations when only live reload is enabled and do live reload when changing other entries: console messages 1`] = ` Array [ - "Hello from the browser", + "one", "[webpack-dev-server] Live Reloading enabled.", "[webpack-dev-server] App updated. Recompiling...", "[webpack-dev-server] App updated. Reloading...", - "Hello from the browser", + "one", "[webpack-dev-server] Live Reloading enabled.", ] `; -exports[`multi compiler should work with universal configurations with only live reload: page errors 1`] = `Array []`; +exports[`multi compiler should work with web target configurations when only live reload is enabled and do live reload when changing other entries: console messages 2`] = ` +Array [ + "two", + "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", + "two", + "[webpack-dev-server] Live Reloading enabled.", +] +`; + +exports[`multi compiler should work with web target configurations when only live reload is enabled and do live reload when changing other entries: page errors 1`] = `Array []`; + +exports[`multi compiler should work with web target configurations when only live reload is enabled and do live reload when changing other entries: page errors 2`] = `Array []`; + +exports[`multi compiler should work with web target configurations when only live reload is enabled, and do live reload when changing own entries: console messages 1`] = ` +Array [ + "one", + "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", + "one", + "[webpack-dev-server] Live Reloading enabled.", +] +`; + +exports[`multi compiler should work with web target configurations when only live reload is enabled, and do live reload when changing own entries: console messages 2`] = ` +Array [ + "two", + "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", + "two", + "[webpack-dev-server] Live Reloading enabled.", +] +`; + +exports[`multi compiler should work with web target configurations when only live reload is enabled, and do live reload when changing own entries: page errors 1`] = `Array []`; + +exports[`multi compiler should work with web target configurations when only live reload is enabled, and do live reload when changing own entries: page errors 2`] = `Array []`; diff --git a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 index 827c5edbc6..42e928db7b 100644 --- a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 @@ -11,102 +11,252 @@ Array [ exports[`multi compiler should work with one web target configuration: page errors 1`] = `Array []`; -exports[`multi compiler should work with two web target configurations with hot and live reload: console messages 1`] = ` +exports[`multi compiler should work with universal configuration and do nothing: console messages 1`] = ` Array [ "[HMR] Waiting for update signal from WDS...", - "one", + "Hello from the browser", "[webpack-dev-server] Hot Module Replacement enabled.", "[webpack-dev-server] Live Reloading enabled.", ] `; -exports[`multi compiler should work with two web target configurations with hot and live reload: console messages 2`] = ` +exports[`multi compiler should work with universal configuration and do nothing: page errors 1`] = `Array []`; + +exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compile by default when browser entry changed: console messages 1`] = ` Array [ "[HMR] Waiting for update signal from WDS...", - "two", + "Hello from the browser", + "[webpack-dev-server] Hot Module Replacement enabled.", + "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App hot update...", + "[HMR] Checking for updates on the server...", + "[webpack-dev-server] App updated. Recompiling...", + "[HMR] Cannot apply update. Need to do a full reload!", + "[HMR] Error: Aborted because ./browser.js is not accepted +Update propagation: ./browser.js + ", + "[HMR] Waiting for update signal from WDS...", + "Hello from the browser", "[webpack-dev-server] Hot Module Replacement enabled.", "[webpack-dev-server] Live Reloading enabled.", ] `; -exports[`multi compiler should work with two web target configurations with hot and live reload: page errors 1`] = `Array []`; +exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compile by default when browser entry changed: console messages 2`] = `Array []`; + +exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compile by default when browser entry changed: page errors 1`] = `Array []`; -exports[`multi compiler should work with two web target configurations with hot and live reload: page errors 2`] = `Array []`; +exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compile by default when browser entry changed: page errors 2`] = `Array []`; -exports[`multi compiler should work with two web target configurations with only hot reload: console messages 1`] = ` +exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry: console messages 1`] = ` +Array [ + "[HMR] Waiting for update signal from WDS...", + "Hello from the browser", + "[webpack-dev-server] Hot Module Replacement enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App hot update...", + "[HMR] Checking for updates on the server...", + "[webpack-dev-server] App updated. Recompiling...", + "[HMR] Cannot apply update. Need to do a full reload!", + "[HMR] Error: Aborted because ./browser.js is not accepted +Update propagation: ./browser.js + at applyHandler (http://127.0.0.1:8103/browser.js:1094:31) + at http://127.0.0.1:8103/browser.js:794:21 + at Array.map () + at internalApply (http://127.0.0.1:8103/browser.js:793:54) + at http://127.0.0.1:8103/browser.js:767:26 + at waitForBlockingPromises (http://127.0.0.1:8103/browser.js:720:55) + at http://127.0.0.1:8103/browser.js:765:24", + "[HMR] Waiting for update signal from WDS...", + "Hello from the browser", + "[webpack-dev-server] Hot Module Replacement enabled.", +] +`; + +exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry: page errors 1`] = `Array []`; + +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing entries: console messages 1`] = ` +Array [ + "Hello from the browser", + "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", + "Hello from the browser", + "[webpack-dev-server] Live Reloading enabled.", +] +`; + +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing entries: console messages 2`] = ` +Array [ + "Hello from the browser", + "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", + "Hello from the browser", + "[webpack-dev-server] Live Reloading enabled.", +] +`; + +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing entries: page errors 1`] = `Array []`; + +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing entries: page errors 2`] = `Array []`; + +exports[`multi compiler should work with web target configurations and do nothing: console messages 1`] = ` Array [ "[HMR] Waiting for update signal from WDS...", "one", "[webpack-dev-server] Hot Module Replacement enabled.", + "[webpack-dev-server] Live Reloading enabled.", ] `; -exports[`multi compiler should work with two web target configurations with only hot reload: console messages 2`] = ` +exports[`multi compiler should work with web target configurations and do nothing: console messages 2`] = ` Array [ "[HMR] Waiting for update signal from WDS...", "two", "[webpack-dev-server] Hot Module Replacement enabled.", + "[webpack-dev-server] Live Reloading enabled.", ] `; -exports[`multi compiler should work with two web target configurations with only hot reload: page errors 1`] = `Array []`; +exports[`multi compiler should work with web target configurations and do nothing: page errors 1`] = `Array []`; -exports[`multi compiler should work with two web target configurations with only hot reload: page errors 2`] = `Array []`; +exports[`multi compiler should work with web target configurations and do nothing: page errors 2`] = `Array []`; -exports[`multi compiler should work with two web target configurations with only live reload: console messages 1`] = ` +exports[`multi compiler should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries: console messages 1`] = ` Array [ + "[HMR] Waiting for update signal from WDS...", "one", + "[webpack-dev-server] Hot Module Replacement enabled.", "[webpack-dev-server] Live Reloading enabled.", "[webpack-dev-server] App updated. Recompiling...", - "[webpack-dev-server] App updated. Reloading...", + "[webpack-dev-server] App hot update...", + "[HMR] Checking for updates on the server...", + "[HMR] Cannot apply update. Need to do a full reload!", + "[HMR] Error: Aborted because ./one.js is not accepted +Update propagation: ./one.js + ", + "[HMR] Waiting for update signal from WDS...", "one", + "[webpack-dev-server] Hot Module Replacement enabled.", "[webpack-dev-server] Live Reloading enabled.", ] `; -exports[`multi compiler should work with two web target configurations with only live reload: console messages 2`] = ` +exports[`multi compiler should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries: console messages 2`] = ` Array [ + "[HMR] Waiting for update signal from WDS...", "two", + "[webpack-dev-server] Hot Module Replacement enabled.", "[webpack-dev-server] Live Reloading enabled.", "[webpack-dev-server] App updated. Recompiling...", - "[webpack-dev-server] App updated. Reloading...", + "[webpack-dev-server] App hot update...", + "[HMR] Checking for updates on the server...", + "[HMR] Cannot apply update. Need to do a full reload!", + "[HMR] Error: Aborted because ./two.js is not accepted +Update propagation: ./two.js + ", + "[HMR] Waiting for update signal from WDS...", + "two", + "[webpack-dev-server] Hot Module Replacement enabled.", + "[webpack-dev-server] Live Reloading enabled.", ] `; -exports[`multi compiler should work with two web target configurations with only live reload: page errors 1`] = `Array []`; +exports[`multi compiler should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries: page errors 1`] = `Array []`; -exports[`multi compiler should work with two web target configurations with only live reload: page errors 2`] = `Array []`; +exports[`multi compiler should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries: page errors 2`] = `Array []`; -exports[`multi compiler should work with universal configurations with hot and live reload: console messages 1`] = ` +exports[`multi compiler should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries: console messages 1`] = ` Array [ "[HMR] Waiting for update signal from WDS...", - "Hello from the browser", + "one", + "[webpack-dev-server] Hot Module Replacement enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App hot update...", + "[HMR] Checking for updates on the server...", + "[HMR] Cannot apply update. Need to do a full reload!", + "[HMR] Error: Aborted because ./one.js is not accepted +Update propagation: ./one.js + ", + "[HMR] Waiting for update signal from WDS...", + "one", "[webpack-dev-server] Hot Module Replacement enabled.", - "[webpack-dev-server] Live Reloading enabled.", ] `; -exports[`multi compiler should work with universal configurations with hot and live reload: page errors 1`] = `Array []`; - -exports[`multi compiler should work with universal configurations with only hot reload: console messages 1`] = ` +exports[`multi compiler should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries: console messages 2`] = ` Array [ "[HMR] Waiting for update signal from WDS...", - "Hello from the browser", + "two", + "[webpack-dev-server] Hot Module Replacement enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App hot update...", + "[HMR] Checking for updates on the server...", + "[HMR] Cannot apply update. Need to do a full reload!", + "[HMR] Error: Aborted because ./two.js is not accepted +Update propagation: ./two.js + ", + "[HMR] Waiting for update signal from WDS...", + "two", "[webpack-dev-server] Hot Module Replacement enabled.", ] `; -exports[`multi compiler should work with universal configurations with only hot reload: page errors 1`] = `Array []`; +exports[`multi compiler should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries: page errors 1`] = `Array []`; -exports[`multi compiler should work with universal configurations with only live reload: console messages 1`] = ` +exports[`multi compiler should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries: page errors 2`] = `Array []`; + +exports[`multi compiler should work with web target configurations when only live reload is enabled and do live reload when changing other entries: console messages 1`] = ` Array [ - "Hello from the browser", + "one", "[webpack-dev-server] Live Reloading enabled.", "[webpack-dev-server] App updated. Recompiling...", "[webpack-dev-server] App updated. Reloading...", - "Hello from the browser", + "one", "[webpack-dev-server] Live Reloading enabled.", ] `; -exports[`multi compiler should work with universal configurations with only live reload: page errors 1`] = `Array []`; +exports[`multi compiler should work with web target configurations when only live reload is enabled and do live reload when changing other entries: console messages 2`] = ` +Array [ + "two", + "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", + "two", + "[webpack-dev-server] Live Reloading enabled.", +] +`; + +exports[`multi compiler should work with web target configurations when only live reload is enabled and do live reload when changing other entries: page errors 1`] = `Array []`; + +exports[`multi compiler should work with web target configurations when only live reload is enabled and do live reload when changing other entries: page errors 2`] = `Array []`; + +exports[`multi compiler should work with web target configurations when only live reload is enabled, and do live reload when changing own entries: console messages 1`] = ` +Array [ + "one", + "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", + "one", + "[webpack-dev-server] Live Reloading enabled.", +] +`; + +exports[`multi compiler should work with web target configurations when only live reload is enabled, and do live reload when changing own entries: console messages 2`] = ` +Array [ + "two", + "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", + "two", + "[webpack-dev-server] Live Reloading enabled.", +] +`; + +exports[`multi compiler should work with web target configurations when only live reload is enabled, and do live reload when changing own entries: page errors 1`] = `Array []`; + +exports[`multi compiler should work with web target configurations when only live reload is enabled, and do live reload when changing own entries: page errors 2`] = `Array []`; diff --git a/test/e2e/multi-compiler.test.js b/test/e2e/multi-compiler.test.js index 2c59b638c8..2dc0d437a1 100644 --- a/test/e2e/multi-compiler.test.js +++ b/test/e2e/multi-compiler.test.js @@ -10,6 +10,9 @@ const universalConfiguration = require("../fixtures/universal-compiler-config/we const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map")["multi-compiler"]; +// TODO fix waitForConsoleLog on needed counts +// TODO better naming +// TODO server changes should reload for universal compiler + compiling describe("multi compiler", () => { it(`should work with one web target configuration`, async () => { const compiler = webpack(oneWebTargetConfiguration); @@ -44,7 +47,7 @@ describe("multi compiler", () => { await server.stop(); }); - it(`should work with two web target configurations with hot and live reload`, async () => { + it(`should work with web target configurations and do nothing`, async () => { const compiler = webpack(twoWebTargetConfiguration); const devServerOptions = { port, @@ -88,13 +91,142 @@ describe("multi compiler", () => { await server.stop(); }); - it(`should work with two web target configurations with only hot reload`, async () => { + it(`should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries`, async () => { + const compiler = webpack(twoWebTargetConfiguration); + const devServerOptions = { + port, + hot: true, + liveReload: true, + }; + const pathToOneEntry = path.resolve( + __dirname, + "../fixtures/multi-compiler-two-configurations/one.js" + ); + const originalOneEntryContent = fs.readFileSync(pathToOneEntry); + const pathToTwoEntry = path.resolve( + __dirname, + "../fixtures/multi-compiler-two-configurations/two.js" + ); + const originalTwoEntryContent = fs.readFileSync(pathToTwoEntry); + + const server = new Server(devServerOptions, compiler); + + await server.start(); + + const { page: pageOne, browser } = await runBrowser(); + + let pageErrors = []; + let consoleMessages = []; + + pageOne + .on("console", (message) => { + let text = message.text(); + + if (/Error: Aborted because/.test(text)) { + const splittedText = text.split("\n"); + + text = `${splittedText[0]}\n${splittedText[1]}\n `; + } + + consoleMessages.push(text); + }) + .on("pageerror", (error) => { + pageErrors.push(error); + }); + + await pageOne.goto(`http://127.0.0.1:${port}/one-main`, { + waitUntil: "networkidle0", + }); + + fs.writeFileSync(pathToOneEntry, `${originalOneEntryContent}// comment`); + + await new Promise((resolve) => { + const interval = setInterval(() => { + if ( + consoleMessages.filter( + (item) => + item === "[webpack-dev-server] Hot Module Replacement enabled." + ).length === 2 && + consoleMessages.filter( + (item) => item === "[webpack-dev-server] Live Reloading enabled." + ).length === 2 && + consoleMessages.includes( + "[webpack-dev-server] App updated. Recompiling..." + ) && + consoleMessages.includes( + "[HMR] Cannot apply update. Need to do a full reload!" + ) + ) { + clearInterval(interval); + + resolve(); + } + }, 100); + }); + + expect(consoleMessages).toMatchSnapshot("console messages"); + expect(pageErrors).toMatchSnapshot("page errors"); + + pageErrors = []; + consoleMessages = []; + + await pageOne.goto(`http://127.0.0.1:${port}/two-main`, { + waitUntil: "networkidle0", + }); + + fs.writeFileSync(pathToTwoEntry, `${originalTwoEntryContent}// comment`); + + await new Promise((resolve) => { + const interval = setInterval(() => { + if ( + consoleMessages.filter( + (item) => + item === "[webpack-dev-server] Hot Module Replacement enabled." + ).length === 2 && + consoleMessages.filter( + (item) => item === "[webpack-dev-server] Live Reloading enabled." + ).length === 2 && + consoleMessages.includes( + "[webpack-dev-server] App updated. Recompiling..." + ) && + consoleMessages.includes( + "[HMR] Cannot apply update. Need to do a full reload!" + ) + ) { + clearInterval(interval); + + resolve(); + } + }, 100); + }); + + expect(consoleMessages).toMatchSnapshot("console messages"); + expect(pageErrors).toMatchSnapshot("page errors"); + + fs.writeFileSync(pathToOneEntry, originalOneEntryContent); + fs.writeFileSync(pathToTwoEntry, originalTwoEntryContent); + + await browser.close(); + await server.stop(); + }); + + it(`should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries`, async () => { const compiler = webpack(twoWebTargetConfiguration); const devServerOptions = { port, hot: true, liveReload: false, }; + const pathToOneEntry = path.resolve( + __dirname, + "../fixtures/multi-compiler-two-configurations/one.js" + ); + const originalOneEntryContent = fs.readFileSync(pathToOneEntry); + const pathToTwoEntry = path.resolve( + __dirname, + "../fixtures/multi-compiler-two-configurations/two.js" + ); + const originalTwoEntryContent = fs.readFileSync(pathToTwoEntry); const server = new Server(devServerOptions, compiler); @@ -107,7 +239,15 @@ describe("multi compiler", () => { pageOne .on("console", (message) => { - consoleMessages.push(message.text()); + let text = message.text(); + + if (/Error: Aborted because/.test(text)) { + const splittedText = text.split("\n"); + + text = `${splittedText[0]}\n${splittedText[1]}\n `; + } + + consoleMessages.push(text); }) .on("pageerror", (error) => { pageErrors.push(error); @@ -117,6 +257,29 @@ describe("multi compiler", () => { waitUntil: "networkidle0", }); + fs.writeFileSync(pathToOneEntry, `${originalOneEntryContent}// comment`); + + await new Promise((resolve) => { + const interval = setInterval(() => { + if ( + consoleMessages.filter( + (item) => + item === "[webpack-dev-server] Hot Module Replacement enabled." + ).length === 2 && + consoleMessages.includes( + "[webpack-dev-server] App updated. Recompiling..." + ) && + consoleMessages.includes( + "[HMR] Cannot apply update. Need to do a full reload!" + ) + ) { + clearInterval(interval); + + resolve(); + } + }, 100); + }); + expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); @@ -127,14 +290,40 @@ describe("multi compiler", () => { waitUntil: "networkidle0", }); + fs.writeFileSync(pathToTwoEntry, `${originalTwoEntryContent}// comment`); + + await new Promise((resolve) => { + const interval = setInterval(() => { + if ( + consoleMessages.filter( + (item) => + item === "[webpack-dev-server] Hot Module Replacement enabled." + ).length === 2 && + consoleMessages.includes( + "[webpack-dev-server] App updated. Recompiling..." + ) && + consoleMessages.includes( + "[HMR] Cannot apply update. Need to do a full reload!" + ) + ) { + clearInterval(interval); + + resolve(); + } + }, 100); + }); + expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); + fs.writeFileSync(pathToOneEntry, originalOneEntryContent); + fs.writeFileSync(pathToTwoEntry, originalTwoEntryContent); + await browser.close(); await server.stop(); }); - it(`should work with two web target configurations with only live reload`, async () => { + it(`should work with web target configurations when only live reload is enabled, and do live reload when changing own entries`, async () => { const compiler = webpack(twoWebTargetConfiguration); const devServerOptions = { port, @@ -169,7 +358,6 @@ describe("multi compiler", () => { pageErrors.push(error); }); - // Change own entry for the `one` configuration await pageOne.goto(`http://127.0.0.1:${port}/one-main`, { waitUntil: "networkidle0", }); @@ -232,7 +420,104 @@ describe("multi compiler", () => { await server.stop(); }); - it("should work with universal configurations with hot and live reload", async () => { + it(`should work with web target configurations when only live reload is enabled and do live reload when changing other entries`, async () => { + const compiler = webpack(twoWebTargetConfiguration); + const devServerOptions = { + port, + hot: false, + liveReload: true, + }; + const pathToOneEntry = path.resolve( + __dirname, + "../fixtures/multi-compiler-two-configurations/one.js" + ); + const originalOneEntryContent = fs.readFileSync(pathToOneEntry); + const pathToTwoEntry = path.resolve( + __dirname, + "../fixtures/multi-compiler-two-configurations/two.js" + ); + const originalTwoEntryContent = fs.readFileSync(pathToTwoEntry); + + const server = new Server(devServerOptions, compiler); + + await server.start(); + + const { page: pageOne, browser } = await runBrowser(); + + let pageErrors = []; + let consoleMessages = []; + + pageOne + .on("console", (message) => { + consoleMessages.push(message.text()); + }) + .on("pageerror", (error) => { + pageErrors.push(error); + }); + + await pageOne.goto(`http://127.0.0.1:${port}/one-main`, { + waitUntil: "networkidle0", + }); + + fs.writeFileSync(pathToTwoEntry, `${originalTwoEntryContent}// comment`); + + await new Promise((resolve) => { + const interval = setInterval(() => { + if ( + consoleMessages.includes( + "[webpack-dev-server] App updated. Reloading..." + ) && + consoleMessages.includes( + "[webpack-dev-server] Live Reloading enabled." + ) + ) { + clearInterval(interval); + + resolve(); + } + }, 100); + }); + + expect(consoleMessages).toMatchSnapshot("console messages"); + expect(pageErrors).toMatchSnapshot("page errors"); + + pageErrors = []; + consoleMessages = []; + + await pageOne.goto(`http://127.0.0.1:${port}/two-main`, { + waitUntil: "networkidle0", + }); + + fs.writeFileSync(pathToOneEntry, `${originalOneEntryContent}// comment`); + + await new Promise((resolve) => { + const interval = setInterval(() => { + if ( + consoleMessages.includes( + "[webpack-dev-server] App updated. Reloading..." + ) && + consoleMessages.includes( + "[webpack-dev-server] Live Reloading enabled." + ) + ) { + clearInterval(interval); + + resolve(); + } + }, 100); + }); + + expect(consoleMessages).toMatchSnapshot("console messages"); + expect(pageErrors).toMatchSnapshot("page errors"); + + fs.writeFileSync(pathToOneEntry, originalOneEntryContent); + fs.writeFileSync(pathToTwoEntry, originalTwoEntryContent); + + await browser.close(); + await server.stop(); + }); + + it("should work with universal configuration and do nothing", async () => { const compiler = webpack(universalConfiguration); const devServerOptions = { port, @@ -277,38 +562,118 @@ describe("multi compiler", () => { await server.stop(); }); - it("should work with universal configurations with only hot reload", async () => { + it(`should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compile by default when browser entry changed`, async () => { const compiler = webpack(universalConfiguration); const devServerOptions = { port, hot: true, - liveReload: false, + liveReload: true, }; + const pathToBrowserEntry = path.resolve( + __dirname, + "../fixtures/universal-compiler-config/browser.js" + ); + const originalBrowserEntryContent = fs.readFileSync(pathToBrowserEntry); + const pathToServerEntry = path.resolve( + __dirname, + "../fixtures/universal-compiler-config/server.js" + ); + const originalServerEntryContent = fs.readFileSync(pathToServerEntry); + const server = new Server(devServerOptions, compiler); await server.start(); - const { page, browser } = await runBrowser(); + const { page: pageOne, browser } = await runBrowser(); - const pageErrors = []; - const consoleMessages = []; + let pageErrors = []; + let consoleMessages = []; - page + pageOne .on("console", (message) => { - consoleMessages.push(message.text()); + let text = message.text(); + + if (/Error: Aborted because/.test(text)) { + const splittedText = text.split("\n"); + + text = `${splittedText[0]}\n${splittedText[1]}\n `; + } + + consoleMessages.push(text); }) .on("pageerror", (error) => { pageErrors.push(error); }); - await page.goto(`http://127.0.0.1:${port}/browser`, { + await pageOne.goto(`http://127.0.0.1:${port}/browser`, { waitUntil: "networkidle0", }); + fs.writeFileSync( + pathToBrowserEntry, + `${originalBrowserEntryContent}// comment` + ); + + await new Promise((resolve) => { + const interval = setInterval(() => { + if ( + consoleMessages.filter( + (item) => + item === "[webpack-dev-server] Hot Module Replacement enabled." + ).length === 2 && + consoleMessages.filter( + (item) => item === "[webpack-dev-server] Live Reloading enabled." + ).length === 2 && + consoleMessages.includes( + "[webpack-dev-server] App updated. Recompiling..." + ) && + consoleMessages.includes( + "[HMR] Cannot apply update. Need to do a full reload!" + ) + ) { + clearInterval(interval); + + resolve(); + } + }, 100); + }); + expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); - const serverResponse = await page.goto( + pageErrors = []; + consoleMessages = []; + + expect(consoleMessages).toMatchSnapshot("console messages"); + expect(pageErrors).toMatchSnapshot("page errors"); + + fs.writeFileSync(pathToBrowserEntry, originalBrowserEntryContent); + fs.writeFileSync(pathToServerEntry, originalServerEntryContent); + + await browser.close(); + await server.stop(); + }); + + it(`should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry`, async () => { + const compiler = webpack(universalConfiguration); + const devServerOptions = { + port, + hot: true, + liveReload: false, + }; + const pathToBrowserEntry = path.resolve( + __dirname, + "../fixtures/universal-compiler-config/browser.js" + ); + const originalBrowserEntryContent = fs.readFileSync(pathToBrowserEntry); + + const server = new Server(devServerOptions, compiler); + + await server.start(); + + const { page: pageOne, browser } = await runBrowser(); + + const serverResponse = await pageOne.goto( `http://127.0.0.1:${port}/server.js`, { waitUntil: "networkidle0", @@ -320,32 +685,102 @@ describe("multi compiler", () => { expect(serverResponseText).toContain("Hello from the server"); expect(serverResponseText).not.toContain("WebsocketServer"); + const pageErrors = []; + const consoleMessages = []; + + pageOne + .on("console", (message) => { + let text = message.text(); + + if (/Error: Aborted because/.test(text)) { + const splittedText = text.split("\n"); + + text = `${splittedText[0]}\n${splittedText[1]}\n `; + } + + consoleMessages.push(message.text()); + }) + .on("pageerror", (error) => { + pageErrors.push(error); + }); + + await pageOne.goto(`http://127.0.0.1:${port}/browser`, { + waitUntil: "networkidle0", + }); + + fs.writeFileSync( + pathToBrowserEntry, + `${originalBrowserEntryContent}// comment` + ); + + await new Promise((resolve) => { + const interval = setInterval(() => { + console.log(consoleMessages); + if ( + consoleMessages.filter( + (item) => + item === "[webpack-dev-server] Hot Module Replacement enabled." + ).length === 2 && + consoleMessages.includes( + "[webpack-dev-server] App updated. Recompiling..." + ) + ) { + clearInterval(interval); + + resolve(); + } + }, 100); + }); + + expect(consoleMessages).toMatchSnapshot("console messages"); + expect(pageErrors).toMatchSnapshot("page errors"); + + fs.writeFileSync(pathToBrowserEntry, originalBrowserEntryContent); + await browser.close(); await server.stop(); }); - it("should work with universal configurations with only live reload", async () => { + it(`should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing entries`, async () => { const compiler = webpack(universalConfiguration); const devServerOptions = { port, hot: false, liveReload: true, }; - const server = new Server(devServerOptions, compiler); const pathToBrowserEntry = path.resolve( __dirname, "../fixtures/universal-compiler-config/browser.js" ); const originalBrowserEntryContent = fs.readFileSync(pathToBrowserEntry); + const pathToServerEntry = path.resolve( + __dirname, + "../fixtures/universal-compiler-config/server.js" + ); + const originalServerEntryContent = fs.readFileSync(pathToServerEntry); + + const server = new Server(devServerOptions, compiler); await server.start(); - const { page, browser } = await runBrowser(); + const { page: pageOne, browser } = await runBrowser(); - const pageErrors = []; - const consoleMessages = []; + const serverResponse = await pageOne.goto( + `http://127.0.0.1:${port}/server.js`, + { + waitUntil: "networkidle0", + } + ); - page + const serverResponseText = await serverResponse.text(); + + expect(serverResponseText).toContain("Hello from the server"); + expect(serverResponseText).not.toContain("WebsocketServer"); + + let pageErrors = []; + let consoleMessages = []; + + pageOne .on("console", (message) => { consoleMessages.push(message.text()); }) @@ -353,7 +788,7 @@ describe("multi compiler", () => { pageErrors.push(error); }); - await page.goto(`http://127.0.0.1:${port}/browser`, { + await pageOne.goto(`http://127.0.0.1:${port}/browser`, { waitUntil: "networkidle0", }); @@ -365,11 +800,11 @@ describe("multi compiler", () => { await new Promise((resolve) => { const interval = setInterval(() => { if ( + consoleMessages.filter( + (item) => item === "[webpack-dev-server] Live Reloading enabled." + ).length === 2 && consoleMessages.includes( "[webpack-dev-server] App updated. Reloading..." - ) && - consoleMessages.includes( - "[webpack-dev-server] Live Reloading enabled." ) ) { clearInterval(interval); @@ -382,19 +817,40 @@ describe("multi compiler", () => { expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); - const serverResponse = await page.goto( - `http://127.0.0.1:${port}/server.js`, - { - waitUntil: "networkidle0", - } + pageErrors = []; + consoleMessages = []; + + await pageOne.goto(`http://127.0.0.1:${port}/browser`, { + waitUntil: "networkidle0", + }); + + fs.writeFileSync( + pathToServerEntry, + `${originalServerEntryContent}// comment` ); - const serverResponseText = await serverResponse.text(); + await new Promise((resolve) => { + const interval = setInterval(() => { + if ( + consoleMessages.filter( + (item) => item === "[webpack-dev-server] Live Reloading enabled." + ).length === 2 && + consoleMessages.includes( + "[webpack-dev-server] App updated. Reloading..." + ) + ) { + clearInterval(interval); - expect(serverResponseText).toContain("Hello from the server"); - expect(serverResponseText).not.toContain("WebsocketServer"); + resolve(); + } + }, 100); + }); + + expect(consoleMessages).toMatchSnapshot("console messages"); + expect(pageErrors).toMatchSnapshot("page errors"); fs.writeFileSync(pathToBrowserEntry, originalBrowserEntryContent); + fs.writeFileSync(pathToServerEntry, originalServerEntryContent); await browser.close(); await server.stop(); diff --git a/test/fixtures/multi-compiler-two-configurations/one.js b/test/fixtures/multi-compiler-two-configurations/one.js index 21aaff9181..5765483e03 100644 --- a/test/fixtures/multi-compiler-two-configurations/one.js +++ b/test/fixtures/multi-compiler-two-configurations/one.js @@ -2,3 +2,4 @@ console.log("one"); // comment +// comment diff --git a/test/fixtures/universal-compiler-config/browser.js b/test/fixtures/universal-compiler-config/browser.js index ddcebf29c7..84342f8b5e 100644 --- a/test/fixtures/universal-compiler-config/browser.js +++ b/test/fixtures/universal-compiler-config/browser.js @@ -1,3 +1,4 @@ "use strict"; console.log("Hello from the browser"); +// comment// comment// comment diff --git a/test/fixtures/universal-compiler-config/server.js b/test/fixtures/universal-compiler-config/server.js index 3dfb585f6d..1ab443d9ae 100644 --- a/test/fixtures/universal-compiler-config/server.js +++ b/test/fixtures/universal-compiler-config/server.js @@ -1,3 +1,4 @@ "use strict"; console.log("Hello from the server"); +// comment diff --git a/test/fixtures/universal-compiler-config/webpack.config.js b/test/fixtures/universal-compiler-config/webpack.config.js index 04159afcc6..3995080bc5 100644 --- a/test/fixtures/universal-compiler-config/webpack.config.js +++ b/test/fixtures/universal-compiler-config/webpack.config.js @@ -6,6 +6,7 @@ const isWebpack5 = webpack.version.startsWith("5"); module.exports = [ { + name: "browser", mode: "development", context: __dirname, stats: "none", @@ -26,6 +27,8 @@ module.exports = [ }, }, { + name: "server", + dependencies: ["browser"], mode: "development", context: __dirname, target: "node", From 2e01c94b41e79d32c858e1bac955e79bd49029e4 Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Mon, 13 Sep 2021 23:20:58 +0300 Subject: [PATCH 04/14] test: more --- .../__snapshots__/multi-compiler.test.js.snap.webpack5 | 8 ++++---- test/e2e/multi-compiler.test.js | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 index 42e928db7b..eca5a04150 100644 --- a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 @@ -22,7 +22,7 @@ Array [ exports[`multi compiler should work with universal configuration and do nothing: page errors 1`] = `Array []`; -exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compile by default when browser entry changed: console messages 1`] = ` +exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed: console messages 1`] = ` Array [ "[HMR] Waiting for update signal from WDS...", "Hello from the browser", @@ -43,11 +43,11 @@ Update propagation: ./browser.js ] `; -exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compile by default when browser entry changed: console messages 2`] = `Array []`; +exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed: console messages 2`] = `Array []`; -exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compile by default when browser entry changed: page errors 1`] = `Array []`; +exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed: page errors 1`] = `Array []`; -exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compile by default when browser entry changed: page errors 2`] = `Array []`; +exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed: page errors 2`] = `Array []`; exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry: console messages 1`] = ` Array [ diff --git a/test/e2e/multi-compiler.test.js b/test/e2e/multi-compiler.test.js index 2dc0d437a1..91d7145e60 100644 --- a/test/e2e/multi-compiler.test.js +++ b/test/e2e/multi-compiler.test.js @@ -11,7 +11,6 @@ const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map")["multi-compiler"]; // TODO fix waitForConsoleLog on needed counts -// TODO better naming // TODO server changes should reload for universal compiler + compiling describe("multi compiler", () => { it(`should work with one web target configuration`, async () => { @@ -562,7 +561,7 @@ describe("multi compiler", () => { await server.stop(); }); - it(`should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compile by default when browser entry changed`, async () => { + it(`should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed`, async () => { const compiler = webpack(universalConfiguration); const devServerOptions = { port, From ddb7a3841a576e19f0d95c04a3b489f5539a6ec5 Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Mon, 13 Sep 2021 23:22:24 +0300 Subject: [PATCH 05/14] test: more --- .../__snapshots__/multi-compiler.test.js.snap.webpack5 | 10 +++++----- test/e2e/multi-compiler.test.js | 3 +-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 index eca5a04150..17724a74e3 100644 --- a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 @@ -76,19 +76,19 @@ Update propagation: ./browser.js exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry: page errors 1`] = `Array []`; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing entries: console messages 1`] = ` +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing other entries: console messages 1`] = ` Array [ "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", "[webpack-dev-server] App updated. Recompiling...", - "[webpack-dev-server] App updated. Recompiling...", "[webpack-dev-server] App updated. Reloading...", + "[webpack-dev-server] App updated. Recompiling...", "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", ] `; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing entries: console messages 2`] = ` +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing other entries: console messages 2`] = ` Array [ "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", @@ -99,9 +99,9 @@ Array [ ] `; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing entries: page errors 1`] = `Array []`; +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing other entries: page errors 1`] = `Array []`; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing entries: page errors 2`] = `Array []`; +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing other entries: page errors 2`] = `Array []`; exports[`multi compiler should work with web target configurations and do nothing: console messages 1`] = ` Array [ diff --git a/test/e2e/multi-compiler.test.js b/test/e2e/multi-compiler.test.js index 91d7145e60..42120489e9 100644 --- a/test/e2e/multi-compiler.test.js +++ b/test/e2e/multi-compiler.test.js @@ -714,7 +714,6 @@ describe("multi compiler", () => { await new Promise((resolve) => { const interval = setInterval(() => { - console.log(consoleMessages); if ( consoleMessages.filter( (item) => @@ -740,7 +739,7 @@ describe("multi compiler", () => { await server.stop(); }); - it(`should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing entries`, async () => { + it(`should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing other entries`, async () => { const compiler = webpack(universalConfiguration); const devServerOptions = { port, From de9bc44d893e3e738bf9a5592e30efcd2da6b5a0 Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Mon, 13 Sep 2021 23:36:42 +0300 Subject: [PATCH 06/14] test: more --- .../multi-compiler.test.js.snap.webpack4 | 20 ++--- .../multi-compiler.test.js.snap.webpack5 | 10 +-- test/e2e/multi-compiler.test.js | 77 ++++++++++--------- 3 files changed, 53 insertions(+), 54 deletions(-) diff --git a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 index 42e928db7b..863bcf4c9d 100644 --- a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 +++ b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`multi compiler should work with one web target configuration: console messages 1`] = ` +exports[`multi compiler should work with one web target configuration and do nothing: console messages 1`] = ` Array [ "[HMR] Waiting for update signal from WDS...", "Hey.", @@ -9,7 +9,7 @@ Array [ ] `; -exports[`multi compiler should work with one web target configuration: page errors 1`] = `Array []`; +exports[`multi compiler should work with one web target configuration and do nothing: page errors 1`] = `Array []`; exports[`multi compiler should work with universal configuration and do nothing: console messages 1`] = ` Array [ @@ -22,7 +22,7 @@ Array [ exports[`multi compiler should work with universal configuration and do nothing: page errors 1`] = `Array []`; -exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compile by default when browser entry changed: console messages 1`] = ` +exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed: console messages 1`] = ` Array [ "[HMR] Waiting for update signal from WDS...", "Hello from the browser", @@ -43,11 +43,7 @@ Update propagation: ./browser.js ] `; -exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compile by default when browser entry changed: console messages 2`] = `Array []`; - -exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compile by default when browser entry changed: page errors 1`] = `Array []`; - -exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compile by default when browser entry changed: page errors 2`] = `Array []`; +exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed: page errors 1`] = `Array []`; exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry: console messages 1`] = ` Array [ @@ -76,7 +72,7 @@ Update propagation: ./browser.js exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry: page errors 1`] = `Array []`; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing entries: console messages 1`] = ` +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing other entries: console messages 1`] = ` Array [ "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", @@ -88,7 +84,7 @@ Array [ ] `; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing entries: console messages 2`] = ` +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing other entries: console messages 2`] = ` Array [ "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", @@ -99,9 +95,9 @@ Array [ ] `; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing entries: page errors 1`] = `Array []`; +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing other entries: page errors 1`] = `Array []`; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing entries: page errors 2`] = `Array []`; +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing other entries: page errors 2`] = `Array []`; exports[`multi compiler should work with web target configurations and do nothing: console messages 1`] = ` Array [ diff --git a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 index 17724a74e3..863bcf4c9d 100644 --- a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`multi compiler should work with one web target configuration: console messages 1`] = ` +exports[`multi compiler should work with one web target configuration and do nothing: console messages 1`] = ` Array [ "[HMR] Waiting for update signal from WDS...", "Hey.", @@ -9,7 +9,7 @@ Array [ ] `; -exports[`multi compiler should work with one web target configuration: page errors 1`] = `Array []`; +exports[`multi compiler should work with one web target configuration and do nothing: page errors 1`] = `Array []`; exports[`multi compiler should work with universal configuration and do nothing: console messages 1`] = ` Array [ @@ -43,12 +43,8 @@ Update propagation: ./browser.js ] `; -exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed: console messages 2`] = `Array []`; - exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed: page errors 1`] = `Array []`; -exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed: page errors 2`] = `Array []`; - exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry: console messages 1`] = ` Array [ "[HMR] Waiting for update signal from WDS...", @@ -81,8 +77,8 @@ Array [ "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", "[webpack-dev-server] App updated. Recompiling...", - "[webpack-dev-server] App updated. Reloading...", "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", ] diff --git a/test/e2e/multi-compiler.test.js b/test/e2e/multi-compiler.test.js index 42120489e9..86089ae143 100644 --- a/test/e2e/multi-compiler.test.js +++ b/test/e2e/multi-compiler.test.js @@ -10,10 +10,8 @@ const universalConfiguration = require("../fixtures/universal-compiler-config/we const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map")["multi-compiler"]; -// TODO fix waitForConsoleLog on needed counts -// TODO server changes should reload for universal compiler + compiling describe("multi compiler", () => { - it(`should work with one web target configuration`, async () => { + it(`should work with one web target configuration and do nothing`, async () => { const compiler = webpack(oneWebTargetConfiguration); const devServerOptions = { port, @@ -366,11 +364,11 @@ describe("multi compiler", () => { await new Promise((resolve) => { const interval = setInterval(() => { if ( + consoleMessages.filter( + (item) => item === "[webpack-dev-server] Live Reloading enabled." + ).length === 2 && consoleMessages.includes( "[webpack-dev-server] App updated. Reloading..." - ) && - consoleMessages.includes( - "[webpack-dev-server] Live Reloading enabled." ) ) { clearInterval(interval); @@ -395,11 +393,11 @@ describe("multi compiler", () => { await new Promise((resolve) => { const interval = setInterval(() => { if ( + consoleMessages.filter( + (item) => item === "[webpack-dev-server] Live Reloading enabled." + ).length === 2 && consoleMessages.includes( "[webpack-dev-server] App updated. Reloading..." - ) && - consoleMessages.includes( - "[webpack-dev-server] Live Reloading enabled." ) ) { clearInterval(interval); @@ -463,11 +461,11 @@ describe("multi compiler", () => { await new Promise((resolve) => { const interval = setInterval(() => { if ( + consoleMessages.filter( + (item) => item === "[webpack-dev-server] Live Reloading enabled." + ).length === 2 && consoleMessages.includes( "[webpack-dev-server] App updated. Reloading..." - ) && - consoleMessages.includes( - "[webpack-dev-server] Live Reloading enabled." ) ) { clearInterval(interval); @@ -492,11 +490,11 @@ describe("multi compiler", () => { await new Promise((resolve) => { const interval = setInterval(() => { if ( + consoleMessages.filter( + (item) => item === "[webpack-dev-server] Live Reloading enabled." + ).length === 2 && consoleMessages.includes( "[webpack-dev-server] App updated. Reloading..." - ) && - consoleMessages.includes( - "[webpack-dev-server] Live Reloading enabled." ) ) { clearInterval(interval); @@ -527,6 +525,18 @@ describe("multi compiler", () => { const { page, browser } = await runBrowser(); + const serverResponse = await page.goto( + `http://127.0.0.1:${port}/server.js`, + { + waitUntil: "networkidle0", + } + ); + + const serverResponseText = await serverResponse.text(); + + expect(serverResponseText).toContain("Hello from the server"); + expect(serverResponseText).not.toContain("WebsocketServer"); + const pageErrors = []; const consoleMessages = []; @@ -545,18 +555,6 @@ describe("multi compiler", () => { expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); - const serverResponse = await page.goto( - `http://127.0.0.1:${port}/server.js`, - { - waitUntil: "networkidle0", - } - ); - - const serverResponseText = await serverResponse.text(); - - expect(serverResponseText).toContain("Hello from the server"); - expect(serverResponseText).not.toContain("WebsocketServer"); - await browser.close(); await server.stop(); }); @@ -585,8 +583,20 @@ describe("multi compiler", () => { const { page: pageOne, browser } = await runBrowser(); - let pageErrors = []; - let consoleMessages = []; + const serverResponse = await pageOne.goto( + `http://127.0.0.1:${port}/server.js`, + { + waitUntil: "networkidle0", + } + ); + + const serverResponseText = await serverResponse.text(); + + expect(serverResponseText).toContain("Hello from the server"); + expect(serverResponseText).not.toContain("WebsocketServer"); + + const pageErrors = []; + const consoleMessages = []; pageOne .on("console", (message) => { @@ -640,12 +650,6 @@ describe("multi compiler", () => { expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); - pageErrors = []; - consoleMessages = []; - - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); - fs.writeFileSync(pathToBrowserEntry, originalBrowserEntryContent); fs.writeFileSync(pathToServerEntry, originalServerEntryContent); @@ -721,6 +725,9 @@ describe("multi compiler", () => { ).length === 2 && consoleMessages.includes( "[webpack-dev-server] App updated. Recompiling..." + ) && + consoleMessages.includes( + "[HMR] Cannot apply update. Need to do a full reload!" ) ) { clearInterval(interval); From 897d7ba88497b17b1318637a5a11ed00b7a37dd8 Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Mon, 13 Sep 2021 23:41:23 +0300 Subject: [PATCH 07/14] test: more --- .../multi-compiler.test.js.snap.webpack4 | 39 +++++- .../multi-compiler.test.js.snap.webpack5 | 39 +++++- test/e2e/multi-compiler.test.js | 119 +++++++++++++++++- 3 files changed, 183 insertions(+), 14 deletions(-) diff --git a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 index 863bcf4c9d..c33f6930ca 100644 --- a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 +++ b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 @@ -45,7 +45,7 @@ Update propagation: ./browser.js exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed: page errors 1`] = `Array []`; -exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry: console messages 1`] = ` +exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry changed: console messages 1`] = ` Array [ "[HMR] Waiting for update signal from WDS...", "Hello from the browser", @@ -70,9 +70,9 @@ Update propagation: ./browser.js ] `; -exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry: page errors 1`] = `Array []`; +exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry changed: page errors 1`] = `Array []`; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing other entries: console messages 1`] = ` +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries: console messages 1`] = ` Array [ "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", @@ -84,7 +84,7 @@ Array [ ] `; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing other entries: console messages 2`] = ` +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries: console messages 2`] = ` Array [ "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", @@ -95,9 +95,36 @@ Array [ ] `; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing other entries: page errors 1`] = `Array []`; +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries: page errors 1`] = `Array []`; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing other entries: page errors 2`] = `Array []`; +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries: page errors 2`] = `Array []`; + +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries: console messages 1`] = ` +Array [ + "Hello from the browser", + "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", + "Hello from the browser", + "[webpack-dev-server] Live Reloading enabled.", +] +`; + +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries: console messages 2`] = ` +Array [ + "Hello from the browser", + "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", + "Hello from the browser", + "[webpack-dev-server] Live Reloading enabled.", +] +`; + +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries: page errors 1`] = `Array []`; + +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries: page errors 2`] = `Array []`; exports[`multi compiler should work with web target configurations and do nothing: console messages 1`] = ` Array [ diff --git a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 index 863bcf4c9d..c33f6930ca 100644 --- a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 @@ -45,7 +45,7 @@ Update propagation: ./browser.js exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed: page errors 1`] = `Array []`; -exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry: console messages 1`] = ` +exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry changed: console messages 1`] = ` Array [ "[HMR] Waiting for update signal from WDS...", "Hello from the browser", @@ -70,9 +70,9 @@ Update propagation: ./browser.js ] `; -exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry: page errors 1`] = `Array []`; +exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry changed: page errors 1`] = `Array []`; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing other entries: console messages 1`] = ` +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries: console messages 1`] = ` Array [ "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", @@ -84,7 +84,7 @@ Array [ ] `; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing other entries: console messages 2`] = ` +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries: console messages 2`] = ` Array [ "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", @@ -95,9 +95,36 @@ Array [ ] `; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing other entries: page errors 1`] = `Array []`; +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries: page errors 1`] = `Array []`; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing other entries: page errors 2`] = `Array []`; +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries: page errors 2`] = `Array []`; + +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries: console messages 1`] = ` +Array [ + "Hello from the browser", + "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", + "Hello from the browser", + "[webpack-dev-server] Live Reloading enabled.", +] +`; + +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries: console messages 2`] = ` +Array [ + "Hello from the browser", + "[webpack-dev-server] Live Reloading enabled.", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Recompiling...", + "[webpack-dev-server] App updated. Reloading...", + "Hello from the browser", + "[webpack-dev-server] Live Reloading enabled.", +] +`; + +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries: page errors 1`] = `Array []`; + +exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries: page errors 2`] = `Array []`; exports[`multi compiler should work with web target configurations and do nothing: console messages 1`] = ` Array [ diff --git a/test/e2e/multi-compiler.test.js b/test/e2e/multi-compiler.test.js index 86089ae143..6178806ce5 100644 --- a/test/e2e/multi-compiler.test.js +++ b/test/e2e/multi-compiler.test.js @@ -657,7 +657,7 @@ describe("multi compiler", () => { await server.stop(); }); - it(`should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry`, async () => { + it(`should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry changed`, async () => { const compiler = webpack(universalConfiguration); const devServerOptions = { port, @@ -746,7 +746,7 @@ describe("multi compiler", () => { await server.stop(); }); - it(`should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing other entries`, async () => { + it(`should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries`, async () => { const compiler = webpack(universalConfiguration); const devServerOptions = { port, @@ -860,4 +860,119 @@ describe("multi compiler", () => { await browser.close(); await server.stop(); }); + + it(`should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries`, async () => { + const compiler = webpack(universalConfiguration); + const devServerOptions = { + port, + hot: false, + liveReload: true, + }; + const pathToBrowserEntry = path.resolve( + __dirname, + "../fixtures/universal-compiler-config/browser.js" + ); + const originalBrowserEntryContent = fs.readFileSync(pathToBrowserEntry); + const pathToServerEntry = path.resolve( + __dirname, + "../fixtures/universal-compiler-config/server.js" + ); + const originalServerEntryContent = fs.readFileSync(pathToServerEntry); + + const server = new Server(devServerOptions, compiler); + + await server.start(); + + const { page: pageOne, browser } = await runBrowser(); + + const serverResponse = await pageOne.goto( + `http://127.0.0.1:${port}/server.js`, + { + waitUntil: "networkidle0", + } + ); + + const serverResponseText = await serverResponse.text(); + + expect(serverResponseText).toContain("Hello from the server"); + expect(serverResponseText).not.toContain("WebsocketServer"); + + let pageErrors = []; + let consoleMessages = []; + + pageOne + .on("console", (message) => { + consoleMessages.push(message.text()); + }) + .on("pageerror", (error) => { + pageErrors.push(error); + }); + + await pageOne.goto(`http://127.0.0.1:${port}/browser`, { + waitUntil: "networkidle0", + }); + + fs.writeFileSync( + pathToServerEntry, + `${originalServerEntryContent}// comment` + ); + + await new Promise((resolve) => { + const interval = setInterval(() => { + if ( + consoleMessages.filter( + (item) => item === "[webpack-dev-server] Live Reloading enabled." + ).length === 2 && + consoleMessages.includes( + "[webpack-dev-server] App updated. Reloading..." + ) + ) { + clearInterval(interval); + + resolve(); + } + }, 100); + }); + + expect(consoleMessages).toMatchSnapshot("console messages"); + expect(pageErrors).toMatchSnapshot("page errors"); + + pageErrors = []; + consoleMessages = []; + + await pageOne.goto(`http://127.0.0.1:${port}/browser`, { + waitUntil: "networkidle0", + }); + + fs.writeFileSync( + pathToBrowserEntry, + `${originalBrowserEntryContent}// comment` + ); + + await new Promise((resolve) => { + const interval = setInterval(() => { + if ( + consoleMessages.filter( + (item) => item === "[webpack-dev-server] Live Reloading enabled." + ).length === 2 && + consoleMessages.includes( + "[webpack-dev-server] App updated. Reloading..." + ) + ) { + clearInterval(interval); + + resolve(); + } + }, 100); + }); + + expect(consoleMessages).toMatchSnapshot("console messages"); + expect(pageErrors).toMatchSnapshot("page errors"); + + fs.writeFileSync(pathToBrowserEntry, originalBrowserEntryContent); + fs.writeFileSync(pathToServerEntry, originalServerEntryContent); + + await browser.close(); + await server.stop(); + }); }); From 09ffe40cfd1fb86dba78f3a2f8598521418e1fd0 Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Mon, 13 Sep 2021 23:42:24 +0300 Subject: [PATCH 08/14] test: fix default content --- test/fixtures/multi-compiler-two-configurations/one.js | 2 -- test/fixtures/multi-compiler-two-configurations/two.js | 1 - test/fixtures/universal-compiler-config/browser.js | 1 - test/fixtures/universal-compiler-config/server.js | 1 - 4 files changed, 5 deletions(-) diff --git a/test/fixtures/multi-compiler-two-configurations/one.js b/test/fixtures/multi-compiler-two-configurations/one.js index 5765483e03..e767ff32f1 100644 --- a/test/fixtures/multi-compiler-two-configurations/one.js +++ b/test/fixtures/multi-compiler-two-configurations/one.js @@ -1,5 +1,3 @@ "use strict"; console.log("one"); -// comment -// comment diff --git a/test/fixtures/multi-compiler-two-configurations/two.js b/test/fixtures/multi-compiler-two-configurations/two.js index 213a03b319..83bf26e4bb 100644 --- a/test/fixtures/multi-compiler-two-configurations/two.js +++ b/test/fixtures/multi-compiler-two-configurations/two.js @@ -1,4 +1,3 @@ "use strict"; console.log("two"); -// comment diff --git a/test/fixtures/universal-compiler-config/browser.js b/test/fixtures/universal-compiler-config/browser.js index 84342f8b5e..ddcebf29c7 100644 --- a/test/fixtures/universal-compiler-config/browser.js +++ b/test/fixtures/universal-compiler-config/browser.js @@ -1,4 +1,3 @@ "use strict"; console.log("Hello from the browser"); -// comment// comment// comment diff --git a/test/fixtures/universal-compiler-config/server.js b/test/fixtures/universal-compiler-config/server.js index 1ab443d9ae..3dfb585f6d 100644 --- a/test/fixtures/universal-compiler-config/server.js +++ b/test/fixtures/universal-compiler-config/server.js @@ -1,4 +1,3 @@ "use strict"; console.log("Hello from the server"); -// comment From ef245c17b855700183d99a3e52bfb5caf7f27ed5 Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Mon, 13 Sep 2021 23:46:36 +0300 Subject: [PATCH 09/14] test: fix snapshots for webpack v4 --- .../multi-compiler.test.js.snap.webpack4 | 26 +++++++------------ 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 index c33f6930ca..1daf8c6fca 100644 --- a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 +++ b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack4 @@ -31,10 +31,9 @@ Array [ "[webpack-dev-server] App updated. Recompiling...", "[webpack-dev-server] App hot update...", "[HMR] Checking for updates on the server...", - "[webpack-dev-server] App updated. Recompiling...", "[HMR] Cannot apply update. Need to do a full reload!", "[HMR] Error: Aborted because ./browser.js is not accepted -Update propagation: ./browser.js +Update propagation: ./browser.js -> 0 ", "[HMR] Waiting for update signal from WDS...", "Hello from the browser", @@ -53,17 +52,12 @@ Array [ "[webpack-dev-server] App updated. Recompiling...", "[webpack-dev-server] App hot update...", "[HMR] Checking for updates on the server...", - "[webpack-dev-server] App updated. Recompiling...", "[HMR] Cannot apply update. Need to do a full reload!", "[HMR] Error: Aborted because ./browser.js is not accepted -Update propagation: ./browser.js - at applyHandler (http://127.0.0.1:8103/browser.js:1094:31) - at http://127.0.0.1:8103/browser.js:794:21 - at Array.map () - at internalApply (http://127.0.0.1:8103/browser.js:793:54) - at http://127.0.0.1:8103/browser.js:767:26 - at waitForBlockingPromises (http://127.0.0.1:8103/browser.js:720:55) - at http://127.0.0.1:8103/browser.js:765:24", +Update propagation: ./browser.js -> 0 + at hotApplyInternal (http://127.0.0.1:8103/browser.js:508:30) + at hotApply (http://127.0.0.1:8103/browser.js:362:19) + at http://127.0.0.1:8103/browser.js:337:22", "[HMR] Waiting for update signal from WDS...", "Hello from the browser", "[webpack-dev-server] Hot Module Replacement enabled.", @@ -77,7 +71,6 @@ Array [ "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", "[webpack-dev-server] App updated. Recompiling...", - "[webpack-dev-server] App updated. Recompiling...", "[webpack-dev-server] App updated. Reloading...", "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", @@ -115,7 +108,6 @@ Array [ "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", "[webpack-dev-server] App updated. Recompiling...", - "[webpack-dev-server] App updated. Recompiling...", "[webpack-dev-server] App updated. Reloading...", "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", @@ -159,7 +151,7 @@ Array [ "[HMR] Checking for updates on the server...", "[HMR] Cannot apply update. Need to do a full reload!", "[HMR] Error: Aborted because ./one.js is not accepted -Update propagation: ./one.js +Update propagation: ./one.js -> 0 ", "[HMR] Waiting for update signal from WDS...", "one", @@ -179,7 +171,7 @@ Array [ "[HMR] Checking for updates on the server...", "[HMR] Cannot apply update. Need to do a full reload!", "[HMR] Error: Aborted because ./two.js is not accepted -Update propagation: ./two.js +Update propagation: ./two.js -> 0 ", "[HMR] Waiting for update signal from WDS...", "two", @@ -202,7 +194,7 @@ Array [ "[HMR] Checking for updates on the server...", "[HMR] Cannot apply update. Need to do a full reload!", "[HMR] Error: Aborted because ./one.js is not accepted -Update propagation: ./one.js +Update propagation: ./one.js -> 0 ", "[HMR] Waiting for update signal from WDS...", "one", @@ -220,7 +212,7 @@ Array [ "[HMR] Checking for updates on the server...", "[HMR] Cannot apply update. Need to do a full reload!", "[HMR] Error: Aborted because ./two.js is not accepted -Update propagation: ./two.js +Update propagation: ./two.js -> 0 ", "[HMR] Waiting for update signal from WDS...", "two", From 1cbae911a86a9580a185f284cf8d19f0b5889d0e Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Tue, 14 Sep 2021 00:42:18 +0300 Subject: [PATCH 10/14] test: update --- test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 index c33f6930ca..d19c951a33 100644 --- a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 @@ -115,8 +115,8 @@ Array [ "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", "[webpack-dev-server] App updated. Recompiling...", - "[webpack-dev-server] App updated. Recompiling...", "[webpack-dev-server] App updated. Reloading...", + "[webpack-dev-server] App updated. Recompiling...", "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", ] From e0d334699a4404cb7c264300ca143b6c65bc74b6 Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Tue, 14 Sep 2021 00:47:59 +0300 Subject: [PATCH 11/14] test: update --- test/e2e/multi-compiler.test.js | 54 ++++++++++++++++----------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/test/e2e/multi-compiler.test.js b/test/e2e/multi-compiler.test.js index 6178806ce5..a907770d82 100644 --- a/test/e2e/multi-compiler.test.js +++ b/test/e2e/multi-compiler.test.js @@ -200,11 +200,11 @@ describe("multi compiler", () => { expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); - fs.writeFileSync(pathToOneEntry, originalOneEntryContent); - fs.writeFileSync(pathToTwoEntry, originalTwoEntryContent); - await browser.close(); await server.stop(); + + fs.writeFileSync(pathToOneEntry, originalOneEntryContent); + fs.writeFileSync(pathToTwoEntry, originalTwoEntryContent); }); it(`should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries`, async () => { @@ -313,11 +313,11 @@ describe("multi compiler", () => { expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); - fs.writeFileSync(pathToOneEntry, originalOneEntryContent); - fs.writeFileSync(pathToTwoEntry, originalTwoEntryContent); - await browser.close(); await server.stop(); + + fs.writeFileSync(pathToOneEntry, originalOneEntryContent); + fs.writeFileSync(pathToTwoEntry, originalTwoEntryContent); }); it(`should work with web target configurations when only live reload is enabled, and do live reload when changing own entries`, async () => { @@ -410,11 +410,11 @@ describe("multi compiler", () => { expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); - fs.writeFileSync(pathToOneEntry, originalOneEntryContent); - fs.writeFileSync(pathToTwoEntry, originalTwoEntryContent); - await browser.close(); await server.stop(); + + fs.writeFileSync(pathToOneEntry, originalOneEntryContent); + fs.writeFileSync(pathToTwoEntry, originalTwoEntryContent); }); it(`should work with web target configurations when only live reload is enabled and do live reload when changing other entries`, async () => { @@ -507,11 +507,11 @@ describe("multi compiler", () => { expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); - fs.writeFileSync(pathToOneEntry, originalOneEntryContent); - fs.writeFileSync(pathToTwoEntry, originalTwoEntryContent); - await browser.close(); await server.stop(); + + fs.writeFileSync(pathToOneEntry, originalOneEntryContent); + fs.writeFileSync(pathToTwoEntry, originalTwoEntryContent); }); it("should work with universal configuration and do nothing", async () => { @@ -552,14 +552,14 @@ describe("multi compiler", () => { waitUntil: "networkidle0", }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); - await browser.close(); await server.stop(); + + expect(consoleMessages).toMatchSnapshot("console messages"); + expect(pageErrors).toMatchSnapshot("page errors"); }); - it(`should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed`, async () => { + it.only(`should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed`, async () => { const compiler = webpack(universalConfiguration); const devServerOptions = { port, @@ -650,11 +650,11 @@ describe("multi compiler", () => { expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); - fs.writeFileSync(pathToBrowserEntry, originalBrowserEntryContent); - fs.writeFileSync(pathToServerEntry, originalServerEntryContent); - await browser.close(); await server.stop(); + + fs.writeFileSync(pathToBrowserEntry, originalBrowserEntryContent); + fs.writeFileSync(pathToServerEntry, originalServerEntryContent); }); it(`should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry changed`, async () => { @@ -740,10 +740,10 @@ describe("multi compiler", () => { expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); - fs.writeFileSync(pathToBrowserEntry, originalBrowserEntryContent); - await browser.close(); await server.stop(); + + fs.writeFileSync(pathToBrowserEntry, originalBrowserEntryContent); }); it(`should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries`, async () => { @@ -854,11 +854,11 @@ describe("multi compiler", () => { expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); - fs.writeFileSync(pathToBrowserEntry, originalBrowserEntryContent); - fs.writeFileSync(pathToServerEntry, originalServerEntryContent); - await browser.close(); await server.stop(); + + fs.writeFileSync(pathToBrowserEntry, originalBrowserEntryContent); + fs.writeFileSync(pathToServerEntry, originalServerEntryContent); }); it(`should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries`, async () => { @@ -969,10 +969,10 @@ describe("multi compiler", () => { expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); - fs.writeFileSync(pathToBrowserEntry, originalBrowserEntryContent); - fs.writeFileSync(pathToServerEntry, originalServerEntryContent); - await browser.close(); await server.stop(); + + fs.writeFileSync(pathToBrowserEntry, originalBrowserEntryContent); + fs.writeFileSync(pathToServerEntry, originalServerEntryContent); }); }); From f78ced79d9ef51dbb42cd832afbfe3ec2da1dc92 Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Tue, 14 Sep 2021 00:56:04 +0300 Subject: [PATCH 12/14] test: update --- test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 | 4 ---- test/e2e/multi-compiler.test.js | 2 +- test/fixtures/universal-compiler-config/webpack.config.js | 1 - 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 index d19c951a33..781968f03c 100644 --- a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 @@ -31,7 +31,6 @@ Array [ "[webpack-dev-server] App updated. Recompiling...", "[webpack-dev-server] App hot update...", "[HMR] Checking for updates on the server...", - "[webpack-dev-server] App updated. Recompiling...", "[HMR] Cannot apply update. Need to do a full reload!", "[HMR] Error: Aborted because ./browser.js is not accepted Update propagation: ./browser.js @@ -53,7 +52,6 @@ Array [ "[webpack-dev-server] App updated. Recompiling...", "[webpack-dev-server] App hot update...", "[HMR] Checking for updates on the server...", - "[webpack-dev-server] App updated. Recompiling...", "[HMR] Cannot apply update. Need to do a full reload!", "[HMR] Error: Aborted because ./browser.js is not accepted Update propagation: ./browser.js @@ -77,7 +75,6 @@ Array [ "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", "[webpack-dev-server] App updated. Recompiling...", - "[webpack-dev-server] App updated. Recompiling...", "[webpack-dev-server] App updated. Reloading...", "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", @@ -116,7 +113,6 @@ Array [ "[webpack-dev-server] Live Reloading enabled.", "[webpack-dev-server] App updated. Recompiling...", "[webpack-dev-server] App updated. Reloading...", - "[webpack-dev-server] App updated. Recompiling...", "Hello from the browser", "[webpack-dev-server] Live Reloading enabled.", ] diff --git a/test/e2e/multi-compiler.test.js b/test/e2e/multi-compiler.test.js index a907770d82..7a0269c3fc 100644 --- a/test/e2e/multi-compiler.test.js +++ b/test/e2e/multi-compiler.test.js @@ -559,7 +559,7 @@ describe("multi compiler", () => { expect(pageErrors).toMatchSnapshot("page errors"); }); - it.only(`should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed`, async () => { + it(`should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed`, async () => { const compiler = webpack(universalConfiguration); const devServerOptions = { port, diff --git a/test/fixtures/universal-compiler-config/webpack.config.js b/test/fixtures/universal-compiler-config/webpack.config.js index 3995080bc5..99e5348143 100644 --- a/test/fixtures/universal-compiler-config/webpack.config.js +++ b/test/fixtures/universal-compiler-config/webpack.config.js @@ -28,7 +28,6 @@ module.exports = [ }, { name: "server", - dependencies: ["browser"], mode: "development", context: __dirname, target: "node", From 2e11a44dbe71d6384dba4bea8b593c1f27dc0abe Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Tue, 14 Sep 2021 01:19:54 +0300 Subject: [PATCH 13/14] test: improve --- test/e2e/multi-compiler.test.js | 91 +++++++++++++++++++-------------- 1 file changed, 53 insertions(+), 38 deletions(-) diff --git a/test/e2e/multi-compiler.test.js b/test/e2e/multi-compiler.test.js index 7a0269c3fc..164ac074c2 100644 --- a/test/e2e/multi-compiler.test.js +++ b/test/e2e/multi-compiler.test.js @@ -54,12 +54,12 @@ describe("multi compiler", () => { await server.start(); - const { page: pageOne, browser } = await runBrowser(); + const { page, browser } = await runBrowser(); let pageErrors = []; let consoleMessages = []; - pageOne + page .on("console", (message) => { consoleMessages.push(message.text()); }) @@ -67,7 +67,7 @@ describe("multi compiler", () => { pageErrors.push(error); }); - await pageOne.goto(`http://127.0.0.1:${port}/one-main`, { + await page.goto(`http://127.0.0.1:${port}/one-main`, { waitUntil: "networkidle0", }); @@ -77,7 +77,7 @@ describe("multi compiler", () => { pageErrors = []; consoleMessages = []; - await pageOne.goto(`http://127.0.0.1:${port}/two-main`, { + await page.goto(`http://127.0.0.1:${port}/two-main`, { waitUntil: "networkidle0", }); @@ -110,12 +110,12 @@ describe("multi compiler", () => { await server.start(); - const { page: pageOne, browser } = await runBrowser(); + const { page, browser } = await runBrowser(); let pageErrors = []; let consoleMessages = []; - pageOne + page .on("console", (message) => { let text = message.text(); @@ -131,12 +131,13 @@ describe("multi compiler", () => { pageErrors.push(error); }); - await pageOne.goto(`http://127.0.0.1:${port}/one-main`, { + await page.goto(`http://127.0.0.1:${port}/one-main`, { waitUntil: "networkidle0", }); fs.writeFileSync(pathToOneEntry, `${originalOneEntryContent}// comment`); + await page.waitForNavigation({ waitUntil: "networkidle0" }); await new Promise((resolve) => { const interval = setInterval(() => { if ( @@ -167,12 +168,13 @@ describe("multi compiler", () => { pageErrors = []; consoleMessages = []; - await pageOne.goto(`http://127.0.0.1:${port}/two-main`, { + await page.goto(`http://127.0.0.1:${port}/two-main`, { waitUntil: "networkidle0", }); fs.writeFileSync(pathToTwoEntry, `${originalTwoEntryContent}// comment`); + await page.waitForNavigation({ waitUntil: "networkidle0" }); await new Promise((resolve) => { const interval = setInterval(() => { if ( @@ -229,12 +231,12 @@ describe("multi compiler", () => { await server.start(); - const { page: pageOne, browser } = await runBrowser(); + const { page, browser } = await runBrowser(); let pageErrors = []; let consoleMessages = []; - pageOne + page .on("console", (message) => { let text = message.text(); @@ -250,12 +252,13 @@ describe("multi compiler", () => { pageErrors.push(error); }); - await pageOne.goto(`http://127.0.0.1:${port}/one-main`, { + await page.goto(`http://127.0.0.1:${port}/one-main`, { waitUntil: "networkidle0", }); fs.writeFileSync(pathToOneEntry, `${originalOneEntryContent}// comment`); + await page.waitForNavigation({ waitUntil: "networkidle0" }); await new Promise((resolve) => { const interval = setInterval(() => { if ( @@ -283,12 +286,13 @@ describe("multi compiler", () => { pageErrors = []; consoleMessages = []; - await pageOne.goto(`http://127.0.0.1:${port}/two-main`, { + await page.goto(`http://127.0.0.1:${port}/two-main`, { waitUntil: "networkidle0", }); fs.writeFileSync(pathToTwoEntry, `${originalTwoEntryContent}// comment`); + await page.waitForNavigation({ waitUntil: "networkidle0" }); await new Promise((resolve) => { const interval = setInterval(() => { if ( @@ -342,12 +346,12 @@ describe("multi compiler", () => { await server.start(); - const { page: pageOne, browser } = await runBrowser(); + const { page, browser } = await runBrowser(); let pageErrors = []; let consoleMessages = []; - pageOne + page .on("console", (message) => { consoleMessages.push(message.text()); }) @@ -355,12 +359,13 @@ describe("multi compiler", () => { pageErrors.push(error); }); - await pageOne.goto(`http://127.0.0.1:${port}/one-main`, { + await page.goto(`http://127.0.0.1:${port}/one-main`, { waitUntil: "networkidle0", }); fs.writeFileSync(pathToOneEntry, `${originalOneEntryContent}// comment`); + await page.waitForNavigation({ waitUntil: "networkidle0" }); await new Promise((resolve) => { const interval = setInterval(() => { if ( @@ -384,12 +389,13 @@ describe("multi compiler", () => { pageErrors = []; consoleMessages = []; - await pageOne.goto(`http://127.0.0.1:${port}/two-main`, { + await page.goto(`http://127.0.0.1:${port}/two-main`, { waitUntil: "networkidle0", }); fs.writeFileSync(pathToTwoEntry, `${originalTwoEntryContent}// comment`); + await page.waitForNavigation({ waitUntil: "networkidle0" }); await new Promise((resolve) => { const interval = setInterval(() => { if ( @@ -439,12 +445,12 @@ describe("multi compiler", () => { await server.start(); - const { page: pageOne, browser } = await runBrowser(); + const { page, browser } = await runBrowser(); let pageErrors = []; let consoleMessages = []; - pageOne + page .on("console", (message) => { consoleMessages.push(message.text()); }) @@ -452,12 +458,13 @@ describe("multi compiler", () => { pageErrors.push(error); }); - await pageOne.goto(`http://127.0.0.1:${port}/one-main`, { + await page.goto(`http://127.0.0.1:${port}/one-main`, { waitUntil: "networkidle0", }); fs.writeFileSync(pathToTwoEntry, `${originalTwoEntryContent}// comment`); + await page.waitForNavigation({ waitUntil: "networkidle0" }); await new Promise((resolve) => { const interval = setInterval(() => { if ( @@ -481,12 +488,13 @@ describe("multi compiler", () => { pageErrors = []; consoleMessages = []; - await pageOne.goto(`http://127.0.0.1:${port}/two-main`, { + await page.goto(`http://127.0.0.1:${port}/two-main`, { waitUntil: "networkidle0", }); fs.writeFileSync(pathToOneEntry, `${originalOneEntryContent}// comment`); + await page.waitForNavigation({ waitUntil: "networkidle0" }); await new Promise((resolve) => { const interval = setInterval(() => { if ( @@ -581,9 +589,9 @@ describe("multi compiler", () => { await server.start(); - const { page: pageOne, browser } = await runBrowser(); + const { page, browser } = await runBrowser(); - const serverResponse = await pageOne.goto( + const serverResponse = await page.goto( `http://127.0.0.1:${port}/server.js`, { waitUntil: "networkidle0", @@ -598,7 +606,7 @@ describe("multi compiler", () => { const pageErrors = []; const consoleMessages = []; - pageOne + page .on("console", (message) => { let text = message.text(); @@ -614,7 +622,7 @@ describe("multi compiler", () => { pageErrors.push(error); }); - await pageOne.goto(`http://127.0.0.1:${port}/browser`, { + await page.goto(`http://127.0.0.1:${port}/browser`, { waitUntil: "networkidle0", }); @@ -623,6 +631,7 @@ describe("multi compiler", () => { `${originalBrowserEntryContent}// comment` ); + await page.waitForNavigation({ waitUntil: "networkidle0" }); await new Promise((resolve) => { const interval = setInterval(() => { if ( @@ -674,9 +683,9 @@ describe("multi compiler", () => { await server.start(); - const { page: pageOne, browser } = await runBrowser(); + const { page, browser } = await runBrowser(); - const serverResponse = await pageOne.goto( + const serverResponse = await page.goto( `http://127.0.0.1:${port}/server.js`, { waitUntil: "networkidle0", @@ -691,7 +700,7 @@ describe("multi compiler", () => { const pageErrors = []; const consoleMessages = []; - pageOne + page .on("console", (message) => { let text = message.text(); @@ -707,7 +716,7 @@ describe("multi compiler", () => { pageErrors.push(error); }); - await pageOne.goto(`http://127.0.0.1:${port}/browser`, { + await page.goto(`http://127.0.0.1:${port}/browser`, { waitUntil: "networkidle0", }); @@ -716,6 +725,8 @@ describe("multi compiler", () => { `${originalBrowserEntryContent}// comment` ); + await page.waitForNavigation({ waitUntil: "networkidle0" }); + await new Promise((resolve) => { const interval = setInterval(() => { if ( @@ -768,9 +779,9 @@ describe("multi compiler", () => { await server.start(); - const { page: pageOne, browser } = await runBrowser(); + const { page, browser } = await runBrowser(); - const serverResponse = await pageOne.goto( + const serverResponse = await page.goto( `http://127.0.0.1:${port}/server.js`, { waitUntil: "networkidle0", @@ -785,7 +796,7 @@ describe("multi compiler", () => { let pageErrors = []; let consoleMessages = []; - pageOne + page .on("console", (message) => { consoleMessages.push(message.text()); }) @@ -793,7 +804,7 @@ describe("multi compiler", () => { pageErrors.push(error); }); - await pageOne.goto(`http://127.0.0.1:${port}/browser`, { + await page.goto(`http://127.0.0.1:${port}/browser`, { waitUntil: "networkidle0", }); @@ -802,6 +813,7 @@ describe("multi compiler", () => { `${originalBrowserEntryContent}// comment` ); + await page.waitForNavigation({ waitUntil: "networkidle0" }); await new Promise((resolve) => { const interval = setInterval(() => { if ( @@ -825,7 +837,7 @@ describe("multi compiler", () => { pageErrors = []; consoleMessages = []; - await pageOne.goto(`http://127.0.0.1:${port}/browser`, { + await page.goto(`http://127.0.0.1:${port}/browser`, { waitUntil: "networkidle0", }); @@ -834,6 +846,7 @@ describe("multi compiler", () => { `${originalServerEntryContent}// comment` ); + await page.waitForNavigation({ waitUntil: "networkidle0" }); await new Promise((resolve) => { const interval = setInterval(() => { if ( @@ -883,9 +896,9 @@ describe("multi compiler", () => { await server.start(); - const { page: pageOne, browser } = await runBrowser(); + const { page, browser } = await runBrowser(); - const serverResponse = await pageOne.goto( + const serverResponse = await page.goto( `http://127.0.0.1:${port}/server.js`, { waitUntil: "networkidle0", @@ -900,7 +913,7 @@ describe("multi compiler", () => { let pageErrors = []; let consoleMessages = []; - pageOne + page .on("console", (message) => { consoleMessages.push(message.text()); }) @@ -908,7 +921,7 @@ describe("multi compiler", () => { pageErrors.push(error); }); - await pageOne.goto(`http://127.0.0.1:${port}/browser`, { + await page.goto(`http://127.0.0.1:${port}/browser`, { waitUntil: "networkidle0", }); @@ -917,6 +930,7 @@ describe("multi compiler", () => { `${originalServerEntryContent}// comment` ); + await page.waitForNavigation({ waitUntil: "networkidle0" }); await new Promise((resolve) => { const interval = setInterval(() => { if ( @@ -940,7 +954,7 @@ describe("multi compiler", () => { pageErrors = []; consoleMessages = []; - await pageOne.goto(`http://127.0.0.1:${port}/browser`, { + await page.goto(`http://127.0.0.1:${port}/browser`, { waitUntil: "networkidle0", }); @@ -949,6 +963,7 @@ describe("multi compiler", () => { `${originalBrowserEntryContent}// comment` ); + await page.waitForNavigation({ waitUntil: "networkidle0" }); await new Promise((resolve) => { const interval = setInterval(() => { if ( From 916a04b3832fae891db57dbb8a5bbc2369759794 Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Tue, 14 Sep 2021 01:21:37 +0300 Subject: [PATCH 14/14] test: improve --- test/e2e/multi-compiler.test.js | 258 -------------------------------- 1 file changed, 258 deletions(-) diff --git a/test/e2e/multi-compiler.test.js b/test/e2e/multi-compiler.test.js index 164ac074c2..2146f4dcff 100644 --- a/test/e2e/multi-compiler.test.js +++ b/test/e2e/multi-compiler.test.js @@ -138,29 +138,6 @@ describe("multi compiler", () => { fs.writeFileSync(pathToOneEntry, `${originalOneEntryContent}// comment`); await page.waitForNavigation({ waitUntil: "networkidle0" }); - await new Promise((resolve) => { - const interval = setInterval(() => { - if ( - consoleMessages.filter( - (item) => - item === "[webpack-dev-server] Hot Module Replacement enabled." - ).length === 2 && - consoleMessages.filter( - (item) => item === "[webpack-dev-server] Live Reloading enabled." - ).length === 2 && - consoleMessages.includes( - "[webpack-dev-server] App updated. Recompiling..." - ) && - consoleMessages.includes( - "[HMR] Cannot apply update. Need to do a full reload!" - ) - ) { - clearInterval(interval); - - resolve(); - } - }, 100); - }); expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); @@ -175,29 +152,6 @@ describe("multi compiler", () => { fs.writeFileSync(pathToTwoEntry, `${originalTwoEntryContent}// comment`); await page.waitForNavigation({ waitUntil: "networkidle0" }); - await new Promise((resolve) => { - const interval = setInterval(() => { - if ( - consoleMessages.filter( - (item) => - item === "[webpack-dev-server] Hot Module Replacement enabled." - ).length === 2 && - consoleMessages.filter( - (item) => item === "[webpack-dev-server] Live Reloading enabled." - ).length === 2 && - consoleMessages.includes( - "[webpack-dev-server] App updated. Recompiling..." - ) && - consoleMessages.includes( - "[HMR] Cannot apply update. Need to do a full reload!" - ) - ) { - clearInterval(interval); - - resolve(); - } - }, 100); - }); expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); @@ -259,26 +213,6 @@ describe("multi compiler", () => { fs.writeFileSync(pathToOneEntry, `${originalOneEntryContent}// comment`); await page.waitForNavigation({ waitUntil: "networkidle0" }); - await new Promise((resolve) => { - const interval = setInterval(() => { - if ( - consoleMessages.filter( - (item) => - item === "[webpack-dev-server] Hot Module Replacement enabled." - ).length === 2 && - consoleMessages.includes( - "[webpack-dev-server] App updated. Recompiling..." - ) && - consoleMessages.includes( - "[HMR] Cannot apply update. Need to do a full reload!" - ) - ) { - clearInterval(interval); - - resolve(); - } - }, 100); - }); expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); @@ -293,26 +227,6 @@ describe("multi compiler", () => { fs.writeFileSync(pathToTwoEntry, `${originalTwoEntryContent}// comment`); await page.waitForNavigation({ waitUntil: "networkidle0" }); - await new Promise((resolve) => { - const interval = setInterval(() => { - if ( - consoleMessages.filter( - (item) => - item === "[webpack-dev-server] Hot Module Replacement enabled." - ).length === 2 && - consoleMessages.includes( - "[webpack-dev-server] App updated. Recompiling..." - ) && - consoleMessages.includes( - "[HMR] Cannot apply update. Need to do a full reload!" - ) - ) { - clearInterval(interval); - - resolve(); - } - }, 100); - }); expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); @@ -366,22 +280,6 @@ describe("multi compiler", () => { fs.writeFileSync(pathToOneEntry, `${originalOneEntryContent}// comment`); await page.waitForNavigation({ waitUntil: "networkidle0" }); - await new Promise((resolve) => { - const interval = setInterval(() => { - if ( - consoleMessages.filter( - (item) => item === "[webpack-dev-server] Live Reloading enabled." - ).length === 2 && - consoleMessages.includes( - "[webpack-dev-server] App updated. Reloading..." - ) - ) { - clearInterval(interval); - - resolve(); - } - }, 100); - }); expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); @@ -396,22 +294,6 @@ describe("multi compiler", () => { fs.writeFileSync(pathToTwoEntry, `${originalTwoEntryContent}// comment`); await page.waitForNavigation({ waitUntil: "networkidle0" }); - await new Promise((resolve) => { - const interval = setInterval(() => { - if ( - consoleMessages.filter( - (item) => item === "[webpack-dev-server] Live Reloading enabled." - ).length === 2 && - consoleMessages.includes( - "[webpack-dev-server] App updated. Reloading..." - ) - ) { - clearInterval(interval); - - resolve(); - } - }, 100); - }); expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); @@ -465,22 +347,6 @@ describe("multi compiler", () => { fs.writeFileSync(pathToTwoEntry, `${originalTwoEntryContent}// comment`); await page.waitForNavigation({ waitUntil: "networkidle0" }); - await new Promise((resolve) => { - const interval = setInterval(() => { - if ( - consoleMessages.filter( - (item) => item === "[webpack-dev-server] Live Reloading enabled." - ).length === 2 && - consoleMessages.includes( - "[webpack-dev-server] App updated. Reloading..." - ) - ) { - clearInterval(interval); - - resolve(); - } - }, 100); - }); expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); @@ -495,22 +361,6 @@ describe("multi compiler", () => { fs.writeFileSync(pathToOneEntry, `${originalOneEntryContent}// comment`); await page.waitForNavigation({ waitUntil: "networkidle0" }); - await new Promise((resolve) => { - const interval = setInterval(() => { - if ( - consoleMessages.filter( - (item) => item === "[webpack-dev-server] Live Reloading enabled." - ).length === 2 && - consoleMessages.includes( - "[webpack-dev-server] App updated. Reloading..." - ) - ) { - clearInterval(interval); - - resolve(); - } - }, 100); - }); expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); @@ -632,29 +482,6 @@ describe("multi compiler", () => { ); await page.waitForNavigation({ waitUntil: "networkidle0" }); - await new Promise((resolve) => { - const interval = setInterval(() => { - if ( - consoleMessages.filter( - (item) => - item === "[webpack-dev-server] Hot Module Replacement enabled." - ).length === 2 && - consoleMessages.filter( - (item) => item === "[webpack-dev-server] Live Reloading enabled." - ).length === 2 && - consoleMessages.includes( - "[webpack-dev-server] App updated. Recompiling..." - ) && - consoleMessages.includes( - "[HMR] Cannot apply update. Need to do a full reload!" - ) - ) { - clearInterval(interval); - - resolve(); - } - }, 100); - }); expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); @@ -727,27 +554,6 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - await new Promise((resolve) => { - const interval = setInterval(() => { - if ( - consoleMessages.filter( - (item) => - item === "[webpack-dev-server] Hot Module Replacement enabled." - ).length === 2 && - consoleMessages.includes( - "[webpack-dev-server] App updated. Recompiling..." - ) && - consoleMessages.includes( - "[HMR] Cannot apply update. Need to do a full reload!" - ) - ) { - clearInterval(interval); - - resolve(); - } - }, 100); - }); - expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); @@ -814,22 +620,6 @@ describe("multi compiler", () => { ); await page.waitForNavigation({ waitUntil: "networkidle0" }); - await new Promise((resolve) => { - const interval = setInterval(() => { - if ( - consoleMessages.filter( - (item) => item === "[webpack-dev-server] Live Reloading enabled." - ).length === 2 && - consoleMessages.includes( - "[webpack-dev-server] App updated. Reloading..." - ) - ) { - clearInterval(interval); - - resolve(); - } - }, 100); - }); expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); @@ -847,22 +637,6 @@ describe("multi compiler", () => { ); await page.waitForNavigation({ waitUntil: "networkidle0" }); - await new Promise((resolve) => { - const interval = setInterval(() => { - if ( - consoleMessages.filter( - (item) => item === "[webpack-dev-server] Live Reloading enabled." - ).length === 2 && - consoleMessages.includes( - "[webpack-dev-server] App updated. Reloading..." - ) - ) { - clearInterval(interval); - - resolve(); - } - }, 100); - }); expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); @@ -931,22 +705,6 @@ describe("multi compiler", () => { ); await page.waitForNavigation({ waitUntil: "networkidle0" }); - await new Promise((resolve) => { - const interval = setInterval(() => { - if ( - consoleMessages.filter( - (item) => item === "[webpack-dev-server] Live Reloading enabled." - ).length === 2 && - consoleMessages.includes( - "[webpack-dev-server] App updated. Reloading..." - ) - ) { - clearInterval(interval); - - resolve(); - } - }, 100); - }); expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors"); @@ -964,22 +722,6 @@ describe("multi compiler", () => { ); await page.waitForNavigation({ waitUntil: "networkidle0" }); - await new Promise((resolve) => { - const interval = setInterval(() => { - if ( - consoleMessages.filter( - (item) => item === "[webpack-dev-server] Live Reloading enabled." - ).length === 2 && - consoleMessages.includes( - "[webpack-dev-server] App updated. Reloading..." - ) - ) { - clearInterval(interval); - - resolve(); - } - }, 100); - }); expect(consoleMessages).toMatchSnapshot("console messages"); expect(pageErrors).toMatchSnapshot("page errors");