qe-fe-automation
Version:
FE test automation framework using cypress
203 lines (188 loc) • 7.43 kB
text/typescript
import { Timeouts } from '@utility-lib/index';
import { LoginPage, AdminInterceptsApis } from '@admin-lib/index';
import { LRMApiIntercept } from '@lrm-lib/api-intercept';
import { GrowthInterceptApis, LoginSelfSell } from '@growth-lib/index';
import { GrowthModalUtility } from '../modal/growth_modal';
export const underWritingSubmittedApplicationsSelectors = {
termsAndConditionCheck: '[data-testid="termsAndConditionCheck"] input',
searchForUnderWritingCompanies:
'.content-container .filter-container .search-input-wrapper',
searchForUnderWritingCompaniesInput:
'.content-container .filter-container .search-input-wrapper input',
company: 'tbody tr',
companyNameFilterInput: '[placeholder="Company Name"]',
liquidApplicationStatus: '.MuiCardContent-root dt + dd',
plaidStatus: '.content-container .plaid-status',
assignedToStatus: '.content-container .assigned-to',
monthlyCardSpent: '.spendlimit li:nth-child(3) span:nth-child(2)',
requestedSpendLimit: '.spendlimit li:nth-child(2) span:nth-child(2)',
travelSubmitted: '.content-container .travel-submitted',
declineLiquidCard: '.action-card .secondary',
approveLiquidCard: '.action-card .success',
spendLimitTextBox: '.amount-input .input-wrapper input',
confirmLiquidApprovalButton: '.tal-modal.application-approval-modal .primary',
toastSummaryMessageDetails: '.p-toast-detail',
applicationStatus: 'div dt + dd',
alloyApplicationStatus: 'div h3 + p + ul li span div',
plaidConnectivity: '.MuiCard-root:nth-child(4) > ul li:nth-child(3) span:nth-child(2)',
uwStatusCardApplicationUpdate: '.action-card uw-status-card div div',
confirmLiquidDeclineButton: '.tal-modal.application-decline-modal .primary'
};
type SubmitDetails = {
liquidStatus: string;
requestedSpendLimit: string;
monthlyCardSpent: string;
};
export class UnderWritingApplications {
static onBoardSelfSellUpsellUser(emailSuffix: string) {
let token: string;
LRMApiIntercept.interceptLRMApis();
GrowthInterceptApis.interceptApis();
LoginSelfSell.createNewSelfSellLead({
emailSuffix: emailSuffix
})
.then((login) => {
token = login.token;
})
.then(() => {
GrowthModalUtility.onBoardGrowthUser(token);
});
}
static validateSubmittedApplication(): void {
let nameSuffix: any;
cy.allure().logStep('Validate Submitted Application:');
cy.task('getDataFromCache', 'companyNameSuffix').then((companyNameSuffix) => {
nameSuffix = companyNameSuffix;
cy.get(underWritingSubmittedApplicationsSelectors.companyNameFilterInput).type(
nameSuffix
);
this.validateCompany();
});
}
static loginToUnderWritingAndValidateCompanyStatus(
email: string,
superAdminCredentials: string
): void {
LoginPage.clearExistingLoginSession();
AdminInterceptsApis.interceptAdminsApis();
cy.loginWithAuthToken({ email, password: superAdminCredentials, isSA: true });
cy.visit('/app/underwriting/companies').then(() => {
UnderWritingApplications.validateSubmittedApplication();
});
}
static selectSubmittedApplication(): void {
cy.allure().logStep('Select Submitted Application:');
cy.wait(Timeouts.MEDIUM_TIMEOUT_10_SEC.timeout);
cy.get(underWritingSubmittedApplicationsSelectors.company)
.eq(0)
.should('be.visible')
.click();
cy.wait('@selfSellApplications');
}
static validateApproveLiquidDetails(connectBankCheck: string) {
cy.get(underWritingSubmittedApplicationsSelectors.alloyApplicationStatus).contains(
'Alloy awaiting answer'
);
if (connectBankCheck == 'plaid') {
cy.get(underWritingSubmittedApplicationsSelectors.plaidConnectivity).contains(
'Yes'
);
} else {
cy.get(underWritingSubmittedApplicationsSelectors.plaidConnectivity).contains('No');
}
}
static approveLiquid(limitAmount: string) {
cy.allure().logStep('Approve Liquid Amount:' + limitAmount);
cy.wait(Timeouts.MEDIUM_TIMEOUT_10_SEC.timeout);
cy.get(underWritingSubmittedApplicationsSelectors.spendLimitTextBox)
.should('be.visible')
.type(limitAmount);
cy.get(underWritingSubmittedApplicationsSelectors.approveLiquidCard)
.should('be.visible')
.click({ force: true });
cy.get(
underWritingSubmittedApplicationsSelectors.confirmLiquidApprovalButton,
Timeouts.MEDIUM_TIMEOUT_60_SEC
)
.should('be.visible')
.click({ force: true });
cy.get(underWritingSubmittedApplicationsSelectors.toastSummaryMessageDetails)
.should('be.visible')
.contains('approved');
cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout);
cy.reload();
cy.wait(Timeouts.MEDIUM_TIMEOUT_10_SEC.timeout);
cy.go('back');
}
static declineLiquid() {
cy.allure().logStep('Decline Liquid');
cy.get(underWritingSubmittedApplicationsSelectors.declineLiquidCard)
.should('be.visible')
.click({ force: true });
cy.get(
underWritingSubmittedApplicationsSelectors.confirmLiquidDeclineButton,
Timeouts.MEDIUM_TIMEOUT_60_SEC
)
.should('be.visible')
.click({ force: true });
cy.get(underWritingSubmittedApplicationsSelectors.toastSummaryMessageDetails)
.should('be.visible')
.contains('decline');
cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout);
cy.reload();
cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout);
cy.go('back');
}
static validateSubmitDetails(submitDetails: SubmitDetails): void {
const { liquidStatus, requestedSpendLimit, monthlyCardSpent } = submitDetails;
cy.allure().logStep(
'Validate Submit Details ' +
' liquidStatus ' +
liquidStatus +
' requestedSpendLimit ' +
requestedSpendLimit +
' monthlyCardSpent ' +
monthlyCardSpent
);
this.validateLiquidStatus(liquidStatus);
this.validateRequestedSpendLimit(requestedSpendLimit);
this.validateMonthlyCardSpend(monthlyCardSpent);
}
static validateCompany() {
cy.task('getDataFromCache', 'companyName').then((companyName) => {
cy.allure().logStep(`Validate Company: ${companyName}`);
this.checkIfLocatorExist(
underWritingSubmittedApplicationsSelectors.company,
`${companyName}`
);
});
}
static checkIfLocatorExist(selectorText: string, expectedString: string) {
for (let i = 0; i < 5; i++) {
if (!cy.checkIfExist(selectorText)) {
cy.reload(true);
} else {
cy.get(selectorText).contains(`${expectedString}`);
break;
}
}
}
static validateLiquidStatus(LiquidStatus: string) {
cy.allure().logStep(`validate Liquid Status: ${LiquidStatus}`);
cy.get(underWritingSubmittedApplicationsSelectors.liquidApplicationStatus)
.should('be.visible')
.should('have.text', LiquidStatus);
}
static validateMonthlyCardSpend(MonthlyCardSpent: string) {
cy.allure().logStep(`Validate Monthyl Card Spend: ${MonthlyCardSpent}`);
cy.get(underWritingSubmittedApplicationsSelectors.monthlyCardSpent)
.should('be.visible')
.should('have.text', MonthlyCardSpent);
}
static validateRequestedSpendLimit(SpendLimit: string) {
cy.allure().logStep(`Validate Requested spend limit: ${SpendLimit}`);
cy.get(underWritingSubmittedApplicationsSelectors.requestedSpendLimit)
.should('be.visible')
.should('have.text', SpendLimit);
}
}