Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var selectors = {
- destinationFieldSelect: 'input.select2-input',
- destination: '#select2-drop ul li:nth-child(1) div.select2-result-label',
- property: '.select2-result-selectable:nth-child(3)',
- adultsField: '.book-adults-fld',
- childrenField: '.book-children-fld',
- roomsField: '.book-rooms-fld',
- promoField: '[id$=txtPromoCode]',
- checkAvailabilityButton: '.btn-submit',
- header: 'header',
- map: '.m-map__static',
- footer: '.m-footer',
- unavailableMessage: '.m--negative',
- noRoomsAvailableAlternate: '[id$=Unavailable]',
- compareSelected: '.compare',
- checkboxCompare: '[id$=chkCompare]',
- tripSummary: '.js-show-trip-summary',
- roomInfo: 'h4.m-header',
- packageCostDetails: '.m-package-list__cost-details',
- roomPrice: '[id$=RatePrice_0]',
- selectRoom: '[id$=SubmitButton_0]',
- costDetailsModal: '.t-costDetailsModal',
- printButton: '.x--print',
- closeButton: '#js-cost-details-0 .js-modal__close-button'
- };
- var availableRoomSelectors = {
- guestInfo: '#js-bellows__guest-information',
- nextSubmitButton: '[id$=SubmitButton]',
- firstName: '[id$=FirstName]',
- lastName: '[id$=LastName]',
- address: '[id$=GuestAddressControl_txtLine1]',
- city: '[id$=txtCity]',
- country: '[id$=ddlCountry]',
- state: '[id$=ddlState]',
- zip: '[id$=txtZip]',
- phone: '[id$=txtPhone]',
- email: '[id$=txtEmail]',
- confirmEmail: '[id$=txtConfirmEmail]',
- emailCheckbox: '[id$=EmailNotifications]',
- paymentInfo: '.x-payment-item',
- billingAddressCheckbox: '[id$=SameAddress]',
- creditCardType: '[id$=ddlCreditCardType]',
- creditCardNumber: '[id$=CreditCardNumber]',
- expiryMonth: '[id$=ddlExpirationMonth]',
- expiryYear: '[id$=ddlExpirationYear]',
- cardholderName: '[id$=CardholderName]',
- travelInfo: '.x-travel-item',
- checkIn: '[id$=CheckIn]',
- airport: '[id$=Airport]',
- airline: '[id$=Airline]',
- flightNumber: '[id$=FlightNumber]',
- arrivalTime: '[id$=ArrivalTime]',
- requestsInfo: '.x-request-item',
- oneBedCheckbox: '[id$=cbSpecialRequest_0]',
- twoBedsCheckbox: '[id$=cbSpecialRequest_1]',
- nonSmoking: '[id$=cbSpecialRequest_2]',
- hearingImpaired: '[id$=cbSpecialRequest_3]',
- visionImpaired: '[id$=cbSpecialRequest_4]',
- wheelchair: '[id$=cbSpecialRequest_5]',
- otherDisability: '[id$=cbSpecialRequest_6]',
- handicapRoom: '[id$=cbSpecialRequest_7]',
- needsAssistance: '[id$=cbSpecialRequest_8]',
- validation: '.glb-validation-summary',
- finishBooking: '.book-submit-btn',
- confirmation: '.con-confirmation'
- };
- var noRoomsAvailable;
- module.exports = {
- 'Check availability - Step 1 - Verify elements present': function(browser) {
- browser
- .preview()
- .verify.elementsPresent(
- selectors.destinationFieldSelect,
- selectors.adultsField,
- selectors.childrenField,
- selectors.roomsField,
- selectors.promoField,
- selectors.checkAvailabilityButton
- )
- },
- 'Check availability - Step 2 - Get list of rooms': function(browser) {
- //From the home page, select a property, number of adults, number of children
- //Leave check-in and check-out dates as default
- //Click 'Check Availibility'
- browser
- .click(selectors.destinationFieldSelect)
- .waitForAnimation()
- .click(selectors.destination)
- .waitForAnimation()
- .click(selectors.property)
- .waitForAnimation()
- .setValue(selectors.adultsField, '2')
- .setValue(selectors.childrenField, '2')
- .click(selectors.checkAvailabilityButton)
- .waitUntilMobified();
- },
- 'Check availablilty - Step 2b - Exception - No availability for given dates and rates': function(browser) {
- browser.waitForElementVisible('.m-main');
- browser.element('css selector', selectors.unavailableMessage, function(result){
- if (result.value && result.value.ELEMENT) {
- noRoomsAvailable = true;
- browser.end();
- } else {
- noRoomsAvailable = false;
- }
- });
- },
- 'Check availablilty - Step 3 - Elements present': function(browser) {
- if (noRoomsAvailable === false) {
- browser
- .waitForElementPresent(selectors.map)
- .verify.elementsPresent(
- selectors.header,
- selectors.map,
- selectors.footer
- );
- }
- },
- 'Check availablilty - Step 3b - Exception - Compare other properties': function(browser) {
- browser.element('css selector', selectors.noRoomsAvailableAlternate, function(result){
- if (result.value && result.value.ELEMENT) {
- browser.verify.templateName('selectProperty');
- noRoomsAvailable = true;
- browser.end();
- }
- });
- },
- 'Check availability - Step 4 - Verify select room template': function(browser) {
- if (noRoomsAvailable === false) {
- browser
- .verify.templateName('selectRoom');
- }
- },
- 'Check availability - Step 5 - Verify Select a room elements': function(browser) {
- if (noRoomsAvailable === false) {
- browser
- .verify.elementsPresent(
- selectors.tripSummary,
- selectors.selectRoom,
- selectors.packageCostDetails,
- selectors.roomPrice
- );
- }
- },
- 'Check availability - Step 6 - Verify Cost details elements': function(browser) {
- if (noRoomsAvailable === false) {
- browser
- .click(selectors.roomInfo)
- .waitForAnimation()
- .click(selectors.packageCostDetails)
- .verify.elementsPresent(
- selectors.costDetailsModal,
- selectors.printButton,
- selectors.closeButton
- )
- .click(selectors.closeButton);
- }
- },
- 'Check availability - Step 7 - Verify guest info template': function(browser) {
- if (noRoomsAvailable === false) {
- browser
- .click(selectors.selectRoom)
- .waitUntilMobified()
- .verify.templateName('guestInformation');
- }
- },
- 'Check availability - Step 8 - Verify guest info elements present - Contact': function(browser) {
- if (noRoomsAvailable === false) {
- browser
- .verify.elementsPresent(
- availableRoomSelectors.guestInfo,
- availableRoomSelectors.firstName,
- availableRoomSelectors.lastName,
- availableRoomSelectors.address,
- availableRoomSelectors.city,
- availableRoomSelectors.state,
- availableRoomSelectors.country,
- availableRoomSelectors.zip,
- availableRoomSelectors.phone,
- availableRoomSelectors.email,
- availableRoomSelectors.confirmEmail,
- availableRoomSelectors.emailCheckbox
- );
- }
- },
- 'Check availability - Step 9 - Verify guest info elements present - Payment': function(browser) {
- if (noRoomsAvailable === false) {
- browser
- .click(availableRoomSelectors.paymentInfo)
- .waitForAnimation()
- .verify.elementsPresent(
- availableRoomSelectors.billingAddressCheckbox,
- availableRoomSelectors.creditCardType,
- availableRoomSelectors.creditCardNumber,
- availableRoomSelectors.expiryMonth,
- availableRoomSelectors.expiryYear,
- availableRoomSelectors.cardholderName
- );
- }
- },
- 'Check availability - Step 10 - Verify guest info elements present - Travel': function(browser) {
- if (noRoomsAvailable === false) {
- browser
- .click(availableRoomSelectors.travelInfo)
- .waitForAnimation()
- .verify.elementsPresent(
- availableRoomSelectors.checkIn,
- availableRoomSelectors.airport,
- availableRoomSelectors.airline,
- availableRoomSelectors.flightNumber,
- availableRoomSelectors.arrivalTime
- );
- }
- },
- 'Check availability - Step 11 - Verify guest info elements present - Requests': function(browser) {
- if (noRoomsAvailable === false) {
- browser
- .click(availableRoomSelectors.requestsInfo)
- .waitForAnimation()
- .verify.elementsPresent(
- availableRoomSelectors.oneBedCheckbox,
- availableRoomSelectors.twoBedsCheckbox,
- availableRoomSelectors.nonSmoking,
- availableRoomSelectors.hearingImpaired,
- availableRoomSelectors.visionImpaired,
- availableRoomSelectors.wheelchair,
- availableRoomSelectors.otherDisability,
- availableRoomSelectors.handicapRoom,
- availableRoomSelectors.needsAssistance,
- availableRoomSelectors.nextSubmitButton
- );
- }
- },
- 'Check availability - Step 12 - Validation': function(browser) {
- if (noRoomsAvailable === false) {
- //Ensure that validation messages are displayed as appropriate.
- browser
- .click(availableRoomSelectors.nextSubmitButton)
- .waitUntilMobified()
- .verify.cssProperty(availableRoomSelectors.validation, 'display', 'block');
- }
- },
- 'Check availability - Step 13 - Fill in fields': function(browser) {
- if (noRoomsAvailable === false) {
- browser
- .setValue(availableRoomSelectors.firstName, 'Mo')
- .setValue(availableRoomSelectors.lastName, 'Morris')
- .setValue(availableRoomSelectors.address, '3700 Cover St')
- .setValue(availableRoomSelectors.city, 'Long Beach')
- .setValue(availableRoomSelectors.country, 'United States')
- .setValue(availableRoomSelectors.state, 'California')
- .setValue(availableRoomSelectors.zip, '90808')
- .setValue(availableRoomSelectors.phone, '1231231234')
- .setValue(availableRoomSelectors.email, 'mobifyqa@gmail.com')
- .setValue(availableRoomSelectors.confirmEmail, 'mobifyqa@gmail.com')
- .click(availableRoomSelectors.paymentInfo)
- .setValue(availableRoomSelectors.creditCardType, 'VISA')
- .setValue(availableRoomSelectors.creditCardNumber, '4111111111111111')
- .setValue(availableRoomSelectors.expiryMonth, 'Jan')
- .setValue(availableRoomSelectors.expiryYear, '2017')
- .setValue(availableRoomSelectors.cardholderName, 'Mo Morris')
- .click(availableRoomSelectors.nextSubmitButton)
- .end();
- }
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement