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()