next.js/test/production/standalone-mode/runtimeServerDeploymentId/index.test.ts
index.test.ts89 lines2.0 KB
import { NextInstance, createNext } from 'e2e-utils'
import fs from 'fs-extra'
import {
  findPort,
  initNextServerScript,
  killApp,
  renderViaHTTP,
} from 'next-test-utils'
import { join } from 'path'

let MY_DEPLOYMENT_ID = 'test-deployment-id'

describe('standalone mode: runtimeServerDeploymentId', () => {
  let next: NextInstance
  let server
  let appPort
  let output = ''

  beforeAll(async () => {
    next = await createNext({
      files: __dirname,
      env: {
        NEXT_DEPLOYMENT_ID: MY_DEPLOYMENT_ID,
      },
      skipStart: true,
      disableAutoSkewProtection: true,
    })
    let { exitCode } = await next.build()
    // eslint-disable-next-line jest/no-standalone-expect
    expect(exitCode).toBe(0)

    await fs.move(
      join(next.testDir, '.next/standalone'),
      join(next.testDir, 'standalone')
    )

    for (const file of await fs.readdir(next.testDir)) {
      if (file !== 'standalone') {
        await fs.remove(join(next.testDir, file))
        console.log('removed', file)
      }
    }

    const testServer = join(next.testDir, 'standalone/server.js')
    appPort = await findPort()
    server = await initNextServerScript(
      testServer,
      /- Local:/,
      {
        ...process.env,
        ...next.env,
        HOSTNAME: '::',
        PORT: appPort,
        NEXT_DEPLOYMENT_ID: MY_DEPLOYMENT_ID,
      },
      undefined,
      {
        cwd: next.testDir,
        onStdout(msg) {
          output += msg
        },
        onStderr(msg) {
          output += msg
        },
      }
    )
  })
  afterAll(async () => {
    await next.destroy()
    if (server) await killApp(server)
  })

  it.each([
    'app-page',
    'app-page-edge',
    'app-route',
    'app-route-edge',
    'pages-page',
    'pages-page-edge',
    'api/pages-route',
    'api/pages-route-edge',
  ])('it should load %s', async (name) => {
    expect(output).toContain(`- Local:`)

    let html = await renderViaHTTP(appPort, `/${name}`)
    expect(html).toContain(`Hello from ${name}`)
  })
})
Quest for Codev2.0.0
/
SIGN IN