qe-fe-automation
Version:
FE test automation framework using cypress
77 lines (68 loc) • 3.13 kB
text/typescript
import { Utility, Timeouts } from '@utility-lib/index';
import { CarInvoiceValidation } from '@commerce-lib/cars/invoice_validation';
import { Invoice } from '@commerce-lib/invoice/invoice';
import { CommerceShared } from '@commerce-shared-lib/shared';
const rentalCarSelector = {
itineraryBody: '.itinerary__content-body__item',
carName: '.ta-trip-event-car-details__title',
checkInDate: 'div[class$="ta-trip-event-car-details__labels"]:contains("Check-in")+div',
checkOutDate: 'div[class$="ta-trip-event-car-details__labels"]:contains("Check-out")+div',
tripactionsBookingId: 'div[class$="ta-trip-event-car-booking__labels"]:contains("TripActions")+div',
manageItinerary: '[class^="ta-trip-card-v2__actions"] .ta-button__content',
itineraryListDate: '[qaid="itineraryListDate"]',
roomTypeDetails: '[class^="ta-trip-event-car-room-details__link ta-button ta-button--link-theme"]',
carDetailHeader: '.ta-modal-header',
roomOverview: '.room-details',
cancelCar: '[qaid="eventActionCancelCar"]',
downLoadInvoice: '[qaid="eventActionDownloadInvoice"]',
creditCardCheckIn: '[class^="trip-car__payment-title"]',
carBookingId: '.trip-event-card-car-list__content ng-star-inserted'
};
export class RentalCarItinerary {
static waitToBeLoaded(): void {
cy.url().then((url) => {
const getUrl = url;
cy.log('<<< CAR Itinerary URL is >>>: ' + getUrl);
cy.task('putDataInCache', {
key: 'ItineraryURL',
data: getUrl
});
});
}
static visitItinerary() {
cy.intercept('GET', /api\/v2\/trip\/car\/search\/suggestions/).as('waitForTripItinerary');
Utility.selectNavItem('TRIPS');
cy.wait('@waitForTripItinerary');
cy.allure().logStep('visit itinerary');
}
static viewAndManageItinerary() {
cy.get(rentalCarSelector.manageItinerary).click();
cy.wait('@waitForManageItinerary');
cy.allure().logStep('view and manage itinerary');
}
static expectNoItineraryIsPresent(noOfItineraries: number) {
cy.get(rentalCarSelector.itineraryListDate, Timeouts.MAX_TIMEOUT_120_SEC).should('have.length', noOfItineraries);
cy.allure().logStep(`expect ${noOfItineraries} itinerary is present`);
}
static expectCarDetailPageIsPresent() {
cy.get(rentalCarSelector.roomTypeDetails).click();
cy.get(rentalCarSelector.roomOverview).should('be.visible');
}
static cancelCar() {
Utility.cancelTrip('Car');
Utility.selectCancellationReason('Change of plans');
//cy.wait(Timeouts.MEDIUM_TIMEOUT_20_SEC.timeout);
Utility.confirmCancellation();
Utility.expectCancelledLabelIsPresent();
}
static verifyTripFeeInInvoice(): void {
CarInvoiceValidation.checkInvoiceBookingId();
CommerceShared.visitViewInvoicePage();
Invoice.retrieveDownloadInvoiceFile();
Invoice.retrieveAndConvertPDFInvoiceDetailsToHTML();
CarInvoiceValidation.checkInvoiceTAFee();
CarInvoiceValidation.checkInvoiceTripeFee();
CarInvoiceValidation.checkInvoiceBookingId();
//TODO StripeValidation.validateStripeFee(); //! This is not working as expected https://navancorp.atlassian.net/browse/QTA-3005
}
}