85 lines
2.4 KiB
JavaScript
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')
|
|
})
|
|
})
|