qe-fe-automation
Version:
FE test automation framework using cypress
89 lines (74 loc) • 2.74 kB
text/typescript
import { LoginPage } from '@admin-lib/index';
import { bookingData } from '@fixtures/travelxen/booking_data';
import { TravelXenInterceptApis } from '@travelxen-lib/api-intercept';
import { stagingUsers } from '@fixtures/staging-users';
import { User_Type } from '@support-onboard/index';
import { AdminInterceptsApis } from '@admin-lib/api-intercept';
import { TravelXenHomePage } from '@travelxen-lib/pages';
const { agentChat } = stagingUsers;
const agentCreds = Cypress.env('agent').AGENT_PASSWORD;
const selectors = {
oktaLogin: 'input[type="text"]',
oktaSubmit: 'input[data-type="save"]',
oktaPassword: 'input[type="password"]',
oktaSubmitPassword: 'input[data-type="save"]'
};
export const createBookingForTheCompany = () => {
LoginPage.createHotelBookingForOnBoardingCompany(bookingData);
};
export const prepareTravelXenEnv = () => {
LoginPage.createNewCompanyAndLoginWithUserByType({
companySuffix: '-travelxen',
users: [User_Type.ADMIN]
});
LoginPage.clearExistingLoginSession();
AdminInterceptsApis.interceptAdminsApis();
TravelXenInterceptApis.interceptTravelxenApis();
TravelXenInterceptApis.interceptPaymentMethodsApis();
};
export const prepareTravelXenVIPEnv = () => {
LoginPage.createNewCompanyAndLoginWithUserByType({
companySuffix: '-travelxen',
users: [User_Type.ADMIN],
vip: true
});
createBookingForTheCompany();
LoginPage.clearExistingLoginSession();
AdminInterceptsApis.interceptAdminsApis();
TravelXenInterceptApis.interceptTravelxenApis();
TravelXenInterceptApis.interceptPaymentMethodsApis();
};
export const visitTravelxen = () => {
cy.visit('/app/travelxen2');
};
export const visitAgentDesktop = () => {
cy.visit(agentChat.oktaUrl);
cy.get(selectors.oktaLogin).type(agentChat.email);
cy.get(selectors.oktaSubmit).click();
cy.get(selectors.oktaPassword).type(agentCreds, { log: false });
cy.get(selectors.oktaSubmitPassword).click();
cy.intercept('GET', /api\/chat\/v1\/agent\/workers/).as('agentLogin');
loginToTwilio();
cy.wait('@agentLogin');
cy.wait(['@getSplits', '@getAgencies', '@getDropdownOptions']);
};
export const getLastMessageInView = () => {
return cy.get('[data-testid="chat-message"]').last();
};
const loginToTwilio = () => {
cy.window().then((win) => {
cy.stub(win, 'open')
.as('popup')
.callsFake((url) => {
win.location.href = url;
});
});
};
export const openCreatedUserDetails = () => {
TravelXenHomePage.retrieveCreatedUserAndSearchByEmail();
TravelXenHomePage.selectUserFromSearchResult();
};
export const openCreatedBookingDetails = () => {
TravelXenHomePage.retrieveCreatedBookingAndSearchById();
TravelXenHomePage.selectBookingFromSearchResult();
};