UNPKG

wix-style-react

Version:
62 lines (57 loc) 2.51 kB
const EC = protractor.ExpectedConditions; const calendarDriverFactory = component => { const getYear = year => { const MAX_YEAR = 2028; const index = MAX_YEAR - year; return component.$(`[data-hook='dropdown-item-${index}']`); }; const getCalendar = () => component.$('.DayPicker'); const getNthAvailableDay = n => component.$$('[role="gridcell"]:not([class*="outside"])').get(n); const getYearDropdown = () => component.$('[data-hook="datepicker-year-dropdown-button"]'); const getNthYear = n => component.$( `[data-hook="datepicker-year-dropdown"] [data-hook="dropdown-item-${n}"]`, ); const getMonthsDropdown = () => component.$('[data-hook="datepicker-month-dropdown-button"]'); const getNthMonth = n => component.$( `[data-hook="datepicker-month-dropdown-menu"] [data-hook="dropdown-item-${ n === 0 ? n : n - 1 }"]`, ); const getCalendarWrapper = () => component.$('.DayPicker-wrapper'); const getKeyboardSelectedDay = () => component.$('.DayPicker-Day:focus'); const getPrevMonthButton = () => component.$('[data-hook="datepicker-left-arrow"]'); const getNextMonthButton = () => component.$('[data-hook="datepicker-right-arrow"]'); const getMonthCaption = () => component.$('[data-hook="datepicker-month-caption"]'); return { getElement: () => getCalendar(), exists: () => getCalendar().isPresent(), isYearInViewPort: year => browser.wait(EC.visibilityOf(getYear(year)), 5000), isVisible: () => getCalendar().isDisplayed(), clickOnNthAvailableDay: (n = 0) => getNthAvailableDay(n).click(), openYearDropdownOptions: () => getYearDropdown().click(), clickOnNthYear: (n = 1) => getNthYear(n).click(), openMonthDropdownOptions: () => getMonthsDropdown().click(), clickOnNthMonth: (n = 0) => getNthMonth(n).click(), pressEscKey: () => getCalendarWrapper().sendKeys(protractor.Key.ESCAPE), pressTabKey: () => getCalendarWrapper().sendKeys(protractor.Key.TAB), pressEnterKey: () => getKeyboardSelectedDay().sendKeys(protractor.Key.ENTER), pressArrowRightKey: () => getKeyboardSelectedDay().sendKeys(protractor.Key.ARROW_RIGHT), pressArrowLeftKey: () => getKeyboardSelectedDay().sendKeys(protractor.Key.ARROW_LEFT), nextMonth: () => getNextMonthButton().click(), prevMonth: () => getPrevMonthButton().click(), getMonthCaption: () => getMonthCaption().getText(), }; }; export default calendarDriverFactory;