UNPKG

selenium-state-machine

Version:
105 lines (104 loc) 3.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.waitDisappear = exports.waitStale = exports.waitInteractive = void 0; const selenium_webdriver_1 = require("selenium-webdriver"); const Error_1 = require("./Error"); const WebElementDependency_1 = require("./WebElementDependency"); const Dependency_1 = require("./Dependency"); /** * Wait state for interactivity * @param dependency name of the dependency to be checked * @param timeout timeout in ms * @returns StateData */ function waitInteractive(dependency, timeout) { return { f: async (provide, dependencies) => { const dep = dependencies[dependency]; if (dep instanceof (WebElementDependency_1.WebElementDependency) && dep.value instanceof selenium_webdriver_1.WebElement) { if (await dep.value.isDisplayed() && await dep.value.isEnabled()) { return provide.nothing().next(); } else { return provide.nothing().tryAgain(); } } else if (dep === undefined) { throw new Error_1.CriticalError(`unknown dependency: "${dependency}"`); } else { throw new Error_1.CriticalError(`"${dependency}" is not WebElement dependency`); } }, timeout }; } exports.waitInteractive = waitInteractive; /** * Wait until dependency is stale. * @param dependency dependency to be checked * @param timeout timeout in ms * @returns StateData */ function waitStale(dependency, timeout) { return { f: async (provide, dependencies) => { const dep = dependencies[dependency]; if (dep instanceof (WebElementDependency_1.WebElementDependency)) { try { await dep.value.isDisplayed(); return provide.nothing().tryAgain(); } catch (e) { if (e instanceof Dependency_1.StaleDependencyReferenceError) { return provide.nothing().next(); } throw e; } } else if (dep === undefined) { throw new Error_1.CriticalError(`unknown dependency: "${dependency}"`); } else { throw new Error_1.CriticalError(`"${dependency}" is not WebElement dependency`); } }, timeout }; } exports.waitStale = waitStale; /** * Wait until dependency is not displayed or becomes stale. * @param dependency name of the dependency * @param timeout timeout in ms * @returns StateData */ function waitDisappear(dependency, timeout) { return { f: async (provide, dependencies) => { const dep = dependencies[dependency]; if (dep instanceof (WebElementDependency_1.WebElementDependency)) { try { if (await dep.value.isDisplayed() === false) { return provide.nothing().next(); } return provide.nothing().tryAgain(); } catch (e) { if (e instanceof Dependency_1.StaleDependencyReferenceError) { return provide.nothing().next(); } throw e; } } else if (dep === undefined) { throw new Error_1.CriticalError(`unknown dependency: "${dependency}"`); } else { throw new Error_1.CriticalError(`"${dependency}" is not WebElement dependency`); } }, timeout }; } exports.waitDisappear = waitDisappear;