next.js/test/e2e/app-dir/cache-components-bot-ua/cache-components-bot-ua.test.ts
cache-components-bot-ua.test.ts33 lines1.1 KB
import { nextTestSetup } from 'e2e-utils'

describe('cache-components PPR bot static generation bypass', () => {
  const { next } = nextTestSetup({
    files: __dirname,
  })

  it('should bypass static generation for DOM bot requests to avoid SSG_BAILOUT', async () => {
    const res = await next.fetch('/foo', {
      headers: {
        'user-agent': 'Googlebot',
      },
    })
    // With cache components + PPR enabled, DOM bots should behave like regular users
    // and use the fallback cache mechanism. This allows them to handle dynamic content
    // like Math.random() without triggering SSG_BAILOUT errors.
    expect(res.status).toBe(200)

    // Verify that the response contains the page content
    const html = await res.text()

    // Check that the page rendered successfully
    // With PPR, content is streamed via script tags
    expect(html).toContain('\\"children\\":\\"foo\\"')

    // Verify Math.random() was executed (check for a decimal number in the streamed content)
    expect(html).toMatch(/\\"children\\":0\.\d+/)

    // With PPR, content is streamed, but the important thing is that
    // the page rendered without a 500 error
  })
})
Quest for Codev2.0.0
/
SIGN IN