jspcom
Version:
TypeScript and JavaScript page component object framework for Selenium
776 lines • 32.6 kB
JavaScript
import { __awaiter, __decorate, __metadata } from "tslib";
import { use as chaiUse, expect } from 'chai';
import chaiAsPromised from 'chai-as-promised';
import { assertHasProperty, assertIsObject } from 'primitive-predicates';
import { By, WebDriver, WebElement, error, } from 'selenium-webdriver';
import Sinon from 'sinon';
import { Component, IframePageComponent, Page, PageComponent } from './index.js';
chaiUse(chaiAsPromised);
// Needed because the conflicts between @types/selenium-webdriver and selenium-webdriver prevent the import of the
// actual one.
class TargetLocatorPlaceholder {
constructor() { }
parentFrame() {
return;
}
}
describe('TargetLocatorPlaceholder', () => {
it('returns nothing when parentFrame method is called', () => {
const locator = new TargetLocatorPlaceholder();
expect(locator.parentFrame()).to.equal(undefined);
});
});
class ChildComponent extends PageComponent {
constructor() {
super(...arguments);
this.locator = By.id('child');
this.findFromParent = true;
}
}
export class ParentComponent extends PageComponent {
constructor() {
super(...arguments);
this.locator = By.id('parent');
}
}
__decorate([
Component(),
__metadata("design:type", ChildComponent)
], ParentComponent.prototype, "childComponent", void 0);
class PageOne extends Page {
}
__decorate([
Component(),
__metadata("design:type", ParentComponent)
], PageOne.prototype, "component", void 0);
class PageTwo extends Page {
}
__decorate([
Component(),
__metadata("design:type", ParentComponent)
], PageTwo.prototype, "component", void 0);
class PageThree extends Page {
}
__decorate([
Component(),
__metadata("design:type", ParentComponent)
], PageThree.prototype, "component", void 0);
class PageFour extends Page {
}
__decorate([
Component(),
__metadata("design:type", ParentComponent)
], PageFour.prototype, "component", void 0);
class PageFive extends Page {
}
__decorate([
Component(),
__metadata("design:type", ParentComponent)
], PageFive.prototype, "component", void 0);
class PageSix extends Page {
}
__decorate([
Component(),
__metadata("design:type", ParentComponent)
], PageSix.prototype, "component", void 0);
class PageSeven extends Page {
}
__decorate([
Component(),
__metadata("design:type", ParentComponent)
], PageSeven.prototype, "component", void 0);
class PageEight extends Page {
}
__decorate([
Component(),
__metadata("design:type", ParentComponent)
], PageEight.prototype, "component", void 0);
class PageNine extends Page {
}
__decorate([
Component(),
__metadata("design:type", ParentComponent)
], PageNine.prototype, "component", void 0);
class PageTen extends Page {
}
__decorate([
Component(),
__metadata("design:type", ParentComponent)
], PageTen.prototype, "component", void 0);
class PageEleven extends Page {
}
__decorate([
Component(),
__metadata("design:type", ParentComponent)
], PageEleven.prototype, "component", void 0);
class OtherComponent extends PageComponent {
constructor() {
super(...arguments);
this.locator = By.id('child');
}
}
class PageTwelve extends Page {
get conditions() {
return [
() => __awaiter(this, void 0, void 0, function* () {
return yield this.component.isDisplayed();
}),
() => __awaiter(this, void 0, void 0, function* () {
return yield this.component.isPresent();
}),
];
}
}
__decorate([
Component(),
__metadata("design:type", OtherComponent)
], PageTwelve.prototype, "component", void 0);
class PageThirteen extends Page {
}
__decorate([
Component(),
__metadata("design:type", OtherComponent)
], PageThirteen.prototype, "component", void 0);
class PageFourteen extends Page {
constructor() {
super(...arguments);
this.timeout = 100;
}
get conditions() {
return [
() => __awaiter(this, void 0, void 0, function* () {
return yield this.component.isDisplayed();
}),
() => __awaiter(this, void 0, void 0, function* () {
return yield this.component.isPresent();
}),
];
}
}
__decorate([
Component(),
__metadata("design:type", OtherComponent)
], PageFourteen.prototype, "component", void 0);
class PageFifteen extends Page {
get conditions() {
return [
() => __awaiter(this, void 0, void 0, function* () {
return yield this.component.isDisplayed();
}),
() => __awaiter(this, void 0, void 0, function* () {
return yield this.component.isPresent();
}),
];
}
}
__decorate([
Component(),
__metadata("design:type", OtherComponent)
], PageFifteen.prototype, "component", void 0);
class IFComponent extends IframePageComponent {
constructor() {
super(...arguments);
this.locator = By.id('child');
}
}
class PageSixteen extends Page {
}
__decorate([
Component(),
__metadata("design:type", IFComponent)
], PageSixteen.prototype, "component", void 0);
class PageSeventeen extends Page {
}
__decorate([
Component(),
__metadata("design:type", IFComponent)
], PageSeventeen.prototype, "component", void 0);
class PageEighteen extends Page {
}
__decorate([
Component(),
__metadata("design:type", IFComponent)
], PageEighteen.prototype, "component", void 0);
class PageNineteen extends Page {
}
__decorate([
Component(),
__metadata("design:type", IFComponent)
], PageNineteen.prototype, "component", void 0);
class PageTwenty extends Page {
}
__decorate([
Component(),
__metadata("design:type", IFComponent)
], PageTwenty.prototype, "component", void 0);
describe('Component', () => {
describe('findFromParent', () => __awaiter(void 0, void 0, void 0, function* () {
let sandbox;
let driverStub;
let parentElementStub;
let childElementStub;
let page;
let result;
before(() => __awaiter(void 0, void 0, void 0, function* () {
sandbox = Sinon.createSandbox();
childElementStub = sandbox.createStubInstance(WebElement);
parentElementStub = sandbox.createStubInstance(WebElement, {
findElement: sandbox.stub().resolves(childElementStub),
});
driverStub = sandbox.createStubInstance(WebDriver, {
findElement: sandbox.stub().resolves(parentElementStub),
});
page = new PageOne(driverStub);
result = yield page.component.childComponent.getElement();
}));
after(() => {
sandbox.restore();
});
it('tries to find only 1 element through the driver directly', () => __awaiter(void 0, void 0, void 0, function* () {
expect(driverStub.findElement.callCount).to.equal(1);
}));
it('uses the parent component as the refNode to find the child component', () => __awaiter(void 0, void 0, void 0, function* () {
expect(result).to.equal(childElementStub);
}));
}));
describe('locator', () => __awaiter(void 0, void 0, void 0, function* () {
let sandbox;
let driverStub;
let page;
before(() => __awaiter(void 0, void 0, void 0, function* () {
sandbox = Sinon.createSandbox();
driverStub = sandbox.createStubInstance(WebDriver);
page = new PageTwo(driverStub);
const component = page.component;
assertIsObject(component);
assertHasProperty(component, 'locator');
delete component.locator;
}));
after(() => {
sandbox.restore();
});
it('throws an error if there is no locator', () => __awaiter(void 0, void 0, void 0, function* () {
yield expect(page.component.getElement()).to.eventually.be.rejectedWith(Error);
}));
}));
describe('isPresent', () => __awaiter(void 0, void 0, void 0, function* () {
describe('Actually Present', () => __awaiter(void 0, void 0, void 0, function* () {
let sandbox;
let driverStub;
let page;
before(() => __awaiter(void 0, void 0, void 0, function* () {
sandbox = Sinon.createSandbox();
driverStub = sandbox.createStubInstance(WebDriver);
page = new PageThree(driverStub);
}));
after(() => {
sandbox.restore();
});
it('returns true', () => __awaiter(void 0, void 0, void 0, function* () {
expect(yield page.component.isPresent()).to.be.true;
}));
}));
describe('Not Present', () => __awaiter(void 0, void 0, void 0, function* () {
let sandbox;
let driverStub;
let page;
before(() => __awaiter(void 0, void 0, void 0, function* () {
sandbox = Sinon.createSandbox();
driverStub = sandbox.createStubInstance(WebDriver, {
findElement: sandbox.stub().throws(new error.NoSuchElementError()),
});
page = new PageFour(driverStub);
}));
after(() => {
sandbox.restore();
});
it('returns false', () => __awaiter(void 0, void 0, void 0, function* () {
expect(yield page.component.isPresent()).to.be.false;
}));
}));
describe('Unrecognized Error', () => __awaiter(void 0, void 0, void 0, function* () {
let sandbox;
let driverStub;
let page;
let err;
before(() => __awaiter(void 0, void 0, void 0, function* () {
err = new Error('unknown');
sandbox = Sinon.createSandbox();
driverStub = sandbox.createStubInstance(WebDriver, {
findElement: sandbox.stub().throws(err),
});
page = new PageFive(driverStub);
}));
after(() => {
sandbox.restore();
});
it('should throw error', () => __awaiter(void 0, void 0, void 0, function* () {
yield expect(page.component.isPresent()).to.eventually.be.rejectedWith(err);
}));
}));
}));
describe('Method Proxies', () => {
let sandbox;
let driverStub;
let parentElementStub;
let page;
before(() => {
sandbox = Sinon.createSandbox();
parentElementStub = sandbox.createStubInstance(WebElement, {
clear: sandbox.stub(),
click: sandbox.stub(),
getAttribute: sandbox.stub(),
getCssValue: sandbox.stub(),
getId: sandbox.stub(),
getRect: sandbox.stub(),
getTagName: sandbox.stub(),
getText: sandbox.stub(),
findElement: sandbox.stub(),
findElements: sandbox.stub(),
isDisplayed: sandbox.stub(),
isEnabled: sandbox.stub(),
isSelected: sandbox.stub(),
sendKeys: sandbox.stub(),
submit: sandbox.stub(),
takeScreenshot: sandbox.stub(),
getShadowRoot: sandbox.stub(),
});
driverStub = sandbox.createStubInstance(WebDriver, {
findElement: sandbox.stub().resolves(parentElementStub),
});
page = new PageSix(driverStub);
});
after(() => {
sandbox.restore();
});
it('proxies clear', () => __awaiter(void 0, void 0, void 0, function* () {
yield page.component.clear();
expect(driverStub.findElement.callCount).to.equal(1);
expect(parentElementStub.clear.callCount).to.equal(1);
}));
it('proxies click', () => __awaiter(void 0, void 0, void 0, function* () {
yield page.component.click();
expect(parentElementStub.click.callCount).to.equal(1);
}));
it('proxies findElement', () => __awaiter(void 0, void 0, void 0, function* () {
const locator = By.id('test');
yield page.component.findElement(locator);
expect(parentElementStub.findElement.callCount).to.equal(1);
expect(parentElementStub.findElement.calledWithExactly(locator)).to.be.true;
}));
it('proxies findElements', () => __awaiter(void 0, void 0, void 0, function* () {
const locator = By.id('test');
yield page.component.findElements(locator);
expect(parentElementStub.findElements.callCount).to.equal(1);
expect(parentElementStub.findElements.calledWithExactly(locator)).to.be.true;
}));
it('proxies getAttribute', () => __awaiter(void 0, void 0, void 0, function* () {
yield page.component.getAttribute('test');
expect(parentElementStub.getAttribute.callCount).to.equal(1);
expect(parentElementStub.getAttribute.calledWithExactly('test')).to.be.true;
}));
it('proxies getCssValue', () => __awaiter(void 0, void 0, void 0, function* () {
yield page.component.getCssValue('test');
expect(parentElementStub.getCssValue.callCount).to.equal(1);
expect(parentElementStub.getCssValue.calledWithExactly('test')).to.be.true;
}));
it('proxies getId', () => __awaiter(void 0, void 0, void 0, function* () {
yield page.component.getId();
expect(parentElementStub.getId.callCount).to.equal(1);
}));
it('proxies getRect', () => __awaiter(void 0, void 0, void 0, function* () {
yield page.component.getRect();
expect(parentElementStub.getRect.callCount).to.equal(1);
}));
it('proxies getTagName', () => __awaiter(void 0, void 0, void 0, function* () {
yield page.component.getTagName();
expect(parentElementStub.getTagName.callCount).to.equal(1);
}));
it('proxies getText', () => __awaiter(void 0, void 0, void 0, function* () {
yield page.component.getText();
expect(parentElementStub.getText.callCount).to.equal(1);
}));
it('proxies isDisplayed', () => __awaiter(void 0, void 0, void 0, function* () {
yield page.component.isDisplayed();
expect(parentElementStub.isDisplayed.callCount).to.equal(1);
}));
it('proxies isEnabled', () => __awaiter(void 0, void 0, void 0, function* () {
yield page.component.isEnabled();
expect(parentElementStub.isEnabled.callCount).to.equal(1);
}));
it('proxies isSelected', () => __awaiter(void 0, void 0, void 0, function* () {
yield page.component.isSelected();
expect(parentElementStub.isSelected.callCount).to.equal(1);
}));
it('proxies sendKeys', () => __awaiter(void 0, void 0, void 0, function* () {
yield page.component.sendKeys();
expect(parentElementStub.sendKeys.callCount).to.equal(1);
}));
it('proxies submit', () => __awaiter(void 0, void 0, void 0, function* () {
yield page.component.submit();
expect(parentElementStub.submit.callCount).to.equal(1);
}));
it('proxies takeScreenshot', () => __awaiter(void 0, void 0, void 0, function* () {
yield page.component.takeScreenshot();
expect(parentElementStub.takeScreenshot.callCount).to.equal(1);
}));
it('proxies getShadowRoot', () => __awaiter(void 0, void 0, void 0, function* () {
yield page.component.getShadowRoot();
expect(parentElementStub.getShadowRoot.callCount).to.equal(1);
}));
});
describe('Switching to parent frame context', () => __awaiter(void 0, void 0, void 0, function* () {
let sandbox;
let driverStub;
let targetLocatorStub;
let page;
before(() => __awaiter(void 0, void 0, void 0, function* () {
sandbox = Sinon.createSandbox();
targetLocatorStub = sandbox.createStubInstance(TargetLocatorPlaceholder, {
parentFrame: sandbox.stub(),
});
driverStub = sandbox.createStubInstance(WebDriver, {
switchTo: sandbox.stub().returns(targetLocatorStub),
});
page = new PageSeven(driverStub);
yield page.component.switchToParentFrame();
}));
after(() => {
sandbox.restore();
});
it('should call driver methods', () => {
expect(driverStub.switchTo.callCount).to.equal(1);
expect(targetLocatorStub.parentFrame.callCount).to.equal(1);
});
}));
describe('Staleness', () => __awaiter(void 0, void 0, void 0, function* () {
describe('No cache', () => {
let sandbox;
let driverStub;
let page;
before(() => {
sandbox = Sinon.createSandbox();
driverStub = sandbox.createStubInstance(WebDriver, {});
page = new PageEight(driverStub);
});
after(() => {
sandbox.restore();
});
it('throws error when checking staleness of cache', () => __awaiter(void 0, void 0, void 0, function* () {
yield expect(page.component.cacheHasGoneStale()).to.eventually.be.rejectedWith(Error);
}));
});
describe('With cache', () => {
let sandbox;
let parentElementStub;
let driverStub;
let page;
before(() => __awaiter(void 0, void 0, void 0, function* () {
sandbox = Sinon.createSandbox();
parentElementStub = sandbox.createStubInstance(WebElement, {
getTagName: sandbox.stub().resolves('thing'),
});
driverStub = sandbox.createStubInstance(WebDriver, {
findElement: sandbox.stub().resolves(parentElementStub),
});
page = new PageNine(driverStub);
yield page.component.cacheElementForStalenessCheck();
}));
after(() => {
sandbox.restore();
});
it('returns false when checking staleness of cache', () => __awaiter(void 0, void 0, void 0, function* () {
expect(yield page.component.cacheHasGoneStale()).to.be.false;
}));
});
describe('With cache, but it is stale', () => {
let sandbox;
let parentElementStub;
let driverStub;
let page;
before(() => __awaiter(void 0, void 0, void 0, function* () {
sandbox = Sinon.createSandbox();
parentElementStub = sandbox.createStubInstance(WebElement, {
getTagName: sandbox.stub().throws(new error.StaleElementReferenceError()),
});
driverStub = sandbox.createStubInstance(WebDriver, {
findElement: sandbox.stub().resolves(parentElementStub),
});
page = new PageTen(driverStub);
yield page.component.cacheElementForStalenessCheck();
}));
after(() => {
sandbox.restore();
});
it('returns false when checking staleness of cache', () => __awaiter(void 0, void 0, void 0, function* () {
expect(yield page.component.cacheHasGoneStale()).to.be.true;
}));
});
describe('With cache, but another error occurs', () => {
let sandbox;
let parentElementStub;
let driverStub;
let page;
before(() => __awaiter(void 0, void 0, void 0, function* () {
sandbox = Sinon.createSandbox();
parentElementStub = sandbox.createStubInstance(WebElement, {
getTagName: sandbox.stub().throws(new Error('unkown')),
});
driverStub = sandbox.createStubInstance(WebDriver, {
findElement: sandbox.stub().resolves(parentElementStub),
});
page = new PageEleven(driverStub);
yield page.component.cacheElementForStalenessCheck();
}));
after(() => {
sandbox.restore();
});
it('returns false when checking staleness of cache', () => __awaiter(void 0, void 0, void 0, function* () {
yield expect(page.component.cacheHasGoneStale()).to.eventually.be.rejectedWith(Error);
}));
});
}));
describe('Conditions', () => __awaiter(void 0, void 0, void 0, function* () {
let sandbox;
let driverStub;
let parentElementStub;
let page;
before(() => __awaiter(void 0, void 0, void 0, function* () {
sandbox = Sinon.createSandbox();
parentElementStub = sandbox.createStubInstance(WebElement, {
isDisplayed: sandbox.stub().onCall(0).resolves(false).onCall(1).resolves(true),
});
driverStub = sandbox.createStubInstance(WebDriver, {
findElement: sandbox.stub().resolves(parentElementStub),
});
page = new PageTwelve(driverStub);
yield page.loaded;
}));
after(() => {
sandbox.restore();
});
it('tries to pass conditions to wait', () => __awaiter(void 0, void 0, void 0, function* () {
expect(parentElementStub.isDisplayed.callCount).to.equal(2);
expect(driverStub.findElement.callCount).to.equal(3);
}));
}));
describe('Conditions (default)', () => __awaiter(void 0, void 0, void 0, function* () {
let sandbox;
let driverStub;
let parentElementStub;
let page;
before(() => __awaiter(void 0, void 0, void 0, function* () {
sandbox = Sinon.createSandbox();
parentElementStub = sandbox.createStubInstance(WebElement, {
isDisplayed: sandbox.stub().onCall(0).resolves(false).onCall(1).resolves(true),
});
driverStub = sandbox.createStubInstance(WebDriver, {
findElement: sandbox.stub().resolves(parentElementStub),
});
page = new PageThirteen(driverStub);
yield page.loaded;
}));
after(() => {
sandbox.restore();
});
it('tries to pass conditions to wait', () => __awaiter(void 0, void 0, void 0, function* () {
expect(parentElementStub.isDisplayed.callCount).to.equal(0);
expect(driverStub.findElement.callCount).to.equal(0);
}));
}));
describe('Conditions (timeout)', () => __awaiter(void 0, void 0, void 0, function* () {
let sandbox;
let driverStub;
let parentElementStub;
let page;
before(() => __awaiter(void 0, void 0, void 0, function* () {
sandbox = Sinon.createSandbox();
parentElementStub = sandbox.createStubInstance(WebElement, {
isDisplayed: sandbox.stub().onCall(0).resolves(false).onCall(1).resolves(false).onCall(2).resolves(false).onCall(3).resolves(true),
});
driverStub = sandbox.createStubInstance(WebDriver, {
findElement: sandbox.stub().resolves(parentElementStub),
});
page = new PageFourteen(driverStub);
}));
after(() => {
sandbox.restore();
});
it('will timeout', () => __awaiter(void 0, void 0, void 0, function* () {
yield expect(page.loaded).to.eventually.be.rejected;
}));
}));
describe('Conditions (error)', () => __awaiter(void 0, void 0, void 0, function* () {
let sandbox;
let driverStub;
let parentElementStub;
let page;
before(() => __awaiter(void 0, void 0, void 0, function* () {
sandbox = Sinon.createSandbox();
parentElementStub = sandbox.createStubInstance(WebElement, {
isDisplayed: sandbox.stub().onCall(0).resolves(false).onCall(1).throws(new Error("Unknown")),
});
driverStub = sandbox.createStubInstance(WebDriver, {
findElement: sandbox.stub().resolves(parentElementStub),
});
page = new PageFifteen(driverStub);
}));
after(() => {
sandbox.restore();
});
it('will timeout', () => __awaiter(void 0, void 0, void 0, function* () {
yield expect(page.loaded).to.eventually.be.rejected;
}));
}));
describe("Iframe Component", () => {
describe('Switching to frame', () => __awaiter(void 0, void 0, void 0, function* () {
let sandbox;
let driverStub;
let targetLocatorStub;
let frameElementStub;
let page;
before(() => __awaiter(void 0, void 0, void 0, function* () {
sandbox = Sinon.createSandbox();
frameElementStub = sandbox.createStubInstance(WebElement);
targetLocatorStub = sandbox.createStubInstance(TargetLocatorPlaceholder, {
parentFrame: sandbox.stub(),
});
targetLocatorStub.frame = sandbox.stub();
driverStub = sandbox.createStubInstance(WebDriver, {
findElement: sandbox.stub().resolves(frameElementStub),
switchTo: sandbox.stub().returns(targetLocatorStub),
});
page = new PageSixteen(driverStub);
yield page.component.switchTo();
}));
after(() => {
sandbox.restore();
});
it('pass the element to the frame method of the TargetLocator', () => {
expect(driverStub.switchTo.callCount).to.equal(1);
expect(targetLocatorStub.frame.calledOnceWith(frameElementStub)).to.be.true;
});
}));
describe('Frame is ready', () => __awaiter(void 0, void 0, void 0, function* () {
let sandbox;
let driverStub;
let targetLocatorStub;
let frameElementStub;
let page;
let result;
before(() => __awaiter(void 0, void 0, void 0, function* () {
sandbox = Sinon.createSandbox();
frameElementStub = sandbox.createStubInstance(WebElement);
targetLocatorStub = sandbox.createStubInstance(TargetLocatorPlaceholder, {
parentFrame: sandbox.stub(),
});
targetLocatorStub.frame = sandbox.stub();
driverStub = sandbox.createStubInstance(WebDriver, {
findElement: sandbox.stub().resolves(frameElementStub),
switchTo: sandbox.stub().returns(targetLocatorStub),
});
page = new PageSeventeen(driverStub);
result = yield page.component.iFrameIsReady();
}));
after(() => {
sandbox.restore();
});
it('pass the element to the frame method of the TargetLocator', () => {
expect(result).to.be.true;
expect(driverStub.switchTo.callCount).to.equal(2);
expect(targetLocatorStub.frame.calledOnceWith(frameElementStub)).to.be.true;
expect(targetLocatorStub.parentFrame.callCount).to.equal(1);
});
}));
describe('Frame is not frame', () => __awaiter(void 0, void 0, void 0, function* () {
let sandbox;
let driverStub;
let targetLocatorStub;
let frameElementStub;
let page;
let result;
before(() => __awaiter(void 0, void 0, void 0, function* () {
sandbox = Sinon.createSandbox();
frameElementStub = sandbox.createStubInstance(WebElement);
targetLocatorStub = sandbox.createStubInstance(TargetLocatorPlaceholder, {
parentFrame: sandbox.stub(),
});
targetLocatorStub.frame = sandbox.stub().throws(new error.NoSuchFrameError("no such frame"));
driverStub = sandbox.createStubInstance(WebDriver, {
findElement: sandbox.stub().resolves(frameElementStub),
switchTo: sandbox.stub().returns(targetLocatorStub),
});
page = new PageEighteen(driverStub);
result = yield page.component.iFrameIsReady();
}));
after(() => {
sandbox.restore();
});
it('pass the element to the frame method of the TargetLocator', () => {
expect(result).to.be.false;
expect(driverStub.switchTo.callCount).to.equal(1);
expect(targetLocatorStub.frame.calledOnceWith(frameElementStub)).to.be.true;
expect(targetLocatorStub.parentFrame.callCount).to.equal(0);
});
}));
describe('Frame has unknown error', () => __awaiter(void 0, void 0, void 0, function* () {
let sandbox;
let driverStub;
let targetLocatorStub;
let frameElementStub;
let page;
before(() => __awaiter(void 0, void 0, void 0, function* () {
sandbox = Sinon.createSandbox();
frameElementStub = sandbox.createStubInstance(WebElement);
targetLocatorStub = sandbox.createStubInstance(TargetLocatorPlaceholder, {
parentFrame: sandbox.stub(),
});
targetLocatorStub.frame = sandbox.stub().throws(new Error("Unknown"));
driverStub = sandbox.createStubInstance(WebDriver, {
findElement: sandbox.stub().resolves(frameElementStub),
switchTo: sandbox.stub().returns(targetLocatorStub),
});
page = new PageNineteen(driverStub);
}));
after(() => {
sandbox.restore();
});
it('pass the element to the frame method of the TargetLocator', () => __awaiter(void 0, void 0, void 0, function* () {
yield expect(page.component.iFrameIsReady()).to.eventually.be.rejected;
expect(driverStub.switchTo.callCount).to.equal(1);
expect(targetLocatorStub.frame.calledOnceWith(frameElementStub)).to.be.true;
expect(targetLocatorStub.parentFrame.callCount).to.equal(0);
}));
}));
describe('Frame is not present', () => __awaiter(void 0, void 0, void 0, function* () {
let sandbox;
let driverStub;
let targetLocatorStub;
let page;
let result;
before(() => __awaiter(void 0, void 0, void 0, function* () {
sandbox = Sinon.createSandbox();
targetLocatorStub = sandbox.createStubInstance(TargetLocatorPlaceholder, {
parentFrame: sandbox.stub(),
});
targetLocatorStub.frame = sandbox.stub();
driverStub = sandbox.createStubInstance(WebDriver, {
findElement: sandbox.stub().throws(new error.NoSuchElementError("no such element")),
switchTo: sandbox.stub().returns(targetLocatorStub),
});
page = new PageTwenty(driverStub);
result = yield page.component.iFrameIsReady();
}));
after(() => {
sandbox.restore();
});
it('pass the element to the frame method of the TargetLocator', () => {
expect(result).to.be.false;
expect(driverStub.switchTo.callCount).to.equal(0);
expect(targetLocatorStub.frame.callCount).to.equal(0);
expect(targetLocatorStub.parentFrame.callCount).to.equal(0);
});
}));
});
});
//# sourceMappingURL=component.spec.js.map