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