| | import { nextTestSetup } from 'e2e-utils' |
| | import { pathExists, readdir } from 'fs-extra' |
| | import { join } from 'path' |
| | import { retry } from 'next-test-utils' |
| |
|
| | describe('CPU Profiling - next dev', () => { |
| | const { next, isNextDev } = nextTestSetup({ |
| | files: __dirname, |
| | startCommand: 'pnpm next dev --experimental-cpu-prof', |
| | dependencies: {}, |
| | }) |
| |
|
| | if (!isNextDev) { |
| | it('skip for production mode', () => {}) |
| | return |
| | } |
| |
|
| | it('should create CPU profile files on exit', async () => { |
| | const profileDir = join(next.testDir, '.next', 'cpu-profiles') |
| |
|
| | |
| | const res = await next.fetch('/') |
| | expect(res.status).toBe(200) |
| |
|
| | |
| | await next.stop('SIGTERM') |
| |
|
| | |
| | const cpuProfiles = await retry(async () => { |
| | const profileDirExists = await pathExists(profileDir) |
| | expect(profileDirExists).toBe(true) |
| |
|
| | const files = await readdir(profileDir) |
| | const profiles = files.filter((f: string) => f.endsWith('.cpuprofile')) |
| | expect(profiles.length).toBeGreaterThanOrEqual(1) |
| | return profiles |
| | }) |
| |
|
| | |
| | for (const profile of cpuProfiles) { |
| | expect(profile).toMatch( |
| | /^(dev-main|dev-server)-\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}\.cpuprofile$/ |
| | ) |
| | } |
| | }) |
| | }) |
| |
|