UNPKG

qe-fe-automation

Version:
138 lines (121 loc) 5.12 kB
import { HotelItinerary, bookHotel, Hotels, HotelSearchResults, HotelCheckout } from '@hotel-lib/index'; import { TripTileType } from '@utility-lib/constants'; import { PersonalHomeScreen } from './personal_homescreen'; const UpsellSelector = { upsellBanner: '.trip-event-hotel-extend-stay', extendMyStayCta: '[class="trip-event-hotel-extend-stay__button ta-button ta-button--secondary-theme ta-button--small-size"]', addToTripModal: '.hotel-extend-stay-modal__header__title', tripToggle: '[class="hotel-extend-stay-form__button-toggle hotel-extend-stay-form__button-toggle--active"]', sameHotelButton: '[class="hotel-extend-stay-form__button-path hotel-extend-stay-form__button-path--active"]', changeHotelButton: '.hotel-extend-stay-form__button-path', findAvailabilityButton: '.ta-button__content', tripBleisureBanner: '.trip-card-bleisure-banner', bookDifferentHotelButton: '.ta-radio-button' }; export class Itinerary { static verifyUpsellBanner(): void { cy.allure().logStep('check the extend my cta banner is present and clickable'); cy.get(UpsellSelector.upsellBanner).should('exist'); cy.get(UpsellSelector.extendMyStayCta).then((ele) => { cy.wrap(ele).click({ force: true }); cy.wrap(ele).should('exist'); }); cy.get(UpsellSelector.addToTripModal).should('have.text', 'Add hotel to trip'); cy.get(UpsellSelector.tripToggle).should('have.text', ' Personal '); cy.get(UpsellSelector.sameHotelButton).should( 'include.text', 'Stay at the same hotel' ); cy.get(UpsellSelector.changeHotelButton).then((ele) => { cy.wrap(ele).should('include.text', 'Book a different hotel'); }); cy.get(UpsellSelector.findAvailabilityButton).contains(' Find availability ').click(); } static extendSameHotel(): void { cy.allure().logStep('search for a room in same hotel'); cy.get(UpsellSelector.extendMyStayCta).click(); cy.allure().logStep('Find hotels in same room'); cy.get(UpsellSelector.findAvailabilityButton).contains(' Find availability ').click(); cy.wait('@waitForExtendHotel'); } static extendDifferentHotel(): void { cy.allure().logStep('search for a room in different hotel'); cy.get(UpsellSelector.extendMyStayCta).click(); cy.allure().logStep('Find hotels in different room'); cy.get(UpsellSelector.changeHotelButton).contains('Book a different hotel').click(); cy.get(UpsellSelector.findAvailabilityButton).contains(' Find availability ').click(); } static verifyItinerary(): void { cy.allure().logStep('verify itinerary shows personal pill'); HotelItinerary.verifyHotelItineraryPage(); HotelItinerary.verifyTripTile('Personal'); Itinerary.expectNoUpsellBannerExist(); } static expectNoUpsellBannerExist(): void { cy.allure().logStep('extend my stay banner not present'); cy.get(UpsellSelector.upsellBanner).should('not.exist'); } static createBusinessHotelBooking(): void { bookHotel('Business'); HotelItinerary.visitItinerary(); HotelItinerary.viewAndManageItinerary(); } static dismissBookingModal(): void { cy.get(UpsellSelector.findAvailabilityButton).contains('Not now').click(); } static createHotelBooking(tileType: TripTileType): void { Hotels.visitHotelSearch(); Hotels.setCheckInCheckOutDate(); PersonalHomeScreen.setHotelLocation('Seattle, WA, USA'); Hotels.searchHotel(); HotelSearchResults.selectHotel(0); HotelSearchResults.selectRoomOption(); HotelCheckout.waitToBeLoaded(); HotelCheckout.checkoutFLow(tileType); Itinerary.dismissBookingModal(); } static tripBleisureBannerPresent(): void { cy.allure().logStep('verify extend my stay banner is shown on trips'); cy.get(UpsellSelector.tripBleisureBanner).should('exist'); } static clickTripBleisureBanner(): void { cy.allure().logStep('click extend my stay banner on trips'); cy.get(UpsellSelector.findAvailabilityButton).contains('Extend your stay').click(); } static extendYourStayModalVisible(): void { cy.allure().logStep('verify extend your stay modal is shown'); cy.get(UpsellSelector.addToTripModal).should('have.text', 'Extend your stay'); } static clickAvailbilityButton(): void { cy.allure().logStep('click check availability button'); cy.get(UpsellSelector.findAvailabilityButton) .contains(' Check availability ') .click(); } static clickBookDifferentHotelButton(): void { cy.allure().logStep('click book different hotel button'); cy.get(UpsellSelector.bookDifferentHotelButton).eq(1).click(); } static createBookingAndValidateBanner(): void { Itinerary.createHotelBooking('Business'); HotelItinerary.visitItinerary(); Itinerary.tripBleisureBannerPresent(); Itinerary.clickTripBleisureBanner(); Itinerary.extendYourStayModalVisible(); } static clickFindAvailability(): void { cy.allure().logStep('initiate search for business hotel add to trip'); cy.get(UpsellSelector.findAvailabilityButton) .contains(' Check availability ') .click(); } }