qe-fe-automation
Version:
FE test automation framework using cypress
212 lines (194 loc) • 8.18 kB
text/typescript
import { AmplitudeEvents } from './amplitude-events';
import { utilitySelector, Timeouts } from '@utility-lib/index';
const adminClaimSelectors = {
companySetupMidScreenCta: '[data-testid="primaryActionButton"] > .ta-button-v2',
companySetupNavBarCta: '[data-testid="navBarMainCTA"] > .ta-button-v2',
businessLegalName: '[data-testid="businessLegalName"]',
numberOfEmployees: '[data-testId="configureNumberOfEmployees"]',
annualTravelBudget: '[data-testId="annualTravelBudget"]',
configureCompanyAddress: '[data-testid="configureCompanyAddress"]',
companyCity: '[data-testid="configureCompanyCity"]',
configureCompanyState: '[data-testid="configureCompanyState"]',
configureCompanyCountry: '[data-testid="configureCompanyCountry"] input',
configureLHGCompanyCountry: '[data-testid="configureCompanyCountry"]',
configureCompanyZip: '[data-testid="configureCompanyZip"]',
configureCompanyPhone: 'ta-phone-input-v2 input:first',
termsAndConditionCheck: '[data-testid="termsAndConditionCheck"] input',
configureCompanyAccount: '[data-testid="configureCompanyAccount"]',
dropdownOption: '.ta-select-option',
countrySelectOption: '.mat-option-text',
rambleScript: '#rambleScript',
webNavigationNext: '[data-testid="webNavigationNext"]',
closeChaseAdmin: '[data-testid="closeChaseAdmin"]',
onboardingGuideTasks: '[data-testid="onboarding-guide__body-category-tasks"]',
onboardingGuideCloseButton: '[data-testid="onboarding-guide-close"]'
};
export class AdminClaim {
static interceptedToken: string;
static fillAdminClaim(indexMaxNumberOfEmployeesDropdown = 0): void {
cy.allure().logStep('Fill admin claim form and submit');
let companyName: string;
cy.task('getDataFromCache', 'companyNameSuffix').then((companyNameSuffix) => {
companyName = 'TestCompany' + companyNameSuffix;
cy.get(adminClaimSelectors.businessLegalName).type(companyName);
cy.task('putDataInCache', {
key: 'companyName',
data: companyName
});
});
cy.get(adminClaimSelectors.numberOfEmployees)
.then((ele) => {
cy.wrap(ele).click();
})
.then(() => {
cy.get(adminClaimSelectors.dropdownOption)
.eq(indexMaxNumberOfEmployeesDropdown)
.click();
});
cy.get(adminClaimSelectors.annualTravelBudget)
.then((ele) => {
cy.wrap(ele).click();
})
.then(() => {
cy.get(adminClaimSelectors.dropdownOption).first().click();
});
cy.get(adminClaimSelectors.configureCompanyAddress).type('page mill 1501');
cy.get(adminClaimSelectors.companyCity).type('Palo Alto');
cy.get(adminClaimSelectors.configureCompanyZip).type('94304');
cy.clearInputAndType(
adminClaimSelectors.configureCompanyCountry,
'United States'
).then(() => {
cy.get(adminClaimSelectors.countrySelectOption).first().click({ force: true });
});
cy.get(adminClaimSelectors.configureCompanyState)
.then((ele) => {
cy.wrap(ele).click();
})
.then(() => {
cy.get(adminClaimSelectors.dropdownOption).eq(4).click();
});
cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout);
cy.clearInputAndType(
adminClaimSelectors.configureCompanyPhone,
'{backspace}{backspace}12692673678'
);
cy.get(adminClaimSelectors.termsAndConditionCheck).should(
($termsAndConditionElement) => {
// If the termsAndConditionCheck exists, click on it
if ($termsAndConditionElement.length > 0) {
cy.wrap($termsAndConditionElement).click();
}
}
);
cy.get(adminClaimSelectors.configureCompanyAccount).click();
cy.wait('@waitForCompanyOnboard').then((res) => {
AdminClaim.interceptedToken = res.response?.body?.token;
});
AmplitudeEvents.addExpectedAmplitudeEvents(
'admin claim',
'admin claim success',
'admin claim completed'
);
}
static fillLhgAdminClaim(checkRambleScript = true, countryName = 'Germany'): void {
cy.allure().logStep('Fill admin claim form and submit');
cy.get(adminClaimSelectors.businessLegalName).type('TestCompany');
cy.get(adminClaimSelectors.numberOfEmployees)
.then((ele) => {
cy.wrap(ele).click();
})
.then(() => {
cy.get(adminClaimSelectors.dropdownOption).eq(0).click();
});
cy.checkIfExist(adminClaimSelectors.annualTravelBudget).then((exists: boolean) => {
if (exists) {
cy.get(adminClaimSelectors.annualTravelBudget)
.then((ele) => {
cy.wrap(ele).click();
})
.then(() => {
cy.get(adminClaimSelectors.dropdownOption).first().click();
});
}
});
cy.get(adminClaimSelectors.configureCompanyAddress).type('Platz der Republik 1');
cy.get(adminClaimSelectors.companyCity).type('Berlin');
cy.get(adminClaimSelectors.configureCompanyZip).type('11011');
cy.get(adminClaimSelectors.configureLHGCompanyCountry)
.then((ele) => {
cy.wrap(ele).click();
})
.then(() => {
cy.get(adminClaimSelectors.dropdownOption).contains(countryName).click();
});
cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout);
cy.get(utilitySelector.bodySelector).click();
cy.clearInputAndType(
adminClaimSelectors.configureCompanyPhone,
'{backspace}{backspace}+43 12312312'
);
cy.get(adminClaimSelectors.termsAndConditionCheck).click();
cy.get(adminClaimSelectors.configureCompanyAccount).click();
if (checkRambleScript) {
cy.get(adminClaimSelectors.rambleScript, Timeouts.MEDIUM_TIMEOUT_60_SEC).should(
'exist'
);
}
cy.wait('@waitForCreateCompanyAccount').then((res) => {
cy.task('putDataInCache', {
key: 'companyUuid',
data: res.response?.body?.companyUuid
});
AdminClaim.interceptedToken = res.response?.body?.token;
});
AmplitudeEvents.addExpectedAmplitudeEvents('create company account');
}
public static completeWebNavanRewardPromo(): void {
cy.allure().logStep('Complete navan rewards promo steps');
cy.get(adminClaimSelectors.webNavigationNext).click();
cy.get(adminClaimSelectors.webNavigationNext).click();
cy.get(adminClaimSelectors.webNavigationNext).click();
AmplitudeEvents.addExpectedAmplitudeEvents(
'self signup value proposition opened',
'value proposition next step click',
'value proposition next step click',
'complete value proposition steps clicked'
);
}
public static completeWebNavanRewardPromoWithExpense(): void {
cy.allure().logStep('Start navan rewards promo steps from expense tab');
cy.get(adminClaimSelectors.webNavigationNext).click();
AmplitudeEvents.addExpectedAmplitudeEvents('value proposition next step click');
}
static verifyAdminClaimedOpen(): void {
cy.allure().logStep('Verify configure-company open without value props');
cy.url().should('include', '/configure-company');
AmplitudeEvents.addExpectedAmplitudeEvents('admin claim page opened');
}
static verifyOnboardingSignupFlowNotShown(): void {
cy.allure().logStep('Verify onboarding signup flow not shown');
cy.url().should('not.include', '/signup');
}
static verifyAdminClaimedOpenOnMobile(): void {
cy.allure().logStep('Verify configure-company open without value props');
cy.url().should('include', '/setup-company');
AmplitudeEvents.addExpectedAmplitudeEvents('admin claim page opened');
}
static verifyHomePageOpened(): void {
cy.allure().logStep('Verify go to home page');
cy.url().should('include', '/home');
}
static closeOnboardingGuide(): void {
cy.allure().logStep('Close onboarding guide ');
cy.get(adminClaimSelectors.onboardingGuideCloseButton).click({ force: true });
}
static clickCompanySetupNavBarCta(): void {
cy.allure().logStep('Click on company setup nav bar cta');
cy.get(adminClaimSelectors.companySetupNavBarCta).click();
}
static clickCompanySetupMidScreenCta(): void {
cy.allure().logStep('Click on company setup mid screen cta');
cy.get(adminClaimSelectors.companySetupMidScreenCta).click();
}
}