jspcom
Version:
TypeScript and JavaScript page component object framework for Selenium
67 lines • 2.37 kB
JavaScript
import { __awaiter, __decorate, __metadata } from "tslib";
import { use as chaiUse, expect } from 'chai';
import chaiAsPromised from 'chai-as-promised';
import { By, WebDriver } from 'selenium-webdriver';
import Sinon from 'sinon';
import { Component, DynamicPageComponent, Page } from './index.js';
chaiUse(chaiAsPromised);
class SomeComponent extends DynamicPageComponent {
get locator() {
return By.id('child');
}
}
class PageOne extends Page {
}
__decorate([
Component(),
__metadata("design:type", SomeComponent)
], PageOne.prototype, "component", void 0);
class OtherComponent extends DynamicPageComponent {
}
class PageTwo extends Page {
}
__decorate([
Component(),
__metadata("design:type", OtherComponent)
], PageTwo.prototype, "component", void 0);
describe('Dynamic Component', () => {
describe('With locator', () => {
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(),
});
page = new PageOne(driverStub);
yield page.component.getElement();
}));
after(() => {
sandbox.restore();
});
it('should call locator and look up element with that locator', () => __awaiter(void 0, void 0, void 0, function* () {
expect(driverStub.findElement.callCount).to.equal(1);
expect(driverStub.findElement.calledWith(By.id('child')));
}));
});
describe('Without locator', () => {
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(),
});
page = new PageTwo(driverStub);
}));
after(() => {
sandbox.restore();
});
it('should call locator and look up element with that locator', () => __awaiter(void 0, void 0, void 0, function* () {
yield expect(page.component.getElement()).to.eventually.be.rejected;
}));
});
});
//# sourceMappingURL=dynamicComponent.spec.js.map