UNPKG

qe-fe-automation

Version:
79 lines (69 loc) 2.99 kB
import { verticalType, Timeouts } from '@utility-lib/index'; import { ProfileInterceptApis } from '@profile-lib/index'; const loyaltySelectors = { addCarLoyalty: '[qaid="Add car loyalty"]', addFlightLoyalty: '[qaid="Add flight loyalty"]', addHotelLoyalty: '[qaid="Add hotel loyalty"]', addTrainLoyalty: '[qaid="Add train card"]', searchLoyaltyInput: '[qaid="searchLoyalty"]', loyaltyNumberInput: '[formcontrolname="loyaltyNumber"]', railNumberInput: '[formcontrolname="railCardNumber"]', submitNewLoyaltyCard: '[qaid="addLoyaltyCard"]', submitNewRailCard: '#addRailCardButton', loyaltyCardEntry: '.ta-loyalty-card__card-name', railCardEntry: '.ta-rail-card__card-name', loyaltyProgramsPage: '/app/user2/profile?tab=loyaltyPrograms', loyaltyAgency: (loyaltyAgency: string) => `[qaid="${loyaltyAgency}"]` }; type SelectVerticalType = Partial<Record<verticalType, () => void>>; export class LoyaltyPrograms { static visitProfileLoyaltyPrograms() { cy.allure().logStep('visit profile page loyalty tab'); cy.visit(loyaltySelectors.loyaltyProgramsPage); cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout); cy.url().should('include', loyaltySelectors.loyaltyProgramsPage); } static addLoyaltyToUser(loyaltyAgency: string, vertical: verticalType) { cy.allure().logStep('add ' + loyaltyAgency + ' loyalty card to user'); const selectVerticalType: SelectVerticalType = { flight: function () { cy.get(loyaltySelectors.addFlightLoyalty).eq(0).click(); }, hotel: function () { cy.get(loyaltySelectors.addHotelLoyalty).eq(0).click(); }, train: function () { cy.get(loyaltySelectors.addTrainLoyalty).eq(0).click(); }, car: function () { cy.get(loyaltySelectors.addCarLoyalty).eq(0).click(); } }; const verticalTypeFunction = selectVerticalType[vertical]; if (verticalTypeFunction) { verticalTypeFunction(); } cy.clearInputAndType(loyaltySelectors.searchLoyaltyInput, `${loyaltyAgency}`); cy.get(loyaltySelectors.loyaltyAgency(loyaltyAgency)).eq(0).click(); if (vertical === 'train') { cy.clearInputAndType(loyaltySelectors.railNumberInput, '67878'); } else { cy.clearInputAndType(loyaltySelectors.loyaltyNumberInput, '67878'); } ProfileInterceptApis.interceptProfileApis(); if (vertical === 'train') { cy.get(loyaltySelectors.submitNewRailCard).eq(0).click(); } else { cy.get(loyaltySelectors.submitNewLoyaltyCard).eq(0).click(); } cy.wait('@waitForLoyaltyCard').its('response.statusCode').should('eq', 201); } static verifyLoyaltyPrograms(program: string, vertical: verticalType) { cy.allure().logStep('Confirm ' + program + ' loyalty card is present'); if (vertical === 'train') { cy.get(loyaltySelectors.railCardEntry).contains(program).should('exist'); } else { cy.get(loyaltySelectors.loyaltyCardEntry).contains(program).should('exist'); } } }