Skip to content

Commit

Permalink
fix development mode bug with pages with "+" and other special charac…
Browse files Browse the repository at this point in the history
…ters (#28122)

* add encodeURIComponent so certain characters don't bug out (fixes #22099)

* add integration test for pr #28122
  • Loading branch information
dave committed Aug 17, 2021
1 parent 5d4d880 commit 1b2e079
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 1 deletion.
4 changes: 3 additions & 1 deletion packages/next/client/dev/on-demand-entries-utils.js
Expand Up @@ -19,7 +19,9 @@ export function setupPing(assetPrefix, pathnameFn, retry) {
closePing()

evtSource = getEventSourceWrapper({
path: `${assetPrefix}/_next/webpack-hmr?page=${currentPage}`,
path: `${assetPrefix}/_next/webpack-hmr?page=${encodeURIComponent(
currentPage
)}`,
timeout: 5000,
})

Expand Down
@@ -0,0 +1,9 @@
export default function Page() {
return (
<>
if this page reloads during development mode, then the browser did not
connect to the on demand entries handler. see on-demand-entry-handler.ts
and on-demand-entries-utils.js
</>
)
}
30 changes: 30 additions & 0 deletions test/integration/development-hmr-refresh/test/index.test.js
@@ -0,0 +1,30 @@
/* eslint-env jest */

import { join } from 'path'
import webdriver from 'next-webdriver'
import { findPort, launchApp, killApp, waitFor } from 'next-test-utils'

jest.setTimeout(1000 * 60 * 2)

const appDir = join(__dirname, '../')

let app
let appPort

beforeAll(async () => {
appPort = await findPort()
app = await launchApp(appDir, appPort)
})

// see issue #22099
it('page should not reload when the file is not changed', async () => {
const browser = await webdriver(appPort, '/with+Special&Chars=')

browser.eval(`window.doesNotReloadCheck = true`)

await waitFor(10000)

expect(await browser.eval('window.doesNotReloadCheck')).toBe(true)
})

afterAll(() => killApp(app))

0 comments on commit 1b2e079

Please sign in to comment.