forked from vercel/next.js
/
utils.ts
49 lines (43 loc) · 1.63 KB
/
utils.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import fs from 'fs-extra'
import { join } from 'path'
import { fetchViaHTTP } from 'next-test-utils'
import { createNext, FileRef } from 'e2e-utils'
import { NextInstance } from 'test/lib/next-modes/base'
jest.setTimeout(2 * 60 * 1000)
export function runTests(example = '') {
let next: NextInstance
beforeAll(async () => {
const srcDir = join(__dirname, '../../../../examples', example)
const srcFiles = await fs.readdir(srcDir)
const packageJson = await fs.readJson(join(srcDir, 'package.json'))
next = await createNext({
files: srcFiles.reduce((prev, file) => {
if (file !== 'package.json') {
prev[file] = new FileRef(join(srcDir, file))
}
return prev
}, {} as { [key: string]: FileRef }),
dependencies: {
...packageJson.dependencies,
...packageJson.devDependencies,
},
installCommand: ({ dependencies }) => {
const pkgs = Object.keys(dependencies).reduce((prev, cur) => {
prev.push(`${cur}@${dependencies[cur]}`)
return prev
}, [] as string[])
return `yarn set version 3.1.1 && yarn config set enableGlobalCache true && yarn config set compressionLevel 0 && yarn add ${pkgs.join(
' '
)}`
},
buildCommand: `yarn next build --no-lint`,
startCommand: (global as any).isNextDev ? `yarn next` : `yarn next start`,
})
})
afterAll(() => next?.destroy())
it(`should compile and serve the index page correctly ${example}`, async () => {
const res = await fetchViaHTTP(next.url, '/')
expect(res.status).toBe(200)
expect(await res.text()).toContain('<html')
})
}