Advertisement
Guest User

Untitled

a guest
Aug 1st, 2015
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.16 KB | None | 0 0
  1. var selectors = {
  2. destinationFieldSelect: 'input.select2-input',
  3. destination: '#select2-drop ul li:nth-child(1) div.select2-result-label',
  4. property: '.select2-result-selectable:nth-child(3)',
  5. adultsField: '.book-adults-fld',
  6. childrenField: '.book-children-fld',
  7. roomsField: '.book-rooms-fld',
  8. promoField: '[id$=txtPromoCode]',
  9. checkAvailabilityButton: '.btn-submit',
  10. header: 'header',
  11. map: '.m-map__static',
  12. footer: '.m-footer',
  13. unavailableMessage: '.m--negative',
  14. noRoomsAvailableAlternate: '[id$=Unavailable]',
  15. compareSelected: '.compare',
  16. checkboxCompare: '[id$=chkCompare]',
  17. tripSummary: '.js-show-trip-summary',
  18. roomInfo: 'h4.m-header',
  19. packageCostDetails: '.m-package-list__cost-details',
  20. roomPrice: '[id$=RatePrice_0]',
  21. selectRoom: '[id$=SubmitButton_0]',
  22. costDetailsModal: '.t-costDetailsModal',
  23. printButton: '.x--print',
  24. closeButton: '#js-cost-details-0 .js-modal__close-button'
  25. };
  26. var availableRoomSelectors = {
  27. guestInfo: '#js-bellows__guest-information',
  28. nextSubmitButton: '[id$=SubmitButton]',
  29. firstName: '[id$=FirstName]',
  30. lastName: '[id$=LastName]',
  31. address: '[id$=GuestAddressControl_txtLine1]',
  32. city: '[id$=txtCity]',
  33. country: '[id$=ddlCountry]',
  34. state: '[id$=ddlState]',
  35. zip: '[id$=txtZip]',
  36. phone: '[id$=txtPhone]',
  37. email: '[id$=txtEmail]',
  38. confirmEmail: '[id$=txtConfirmEmail]',
  39. emailCheckbox: '[id$=EmailNotifications]',
  40. paymentInfo: '.x-payment-item',
  41. billingAddressCheckbox: '[id$=SameAddress]',
  42. creditCardType: '[id$=ddlCreditCardType]',
  43. creditCardNumber: '[id$=CreditCardNumber]',
  44. expiryMonth: '[id$=ddlExpirationMonth]',
  45. expiryYear: '[id$=ddlExpirationYear]',
  46. cardholderName: '[id$=CardholderName]',
  47. travelInfo: '.x-travel-item',
  48. checkIn: '[id$=CheckIn]',
  49. airport: '[id$=Airport]',
  50. airline: '[id$=Airline]',
  51. flightNumber: '[id$=FlightNumber]',
  52. arrivalTime: '[id$=ArrivalTime]',
  53. requestsInfo: '.x-request-item',
  54. oneBedCheckbox: '[id$=cbSpecialRequest_0]',
  55. twoBedsCheckbox: '[id$=cbSpecialRequest_1]',
  56. nonSmoking: '[id$=cbSpecialRequest_2]',
  57. hearingImpaired: '[id$=cbSpecialRequest_3]',
  58. visionImpaired: '[id$=cbSpecialRequest_4]',
  59. wheelchair: '[id$=cbSpecialRequest_5]',
  60. otherDisability: '[id$=cbSpecialRequest_6]',
  61. handicapRoom: '[id$=cbSpecialRequest_7]',
  62. needsAssistance: '[id$=cbSpecialRequest_8]',
  63. validation: '.glb-validation-summary',
  64.  
  65. finishBooking: '.book-submit-btn',
  66.  
  67. confirmation: '.con-confirmation'
  68. };
  69. var noRoomsAvailable;
  70.  
  71. module.exports = {
  72.  
  73. 'Check availability - Step 1 - Verify elements present': function(browser) {
  74. browser
  75. .preview()
  76. .verify.elementsPresent(
  77. selectors.destinationFieldSelect,
  78. selectors.adultsField,
  79. selectors.childrenField,
  80. selectors.roomsField,
  81. selectors.promoField,
  82. selectors.checkAvailabilityButton
  83. )
  84. },
  85.  
  86. 'Check availability - Step 2 - Get list of rooms': function(browser) {
  87. //From the home page, select a property, number of adults, number of children
  88. //Leave check-in and check-out dates as default
  89. //Click 'Check Availibility'
  90. browser
  91. .click(selectors.destinationFieldSelect)
  92. .waitForAnimation()
  93. .click(selectors.destination)
  94. .waitForAnimation()
  95. .click(selectors.property)
  96. .waitForAnimation()
  97. .setValue(selectors.adultsField, '2')
  98. .setValue(selectors.childrenField, '2')
  99. .click(selectors.checkAvailabilityButton)
  100. .waitUntilMobified();
  101. },
  102.  
  103. 'Check availablilty - Step 2b - Exception - No availability for given dates and rates': function(browser) {
  104. browser.waitForElementVisible('.m-main');
  105. browser.element('css selector', selectors.unavailableMessage, function(result){
  106. if (result.value && result.value.ELEMENT) {
  107. noRoomsAvailable = true;
  108. browser.end();
  109. } else {
  110. noRoomsAvailable = false;
  111. }
  112. });
  113. },
  114.  
  115. 'Check availablilty - Step 3 - Elements present': function(browser) {
  116.  
  117. if (noRoomsAvailable === false) {
  118. browser
  119. .waitForElementPresent(selectors.map)
  120. .verify.elementsPresent(
  121. selectors.header,
  122. selectors.map,
  123. selectors.footer
  124. );
  125. }
  126. },
  127.  
  128. 'Check availablilty - Step 3b - Exception - Compare other properties': function(browser) {
  129. browser.element('css selector', selectors.noRoomsAvailableAlternate, function(result){
  130. if (result.value && result.value.ELEMENT) {
  131. browser.verify.templateName('selectProperty');
  132. noRoomsAvailable = true;
  133. browser.end();
  134. }
  135. });
  136. },
  137.  
  138. 'Check availability - Step 4 - Verify select room template': function(browser) {
  139. if (noRoomsAvailable === false) {
  140. browser
  141. .verify.templateName('selectRoom');
  142. }
  143. },
  144.  
  145. 'Check availability - Step 5 - Verify Select a room elements': function(browser) {
  146. if (noRoomsAvailable === false) {
  147. browser
  148. .verify.elementsPresent(
  149. selectors.tripSummary,
  150. selectors.selectRoom,
  151. selectors.packageCostDetails,
  152. selectors.roomPrice
  153. );
  154. }
  155. },
  156.  
  157. 'Check availability - Step 6 - Verify Cost details elements': function(browser) {
  158. if (noRoomsAvailable === false) {
  159. browser
  160. .click(selectors.roomInfo)
  161. .waitForAnimation()
  162. .click(selectors.packageCostDetails)
  163. .verify.elementsPresent(
  164. selectors.costDetailsModal,
  165. selectors.printButton,
  166. selectors.closeButton
  167. )
  168. .click(selectors.closeButton);
  169. }
  170. },
  171.  
  172. 'Check availability - Step 7 - Verify guest info template': function(browser) {
  173. if (noRoomsAvailable === false) {
  174. browser
  175. .click(selectors.selectRoom)
  176. .waitUntilMobified()
  177. .verify.templateName('guestInformation');
  178. }
  179. },
  180.  
  181. 'Check availability - Step 8 - Verify guest info elements present - Contact': function(browser) {
  182. if (noRoomsAvailable === false) {
  183. browser
  184. .verify.elementsPresent(
  185. availableRoomSelectors.guestInfo,
  186. availableRoomSelectors.firstName,
  187. availableRoomSelectors.lastName,
  188. availableRoomSelectors.address,
  189. availableRoomSelectors.city,
  190. availableRoomSelectors.state,
  191. availableRoomSelectors.country,
  192. availableRoomSelectors.zip,
  193. availableRoomSelectors.phone,
  194. availableRoomSelectors.email,
  195. availableRoomSelectors.confirmEmail,
  196. availableRoomSelectors.emailCheckbox
  197. );
  198. }
  199. },
  200.  
  201. 'Check availability - Step 9 - Verify guest info elements present - Payment': function(browser) {
  202. if (noRoomsAvailable === false) {
  203. browser
  204. .click(availableRoomSelectors.paymentInfo)
  205. .waitForAnimation()
  206. .verify.elementsPresent(
  207. availableRoomSelectors.billingAddressCheckbox,
  208. availableRoomSelectors.creditCardType,
  209. availableRoomSelectors.creditCardNumber,
  210. availableRoomSelectors.expiryMonth,
  211. availableRoomSelectors.expiryYear,
  212. availableRoomSelectors.cardholderName
  213. );
  214. }
  215. },
  216.  
  217. 'Check availability - Step 10 - Verify guest info elements present - Travel': function(browser) {
  218. if (noRoomsAvailable === false) {
  219. browser
  220. .click(availableRoomSelectors.travelInfo)
  221. .waitForAnimation()
  222. .verify.elementsPresent(
  223. availableRoomSelectors.checkIn,
  224. availableRoomSelectors.airport,
  225. availableRoomSelectors.airline,
  226. availableRoomSelectors.flightNumber,
  227. availableRoomSelectors.arrivalTime
  228. );
  229. }
  230. },
  231.  
  232. 'Check availability - Step 11 - Verify guest info elements present - Requests': function(browser) {
  233. if (noRoomsAvailable === false) {
  234. browser
  235. .click(availableRoomSelectors.requestsInfo)
  236. .waitForAnimation()
  237. .verify.elementsPresent(
  238. availableRoomSelectors.oneBedCheckbox,
  239. availableRoomSelectors.twoBedsCheckbox,
  240. availableRoomSelectors.nonSmoking,
  241. availableRoomSelectors.hearingImpaired,
  242. availableRoomSelectors.visionImpaired,
  243. availableRoomSelectors.wheelchair,
  244. availableRoomSelectors.otherDisability,
  245. availableRoomSelectors.handicapRoom,
  246. availableRoomSelectors.needsAssistance,
  247. availableRoomSelectors.nextSubmitButton
  248. );
  249. }
  250. },
  251.  
  252. 'Check availability - Step 12 - Validation': function(browser) {
  253. if (noRoomsAvailable === false) {
  254. //Ensure that validation messages are displayed as appropriate.
  255. browser
  256. .click(availableRoomSelectors.nextSubmitButton)
  257. .waitUntilMobified()
  258. .verify.cssProperty(availableRoomSelectors.validation, 'display', 'block');
  259. }
  260. },
  261.  
  262. 'Check availability - Step 13 - Fill in fields': function(browser) {
  263. if (noRoomsAvailable === false) {
  264. browser
  265. .setValue(availableRoomSelectors.firstName, 'Mo')
  266. .setValue(availableRoomSelectors.lastName, 'Morris')
  267. .setValue(availableRoomSelectors.address, '3700 Cover St')
  268. .setValue(availableRoomSelectors.city, 'Long Beach')
  269. .setValue(availableRoomSelectors.country, 'United States')
  270. .setValue(availableRoomSelectors.state, 'California')
  271. .setValue(availableRoomSelectors.zip, '90808')
  272. .setValue(availableRoomSelectors.phone, '1231231234')
  273. .setValue(availableRoomSelectors.email, 'mobifyqa@gmail.com')
  274. .setValue(availableRoomSelectors.confirmEmail, 'mobifyqa@gmail.com')
  275.  
  276. .click(availableRoomSelectors.paymentInfo)
  277. .setValue(availableRoomSelectors.creditCardType, 'VISA')
  278. .setValue(availableRoomSelectors.creditCardNumber, '4111111111111111')
  279. .setValue(availableRoomSelectors.expiryMonth, 'Jan')
  280. .setValue(availableRoomSelectors.expiryYear, '2017')
  281. .setValue(availableRoomSelectors.cardholderName, 'Mo Morris')
  282.  
  283. .click(availableRoomSelectors.nextSubmitButton)
  284. .end();
  285. }
  286. }
  287. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement