UNPKG

@luminati-io/webdriverio8

Version:

Next-gen browser and mobile automation test framework for Node.js

30 lines 2.21 kB
/** * 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=