diff --git a/packages/next/client/dev/error-overlay/hot-dev-client.js b/packages/next/client/dev/error-overlay/hot-dev-client.js index 57f967866ac856b2c3227d7a24c166f97b4e04e4..a010fcdcd8b22c758496d96e951fe3a05d33e757 100644 --- a/packages/next/client/dev/error-overlay/hot-dev-client.js +++ b/packages/next/client/dev/error-overlay/hot-dev-client.js @@ -213,6 +213,12 @@ function handleErrors(errors) { // Do not attempt to reload now. // We will reload on next success instead. + if (process.env.__NEXT_TEST_MODE) { + if (self.__NEXT_HMR_CB) { + self.__NEXT_HMR_CB(formatted.errors[0]) + self.__NEXT_HMR_CB = null + } + } } function tryDismissErrorOverlay() { diff --git a/test/acceptance/helpers.js b/test/acceptance/helpers.js index 6312e99c98fc3b63da7ae134036e2e5973523963..f5f14d5c96a3de8979f0f20fe1448b88cde6dd9b 100644 --- a/test/acceptance/helpers.js +++ b/test/acceptance/helpers.js @@ -69,7 +69,7 @@ export async function sandbox(id = nanoid()) { console.log('Application re-loaded.') // Slow down tests a bit: - await new Promise(resolve => setTimeout(resolve, 250)) + await new Promise(resolve => setTimeout(resolve, 750)) return false } if (status === 'success') { @@ -83,8 +83,8 @@ export async function sandbox(id = nanoid()) { await new Promise(resolve => setTimeout(resolve, 30)) } - // Slow down tests a bit: - await new Promise(resolve => setTimeout(resolve, 250)) + // Slow down tests a bit (we don't know how long re-rendering takes): + await new Promise(resolve => setTimeout(resolve, 750)) return true }, async remove(fileName) { @@ -103,6 +103,16 @@ export async function sandbox(id = nanoid()) { ) } }, + async getOverlayContent() { + await browser.waitForElementByCss('iframe', 10000) + const hasIframe = await browser.hasElementByCssSelector('iframe') + if (!hasIframe) { + throw new Error('Unable to find overlay') + } + return browser.eval( + `document.querySelector('iframe').contentWindow.document.body.innerHTML` + ) + }, }, function cleanup() { async function _cleanup() {