Nuxt/test/e2e/children.patch.browser.test.js

167 lines
5.4 KiB
JavaScript
Raw Permalink Normal View History

2018-03-19 08:31:25 +00:00
import Browser from '../utils/browser'
2018-10-24 13:53:34 +00:00
import { loadFixture, getPort, Nuxt, waitFor } from '../utils'
2018-03-16 19:52:17 +00:00
2018-03-18 23:41:14 +00:00
let port
const browser = new Browser()
2023-10-16 21:23:38 +00:00
const url = route => 'http://127.0.0.1:' + port + route
2017-11-02 13:24:43 +00:00
let nuxt = null
let page
const dates = {}
2017-11-02 13:24:43 +00:00
2018-03-18 23:41:14 +00:00
describe('children patch (browser)', () => {
2018-03-18 19:31:32 +00:00
beforeAll(async () => {
const options = await loadFixture('children')
nuxt = new Nuxt(options)
await nuxt.ready()
2018-03-18 23:41:14 +00:00
port = await getPort()
2023-10-16 21:23:38 +00:00
await nuxt.server.listen(port, '127.0.0.1')
2018-03-18 23:41:14 +00:00
})
2018-03-18 19:31:32 +00:00
test('Start browser', async () => {
expect.assertions(0) // suppress 'no assertions' warning
await browser.start({
// slowMo: 50,
// headless: false
})
})
test('Loading /patch and keep', async () => {
2018-03-18 19:31:32 +00:00
page = await browser.page(url('/patch'))
2018-03-18 19:31:32 +00:00
const h1 = await page.$text('h1')
expect(h1.includes('patch:')).toBe(true)
const h2 = await page.$text('h2')
expect(h2).toBe('Index')
dates.patch = await page.$text('[data-date-patch]')
2017-11-02 13:24:43 +00:00
})
describe('refresh child component if param changed', () => {
test('Navigate to /patch/1', async () => {
const { hook } = await page.nuxt.navigate('/patch/1', false)
await hook
2017-11-02 13:24:43 +00:00
const h2 = await page.$text('h2')
expect(h2.includes('_id:')).toBe(true)
dates.id = await page.$text('[data-date-id]')
2017-11-02 13:24:43 +00:00
expect(dates.patch).toBe(await page.$text('[data-date-patch]'))
})
2017-11-02 13:24:43 +00:00
test('Navigate to /patch/2', async () => {
await page.nuxt.navigate('/patch/2')
const date = await page.$text('[data-date-id]')
2017-11-02 13:24:43 +00:00
expect(await page.$text('h3')).toBe('Index')
expect(dates.patch).toBe(await page.$text('[data-date-patch]'))
expect(+dates.id < +date).toBe(true)
dates.id = date
})
2018-03-18 19:31:32 +00:00
})
2017-11-02 13:24:43 +00:00
describe('resue component if only query is changed', () => {
test('Navigate to /patch/2?test=true', async () => {
await page.nuxt.navigate('/patch/2?test=true')
expect(dates.patch).toBe(await page.$text('[data-date-patch]'))
expect(dates.id).toBe(await page.$text('[data-date-id]'))
})
2017-11-02 13:24:43 +00:00
test('Navigate to /patch/2#test', async () => {
await page.nuxt.navigate('/patch/2#test')
expect(dates.patch).toBe(await page.$text('[data-date-patch]'))
expect(dates.id).toBe(await page.$text('[data-date-id]'))
})
2018-03-18 19:31:32 +00:00
})
2017-11-02 13:24:43 +00:00
describe('refresh child component if param is changed', () => {
test('Navigate to /patch/2/child', async () => {
await page.nuxt.navigate('/patch/2/child')
dates.child = await page.$text('[data-date-child]')
dates.slug = await page.$text('[data-date-child-slug]')
2017-11-02 13:24:43 +00:00
expect(dates.patch).toBe(await page.$text('[data-date-patch]'))
expect(dates.id).toBe(await page.$text('[data-date-id]'))
expect(+dates.child > +dates.id).toBe(true)
expect(+dates.slug > +dates.child).toBe(true)
})
2017-11-02 13:24:43 +00:00
test('Navigate to /patch/2/child/1', async () => {
await page.nuxt.navigate('/patch/2/child/1')
const date = await page.$text('[data-date-child-slug]')
2017-11-02 13:24:43 +00:00
expect(dates.patch).toBe(await page.$text('[data-date-patch]'))
expect(dates.id).toBe(await page.$text('[data-date-id]'))
expect(dates.child).toBe(await page.$text('[data-date-child]'))
expect(+date > +dates.slug).toBe(true)
dates.slug = date
})
2017-11-02 13:24:43 +00:00
test('Navigate to /patch/2/child/1?foo=bar', async () => {
await page.nuxt.navigate('/patch/2/child/1?foo=bar')
2017-11-02 13:24:43 +00:00
expect(dates.patch).toBe(await page.$text('[data-date-patch]'))
expect(dates.id).toBe(await page.$text('[data-date-id]'))
expect(dates.child).toBe(await page.$text('[data-date-child]'))
expect(dates.slug).toBe(await page.$text('[data-date-child-slug]'))
})
test('Search a country', async () => {
const countries = await page.$$text('[data-test-search-result]')
expect(countries.length).toBe(5)
await page.type('[data-test-search-input]', 'gu')
await waitFor(250)
const newCountries = await page.$$text('[data-test-search-result]', true)
expect(newCountries.length).toBe(1)
expect(newCountries).toEqual(['Guinea'])
expect(await page.nuxt.routeData()).toEqual({
path: '/patch/2/child/1',
query: {
foo: 'bar',
q: 'gu'
}
})
})
2018-03-18 19:31:32 +00:00
})
2017-11-02 13:24:43 +00:00
describe('reuse child component if param is changed but watchParam is false', () => {
test('Navigate to /patch/2/reuse', async () => {
await page.nuxt.navigate('/patch/2/reuse')
dates.slug = await page.$text('[data-date-slug]')
expect(dates.patch).toBe(await page.$text('[data-date-patch]'))
expect(dates.id).toBe(await page.$text('[data-date-id]'))
expect(+dates.child > +dates.id).toBe(true)
})
test('Navigate to /patch/2/reuse/1', async () => {
await page.nuxt.navigate('/patch/2/reuse/1')
expect(dates.patch).toBe(await page.$text('[data-date-patch]'))
expect(dates.id).toBe(await page.$text('[data-date-id]'))
expect(dates.slug).toBe(await page.$text('[data-date-slug]'))
})
test('Navigate to /patch/2/reuse/2', async () => {
await page.nuxt.navigate('/patch/2/reuse/2')
expect(dates.patch).toBe(await page.$text('[data-date-patch]'))
expect(dates.id).toBe(await page.$text('[data-date-id]'))
expect(dates.slug).toBe(await page.$text('[data-date-slug]'))
2018-03-18 19:31:32 +00:00
})
2017-11-02 13:24:43 +00:00
})
2018-03-18 19:31:32 +00:00
// Close server and ask nuxt to stop listening to file changes
2018-03-30 09:20:16 +00:00
afterAll(async () => {
2018-03-18 19:31:32 +00:00
await nuxt.close()
})
2018-03-30 09:20:16 +00:00
// Stop browser
afterAll(async () => {
2018-03-18 19:31:32 +00:00
await page.close()
2018-03-18 23:41:14 +00:00
await browser.close()
2018-03-18 19:31:32 +00:00
})
2017-11-02 13:24:43 +00:00
})