diff --git a/test/integration/render-error-on-module-error/pages/_error.js b/test/integration/render-error-on-module-error/pages/_error.js new file mode 100644 index 0000000000000..225d21841cc08 --- /dev/null +++ b/test/integration/render-error-on-module-error/pages/_error.js @@ -0,0 +1,3 @@ +export default function Error() { + return

Error Rendered

+} diff --git a/test/integration/render-error-on-module-error/pages/index.js b/test/integration/render-error-on-module-error/pages/index.js new file mode 100644 index 0000000000000..961ffc73f1185 --- /dev/null +++ b/test/integration/render-error-on-module-error/pages/index.js @@ -0,0 +1,9 @@ +if (typeof window !== 'undefined') { + throw new Error('fail module evaluation') +} + +const Index = () => 'hi' + +Index.getInitialProps = () => ({}) + +export default Index diff --git a/test/integration/render-error-on-module-error/test/index.test.js b/test/integration/render-error-on-module-error/test/index.test.js new file mode 100644 index 0000000000000..ca56e55f6cd30 --- /dev/null +++ b/test/integration/render-error-on-module-error/test/index.test.js @@ -0,0 +1,45 @@ +/* eslint-env jest */ +/* global jasmine */ +import { + nextBuild, + nextServer, + startApp, + stopApp, + waitFor, +} from 'next-test-utils' +import webdriver from 'next-webdriver' +import { join } from 'path' + +jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000 * 60 * 2 + +const appDir = join(__dirname, '..') + +let appPort +let app +let server + +describe('Module Init Error', () => { + beforeAll(async () => { + await nextBuild(appDir) + app = nextServer({ + dir: join(__dirname, '../'), + dev: false, + quiet: true, + }) + + server = await startApp(app) + appPort = server.address().port + }) + afterAll(() => stopApp(server)) + + it('should render error page', async () => { + const browser = await webdriver(appPort, '/') + try { + await waitFor(2000) + const text = await browser.elementByCss('#error-p').text() + expect(text).toBe('Error Rendered') + } finally { + await browser.close() + } + }) +})