taiko
Version:
Taiko is a Node.js library for automating Chromium based browsers
31 lines (28 loc) • 1 kB
JavaScript
const {
description,
waitAndGetActionableElement,
} = require("./pageActionChecks");
const { scrollToElement } = require("./scrollTo");
const { defaultConfig } = require("../config");
const { highlightElement } = require("../elements/elementHelper");
const { doActionAwaitingNavigation } = require("../doActionAwaitingNavigation");
const domHandler = require("../handlers/domHandler");
const inputHandler = require("../handlers/inputHandler");
async function hover(selector, options) {
const e = await waitAndGetActionableElement(selector, options.force);
await scrollToElement(e);
if (defaultConfig.headful) {
await highlightElement(e);
}
const { x, y } = await domHandler.boundingBoxCenter(e.get());
const option = {
x: x,
y: y,
};
await doActionAwaitingNavigation(options, async () => {
option.type = "mouseMoved";
return inputHandler.dispatchMouseEvent(option);
});
return `Hovered over the ${description(selector, true)}`;
}
module.exports = { hover };