UNPKG

artes

Version:

The package provide step definitions and user writes feature files, and the package handles automation, with optional POM files and custom step definitions.

146 lines (137 loc) 4.64 kB
const path = require("path"); const { element, context, selector, moduleConfig, } = require("../imports/commons"); const { frame } = require("../stepFunctions/frameActions"); const mouse = { click: async (selector) => { await element(selector).click(); }, multipleElementClick: async (selectors) => { const elementCount = await frame.count(selectors); for (let i = 0; i < elementCount; i++) { await frame.nth(selectors, i).click(); } }, forceClick: async (selector) => { await element(selector).click({ force: true }); }, clickPosition: async (selector, x, y) => { await element(selector).click({ position: { x: x, y: y } }); }, forceClickPosition: async (selector, x, y) => { await element(selector).click({ force: true, position: { x: x, y: y } }); }, rightClick: async (selector) => { await element(selector).click({ button: "right" }); }, multipleElementRightClick: async (elements) => { const elementCount = await frame.count(elements); for (let i = 0; i < elementCount; i++) { await frame.nth(elements, i).click({ button: "right" }); } }, forceRightClick: async (selector) => { await element(selector).click({ force: true, button: "right" }); }, leftClick: async (selector) => { await element(selector).click({ button: "left" }); }, multipleElementLeftClick: async (elements) => { const elementCount = await frame.count(elements); for (let i = 0; i < elementCount; i++) { await frame.nth(elements, i).click({ button: "left" }); } }, forceLeftClick: async (selector) => { await element(selector).click({ force: true, button: "left" }); }, doubleClick: async (selector) => { await element(selector).dblclick(); }, multipleElementDoubleClick: async (elements) => { const elementCount = await frame.count(elements); for (let i = 0; i < elementCount; i++) { await frame.nth(elements, i).dblclick(); } }, forceDoubleClick: async (selector) => { await element(selector).dblclick({ force: true }); }, forceDoubleClickPosition: async (selector, x, y) => { await element(selector).dblclick({ force: true, position: { x: x, y: y } }); }, hover: async (selector) => { await element(selector).hover(); }, forceHover: async (selector) => { await element(selector).hover({ force: true }); }, hoverPosition: async (selector, x, y) => { await element(selector).hover({ x: x, y: y }); }, forceHoverPosition: async (selector, x, y) => { await element(selector).hover({ force: true, x: x, y: y }); }, focus: async (selector) => { await element(selector).focus(); }, forceFocus: async (selector) => { await element(selector).focus({ force: true }); }, focusPosition: async (selector, x, y) => { await element(selector).focus({ x: x, y: y }); }, forceFocusPosition: async (selector, x, y) => { await element(selector).focus({ force: true, x: x, y: y }); }, dragAndDrop: async (sourceSelector, targetSelector) => { const source = await element(sourceSelector); const target = await element(targetSelector); await source.dragTo(target); }, dragAndDropPosition: async (sourceSelector, x, y) => { await element(sourceSelector).dragTo({ targetPosition: { x: x, y: y } }); }, selectByValue: async (selector, value) => { const valueArray = value.split(","); value !== "" ? await element(selector).selectOption(valueArray) : ""; }, selectByText: async (selector, value) => { value !== "" ? await element(selector).selectOption(value) : ""; }, check: async (selector) => { await element(selector).check(); }, multipleElementCheck: async (selectors) => { const elementCount = await frame.count(selectors); for (let i = 0; i < elementCount; i++) { await frame.nth(selectors, i).check(); } }, uncheck: async (selector) => { await element(selector).uncheck(); }, multipleElementUncheck: async (selectors) => { const elementCount = await frame.count(selectors); for (let i = 0; i < elementCount; i++) { await frame.nth(selectors, i).uncheck(); } }, scrollIntoViewIfNeeded: async (selector) => { await element(selector).scrollIntoViewIfNeeded(); }, upload: async (filePath, fileInput) => { const file = selector(filePath); const fileChooserPromise = context.page.waitForEvent("filechooser"); await element(fileInput).click(); const fileChooser = await fileChooserPromise; await fileChooser.setFiles(path.join(moduleConfig.projectPath, file)); }, }; module.exports = { mouse, };