UNPKG

@luminati-io/webdriverio8

Version:

Next-gen browser and mobile automation test framework for Node.js

67 lines 4.4 kB
import { ELEMENT_KEY } from '../../constants.js'; let actionIds = 0; export default class BaseAction { instance; #id; #type; #parameters; #instance; sequence = []; constructor(instance, type, params) { this.instance = instance; this.#instance = instance; this.#id = params?.id || `action${++actionIds}`; this.#type = type; this.#parameters = params?.parameters || {}; } toJSON() { return { id: this.#id, type: this.#type, parameters: this.#parameters, actions: this.sequence }; } /** * Inserts a pause action for the specified device, ensuring it idles for a tick. * @param duration idle time of tick */ pause(duration) { this.sequence.push({ type: 'pause', duration }); return this; } /** * Perform action sequence * @param skipRelease set to true if `releaseActions` command should not be invoked */ async perform(skipRelease = false) { /** * transform chainable / not resolved elements into WDIO elements */ for (const seq of this.sequence) { /** * continue if we don't deal with origin or elements within * origin at all */ if (!seq.origin || typeof seq.origin === 'string') { continue; } /** * resolve promise element */ if (typeof seq.origin.then === 'function') { await seq.origin.waitForExist(); seq.origin = await seq.origin; } if (!seq.origin[ELEMENT_KEY]) { throw new Error(`Couldn't find element for "${seq.type}" action sequence`); } seq.origin = { [ELEMENT_KEY]: seq.origin[ELEMENT_KEY] }; } await this.#instance.performActions([this.toJSON()]); if (!skipRelease) { await this.#instance.releaseActions(); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9hY3Rpb25zL2Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBWWhELElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQTtBQUVqQixNQUFNLENBQUMsT0FBTyxPQUFPLFVBQVU7SUFRYjtJQVBkLEdBQUcsQ0FBUTtJQUNYLEtBQUssQ0FBWTtJQUNqQixXQUFXLENBQWtCO0lBQzdCLFNBQVMsQ0FBcUI7SUFDcEIsUUFBUSxHQUFVLEVBQUUsQ0FBQTtJQUU5QixZQUNjLFFBQTZCLEVBQ3ZDLElBQWdCLEVBQ2hCLE1BQXlCO1FBRmYsYUFBUSxHQUFSLFFBQVEsQ0FBcUI7UUFJdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUE7UUFDekIsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLEVBQUUsRUFBRSxJQUFJLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQTtRQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFBO0lBQy9DLENBQUM7SUFFRCxNQUFNO1FBQ0YsT0FBTztZQUNILEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNaLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztZQUNoQixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDNUIsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3pCLENBQUE7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFFLFFBQWdCO1FBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQy9DLE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUUsV0FBVyxHQUFHLEtBQUs7UUFDOUI7O1dBRUc7UUFDSCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5Qjs7O2VBR0c7WUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2hELFNBQVE7WUFDWixDQUFDO1lBRUQ7O2VBRUc7WUFDSCxJQUFJLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ3hDLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQTtnQkFDL0IsR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUE7WUFDakMsQ0FBQztZQUVELElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLEdBQUcsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLENBQUE7WUFDOUUsQ0FBQztZQUVELEdBQUcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQTtRQUMzRCxDQUFDO1FBRUQsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDcEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBQ3pDLENBQUM7SUFDTCxDQUFDO0NBQ0oifQ==