next.js/test/e2e/app-dir/next-after-app-static/generate-static-params/index.test.ts
index.test.ts68 lines2.1 KB
/* eslint-env jest */
import { nextTestSetup } from 'e2e-utils'
import * as Log from './utils/log'
import { waitForNoRedbox, retry } from '../../../../lib/next-test-utils'

describe('after() in generateStaticParams', () => {
  const { next, isNextDev, skipped } = nextTestSetup({
    files: __dirname,
    skipDeployment: true, // reading CLI logs to observe after
    skipStart: true,
  })

  if (skipped) return

  let currentCliOutputIndex = 0
  beforeEach(() => {
    currentCliOutputIndex = next.cliOutput.length
  })

  const getLogs = () => {
    if (next.cliOutput.length < currentCliOutputIndex) {
      // cliOutput shrank since we started the test, so something (like a `sandbox`) reset the logs
      currentCliOutputIndex = 0
    }
    return next.cliOutput.slice(currentCliOutputIndex)
  }

  if (isNextDev) {
    it('runs after callbacks when visiting a page in dev', async () => {
      await next.start()
      const browser = await next.browser('/one/a')

      expect(await browser.elementByCss('body').text()).toBe('Param: a')
      await waitForNoRedbox(browser)
      await retry(async () => {
        expect(Log.readCliLogs(getLogs())).toContainEqual({
          source: '[generateStaticParams] /one/[myParam]',
        })
      })

      await browser.get(new URL('/two/d', next.url).href)
      expect(await browser.elementByCss('body').text()).toBe('Param: d')
      await waitForNoRedbox(browser)
      await retry(async () => {
        expect(Log.readCliLogs(getLogs())).toContainEqual({
          source: '[generateStaticParams] /two/[myParam]',
        })
      })
    })
  } else {
    it('runs after callbacks for each page during build', async () => {
      const buildResult = await next.build()
      expect(buildResult?.exitCode).toBe(0)

      {
        // after should run at build time
        const logsFromAfter = Log.readCliLogs(getLogs())
        expect(logsFromAfter).toContainEqual({
          source: '[generateStaticParams] /one/[myParam]',
        })
        expect(logsFromAfter).toContainEqual({
          source: '[generateStaticParams] /two/[myParam]',
        })
      }
    })
  }
})
Quest for Codev2.0.0
/
SIGN IN