Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix development mode bug with pages with "+" and other special characters #28122

Merged
merged 3 commits into from Aug 17, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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))