MouseActions.js 1.7 KB

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