UNPKG

qe-fe-automation

Version:
96 lines (82 loc) 3.11 kB
import { AmplitudeEvents } from '@growth-lib/index'; import { Timeouts } from '@utility-lib/constants'; const personaSelectors = { answerByNumber: (answerNumber: number) => { return '[data-testid="answerNumber' + answerNumber + '"]'; }, answerBySignupReason: (signupReason: SignupReason) => { return '[data-testid="answer-' + signupReason + '"]'; }, firstPersonaAnswer: '[data-testid="answerNumber0"]', secondPersonaAnswer: '[data-testid="answerNumber1"]', thirdPersonaAnswer: '[data-testid="answerNumber2"]', travelerPersonaAnswer: '[data-testid="answerNumber1"]', startCompanySetup: '[data-testid="startSetup"]', closeModalButton: '[data-testid="modal-header-close-button"]' }; export enum SignupReason { TRAVEL_AND_EXPENSE_SOLUTION = 'TRAVEL_AND_EXPENSE_SOLUTION', TRAVEL_SOLUTION = 'TRAVEL_SOLUTION', BOOK_FOR_OTHERS = 'BOOK_FOR_OTHERS', BOOK_TRIP = 'BOOK_TRIP', TEAM_OFFSITE = 'TEAM_OFFSITE' } enum PersonaQuestion { FIRST = 'first', SECOND = 'second', THIRD = 'Third', FOURTH = 'Fourth', FIFTH = 'Fifth' } export class Persona { static nonPersonaFlow() { cy.allure().logStep('check we do not on persona question flow'); cy.get(personaSelectors.answerByNumber(0)).should('not.exist'); } static answerFirstPersonaAsTravelerAndExpanseManagerAccount() { Persona.answerFirstPersonaQuestion(SignupReason.TRAVEL_AND_EXPENSE_SOLUTION); } static answerFirstPersonaAsTravelerManagerAccount() { Persona.answerFirstPersonaQuestion(SignupReason.TRAVEL_SOLUTION); } static answerFirstPersonaAsRogueTravelAccount() { Persona.answerFirstPersonaQuestion(SignupReason.BOOK_TRIP); } static answerFirstPersonaAsBookForOtherAccount() { Persona.answerFirstPersonaQuestion(SignupReason.BOOK_FOR_OTHERS); } static fillPersonaBeforeSignup(signupReason: SignupReason) { Persona.answerSignupReason(signupReason); } static checkBookForOtherNotExist() { cy.get( personaSelectors.answerBySignupReason(SignupReason.TRAVEL_AND_EXPENSE_SOLUTION) ); cy.get(personaSelectors.answerBySignupReason(SignupReason.BOOK_FOR_OTHERS)).should( 'not.exist' ); } static answerFirstPersonaQuestion(signupReason: SignupReason) { cy.intercept('POST', new RegExp('/api/selfSell/onboard')).as('onboard'); Persona.answerSignupReason(signupReason); cy.wait('@onboard').then((res) => { if (res.response?.body?.companyUuid) { cy.task('putDataInCache', { key: 'companyUuid', data: res.response?.body?.companyUuid }); } }); } static answerSignupReason(signupReason: SignupReason) { cy.allure().logStep('Answer Persona signup reason as ' + signupReason); this.answerPersonaBySelector(personaSelectors.answerBySignupReason(signupReason)); } static answerPersonaBySelector(selector: string) { AmplitudeEvents.addExpectedAmplitudeEvents('self signup questionnaire opened'); cy.get(selector).click({ force: true }); AmplitudeEvents.addExpectedAmplitudeEvents( 'self signup questionnaire answer selected' ); } }