@luminati-io/webdriverio8
Version:
Next-gen browser and mobile automation test framework for Node.js
30 lines • 2.21 kB
JavaScript
/**
* check if element is stable (an element is considered unstable when it is animating/moving)
* @param {HTMLElement} elem element to check
* @param {Function} done callback function to be called when done
* @return {void}
*/
export default function isElementStable(elem, done) {
if (document.visibilityState === 'hidden') {
throw Error('You are are checking for animations on an inactive tab, animations do not run for inactive tabs');
}
try {
const previousPosition = elem.getBoundingClientRect();
// wait for two consecutive frames to make sure there are no animations
requestAnimationFrame(() => {
requestAnimationFrame(() => {
const currentPosition = elem.getBoundingClientRect();
for (const prop in previousPosition) {
if (previousPosition[prop] !== currentPosition[prop]) {
done(false);
}
}
done(true);
});
});
}
catch (error) {
done(false);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNFbGVtZW50U3RhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvaXNFbGVtZW50U3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sVUFBVSxlQUFlLENBQUMsSUFBaUIsRUFBRSxJQUFvQztJQUMzRixJQUFJLFFBQVEsQ0FBQyxlQUFlLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDeEMsTUFBTSxLQUFLLENBQUMsaUdBQWlHLENBQUMsQ0FBQTtJQUNsSCxDQUFDO0lBQ0QsSUFBSSxDQUFDO1FBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQTtRQUNyRCx1RUFBdUU7UUFDdkUscUJBQXFCLENBQUMsR0FBRyxFQUFFO1lBQ3ZCLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtnQkFDdkIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUE7Z0JBQ3BELEtBQUssTUFBTSxJQUFJLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxnQkFBZ0IsQ0FBRSxJQUFzQixDQUFDLEtBQUssZUFBZSxDQUFFLElBQXNCLENBQUMsRUFBRSxDQUFDO3dCQUN6RixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7b0JBQ2YsQ0FBQztnQkFDTCxDQUFDO2dCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNkLENBQUMsQ0FBQyxDQUFBO1FBQ04sQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNmLENBQUM7QUFDTCxDQUFDIn0=