UNPKG

qe-fe-automation

Version:
110 lines (101 loc) 4.39 kB
import { Timeouts, utilitySelector } from '@utility-lib/index'; import { HttpStatusCodes } from 'cypress/support/base'; export const rentalCarSearchResultSelector = { carCard: '[class^="ta-car-card__main"]', agencyLogo: '[data-testid = "carLogo"]', agencyFilter: '[qaid="agencyFilter"] [data-testid="activeFilter"]', agencyCheckbox: '[class^="filter-boolean__wrapper"]', selectCar: '[qaid="selectCarButton"]', mapPoint: '[class^="cars-map__pin-container"]', filterLocation: '[class^="marker-body__car-types"] .ta-button__content', filteredLocation: '[class^="marker-body__filter"]', carLogo: '[class^="marker-body__single-car-logo"][alt="National"]', filterLocationButton: '[class^="marker-body__button"]', searchCarFromSearchResults: '[class="cars-header"] [type="submit"]', dAndCLocationButton: '[class="ta-car-features__item"] button', locationDetail: '[class="car-location-popup__title"]', hotelLocationsPopup: '[class="car-location-popup__details"]', carOptionsFilter: '[qaid="carOptionsFilter"]', directBillTags: '[class^="ta-car-tags__container"]', searchLoader: '[class="ta-search__track"]', policyBanner: '[class="out-of-policy-banner__max-price"]', policyPopUp: '[class="out-of-policy-banner__policy-link"] a', policyText: '[class="basic-row"] [class="basic-row__text"]', closePolicyPopUp: '[class^="ta-modal-header ta-modal-header--no-bottom-padding"] button', policyIcon: '[class="ta-car-card__price-info"] [icon="policy-slash"]', popOverText: '[class^="popover-content--text"]' }; export class RentalCarSearchResults { static selectCar() { cy.allure().logStep(`Select car from the search result`); cy.get(rentalCarSearchResultSelector.selectCar).eq(0).click(); cy.wait('@waitForSelectCar').then((Interception) => { if (Interception.response?.statusCode !== HttpStatusCodes.Ok) { cy.log(`Retrying to find the new car.`); cy.get(rentalCarSearchResultSelector.selectCar).eq(1).click(); } }); } static chooseCarFromMap() { cy.allure().logStep('find and select car from map'); cy.wait('@waitForMapLoad'); cy.get(rentalCarSearchResultSelector.mapPoint).eq(0).click(); cy.get(utilitySelector.bodySelector).then((filterAgencies) => { if ( filterAgencies.find(rentalCarSearchResultSelector.filterLocationButton).length > 0 ) { cy.contains('Filter to this location').click({ force: true }); } else { cy.get(rentalCarSearchResultSelector.filterLocation).eq(0).click(); } }); } static expectFilteredLocationShowedInList() { cy.allure().logStep('expect filtered location showed in list'); cy.get(rentalCarSearchResultSelector.filteredLocation).eq(0).should('be.exist'); } static searchCarFromSearchResults() { cy.get(rentalCarSearchResultSelector.searchCarFromSearchResults).click(); cy.wait('@waitForCarSearchResults'); } static getCarLocation() { cy.get('[data-testid="locationSearchField"] input') .invoke('val') .then((hotelLocation) => { const hotelLocationString = JSON.stringify(hotelLocation); cy.log(hotelLocationString); cy.task('putDataInCache', { key: 'hotelLocation', data: hotelLocationString }); }); } static expectPolicyMaximumPriceIs() { cy.get(rentalCarSearchResultSelector.policyBanner).should( 'contain', `$5 and up is out of policy.` ); this.expectPolicyTypeIsPresent('Maximum price for this search is $5'); } static expectPolicyTypeIsPresent(policyDetails: string) { cy.get(rentalCarSearchResultSelector.policyPopUp).click({ force: true }); cy.wait('@waitForPolicyFile'); cy.get(rentalCarSearchResultSelector.policyText).contains(`${policyDetails}`); cy.get(rentalCarSearchResultSelector.closePolicyPopUp).click({ timeout: 10000, force: true }); cy.wait(Timeouts.SHORT_TIMEOUT_2_SEC.timeout); } static expectCarTypeIsPresent() { this.expectPolicyTypeIsPresent( 'Allowed car types: Electric, Standard, Economy and Compact' ); } static expectOutOfPolicyIconAndReasonIsPresent(reason: string) { cy.wait(Timeouts.SHORT_TIMEOUT_2_SEC.timeout); cy.get(rentalCarSearchResultSelector.policyIcon).eq(0).click(); cy.get(rentalCarSearchResultSelector.popOverText).should('contain', `${reason}`); } }