Skip to content

Commit

Permalink
test: split test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
SukkaW committed Aug 27, 2022
1 parent f7669de commit c3cd6c1
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 23 deletions.
31 changes: 31 additions & 0 deletions test/integration/script-loader/strictmode/pages/onready.js
@@ -0,0 +1,31 @@
import Script from 'next/script'
import Link from 'next/link'

if (typeof window !== 'undefined') {
window.remoteScriptsOnReadyCalls ??= 0
window.inlineScriptsOnReadyCalls ??= 0
}

const Page = () => {
return (
<div className="container">
<Link href="/page9">Page 9</Link>
<div id="text"></div>
<Script
src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.min.js"
onReady={() => {
window.remoteScriptsOnReadyCalls++
}}
/>
<Script
id="i-am-an-inline-script-that-has-on-ready"
dangerouslySetInnerHTML={{ __html: 'console.log("inline script!")' }}
onReady={() => {
window.inlineScriptsOnReadyCalls++
}}
/>
</div>
)
}

export default Page
46 changes: 23 additions & 23 deletions test/integration/script-loader/test/index.test.js
Expand Up @@ -17,6 +17,7 @@ import cheerio from 'cheerio'

let appDir = join(__dirname, '../base')
let appWithPartytownMissingDir = join(__dirname, '../partytown-missing')
let appWithStrictModeDir = join(__dirname, '../strictmode')
let server
let appPort

Expand Down Expand Up @@ -217,28 +218,6 @@ describe('Next.js Script - Primary Strategies', () => {
}
})

// https://github.com/vercel/next.js/issues/39993
it('onReady should only fires once after load event in dev mode (issue #39993)', async () => {
let browser
// we will start a dedicated dev server for this test case only (scoped)
let devAppPort
let devApp

try {
devAppPort = await findPort()
devApp = await launchApp(appDir, devAppPort)
browser = await webdriver(devAppPort, '/page10')

// wait for jQuery to be loaded
await waitFor(1000)
expect(await browser.eval(`window.remoteScriptsOnReadyCalls`)).toBe(1)
expect(await browser.eval(`window.inlineScriptsOnReadyCalls`)).toBe(1)
} finally {
if (browser) await browser.close()
if (devApp) await killApp(devApp)
}
})

it('priority beforeInteractive with inline script', async () => {
const html = await renderViaHTTP(appPort, '/page5')
const $ = cheerio.load(html)
Expand All @@ -256,7 +235,6 @@ describe('Next.js Script - Primary Strategies', () => {
let browser
try {
browser = await webdriver(appPort, '/page7')

await waitFor(1000)

const logs = await browser.log()
Expand Down Expand Up @@ -306,3 +284,25 @@ describe('Next.js Script - Primary Strategies', () => {
)
})
})

describe('Next.js Script - Strict Mode', () => {
let devAppPort
let devApp
// https://github.com/vercel/next.js/issues/39993
it('onReady should only fires once after load event in dev mode (issue #39993)', async () => {
let browser
try {
devAppPort = await findPort()
devApp = await launchApp(appWithStrictModeDir, devAppPort)
browser = await webdriver(devAppPort, '/onready')

// wait for jQuery to be loaded
await waitFor(1000)
expect(await browser.eval(`window.remoteScriptsOnReadyCalls`)).toBe(1)
expect(await browser.eval(`window.inlineScriptsOnReadyCalls`)).toBe(1)
} finally {
if (browser) await browser.close()
if (devApp) await killApp(devApp)
}
})
})

0 comments on commit c3cd6c1

Please sign in to comment.