qe-fe-automation
Version:
FE test automation framework using cypress
123 lines (112 loc) • 5.12 kB
text/typescript
import { Timeouts, Utility, utilitySelector, Logs } from '@utility-lib/index';
export const createTripProposal = {
setTripProposal: '.ta-co-side-navigation [href*="trip-proposal"]',
setTripProposalNav: (getTripType: string) => `.ta-co-side-navigation [href*="${getTripType}"]`,
enableTripProposal: '[columnid="combinedTargetAttr"]',
triggerEnableButton: '[formcontrolname="combinedTargetAttr"] .mat-slide-toggle-thumb',
tripName: 'input[formcontrolname="tripName"]',
tripPurpose: 'input[formcontrolname="tripPurpose"]',
hotelLocationInput: '[qaid="locationTypeaheadInput"] input',
submit: 'button[type="submit"]',
sendRequestToManager: '.cost-modal__footer .ta-button__content',
saveChanges: 'button .ta-button__content',
tripProposal: '[class^="trip-proposal__actions__submit"]',
groupTravelTab: '[data-testid="groupTravelSubtab"]',
bookingTypeVerticalDropdown: '.trip-proposal-form__actions button',
bookingTypeVerticalOption: (verticalType: string) => `button[icon="booking-type-${verticalType}"]`,
locationFieldSubtitle: (location: string) => `[aria-label="${location}"] [data-testid="locationFieldSubtitle"]`,
disabledSubmitButton: '[class^="trip-proposal__actions__submit ta-button ta-button--disabled"]',
removeLOB: '[class^="trip-proposal-form__top__remove"]',
startBooking: '[class="upcoming-trip-card__actions"] button'
};
const newUserCredentials = Cypress.env('newUser').NEW_USER_PASSWORD;
type PolicyType = 'flights' | 'train' | 'hotel' | 'car' | 'black-car' | 'trip-proposal';
export class CreateProposal {
static visitAdminPage() {
cy.allure().logStep('visit admin page');
cy.visit('app/admin2/en/dashboard');
cy.wait(Timeouts.MEDIUM_TIMEOUT_10_SEC.timeout);
}
static selectPolicy() {
cy.allure().logStep('select travel policy');
Utility.selectAdminNav('POLICY', 'TRAVEL_POLICY');
cy.wait('@waitForTravelPolicy');
}
static selTripProposalEnabled() {
cy.allure().logStep('enable trip proposal');
cy.get(createTripProposal.setTripProposal).click({ force: true });
this.selectPolicyType('trip-proposal');
cy.get(createTripProposal.enableTripProposal).first().click({ force: true });
cy.get(createTripProposal.triggerEnableButton).click({ force: true });
cy.get(createTripProposal.saveChanges).contains('Save changes').click({ force: true });
cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout);
cy.wait('@waitForSaveTripProposalEnable').then((xhr) => {
Logs.cypressResponseLog('TRIP PROPOSAL ENABLE PATCH RESPONSE', xhr);
});
}
static selectPolicyType(getTripType: PolicyType) {
cy.allure().logStep(`select policy type ${getTripType}`);
cy.get(createTripProposal.setTripProposalNav(getTripType)).click({
force: true
});
}
static visitNewTripProposalPage() {
cy.allure().logStep('visit new trip proposal page');
Utility.visitSearchPage();
cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout);
cy.get(utilitySelector.searchLocationInput).click({ force: true });
}
static setBookingType(verticalType: string) {
cy.allure().logStep(`selectVertical ${verticalType}`);
cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout);
cy.get(createTripProposal.bookingTypeVerticalDropdown).click();
cy.get(createTripProposal.bookingTypeVerticalOption(verticalType)).click();
}
static setTripName() {
cy.allure().logStep('set trip name');
cy.get(createTripProposal.groupTravelTab).should('not.be.hidden').should('be.visible');
cy.get(createTripProposal.tripName).type('Berlin Trip');
}
static setTripReason() {
cy.allure().logStep('set trip reason');
cy.get(createTripProposal.tripPurpose).type('Team Meeting');
}
static setHotelLocation(location: string) {
cy.allure().logStep(`set hotel location ${location}`);
cy.get(createTripProposal.hotelLocationInput).type(`${location}`, { force: true });
cy.get(createTripProposal.locationFieldSubtitle(location)).click({
force: true
});
}
static sendProposal() {
cy.allure().logStep(' send proposal');
cy.get(createTripProposal.tripProposal).click();
cy.wait('@waitForSubmitProposal').then((xhr) => {
Logs.cypressResponseLog('SEND PROPOSAL RESPONSE', xhr);
});
cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout);
}
static sendRequestToManager() {
cy.allure().logStep('send request to manager');
cy.get(createTripProposal.sendRequestToManager).click({ force: true });
cy.wait('@waitForRequestSend').then((xhr) => {
Logs.cypressResponseLog('Send REQUEST TO MANAGER RESPONSE', xhr);
});
}
static loginAsAdmin(password: any) {
cy.clearLocalStorage();
cy.clearCookies();
cy.clearLocalStorage();
cy.task('getDataFromCache', 'companyCreationEmail').then((email: any) => {
cy.loginWithAuthToken({ email, password });
});
}
static loginAsTraveler() {
cy.clearLocalStorage();
cy.clearCookies();
cy.clearLocalStorage();
cy.task('getDataFromCache', 'travelerEmail').then((email: any) => {
cy.loginWithAuthToken({ email, password: newUserCredentials });
});
}
}