Skip to content

Commit 374d8e3

Browse files
committed
(#403) Both pressButton and releaseButton now respect configured autoDelay
1 parent b410d7f commit 374d8e3

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

lib/mouse.class.spec.ts

+44
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,50 @@ describe("Mouse class", () => {
177177
expect(pressed).toBe(SUT);
178178
expect(released).toBe(SUT);
179179
});
180+
181+
describe("autoDelayMs", () => {
182+
it("pressButton should respect configured delay", async () => {
183+
// GIVEN
184+
const SUT = new MouseClass(providerRegistryMock);
185+
const delay = 100;
186+
SUT.config.autoDelayMs = delay;
187+
188+
const mouseMock = jest.fn();
189+
providerRegistryMock.getMouse = jest.fn(() => mockPartial<MouseProviderInterface>({
190+
setMouseDelay: jest.fn(),
191+
pressButton: mouseMock
192+
}));
193+
194+
// WHEN
195+
const start = Date.now();
196+
await SUT.pressButton(Button.LEFT);
197+
const duration = Date.now() - start;
198+
199+
// THEN
200+
expect(duration).toBeGreaterThanOrEqual(delay);
201+
});
202+
203+
it("releaseButton should respect configured delay", async () => {
204+
// GIVEN
205+
const SUT = new MouseClass(providerRegistryMock);
206+
const delay = 100;
207+
SUT.config.autoDelayMs = delay;
208+
209+
const mouseMock = jest.fn();
210+
providerRegistryMock.getMouse = jest.fn(() => mockPartial<MouseProviderInterface>({
211+
setMouseDelay: jest.fn(),
212+
releaseButton: mouseMock
213+
}));
214+
215+
// WHEN
216+
const start = Date.now();
217+
await SUT.releaseButton(Button.LEFT);
218+
const duration = Date.now() - start;
219+
220+
// THEN
221+
expect(duration).toBeGreaterThanOrEqual(delay);
222+
});
223+
});
180224
});
181225

182226
describe("click and doubleClick", () => {

lib/mouse.class.ts

+4
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ export class MouseClass {
187187
public async pressButton(btn: Button): Promise<MouseClass> {
188188
return new Promise<MouseClass>(async (resolve, reject) => {
189189
try {
190+
await sleep(this.config.autoDelayMs);
190191
await this.providerRegistry.getMouse().pressButton(btn);
191192
resolve(this);
192193
} catch (e) {
@@ -202,6 +203,7 @@ export class MouseClass {
202203
public async releaseButton(btn: Button): Promise<MouseClass> {
203204
return new Promise<MouseClass>(async (resolve, reject) => {
204205
try {
206+
await sleep(this.config.autoDelayMs);
205207
await this.providerRegistry.getMouse().releaseButton(btn);
206208
resolve(this);
207209
} catch (e) {
@@ -217,6 +219,7 @@ export class MouseClass {
217219
public async click(btn: Button): Promise<MouseClass> {
218220
return new Promise<MouseClass>(async (resolve, reject) => {
219221
try {
222+
await sleep(this.config.autoDelayMs);
220223
await this.providerRegistry.getMouse().click(btn);
221224
resolve(this);
222225
} catch (e) {
@@ -232,6 +235,7 @@ export class MouseClass {
232235
public async doubleClick(btn: Button): Promise<MouseClass> {
233236
return new Promise<MouseClass>(async (resolve, reject) => {
234237
try {
238+
await sleep(this.config.autoDelayMs);
235239
await this.providerRegistry.getMouse().doubleClick(btn);
236240
resolve(this);
237241
} catch (e) {

0 commit comments

Comments
 (0)