Files
vue-google-maps-community-fork/test/marker-with-infowindow.js
2021-02-13 16:09:48 +01:00

85 lines
2.4 KiB
JavaScript

import Lab from 'lab'
import assert from 'assert'
import {getPage, loadFile} from './test-setup/test-common'
export const lab = Lab.script()
lab.experiment('Marker / Infowindow tests', {timeout: 15000}, function () {
let page = null
async function loadPage () {
return loadFile(page, './test-pages/test-marker-with-infowindow.html', {
waitUntil: 'domcontentloaded'
})
}
lab.before({timeout: 15000}, getPage(p => { page = p }))
lab.test('Clicking the marker triggers the infowindow', async function () {
await loadPage()
await page.evaluate(() => {
// Ensure that the map has been created
return window.theVue.$refs.map.$mapPromise
.then(() => {
// Give some more time for the marker to initialize
return new Promise(resolve => setTimeout(resolve, 100))
})
})
// Is the infowindow hidden?
assert(await page.evaluate(() => {
return !document.getElementById('thediv') || (
document.getElementById('thediv').offsetWidth === 0 &&
document.getElementById('thediv').offsetHeight === 0
)
}),
'infowindow is hidden')
// Clicked is false
assert(await page.evaluate(() => {
return !window.theVue.clicked
}),
'marker is not clicked')
// Obtain the center
const [x, y] = await page.evaluate(() => {
const el = window.theVue.$refs.map.$el
return Promise.resolve([
el.offsetLeft + 0.5 * el.offsetWidth,
el.offsetTop + 0.5 * el.offsetHeight,
])
})
await page.mouse.click(x, y - 20)
// Clicked is now true!
assert(await page.evaluate(() => {
return new Promise(resolve => setTimeout(resolve, 100))
.then(() => {
return window.theVue.clicked
})
}),
'marker is clicked')
// Infowindow is now open!
assert(await page.evaluate(() => {
return document.getElementById('thediv').offsetWidth > 10
}),
'#thediv is visible')
// shut the infowindow
assert(await page.evaluate(() => {
window.theVue.infoWindow.open = false
return new Promise(resolve => setTimeout(resolve, 100))
.then(() => {
return !document.getElementById('thediv') || (
document.getElementById('thediv').offsetWidth === 0 &&
document.getElementById('thediv').offsetHeight === 0
)
})
}), 'setting open=false closes #thediv')
})
})