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

Specify PPR test dimension via environment variable only #74031

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,59 +1,60 @@
import { nextTestSetup } from 'e2e-utils'

describe('static-shell-debugging', () => {
describe.each([
{ ppr: true, debugging: true },
{ ppr: false, debugging: false },
])('ppr = $ppr, debugging = $debugging', (context) => {
const { next, skipped, isNextDev } = nextTestSetup({
files: __dirname,
// This test skips deployment because env vars that are doubled underscore prefixed
// are not supported. This is also intended to be used in development.
skipDeployment: true,
env: {
__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING: context.debugging
? '1'
: undefined,
},
nextConfig: {
experimental: { ppr: context.ppr },
},
})
const ppr = Boolean(process.env.__NEXT_EXPERIMENTAL_PPR)
const context = {
ppr,
debugging: ppr,
}

const { next, skipped, isNextDev } = nextTestSetup({
files: __dirname,
// This test skips deployment because env vars that are doubled underscore prefixed
// are not supported. This is also intended to be used in development.
skipDeployment: true,
env: {
__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING: context.debugging
? '1'
: undefined,
},
nextConfig: {
experimental: { ppr: context.ppr },
},
})

if (skipped) return
if (skipped) return

if (context.debugging && context.ppr) {
it('should only render the static shell', async () => {
const res = await next.fetch('/?__nextppronly=1')
expect(res.status).toBe(200)
if (context.debugging && context.ppr) {
it('should only render the static shell', async () => {
const res = await next.fetch('/?__nextppronly=1')
expect(res.status).toBe(200)

const html = await res.text()
expect(html).toContain('Fallback')
expect(html).not.toContain('Dynamic')
})
const html = await res.text()
expect(html).toContain('Fallback')
expect(html).not.toContain('Dynamic')
})

// The __nextppronly query param is currently only supported in dev mode.
if (isNextDev) {
it('should skip hydration to avoid blanking out the page', async () => {
const browser = await next.browser('/?__nextppronly=1', {
waitHydration: false,
})
// The __nextppronly query param is currently only supported in dev mode.
if (isNextDev) {
it('should skip hydration to avoid blanking out the page', async () => {
const browser = await next.browser('/?__nextppronly=1', {
waitHydration: false,
})

expect(await browser.elementByCss('div').text()).toBe('Fallback')
expect(await browser.elementByCss('div').text()).toBe('Fallback')

// Must not log the page error "Error: Connection closed."
expect(await browser.log()).toEqual([])
})
}
} else {
it('should render the full page', async () => {
const res = await next.fetch('/?__nextppronly=1')
expect(res.status).toBe(200)

const html = await res.text()
expect(html).toContain('Fallback')
expect(html).toContain('Dynamic')
// Must not log the page error "Error: Connection closed."
expect(await browser.log()).toEqual([])
})
}
})
} else {
it('should render the full page', async () => {
const res = await next.fetch('/?__nextppronly=1')
expect(res.status).toBe(200)

const html = await res.text()
expect(html).toContain('Fallback')
expect(html).toContain('Dynamic')
})
}
})
Loading