@serenity-js/protractor
Version:
Adapter that integrates @serenity-js/web with Protractor, enabling Serenity/JS reporting and using the Screenplay Pattern to write end-to-end test scenarios
39 lines • 1.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProtractorRootLocator = void 0;
const web_1 = require("@serenity-js/web");
const promised_1 = require("../../promised");
/**
* Protractor-specific implementation of [`RootLocator`](https://serenity-js.org/api/web/class/RootLocator/).
*
* @group Models
*/
class ProtractorRootLocator extends web_1.RootLocator {
browser;
constructor(browser) {
super();
this.browser = browser;
}
async isPresent() {
return true;
}
async nativeElement() {
return {
element: this.browser.element.bind(this.browser),
all: this.browser.element.all.bind(this.browser),
};
}
async switchToFrame(element) {
// https://github.com/angular/protractor/issues/1846#issuecomment-82634739;
const webElement = await element.getWebElement();
await (0, promised_1.promised)(this.browser.switchTo().frame(webElement));
}
async switchToParentFrame() {
await (0, promised_1.promised)(this.browser.driver.switchToParentFrame());
}
async switchToMainFrame() {
await (0, promised_1.promised)(this.browser.driver.switchTo().defaultContent());
}
}
exports.ProtractorRootLocator = ProtractorRootLocator;
//# sourceMappingURL=ProtractorRootLocator.js.map