UNPKG

qe-fe-automation

Version:
212 lines (194 loc) 8.18 kB
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(); } }