qe-fe-automation
Version:
FE test automation framework using cypress
542 lines (489 loc) • 23.2 kB
text/typescript
import { Timeouts } from '@utility-lib/constants';
import { AdminClaim } from '@growth-lib/admin-claim';
import { OnboardByApi } from './onboard-by-api';
import { BillingEntity } from '@growth-lib/billing-entity';
import {
ONBOARDING_GUIDE_SELECTORS,
VerifyType,
TasksId,
TaskState,
ONBOARDING_GUIDE_USER_SELECTORS,
URL_VERIFY
} from './onboarding-guide.utils';
import { HttpRequest } from 'cypress/artifacts';
import { Logs } from '@utility-lib/log';
export class OnboardingGuide {
static cyGetElement(selector: string): Cypress.Chainable<any> {
return cy.get('body').then((body) => {
const onboardingGuideIframeId = '#onboarding-guide';
if (body.find(onboardingGuideIframeId).length > 0) {
cy.frameLoaded(onboardingGuideIframeId);
return cy
.iframe(onboardingGuideIframeId)
.find(selector)
.then(($elem) => {
if ($elem.length > 0) {
return cy.iframe(onboardingGuideIframeId).find(selector);
}
return cy.wrap(null);
});
} else {
if (body.find(selector).length > 0) {
return cy.get(selector, { timeout: Timeouts.SHORT_TIMEOUT_5_SEC.timeout });
}
return cy.wrap(null);
}
});
}
static openOnboardingGuide(): void {
Logs.logToCypressAndAllure('### openOnboardingGuide');
OnboardingGuide.verifyOnboardingGuideCTAExist();
cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout);
OnboardingGuide.cyGetElement(ONBOARDING_GUIDE_SELECTORS.onboardingGuideDrawer).then(($elem) => {
if (!$elem.is(':visible')) {
Logs.logToCypressAndAllure('### openOnboardingGuide (drawer not visible - click CTA)');
cy.get(ONBOARDING_GUIDE_SELECTORS.onBoardingGuideButton).click(); // needs to be cy.get - do not change
OnboardingGuide.waitForGetTasks();
OnboardingGuide.verifyOnboardingGuideDrawerOpen();
}
});
}
static verifyOnboardingGuideOpen(): void {
Logs.logToCypressAndAllure('### verifyOnboardingGuideOpen');
OnboardingGuide.waitForGetTasks();
OnboardingGuide.verifyOnboardingGuideCTAExist();
OnboardingGuide.verifyOnboardingGuideDrawerOpen();
}
static verifyOnboardingGuideCTAExist(): void {
Logs.logToCypressAndAllure('### verifyOnboardingGuideCTAExist');
OnboardingGuide.printUserDetails();
const onboardingGuideIframeId = '#onboarding-guide';
cy.frameLoaded(onboardingGuideIframeId);
cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout);
cy.get(ONBOARDING_GUIDE_SELECTORS.onBoardingGuideButton).then(($cta) => {
if ($cta.length > 0) {
Logs.logToCypressAndAllure('### verifyOnboardingGuideCTAExist -> exist');
cy.get(ONBOARDING_GUIDE_SELECTORS.onBoardingGuideButton).should('exist');
} else {
Logs.logToCypressAndAllure('### verifyOnboardingGuideCTAExist -> not exist');
cy.wait(Timeouts.MEDIUM_TIMEOUT_10_SEC.timeout);
cy.get(ONBOARDING_GUIDE_SELECTORS.onBoardingGuideButton).should('exist');
}
});
}
static verifyOnboardingGuideDrawerOpen(): void {
Logs.logToCypressAndAllure('### verifyOnboardingGuideDrawerOpen');
OnboardingGuide.cyGetElement(ONBOARDING_GUIDE_SELECTORS.onboardingGuideDrawer).then(($drawer) => {
if ($drawer.is(':visible')) {
Logs.logToCypressAndAllure(`### verifyOnboardingGuideOpen (drawer visible)`);
OnboardingGuide.verifySkeletonTasksCompleted();
} else {
Logs.logToCypressAndAllure(`### RE-verifyOnboardingGuideOpen (drawer not visible)`);
OnboardingGuide.openOnboardingGuide();
}
});
}
static verifySkeletonTasksCompleted(): void {
Logs.logToCypressAndAllure(`### verifySkeletonTasksCompleted`);
OnboardingGuide.cyGetElement(ONBOARDING_GUIDE_SELECTORS.onBoardingGuideHeaderTitle).then(($title) => {
if (!$title) {
Logs.logToCypressAndAllure(`### verifySkeletonTasksCompleted (skeleton visible)`);
cy.wait(Timeouts.MEDIUM_TIMEOUT_10_SEC.timeout);
}
Logs.logToCypressAndAllure(`### verifySkeletonTasksCompleted (title visible)`);
OnboardingGuide.verify(ONBOARDING_GUIDE_SELECTORS.onBoardingGuideHeaderTitle, 'be.visible');
});
}
static waitForGetTasks(): void {
Logs.logToCypressAndAllure(`### waitForGetTasks`);
cy.wait('@waitForGetTasks');
cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout);
}
static clickOn(selector: string): void {
Logs.logToCypressAndAllure(`*** click on: ${selector}`);
OnboardingGuide.cyGetElement(selector).click();
}
static verify(selector: string, verify: VerifyType = 'be.visible'): void {
Logs.logToCypressAndAllure(`*** verify: ${selector}`);
OnboardingGuide.cyGetElement(selector).should(verify);
}
static verifyLockedTask(selector: string, verify: VerifyType = 'be.visible'): void {
Logs.logToCypressAndAllure(`*** verifyLockedTask: ${selector} - ${verify}`);
OnboardingGuide.cyGetElement(selector).find('.ta-icon[icon="lock-filled"]').should(verify);
}
static verifyTaskDisable(selector: string): void {
Logs.logToCypressAndAllure(`*** verifyTaskDisable: ${selector}`);
OnboardingGuide.cyGetElement(selector).should('have.css', 'pointer-events', 'none');
}
static checkUrl(url: URL_VERIFY): void {
Logs.logToCypressAndAllure(`*** check url: ${url}`);
cy.url().should('include', url);
}
static printUserDetails(): void {
cy.window()
.its('localStorage')
.invoke('getItem', 'bueno')
.then((bueno: string | null) => {
if (bueno) {
const buenoObject = JSON.parse(bueno);
const keys = [
'companyUuid',
'dateSignupCompleted',
'email',
'growthSelfSellState',
'growthSelfSellCompany',
'accountType',
'companySelfOnboardingAccountSegment'
];
const data = keys.reduce((acc, key) => {
const value = buenoObject?.userInfo?.[key] || '';
cy.allure().logStep(`${key}: ${value}`);
return { ...acc, [key]: value };
}, {});
cy.log(`*** ${JSON.stringify(data)}`);
console.log(data);
console.info(`%c ${buenoObject?.userInfo?.['email']}`, 'background: black; color: lightgreen');
}
});
}
static closeOnboardingGuide(): void {
Logs.logToCypressAndAllure(`*** closeOnboardingGuide`);
OnboardingGuide.cyGetElement(ONBOARDING_GUIDE_SELECTORS.closeOnboardingGuideXButton).then(($btn) => {
if ($btn) {
$btn.click();
cy.wait(Timeouts.SHORT_TIMEOUT_1_SEC.timeout);
}
});
}
static updateTask({ taskId, state }: { taskId: string; state: string }) {
Logs.logToCypressAndAllure(`*** updateTask: ${taskId} to ${state}`);
OnboardingGuide.cyGetElement(ONBOARDING_GUIDE_SELECTORS.closeOnboardingGuideXButton).then(($button) => {
if ($button.length > 0) {
$button.click();
}
cy.request({
method: HttpRequest.Post,
url: `api/selfSetup/task/update`,
body: { id: taskId, state },
headers: {
Authorization:
'TripActions ' +
(AdminClaim.interceptedToken.replace('TripActions ', '') ||
OnboardByApi.ONBOARD_TOKEN.replace('TripActions ', ''))
},
retryOnStatusCodeFailure: false
}).then((response) => {
expect(response.status).to.eq(200);
});
});
}
static closeOnboardingGuideForever(): void {
Logs.logToCypressAndAllure(`*** closeOnboardingGuideForever`);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.closeOnboardingGuideForeverButton);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.closeOnboardingGuideForeverButtonInPopup);
}
static terminateOnboardingGuide(): void {
Logs.logToCypressAndAllure(`*** terminateOnboardingGuide`);
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.closeOnboardingGuideForever();
cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout);
OnboardingGuide.verify(ONBOARDING_GUIDE_SELECTORS.onBoardingGuideButton, 'not.exist');
}
static checkPageReviewTravelPolicy(): void {
Logs.logToCypressAndAllure(`*** checkPageReviewTravelPolicy`);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.getReadyToTravelTask);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.getStartedReviewTravelPolicy);
OnboardingGuide.checkUrl(URL_VERIFY.POLICY_WIZARD);
}
static checkPageSetUpTravelPaymentMethod(): void {
Logs.logToCypressAndAllure(`*** checkPageSetUpTravelPaymentMethod`);
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.getReadyToTravelTask);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.getStartedSetupTravelPaymentMethod);
OnboardingGuide.checkUrl(URL_VERIFY.SETTINGS_PAYMENTS);
}
static checkPageAddAndInviteUsers(): void {
Logs.logToCypressAndAllure(`*** checkPageAddAndInviteUsers`);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.addUsersTask);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.getStartedAddAndInviteUsers);
OnboardingGuide.checkUrl(URL_VERIFY.USERS);
}
static checkPageAddCorporateCard(): void {
Logs.logToCypressAndAllure(`*** checkPageAddCorporateCard`);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.addCorporateCard);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.addCorporateCardGetStartedButton);
OnboardingGuide.checkUrl(URL_VERIFY.CARD_PROGRAMS);
}
static checkAddressAndAddCard(): void {
Logs.logToCypressAndAllure(`*** checkAddressAndAddCard`);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.addressGetStartedButton);
OnboardingGuide.checkUrl(URL_VERIFY.BILLABLE_ENTITIES);
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.checkPageAddCorporateCard();
}
static checkPageReviewExpensePolicy(): void {
Logs.logToCypressAndAllure(`*** checkPageReviewExpensePolicy`);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.getReadyToExpenseTask);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.reviewExpensePolicyTask);
}
static checkPageSetAccountingPreferences(): void {
Logs.logToCypressAndAllure(`*** checkPageSetAccountingPreferences`);
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.getReadyToExpenseTask);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.setSetAccountingPreferencesButton);
OnboardingGuide.checkUrl(URL_VERIFY.INTEGRATION);
}
static getReadyToExpense(): void {
Logs.logToCypressAndAllure(`*** getReadyToExpense`);
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.checkPageReviewExpensePolicy();
OnboardingGuide.checkUrl(URL_VERIFY.POLICY_ONBOARDING_V2);
cy.wait(Timeouts.SHORT_TIMEOUT_5_SEC.timeout);
OnboardingGuide.checkPageSetAccountingPreferences();
}
static completeGetReadyToTravel(): void {
Logs.logToCypressAndAllure(`*** completeGetReadyToTravel`);
OnboardingGuide.checkPageReviewTravelPolicy();
OnboardingGuide.checkPageSetUpTravelPaymentMethod();
}
static clickOnboardingGuideGetMoreTasksButton(): void {
Logs.logToCypressAndAllure(`*** clickOnboardingGuideGetMoreTasksButton`);
OnboardingGuide.cyGetElement(ONBOARDING_GUIDE_SELECTORS.getMoreAccordion).then(($btn) => {
if ($btn) {
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.getMoreAccordion);
}
cy.wait(Timeouts.SHORT_TIMEOUT_2_SEC.timeout);
OnboardingGuide.cyGetElement(ONBOARDING_GUIDE_SELECTORS.getMoreHeader).last().scrollIntoView();
cy.wait(Timeouts.SHORT_TIMEOUT_2_SEC.timeout);
});
}
static verifyOnboardingGuideGetMoreTasks(): void {
Logs.logToCypressAndAllure(`*** verifyOnboardingGuideGetMoreTasks`);
OnboardingGuide.verify(ONBOARDING_GUIDE_SELECTORS.getConnectCorporateCard);
OnboardingGuide.verify(ONBOARDING_GUIDE_SELECTORS.getSetUpReimbursments);
}
static clickThumbsDownButtonAndSubmitFeedback(): void {
Logs.logToCypressAndAllure(`*** clickThumbsDownButtonAndSubmitFeedback`);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.faqThumbsDownButton);
OnboardingGuide.cyGetElement(ONBOARDING_GUIDE_SELECTORS.faqThumbsDownTextbox).type('feedback test');
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.faqThumbsDownSubmitButton);
}
static fillAllOnboardingTasks(isExepsneUser = false): void {
Logs.logToCypressAndAllure(`*** fillAllOnboardingTasks`);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.getStartedReviewTravelPolicy);
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.getStartedSetupTravelPaymentMethod);
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.reviewTravelPolicyMarkAsDone);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.setUpTravelPaymentMethodMarkAsDone);
if (isExepsneUser) {
Logs.logToCypressAndAllure(`*** fillAllOnboardingTasks isExepsneUser`);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.reviewExpensePolicyTask);
OnboardingGuide.checkUrl(URL_VERIFY.POLICY_ONBOARDING_V2);
cy.wait(Timeouts.SHORT_TIMEOUT_5_SEC.timeout);
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.reviewExpensePolicyTaskMarkAsDone);
}
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.getStartedAddAndInviteUsers);
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.updateTask({
taskId: TasksId.ADD_USERS,
state: TaskState.COMPLETED
});
OnboardingGuide.updateTask({
taskId: TasksId.COMPLETE_FIRST_BOOKING,
state: TaskState.COMPLETED
});
}
// TODO: check ???
static clickOnHomePage() {
Logs.logToCypressAndAllure(`*** clickOnHomePage`);
return cy.get(ONBOARDING_GUIDE_SELECTORS.topLeftMainMenu).click();
}
static verifyTaskCompleted(selector: string): void {
Logs.logToCypressAndAllure(`*** verifyTaskCompleted ${selector}`);
OnboardingGuide.cyGetElement(selector).find('.ta-icon[icon="check"]').should('be.visible');
}
static checkOnboardingGuideForTravelAdmin(): void {
Logs.logToCypressAndAllure(`*** checkOnboardingGuideForTravelAdmin`);
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.verifyTaskCompleted(ONBOARDING_GUIDE_SELECTORS.addUsersTask);
OnboardingGuide.verifyLockedTask(ONBOARDING_GUIDE_SELECTORS.getReadyToExpenseTask);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.getReadyToExpenseTask);
OnboardingGuide.verify(ONBOARDING_GUIDE_SELECTORS.getReadyToExpenseBadge);
OnboardingGuide.verifyTaskDisable(ONBOARDING_GUIDE_SELECTORS.reviewExpensePolicyGetStartedButton);
OnboardingGuide.verifyTaskDisable(ONBOARDING_GUIDE_SELECTORS.setSetAccountingPreferencesButton);
}
static checkOnboardingGuideForExpenseAdmin(): void {
Logs.logToCypressAndAllure(`*** checkOnboardingGuideForExpenseAdmin`);
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.verifyTaskCompleted(ONBOARDING_GUIDE_SELECTORS.addUsersTask);
OnboardingGuide.verifyLockedTask(ONBOARDING_GUIDE_SELECTORS.getReadyToTravelTask);
OnboardingGuide.verify(ONBOARDING_GUIDE_SELECTORS.getReadyToTravelBadge);
OnboardingGuide.verifyTaskDisable(ONBOARDING_GUIDE_SELECTORS.getStartedReviewTravelPolicy);
OnboardingGuide.verifyTaskDisable(ONBOARDING_GUIDE_SELECTORS.getStartedSetupTravelPaymentMethod);
OnboardingGuide.verifyLockedTask(ONBOARDING_GUIDE_SELECTORS.bookTheFirstTripTask);
}
/* User onboarding guide */
static verifyUserOnboardingTasks(): void {
Logs.logToCypressAndAllure(`*** verifyUserOnboardingTasks`);
OnboardingGuide.verify(ONBOARDING_GUIDE_USER_SELECTORS.addTravelerInfo, 'exist');
OnboardingGuide.verify(ONBOARDING_GUIDE_USER_SELECTORS.addLoyaltyPrograms, 'exist');
OnboardingGuide.verify(ONBOARDING_GUIDE_USER_SELECTORS.learnAboutRewards, 'exist');
OnboardingGuide.verify(ONBOARDING_GUIDE_USER_SELECTORS.completeFirstBooking, 'exist');
}
static fillAllUserOnboardingTasks(): void {
Logs.logToCypressAndAllure(`*** fillAllUserOnboardingTasks`);
OnboardingGuide.startUserTasks();
OnboardingGuide.completeUserTasks();
}
static startUserTasks(): void {
Logs.logToCypressAndAllure(`*** startUserTasks`);
OnboardingGuide.verifyElementTextAndClick(ONBOARDING_GUIDE_USER_SELECTORS.addLoyaltyProgramsButton, 'Get started');
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.verifyElementTextAndClick(ONBOARDING_GUIDE_USER_SELECTORS.addTravelerInfoButton, 'Get started');
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.verifyElementTextAndClick(ONBOARDING_GUIDE_USER_SELECTORS.learnAboutRewardsButton, 'Get started');
OnboardingGuide.openOnboardingGuide();
}
static completeUserTasks(): void {
Logs.logToCypressAndAllure(`*** completeUserTasks`);
OnboardingGuide.verifyElementTextAndClick(
ONBOARDING_GUIDE_USER_SELECTORS.loyaltyCompleteCompleteCta,
'Mark as done'
);
OnboardingGuide.verifyElementTextAndClick(ONBOARDING_GUIDE_USER_SELECTORS.travelerInfoCompleteCta, 'Mark as done');
OnboardingGuide.verifyElementTextAndClick(
ONBOARDING_GUIDE_USER_SELECTORS.learnAboutRewardsCompleteCta,
'Mark as done'
);
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.updateTask({
taskId: TasksId.COMPLETE_FIRST_BOOKING,
state: TaskState.COMPLETED
});
}
static verifyElementTextAndClick(onboardingGuideSelector: string, ctaText: string): void {
Logs.logToCypressAndAllure(`*** verifyElementTextAndClick`);
OnboardingGuide.cyGetElement(onboardingGuideSelector).should('contain', ctaText);
OnboardingGuide.clickOn(onboardingGuideSelector);
cy.wait(Timeouts.SHORT_TIMEOUT_1_SEC.timeout);
}
static pressSkipThisInGetReadyToExpenseFromAdmin(): void {
Logs.logToCypressAndAllure(`*** pressSkipThisInGetReadyToExpenseFromAdmin`);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.getReadyToExpenseTask);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.getReadyToExpenseSkipThisButton);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.getReadyToExpenseTask);
OnboardingGuide.verify(ONBOARDING_GUIDE_SELECTORS.checkMarkInSetAccountingPreferences, 'exist');
}
static completeAddAddressTask(): void {
Logs.logToCypressAndAllure(`*** completeAddAddressTask`);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.addressGetStartedButton);
OnboardingGuide.checkUrl(URL_VERIFY.LEGAL_ADDRESS);
BillingEntity.fillBillingEntityForm();
cy.wait(Timeouts.SHORT_TIMEOUT_5_SEC.timeout);
OnboardingGuide.checkUrl(URL_VERIFY.BILLABLE_ENTITIES);
}
static checkLiquidPagesOnboardingGuide(): void {
Logs.logToCypressAndAllure(`*** checkLiquidPagesOnboardingGuide`);
function checkPageSubmitFirstExpense(): void {
Logs.logToCypressAndAllure(`*** checkPageSubmitFirstExpense`);
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.getReadyToExpenseTask);
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.submitFirstExpenseGetStartedButton);
OnboardingGuide.checkUrl(URL_VERIFY.ALL_TRANSACTIONS);
cy.contains('button', 'Done').click();
}
function checkPageNavanConnect(): void {
Logs.logToCypressAndAllure(`*** checkPageNavanConnect`);
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.clickOnboardingGuideGetMoreTasksButton();
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.connectCorporateCardLearnMoreButton);
OnboardingGuide.checkUrl(URL_VERIFY.CARD_PROGRAMS);
}
function checkPageSetUpReimbursments(): void {
Logs.logToCypressAndAllure(`*** checkPageSetUpReimbursments`);
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.clickOnboardingGuideGetMoreTasksButton();
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.reimbursementsLearnMoreButton);
}
OnboardingGuide.completeAddAddressTask();
cy.wait(Timeouts.SHORT_TIMEOUT_5_SEC.timeout);
OnboardingGuide.getReadyToExpense();
checkPageSubmitFirstExpense();
checkPageNavanConnect();
checkPageSetUpReimbursments();
}
static completeTasksByAPI(taskIds: TasksId[] = []): void {
Logs.logToCypressAndAllure(`*** completeTasksByAPI`);
let hasSubTasks;
taskIds.forEach((taskId: TasksId) => {
hasSubTasks = false;
OnboardingGuide.openOnboardingGuide();
switch (taskId) {
case TasksId.COMPLETE_FIRST_BOOKING:
OnboardingGuide.verify(ONBOARDING_GUIDE_SELECTORS.completeFirstBooking);
break;
case TasksId.APPLY_FOR_NAVAN_CARDS:
OnboardingGuide.verify(ONBOARDING_GUIDE_SELECTORS.addNavanConnectProgramButton);
break;
case TasksId.ADD_USERS:
OnboardingGuide.verify(ONBOARDING_GUIDE_SELECTORS.addUsersTask);
break;
case TasksId.CONNECT_CORPORATE_ACCOUNT_PROGRAM:
OnboardingGuide.verify(ONBOARDING_GUIDE_SELECTORS.addCorporateCard);
break;
case TasksId.GET_READY_TO_TRAVEL:
hasSubTasks = true;
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.getReadyToTravelTask);
cy.wait(Timeouts.SHORT_TIMEOUT_1_SEC.timeout);
OnboardingGuide.cyGetElement(ONBOARDING_GUIDE_SELECTORS.getStartedReviewTravelPolicy).then(($elem) => {
if ($elem) {
OnboardingGuide.updateTask({
taskId: TasksId.REVIEW_AND_EDIT_POLICY_FOR_TRAVEL,
state: TaskState.COMPLETED
});
}
});
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.cyGetElement(ONBOARDING_GUIDE_SELECTORS.getVTravelPaymentMethodButton).then(($elem) => {
if ($elem) {
OnboardingGuide.updateTask({
taskId: TasksId.SET_UP_TRAVEL_PAYMENT,
state: TaskState.COMPLETED
});
}
});
break;
case TasksId.GET_READY_TO_EXPENSE:
hasSubTasks = true;
OnboardingGuide.clickOn(ONBOARDING_GUIDE_SELECTORS.getReadyToExpenseTask);
cy.wait(Timeouts.SHORT_TIMEOUT_1_SEC.timeout);
OnboardingGuide.cyGetElement(ONBOARDING_GUIDE_SELECTORS.reviewExpensePolicyGetStartedButton).then(($elem) => {
if ($elem) {
OnboardingGuide.updateTask({
taskId: TasksId.REVIEW_AND_EDIT_POLICY_FOR_EXPENSE,
state: TaskState.COMPLETED
});
}
});
OnboardingGuide.openOnboardingGuide();
OnboardingGuide.cyGetElement(ONBOARDING_GUIDE_SELECTORS.setSetAccountingPreferencesButton).then(($elem) => {
if ($elem) {
OnboardingGuide.updateTask({
taskId: TasksId.SYNC_ACCOUNTING_SOFTWARE,
state: TaskState.COMPLETED
});
}
});
break;
}
if (!hasSubTasks) {
OnboardingGuide.updateTask({
taskId,
state: TaskState.COMPLETED
});
}
});
}
}