diff --git a/test/Routes.test.js b/test/Routes.test.js index a34cc1b7cf..df5f875ff5 100644 --- a/test/Routes.test.js +++ b/test/Routes.test.js @@ -21,7 +21,7 @@ describe('Routes', () => { describe('without headers', () => { beforeAll((done) => { - server = helper.start(config, {}, done); + server = helper.startAwaitingCompilation(config, {}, done); req = request(server.app); }); diff --git a/test/helper.js b/test/helper.js index 4feb6b4e88..412652cdaa 100644 --- a/test/helper.js +++ b/test/helper.js @@ -6,7 +6,9 @@ const Server = require('../lib/Server'); let server; module.exports = { - start(config, options, done) { + // start server, returning the full setup of the server + // (both the server and the compiler) + startFullSetup(config, options, done) { // eslint-disable-next-line no-undefined if (options.quiet === undefined) { options.quiet = true; @@ -21,7 +23,28 @@ module.exports = { done(); }); - return server; + return { + server, + compiler, + }; + }, + startAwaitingCompilation(config, options, done) { + let readyCount = 0; + const ready = () => { + readyCount += 1; + if (readyCount === 2) { + done(); + } + }; + + const fullSetup = this.startFullSetup(config, options, ready); + // wait for compilation, since dev server can start before this + // https://github.com/webpack/webpack-dev-server/issues/847 + fullSetup.compiler.hooks.done.tap('done', ready); + return fullSetup.server; + }, + start(config, options, done) { + return this.startFullSetup(config, options, done).server; }, close(done) { if (server) {