UNPKG

qe-fe-automation

Version:
162 lines (143 loc) 6.87 kB
import { UserModal } from 'cypress/e2e/profile/lib/user-modal'; import { Random, Logs, utilitySelector, Utility } from '@utility-lib/index'; const invitationSelector = { invitationsMenu: '[data-qaid="INVITATIONS-button"]', invitationsMenuElement: (elName: string) => `.ta-menu-item--text[title="${elName}"]`, createNewTraveler: '[data-testid="newGuestTravelerProfile"]', addTravelerButton: '[data-testid="saveGuestTraveler"]', invitationTitle: '[data-testid="tripInvitationTitle"]', invitationLocation: '[data-testid="tripInvitationLocation"]', invitationEventStartDate: '[data-testid="tripInvitationStartDate"]', invitationEventEndDate: '[data-testid="tripInvitationEndDate"]', suggestedArrivalTime: '[data-testid="latestArrivalTime"]', suggestedDepartureTime: '[data-testid="earliestReturningTime"]', flightDatePicker: '[qaid="flightRoundDepartureDateTrigger"]', calendarDay: '[data-testid="calendarDay"]', calendarMonth: '.ta-calendar-month', calendarDoneBtn: '[data-testid="datePickerDoneButton"]', teamEventUserGroup: '[qaid="teamEventUserGroup"]', teamEventUserGroupInput: () => `${invitationSelector.teamEventUserGroup} > input`, travellerDropDown: '[data-testid="travelerDropdown"]', travellersGroup: '[data-testid="travelersGroup"]', travelerTag: 'ta-user-tag', verticalsTabGroup: '.ta-tabs__wrapper', calendarDaySpan: '[data-testid="calendarDay"] span', flightArrivalAirport: '[qaid="searchFormRoundArrivalAirport"] ta-typeahead input', flightDepartureAirport: '[qaid="searchFormRoundDepartureAirport"] ta-typeahead input', flightDepartureDate: '[qaid="flightRoundDepartureDateTrigger"]', flightReturnDate: '[qaid="flightRoundReturnDateTrigger"]' }; const email: string = 'user' + '_' + Random.randomString() + '@staging.tripactions.xyz'; export class Invitations { static expandInvitationsMenu() { cy.allure().logStep('expand invitations menu'); cy.get(invitationSelector.invitationsMenu).click(); } static selectInvitationsMenuElement(elementName: string) { cy.allure().logStep(`select invitations menu element: ${elementName}`); cy.get(invitationSelector.invitationsMenuElement(elementName)).click(); } static createGuestTraveller() { cy.get(invitationSelector.createNewTraveler).click(); UserModal.fillTravelerName('John', 'Doe'); UserModal.fillBirthday(18); UserModal.fillEmail(email); UserModal.fillPhoneNumber('+1 123 453 45345'); UserModal.fillGender('MALE'); cy.get(invitationSelector.addTravelerButton).click(); cy.wait('@waitForSaveGuest').then((xhr) => { Logs.cypressResponseLog('SAVED GUEST RESPONSE', xhr); }); } static selectTravelWindowsDates(tripStartDate: string, tripEndDate: string) { cy.allure().logStep('select travel window dates'); cy.get(invitationSelector.flightDatePicker).click(); cy.get(invitationSelector.calendarDay).contains(tripStartDate).click(); cy.get(invitationSelector.calendarDay).contains(tripEndDate).click(); cy.get(invitationSelector.calendarDoneBtn).click(); } static verifyInvitationName(invitationName: string) { cy.allure().logStep(`verify invitation name is ${invitationName}`); cy.get(invitationSelector.invitationTitle).contains(invitationName); } static verifyInvitationLocation(invitationLocation: string) { cy.allure().logStep(`verify invitation location is ${invitationLocation}`); cy.get(invitationSelector.invitationLocation) .invoke('text') .then((text) => { const normalizedText = Utility.normalizeText(text); const normalizedInvitationLocation = Utility.normalizeText(invitationLocation); expect(normalizedText).to.contains(normalizedInvitationLocation); }); } static verifyInvitationEventStartDate(startDay: string) { cy.allure().logStep('verify invitation event start date'); cy.get(invitationSelector.invitationEventStartDate).contains(startDay); } static verifyInvitationEventEndDate(endDay: string) { cy.allure().logStep('verify invitation event end date'); cy.get(invitationSelector.invitationEventEndDate).contains(endDay); } static verifyLatestArrivalTime(latestArrivalTime: string) { cy.allure().logStep('verify latest arrival time'); cy.get(invitationSelector.suggestedArrivalTime).contains(latestArrivalTime, { matchCase: false }); } static verifyEarliestReturningTime(earliestReturningTime: string) { cy.allure().logStep('verify earliest returning time'); cy.get(invitationSelector.suggestedDepartureTime).contains(earliestReturningTime, { matchCase: false }); } static verifyFlightReturnDate(returnDate: string) { cy.allure().logStep('verify flight return date'); cy.get(invitationSelector.flightReturnDate).contains(returnDate); } static verifyFlightDepartureDate(departureDate: string) { cy.allure().logStep('verify flight departure date'); cy.get(invitationSelector.flightDepartureDate).contains(departureDate); } static verifyOnlyTravelDatesAreEnabled(dayBefore: string, dayAfter: string) { cy.allure().logStep('verify only travel window dates are enabled'); cy.get(invitationSelector.flightDatePicker).click(); cy.get(invitationSelector.calendarMonth) .eq(0) .contains(invitationSelector.calendarDaySpan, `${dayBefore}`) .parent() .should('have.class', 'ta-calendar-day--disabled'); cy.get(invitationSelector.calendarMonth) .eq(0) .contains(invitationSelector.calendarDaySpan, `${dayAfter}`) .parent() .should('have.class', 'ta-calendar-day--disabled'); } static selectExtraGuestByInput(extraGuestInput: string) { cy.allure().logStep('set extra guest'); cy.get(invitationSelector.teamEventUserGroupInput()) .should('have.attr', 'placeholder', 'Add one extra guest') .type(extraGuestInput); cy.wait('@waitForTravellers'); cy.get(invitationSelector.travellerDropDown).contains('Guests').next().click(); } static verifyNumberOfTravelers(numberOfTravelers: number) { cy.allure().logStep(`verify number of travelers is ${numberOfTravelers}`); cy.get(invitationSelector.travellersGroup) .find(invitationSelector.travelerTag) .should('have.length', numberOfTravelers); } static verifyOnlyAllowedVerticalsTabsAreVisible(tabs: string[], length: number) { cy.allure().logStep( 'verify only tabs for allowed verticals are visible in invitation' ); cy.get(invitationSelector.verticalsTabGroup).within(() => { cy.get(utilitySelector.buttonSelector).each((item, index) => { expect(item).to.be.visible; expect(item.text().trim()).contains(tabs[index]); }); }); cy.get(invitationSelector.verticalsTabGroup) .find(utilitySelector.buttonSelector) .should('have.length', length); } }