1+ import { Page } from '@playwright/test' ;
12import { BaseComponent } from '@components/base.component' ;
23
34class DatePickerComponent extends BaseComponent {
4- private async selectDateInCalendar ( daysFromToday : number ) {
5+ private readonly calendarSelector = 'nb-calendar' ;
6+ private readonly calendarViewModeSelector = 'nb-calendar-view-mode' ;
7+ private readonly navChevronSelector = 'nb-calendar-pageable-navigation [data-name="chevron-right"]' ;
8+ private readonly dayCellSelector = '.day-cell.ng-star-inserted' ;
9+
10+ constructor ( page : Page ) {
11+ super ( page , 'DatePickerComponent' ) ;
12+ }
13+
14+ private async selectDateInCalendar ( daysFromToday : number ) : Promise < string > {
515 const date = new Date ( ) ;
616 date . setDate ( date . getDate ( ) + daysFromToday ) ;
17+
718 const expectedDay = date . getDate ( ) . toString ( ) ;
8- const expectedMonthShort = date . toLocaleString ( 'default' , {
9- month : 'short' ,
10- } ) ;
19+ const expectedMonthShort = date . toLocaleString ( 'default' , { month : 'short' } ) ;
1120 const expectedMonthLong = date . toLocaleString ( 'default' , { month : 'long' } ) ;
1221 const expectedYear = date . getFullYear ( ) . toString ( ) ;
1322 const dateToAssert = `${ expectedMonthShort } ${ expectedDay } , ${ expectedYear } ` ;
1423 const expectedMonthAndYear = `${ expectedMonthLong } ${ expectedYear } ` ;
15- let calendarMonthYear = await this . getText ( 'nb-calendar-view-mode' ) ;
1624
17- while (
18- calendarMonthYear &&
19- ! calendarMonthYear . includes ( expectedMonthAndYear )
20- ) {
21- await this . click (
22- 'nb-calendar-pageable-navigation [data-name="chevron-right"]'
23- ) ;
24- calendarMonthYear = await this . getText ( 'nb-calendar-view-mode' ) ;
25+ let calendarMonthYear = await this . getText ( this . calendarViewModeSelector ) ;
26+ while ( calendarMonthYear && ! calendarMonthYear . includes ( expectedMonthAndYear ) ) {
27+ await this . click ( this . navChevronSelector ) ;
28+ calendarMonthYear = await this . getText ( this . calendarViewModeSelector ) ;
2529 }
26- await this . click ( '.day-cell.ng-star-inserted' , {
27- text : expectedDay ,
28- exact : true ,
29- } ) ;
3030
31+ await this . click ( this . dayCellSelector , { text : expectedDay , exact : true } ) ;
3132 return dateToAssert ;
3233 }
3334
34- async selectCommonDatepickerDateFromToday ( daysFromToday : number ) {
35+ async selectCommonDatepickerDateFromToday ( daysFromToday : number ) : Promise < void > {
3536 const calendarInputField = this . getByPlaceholder ( 'Form Picker' ) ;
3637 await calendarInputField . click ( ) ;
3738 await this . selectDateInCalendar ( daysFromToday ) ;
@@ -40,37 +41,32 @@ class DatePickerComponent extends BaseComponent {
4041 async selectDatePickerRangeFromToday (
4142 daysFromToday : number ,
4243 daysAfter : number
43- ) {
44+ ) : Promise < { dateFrom : string ; dateTo : string } > {
4445 const calendarInputField = this . getByPlaceholder ( 'Range Picker' ) ;
4546 await calendarInputField . click ( ) ;
47+
4648 const dateFrom = await this . selectDateInCalendar ( daysFromToday ) ;
4749 const dateTo = await this . selectDateInCalendar ( daysAfter ) ;
48- return { dateFrom, dateTo}
50+ return { dateFrom, dateTo } ;
4951 }
5052
51- async getDateToAssert ( daysFromToday : number , daysAfter ?: number ) : Promise < string | { startDate : string , endDate : string } > {
52- const date = new Date ( ) ;
53- date . setDate ( date . getDate ( ) + daysFromToday ) ;
54- const expectedDay = date . getDate ( ) . toString ( ) ;
55- const expectedMonthShort = date . toLocaleString ( 'default' , {
56- month : 'short' ,
57- } ) ;
58- const expectedYear = date . getFullYear ( ) . toString ( ) ;
59- const startDate = `${ expectedMonthShort } ${ expectedDay } , ${ expectedYear } ` ;
53+ async getDateToAssert (
54+ daysFromToday : number ,
55+ daysAfter ?: number
56+ ) : Promise < string | { startDate : string ; endDate : string } > {
57+ const start = new Date ( ) ;
58+ start . setDate ( start . getDate ( ) + daysFromToday ) ;
59+ const startDate = `${ start . toLocaleString ( 'default' , { month : 'short' } ) } ${ start . getDate ( ) } , ${ start . getFullYear ( ) } ` ;
6060
6161 if ( daysAfter !== undefined ) {
62- const endDateObj = new Date ( ) ;
63- endDateObj . setDate ( endDateObj . getDate ( ) + daysAfter ) ;
64- const endDay = endDateObj . getDate ( ) . toString ( ) ;
65- const endMonthShort = endDateObj . toLocaleString ( 'default' , {
66- month : 'short' ,
67- } ) ;
68- const endYear = endDateObj . getFullYear ( ) . toString ( ) ;
69- const endDate = `${ endMonthShort } ${ endDay } , ${ endYear } ` ;
62+ const end = new Date ( ) ;
63+ end . setDate ( end . getDate ( ) + daysAfter ) ;
64+ const endDate = `${ end . toLocaleString ( 'default' , { month : 'short' } ) } ${ end . getDate ( ) } , ${ end . getFullYear ( ) } ` ;
7065 return { startDate, endDate } ;
7166 }
7267
7368 return startDate ;
7469 }
7570}
71+
7672export { DatePickerComponent } ;
0 commit comments