UNPKG

@serenity-js/webdriverio

Version:

Adapter that integrates @serenity-js/web with the latest stable version of WebdriverIO, enabling Serenity/JS reporting and using the Screenplay Pattern to write web and mobile test scenarios

26 lines (18 loc) 861 B
import type { WebdriverProtocolErrorCode } from './WebdriverProtocolErrorCode.js'; export class WebdriverIOErrorHandler { constructor(private readonly handlers: Map<WebdriverProtocolErrorCode, (error: Error) => Promise<void> | void> = new Map()) { } async executeIfHandled<T>(error: Error, action: () => Promise<T> | T): Promise<T> { if (! this.handlers.has(error.name as WebdriverProtocolErrorCode)) { throw error; } await this.handlers.get(error.name as WebdriverProtocolErrorCode)(error); return action(); } setHandlerFor(errorType: WebdriverProtocolErrorCode, handler: (error: Error) => Promise<void> | void): void { this.handlers.set(errorType, handler); } unsetHandlerFor(errorType: WebdriverProtocolErrorCode): void { this.handlers.delete(errorType); } }