qe-fe-automation
Version:
FE test automation framework using cypress
104 lines (94 loc) • 4.04 kB
text/typescript
import { AmplitudeEvents } from './amplitude-events';
const adsSelectors = {
homePageTile: '[data-testid="tile-upsell-banner-NAVAN_EXPENSE"]',
upsellExpenseLP: '.upsell-expense-lp',
upsellExpenseLPCheckbox: '[data-testid="agreement-check"]',
upsellExpenseLPCTA: '[data-testid="add-expense-button"] button',
upsellExpenseCongratsPage: '.upsell-expense-congrats',
upsellExpenseCongratsButton: '[data-testid="upsell-expense-congrats-button"]',
upsellExpenseExpendingBannerButton: '.expense-upsell-banner__content__CTAs button',
pricingAdBanner: '[data-testid="pricing-ad-banner"]',
pricingAdBannerTitle: '[data-testid="pricing-ad-banner-title"]',
pricingAdBannerCTA: '[data-testid="pricing-ad-banner-cta"]'
};
export class GrowthAds {
static clickOnExpendingBannerAd(): void {
cy.allure().logStep('click on admin expending banner');
cy.get(adsSelectors.upsellExpenseExpendingBannerButton).should('be.visible');
cy.get(adsSelectors.upsellExpenseExpendingBannerButton).click();
AmplitudeEvents.addExpectedAmplitudeEvents('upsell banner clicked');
}
static clickOnHomePageAdTile(): void {
cy.allure().logStep('click on ad tile home page');
cy.get(adsSelectors.homePageTile).should('be.visible');
cy.get(adsSelectors.homePageTile).click();
AmplitudeEvents.addExpectedAmplitudeEvents('expense tile banner clicked');
}
static verifyUpsellExpenseOpen(): void {
cy.allure().logStep('Verify expense/upsell LP is getting opened');
cy.url().should('include', '/expense/upsell');
cy.get(adsSelectors.upsellExpenseLP).should('be.visible');
AmplitudeEvents.addExpectedAmplitudeEvents('expense upsell page opened');
}
static clickOnAddExpenseCheckbox(): void {
this.submitShouldBeDisabled();
cy.allure().logStep('click on add expense checkbox');
cy.get(adsSelectors.upsellExpenseLPCheckbox).click();
}
static submitShouldBeDisabled(): void {
cy.get(adsSelectors.upsellExpenseLPCTA).within(($content) => {
expect($content.is('[disabled]'), 'submit button should be disabled').to.be.true;
});
}
static clickOnAddExpenseCTA(): void {
cy.allure().logStep('click on add expense CTA');
cy.get(adsSelectors.upsellExpenseLPCTA).click();
AmplitudeEvents.addExpectedAmplitudeEvents('add expense clicked');
}
static verifyUpsellExpenseSubmitted(): void {
cy.allure().logStep('Verify expense/upsell LP got submitted');
cy.url().should('include', 'expense/upsell/congratulations');
cy.get(adsSelectors.upsellExpenseCongratsPage).should('be.visible');
AmplitudeEvents.addExpectedAmplitudeEvents('add expense success');
}
static clickOnSetUpNavanExpense(): void {
cy.allure().logStep('click on set up navan expense');
cy.get(adsSelectors.upsellExpenseCongratsButton).click();
}
static verifyPricingAdBannerLoaded(): void {
// expected ad content
const adContent = {
title:
'Your company has exceeded the free limit of 15 Monthly Active Users last month',
ctas: [
{
title: 'Add a payment method',
link: '/app/company/platform-fees?referral=mau_fop_reminder_admin_banner',
icon: {
name: 'plus',
theme: 'solid'
}
},
{
title: 'Contact sales',
link: 'mailto:growthsales@navan.com',
icon: {
name: 'email',
theme: 'solid'
}
}
]
};
cy.allure().logStep('Verify pricing ad banner got loaded');
cy.get(adsSelectors.pricingAdBanner).should('be.visible');
cy.get(adsSelectors.pricingAdBannerTitle).should('have.text', adContent.title);
cy.get(adsSelectors.pricingAdBannerCTA)
.eq(0)
.should('have.text', adContent.ctas[0].title);
cy.get(adsSelectors.pricingAdBannerCTA)
.eq(1)
.should('have.text', adContent.ctas[1].title);
cy.get(adsSelectors.pricingAdBannerCTA).eq(0).click();
AmplitudeEvents.addExpectedAmplitudeEvents('expense mau banner clicked');
}
}