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