systelab-components-wdio-test
Version:
Widgets to be use in the E2E Tests based in WDIO
99 lines (98 loc) • 3.92 kB
JavaScript
import { Widget } from './widget.js';
import { Label } from './label.js';
import { InputField } from './inputfield.js';
import { Button } from './button.js';
import { Link } from './link.js';
export class TwoList extends Widget {
getAvailableFieldsCaption() {
return new Label(this.allByCSS('div > div> label').get(0));
}
getVisibleFieldsCaption() {
return new Label(this.allByCSS('div > div > label').get(1));
}
getAvailableFieldsFilter() {
return new InputField(this.allByCSS('div > div> input').get(0));
}
getVisibleFieldsFilter() {
return new InputField(this.allByCSS('div > div> input').get(1));
}
getAvailableItemByPosition(position) {
return new Button(this.byId('available' + (position - 1)));
}
getVisibleItemByPosition(position) {
return new Button(this.byId('element' + (position - 1)));
}
getMoveToRightButton() {
return new Button(this.byClassName('icon-angle-right'));
}
getMoveToLeftButton() {
return new Button(this.byClassName('icon-angle-left'));
}
async getNumberOfAvailableItems() {
return this.getAllAvailableElemItems().count();
}
async getNumberOfSelectedAvailableItems() {
return this.getSelectedAvailableElemItems().count();
}
async getNumberOfVisibleItems() {
return this.getAllVisibleElemItems().count();
}
async getNumberOfSelectedVisibleItems() {
return this.getSelectedVisibleElemItems().count();
}
async getAllAvailableItems() {
const itemList = [];
const numberOfAvailableItems = await this.getNumberOfAvailableItems();
for (let position = 1; position <= numberOfAvailableItems; position++) {
itemList.push(await (this.byCSS(`[id^=available${position - 1}]`)).getText());
}
return itemList;
}
async getAllVisibleItems() {
const itemList = [];
const elemItems = this.getAllVisibleElemItems();
const numberOfVisibleItems = await elemItems.count();
for (let position = 1; position <= numberOfVisibleItems; position++) {
itemList.push(await elemItems.get(position - 1).getText());
}
return itemList;
}
async getSelectedAvailableItemPositions() {
const positionList = [];
const elemItems = this.getSelectedAvailableElemItems();
const numberOfSelectedItems = await elemItems.count();
for (let index = 0; index < numberOfSelectedItems; index++) {
let positionOfSelectedItem = parseInt((await elemItems.get(index).getAttribute('id')).replace('available', '')) + 1;
positionList.push(positionOfSelectedItem);
}
return positionList;
}
async getSelectedVisibleItemPositions() {
const positionList = [];
const elemItems = this.getSelectedVisibleElemItems();
const numberOfSelectedItems = await elemItems.count();
for (let index = 0; index < numberOfSelectedItems; index++) {
let positionOfSelectedItem = parseInt((await elemItems.get(index).getAttribute('id')).replace('element', '')) + 1;
positionList.push(positionOfSelectedItem);
}
return positionList;
}
getRemoveAllLink() {
return new Link(this.byId('slab-remove-all'));
}
getAddAllLink() {
return new Link(this.byId('slab-add-all'));
}
getAllVisibleElemItems() {
return this.allByCSS('div[class~="list-group"] > div[class~="slab-sortable-list-row"]');
}
getAllAvailableElemItems() {
return this.allByCSS('li[id^=available]');
}
getSelectedVisibleElemItems() {
return this.allByCSS('div[class~="list-group"] > div[class~="slab-sortable-list-row-selected"]');
}
getSelectedAvailableElemItems() {
return this.allByCSS('li[class~="slab-twolistboxrowselected"]');
}
}