Last active
August 22, 2016 12:44
-
-
Save joakin/6704ca0127e40083a67fc6cdd2c5b6b7 to your computer and use it in GitHub Desktop.
Hovercards EL tests
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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