/
datepicker.po.ts
31 lines (20 loc) · 1.17 KB
/
datepicker.po.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import {$} from 'protractor';
export class DatepickerPage {
getDatepicker(selector = 'ngb-datepicker') { return $(selector); }
getDatepickerInput(selector = 'input[ngbDatepicker]') { return $(selector); }
getToggle() { return $('#toggle'); }
getDayElement(date: Date, datepicker = this.getDatepicker()) {
const ariaLabel = date.toLocaleString('en', {weekday: 'long', year: 'numeric', month: 'long', day: 'numeric'});
return datepicker.$(`div.ngb-dp-day[aria-label="${ariaLabel}"]`);
}
getWeekdayElements() { return this.getDatepicker().$$('div.ngb-dp-weekday'); }
getToday() { return this.getDayElement(new Date()); }
getPrevMonthArrow() { return this.getDatepicker().$(`button[aria-label="Previous month"]`); }
getMonthSelect() { return this.getDatepicker().$(`select[aria-label="Select month"]`); }
getYearSelect() { return this.getDatepicker().$(`select[aria-label="Select year"]`); }
getNextMonthArrow() { return this.getDatepicker().$(`button[aria-label="Next month"]`); }
async openDatepicker() {
await this.getToggle().click();
expect(await this.getDatepicker().isPresent()).toBeTruthy(`Datepicker should be present on the page`);
}
}