import { nextTestSetup } from 'e2e-utils'
describe('@next/third-parties basic usage', () => {
const { next } = nextTestSetup({
files: __dirname,
dependencies: {
'@next/third-parties': 'canary',
},
})
it('renders YoutubeEmbed', async () => {
const $ = await next.render$('/youtube-embed')
const baseContainer = $('[data-ntpc="YouTubeEmbed"]')
const youtubeContainer = $('lite-youtube')
expect(baseContainer.length).toBe(1)
expect(youtubeContainer.length).toBe(1)
})
it('renders GoogleMapsEmbed', async () => {
const $ = await next.render$('/google-maps-embed')
const baseContainer = $('[data-ntpc="GoogleMapsEmbed"]')
const mapContainer = $(
'[src^="https://www.google.com/maps/embed/v1/place?key=XYZ"]'
)
expect(baseContainer.length).toBe(1)
expect(mapContainer.length).toBe(1)
})
it('renders GTM', async () => {
const browser = await next.browser('/gtm')
await browser.waitForElementByCss('script#_next-gtm')
await browser.elementByCss('script#_next-gtm-init')
await browser.elementByCss(
'script[src^="https://www.googletagmanager.com/gtm.js?id=GTM-XYZ"]'
)
const dataLayer = await browser.eval('window.dataLayer')
expect(dataLayer.length).toBe(1)
await browser.elementByCss('#gtm-send').click()
const dataLayer2 = await browser.eval('window.dataLayer')
expect(dataLayer2.length).toBe(2)
})
it('renders GA', async () => {
const browser = await next.browser('/ga')
await browser.waitForElementByCss('script#_next-ga')
await browser.elementByCss('script#_next-ga-init')
await browser.elementByCss(
'script[src^="https://www.googletagmanager.com/gtag/js?id=GA-XYZ"]'
)
const dataLayer = await browser.eval('window.dataLayer')
expect(dataLayer.length).toBe(4)
await browser.elementByCss('#ga-send').click()
const dataLayer2 = await browser.eval('window.dataLayer')
expect(dataLayer2.length).toBe(5)
})
})