UNPKG

playwright-fluent

Version:
57 lines (56 loc) 2.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.selectOptionsInHandle = exports.defaultSelectOptions = void 0; const hover_on_handle_1 = require("../hover-on-handle"); const are_options_already_selected_in_handle_1 = require("../are-options-already-selected-in-handle"); const utils_1 = require("../../../utils"); const is_handle_enabled_1 = require("../is-handle-enabled"); const are_options_available_in_handle_1 = require("../are-options-available-in-handle"); const get_all_options_of_handle_1 = require("../get-all-options-of-handle"); exports.defaultSelectOptions = { stabilityInMilliseconds: 300, timeoutInMilliseconds: 30000, verbose: false, }; async function selectOptionsInHandle(selector, name, labels, page, options) { if (!page) { throw new Error(`Cannot select options '${labels}' because no browser has been launched`); } if (!selector) { throw new Error(`Cannot select options '${labels}' in '${name}' because selector was not found in DOM`); } const hoverOptions = { ...hover_on_handle_1.defaultHoverOptions, verbose: options.verbose, stabilityInMilliseconds: options.stabilityInMilliseconds, timeoutInMilliseconds: options.timeoutInMilliseconds, }; await (0, hover_on_handle_1.hoverOnHandle)(selector, name, page, hoverOptions); const areOptionsAlreadySelected = await (0, are_options_already_selected_in_handle_1.areOptionsAlreadySelectedInHandle)(selector, name, labels); if (areOptionsAlreadySelected) { return; } (0, utils_1.report)('waiting for the selector to be enabled ...', options.verbose); await (0, utils_1.waitUntil)(() => (0, is_handle_enabled_1.isHandleEnabled)(selector, { verbose: false }), `Cannot select options '${labels}' in '${name}' because this selector is disabled`, { ...options, throwOnTimeout: true, wrapPredicateExecutionInsideTryCatch: true, }); (0, utils_1.report)('waiting for the options to be available ...', options.verbose); await (0, utils_1.waitUntil)(() => (0, are_options_available_in_handle_1.areOptionsAvailableInHandle)(selector, name, labels), async () => { const existingOptions = await (0, get_all_options_of_handle_1.getAllOptionsOfHandle)(selector, name); const existingLabels = existingOptions.map((o) => o.label); return `Cannot select options '${labels}' in '${name}' because this selector has only options '${existingLabels}'`; }, { ...options, throwOnTimeout: true, wrapPredicateExecutionInsideTryCatch: true, }); const values = labels.map((label) => { return { label, }; }); await selector.selectOption(values); } exports.selectOptionsInHandle = selectOptionsInHandle;