diff --git a/test/integration/serverless/pages/fetch-cjs.js b/test/integration/serverless/pages/fetch-cjs.js new file mode 100644 index 0000000000000000000000000000000000000000..e6e82b763201fb615969bea54af51f4d2802e7c0 --- /dev/null +++ b/test/integration/serverless/pages/fetch-cjs.js @@ -0,0 +1,29 @@ +const fetch = require('isomorphic-unfetch') +const React = require('react') + +export default class extends React.Component { + static async getInitialProps () { + try { + const res = await fetch('') + const text = await res.text() + console.log(text) + return { text } + } catch (err) { + if (err.message.includes('is not a function')) { + return { failed: true, error: err.toString() } + } + + return { error: err.toString() } + } + } + render () { + const { failed, error, text } = this.props + return ( +
+ {failed ? 'failed' : ''} + {error} +
{text}
+
+ ) + } +} diff --git a/test/integration/serverless/pages/index.js b/test/integration/serverless/pages/index.js index 9abcbc9f8ee191b40a5c369f6b09a0d692d53a79..082130dabb8408064a3eed6f039fc91a9705d721 100644 --- a/test/integration/serverless/pages/index.js +++ b/test/integration/serverless/pages/index.js @@ -6,6 +6,9 @@ export default () => { fetch page + + fetch cjs page + ) } diff --git a/test/integration/serverless/test/index.test.js b/test/integration/serverless/test/index.test.js index 8b1db591d459e28817a41eb0c6b65f0fc4b44c8f..bad46a1025aee209e634b17e353bbd57a2d4c61d 100644 --- a/test/integration/serverless/test/index.test.js +++ b/test/integration/serverless/test/index.test.js @@ -111,7 +111,7 @@ describe('Serverless', () => { const browser = await webdriver(appPort, '/') try { const text = await browser - .elementByCss('a') + .elementByCss('#fetchlink') .click() .waitForElementByCss('.fetch-page') .elementByCss('#text') @@ -123,6 +123,30 @@ describe('Serverless', () => { } }) + it('should render correctly when importing isomorphic-unfetch CJS', async () => { + const url = `http://localhost:${appPort}/fetch-cjs` + const res = await fetch(url) + expect(res.status).toBe(200) + const text = await res.text() + expect(text.includes('failed')).toBe(false) + }) + + it('should render correctly when importing isomorphic-unfetch CJS on the client side', async () => { + const browser = await webdriver(appPort, '/') + try { + const text = await browser + .elementByCss('#fetchcjslink') + .click() + .waitForElementByCss('.fetch-cjs-page') + .elementByCss('#text') + .text() + + expect(text).toMatch(/fetch page/) + } finally { + await browser.close() + } + }) + it('should not have combined client-side chunks', () => { expect(readdirSync(chunksDir).length).toBeGreaterThanOrEqual(2) const buildId = readFileSync(buildIdFile, 'utf8').trim()