UNPKG

qe-fe-automation

Version:
94 lines (83 loc) 3.63 kB
import { LoginPage } from '@admin-lib/index'; import { Timeouts } from '@utility-lib/constants'; import { TrainTripType, TrainSearch } from '@train-lib/index'; const conciergeFlowSelectors = { requestBooking: '.ta-button__content', offLineFormTripType: '.ta-offline-booking-modal__masked-data__header__trip-type', originStation: '.ta-offline-booking-modal__masked-data__station', saveTripInfo: '[qaid="tripCheckoutCreateButton"]', submitRequest: '[class="ta-offline-booking-modal__footer"] [type="submit"]', requestConfirmation: '.information__content', changePayment: '[class="ta-payment-card ta-payment-card--v2"]', addNewPaymentMessage: '.ta-payment-at-booking__disable', addNewPaymentMethodButton: '.ta-payment-at-booking__add-card', class: '.ta-offline-booking-modal__form__options', radioButton: '[type="radio"]' }; export class ConciergeFlow { static assertStations(origin: string, destination: string) { cy.allure().logStep('verify Stations'); cy.get(conciergeFlowSelectors.originStation) .should('contain.text', origin) .and('contain.text', destination); cy.allure().logStep('station verified'); } static checkAndClickRequestButton() { cy.get(conciergeFlowSelectors.requestBooking).contains('Request booking').click(); cy.wait('@waitForRequestForm'); cy.allure().logStep('Request booking button verified and clicked'); } static assertTripType(tripType: string) { cy.allure().logStep('verify trip type '); cy.get(conciergeFlowSelectors.offLineFormTripType).should('contain.text', tripType); cy.allure().logStep('trip type verified'); } static cannotAddNewPayment() { cy.allure().logStep('verify payment method are not allowed message'); cy.get(conciergeFlowSelectors.changePayment).contains('Change payment').click(); cy.get(conciergeFlowSelectors.addNewPaymentMessage).should( 'contain.text', 'Additional payment methods are not allowed for this booking.' ); cy.allure().logStep(' payment method are not allowed message verfied'); cy.get(conciergeFlowSelectors.addNewPaymentMethodButton).should('not.be.enabled'); cy.allure().logStep('add new button is not enabled'); } static completeOfflineForm() { this.checkMandatoryCheckboxes(); cy.allure().logStep('save trip info'); cy.get(conciergeFlowSelectors.saveTripInfo).click(); cy.allure().logStep('trip info saved'); this.cannotAddNewPayment(); cy.allure().logStep('click on request button'); cy.get(conciergeFlowSelectors.submitRequest).contains('Request').click(); cy.wait('@waitForRequestForm'); cy.get( conciergeFlowSelectors.requestConfirmation, Timeouts.MEDIUM_TIMEOUT_30_SEC ).should('contain.text', 'Your request has been sent'); cy.allure().logStep('offline form submitted successfully '); } static checkMandatoryCheckboxes() { cy.get(conciergeFlowSelectors.class).each(($el) => { cy.wrap($el).find(conciergeFlowSelectors.radioButton).eq(0).click(); }); } static completeConciergeForm(origin: string, destination: string, tripType: string) { this.assertTripType(tripType); this.assertStations(origin, destination); this.completeOfflineForm(); } static conciergeWithoutSearchButton( origin: string, destination: string, tripType: TrainTripType ) { LoginPage.createNewCompanyAndLoginWithUserByType(); TrainSearch.visitTrainSearch(); TrainSearch.setOrigin(origin); TrainSearch.setDestination(destination); TrainSearch.selectFutureTrainDate(); TrainSearch.selectTripTileType(tripType); } }