mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-23 14:15:13 +00:00
fffe741986
Add stdout/stderr to console helpers Remove separate nosubfolders test file in favor of inclusion in basic.generate Add build.stats to silence webpack output Add .always to after hooks: (1) fixes issue with basic.dev test that watch.js is empty when one of the test fails and (2) fixes that sometimes when running multiple tests that failed after eachother the port is still used as the server did not automatically get killed Change all init nuxt before test to serial tests and add tests for DONE and OPEN logs
147 lines
4.2 KiB
JavaScript
147 lines
4.2 KiB
JavaScript
import test from 'ava'
|
|
import { resolve } from 'path'
|
|
import { Nuxt, Builder, Utils } from '..'
|
|
import * as browser from './helpers/browser'
|
|
import { interceptLog } from './helpers/console'
|
|
|
|
const port = 4014
|
|
const url = (route) => 'http://localhost:' + port + route
|
|
|
|
let nuxt = null
|
|
let page
|
|
const dates = {}
|
|
|
|
// Init nuxt.js and create server listening on localhost:4000
|
|
test.serial('Init Nuxt.js', async t => {
|
|
const options = {
|
|
rootDir: resolve(__dirname, 'fixtures/children'),
|
|
buildDir: '.nuxt-patch',
|
|
dev: false,
|
|
build: {
|
|
stats: false
|
|
}
|
|
}
|
|
|
|
const logSpy = await interceptLog(async () => {
|
|
nuxt = new Nuxt(options)
|
|
await new Builder(nuxt).build()
|
|
await nuxt.listen(port, 'localhost')
|
|
})
|
|
|
|
t.true(logSpy.calledWithMatch('DONE'))
|
|
t.true(logSpy.calledWithMatch('OPEN'))
|
|
})
|
|
|
|
test.serial('Start browser', async t => {
|
|
t.plan(0) // suppress 'no assertions' warning
|
|
await browser.start({
|
|
// slowMo: 50,
|
|
// headless: false
|
|
})
|
|
})
|
|
|
|
test.serial('Loading /patch and keep ', async t => {
|
|
page = await browser.page(url('/patch'))
|
|
|
|
const h1 = await page.$text('h1')
|
|
t.true(h1.includes('patch:'))
|
|
const h2 = await page.$text('h2')
|
|
t.is(h2, 'Index')
|
|
dates.patch = await page.$text('[data-date-patch]')
|
|
})
|
|
|
|
test.serial('Navigate to /patch/1', async t => {
|
|
const { hook } = await page.nuxt.navigate('/patch/1', false)
|
|
const loading = await page.nuxt.loadingData()
|
|
t.is(loading.show, true)
|
|
await hook
|
|
|
|
const h2 = await page.$text('h2')
|
|
t.true(h2.includes('_id:'))
|
|
dates.id = await page.$text('[data-date-id]')
|
|
|
|
t.is(dates.patch, await page.$text('[data-date-patch]'))
|
|
})
|
|
|
|
test.serial('Navigate to /patch/2', async t => {
|
|
await page.nuxt.navigate('/patch/2')
|
|
const date = await page.$text('[data-date-id]')
|
|
|
|
t.is(await page.$text('h3'), 'Index')
|
|
t.is(dates.patch, await page.$text('[data-date-patch]'))
|
|
t.true(+dates.id < +date)
|
|
dates.id = date
|
|
})
|
|
|
|
test.serial('Navigate to /patch/2?test=true', async t => {
|
|
await page.nuxt.navigate('/patch/2?test=true')
|
|
t.is(dates.patch, await page.$text('[data-date-patch]'))
|
|
t.is(dates.id, await page.$text('[data-date-id]'))
|
|
})
|
|
|
|
test.serial('Navigate to /patch/2#test', async t => {
|
|
await page.nuxt.navigate('/patch/2#test')
|
|
t.is(dates.patch, await page.$text('[data-date-patch]'))
|
|
t.is(dates.id, await page.$text('[data-date-id]'))
|
|
})
|
|
|
|
test.serial('Navigate to /patch/2/child', async t => {
|
|
await page.nuxt.navigate('/patch/2/child')
|
|
dates.child = await page.$text('[data-date-child]')
|
|
dates.slug = await page.$text('[data-date-child-slug]')
|
|
|
|
t.is(dates.patch, await page.$text('[data-date-patch]'))
|
|
t.is(dates.id, await page.$text('[data-date-id]'))
|
|
t.true(+dates.child > +dates.id)
|
|
t.true(+dates.slug > +dates.child)
|
|
})
|
|
|
|
test.serial('Navigate to /patch/2/child/1', async t => {
|
|
await page.nuxt.navigate('/patch/2/child/1')
|
|
const date = await page.$text('[data-date-child-slug]')
|
|
|
|
t.is(dates.patch, await page.$text('[data-date-patch]'))
|
|
t.is(dates.id, await page.$text('[data-date-id]'))
|
|
t.is(dates.child, await page.$text('[data-date-child]'))
|
|
t.true(+date > +dates.slug)
|
|
dates.slug = date
|
|
})
|
|
|
|
test.serial('Navigate to /patch/2/child/1?foo=bar', async t => {
|
|
await page.nuxt.navigate('/patch/2/child/1?foo=bar')
|
|
|
|
t.is(dates.patch, await page.$text('[data-date-patch]'))
|
|
t.is(dates.id, await page.$text('[data-date-id]'))
|
|
t.is(dates.child, await page.$text('[data-date-child]'))
|
|
t.is(dates.slug, await page.$text('[data-date-child-slug]'))
|
|
})
|
|
|
|
test.serial('Search a country', async t => {
|
|
const countries = await page.$$text('[data-test-search-result]')
|
|
t.is(countries.length, 5)
|
|
|
|
await page.type('[data-test-search-input]', 'gu')
|
|
|
|
await Utils.waitFor(250)
|
|
const newCountries = await page.$$text('[data-test-search-result]')
|
|
t.is(newCountries.length, 1)
|
|
t.deepEqual(newCountries, ['Guinea'])
|
|
t.deepEqual(await page.nuxt.routeData(), {
|
|
path: '/patch/2/child/1',
|
|
query: {
|
|
foo: 'bar',
|
|
q: 'gu'
|
|
}
|
|
})
|
|
})
|
|
|
|
// Close server and ask nuxt to stop listening to file changes
|
|
test.after.always('Closing server and nuxt.js', async t => {
|
|
await nuxt.close()
|
|
})
|
|
|
|
test.after.always('Stop browser', async t => {
|
|
await page.close()
|
|
await browser.stop()
|
|
})
|