Skip to content

Instantly share code, notes, and snippets.

@joakin
Last active August 22, 2016 12:44
Show Gist options
  • Save joakin/6704ca0127e40083a67fc6cdd2c5b6b7 to your computer and use it in GitHub Desktop.
Save joakin/6704ca0127e40083a67fc6cdd2c5b6b7 to your computer and use it in GitHub Desktop.
Hovercards EL tests
var $ = window.jQuery
var log = []
window.mw.trackSubscribe('event', (schema, e) => {
log.push([e.action, JSON.stringify(e)])
})
var STEPS = {
find_link: () => {
window.testel = $('a').filter((i, v) => v.textContent === 'Test')
console.assert(window.testel.length === 1)
},
hover_link: () => window.testel.trigger('mouseover'),
hover_out_link: () => window.testel.trigger('mouseleave'),
wait_for_hovercard: () => new Promise((resolve) => {
var t = setInterval(() => {
if ($('.mwe-popups').length) {
clearInterval(t); resolve()
}
}, 1000)
}),
next_tick: () => new Promise((resolve) => setTimeout(() => resolve(), 1)),
wait_dwell_time: () => new Promise((resolve) => setTimeout(() => resolve(), 300))
}
var lastTest = Promise.resolve()
function test (name, steps, expected) {
lastTest = lastTest.then(() =>
steps.reduce((prev, step) => prev.then(() => {
/* console.log('Running', step); */ return STEPS[step]()
}), Promise.resolve())
.then(() => {
console.log(`\n${name}\n`)
return new Promise((resolve) =>
setTimeout(() => {
log.forEach(([action, event], i) =>
console.log(expected[i] === action ? '✅' : `❌ expected ${expected[i]}, got`, action))
expected.slice(log.length).forEach((action) =>
console.log(`❌ expected ${action}, got nothing`))
log.length && console.log('Raw data', log)
log = []
resolve()
}, 2000)) // Wait for events
}))
}
function single_link_interaction_tests () {
console.log(`
SINGLE LINK INTERACTION
=======================
`)
test('Hover and wait for card', [
'find_link',
'hover_link',
'wait_for_hovercard',
'hover_out_link'
], [
'pageLoaded',
'dismissed'
])
test('Quick/accidental hover', [
'find_link',
'hover_link',
'next_tick',
'hover_out_link'
], [])
test('Longer quick/accidental hover', [
'find_link',
'hover_link',
'wait_dwell_time',
'hover_out_link'
], [
'dwelledButAbandoned'
])
test('Longer hover + out + long hover', [
'find_link',
'hover_link',
'wait_dwell_time',
'hover_out_link',
'wait_dwell_time',
'hover_link',
'wait_for_hovercard',
'hover_out_link'
], [
'dwelledButAbandoned',
'dismissed'
])
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment