playwright-fluent
Version:
Fluent API around playwright
34 lines (33 loc) • 1.4 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.isHandleVisible = exports.defaultVerboseOptions = void 0;
const utils_1 = require("../../../utils");
const get_intersection_ratio_of_handle_1 = require("../get-intersection-ratio-of-handle");
exports.defaultVerboseOptions = {
verbose: false,
};
async function isHandleVisible(selector, options) {
if (selector === undefined || selector === null) {
return false;
}
const visibleRatio = await (0, get_intersection_ratio_of_handle_1.getIntersectionRatioOfHandle)(selector);
(0, utils_1.report)(`visible ratio is ${visibleRatio}`, options.verbose);
if (visibleRatio <= 0) {
(0, utils_1.report)(`selector is not visible in the current viewport`, options.verbose);
return false;
}
const result = await selector.evaluate((el) => {
function hasVisibleBoundingBox(element) {
const rect = element.getBoundingClientRect();
return !!(rect.top || rect.bottom || rect.width || rect.height);
}
const style = window.getComputedStyle(el);
if (style && style.opacity && style.opacity === '0') {
return false;
}
const isVisible = style && style.visibility !== 'hidden' && hasVisibleBoundingBox(el);
return isVisible;
});
return result;
}
exports.isHandleVisible = isHandleVisible;
;