Nuxt/test/presets/_tests.mjs

73 lines
1.8 KiB
JavaScript
Raw Normal View History

import { pathToFileURL } from 'url'
import { resolve } from 'pathe'
import destr from 'destr'
import { listen } from 'listhen'
import { $fetch } from 'ohmyfetch'
import execa from 'execa'
import { expect } from 'chai'
import { fixtureDir, resolveWorkspace } from '../utils.mjs'
2021-09-05 21:21:33 +00:00
const isBridge = Boolean(process.env.TEST_BRIDGE)
export function importModule (path) {
return import(pathToFileURL(path).href)
}
export function setupTest (preset) {
2021-09-05 21:21:33 +00:00
const fixture = isBridge ? 'bridge' : 'basic'
const rootDir = fixtureDir(fixture)
const buildDir = resolve(rootDir, '.nuxt-' + preset)
const ctx = {
rootDir,
outDir: resolve(buildDir, 'output'),
fetch: url => $fetch(url, { baseURL: ctx.server.url })
}
2021-09-22 20:01:25 +00:00
before('nitro build', async function () {
this.timeout(60000)
2021-09-05 21:21:33 +00:00
const nuxtCLI = isBridge
? resolve(ctx.rootDir, 'node_modules/nuxt/bin/nuxt.js')
2021-09-21 16:49:36 +00:00
: resolveWorkspace('packages/nuxi/bin/nuxi.cjs')
await execa('node', [nuxtCLI, 'build', ctx.rootDir], {
env: {
NITRO_PRESET: preset,
NITRO_BUILD_DIR: buildDir,
NITRO_OUTPUT_DIR: ctx.outDir,
NODE_ENV: 'production'
}
})
2021-09-22 20:01:25 +00:00
})
after('Cleanup', async () => {
if (ctx.server) {
await ctx.server.close()
}
})
return ctx
}
export async function startServer (ctx, handle) {
ctx.server = await listen(handle)
}
2021-09-22 20:01:25 +00:00
export function testNitroBehavior (_ctx, getHandler) {
let handler
it('setup handler', async () => {
handler = await getHandler()
})
it('SSR Works', async () => {
const { data } = await handler({ url: '/' })
expect(data).to.have.string('Hello Vue')
})
it('API Works', async () => {
const { data } = await handler({ url: '/api/hello' })
expect(destr(data)).to.have.string('Hello API')
})
}