From d38e1f1e4b23421a34c5b05cd61ee30cd8cbfbda Mon Sep 17 00:00:00 2001 From: goosewobbler Date: Wed, 11 Dec 2024 16:43:19 +0000 Subject: [PATCH] feat: support both options and capabilities --- packages/wdio-electron-service/src/service.ts | 4 +- .../test/service.spec.ts | 38 +++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/packages/wdio-electron-service/src/service.ts b/packages/wdio-electron-service/src/service.ts index b021dd14a..459fb91b4 100644 --- a/packages/wdio-electron-service/src/service.ts +++ b/packages/wdio-electron-service/src/service.ts @@ -71,12 +71,12 @@ export default class ElectronWorkerService implements Services.ServiceInstance { } async before( - _capabilities: WebdriverIO.Capabilities, + capabilities: WebdriverIO.Capabilities, _specs: string[], instance: WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser, ): Promise { const browser = instance as WebdriverIO.Browser; - const { clearMocks, resetMocks, restoreMocks } = this.#globalOptions; + const { clearMocks, resetMocks, restoreMocks } = this.#globalOptions || capabilities[CUSTOM_CAPABILITY_NAME]; this.#clearMocks = clearMocks ?? false; this.#resetMocks = resetMocks ?? false; diff --git a/packages/wdio-electron-service/test/service.spec.ts b/packages/wdio-electron-service/test/service.spec.ts index 102afb38b..11338442b 100644 --- a/packages/wdio-electron-service/test/service.spec.ts +++ b/packages/wdio-electron-service/test/service.spec.ts @@ -117,6 +117,44 @@ describe('beforeTest', () => { expect(restoreAllMocks).toHaveBeenCalled(); }); + + describe('when setting options in capabilities', () => { + it('should clear all mocks when `clearMocks` is set in capabilities', async () => { + instance = new WorkerService(); + const browser = { + waitUntil: vi.fn().mockResolvedValue(true), + execute: vi.fn().mockResolvedValue(true), + } as unknown as WebdriverIO.Browser; + await instance.before({ 'wdio:electronServiceOptions': { clearMocks: true } }, [], browser); + await instance.beforeTest(); + + expect(clearAllMocks).toHaveBeenCalled(); + }); + + it('should reset all mocks when `resetMocks` is set in capabilities', async () => { + instance = new WorkerService(); + const browser = { + waitUntil: vi.fn().mockResolvedValue(true), + execute: vi.fn().mockResolvedValue(true), + } as unknown as WebdriverIO.Browser; + await instance.before({ 'wdio:electronServiceOptions': { resetMocks: true } }, [], browser); + await instance.beforeTest(); + + expect(resetAllMocks).toHaveBeenCalled(); + }); + + it('should restore all mocks when `restoreMocks` is set in capabilities', async () => { + instance = new WorkerService(); + const browser = { + waitUntil: vi.fn().mockResolvedValue(true), + execute: vi.fn().mockResolvedValue(true), + } as unknown as WebdriverIO.Browser; + await instance.before({ 'wdio:electronServiceOptions': { restoreMocks: true } }, [], browser); + await instance.beforeTest(); + + expect(restoreAllMocks).toHaveBeenCalled(); + }); + }); }); describe('afterCommand', () => {