Bin
2025-12-16 9e0b2ba2c317b1a86212f24cbae3195ad1f3dbfa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
const Helper = require("@codeceptjs/helper");
 
const getPage = (h) => {
  return (h.Puppeteer ?? h.Playwright).page;
};
 
class MouseActions extends Helper {
  clickAt(x, y, buttonName = "left") {
    const page = getPage(this.helpers);
 
    return page.mouse.click(x, y, { button: buttonName, delay: 80 });
  }
  dblClickAt(x, y, buttonName = "left") {
    const page = getPage(this.helpers);
 
    return page.mouse.click(x, y, { button: buttonName, delay: 80, clickCount: 2 });
  }
  pressMouseDown(buttonName = "left") {
    const page = getPage(this.helpers);
 
    return page.mouse.down({ button: buttonName });
  }
  pressMouseUp(buttonName = "left") {
    const page = getPage(this.helpers);
 
    return page.mouse.up({ button: buttonName });
  }
  moveMouse(x, y, steps = 1) {
    const page = getPage(this.helpers);
 
    return page.mouse.move(x, y, { steps });
  }
 
  /**
   * Mouse wheel action
   * @param {{deltaY: number, deltaX: number}} deltas
   */
  mouseWheel({ deltaX = 0, deltaY = 0 }) {
    const page = getPage(this.helpers);
 
    return page.mouse.wheel(deltaX, deltaY);
  }
 
  /**
   * Drag action from point to point
   * @param {object} from
   * @param {number} from.x
   * @param {number} from.y
   * @param {object} to
   * @param {number} to.x
   * @param {number} to.y
   * @param {'left'|'right'|'middle'} [button='left']
   * @param {number} [steps=1]
   * @returns {Promise<void>}
   */
  async dragAndDropMouse(from, to, button = "left", steps = 1) {
    const page = getPage(this.helpers);
 
    await page.mouse.move(from.x, from.y, { steps });
    await page.mouse.down({ button });
    await page.mouse.move(to.x, to.y, { steps });
    await page.mouse.up({ button });
  }
}
 
module.exports = MouseActions;