qe-fe-automation
Version:
FE test automation framework using cypress
70 lines (67 loc) • 2.7 kB
text/typescript
import { trainSearchSelector } from './search';
export const trainCardSelector = {
addNewTrainCard: '[text="Add new train card"] button',
searchNewLoyaltyCard: 'input[qaid="searchLoyalty"]',
addTrainCard: '[class^="ta-button-v2 button button--ghost"]',
cardNumber: '[formcontrolname="railCardNumber"]',
expirationMonth: '[formcontrolname="expirationMonth"] button',
expirationDay: '[formcontrolname="expirationDay"] button',
expirationYear: '[formcontrolname="expirationYear"] button',
selectOption: '[class="ta-select-option"]',
addCard: '[id="addRailCardButton"] button',
loyaltyCard: '[class="ta-train-card-status has-cards"]'
};
const randomMonth = Math.floor(Math.random() * 6) + 1;
const randomDay = Math.floor(Math.random() * 10) + 1;
export class TrainLoyaltyCard {
static addTrainCard() {
cy.get(trainSearchSelector.addTraveler).click();
cy.get(trainCardSelector.addTrainCard).click();
cy.wait('@waitForLoadTrainCard');
cy.allure().logStep('Add train card');
this.logStep();
}
static searchAndSelectLoyaltyCard(loyaltyCardName: string, loyaltyCardNumber: string) {
cy.get(trainCardSelector.addNewTrainCard).click();
cy.get(trainCardSelector.searchNewLoyaltyCard).type(loyaltyCardName);
cy.allure().logStep('Search loyalty card');
this.selectLoyaltyCard(loyaltyCardName);
this.addCardDetails(loyaltyCardNumber);
this.logStep();
}
static selectLoyaltyCard(loyaltyCardName: string) {
cy.get(`[qaid="${loyaltyCardName}"]`).eq(0).click();
this.logStep();
}
static addCardDetails(cardNumber: string) {
this.addCardNumber(cardNumber);
cy.get(trainCardSelector.expirationMonth).click();
cy.get(trainCardSelector.selectOption).eq(randomMonth).click();
cy.get(trainCardSelector.expirationDay).click();
cy.get(trainCardSelector.selectOption).eq(randomDay).click();
cy.get(trainCardSelector.expirationYear).click();
cy.get('[aria-label="2037"]').click();
this.saveAddedCard();
cy.allure().logStep('Add card details');
this.logStep();
}
static addCardNumber(cardNumber: string) {
cy.get(trainCardSelector.cardNumber).type(cardNumber);
cy.allure().logStep('Add card number');
}
static saveAddedCard() {
cy.get(trainCardSelector.addCard).click();
cy.allure().logStep('Save added card');
}
static logStep() {
const callerName = (new Error().stack as string).split('\n')[2].trim();
const stepName = callerName.substring(
callerName.lastIndexOf('.') + 1,
callerName.indexOf('(')
);
cy.allure().logStep(stepName);
}
static expectLoyaltyCardAdded() {
cy.get(trainCardSelector.loyaltyCard).should('be.visible');
}
}