next.js/test/e2e/app-dir/ppr-errors/ppr-errors.test.ts
ppr-errors.test.ts54 lines1.7 KB
import { nextBuild } from 'next-test-utils'
// In order for the global isNextStart to be set
import 'e2e-utils'

// TODO(NAR-423): Migrate to Cache Components.
describe.skip('ppr build errors', () => {
  ;(Boolean((global as any).isNextStart) ? describe : describe.skip)(
    'production only',
    () => {
      let stderr: string
      let stdout: string

      beforeAll(async () => {
        const output = await nextBuild(__dirname, [], {
          stderr: true,
          stdout: true,
        })
        stderr = output.stderr
        stdout = output.stdout
      })

      describe('within a suspense boundary', () => {
        it('should fail the build for uncaught prerender errors', async () => {
          expect(stderr).toContain(
            'Error occurred prerendering page "/regular-error-suspense-boundary".'
          )
          expect(stderr).toContain(
            'Error occurred prerendering page "/re-throwing-error".'
          )
        })
      })

      describe('outside of a suspense boundary', () => {
        it('should fail the build for uncaught errors', async () => {
          expect(stderr).toContain(
            'Error occurred prerendering page "/regular-error".'
          )
          expect(stderr).toContain(
            'Error occurred prerendering page "/no-suspense-boundary-re-throwing-error".'
          )
        })
      })

      describe('when a postpone call is caught and logged it should', () => {
        it('should include a message telling why', async () => {
          expect(stdout).toContain(
            'User land logged error: Route /logging-error needs to bail out of prerendering at this point because it used cookies.'
          )
        })
      })
    }
  )
})
Quest for Codev2.0.0
/
SIGN IN