import Browser from '../utils/browser' import { buildFixture } from '../utils/build' const browser = new Browser() describe('basic browser with ssr page', () => { let page = null let url let html beforeAll(async () => { const fixture = await buildFixture('basic') url = fixture.url html = fixture.html await browser.start({ // slowMo: 50, // headless: false }) }) // Stop browser afterAll(async () => { if (page) await page.close() await browser.close() }) test('validate ssr', () => { const htmlTag = html.match(/]+)>/)[0] expect(htmlTag).toContain('data-vue-meta-server-rendered') expect(htmlTag).toContain(' lang="en" ') expect(htmlTag).toContain(' amp ') expect(htmlTag).not.toContain('allowfullscreen') expect(html.match(/]*>(.*?)<\/title>/)[1]).toBe('Home | Vue Meta Test') expect(html.match(/]+type="application\/ld\+json"[^>]*>(.*?) JSON.parse(sanitizeCheck[0])).not.toThrow() expect(() => JSON.parse(sanitizeCheck[1])).toThrow() expect(() => JSON.parse(sanitizeCheck[2])).not.toThrow() }) test('Open /', async () => { page = await browser.page(url) expect(await page.$attr('html', 'data-vue-meta-server-rendered')).toBe(null) expect(await page.$attr('html', 'lang')).toBe('en') expect(await page.$attr('html', 'amp')).toBe('') expect(await page.$attr('html', 'allowfullscreen')).toBe(null) expect(await page.$attr('head', 'test')).toBe('true') expect(await page.$text('h1')).toBe('Basic') expect(await page.$text('title')).toBe('Home | Vue Meta Test') expect(await page.$$eval('meta', metas => metas.length)).toBe(2) let sanitizeCheck = await page.$$text('script') sanitizeCheck.push(...(await page.$$text('noscript'))) sanitizeCheck = sanitizeCheck.filter(v => !!v) expect(sanitizeCheck.length).toBe(3) expect(() => JSON.parse(sanitizeCheck[0])).not.toThrow() expect(() => JSON.parse(sanitizeCheck[1])).not.toThrow() expect(() => JSON.parse(sanitizeCheck[2])).not.toThrow() }) test('/about', async () => { const { hook } = await page.vueMeta.navigate('/about', false) await hook expect(await page.$text('title')).toBe('About') expect(await page.$$eval('meta', metas => metas.length)).toBe(1) }) })