qe-fe-automation
Version:
FE test automation framework using cypress
138 lines (121 loc) • 5.12 kB
text/typescript
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();
}
}