@o3r/testing
Version:
The module provides testing (e2e, unit test) utilities to help you build your own E2E pipeline integrating visual testing.
168 lines • 7.83 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.O3rSliderElement = void 0;
var tslib_1 = require("tslib");
var element_1 = require("../element");
/**
* Implementation dedicated to Playwright.
*/
var O3rSliderElement = /** @class */ (function (_super) {
tslib_1.__extends(O3rSliderElement, _super);
function O3rSliderElement(sourceElement, trackSelector, thumbSelector) {
var _this = _super.call(this, sourceElement) || this;
_this.trackSelector = trackSelector;
_this.thumbSelector = thumbSelector;
return _this;
}
O3rSliderElement.prototype.getInputElement = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var subElement, _a;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
_b.trys.push([0, 2, , 3]);
subElement = this.sourceElement.element.locator('input[type="range"]');
return [4 /*yield*/, subElement.count()];
case 1:
if (_b.sent()) {
return [2 /*return*/, subElement.first()];
}
return [2 /*return*/, this.sourceElement.element];
case 2:
_a = _b.sent();
return [2 /*return*/, this.sourceElement.element];
case 3: return [2 /*return*/];
}
});
});
};
O3rSliderElement.prototype.getTrackElement = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var subElement, _a;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
if (!this.trackSelector) {
return [2 /*return*/, this.sourceElement.element];
}
_b.label = 1;
case 1:
_b.trys.push([1, 3, , 4]);
subElement = this.sourceElement.element.locator(this.trackSelector);
return [4 /*yield*/, subElement.count()];
case 2:
if (_b.sent()) {
return [2 /*return*/, subElement.first()];
}
return [2 /*return*/, this.sourceElement.element];
case 3:
_a = _b.sent();
return [2 /*return*/, this.sourceElement.element];
case 4: return [2 /*return*/];
}
});
});
};
O3rSliderElement.prototype.getThumbElement = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var subElement, _a;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
if (!this.thumbSelector) {
return [2 /*return*/, this.sourceElement.element];
}
_b.label = 1;
case 1:
_b.trys.push([1, 3, , 4]);
subElement = this.sourceElement.element.locator(this.thumbSelector);
return [4 /*yield*/, subElement.count()];
case 2:
if (_b.sent()) {
return [2 /*return*/, subElement.first()];
}
return [2 /*return*/, this.sourceElement.element];
case 3:
_a = _b.sent();
return [2 /*return*/, this.sourceElement.element];
case 4: return [2 /*return*/];
}
});
});
};
/** @inheritdoc */
O3rSliderElement.prototype.setValue = function (value) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var trackElement, trackBoundingBox, thumbElement, inputElement, thumbBoundingBox, startPosition, maxAttribute, max, minAttribute, min, percent;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.getTrackElement()];
case 1:
trackElement = _a.sent();
return [4 /*yield*/, trackElement.boundingBox()];
case 2:
trackBoundingBox = _a.sent();
return [4 /*yield*/, this.getThumbElement()];
case 3:
thumbElement = _a.sent();
return [4 /*yield*/, this.getInputElement()];
case 4:
inputElement = _a.sent();
return [4 /*yield*/, thumbElement.boundingBox()];
case 5:
thumbBoundingBox = _a.sent();
if (!trackBoundingBox || !thumbBoundingBox) {
return [2 /*return*/];
}
startPosition = {
x: thumbBoundingBox.x + thumbBoundingBox.width / 2,
y: thumbBoundingBox.y + thumbBoundingBox.height / 2
};
return [4 /*yield*/, this.sourceElement.page.mouse.move(startPosition.x, startPosition.y)];
case 6:
_a.sent();
return [4 /*yield*/, this.sourceElement.page.mouse.down()];
case 7:
_a.sent();
return [4 /*yield*/, inputElement.getAttribute('max')];
case 8:
maxAttribute = _a.sent();
max = maxAttribute ? +maxAttribute : 100;
return [4 /*yield*/, inputElement.getAttribute('min')];
case 9:
minAttribute = _a.sent();
min = minAttribute ? +minAttribute : 0;
percent = (Math.max(min, Math.min(+value, max)) - min) / (max - min);
return [4 /*yield*/, this.sourceElement.page.mouse.move(trackBoundingBox.x + Math.round(trackBoundingBox.width * percent), trackBoundingBox.y + trackBoundingBox.height / 2)];
case 10:
_a.sent();
return [4 /*yield*/, this.sourceElement.page.mouse.up()];
case 11:
_a.sent();
return [2 /*return*/];
}
});
});
};
/** @inheritdoc */
O3rSliderElement.prototype.getValue = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a;
var _b;
return tslib_1.__generator(this, function (_c) {
switch (_c.label) {
case 0:
_a = element_1.O3rElement.bind;
_b = {};
return [4 /*yield*/, this.getInputElement()];
case 1: return [2 /*return*/, (new (_a.apply(element_1.O3rElement, [void 0, (_b.element = _c.sent(),
_b.page = this.sourceElement.page,
_b)]))()).getValue()];
}
});
});
};
return O3rSliderElement;
}(element_1.O3rElement));
exports.O3rSliderElement = O3rSliderElement;
//# sourceMappingURL=slider-element.js.map