UNPKG

@theia-extension-tester/until

Version:
94 lines 4.35 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExtestUntil = void 0; const extension_tester_page_objects_1 = require("extension-tester-page-objects"); var ExtestUntil; (function (ExtestUntil) { function elementInteractive(element) { const fn = function () { return __awaiter(this, void 0, void 0, function* () { try { if (yield isInteractive(element)) { return element; } } catch (e) { if (e instanceof extension_tester_page_objects_1.error.StaleElementReferenceError) { throw e; } } return undefined; }); }; return new extension_tester_page_objects_1.WebElementCondition('for element to be interactive (visible + enabled).', fn); } ExtestUntil.elementInteractive = elementInteractive; function safeClick(element, button = extension_tester_page_objects_1.Button.LEFT) { const fn = function (driver) { return __awaiter(this, void 0, void 0, function* () { try { if (yield isInteractive(element)) { if (button === extension_tester_page_objects_1.Button.LEFT) { yield element.click(); } else { yield driver.actions().click(element, button).perform(); } return element; } else { return undefined; } } catch (e) { if (e instanceof extension_tester_page_objects_1.error.WebDriverError && e.message.includes('element click intercepted: Element')) { console.warn(e.message); return undefined; } throw e; } }); }; return new extension_tester_page_objects_1.WebElementCondition('for element to be clicked. Make sure the element is enabled, visible and not covered by other elements.', fn); } ExtestUntil.safeClick = safeClick; function safeSendKeys(element, ...var_args) { const fn = function () { return __awaiter(this, void 0, void 0, function* () { try { if (yield isInteractive(element)) { yield element.sendKeys(...var_args); return element; } else { return undefined; } } catch (e) { if (e instanceof extension_tester_page_objects_1.error.WebDriverError && e.message.includes('intercepted: Element')) { console.warn(e.message); return undefined; } throw e; } }); }; return new extension_tester_page_objects_1.WebElementCondition('for element to receive key strokes. Make sure the element is enabled, visible and not covered by other elements.', fn); } ExtestUntil.safeSendKeys = safeSendKeys; })(ExtestUntil = exports.ExtestUntil || (exports.ExtestUntil = {})); function isInteractive(element) { return __awaiter(this, void 0, void 0, function* () { return (yield element.isDisplayed()) && (yield element.isEnabled()); }); } //# sourceMappingURL=index.js.map