@roomstay/frontend 2.6.89-2 → 2.6.90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1088) hide show
  1. package/dist/177.bundle.js +1 -1
  2. package/dist/279.bundle.js +1 -1
  3. package/dist/288.bundle.js +1 -1
  4. package/dist/370.bundle.js +1 -1
  5. package/dist/4.bundle.js +1 -0
  6. package/dist/430.bundle.js +1 -1
  7. package/dist/449.bundle.js +1 -1
  8. package/dist/537.bundle.js +1 -1
  9. package/dist/686.bundle.js +1 -1
  10. package/dist/873.bundle.js +1 -1
  11. package/dist/972.bundle.js +1 -1
  12. package/dist/978.bundle.js +1 -1
  13. package/dist/984.bundle.js +1 -0
  14. package/dist/e2e/canChangeCurrency.spec.js +1 -1
  15. package/dist/e2e/canChangeCurrency.spec.js.map +1 -1
  16. package/dist/e2e/canCheckout.spec.js +3 -3
  17. package/dist/e2e/canCheckout.spec.js.map +1 -1
  18. package/dist/e2e/canViewFindReservationsPage.spec.js +1 -1
  19. package/dist/e2e/canViewFindReservationsPage.spec.js.map +1 -1
  20. package/dist/e2e/canViewHotelnfoPage.spec.js +1 -1
  21. package/dist/e2e/canViewHotelnfoPage.spec.js.map +1 -1
  22. package/dist/e2e/goBackAndCheckoutAgain.spec.js +1 -1
  23. package/dist/e2e/goBackAndCheckoutAgain.spec.js.map +1 -1
  24. package/dist/e2e/helpers/checkoutHelpers.js +8 -9
  25. package/dist/e2e/helpers/checkoutHelpers.js.map +1 -1
  26. package/dist/e2e/helpers/playwrightHelpers.js +1 -2
  27. package/dist/e2e/helpers/playwrightHelpers.js.map +1 -1
  28. package/dist/e2e/price.spec.js +3 -3
  29. package/dist/e2e/price.spec.js.map +1 -1
  30. package/dist/main.bundle.js +1 -1
  31. package/dist/src/animations/AutoAutoHeight.d.ts +1 -1
  32. package/dist/src/animations/AutoAutoHeight.js +18 -8
  33. package/dist/src/animations/AutoAutoHeight.js.map +1 -1
  34. package/dist/src/animations/Fade.js +17 -7
  35. package/dist/src/animations/Fade.js.map +1 -1
  36. package/dist/src/api/AddonAPI.js +17 -7
  37. package/dist/src/api/AddonAPI.js.map +1 -1
  38. package/dist/src/api/AvailabilityAPI.d.ts +28 -6
  39. package/dist/src/api/AvailabilityAPI.js +214 -106
  40. package/dist/src/api/AvailabilityAPI.js.map +1 -1
  41. package/dist/src/api/BaseAPI.js +6 -6
  42. package/dist/src/api/BaseAPI.js.map +1 -1
  43. package/dist/src/api/ErrorAPI.js.map +1 -1
  44. package/dist/src/api/ExchangeRateAPI.js.map +1 -1
  45. package/dist/src/api/HotelAPI.d.ts +1 -1
  46. package/dist/src/api/HotelAPI.js.map +1 -1
  47. package/dist/src/api/MemberAPI.js +17 -7
  48. package/dist/src/api/MemberAPI.js.map +1 -1
  49. package/dist/src/api/ReservationAPI.d.ts +2 -3
  50. package/dist/src/api/ReservationAPI.js +21 -10
  51. package/dist/src/api/ReservationAPI.js.map +1 -1
  52. package/dist/src/api/SessionAPI.js +17 -7
  53. package/dist/src/api/SessionAPI.js.map +1 -1
  54. package/dist/src/api/TrueRewardsAPI.js.map +1 -1
  55. package/dist/src/api/events-service/EventsServiceAPI.js.map +1 -1
  56. package/dist/src/api/members-service/MembersServiceAPI.d.ts +1 -1
  57. package/dist/src/components/Event/EventCarouselContainer.js +17 -7
  58. package/dist/src/components/Event/EventCarouselContainer.js.map +1 -1
  59. package/dist/src/components/User/Forms/ForgotPasswordForm.d.ts +2 -1
  60. package/dist/src/components/User/Forms/ForgotPasswordForm.js +17 -7
  61. package/dist/src/components/User/Forms/ForgotPasswordForm.js.map +1 -1
  62. package/dist/src/components/User/Forms/SignInForm.js +17 -7
  63. package/dist/src/components/User/Forms/SignInForm.js.map +1 -1
  64. package/dist/src/components/User/Forms/SignUpForm.d.ts +2 -1
  65. package/dist/src/components/User/Forms/SignUpForm.js +17 -7
  66. package/dist/src/components/User/Forms/SignUpForm.js.map +1 -1
  67. package/dist/src/components/User/Forms/VerifyEmailForm.d.ts +2 -1
  68. package/dist/src/components/User/Forms/VerifyEmailForm.js +17 -7
  69. package/dist/src/components/User/Forms/VerifyEmailForm.js.map +1 -1
  70. package/dist/src/components/generic/AfterpayButton/AfterpayPaymentOption.js +17 -7
  71. package/dist/src/components/generic/AfterpayButton/AfterpayPaymentOption.js.map +1 -1
  72. package/dist/src/components/generic/AgedBetweenLabel/AgedBetweenLabel.d.ts +2 -1
  73. package/dist/src/components/generic/AgedBetweenLabel/AgedBetweenLabel.js +17 -7
  74. package/dist/src/components/generic/AgedBetweenLabel/AgedBetweenLabel.js.map +1 -1
  75. package/dist/src/components/generic/Alert.d.ts +2 -2
  76. package/dist/src/components/generic/Alert.js +3 -3
  77. package/dist/src/components/generic/Alert.js.map +1 -1
  78. package/dist/src/components/generic/BEButton.d.ts +2 -1
  79. package/dist/src/components/generic/BEButton.js +20 -9
  80. package/dist/src/components/generic/BEButton.js.map +1 -1
  81. package/dist/src/components/generic/BackButton.d.ts +2 -1
  82. package/dist/src/components/generic/BackButton.js +1 -1
  83. package/dist/src/components/generic/BackButton.js.map +1 -1
  84. package/dist/src/components/generic/BookNowPayLaterInfoBlock.js +18 -9
  85. package/dist/src/components/generic/BookNowPayLaterInfoBlock.js.map +1 -1
  86. package/dist/src/components/generic/BookingWizard/BookingWizard.d.ts +1 -2
  87. package/dist/src/components/generic/BookingWizard/BookingWizard.js +28 -46
  88. package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
  89. package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.d.ts +2 -2
  90. package/dist/src/components/generic/BookingWizard/BookingWizardContent.d.ts +5 -7
  91. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +21 -43
  92. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
  93. package/dist/src/components/generic/BookingWizard/BookingWizardContext.d.ts +0 -9
  94. package/dist/src/components/generic/BookingWizard/BookingWizardContext.js.map +1 -1
  95. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.d.ts +1 -2
  96. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +19 -9
  97. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
  98. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.d.ts +5 -2
  99. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +20 -10
  100. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
  101. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.d.ts +1 -1
  102. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js +21 -11
  103. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js.map +1 -1
  104. package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js +17 -7
  105. package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js.map +1 -1
  106. package/dist/src/components/generic/Card/IconNavCard/IconNavCard.d.ts +2 -2
  107. package/dist/src/components/generic/Card/IconNavCard/IconNavCard.js +17 -7
  108. package/dist/src/components/generic/Card/IconNavCard/IconNavCard.js.map +1 -1
  109. package/dist/src/components/generic/Checkbox/Checkbox.js +17 -7
  110. package/dist/src/components/generic/Checkbox/Checkbox.js.map +1 -1
  111. package/dist/src/components/generic/Countdown.d.ts +2 -1
  112. package/dist/src/components/generic/Countdown.js +18 -8
  113. package/dist/src/components/generic/Countdown.js.map +1 -1
  114. package/dist/src/components/generic/Currency.d.ts +2 -1
  115. package/dist/src/components/generic/Currency.js +18 -8
  116. package/dist/src/components/generic/Currency.js.map +1 -1
  117. package/dist/src/components/generic/DateRangePicker/DateRangePicker.d.ts +2 -1
  118. package/dist/src/components/generic/DateRangePicker/DateRangePicker.js +18 -8
  119. package/dist/src/components/generic/DateRangePicker/DateRangePicker.js.map +1 -1
  120. package/dist/src/components/generic/DateRangePicker/DateRangePickerDay.d.ts +2 -1
  121. package/dist/src/components/generic/DateRangePicker/DateRangePickerDay.js +19 -9
  122. package/dist/src/components/generic/DateRangePicker/DateRangePickerDay.js.map +1 -1
  123. package/dist/src/components/generic/DateRangePicker/DateRangePickerDays.d.ts +2 -1
  124. package/dist/src/components/generic/DateRangePicker/DateRangePickerDays.js +18 -8
  125. package/dist/src/components/generic/DateRangePicker/DateRangePickerDays.js.map +1 -1
  126. package/dist/src/components/generic/DateRangePicker/DateRangePickerMonth.d.ts +2 -1
  127. package/dist/src/components/generic/DateRangePicker/DateRangePickerMonth.js +18 -8
  128. package/dist/src/components/generic/DateRangePicker/DateRangePickerMonth.js.map +1 -1
  129. package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.js +17 -7
  130. package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.js.map +1 -1
  131. package/dist/src/components/generic/Distance.d.ts +2 -1
  132. package/dist/src/components/generic/Distance.js +18 -8
  133. package/dist/src/components/generic/Distance.js.map +1 -1
  134. package/dist/src/components/generic/Event/EventCard.js +17 -7
  135. package/dist/src/components/generic/Event/EventCard.js.map +1 -1
  136. package/dist/src/components/generic/Event/EventCarousel.js +17 -7
  137. package/dist/src/components/generic/Event/EventCarousel.js.map +1 -1
  138. package/dist/src/components/generic/ForwardedSelect.js +17 -7
  139. package/dist/src/components/generic/ForwardedSelect.js.map +1 -1
  140. package/dist/src/components/generic/GroupedCheckInOutTimes/GroupedCheckInOutTimes.js.map +1 -1
  141. package/dist/src/components/generic/Headline.d.ts +1 -1
  142. package/dist/src/components/generic/Headline.js +1 -1
  143. package/dist/src/components/generic/Headline.js.map +1 -1
  144. package/dist/src/components/generic/HtmlContentViewer.d.ts +2 -1
  145. package/dist/src/components/generic/HtmlContentViewer.js +17 -7
  146. package/dist/src/components/generic/HtmlContentViewer.js.map +1 -1
  147. package/dist/src/components/generic/IconText/IconText.js +19 -9
  148. package/dist/src/components/generic/IconText/IconText.js.map +1 -1
  149. package/dist/src/components/generic/InputGroup/InputGroup.d.ts +2 -2
  150. package/dist/src/components/generic/InputGroup/InputGroup.js +1 -1
  151. package/dist/src/components/generic/InputGroup/InputGroup.js.map +1 -1
  152. package/dist/src/components/generic/LineBreak.d.ts +2 -1
  153. package/dist/src/components/generic/LineBreak.js +1 -1
  154. package/dist/src/components/generic/LineBreak.js.map +1 -1
  155. package/dist/src/components/generic/Notification.d.ts +1 -1
  156. package/dist/src/components/generic/Notification.js +18 -8
  157. package/dist/src/components/generic/Notification.js.map +1 -1
  158. package/dist/src/components/generic/NumberIncrement.d.ts +2 -1
  159. package/dist/src/components/generic/NumberIncrement.js +18 -8
  160. package/dist/src/components/generic/NumberIncrement.js.map +1 -1
  161. package/dist/src/components/generic/Overlay/Overlay.d.ts +2 -2
  162. package/dist/src/components/generic/Overlay/Overlay.js +17 -7
  163. package/dist/src/components/generic/Overlay/Overlay.js.map +1 -1
  164. package/dist/src/components/generic/PageTitle/index.d.ts +2 -1
  165. package/dist/src/components/generic/PageTitle/index.js.map +1 -1
  166. package/dist/src/components/generic/PasswordBox/PasswordBox.js +17 -7
  167. package/dist/src/components/generic/PasswordBox/PasswordBox.js.map +1 -1
  168. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js +19 -9
  169. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js.map +1 -1
  170. package/dist/src/components/generic/PaymentCard/PaymentCard.d.ts +2 -1
  171. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js +17 -7
  172. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js.map +1 -1
  173. package/dist/src/components/generic/Pill.d.ts +1 -1
  174. package/dist/src/components/generic/Pill.js +3 -3
  175. package/dist/src/components/generic/Pill.js.map +1 -1
  176. package/dist/src/components/generic/Placeholder.d.ts +2 -1
  177. package/dist/src/components/generic/Placeholder.js +1 -1
  178. package/dist/src/components/generic/Placeholder.js.map +1 -1
  179. package/dist/src/components/generic/PlanpayPrice/PlanpayPrice.js +17 -7
  180. package/dist/src/components/generic/PlanpayPrice/PlanpayPrice.js.map +1 -1
  181. package/dist/src/components/generic/PromoCodeInput.d.ts +4 -1
  182. package/dist/src/components/generic/PromoCodeInput.js +20 -12
  183. package/dist/src/components/generic/PromoCodeInput.js.map +1 -1
  184. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js +17 -7
  185. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js.map +1 -1
  186. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js +17 -7
  187. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  188. package/dist/src/components/generic/RecentSearchesCard.d.ts +2 -1
  189. package/dist/src/components/generic/RecentSearchesCard.js +17 -7
  190. package/dist/src/components/generic/RecentSearchesCard.js.map +1 -1
  191. package/dist/src/components/generic/RoomstayMark.d.ts +2 -1
  192. package/dist/src/components/generic/RoomstayMark.js +17 -7
  193. package/dist/src/components/generic/RoomstayMark.js.map +1 -1
  194. package/dist/src/components/generic/ScrollToTop.js.map +1 -1
  195. package/dist/src/components/generic/Select/InputSelect.js +18 -8
  196. package/dist/src/components/generic/Select/InputSelect.js.map +1 -1
  197. package/dist/src/components/generic/Select/Select.d.ts +2 -2
  198. package/dist/src/components/generic/Select/Select.js +17 -7
  199. package/dist/src/components/generic/Select/Select.js.map +1 -1
  200. package/dist/src/components/generic/Slider/Slider.d.ts +1 -1
  201. package/dist/src/components/generic/Slider/Slider.js +17 -7
  202. package/dist/src/components/generic/Slider/Slider.js.map +1 -1
  203. package/dist/src/components/generic/Tabs/ElementChildren.js +2 -3
  204. package/dist/src/components/generic/Tabs/ElementChildren.js.map +1 -1
  205. package/dist/src/components/generic/Tabs/TabContext.js +17 -7
  206. package/dist/src/components/generic/Tabs/TabContext.js.map +1 -1
  207. package/dist/src/components/generic/Tabs/TabLink.js +17 -7
  208. package/dist/src/components/generic/Tabs/TabLink.js.map +1 -1
  209. package/dist/src/components/generic/Tabs/TabRouteContainer.d.ts +2 -2
  210. package/dist/src/components/generic/Tabs/TabRouteContainer.js +18 -9
  211. package/dist/src/components/generic/Tabs/TabRouteContainer.js.map +1 -1
  212. package/dist/src/components/generic/Text.js +19 -9
  213. package/dist/src/components/generic/Text.js.map +1 -1
  214. package/dist/src/components/generic/TextArea.js +17 -7
  215. package/dist/src/components/generic/TextArea.js.map +1 -1
  216. package/dist/src/components/generic/TextBox.js +17 -7
  217. package/dist/src/components/generic/TextBox.js.map +1 -1
  218. package/dist/src/components/generic/Tooltip/Tooltip.d.ts +2 -2
  219. package/dist/src/components/generic/Tooltip/Tooltip.js +18 -8
  220. package/dist/src/components/generic/Tooltip/Tooltip.js.map +1 -1
  221. package/dist/src/components/generic/badging/SSLSecureBadge.d.ts +2 -1
  222. package/dist/src/components/generic/badging/SSLSecureBadge.js +1 -1
  223. package/dist/src/components/generic/badging/SSLSecureBadge.js.map +1 -1
  224. package/dist/src/components/generic/buttons/NextStepButton.d.ts +2 -1
  225. package/dist/src/components/generic/buttons/NextStepButton.js +18 -8
  226. package/dist/src/components/generic/buttons/NextStepButton.js.map +1 -1
  227. package/dist/src/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField.js +26 -14
  228. package/dist/src/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField.js.map +1 -1
  229. package/dist/src/components/generic/date/DatePicker.d.ts +3 -2
  230. package/dist/src/components/generic/date/DatePicker.js +19 -9
  231. package/dist/src/components/generic/date/DatePicker.js.map +1 -1
  232. package/dist/src/components/generic/date/DatePickerDay.d.ts +2 -1
  233. package/dist/src/components/generic/date/DatePickerDay.js +19 -9
  234. package/dist/src/components/generic/date/DatePickerDay.js.map +1 -1
  235. package/dist/src/components/generic/date/DatePickerDays.d.ts +2 -1
  236. package/dist/src/components/generic/date/DatePickerDays.js +18 -8
  237. package/dist/src/components/generic/date/DatePickerDays.js.map +1 -1
  238. package/dist/src/components/generic/date/DatePickerMonth.d.ts +2 -1
  239. package/dist/src/components/generic/date/DatePickerMonth.js +18 -8
  240. package/dist/src/components/generic/date/DatePickerMonth.js.map +1 -1
  241. package/dist/src/components/generic/date/DatePickerWeek.d.ts +2 -1
  242. package/dist/src/components/generic/date/DatePickerWeek.js +21 -11
  243. package/dist/src/components/generic/date/DatePickerWeek.js.map +1 -1
  244. package/dist/src/components/generic/date/FloatingDatePicker.d.ts +1 -1
  245. package/dist/src/components/generic/date/FloatingDatePicker.js +19 -9
  246. package/dist/src/components/generic/date/FloatingDatePicker.js.map +1 -1
  247. package/dist/src/components/generic/date/WeekViewSkeleton.d.ts +2 -1
  248. package/dist/src/components/generic/date/WeekViewSkeleton.js +17 -7
  249. package/dist/src/components/generic/date/WeekViewSkeleton.js.map +1 -1
  250. package/dist/src/components/generic/loader/ImageLoader.d.ts +1 -1
  251. package/dist/src/components/generic/loader/ImageLoader.js +18 -8
  252. package/dist/src/components/generic/loader/ImageLoader.js.map +1 -1
  253. package/dist/src/components/generic/loader/LargeLoader.d.ts +2 -1
  254. package/dist/src/components/generic/loader/LargeLoader.js +1 -1
  255. package/dist/src/components/generic/loader/LargeLoader.js.map +1 -1
  256. package/dist/src/components/generic/loader/OverlayLoader.d.ts +2 -1
  257. package/dist/src/components/generic/loader/SmallSpinner.d.ts +2 -1
  258. package/dist/src/components/generic/loader/SmallSpinner.js +18 -8
  259. package/dist/src/components/generic/loader/SmallSpinner.js.map +1 -1
  260. package/dist/src/components/generic/map/HotelLocationMap.d.ts +2 -1
  261. package/dist/src/components/generic/map/HotelLocationMap.js +1 -1
  262. package/dist/src/components/generic/map/HotelLocationMap.js.map +1 -1
  263. package/dist/src/components/generic/modal/ConfirmationModal.d.ts +2 -1
  264. package/dist/src/components/generic/modal/ConfirmationModal.js +18 -8
  265. package/dist/src/components/generic/modal/ConfirmationModal.js.map +1 -1
  266. package/dist/src/components/generic/modal/ErrorModal.d.ts +1 -1
  267. package/dist/src/components/generic/modal/ErrorModal.js +18 -8
  268. package/dist/src/components/generic/modal/ErrorModal.js.map +1 -1
  269. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js +17 -7
  270. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js.map +1 -1
  271. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js +17 -7
  272. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js.map +1 -1
  273. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.d.ts +2 -1
  274. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js +18 -8
  275. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js.map +1 -1
  276. package/dist/src/components/generic/modal/SimpleModal.d.ts +1 -1
  277. package/dist/src/components/generic/modal/SimpleModal.js +19 -9
  278. package/dist/src/components/generic/modal/SimpleModal.js.map +1 -1
  279. package/dist/src/components/generic/modal/TabbedModal.d.ts +1 -1
  280. package/dist/src/components/generic/modal/TabbedModal.js +18 -8
  281. package/dist/src/components/generic/modal/TabbedModal.js.map +1 -1
  282. package/dist/src/components/generic/radio/RadioFields.d.ts +2 -1
  283. package/dist/src/components/generic/radio/RadioFields.js +18 -8
  284. package/dist/src/components/generic/radio/RadioFields.js.map +1 -1
  285. package/dist/src/components/graphics/TravelerNotfound.d.ts +2 -1
  286. package/dist/src/components/graphics/TravelerNotfound.js +1 -1
  287. package/dist/src/components/graphics/TravelerNotfound.js.map +1 -1
  288. package/dist/src/components/iconComponents/BookNowPayLaterIcon.d.ts +2 -1
  289. package/dist/src/components/members/EditMyProfile.js +17 -7
  290. package/dist/src/components/members/EditMyProfile.js.map +1 -1
  291. package/dist/src/components/members/InlineSignUpSection.d.ts +3 -2
  292. package/dist/src/components/members/InlineSignUpSection.js +17 -7
  293. package/dist/src/components/members/InlineSignUpSection.js.map +1 -1
  294. package/dist/src/components/members/SignInModal/ExternalMemberModal.d.ts +2 -1
  295. package/dist/src/components/members/SignInModal/ExternalMemberModal.js +17 -7
  296. package/dist/src/components/members/SignInModal/ExternalMemberModal.js.map +1 -1
  297. package/dist/src/components/members/SignInModal/InternalMemberSignInModal.d.ts +2 -1
  298. package/dist/src/components/members/SignInModal/InternalMemberSignInModal.js +19 -9
  299. package/dist/src/components/members/SignInModal/InternalMemberSignInModal.js.map +1 -1
  300. package/dist/src/components/members/SignInModal/MemberPortalSignInModal.d.ts +2 -1
  301. package/dist/src/components/members/SignInModal/MemberPortalSignInModal.js +18 -8
  302. package/dist/src/components/members/SignInModal/MemberPortalSignInModal.js.map +1 -1
  303. package/dist/src/components/members/SignInModal/MemberSignInModal.d.ts +2 -1
  304. package/dist/src/components/members/SignInModal/MemberSignInModal.js +17 -7
  305. package/dist/src/components/members/SignInModal/MemberSignInModal.js.map +1 -1
  306. package/dist/src/components/navigation/Header.d.ts +2 -1
  307. package/dist/src/components/navigation/Header.js +22 -8
  308. package/dist/src/components/navigation/Header.js.map +1 -1
  309. package/dist/src/components/navigation/StepSelector.d.ts +2 -1
  310. package/dist/src/components/navigation/StepSelector.js +18 -8
  311. package/dist/src/components/navigation/StepSelector.js.map +1 -1
  312. package/dist/src/components/navigation/StepSelectorModal.d.ts +2 -1
  313. package/dist/src/components/navigation/StepSelectorModal.js +18 -8
  314. package/dist/src/components/navigation/StepSelectorModal.js.map +1 -1
  315. package/dist/src/components/pages/Account/Card/MemberCardItem.d.ts +2 -1
  316. package/dist/src/components/pages/Account/Card/MemberCardItem.js +17 -7
  317. package/dist/src/components/pages/Account/Card/MemberCardItem.js.map +1 -1
  318. package/dist/src/components/pages/PageColorComponent.d.ts +2 -1
  319. package/dist/src/components/pages/PageColorComponent.js +17 -7
  320. package/dist/src/components/pages/PageColorComponent.js.map +1 -1
  321. package/dist/src/components/reservation/EmptyReservation.js +17 -7
  322. package/dist/src/components/reservation/EmptyReservation.js.map +1 -1
  323. package/dist/src/components/reservation/ReservationItem.d.ts +3 -1
  324. package/dist/src/components/reservation/ReservationItem.js +20 -10
  325. package/dist/src/components/reservation/ReservationItem.js.map +1 -1
  326. package/dist/src/components/reservation/ReservationList.d.ts +1 -0
  327. package/dist/src/components/reservation/ReservationList.js +2 -2
  328. package/dist/src/components/reservation/ReservationList.js.map +1 -1
  329. package/dist/src/components/steps/DaysSelectedInformer.d.ts +2 -1
  330. package/dist/src/components/steps/DaysSelectedInformer.js +18 -8
  331. package/dist/src/components/steps/DaysSelectedInformer.js.map +1 -1
  332. package/dist/src/components/steps/MinimumNightStayPill.d.ts +2 -1
  333. package/dist/src/components/steps/MinimumNightStayPill.js +18 -8
  334. package/dist/src/components/steps/MinimumNightStayPill.js.map +1 -1
  335. package/dist/src/components/steps/addons/AddonCard.d.ts +2 -1
  336. package/dist/src/components/steps/addons/AddonCard.js +25 -7
  337. package/dist/src/components/steps/addons/AddonCard.js.map +1 -1
  338. package/dist/src/components/steps/addons/AddonList.d.ts +2 -1
  339. package/dist/src/components/steps/addons/AddonList.js +17 -7
  340. package/dist/src/components/steps/addons/AddonList.js.map +1 -1
  341. package/dist/src/components/steps/addons/AddonsNotFoundBlock.d.ts +2 -1
  342. package/dist/src/components/steps/addons/AddonsNotFoundBlock.js +1 -1
  343. package/dist/src/components/steps/addons/AddonsNotFoundBlock.js.map +1 -1
  344. package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.d.ts +3 -2
  345. package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.js +19 -9
  346. package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.js.map +1 -1
  347. package/dist/src/components/steps/common/ItemisedFeesListing/ItemisedFeesListing.d.ts +2 -1
  348. package/dist/src/components/steps/common/ItemisedFeesListing/ItemisedFeesListing.js +17 -7
  349. package/dist/src/components/steps/common/ItemisedFeesListing/ItemisedFeesListing.js.map +1 -1
  350. package/dist/src/components/steps/common/ItemisedFeesSummary/ItemisedFeesSummary.d.ts +3 -2
  351. package/dist/src/components/steps/common/ItemisedFeesSummary/ItemisedFeesSummary.js +17 -7
  352. package/dist/src/components/steps/common/ItemisedFeesSummary/ItemisedFeesSummary.js.map +1 -1
  353. package/dist/src/components/steps/confirmation/AccountDetails.d.ts +2 -1
  354. package/dist/src/components/steps/confirmation/AccountDetails.js +18 -8
  355. package/dist/src/components/steps/confirmation/AccountDetails.js.map +1 -1
  356. package/dist/src/components/steps/confirmation/AdyenPaymentOption/AdyenPaymentOption.js +17 -7
  357. package/dist/src/components/steps/confirmation/AdyenPaymentOption/AdyenPaymentOption.js.map +1 -1
  358. package/dist/src/components/steps/confirmation/MastercardPaymentMethod.js +17 -7
  359. package/dist/src/components/steps/confirmation/MastercardPaymentMethod.js.map +1 -1
  360. package/dist/src/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard.js.map +1 -1
  361. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.d.ts +2 -1
  362. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js +17 -7
  363. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js.map +1 -1
  364. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js +17 -7
  365. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js.map +1 -1
  366. package/dist/src/components/steps/confirmation/PaymentInformation.d.ts +2 -1
  367. package/dist/src/components/steps/confirmation/PaymentInformation.js +17 -7
  368. package/dist/src/components/steps/confirmation/PaymentInformation.js.map +1 -1
  369. package/dist/src/components/steps/confirmation/PlanpayLabel.d.ts +2 -1
  370. package/dist/src/components/steps/confirmation/PlanpayLabel.js +17 -7
  371. package/dist/src/components/steps/confirmation/PlanpayLabel.js.map +1 -1
  372. package/dist/src/components/steps/confirmation/PlanpayPaymentMethod.js +17 -7
  373. package/dist/src/components/steps/confirmation/PlanpayPaymentMethod.js.map +1 -1
  374. package/dist/src/components/steps/confirmation/RoomContactDetails.js +18 -11
  375. package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
  376. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.d.ts +2 -1
  377. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js +28 -19
  378. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js.map +1 -1
  379. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.d.ts +2 -1
  380. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js +18 -8
  381. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js.map +1 -1
  382. package/dist/src/components/steps/confirmation/StepConfirmationCommentsComponent.d.ts +2 -1
  383. package/dist/src/components/steps/confirmation/StepConfirmationCommentsComponent.js +2 -2
  384. package/dist/src/components/steps/confirmation/StepConfirmationCommentsComponent.js.map +1 -1
  385. package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.js +17 -7
  386. package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.js.map +1 -1
  387. package/dist/src/components/steps/confirmation/StepConfirmationForm.d.ts +2 -1
  388. package/dist/src/components/steps/confirmation/StepConfirmationForm.js +18 -8
  389. package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
  390. package/dist/src/components/steps/confirmation/StepConfirmationFormProvider.d.ts +2 -1
  391. package/dist/src/components/steps/confirmation/StepConfirmationFormProvider.js +1 -1
  392. package/dist/src/components/steps/confirmation/StepConfirmationFormProvider.js.map +1 -1
  393. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.d.ts +2 -1
  394. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js +18 -8
  395. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js.map +1 -1
  396. package/dist/src/components/steps/confirmation/StepConfirmationPoliciesSection.d.ts +2 -1
  397. package/dist/src/components/steps/confirmation/StepConfirmationPoliciesSection.js +18 -8
  398. package/dist/src/components/steps/confirmation/StepConfirmationPoliciesSection.js.map +1 -1
  399. package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.d.ts +2 -1
  400. package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.js +23 -12
  401. package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.js.map +1 -1
  402. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsLabel.d.ts +2 -1
  403. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsLabel.js +26 -13
  404. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsLabel.js.map +1 -1
  405. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsModal.d.ts +2 -0
  406. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsModal.js +94 -0
  407. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsModal.js.map +1 -0
  408. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsPaymentMethod.d.ts +5 -1
  409. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsPaymentMethod.js +35 -13
  410. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsPaymentMethod.js.map +1 -1
  411. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.d.ts +2 -1
  412. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js +18 -8
  413. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js.map +1 -1
  414. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.d.ts +2 -1
  415. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js +18 -8
  416. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js.map +1 -1
  417. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersModal.d.ts +2 -1
  418. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersModal.js +18 -8
  419. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersModal.js.map +1 -1
  420. package/dist/src/components/steps/date/OccupancyWarningBlock.d.ts +2 -1
  421. package/dist/src/components/steps/date/OccupancyWarningBlock.js +1 -1
  422. package/dist/src/components/steps/date/OccupancyWarningBlock.js.map +1 -1
  423. package/dist/src/components/steps/date/PeoplePicker.d.ts +2 -1
  424. package/dist/src/components/steps/date/PeoplePicker.js +20 -10
  425. package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
  426. package/dist/src/components/steps/date/PeoplePickerRow.d.ts +2 -1
  427. package/dist/src/components/steps/date/PeoplePickerRow.js +19 -9
  428. package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
  429. package/dist/src/components/steps/date/StepDatePricePerRoom.d.ts +2 -1
  430. package/dist/src/components/steps/date/StepDatePricePerRoom.js +18 -8
  431. package/dist/src/components/steps/date/StepDatePricePerRoom.js.map +1 -1
  432. package/dist/src/components/steps/date/StepOneDateRange.d.ts +2 -1
  433. package/dist/src/components/steps/date/StepOneDateRange.js +18 -8
  434. package/dist/src/components/steps/date/StepOneDateRange.js.map +1 -1
  435. package/dist/src/components/steps/date/StepOneDateRangePicker.d.ts +2 -1
  436. package/dist/src/components/steps/date/StepOneDateRangePicker.js +18 -8
  437. package/dist/src/components/steps/date/StepOneDateRangePicker.js.map +1 -1
  438. package/dist/src/components/steps/date/StepOneDateRangePickerLegend.d.ts +2 -1
  439. package/dist/src/components/steps/date/StepOneDateRangePickerLegend.js +18 -8
  440. package/dist/src/components/steps/date/StepOneDateRangePickerLegend.js.map +1 -1
  441. package/dist/src/components/steps/date/StepOneNextStepButton.d.ts +2 -1
  442. package/dist/src/components/steps/date/StepOneNextStepButton.js +18 -8
  443. package/dist/src/components/steps/date/StepOneNextStepButton.js.map +1 -1
  444. package/dist/src/components/steps/date/StepOneStatusPeople.d.ts +2 -1
  445. package/dist/src/components/steps/date/StepOneStatusPeople.js +18 -8
  446. package/dist/src/components/steps/date/StepOneStatusPeople.js.map +1 -1
  447. package/dist/src/components/steps/hotel/HotelCard.d.ts +2 -1
  448. package/dist/src/components/steps/hotel/HotelCard.js +19 -9
  449. package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
  450. package/dist/src/components/steps/hotel/HotelCardList.d.ts +2 -1
  451. package/dist/src/components/steps/hotel/HotelCardList.js +1 -1
  452. package/dist/src/components/steps/hotel/HotelCardList.js.map +1 -1
  453. package/dist/src/components/steps/hotel/HotelCardModal.d.ts +2 -1
  454. package/dist/src/components/steps/hotel/HotelCardModal.js +17 -7
  455. package/dist/src/components/steps/hotel/HotelCardModal.js.map +1 -1
  456. package/dist/src/components/steps/hotel/HotelInfoPerksRow.d.ts +2 -1
  457. package/dist/src/components/steps/hotel/HotelInfoPerksRow.js +18 -8
  458. package/dist/src/components/steps/hotel/HotelInfoPerksRow.js.map +1 -1
  459. package/dist/src/components/steps/hotel/HotelSearchParameters.d.ts +2 -1
  460. package/dist/src/components/steps/hotel/HotelSearchParameters.js +22 -20
  461. package/dist/src/components/steps/hotel/HotelSearchParameters.js.map +1 -1
  462. package/dist/src/components/steps/hotel/NoHotelsAvailable.d.ts +2 -1
  463. package/dist/src/components/steps/hotel/NoHotelsAvailable.js +1 -1
  464. package/dist/src/components/steps/hotel/NoHotelsAvailable.js.map +1 -1
  465. package/dist/src/components/steps/room/AvailableUpgradesModal.js +118 -37
  466. package/dist/src/components/steps/room/AvailableUpgradesModal.js.map +1 -1
  467. package/dist/src/components/steps/room/ImageGallerySlider.d.ts +2 -1
  468. package/dist/src/components/steps/room/ImageGallerySlider.js +18 -8
  469. package/dist/src/components/steps/room/ImageGallerySlider.js.map +1 -1
  470. package/dist/src/components/steps/room/InactivityWindow.d.ts +2 -1
  471. package/dist/src/components/steps/room/InactivityWindow.js +17 -7
  472. package/dist/src/components/steps/room/InactivityWindow.js.map +1 -1
  473. package/dist/src/components/steps/room/LargeRateCard.d.ts +11 -0
  474. package/dist/src/components/steps/room/LargeRateCard.js +120 -0
  475. package/dist/src/components/steps/room/LargeRateCard.js.map +1 -0
  476. package/dist/src/components/steps/room/LargeRoomCard.d.ts +2 -1
  477. package/dist/src/components/steps/room/LargeRoomCard.js +26 -10
  478. package/dist/src/components/steps/room/LargeRoomCard.js.map +1 -1
  479. package/dist/src/components/steps/room/NoRoomsFoundBlock.d.ts +2 -1
  480. package/dist/src/components/steps/room/NoRoomsFoundBlock.js +18 -8
  481. package/dist/src/components/steps/room/NoRoomsFoundBlock.js.map +1 -1
  482. package/dist/src/components/steps/room/RatesNotFoundBlock.d.ts +2 -1
  483. package/dist/src/components/steps/room/RatesNotFoundBlock.js +1 -1
  484. package/dist/src/components/steps/room/RatesNotFoundBlock.js.map +1 -1
  485. package/dist/src/components/steps/room/RoomList.d.ts +2 -1
  486. package/dist/src/components/steps/room/RoomList.js +18 -8
  487. package/dist/src/components/steps/room/RoomList.js.map +1 -1
  488. package/dist/src/components/steps/room/RoomListAlert.js +17 -7
  489. package/dist/src/components/steps/room/RoomListAlert.js.map +1 -1
  490. package/dist/src/components/steps/room/RoomListCrossSellBlock.js +18 -8
  491. package/dist/src/components/steps/room/RoomListCrossSellBlock.js.map +1 -1
  492. package/dist/src/components/steps/room/RoomModal.d.ts +2 -1
  493. package/dist/src/components/steps/room/RoomModal.js +18 -8
  494. package/dist/src/components/steps/room/RoomModal.js.map +1 -1
  495. package/dist/src/components/steps/room/RoomModalPerkRow.d.ts +2 -1
  496. package/dist/src/components/steps/room/RoomModalPerkRow.js +18 -8
  497. package/dist/src/components/steps/room/RoomModalPerkRow.js.map +1 -1
  498. package/dist/src/components/steps/room/StepRoomAlertBlocks.d.ts +2 -1
  499. package/dist/src/components/steps/room/StepRoomAlertBlocks.js +18 -8
  500. package/dist/src/components/steps/room/StepRoomAlertBlocks.js.map +1 -1
  501. package/dist/src/components/steps/room/StepRoomBestRateAlert.d.ts +2 -1
  502. package/dist/src/components/steps/room/StepRoomBestRateAlert.js +18 -8
  503. package/dist/src/components/steps/room/StepRoomBestRateAlert.js.map +1 -1
  504. package/dist/src/components/steps/room/StepRoomErrorForm.d.ts +2 -1
  505. package/dist/src/components/steps/room/StepRoomErrorForm.js +17 -7
  506. package/dist/src/components/steps/room/StepRoomErrorForm.js.map +1 -1
  507. package/dist/src/components/steps/room/StepRoomHotelDetails.d.ts +2 -1
  508. package/dist/src/components/steps/room/StepRoomHotelDetails.js +18 -8
  509. package/dist/src/components/steps/room/StepRoomHotelDetails.js.map +1 -1
  510. package/dist/src/components/steps/room/StepRoomNextStepButton.js +18 -8
  511. package/dist/src/components/steps/room/StepRoomNextStepButton.js.map +1 -1
  512. package/dist/src/components/steps/room/StepRoomSortBy.d.ts +2 -1
  513. package/dist/src/components/steps/room/StepRoomSortBy.js +18 -8
  514. package/dist/src/components/steps/room/StepRoomSortBy.js.map +1 -1
  515. package/dist/src/components/steps/room/StepRoomSummaryAndButton.d.ts +2 -1
  516. package/dist/src/components/steps/room/StepRoomSummaryAndButton.js +18 -8
  517. package/dist/src/components/steps/room/StepRoomSummaryAndButton.js.map +1 -1
  518. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.d.ts +2 -1
  519. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js +17 -7
  520. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js.map +1 -1
  521. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.d.ts +2 -1
  522. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js +17 -7
  523. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js.map +1 -1
  524. package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.d.ts +2 -1
  525. package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.js +17 -7
  526. package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.js.map +1 -1
  527. package/dist/src/components/steps/room/UserSearchSummary/PromoCodeVerificationAlert.d.ts +3 -2
  528. package/dist/src/components/steps/room/UserSearchSummary/PromoCodeVerificationAlert.js +19 -8
  529. package/dist/src/components/steps/room/UserSearchSummary/PromoCodeVerificationAlert.js.map +1 -1
  530. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.d.ts +2 -1
  531. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.js +17 -7
  532. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.js.map +1 -1
  533. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.d.ts +2 -1
  534. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js +20 -20
  535. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js.map +1 -1
  536. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.d.ts +2 -1
  537. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +17 -7
  538. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
  539. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.d.ts +2 -1
  540. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.js +1 -1
  541. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.js.map +1 -1
  542. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.d.ts +2 -1
  543. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.js +1 -1
  544. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.js.map +1 -1
  545. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfInfantsPicker.d.ts +2 -1
  546. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfInfantsPicker.js +1 -1
  547. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfInfantsPicker.js.map +1 -1
  548. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.d.ts +2 -1
  549. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js +18 -8
  550. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js.map +1 -1
  551. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.d.ts +2 -1
  552. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +23 -23
  553. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
  554. package/dist/src/components/steps/room/roomDetails/RoomDetails.d.ts +2 -1
  555. package/dist/src/components/steps/room/roomDetails/RoomDetails.js +18 -8
  556. package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
  557. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.d.ts +2 -1
  558. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js +18 -9
  559. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js.map +1 -1
  560. package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.d.ts +2 -1
  561. package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.js +18 -9
  562. package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.js.map +1 -1
  563. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.d.ts +2 -1
  564. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js +18 -8
  565. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js.map +1 -1
  566. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js +17 -7
  567. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js.map +1 -1
  568. package/dist/src/components/steps/room/roomDetails/roomRates/BookNowButton.d.ts +2 -1
  569. package/dist/src/components/steps/room/roomDetails/roomRates/BookNowButton.js +18 -8
  570. package/dist/src/components/steps/room/roomDetails/roomRates/BookNowButton.js.map +1 -1
  571. package/dist/src/components/steps/room/roomDetails/roomRates/MembersOnlyRow.d.ts +2 -1
  572. package/dist/src/components/steps/room/roomDetails/roomRates/MembersOnlyRow.js +18 -8
  573. package/dist/src/components/steps/room/roomDetails/roomRates/MembersOnlyRow.js.map +1 -1
  574. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.d.ts +3 -2
  575. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js +20 -10
  576. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js.map +1 -1
  577. package/dist/src/components/steps/room/roomDetails/roomRates/ReadMoreRoomRateRow.d.ts +2 -1
  578. package/dist/src/components/steps/room/roomDetails/roomRates/ReadMoreRoomRateRow.js +18 -8
  579. package/dist/src/components/steps/room/roomDetails/roomRates/ReadMoreRoomRateRow.js.map +1 -1
  580. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.d.ts +3 -2
  581. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js +20 -10
  582. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js.map +1 -1
  583. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.d.ts +2 -1
  584. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js +19 -9
  585. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js.map +1 -1
  586. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.d.ts +2 -1
  587. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js +17 -7
  588. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js.map +1 -1
  589. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.d.ts +2 -1
  590. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js +18 -8
  591. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js.map +1 -1
  592. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.d.ts +2 -1
  593. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +18 -8
  594. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
  595. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.d.ts +2 -1
  596. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js +18 -8
  597. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js.map +1 -1
  598. package/dist/src/components/steps/room/roomDetails/unavailableRoom/UnavailableRoom.d.ts +2 -1
  599. package/dist/src/components/steps/room/roomDetails/unavailableRoom/UnavailableRoom.js +26 -12
  600. package/dist/src/components/steps/room/roomDetails/unavailableRoom/UnavailableRoom.js.map +1 -1
  601. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.d.ts +2 -1
  602. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js +18 -8
  603. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js.map +1 -1
  604. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.d.ts +2 -1
  605. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js +18 -8
  606. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js.map +1 -1
  607. package/dist/src/components/steps/room/roomFilter/RoomFilterPriceSlider.d.ts +2 -1
  608. package/dist/src/components/steps/room/roomFilter/RoomFilterPriceSlider.js +18 -8
  609. package/dist/src/components/steps/room/roomFilter/RoomFilterPriceSlider.js.map +1 -1
  610. package/dist/src/components/steps/room/roomFilter/RoomFilterRateType.d.ts +2 -1
  611. package/dist/src/components/steps/room/roomFilter/RoomFilterRateType.js +18 -8
  612. package/dist/src/components/steps/room/roomFilter/RoomFilterRateType.js.map +1 -1
  613. package/dist/src/components/steps/room/roomFilter/RoomFilterRoomType.d.ts +2 -1
  614. package/dist/src/components/steps/room/roomFilter/RoomFilterRoomType.js +18 -8
  615. package/dist/src/components/steps/room/roomFilter/RoomFilterRoomType.js.map +1 -1
  616. package/dist/src/components/summary/BEMapWidget.d.ts +0 -2
  617. package/dist/src/components/summary/BEMapWidget.js +17 -7
  618. package/dist/src/components/summary/BEMapWidget.js.map +1 -1
  619. package/dist/src/components/summary/BEMobileSummary.d.ts +2 -1
  620. package/dist/src/components/summary/BEMobileSummary.js +18 -8
  621. package/dist/src/components/summary/BEMobileSummary.js.map +1 -1
  622. package/dist/src/components/summary/BEMobileSummaryModal.d.ts +2 -1
  623. package/dist/src/components/summary/BEMobileSummaryModal.js +30 -19
  624. package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
  625. package/dist/src/components/summary/BESummary.d.ts +2 -1
  626. package/dist/src/components/summary/BESummary.js +24 -14
  627. package/dist/src/components/summary/BESummary.js.map +1 -1
  628. package/dist/src/components/summary/BESummaryAddonRow.d.ts +2 -1
  629. package/dist/src/components/summary/BESummaryAddonRow.js +30 -16
  630. package/dist/src/components/summary/BESummaryAddonRow.js.map +1 -1
  631. package/dist/src/components/summary/BESummaryPerkBlock.d.ts +2 -1
  632. package/dist/src/components/summary/BESummaryPerkBlock.js +19 -9
  633. package/dist/src/components/summary/BESummaryPerkBlock.js.map +1 -1
  634. package/dist/src/components/summary/BESummaryPrivacyPolicy.d.ts +2 -1
  635. package/dist/src/components/summary/BESummaryPrivacyPolicy.js +18 -8
  636. package/dist/src/components/summary/BESummaryPrivacyPolicy.js.map +1 -1
  637. package/dist/src/components/summary/BESummaryRoomRow.d.ts +2 -1
  638. package/dist/src/components/summary/BESummaryRoomRow.js +19 -9
  639. package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
  640. package/dist/src/components/summary/TransportDistanceFromHotelBlock.d.ts +2 -1
  641. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js +18 -8
  642. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js.map +1 -1
  643. package/dist/src/containers/PrivateRoute.js.map +1 -1
  644. package/dist/src/contexts/BasketContext/BasketContext.d.ts +0 -1
  645. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +5 -4
  646. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  647. package/dist/src/contexts/BasketContext/BasketContextWrapper.d.ts +1 -1
  648. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +248 -169
  649. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  650. package/dist/src/contexts/BookingEngineContext/BookingEngineContext.d.ts +0 -1
  651. package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.d.ts +1 -1
  652. package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.js +18 -9
  653. package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.js.map +1 -1
  654. package/dist/src/contexts/CompanyContext/CompanyContext.d.ts +0 -1
  655. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.d.ts +2 -2
  656. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +24 -14
  657. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  658. package/dist/src/contexts/ConfirmationFormContext.d.ts +1 -1
  659. package/dist/src/contexts/ConfirmationFormContext.js +19 -9
  660. package/dist/src/contexts/ConfirmationFormContext.js.map +1 -1
  661. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContext.d.ts +0 -1
  662. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextTypes.d.ts +2 -1
  663. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextTypes.js.map +1 -1
  664. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +47 -25
  665. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  666. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepErrorModal.d.ts +2 -1
  667. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepErrorModal.js +17 -7
  668. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepErrorModal.js.map +1 -1
  669. package/dist/src/contexts/ErrorContext.d.ts +1 -1
  670. package/dist/src/contexts/ErrorContext.js +19 -9
  671. package/dist/src/contexts/ErrorContext.js.map +1 -1
  672. package/dist/src/contexts/FullPageEngineContext/EngineBodyLayout.d.ts +2 -1
  673. package/dist/src/contexts/FullPageEngineContext/EngineBodyLayout.js +1 -2
  674. package/dist/src/contexts/FullPageEngineContext/EngineBodyLayout.js.map +1 -1
  675. package/dist/src/contexts/FullPageEngineContext/EnginePageLayout.d.ts +2 -1
  676. package/dist/src/contexts/FullPageEngineContext/EnginePageLayout.js +18 -9
  677. package/dist/src/contexts/FullPageEngineContext/EnginePageLayout.js.map +1 -1
  678. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContext.d.ts +0 -1
  679. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.d.ts +2 -1
  680. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +25 -20
  681. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
  682. package/dist/src/contexts/HotelOverridesContext.d.ts +1 -1
  683. package/dist/src/contexts/HotelOverridesContext.js +17 -7
  684. package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
  685. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.d.ts +1 -2
  686. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js +1 -1
  687. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js.map +1 -1
  688. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +40 -14
  689. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
  690. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContext.d.ts +0 -1
  691. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js +17 -7
  692. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
  693. package/dist/src/contexts/ModalContext.d.ts +1 -1
  694. package/dist/src/contexts/ModalContext.js +18 -9
  695. package/dist/src/contexts/ModalContext.js.map +1 -1
  696. package/dist/src/contexts/NotificationContext.d.ts +1 -1
  697. package/dist/src/contexts/NotificationContext.js +19 -9
  698. package/dist/src/contexts/NotificationContext.js.map +1 -1
  699. package/dist/src/engines/BaseEngine.js +1 -1
  700. package/dist/src/engines/BaseEngine.js.map +1 -1
  701. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.d.ts +1 -4
  702. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
  703. package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.d.ts +2 -1
  704. package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js +1 -3
  705. package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js.map +1 -1
  706. package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngine.js +17 -7
  707. package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngine.js.map +1 -1
  708. package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngineElement.d.ts +2 -1
  709. package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngineElement.js +18 -8
  710. package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngineElement.js.map +1 -1
  711. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.d.ts +21 -19
  712. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +30 -34
  713. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  714. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js.map +1 -1
  715. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.d.ts +2 -1
  716. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js +18 -8
  717. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js.map +1 -1
  718. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.d.ts +2 -1
  719. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js +17 -8
  720. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js.map +1 -1
  721. package/dist/src/events/RoomstayEventManager.js +1 -1
  722. package/dist/src/events/RoomstayEventManager.js.map +1 -1
  723. package/dist/src/events/actions/PlacedBookingEvent.d.ts +1 -1
  724. package/dist/src/events/actions/PlacedBookingEvent.js.map +1 -1
  725. package/dist/src/events/views/CommittedBookingEvent.d.ts +1 -1
  726. package/dist/src/events/views/CommittedBookingEvent.js.map +1 -1
  727. package/dist/src/events/views/RolledBackBookingEvent.d.ts +1 -1
  728. package/dist/src/events/views/RolledBackBookingEvent.js.map +1 -1
  729. package/dist/src/handlers/BasketContextErrorHandler.d.ts +1 -1
  730. package/dist/src/handlers/BasketContextErrorHandler.js.map +1 -1
  731. package/dist/src/handlers/payment/AdyenPaymentHandler.js +17 -7
  732. package/dist/src/handlers/payment/AdyenPaymentHandler.js.map +1 -1
  733. package/dist/src/handlers/payment/PlanpayPaymentHandler.js +17 -7
  734. package/dist/src/handlers/payment/PlanpayPaymentHandler.js.map +1 -1
  735. package/dist/src/handlers/payment/TrueRewardsPaymentHandler.js +8 -5
  736. package/dist/src/handlers/payment/TrueRewardsPaymentHandler.js.map +1 -1
  737. package/dist/src/handlers/payment/VGSMemberPaymentHandler.js.map +1 -1
  738. package/dist/src/handlers/payment/VGSPaymentHandler.js +19 -9
  739. package/dist/src/handlers/payment/VGSPaymentHandler.js.map +1 -1
  740. package/dist/src/hooks/AutoFocusOnSelect.d.ts +23 -2
  741. package/dist/src/hooks/AutoFocusOnSelect.js +3 -3
  742. package/dist/src/hooks/AutoFocusOnSelect.js.map +1 -1
  743. package/dist/src/hooks/BodyClickHook.js.map +1 -1
  744. package/dist/src/hooks/CombineState.d.ts +1 -1
  745. package/dist/src/hooks/ConfirmationQuery.d.ts +4 -0
  746. package/dist/src/hooks/ConfirmationQuery.js +12 -3
  747. package/dist/src/hooks/ConfirmationQuery.js.map +1 -1
  748. package/dist/src/hooks/Currency.js.map +1 -1
  749. package/dist/src/hooks/CurrentHotelHook.js.map +1 -1
  750. package/dist/src/hooks/ElementSortHook.js +17 -7
  751. package/dist/src/hooks/ElementSortHook.js.map +1 -1
  752. package/dist/src/hooks/HistoryConsistentPush.js +1 -2
  753. package/dist/src/hooks/HistoryConsistentPush.js.map +1 -1
  754. package/dist/src/hooks/KeyboardControlOnSelect.d.ts +2 -2
  755. package/dist/src/hooks/KeyboardControlOnSelect.js.map +1 -1
  756. package/dist/src/hooks/LoggedInUserHook.js.map +1 -1
  757. package/dist/src/hooks/Planpay.d.ts +1 -1
  758. package/dist/src/hooks/Query.js +2 -3
  759. package/dist/src/hooks/Query.js.map +1 -1
  760. package/dist/src/hooks/RoomRateAvailabilityListFromApi.js +0 -1
  761. package/dist/src/hooks/RoomRateAvailabilityListFromApi.js.map +1 -1
  762. package/dist/src/hooks/UpdateQueryParameters.js +1 -2
  763. package/dist/src/hooks/UpdateQueryParameters.js.map +1 -1
  764. package/dist/src/hooks/VGSHooks.d.ts +0 -1
  765. package/dist/src/hooks/VGSHooks.js.map +1 -1
  766. package/dist/src/hooks/useCalendarNightStay.js +3 -3
  767. package/dist/src/hooks/useCalendarNightStay.js.map +1 -1
  768. package/dist/src/hooks/useNextStepAction.d.ts +2 -1
  769. package/dist/src/hooks/useNextStepAction.js +21 -11
  770. package/dist/src/hooks/useNextStepAction.js.map +1 -1
  771. package/dist/src/hooks/usePlanpayRawPrice.js.map +1 -1
  772. package/dist/src/hooks/useRateDetails.js.map +1 -1
  773. package/dist/src/hooks/useSearchScopeHook.d.ts +1 -1
  774. package/dist/src/hooks/useSearchScopeHook.js.map +1 -1
  775. package/dist/src/icons/Check.d.ts +2 -1
  776. package/dist/src/index.d.ts +1 -1
  777. package/dist/src/index.js.map +1 -1
  778. package/dist/src/mockApi/AddonAPI.js.map +1 -1
  779. package/dist/src/mockApi/MemberAPI.js +17 -7
  780. package/dist/src/mockApi/MemberAPI.js.map +1 -1
  781. package/dist/src/mockApi/MockAPI.js +5 -5
  782. package/dist/src/mockApi/MockAPI.js.map +1 -1
  783. package/dist/src/mockApi/ReservationAPI.d.ts +1 -1
  784. package/dist/src/mockApi/ReservationAPI.js +18 -8
  785. package/dist/src/mockApi/ReservationAPI.js.map +1 -1
  786. package/dist/src/models/Addon/Addon.d.ts +0 -24
  787. package/dist/src/models/Addon/Addon.js.map +1 -1
  788. package/dist/src/models/Api/HotelDTO.d.ts +3 -2
  789. package/dist/src/models/Api/HotelDTO.js +1 -1
  790. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  791. package/dist/src/models/Api/IEventReservation.d.ts +5 -0
  792. package/dist/src/models/Api/IEventReservation.js.map +1 -1
  793. package/dist/src/models/AppQueryParameters.js +1 -1
  794. package/dist/src/models/AppQueryParameters.js.map +1 -1
  795. package/dist/src/models/BasketAddonRow.js +3 -5
  796. package/dist/src/models/BasketAddonRow.js.map +1 -1
  797. package/dist/src/models/BasketRow.d.ts +63 -9
  798. package/dist/src/models/BasketRow.js +77 -37
  799. package/dist/src/models/BasketRow.js.map +1 -1
  800. package/dist/src/models/BookingWizard/BookingWizardTypes.d.ts +0 -4
  801. package/dist/src/models/BookingWizard/BookingWizardTypes.js.map +1 -1
  802. package/dist/src/models/Client/Hotel/Company.d.ts +2 -0
  803. package/dist/src/models/Client/Hotel/Company.js.map +1 -1
  804. package/dist/src/models/Client/Hotel/DistanceUnitType.types.js +1 -1
  805. package/dist/src/models/Client/Hotel/DistanceUnitType.types.js.map +1 -1
  806. package/dist/src/models/Client/Hotel/Hotel.d.ts +4 -2
  807. package/dist/src/models/Client/Hotel/Hotel.js +1 -1
  808. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  809. package/dist/src/models/Client/Hotel/HotelDataSource.types.js +1 -1
  810. package/dist/src/models/Client/Hotel/HotelDataSource.types.js.map +1 -1
  811. package/dist/src/models/Client/Hotel/WeekdayStartsOn.types.js +1 -1
  812. package/dist/src/models/Client/Hotel/WeekdayStartsOn.types.js.map +1 -1
  813. package/dist/src/models/Confirmation.js +2 -2
  814. package/dist/src/models/Confirmation.js.map +1 -1
  815. package/dist/src/models/CountryCodesAndNumbers.js +3 -3
  816. package/dist/src/models/CountryCodesAndNumbers.js.map +1 -1
  817. package/dist/src/models/Fee.d.ts +1 -9
  818. package/dist/src/models/Fee.js +4 -5
  819. package/dist/src/models/Fee.js.map +1 -1
  820. package/dist/src/models/PaymentCard.js +1 -1
  821. package/dist/src/models/PaymentCard.js.map +1 -1
  822. package/dist/src/models/Room/Filters/BudgetFilter.js.map +1 -1
  823. package/dist/src/models/Room/Filters/RoomTypeFilter.js.map +1 -1
  824. package/dist/src/models/Room/Room.d.ts +2 -0
  825. package/dist/src/models/Room/Room.js.map +1 -1
  826. package/dist/src/models/Room/RoomRate.d.ts +12 -1
  827. package/dist/src/models/Room/RoomRate.js +29 -1
  828. package/dist/src/models/Room/RoomRate.js.map +1 -1
  829. package/dist/src/models/Room/RoomRateNight.d.ts +1 -1
  830. package/dist/src/models/Room/RoomRateNight.js.map +1 -1
  831. package/dist/src/models/RoomstaySession.d.ts +1 -3
  832. package/dist/src/models/RoomstaySession.js.map +1 -1
  833. package/dist/src/pages/account/AccountHome/AccountHomePage.d.ts +2 -1
  834. package/dist/src/pages/account/AccountHome/AccountHomePage.js +18 -8
  835. package/dist/src/pages/account/AccountHome/AccountHomePage.js.map +1 -1
  836. package/dist/src/pages/account/AccountOutlet.d.ts +1 -1
  837. package/dist/src/pages/account/AccountRouter.d.ts +2 -1
  838. package/dist/src/pages/account/AccountRoutes.d.ts +5 -0
  839. package/dist/src/pages/account/AccountRoutes.js +8 -2
  840. package/dist/src/pages/account/AccountRoutes.js.map +1 -1
  841. package/dist/src/pages/account/ChangePassword/AccountChangePasswordPage.d.ts +2 -1
  842. package/dist/src/pages/account/ChangePassword/AccountChangePasswordPage.js +17 -7
  843. package/dist/src/pages/account/ChangePassword/AccountChangePasswordPage.js.map +1 -1
  844. package/dist/src/pages/account/Details/AccountDetailsCardsPage.d.ts +2 -1
  845. package/dist/src/pages/account/Details/AccountDetailsCardsPage.js +17 -7
  846. package/dist/src/pages/account/Details/AccountDetailsCardsPage.js.map +1 -1
  847. package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js +17 -7
  848. package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js.map +1 -1
  849. package/dist/src/pages/account/Details/AccountDetailsProfilePage.d.ts +2 -1
  850. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js +17 -7
  851. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js.map +1 -1
  852. package/dist/src/pages/account/Help/AccountHelpPage.d.ts +2 -1
  853. package/dist/src/pages/account/Help/AccountHelpPage.js +17 -7
  854. package/dist/src/pages/account/Help/AccountHelpPage.js.map +1 -1
  855. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.d.ts +2 -1
  856. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js +38 -13
  857. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
  858. package/dist/src/pages/account/Reservations/AccountReservationsPage.d.ts +2 -1
  859. package/dist/src/pages/account/Reservations/AccountReservationsPage.js +7 -7
  860. package/dist/src/pages/account/Reservations/AccountReservationsPage.js.map +1 -1
  861. package/dist/src/pages/findReservation/FindReservation.d.ts +2 -1
  862. package/dist/src/pages/findReservation/FindReservation.js +19 -9
  863. package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
  864. package/dist/src/pages/findReservation/FindReservationResults.d.ts +2 -1
  865. package/dist/src/pages/findReservation/FindReservationResults.js +20 -10
  866. package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
  867. package/dist/src/pages/findReservation/ReservationRow.d.ts +3 -2
  868. package/dist/src/pages/findReservation/ReservationRow.js +18 -8
  869. package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
  870. package/dist/src/pages/findReservation/ReservationRowModal.d.ts +3 -2
  871. package/dist/src/pages/findReservation/ReservationRowModal.js +18 -8
  872. package/dist/src/pages/findReservation/ReservationRowModal.js.map +1 -1
  873. package/dist/src/pages/hotel/HotelInfo.d.ts +2 -1
  874. package/dist/src/pages/hotel/HotelInfo.js +20 -10
  875. package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
  876. package/dist/src/pages/hotel/HotelInfoPlaceholder.d.ts +2 -1
  877. package/dist/src/pages/hotel/HotelInfoPlaceholder.js +1 -1
  878. package/dist/src/pages/hotel/HotelInfoPlaceholder.js.map +1 -1
  879. package/dist/src/pages/steps/StepAddon/StepAddon.d.ts +1 -1
  880. package/dist/src/pages/steps/StepAddon/StepAddon.js.map +1 -1
  881. package/dist/src/pages/steps/StepAddon/StepAddonComponent.d.ts +2 -1
  882. package/dist/src/pages/steps/StepAddon/StepAddonComponent.js +18 -8
  883. package/dist/src/pages/steps/StepAddon/StepAddonComponent.js.map +1 -1
  884. package/dist/src/pages/steps/StepAddon/StepAddonLoader.d.ts +2 -1
  885. package/dist/src/pages/steps/StepAddon/StepAddonLoader.js +17 -7
  886. package/dist/src/pages/steps/StepAddon/StepAddonLoader.js.map +1 -1
  887. package/dist/src/pages/steps/StepConfirmation/StepConfirmation.js.map +1 -1
  888. package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.d.ts +2 -1
  889. package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js +17 -7
  890. package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js.map +1 -1
  891. package/dist/src/pages/steps/StepConfirmation/StepConfirmationLoader.d.ts +2 -1
  892. package/dist/src/pages/steps/StepConfirmation/StepConfirmationLoader.js +18 -8
  893. package/dist/src/pages/steps/StepConfirmation/StepConfirmationLoader.js.map +1 -1
  894. package/dist/src/pages/steps/StepConfirmation/StepConfirmationValidator.js.map +1 -1
  895. package/dist/src/pages/steps/StepDate/StepDate.d.ts +1 -1
  896. package/dist/src/pages/steps/StepDate/StepDate.js.map +1 -1
  897. package/dist/src/pages/steps/StepDate/StepDateComponent.d.ts +2 -1
  898. package/dist/src/pages/steps/StepDate/StepDateComponent.js +17 -7
  899. package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
  900. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoom.js.map +1 -1
  901. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomComponent.d.ts +2 -1
  902. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomComponent.js +20 -7
  903. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomComponent.js.map +1 -1
  904. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomLoader.d.ts +2 -1
  905. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomLoader.js +18 -8
  906. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomLoader.js.map +1 -1
  907. package/dist/src/pages/steps/StepGuide.d.ts +1 -1
  908. package/dist/src/pages/steps/StepGuide.js +18 -8
  909. package/dist/src/pages/steps/StepGuide.js.map +1 -1
  910. package/dist/src/pages/steps/StepHotel/StepHotel.d.ts +1 -1
  911. package/dist/src/pages/steps/StepHotel/StepHotelComponent.d.ts +2 -1
  912. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js +17 -7
  913. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js.map +1 -1
  914. package/dist/src/pages/steps/StepHotel/StepHotelLoader.d.ts +2 -1
  915. package/dist/src/pages/steps/StepHotel/StepHotelLoader.js +17 -7
  916. package/dist/src/pages/steps/StepHotel/StepHotelLoader.js.map +1 -1
  917. package/dist/src/pages/steps/StepRoom/StepRoom.js.map +1 -1
  918. package/dist/src/pages/steps/StepRoom/StepRoomComponent.d.ts +2 -1
  919. package/dist/src/pages/steps/StepRoom/StepRoomComponent.js +17 -7
  920. package/dist/src/pages/steps/StepRoom/StepRoomComponent.js.map +1 -1
  921. package/dist/src/pages/steps/StepRoom/StepRoomFilters.js +17 -7
  922. package/dist/src/pages/steps/StepRoom/StepRoomFilters.js.map +1 -1
  923. package/dist/src/pages/steps/StepRoom/StepRoomLoader.d.ts +2 -1
  924. package/dist/src/pages/steps/StepRoom/StepRoomLoader.js +18 -8
  925. package/dist/src/pages/steps/StepRoom/StepRoomLoader.js.map +1 -1
  926. package/dist/src/pages/steps/StepRoom/StepRoomValidator.js.map +1 -1
  927. package/dist/src/pages/steps/StepThanks/StepThanks.js.map +1 -1
  928. package/dist/src/pages/steps/StepThanks/StepThanksComponent.d.ts +2 -1
  929. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +25 -10
  930. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
  931. package/dist/src/pages/steps/StepThanks/StepThanksValidator.js.map +1 -1
  932. package/dist/src/providers/CurrencyProvider.js +1 -1
  933. package/dist/src/providers/CurrencyProvider.js.map +1 -1
  934. package/dist/src/providers/DIProvider.d.ts +2 -1
  935. package/dist/src/providers/DIProvider.js +2 -3
  936. package/dist/src/providers/DIProvider.js.map +1 -1
  937. package/dist/src/providers/DistanceProvider.js.map +1 -1
  938. package/dist/src/providers/FeatureProvider.js +3 -1
  939. package/dist/src/providers/FeatureProvider.js.map +1 -1
  940. package/dist/src/providers/FilterProvider.d.ts +1 -1
  941. package/dist/src/providers/FilterProvider.js +3 -3
  942. package/dist/src/providers/FilterProvider.js.map +1 -1
  943. package/dist/src/providers/ImageProvider.js +1 -1
  944. package/dist/src/providers/ImageProvider.js.map +1 -1
  945. package/dist/src/providers/LanguageProvider.js +1 -1
  946. package/dist/src/providers/LanguageProvider.js.map +1 -1
  947. package/dist/src/providers/PromotionProvider.d.ts +1 -1
  948. package/dist/src/providers/PromotionProvider.js.map +1 -1
  949. package/dist/src/providers/RatePillProvider.js.map +1 -1
  950. package/dist/src/providers/RoomSortProvider.js +2 -2
  951. package/dist/src/providers/RoomSortProvider.js.map +1 -1
  952. package/dist/src/providers/RoomstayThemeEngine.js +18 -8
  953. package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
  954. package/dist/src/providers/feature/DerbysoftClickTrackingFeature.js.map +1 -1
  955. package/dist/src/providers/feature/Feature.d.ts +0 -2
  956. package/dist/src/providers/feature/Feature.js +0 -4
  957. package/dist/src/providers/feature/Feature.js.map +1 -1
  958. package/dist/src/providers/feature/GiftCardFeature.d.ts +13 -0
  959. package/dist/src/providers/feature/GiftCardFeature.js +14 -0
  960. package/dist/src/providers/feature/GiftCardFeature.js.map +1 -0
  961. package/dist/src/providers/feature/GuestTitleFieldFeature.js.map +1 -1
  962. package/dist/src/providers/feature/InlineAddonStepFeature.js.map +1 -1
  963. package/dist/src/providers/feature/MemberPortalFeature.js.map +1 -1
  964. package/dist/src/providers/feature/RoomUpsellFeature.d.ts +10 -0
  965. package/dist/src/providers/feature/RoomUpsellFeature.js +10 -0
  966. package/dist/src/providers/feature/RoomUpsellFeature.js.map +1 -1
  967. package/dist/src/providers/storage/SessionProvider.js +0 -2
  968. package/dist/src/providers/storage/SessionProvider.js.map +1 -1
  969. package/dist/src/providers/storage/StorageProvider.d.ts +1 -1
  970. package/dist/src/providers/storage/StorageProvider.js +17 -7
  971. package/dist/src/providers/storage/StorageProvider.js.map +1 -1
  972. package/dist/src/reducers/BasketReducer.js.map +1 -1
  973. package/dist/src/routes/NaturallyProgressedStepRoute.d.ts +2 -1
  974. package/dist/src/stories/BookingWizard.stories.d.ts +3 -3
  975. package/dist/src/stories/Card.stories.d.ts +3 -5
  976. package/dist/src/stories/CardTypeSelect.stories.d.ts +2 -1
  977. package/dist/src/stories/Checkbox.stories.d.ts +2 -1
  978. package/dist/src/stories/ConfirmationModal.stories.d.ts +2 -1
  979. package/dist/src/stories/ConfirmationModal.stories.js +17 -7
  980. package/dist/src/stories/ConfirmationModal.stories.js.map +1 -1
  981. package/dist/src/stories/DateRangePicker.stories.d.ts +5 -4
  982. package/dist/src/stories/DateRangePicker.stories.js +17 -7
  983. package/dist/src/stories/DateRangePicker.stories.js.map +1 -1
  984. package/dist/src/stories/EnhancedPhoneNumberField.stories.d.ts +2 -1
  985. package/dist/src/stories/ErrorModal.stories.d.ts +2 -1
  986. package/dist/src/stories/ErrorModal.stories.js +17 -7
  987. package/dist/src/stories/ErrorModal.stories.js.map +1 -1
  988. package/dist/src/stories/EventCarousel.stories.d.ts +4 -3
  989. package/dist/src/stories/FloatingDateRangePicker.stories.d.ts +4 -3
  990. package/dist/src/stories/FloatingDateRangePicker.stories.js +17 -7
  991. package/dist/src/stories/FloatingDateRangePicker.stories.js.map +1 -1
  992. package/dist/src/stories/ForwardedSelect.stories.d.ts +2 -1
  993. package/dist/src/stories/Icon.stories.js +17 -7
  994. package/dist/src/stories/Icon.stories.js.map +1 -1
  995. package/dist/src/stories/IconNavCard.stories.d.ts +7 -16
  996. package/dist/src/stories/IconText.stories.js +17 -7
  997. package/dist/src/stories/IconText.stories.js.map +1 -1
  998. package/dist/src/stories/NumberIncrement.stories.d.ts +2 -1
  999. package/dist/src/stories/NumberIncrement.stories.js +17 -7
  1000. package/dist/src/stories/NumberIncrement.stories.js.map +1 -1
  1001. package/dist/src/stories/PasswordBox.stories.d.ts +2 -1
  1002. package/dist/src/stories/PaymentCard.stories.d.ts +4 -2
  1003. package/dist/src/stories/PaymentCardInput.stories.d.ts +2 -1
  1004. package/dist/src/stories/PlanpayButton.stories.d.ts +2 -1
  1005. package/dist/src/stories/RadioButton.stories.d.ts +2 -1
  1006. package/dist/src/stories/RadioButtonGroup.stories.d.ts +5 -5
  1007. package/dist/src/stories/RadioButtonGroup.stories.js +17 -7
  1008. package/dist/src/stories/RadioButtonGroup.stories.js.map +1 -1
  1009. package/dist/src/stories/Select.stories.d.ts +5 -6
  1010. package/dist/src/stories/Select.stories.js +17 -7
  1011. package/dist/src/stories/Select.stories.js.map +1 -1
  1012. package/dist/src/stories/SimpleModal.stories.d.ts +2 -1
  1013. package/dist/src/stories/SimpleModal.stories.js +17 -7
  1014. package/dist/src/stories/SimpleModal.stories.js.map +1 -1
  1015. package/dist/src/stories/Slider.stories.d.ts +4 -8
  1016. package/dist/src/stories/Slider.stories.js +17 -7
  1017. package/dist/src/stories/Slider.stories.js.map +1 -1
  1018. package/dist/src/stories/TabbedModal.stories.d.ts +2 -1
  1019. package/dist/src/stories/TabbedModal.stories.js +17 -7
  1020. package/dist/src/stories/TabbedModal.stories.js.map +1 -1
  1021. package/dist/src/stories/Tabs.stories.d.ts +3 -2
  1022. package/dist/src/stories/Text.stories.d.ts +2 -1
  1023. package/dist/src/stories/TextArea.stories.d.ts +2 -1
  1024. package/dist/src/stories/TextBox.stories.d.ts +2 -1
  1025. package/dist/src/translations/Translation.d.ts +0 -2
  1026. package/dist/src/translations/Translation.js +2 -4
  1027. package/dist/src/translations/Translation.js.map +1 -1
  1028. package/dist/src/translations/languages/en-gb.js +0 -2
  1029. package/dist/src/translations/languages/en-gb.js.map +1 -1
  1030. package/dist/src/util/Analytics/Analytics.d.ts +36 -10
  1031. package/dist/src/util/Analytics/Analytics.js +30 -0
  1032. package/dist/src/util/Analytics/Analytics.js.map +1 -1
  1033. package/dist/src/util/Analytics/GoogleAnalytics4.d.ts +10 -3
  1034. package/dist/src/util/Analytics/GoogleAnalytics4.js +21 -4
  1035. package/dist/src/util/Analytics/GoogleAnalytics4.js.map +1 -1
  1036. package/dist/src/util/Analytics/UniversalAnalytics.d.ts +5 -23
  1037. package/dist/src/util/Analytics/UniversalAnalytics.js +24 -5
  1038. package/dist/src/util/Analytics/UniversalAnalytics.js.map +1 -1
  1039. package/dist/src/util/AsyncAuth.js +17 -7
  1040. package/dist/src/util/AsyncAuth.js.map +1 -1
  1041. package/dist/src/util/CalendarHelper.js +1 -1
  1042. package/dist/src/util/CalendarHelper.js.map +1 -1
  1043. package/dist/src/util/Color.d.ts +1 -1
  1044. package/dist/src/util/Color.js +1 -1
  1045. package/dist/src/util/Color.js.map +1 -1
  1046. package/dist/src/util/CurrencyHelper.js.map +1 -1
  1047. package/dist/src/util/DataLayer.d.ts +9 -3
  1048. package/dist/src/util/DataLayer.js +61 -26
  1049. package/dist/src/util/DataLayer.js.map +1 -1
  1050. package/dist/src/util/Debounce.js +2 -3
  1051. package/dist/src/util/Debounce.js.map +1 -1
  1052. package/dist/src/util/DefaultValueManager.js +1 -1
  1053. package/dist/src/util/DefaultValueManager.js.map +1 -1
  1054. package/dist/src/util/DerbysoftPixel.d.ts +1 -1
  1055. package/dist/src/util/DerbysoftPixel.js +2 -2
  1056. package/dist/src/util/DerbysoftPixel.js.map +1 -1
  1057. package/dist/src/util/EventsHelper.d.ts +2 -2
  1058. package/dist/src/util/EventsHelper.js.map +1 -1
  1059. package/dist/src/util/HotelPerkHelper.js +17 -7
  1060. package/dist/src/util/HotelPerkHelper.js.map +1 -1
  1061. package/dist/src/util/ObjectHelper.d.ts +1 -1
  1062. package/dist/src/util/ObjectHelper.js.map +1 -1
  1063. package/dist/src/util/PaymentCardHelper.js.map +1 -1
  1064. package/dist/src/util/RouteManager.js +1 -1
  1065. package/dist/src/util/RouteManager.js.map +1 -1
  1066. package/dist/src/util/StepManager.js +1 -1
  1067. package/dist/src/util/StepManager.js.map +1 -1
  1068. package/dist/src/util/StringHelper.js.map +1 -1
  1069. package/dist/src/util/TextAlignment.js +1 -1
  1070. package/dist/src/util/TextAlignment.js.map +1 -1
  1071. package/dist/src/util/TimeHelper.js.map +1 -1
  1072. package/dist/test.bundle.js +1 -1
  1073. package/dist/tests/offline/entry/config/hotelSpecDefault.d.ts +2 -1
  1074. package/dist/tests/offline/entry/config/hotelSpecDefault.js +0 -1
  1075. package/dist/tests/offline/entry/config/hotelSpecDefault.js.map +1 -1
  1076. package/dist/vendors.bundle.js +1 -1
  1077. package/package.json +13 -5
  1078. package/dist/380.bundle.js +0 -1
  1079. package/dist/456.bundle.js +0 -1
  1080. package/dist/src/components/generic/BookingWizard/BookingWizardRoomGroupSelector/BookingWizardRoomGroupSelector.d.ts +0 -15
  1081. package/dist/src/components/generic/BookingWizard/BookingWizardRoomGroupSelector/BookingWizardRoomGroupSelector.js +0 -135
  1082. package/dist/src/components/generic/BookingWizard/BookingWizardRoomGroupSelector/BookingWizardRoomGroupSelector.js.map +0 -1
  1083. package/dist/src/models/Api/ReservationsDTO.d.ts +0 -80
  1084. package/dist/src/models/Api/ReservationsDTO.js +0 -3
  1085. package/dist/src/models/Api/ReservationsDTO.js.map +0 -1
  1086. package/dist/src/util/TotalCalculator.d.ts +0 -24
  1087. package/dist/src/util/TotalCalculator.js +0 -157
  1088. package/dist/src/util/TotalCalculator.js.map +0 -1
@@ -21,7 +21,7 @@ const getNumericValueFromCurrencyString = (currencyString) => {
21
21
  return parseFloat(currencyString.replace(/[^\d.]/g, ''));
22
22
  };
23
23
  function runCanChangeCurrencyTets(config) {
24
- (0, test_1.test)(`can change currency on ${config.url}`, ({ page }) => __awaiter(this, void 0, void 0, function* () {
24
+ (0, test_1.test)(`can change currency on ${config.url}`, (_a) => __awaiter(this, [_a], void 0, function* ({ page }) {
25
25
  yield page.goto(config.url);
26
26
  const currencySelector = page.locator('header.engine-header .be-select');
27
27
  yield (0, test_1.expect)(currencySelector).toBeVisible();
@@ -1 +1 @@
1
- {"version":3,"file":"canChangeCurrency.spec.js","sourceRoot":"/","sources":["e2e/canChangeCurrency.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAAgD;AAEhD,mEAA0E;AAE1E,IAAA,+CAA2B,EAAC,wBAAwB,CAAC,CAAC;AAEtD,MAAM,UAAU,GAAG;IACf,0BAA0B;IAC1B,0BAA0B;IAC1B,aAAa;CAChB,CAAC;AAEF,MAAM,iCAAiC,GAAG,CAAC,cAAsB,EAAU,EAAE;IACzE,OAAO,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,SAAS,wBAAwB,CAAC,MAA0B;IACxD,IAAA,WAAI,EAAC,0BAA0B,MAAM,CAAC,GAAG,EAAE,EAAE,CAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QAC5D,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE5B,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;QACzE,MAAM,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;QAE7C,MAAM,MAAM,GAAmC,EAAE,CAAC;QAElD,KAAK,MAAM,YAAY,IAAI,UAAU,EAAE;YACnC,MAAM,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAE/B,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;YACjE,MAAM,IAAA,aAAM,EAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;YAE5C,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,YAAY,GAAG,CAAC,CAAC;YACzE,MAAM,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;YAE7B,uEAAuE;YACvE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAEhC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,KAAK,EAAE,CAAC;YAC3F,MAAM,8BAA8B,GAAG,kBAAkB,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;YAErG,MAAM,IAAA,aAAM,EAAC,8BAA8B,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YAE7D,MAAM,KAAK,GAAG,MAAM,8BAA8B,CAAC,WAAW,EAAE,CAAC;YAEjE,IAAI,CAAC,KAAK,EAAE;gBACR,OAAO,CAAC,KAAK,CAAC,qCAAqC,YAAY,EAAE,CAAC,CAAC;gBACnE,WAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,OAAO;aACV;YAED,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAEpC,OAAO,CAAC,GAAG,CAAC,aAAa,YAAY,YAAY,KAAK,EAAE,CAAC,CAAC;SAC7D;QAED,MAAM,QAAQ,GAAG,iCAAiC,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACvF,MAAM,QAAQ,GAAG,iCAAiC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,iCAAiC,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAEvF,6DAA6D;QAC7D,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;QACxD,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;IAC5D,CAAC,CAAA,CAAC,CAAC;AACP,CAAC;AAAA,CAAC","sourcesContent":["import { test, expect } from '@playwright/test';\nimport { FrontendTestConfig } from './frontendTestConfigs';\nimport { runPlaywrightTestWithConfig } from './helpers/playwrightHelpers';\n\nrunPlaywrightTestWithConfig(runCanChangeCurrencyTets);\n\nconst currencies = [\n 'IDR - Indonesian Rupiahs',\n 'AUD - Australian Dollars',\n 'EUR - Euros',\n];\n\nconst getNumericValueFromCurrencyString = (currencyString: string): number => {\n return parseFloat(currencyString.replace(/[^\\d.]/g, ''));\n};\n\nfunction runCanChangeCurrencyTets(config: FrontendTestConfig) {\n test(`can change currency on ${config.url}`, async ({ page }) => {\n await page.goto(config.url);\n\n const currencySelector = page.locator('header.engine-header .be-select');\n await expect(currencySelector).toBeVisible();\n\n const prices: { [currency: string]: string } = {};\n\n for (const currencyName of currencies) {\n await currencySelector.click();\n\n const currencyOptions = page.locator('.rs-select--suggest-list');\n await expect(currencyOptions).toBeVisible();\n\n const currencyOption = currencyOptions.locator(`text=\"${currencyName}\"`);\n await expect(currencyOption).toBeVisible();\n await currencyOption.click();\n \n // todo: Find a better way to check that the currency values are ready.\n await page.waitForTimeout(1000);\n\n const firstAvailableDate = page.locator('.diji-calendar-month--item.--selectable').first();\n const firstAvailableDatePriceElement = firstAvailableDate.locator('.diji-calendar-month--item-cost');\n\n await expect(firstAvailableDatePriceElement).not.toBeEmpty();\n\n const price = await firstAvailableDatePriceElement.textContent();\n\n if (!price) {\n console.error(`Failed to get price for currency: ${currencyName}`);\n test.fail();\n return;\n }\n\n prices[currencyName] = price.trim();\n\n console.log(`Currency: ${currencyName}, Price: ${price}`);\n }\n\n const idrValue = getNumericValueFromCurrencyString(prices['IDR - Indonesian Rupiahs']);\n const eurValue = getNumericValueFromCurrencyString(prices['EUR - Euros']);\n const audValue = getNumericValueFromCurrencyString(prices['AUD - Australian Dollars']);\n \n // This assumes there's no drastic changes in currency rates!\n expect(idrValue).toBeGreaterThan(audValue); // IDR > AUD\n expect(audValue).toBeGreaterThan(eurValue); // AUD > EUR\n });\n};\n"]}
1
+ {"version":3,"file":"canChangeCurrency.spec.js","sourceRoot":"/","sources":["e2e/canChangeCurrency.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAAgD;AAEhD,mEAA0E;AAE1E,IAAA,+CAA2B,EAAC,wBAAwB,CAAC,CAAC;AAEtD,MAAM,UAAU,GAAG;IACf,0BAA0B;IAC1B,0BAA0B;IAC1B,aAAa;CAChB,CAAC;AAEF,MAAM,iCAAiC,GAAG,CAAC,cAAsB,EAAU,EAAE;IACzE,OAAO,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,SAAS,wBAAwB,CAAC,MAA0B;IACxD,IAAA,WAAI,EAAC,0BAA0B,MAAM,CAAC,GAAG,EAAE,EAAE,KAAiB,EAAE,0CAAZ,EAAE,IAAI,EAAE;QACxD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE5B,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;QACzE,MAAM,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;QAE7C,MAAM,MAAM,GAAmC,EAAE,CAAC;QAElD,KAAK,MAAM,YAAY,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAE/B,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;YACjE,MAAM,IAAA,aAAM,EAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;YAE5C,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,YAAY,GAAG,CAAC,CAAC;YACzE,MAAM,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;YAE7B,uEAAuE;YACvE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAEhC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,KAAK,EAAE,CAAC;YAC3F,MAAM,8BAA8B,GAAG,kBAAkB,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;YAErG,MAAM,IAAA,aAAM,EAAC,8BAA8B,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YAE7D,MAAM,KAAK,GAAG,MAAM,8BAA8B,CAAC,WAAW,EAAE,CAAC;YAEjE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,qCAAqC,YAAY,EAAE,CAAC,CAAC;gBACnE,WAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,OAAO;YACX,CAAC;YAED,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAEpC,OAAO,CAAC,GAAG,CAAC,aAAa,YAAY,YAAY,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,QAAQ,GAAG,iCAAiC,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACvF,MAAM,QAAQ,GAAG,iCAAiC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,iCAAiC,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAEvF,6DAA6D;QAC7D,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;QACxD,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;IAC5D,CAAC,CAAA,CAAC,CAAC;AACP,CAAC;AAAA,CAAC","sourcesContent":["import { test, expect } from '@playwright/test';\nimport { FrontendTestConfig } from './frontendTestConfigs';\nimport { runPlaywrightTestWithConfig } from './helpers/playwrightHelpers';\n\nrunPlaywrightTestWithConfig(runCanChangeCurrencyTets);\n\nconst currencies = [\n 'IDR - Indonesian Rupiahs',\n 'AUD - Australian Dollars',\n 'EUR - Euros',\n];\n\nconst getNumericValueFromCurrencyString = (currencyString: string): number => {\n return parseFloat(currencyString.replace(/[^\\d.]/g, ''));\n};\n\nfunction runCanChangeCurrencyTets(config: FrontendTestConfig) {\n test(`can change currency on ${config.url}`, async ({ page }) => {\n await page.goto(config.url);\n\n const currencySelector = page.locator('header.engine-header .be-select');\n await expect(currencySelector).toBeVisible();\n\n const prices: { [currency: string]: string } = {};\n\n for (const currencyName of currencies) {\n await currencySelector.click();\n\n const currencyOptions = page.locator('.rs-select--suggest-list');\n await expect(currencyOptions).toBeVisible();\n\n const currencyOption = currencyOptions.locator(`text=\"${currencyName}\"`);\n await expect(currencyOption).toBeVisible();\n await currencyOption.click();\n \n // todo: Find a better way to check that the currency values are ready.\n await page.waitForTimeout(1000);\n\n const firstAvailableDate = page.locator('.diji-calendar-month--item.--selectable').first();\n const firstAvailableDatePriceElement = firstAvailableDate.locator('.diji-calendar-month--item-cost');\n\n await expect(firstAvailableDatePriceElement).not.toBeEmpty();\n\n const price = await firstAvailableDatePriceElement.textContent();\n\n if (!price) {\n console.error(`Failed to get price for currency: ${currencyName}`);\n test.fail();\n return;\n }\n\n prices[currencyName] = price.trim();\n\n console.log(`Currency: ${currencyName}, Price: ${price}`);\n }\n\n const idrValue = getNumericValueFromCurrencyString(prices['IDR - Indonesian Rupiahs']);\n const eurValue = getNumericValueFromCurrencyString(prices['EUR - Euros']);\n const audValue = getNumericValueFromCurrencyString(prices['AUD - Australian Dollars']);\n \n // This assumes there's no drastic changes in currency rates!\n expect(idrValue).toBeGreaterThan(audValue); // IDR > AUD\n expect(audValue).toBeGreaterThan(eurValue); // AUD > EUR\n });\n};\n"]}
@@ -14,7 +14,7 @@ const frontendTestData_1 = require("./frontendTestData");
14
14
  const playwrightHelpers_1 = require("./helpers/playwrightHelpers");
15
15
  (0, playwrightHelpers_1.runPlaywrightTestWithConfig)(runCanCheckoutTets);
16
16
  function runCanCheckoutTets(config) {
17
- (0, test_1.test)(`can checkout on ${config.url}`, ({ page }) => __awaiter(this, void 0, void 0, function* () {
17
+ (0, test_1.test)(`can checkout on ${config.url}`, (_a) => __awaiter(this, [_a], void 0, function* ({ page }) {
18
18
  // This test can take a while to complete if we need to check various different date ranges to find
19
19
  // an available check-in and check-out date, so we need to increase the timeout.
20
20
  test_1.test.setTimeout(120000); // 2 minutes.
@@ -69,8 +69,8 @@ function runCanCheckoutTets(config) {
69
69
  yield page.waitForTimeout(1000);
70
70
  }));
71
71
  }
72
- function selectAvailableDates(page, maxRetries = 5) {
73
- return __awaiter(this, void 0, void 0, function* () {
72
+ function selectAvailableDates(page_1) {
73
+ return __awaiter(this, arguments, void 0, function* (page, maxRetries = 5) {
74
74
  for (let attempt = 0; attempt < maxRetries; attempt++) {
75
75
  // Choose the first available check-in date.
76
76
  const checkInDateElement = page.locator('.diji-calendar-month--item.--selectable').first();
@@ -1 +1 @@
1
- {"version":3,"file":"canCheckout.spec.js","sourceRoot":"/","sources":["e2e/canCheckout.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect, Locator } from '@playwright/test';\nimport { FrontendTestConfig } from './frontendTestConfigs';\nimport { CheckoutTestData, defaultCheckoutTestData } from './frontendTestData';\nimport { runPlaywrightTestWithConfig } from './helpers/playwrightHelpers';\n\nrunPlaywrightTestWithConfig(runCanCheckoutTets);\n\nfunction runCanCheckoutTets(config: FrontendTestConfig) {\n test(`can checkout on ${config.url}`, async ({ page }) => {\n // This test can take a while to complete if we need to check various different date ranges to find\n // an available check-in and check-out date, so we need to increase the timeout.\n test.setTimeout(120000); // 2 minutes.\n await page.goto(config.url);\n\n let foundAvailableDates = false;\n\n await test.step('Select available dates', async () => {\n foundAvailableDates = await selectAvailableDates(page);\n if (!foundAvailableDates) {\n console.error('Unable to find available dates after maximum retries.');\n test.fail();\n return;\n }\n });\n\n await test.step('Proceed to confirmation step', async () => {\n await proceedToConfirmationStep(page);\n });\n\n if (!config.proceedWithPayment) {\n console.log('Test completed up to the confirmation step.');\n return;\n } else {\n console.log('Continuing to payment step.');\n }\n\n await test.step('Fill contact information', async () => {\n await fillContactInfo(page, defaultCheckoutTestData);\n });\n\n await test.step('Fill payment information', async () => {\n await fillPaymentInformation(page, defaultCheckoutTestData);\n });\n\n await test.step('Check Privacy Policy agreement', async () => {\n // Locate the hidden checkbox using the label text\n const hiddenCheckbox = page.locator('label:has-text(\"I have understood and agree to the Booking Conditions\") input[type=\"checkbox\"]');\n\n // We can't click the actual checkbox because it's hidden (width and height of 0), so we need to find the\n // fake checkbox and click that instead.\n const fakeCheckbox = hiddenCheckbox.locator('~ span');\n if ((await fakeCheckbox.count()) === 0) {\n console.log('Privacy Policy checkbox does not exist. Skipping step.');\n return;\n }\n\n // Can't use the normal Playwright way of clicking something, I think it's because it's the ::before pseudo-element\n // that's actually clickable.\n await fakeCheckbox.evaluate((element: HTMLElement) => element.click());\n });\n\n await test.step('Submit the reservation', async () => {\n const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });\n await expect(confirmReservationButton).toBeVisible();\n await confirmReservationButton.click();\n });\n\n await test.step('Verify booking confirmation', async () => {\n await verifyBookingConfirmation(page, defaultCheckoutTestData);\n });\n\n await page.waitForTimeout(1000);\n });\n}\n\nasync function selectAvailableDates(page: any, maxRetries: number = 5): Promise<boolean> {\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n // Choose the first available check-in date.\n const checkInDateElement = page.locator('.diji-calendar-month--item.--selectable').first();\n await expect(checkInDateElement).toBeVisible();\n await checkInDateElement.click();\n\n let checkOutDateElement: Locator;\n if (attempt === maxRetries - 1) {\n // If this is the last attempt, try a 1-night stay (this has a higher success rate).\n checkOutDateElement = page.locator('.diji-calendar-month--item.--selectable:not(.--selected)').first();\n } else {\n // Choose a random available check-out date.\n const checkOutDateElements = await page.locator('.diji-calendar-month--item.--selectable:not(.--selected)').all();\n const randomIndex = Math.floor(Math.random() * checkOutDateElements.length);\n checkOutDateElement = checkOutDateElements[randomIndex];\n }\n\n await expect(checkOutDateElement).toBeVisible();\n await checkOutDateElement.click();\n\n // TODO: Instead of waiting for timeout, wait for the loading indicators on the other dates to disappear.\n // Context: After choosing checkout date, the loading indicators appear for the dates following the checkout\n // date. If we click 'Check Availability', we seem to briefly see an error message. This doesn't actually\n // make the tests fail though. Keeping this in here in case it's indicative of an issue with RoomStay itself.\n // The error is an \"Oh no, something went wrong\" message and shows the select room bar without any dates in it.\n // The error quickly goes away though.\n await page.waitForTimeout(1000);\n\n // Click the 'Check Availability' button.\n const checkAvailabilityButton = page.getByRole('button', { name: 'Check Availability' });\n await expect(checkAvailabilityButton).not.toBeDisabled();\n await checkAvailabilityButton.click();\n\n // Check for error message.\n const errorMessage = await page.waitForSelector('text=Please check your dates and', { timeout: 5000 }).catch(() => null);\n if (errorMessage) {\n console.log(`Error message found on attempt ${attempt + 1}. Retrying with different dates.`);\n const newSearchButton = page.getByRole('button', { name: 'New Search' });\n await expect(newSearchButton).toBeVisible();\n await newSearchButton.click();\n } else {\n return true;\n }\n }\n return false;\n}\n\nasync function proceedToConfirmationStep(page: any) {\n // Click the 'View Rates' button.\n const viewRatesNowButton = page.getByRole('button', { name: 'View rates now' }).first();\n await expect(viewRatesNowButton).toBeVisible();\n await expect(viewRatesNowButton).not.toBeDisabled();\n await viewRatesNowButton.click();\n\n // Click the first 'Book Now' button.\n const firstBookNowButton = page.getByRole('button', { name: 'Book Now' }).first();\n await expect(firstBookNowButton).toBeVisible();\n await firstBookNowButton.click();\n\n // Confirm that the 'Added xx' toast notification is visible.\n const addedRoomNotification = page.locator('.c-notification__inner');\n await expect(addedRoomNotification).toBeVisible();\n await expect(addedRoomNotification).toContainText('Added');\n\n // A bit hacky... Need a better way to check the current step.\n try {\n const isAddonsStep = await page.waitForSelector('.step-selector__item.is-current p.text-body:has-text(\"Add-Ons\")', { timeout: 1000 });\n if (isAddonsStep) {\n const nextButton = page.getByRole('button', { name: 'Next Step' }).first();\n await expect(nextButton).toBeVisible();\n await nextButton.click();\n }\n } catch (error) {\n console.log('Add-ons step not found, continuing.');\n }\n\n const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });\n await expect(confirmReservationButton).toBeVisible();\n await expect(confirmReservationButton).toHaveText('Confirm Reservation');\n}\n\nasync function fillContactInfo(page: any, data: CheckoutTestData) {\n // Fill Contact Info fields\n await page.fill('input[name=\"userProfiles.0.Forename\"]', data.firstName);\n await page.fill('input[name=\"userProfiles.0.Surname\"]', data.lastName);\n await page.fill('input[name=\"userProfiles.0.Email\"]', data.email);\n await page.fill('input[name=\"userProfiles.0.Phone\"]', data.phone);\n await page.fill('input[name=\"userProfiles.0.Address\"]', data.address);\n await page.fill('input[name=\"userProfiles.0.City\"]', data.city);\n await page.fill('input[name=\"userProfiles.0.PostCode\"]', data.zipCode);\n\n // Country selector\n await page.fill('.rs-enhanced-country-field--search input', data.country);\n await page.waitForSelector('.rs-enhanced-country-field--suggest-list-country', { state: 'visible' });\n await page.click('.rs-enhanced-country-field--suggest-list-country-name'); // Assuming there's only one result...\n}\n\nasync function fillPaymentInformation(page: any, data: CheckoutTestData) {\n // Fill Payment Information. Each of these fields is within their own secure iframe that we need to enter first.\n\n const cardNumberFrame = await (await page.waitForSelector('iframe[title=\"Secure card number input frame\"]')).contentFrame();\n if (cardNumberFrame) {\n await cardNumberFrame.fill('input[aria-label=\"Card Number Input\"]', data.cardNumber);\n }\n\n const cardExpiryFrame = await (await page.waitForSelector('iframe[title=\"Secure card expiration date input frame\"]')).contentFrame();\n if (cardExpiryFrame) {\n await cardExpiryFrame.fill('input[aria-label=\"Card expiration date\"]', data.cardExpiry);\n }\n\n const cardCvvFrame = await (await page.waitForSelector('iframe[title=\"Secure card security code input frame\"]')).contentFrame();\n if (cardCvvFrame) {\n await cardCvvFrame.fill('input[aria-label=\"Card Security Code\"]', data.cardCVC);\n }\n\n const cardNameFrame = await (await page.waitForSelector('iframe[title=\"Secure text input frame\"]')).contentFrame();\n if (cardNameFrame) {\n await cardNameFrame.fill('input[aria-label=\"Text input\"]', `${data.firstName} ${data.lastName}`);\n }\n}\n\nasync function verifyBookingConfirmation(page: any, data: CheckoutTestData) {\n // We should now be on the 'Thanks' step.\n await page.waitForSelector('.step-selector__item.is-current p.text-body:has-text(\"Thanks\")', { timeout: 3000 });\n\n // There should be a message thanking us for our booking.\n const thankYouMessage = page.locator('h3:has-text(\"Thank you\")');\n await expect(thankYouMessage).toBeVisible();\n\n // Click the 'More Details' button to show a modal with our booking details.\n const moreDetailsButton = page.getByRole('button', { name: 'More Details' });\n await expect(moreDetailsButton).toBeVisible();\n await moreDetailsButton.click();\n\n const modal = page.locator('div[class*=\"roomstay-modal\"]').first();\n await expect(modal).toBeVisible();\n\n // The modal should contain our name and email address.\n await expect(modal.locator(`text=${data.firstName} ${data.lastName}`)).toBeVisible();\n await expect(modal.locator(`text=${data.email}`)).toBeVisible();\n}"]}
1
+ {"version":3,"file":"canCheckout.spec.js","sourceRoot":"/","sources":["e2e/canCheckout.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect, Locator } from '@playwright/test';\nimport { FrontendTestConfig } from './frontendTestConfigs';\nimport { CheckoutTestData, defaultCheckoutTestData } from './frontendTestData';\nimport { runPlaywrightTestWithConfig } from './helpers/playwrightHelpers';\n\nrunPlaywrightTestWithConfig(runCanCheckoutTets);\n\nfunction runCanCheckoutTets(config: FrontendTestConfig) {\n test(`can checkout on ${config.url}`, async ({ page }) => {\n // This test can take a while to complete if we need to check various different date ranges to find\n // an available check-in and check-out date, so we need to increase the timeout.\n test.setTimeout(120000); // 2 minutes.\n await page.goto(config.url);\n\n let foundAvailableDates = false;\n\n await test.step('Select available dates', async () => {\n foundAvailableDates = await selectAvailableDates(page);\n if (!foundAvailableDates) {\n console.error('Unable to find available dates after maximum retries.');\n test.fail();\n return;\n }\n });\n\n await test.step('Proceed to confirmation step', async () => {\n await proceedToConfirmationStep(page);\n });\n\n if (!config.proceedWithPayment) {\n console.log('Test completed up to the confirmation step.');\n return;\n } else {\n console.log('Continuing to payment step.');\n }\n\n await test.step('Fill contact information', async () => {\n await fillContactInfo(page, defaultCheckoutTestData);\n });\n\n await test.step('Fill payment information', async () => {\n await fillPaymentInformation(page, defaultCheckoutTestData);\n });\n\n await test.step('Check Privacy Policy agreement', async () => {\n // Locate the hidden checkbox using the label text\n const hiddenCheckbox = page.locator('label:has-text(\"I have understood and agree to the Booking Conditions\") input[type=\"checkbox\"]');\n\n // We can't click the actual checkbox because it's hidden (width and height of 0), so we need to find the\n // fake checkbox and click that instead.\n const fakeCheckbox = hiddenCheckbox.locator('~ span');\n if ((await fakeCheckbox.count()) === 0) {\n console.log('Privacy Policy checkbox does not exist. Skipping step.');\n return;\n }\n\n // Can't use the normal Playwright way of clicking something, I think it's because it's the ::before pseudo-element\n // that's actually clickable.\n await fakeCheckbox.evaluate((element: HTMLElement) => element.click());\n });\n\n await test.step('Submit the reservation', async () => {\n const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });\n await expect(confirmReservationButton).toBeVisible();\n await confirmReservationButton.click();\n });\n\n await test.step('Verify booking confirmation', async () => {\n await verifyBookingConfirmation(page, defaultCheckoutTestData);\n });\n\n await page.waitForTimeout(1000);\n });\n}\n\nasync function selectAvailableDates(page: any, maxRetries: number = 5): Promise<boolean> {\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n // Choose the first available check-in date.\n const checkInDateElement = page.locator('.diji-calendar-month--item.--selectable').first();\n await expect(checkInDateElement).toBeVisible();\n await checkInDateElement.click();\n\n let checkOutDateElement: Locator;\n if (attempt === maxRetries - 1) {\n // If this is the last attempt, try a 1-night stay (this has a higher success rate).\n checkOutDateElement = page.locator('.diji-calendar-month--item.--selectable:not(.--selected)').first();\n } else {\n // Choose a random available check-out date.\n const checkOutDateElements = await page.locator('.diji-calendar-month--item.--selectable:not(.--selected)').all();\n const randomIndex = Math.floor(Math.random() * checkOutDateElements.length);\n checkOutDateElement = checkOutDateElements[randomIndex];\n }\n\n await expect(checkOutDateElement).toBeVisible();\n await checkOutDateElement.click();\n\n // TODO: Instead of waiting for timeout, wait for the loading indicators on the other dates to disappear.\n // Context: After choosing checkout date, the loading indicators appear for the dates following the checkout\n // date. If we click 'Check Availability', we seem to briefly see an error message. This doesn't actually\n // make the tests fail though. Keeping this in here in case it's indicative of an issue with RoomStay itself.\n // The error is an \"Oh no, something went wrong\" message and shows the select room bar without any dates in it.\n // The error quickly goes away though.\n await page.waitForTimeout(1000);\n\n // Click the 'Check Availability' button.\n const checkAvailabilityButton = page.getByRole('button', { name: 'Check Availability' });\n await expect(checkAvailabilityButton).not.toBeDisabled();\n await checkAvailabilityButton.click();\n\n // Check for error message.\n const errorMessage = await page.waitForSelector('text=Please check your dates and', { timeout: 5000 }).catch(() => null);\n if (errorMessage) {\n console.log(`Error message found on attempt ${attempt + 1}. Retrying with different dates.`);\n const newSearchButton = page.getByRole('button', { name: 'New Search' });\n await expect(newSearchButton).toBeVisible();\n await newSearchButton.click();\n } else {\n return true;\n }\n }\n return false;\n}\n\nasync function proceedToConfirmationStep(page: any) {\n // Click the 'View Rates' button.\n const viewRatesNowButton = page.getByRole('button', { name: 'View rates now' }).first();\n await expect(viewRatesNowButton).toBeVisible();\n await expect(viewRatesNowButton).not.toBeDisabled();\n await viewRatesNowButton.click();\n\n // Click the first 'Book Now' button.\n const firstBookNowButton = page.getByRole('button', { name: 'Book Now' }).first();\n await expect(firstBookNowButton).toBeVisible();\n await firstBookNowButton.click();\n\n // Confirm that the 'Added xx' toast notification is visible.\n const addedRoomNotification = page.locator('.c-notification__inner');\n await expect(addedRoomNotification).toBeVisible();\n await expect(addedRoomNotification).toContainText('Added');\n\n // A bit hacky... Need a better way to check the current step.\n try {\n const isAddonsStep = await page.waitForSelector('.step-selector__item.is-current p.text-body:has-text(\"Add-Ons\")', { timeout: 1000 });\n if (isAddonsStep) {\n const nextButton = page.getByRole('button', { name: 'Next Step' }).first();\n await expect(nextButton).toBeVisible();\n await nextButton.click();\n }\n } catch (error) {\n console.log('Add-ons step not found, continuing.');\n }\n\n const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });\n await expect(confirmReservationButton).toBeVisible();\n await expect(confirmReservationButton).toHaveText('Confirm Reservation');\n}\n\nasync function fillContactInfo(page: any, data: CheckoutTestData) {\n // Fill Contact Info fields\n await page.fill('input[name=\"userProfiles.0.Forename\"]', data.firstName);\n await page.fill('input[name=\"userProfiles.0.Surname\"]', data.lastName);\n await page.fill('input[name=\"userProfiles.0.Email\"]', data.email);\n await page.fill('input[name=\"userProfiles.0.Phone\"]', data.phone);\n await page.fill('input[name=\"userProfiles.0.Address\"]', data.address);\n await page.fill('input[name=\"userProfiles.0.City\"]', data.city);\n await page.fill('input[name=\"userProfiles.0.PostCode\"]', data.zipCode);\n\n // Country selector\n await page.fill('.rs-enhanced-country-field--search input', data.country);\n await page.waitForSelector('.rs-enhanced-country-field--suggest-list-country', { state: 'visible' });\n await page.click('.rs-enhanced-country-field--suggest-list-country-name'); // Assuming there's only one result...\n}\n\nasync function fillPaymentInformation(page: any, data: CheckoutTestData) {\n // Fill Payment Information. Each of these fields is within their own secure iframe that we need to enter first.\n\n const cardNumberFrame = await (await page.waitForSelector('iframe[title=\"Secure card number input frame\"]')).contentFrame();\n if (cardNumberFrame) {\n await cardNumberFrame.fill('input[aria-label=\"Card Number Input\"]', data.cardNumber);\n }\n\n const cardExpiryFrame = await (await page.waitForSelector('iframe[title=\"Secure card expiration date input frame\"]')).contentFrame();\n if (cardExpiryFrame) {\n await cardExpiryFrame.fill('input[aria-label=\"Card expiration date\"]', data.cardExpiry);\n }\n\n const cardCvvFrame = await (await page.waitForSelector('iframe[title=\"Secure card security code input frame\"]')).contentFrame();\n if (cardCvvFrame) {\n await cardCvvFrame.fill('input[aria-label=\"Card Security Code\"]', data.cardCVC);\n }\n\n const cardNameFrame = await (await page.waitForSelector('iframe[title=\"Secure text input frame\"]')).contentFrame();\n if (cardNameFrame) {\n await cardNameFrame.fill('input[aria-label=\"Text input\"]', `${data.firstName} ${data.lastName}`);\n }\n}\n\nasync function verifyBookingConfirmation(page: any, data: CheckoutTestData) {\n // We should now be on the 'Thanks' step.\n await page.waitForSelector('.step-selector__item.is-current p.text-body:has-text(\"Thanks\")', { timeout: 3000 });\n\n // There should be a message thanking us for our booking.\n const thankYouMessage = page.locator('h3:has-text(\"Thank you\")');\n await expect(thankYouMessage).toBeVisible();\n\n // Click the 'More Details' button to show a modal with our booking details.\n const moreDetailsButton = page.getByRole('button', { name: 'More Details' });\n await expect(moreDetailsButton).toBeVisible();\n await moreDetailsButton.click();\n\n const modal = page.locator('div[class*=\"roomstay-modal\"]').first();\n await expect(modal).toBeVisible();\n\n // The modal should contain our name and email address.\n await expect(modal.locator(`text=${data.firstName} ${data.lastName}`)).toBeVisible();\n await expect(modal.locator(`text=${data.email}`)).toBeVisible();\n}"]}
@@ -13,7 +13,7 @@ const test_1 = require("@playwright/test");
13
13
  const playwrightHelpers_1 = require("./helpers/playwrightHelpers");
14
14
  (0, playwrightHelpers_1.runPlaywrightTestWithConfig)(runCanViewReservationsPageTest);
15
15
  function runCanViewReservationsPageTest(config) {
16
- (0, test_1.test)(`can view find reservations page on ${config.url}`, ({ page }) => __awaiter(this, void 0, void 0, function* () {
16
+ (0, test_1.test)(`can view find reservations page on ${config.url}`, (_a) => __awaiter(this, [_a], void 0, function* ({ page }) {
17
17
  yield page.goto(config.url);
18
18
  // Click through to the 'Hotel info' page.
19
19
  const findReservationsLink = page.getByRole('link', { name: 'Find reservations' });
@@ -1 +1 @@
1
- {"version":3,"file":"canViewFindReservationsPage.spec.js","sourceRoot":"/","sources":["e2e/canViewFindReservationsPage.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAAgD;AAEhD,mEAA0E;AAE1E,IAAA,+CAA2B,EAAC,8BAA8B,CAAC,CAAC;AAE5D,SAAS,8BAA8B,CAAC,MAA0B;IAC9D,IAAA,WAAI,EAAC,sCAAsC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QACxE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE5B,0CAA0C;QAC1C,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACnF,MAAM,IAAA,aAAM,EAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAEnC,qDAAqD;QACrD,MAAM,0BAA0B,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAChG,MAAM,IAAA,aAAM,EAAC,0BAA0B,CAAC,CAAC,WAAW,EAAE,CAAC;QAEvD,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACrF,MAAM,IAAA,aAAM,EAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;QAElD,oCAAoC;QAEpC,uDAAuD;QACvD,MAAM,6BAA6B,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC;QACvG,MAAM,IAAA,aAAM,EAAC,6BAA6B,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,6BAA6B,CAAC,KAAK,EAAE,CAAC;QAC5C,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACtF,MAAM,IAAA,aAAM,EAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,CAAC,CAAA,CAAC,CAAC;AACP,CAAC;AAAA,CAAC","sourcesContent":["import { test, expect } from '@playwright/test';\nimport { FrontendTestConfig } from './frontendTestConfigs';\nimport { runPlaywrightTestWithConfig } from './helpers/playwrightHelpers';\n\nrunPlaywrightTestWithConfig(runCanViewReservationsPageTest);\n\nfunction runCanViewReservationsPageTest(config: FrontendTestConfig) {\n test(`can view find reservations page on ${config.url}`, async ({ page }) => {\n await page.goto(config.url);\n\n // Click through to the 'Hotel info' page.\n const findReservationsLink = page.getByRole('link', { name: 'Find reservations' });\n await expect(findReservationsLink).toBeVisible();\n await findReservationsLink.click();\n \n // Verify that the expected elements are on the page.\n const findYourReservationHeading = page.getByRole('heading', { name: 'Find your reservation' });\n await expect(findYourReservationHeading).toBeVisible();\n \n const findReservationButton = page.getByRole('button', { name: 'Find Reservation' });\n await expect(findReservationButton).toBeVisible();\n \n // todo: Maybe test form validation?\n \n // Verify that we can go back to the main booking page.\n const backToCheckAvailabilityButton = page.getByRole('button', { name: 'Back to check availability' });\n await expect(backToCheckAvailabilityButton).toBeVisible();\n await backToCheckAvailabilityButton.click();\n const selectYourDateHeading = page.getByRole('heading', { name: 'Select your date' });\n await expect(selectYourDateHeading).toBeVisible();\n });\n};\n"]}
1
+ {"version":3,"file":"canViewFindReservationsPage.spec.js","sourceRoot":"/","sources":["e2e/canViewFindReservationsPage.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAAgD;AAEhD,mEAA0E;AAE1E,IAAA,+CAA2B,EAAC,8BAA8B,CAAC,CAAC;AAE5D,SAAS,8BAA8B,CAAC,MAA0B;IAC9D,IAAA,WAAI,EAAC,sCAAsC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAiB,EAAE,0CAAZ,EAAE,IAAI,EAAE;QACpE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE5B,0CAA0C;QAC1C,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACnF,MAAM,IAAA,aAAM,EAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAEnC,qDAAqD;QACrD,MAAM,0BAA0B,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAChG,MAAM,IAAA,aAAM,EAAC,0BAA0B,CAAC,CAAC,WAAW,EAAE,CAAC;QAEvD,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACrF,MAAM,IAAA,aAAM,EAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;QAElD,oCAAoC;QAEpC,uDAAuD;QACvD,MAAM,6BAA6B,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC;QACvG,MAAM,IAAA,aAAM,EAAC,6BAA6B,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,6BAA6B,CAAC,KAAK,EAAE,CAAC;QAC5C,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACtF,MAAM,IAAA,aAAM,EAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,CAAC,CAAA,CAAC,CAAC;AACP,CAAC;AAAA,CAAC","sourcesContent":["import { test, expect } from '@playwright/test';\nimport { FrontendTestConfig } from './frontendTestConfigs';\nimport { runPlaywrightTestWithConfig } from './helpers/playwrightHelpers';\n\nrunPlaywrightTestWithConfig(runCanViewReservationsPageTest);\n\nfunction runCanViewReservationsPageTest(config: FrontendTestConfig) {\n test(`can view find reservations page on ${config.url}`, async ({ page }) => {\n await page.goto(config.url);\n\n // Click through to the 'Hotel info' page.\n const findReservationsLink = page.getByRole('link', { name: 'Find reservations' });\n await expect(findReservationsLink).toBeVisible();\n await findReservationsLink.click();\n \n // Verify that the expected elements are on the page.\n const findYourReservationHeading = page.getByRole('heading', { name: 'Find your reservation' });\n await expect(findYourReservationHeading).toBeVisible();\n \n const findReservationButton = page.getByRole('button', { name: 'Find Reservation' });\n await expect(findReservationButton).toBeVisible();\n \n // todo: Maybe test form validation?\n \n // Verify that we can go back to the main booking page.\n const backToCheckAvailabilityButton = page.getByRole('button', { name: 'Back to check availability' });\n await expect(backToCheckAvailabilityButton).toBeVisible();\n await backToCheckAvailabilityButton.click();\n const selectYourDateHeading = page.getByRole('heading', { name: 'Select your date' });\n await expect(selectYourDateHeading).toBeVisible();\n });\n};\n"]}
@@ -13,7 +13,7 @@ const test_1 = require("@playwright/test");
13
13
  const playwrightHelpers_1 = require("./helpers/playwrightHelpers");
14
14
  (0, playwrightHelpers_1.runPlaywrightTestWithConfig)(runCanViewHotelInfoPageTest);
15
15
  function runCanViewHotelInfoPageTest(config) {
16
- (0, test_1.test)(`can view hotel info on ${config.url}`, ({ page }) => __awaiter(this, void 0, void 0, function* () {
16
+ (0, test_1.test)(`can view hotel info on ${config.url}`, (_a) => __awaiter(this, [_a], void 0, function* ({ page }) {
17
17
  yield page.goto(config.url);
18
18
  // Click through to the 'Hotel info' page.
19
19
  const hotelInfoLink = page.getByRole('link', { name: 'Hotel info' });
@@ -1 +1 @@
1
- {"version":3,"file":"canViewHotelnfoPage.spec.js","sourceRoot":"/","sources":["e2e/canViewHotelnfoPage.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAAgD;AAEhD,mEAA0E;AAE1E,IAAA,+CAA2B,EAAC,2BAA2B,CAAC,CAAC;AAEzD,SAAS,2BAA2B,CAAC,MAA0B;IAC3D,IAAA,WAAI,EAAC,0BAA0B,MAAM,CAAC,GAAG,EAAE,EAAE,CAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QAC5D,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE5B,0CAA0C;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACrE,MAAM,IAAA,aAAM,EAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;QAE5B,mDAAmD;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAC5D,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7B,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAA,aAAM,EAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAChC,IAAA,aAAM,EAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QAElC,0DAA0D;QAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAClE,MAAM,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;QAE7C,2CAA2C;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACrE,IAAA,aAAM,EAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QAEpC,gFAAgF;QAChF,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACtF,MAAM,IAAA,aAAM,EAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,CAAC,CAAA,CAAC,CAAC;AACP,CAAC;AAAA,CAAC","sourcesContent":["import { test, expect } from '@playwright/test';\nimport { FrontendTestConfig, testConfigs } from './frontendTestConfigs';\nimport { runPlaywrightTestWithConfig } from './helpers/playwrightHelpers';\n\nrunPlaywrightTestWithConfig(runCanViewHotelInfoPageTest);\n\nfunction runCanViewHotelInfoPageTest(config: FrontendTestConfig) {\n test(`can view hotel info on ${config.url}`, async ({ page }) => {\n await page.goto(config.url);\n\n // Click through to the 'Hotel info' page.\n const hotelInfoLink = page.getByRole('link', { name: 'Hotel info' });\n await expect(hotelInfoLink).toBeVisible();\n await hotelInfoLink.click();\n \n // Check that header and subheader are on the page.\n const header = page.locator('h1.c-masthead__header');\n const subheader = page.locator('h2.c-masthead__sub-header');\n expect(header).toBeVisible();\n expect(header).not.toBeEmpty();\n expect(subheader).toBeVisible();\n expect(subheader).not.toBeEmpty();\n \n // Check that the 'Powered by roomstay.io' message exists.\n const poweredByMessage = page.getByText('Powered by Roomstay.io');\n await expect(poweredByMessage).toBeVisible();\n \n // Check that the 'Book Now' button exists.\n const bookNowButton = page.getByRole('button', { name: 'Book Now' });\n expect(bookNowButton).toBeVisible();\n \n // Check that clicking the 'Book Now' button takes the user to the booking page.\n await bookNowButton.click();\n const selectYourDateHeading = page.getByRole('heading', { name: 'Select your date' });\n await expect(selectYourDateHeading).toBeVisible();\n });\n};\n"]}
1
+ {"version":3,"file":"canViewHotelnfoPage.spec.js","sourceRoot":"/","sources":["e2e/canViewHotelnfoPage.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAAgD;AAEhD,mEAA0E;AAE1E,IAAA,+CAA2B,EAAC,2BAA2B,CAAC,CAAC;AAEzD,SAAS,2BAA2B,CAAC,MAA0B;IAC3D,IAAA,WAAI,EAAC,0BAA0B,MAAM,CAAC,GAAG,EAAE,EAAE,KAAiB,EAAE,0CAAZ,EAAE,IAAI,EAAE;QACxD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE5B,0CAA0C;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACrE,MAAM,IAAA,aAAM,EAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;QAE5B,mDAAmD;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAC5D,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7B,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAA,aAAM,EAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAChC,IAAA,aAAM,EAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QAElC,0DAA0D;QAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAClE,MAAM,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;QAE7C,2CAA2C;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACrE,IAAA,aAAM,EAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QAEpC,gFAAgF;QAChF,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACtF,MAAM,IAAA,aAAM,EAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,CAAC,CAAA,CAAC,CAAC;AACP,CAAC;AAAA,CAAC","sourcesContent":["import { test, expect } from '@playwright/test';\nimport { FrontendTestConfig, testConfigs } from './frontendTestConfigs';\nimport { runPlaywrightTestWithConfig } from './helpers/playwrightHelpers';\n\nrunPlaywrightTestWithConfig(runCanViewHotelInfoPageTest);\n\nfunction runCanViewHotelInfoPageTest(config: FrontendTestConfig) {\n test(`can view hotel info on ${config.url}`, async ({ page }) => {\n await page.goto(config.url);\n\n // Click through to the 'Hotel info' page.\n const hotelInfoLink = page.getByRole('link', { name: 'Hotel info' });\n await expect(hotelInfoLink).toBeVisible();\n await hotelInfoLink.click();\n \n // Check that header and subheader are on the page.\n const header = page.locator('h1.c-masthead__header');\n const subheader = page.locator('h2.c-masthead__sub-header');\n expect(header).toBeVisible();\n expect(header).not.toBeEmpty();\n expect(subheader).toBeVisible();\n expect(subheader).not.toBeEmpty();\n \n // Check that the 'Powered by roomstay.io' message exists.\n const poweredByMessage = page.getByText('Powered by Roomstay.io');\n await expect(poweredByMessage).toBeVisible();\n \n // Check that the 'Book Now' button exists.\n const bookNowButton = page.getByRole('button', { name: 'Book Now' });\n expect(bookNowButton).toBeVisible();\n \n // Check that clicking the 'Book Now' button takes the user to the booking page.\n await bookNowButton.click();\n const selectYourDateHeading = page.getByRole('heading', { name: 'Select your date' });\n await expect(selectYourDateHeading).toBeVisible();\n });\n};\n"]}
@@ -14,7 +14,7 @@ const checkoutHelpers_1 = require("./helpers/checkoutHelpers");
14
14
  const checkoutTestData_1 = require("./data/checkoutTestData");
15
15
  // This test just runs on the Frontend Demo, as it needs to actually be able to check out with fake payment details.
16
16
  const url = 'http://localhost:9000/';
17
- (0, test_1.test)(`can checkout on ${url}, and then go back and checkout again.`, ({ page }) => __awaiter(void 0, void 0, void 0, function* () {
17
+ (0, test_1.test)(`can checkout on ${url}, and then go back and checkout again.`, (_a) => __awaiter(void 0, [_a], void 0, function* ({ page }) {
18
18
  // This test can take a while to complete if we need to check various different date ranges to find
19
19
  // an available check-in and check-out date, so we need to increase the timeout.
20
20
  test_1.test.setTimeout(60000); // 1 minute.
@@ -1 +1 @@
1
- {"version":3,"file":"goBackAndCheckoutAgain.spec.js","sourceRoot":"/","sources":["e2e/goBackAndCheckoutAgain.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from '@playwright/test';\nimport { fillContactInfo, fillPaymentInformation, proceedToConfirmationStep, selectAvailableDates, submitBookingReservation, verifyBookingConfirmation } from './helpers/checkoutHelpers';\nimport { checkoutTestDataDefault, checkoutTestDataSecondary } from './data/checkoutTestData';\n\n// This test just runs on the Frontend Demo, as it needs to actually be able to check out with fake payment details.\nconst url = 'http://localhost:9000/';\n\ntest(`can checkout on ${url}, and then go back and checkout again.`, async ({ page }) => {\n // This test can take a while to complete if we need to check various different date ranges to find\n // an available check-in and check-out date, so we need to increase the timeout.\n test.setTimeout(60000); // 1 minute.\n await page.goto(url);\n\n await test.step('Select available dates', async () => {\n const foundAvailableDates = await selectAvailableDates(page);\n if (!foundAvailableDates) {\n console.error('Unable to find available dates after maximum retries.');\n test.fail();\n return;\n }\n });\n\n await test.step('Proceed to confirmation step', async () => {\n await proceedToConfirmationStep(page);\n });\n\n await test.step('Fill contact and payment information', async () => {\n await fillContactInfo(page, checkoutTestDataDefault);\n await fillPaymentInformation(page, checkoutTestDataDefault);\n });\n\n await test.step('Submit the reservation', async () => {\n await submitBookingReservation(page);\n });\n\n await test.step('Verify booking confirmation', async () => {\n await verifyBookingConfirmation(page, checkoutTestDataDefault);\n });\n\n // Now that we've checked out, we want to test that we can navigate back to a previous step\n await test.step('Go back to Choose Accommodation step.', async () => {\n // Clicking any step after 'Choose Accommodation' should take us back to 'Choose Accommodation'.\n // Let's click on the Confirmation step.\n const confirmationStepLink = page.locator('.step-selector__item p.text-body:has-text(\"Confirmation\")');\n await expect(confirmationStepLink).toBeVisible();\n await confirmationStepLink.click({ force: true }); // Force because of the <a> element which intercepts the click.\n\n // We should now be on the 'Choose Accommodation step'.\n const currentStep = page.locator('.step-selector__item.is-current');\n await expect(currentStep).toContainText('Choose Accommodation');\n });\n\n await test.step('Try to click back to the Thanks step (this should be prevented).', async () => {\n const thanksStepContainer = page.locator('.step-selector__item:has(p.text-body:has-text(\"Thanks\"))');\n const thanksStepAnchor = thanksStepContainer.locator('a');\n\n // The step container should have the 'not-allowed' cursor.\n const cursorStyle = await thanksStepContainer.evaluate((element) => {\n return window.getComputedStyle(element).cursor;\n });\n expect(cursorStyle).toBe('not-allowed');\n\n // This link shouldn't be clickable.\n await expect(thanksStepAnchor).not.toBeVisible();\n });\n\n await test.step('Check out again, using the same dates but with different contact information.', async () => {\n await proceedToConfirmationStep(page);\n await fillContactInfo(page, checkoutTestDataSecondary);\n await fillPaymentInformation(page, checkoutTestDataSecondary);\n await submitBookingReservation(page);\n await verifyBookingConfirmation(page, checkoutTestDataSecondary);\n });\n});"]}
1
+ {"version":3,"file":"goBackAndCheckoutAgain.spec.js","sourceRoot":"/","sources":["e2e/goBackAndCheckoutAgain.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAAgD;AAChD,+DAA0L;AAC1L,8DAA6F;AAE7F,oHAAoH;AACpH,MAAM,GAAG,GAAG,wBAAwB,CAAC;AAErC,IAAA,WAAI,EAAC,mBAAmB,GAAG,wCAAwC,EAAE,KAAiB,EAAE,4CAAZ,EAAE,IAAI,EAAE;IAChF,mGAAmG;IACnG,gFAAgF;IAChF,WAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY;IACpC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAErB,MAAM,WAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAS,EAAE;QACjD,MAAM,mBAAmB,GAAG,MAAM,IAAA,sCAAoB,EAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;YACvE,WAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO;QACX,CAAC;IACL,CAAC,CAAA,CAAC,CAAC;IAEH,MAAM,WAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE,GAAS,EAAE;QACvD,MAAM,IAAA,2CAAyB,EAAC,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAA,CAAC,CAAC;IAEH,MAAM,WAAI,CAAC,IAAI,CAAC,sCAAsC,EAAE,GAAS,EAAE;QAC/D,MAAM,IAAA,iCAAe,EAAC,IAAI,EAAE,0CAAuB,CAAC,CAAC;QACrD,MAAM,IAAA,wCAAsB,EAAC,IAAI,EAAE,0CAAuB,CAAC,CAAC;IAChE,CAAC,CAAA,CAAC,CAAC;IAEH,MAAM,WAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAS,EAAE;QACjD,MAAM,IAAA,0CAAwB,EAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAA,CAAC,CAAC;IAEH,MAAM,WAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,GAAS,EAAE;QACtD,MAAM,IAAA,2CAAyB,EAAC,IAAI,EAAE,0CAAuB,CAAC,CAAC;IACnE,CAAC,CAAA,CAAC,CAAC;IAEH,2FAA2F;IAC3F,MAAM,WAAI,CAAC,IAAI,CAAC,uCAAuC,EAAE,GAAS,EAAE;QAChE,gGAAgG;QAChG,wCAAwC;QACxC,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC;QACvG,MAAM,IAAA,aAAM,EAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,oBAAoB,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,+DAA+D;QAElH,uDAAuD;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;QACpE,MAAM,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;IACpE,CAAC,CAAA,CAAC,CAAC;IAEH,MAAM,WAAI,CAAC,IAAI,CAAC,kEAAkE,EAAE,GAAS,EAAE;QAC3F,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC;QACrG,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAE1D,2DAA2D;QAC3D,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE;YAC/D,OAAO,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QACnD,CAAC,CAAC,CAAC;QACH,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAExC,oCAAoC;QACpC,MAAM,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IACrD,CAAC,CAAA,CAAC,CAAC;IAEH,MAAM,WAAI,CAAC,IAAI,CAAC,+EAA+E,EAAE,GAAS,EAAE;QACxG,MAAM,IAAA,2CAAyB,EAAC,IAAI,CAAC,CAAC;QACtC,MAAM,IAAA,iCAAe,EAAC,IAAI,EAAE,4CAAyB,CAAC,CAAC;QACvD,MAAM,IAAA,wCAAsB,EAAC,IAAI,EAAE,4CAAyB,CAAC,CAAC;QAC9D,MAAM,IAAA,0CAAwB,EAAC,IAAI,CAAC,CAAC;QACrC,MAAM,IAAA,2CAAyB,EAAC,IAAI,EAAE,4CAAyB,CAAC,CAAC;IACrE,CAAC,CAAA,CAAC,CAAC;AACP,CAAC,CAAA,CAAC,CAAC","sourcesContent":["import { test, expect } from '@playwright/test';\nimport { fillContactInfo, fillPaymentInformation, proceedToConfirmationStep, selectAvailableDates, submitBookingReservation, verifyBookingConfirmation } from './helpers/checkoutHelpers';\nimport { checkoutTestDataDefault, checkoutTestDataSecondary } from './data/checkoutTestData';\n\n// This test just runs on the Frontend Demo, as it needs to actually be able to check out with fake payment details.\nconst url = 'http://localhost:9000/';\n\ntest(`can checkout on ${url}, and then go back and checkout again.`, async ({ page }) => {\n // This test can take a while to complete if we need to check various different date ranges to find\n // an available check-in and check-out date, so we need to increase the timeout.\n test.setTimeout(60000); // 1 minute.\n await page.goto(url);\n\n await test.step('Select available dates', async () => {\n const foundAvailableDates = await selectAvailableDates(page);\n if (!foundAvailableDates) {\n console.error('Unable to find available dates after maximum retries.');\n test.fail();\n return;\n }\n });\n\n await test.step('Proceed to confirmation step', async () => {\n await proceedToConfirmationStep(page);\n });\n\n await test.step('Fill contact and payment information', async () => {\n await fillContactInfo(page, checkoutTestDataDefault);\n await fillPaymentInformation(page, checkoutTestDataDefault);\n });\n\n await test.step('Submit the reservation', async () => {\n await submitBookingReservation(page);\n });\n\n await test.step('Verify booking confirmation', async () => {\n await verifyBookingConfirmation(page, checkoutTestDataDefault);\n });\n\n // Now that we've checked out, we want to test that we can navigate back to a previous step\n await test.step('Go back to Choose Accommodation step.', async () => {\n // Clicking any step after 'Choose Accommodation' should take us back to 'Choose Accommodation'.\n // Let's click on the Confirmation step.\n const confirmationStepLink = page.locator('.step-selector__item p.text-body:has-text(\"Confirmation\")');\n await expect(confirmationStepLink).toBeVisible();\n await confirmationStepLink.click({ force: true }); // Force because of the <a> element which intercepts the click.\n\n // We should now be on the 'Choose Accommodation step'.\n const currentStep = page.locator('.step-selector__item.is-current');\n await expect(currentStep).toContainText('Choose Accommodation');\n });\n\n await test.step('Try to click back to the Thanks step (this should be prevented).', async () => {\n const thanksStepContainer = page.locator('.step-selector__item:has(p.text-body:has-text(\"Thanks\"))');\n const thanksStepAnchor = thanksStepContainer.locator('a');\n\n // The step container should have the 'not-allowed' cursor.\n const cursorStyle = await thanksStepContainer.evaluate((element) => {\n return window.getComputedStyle(element).cursor;\n });\n expect(cursorStyle).toBe('not-allowed');\n\n // This link shouldn't be clickable.\n await expect(thanksStepAnchor).not.toBeVisible();\n });\n\n await test.step('Check out again, using the same dates but with different contact information.', async () => {\n await proceedToConfirmationStep(page);\n await fillContactInfo(page, checkoutTestDataSecondary);\n await fillPaymentInformation(page, checkoutTestDataSecondary);\n await submitBookingReservation(page);\n await verifyBookingConfirmation(page, checkoutTestDataSecondary);\n });\n});"]}
@@ -9,10 +9,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.verifyBookingConfirmation = exports.submitBookingReservation = exports.fillPaymentInformation = exports.fillContactInfo = exports.proceedToConfirmationStep = exports.selectAvailableDates = void 0;
12
+ exports.selectAvailableDates = selectAvailableDates;
13
+ exports.proceedToConfirmationStep = proceedToConfirmationStep;
14
+ exports.fillContactInfo = fillContactInfo;
15
+ exports.fillPaymentInformation = fillPaymentInformation;
16
+ exports.submitBookingReservation = submitBookingReservation;
17
+ exports.verifyBookingConfirmation = verifyBookingConfirmation;
13
18
  const test_1 = require("@playwright/test");
14
- function selectAvailableDates(page, maxRetries = 5) {
15
- return __awaiter(this, void 0, void 0, function* () {
19
+ function selectAvailableDates(page_1) {
20
+ return __awaiter(this, arguments, void 0, function* (page, maxRetries = 5) {
16
21
  for (let attempt = 0; attempt < maxRetries; attempt++) {
17
22
  // Choose the first available check-in date.
18
23
  const checkInDateElement = page.locator('.diji-calendar-month--item.--selectable').first();
@@ -57,7 +62,6 @@ function selectAvailableDates(page, maxRetries = 5) {
57
62
  return false;
58
63
  });
59
64
  }
60
- exports.selectAvailableDates = selectAvailableDates;
61
65
  function proceedToConfirmationStep(page) {
62
66
  return __awaiter(this, void 0, void 0, function* () {
63
67
  // Click the 'View Rates' button.
@@ -91,7 +95,6 @@ function proceedToConfirmationStep(page) {
91
95
  yield (0, test_1.expect)(confirmReservationButton).toHaveText('Confirm Reservation');
92
96
  });
93
97
  }
94
- exports.proceedToConfirmationStep = proceedToConfirmationStep;
95
98
  function fillContactInfo(page, data) {
96
99
  return __awaiter(this, void 0, void 0, function* () {
97
100
  // Fill Contact Info fields
@@ -108,7 +111,6 @@ function fillContactInfo(page, data) {
108
111
  yield page.click('.rs-enhanced-country-field--suggest-list-country-name'); // Assuming there's only one result...
109
112
  });
110
113
  }
111
- exports.fillContactInfo = fillContactInfo;
112
114
  function fillPaymentInformation(page, data) {
113
115
  return __awaiter(this, void 0, void 0, function* () {
114
116
  // Fill Payment Information. Each of these fields is within their own secure iframe that we need to enter first.
@@ -130,7 +132,6 @@ function fillPaymentInformation(page, data) {
130
132
  }
131
133
  });
132
134
  }
133
- exports.fillPaymentInformation = fillPaymentInformation;
134
135
  function submitBookingReservation(page) {
135
136
  return __awaiter(this, void 0, void 0, function* () {
136
137
  const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });
@@ -138,7 +139,6 @@ function submitBookingReservation(page) {
138
139
  yield confirmReservationButton.click();
139
140
  });
140
141
  }
141
- exports.submitBookingReservation = submitBookingReservation;
142
142
  function verifyBookingConfirmation(page, data) {
143
143
  return __awaiter(this, void 0, void 0, function* () {
144
144
  // We should now be on the 'Thanks' step.
@@ -160,5 +160,4 @@ function verifyBookingConfirmation(page, data) {
160
160
  yield closeButton.click();
161
161
  });
162
162
  }
163
- exports.verifyBookingConfirmation = verifyBookingConfirmation;
164
163
  //# sourceMappingURL=checkoutHelpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkoutHelpers.js","sourceRoot":"/","sources":["e2e/helpers/checkoutHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, Locator } from '@playwright/test';\nimport { CheckoutTestData } from '../data/checkoutTestData';\n\nexport async function selectAvailableDates(page: any, maxRetries: number = 5): Promise<boolean> {\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n // Choose the first available check-in date.\n const checkInDateElement = page.locator('.diji-calendar-month--item.--selectable').first();\n await expect(checkInDateElement).toBeVisible();\n await checkInDateElement.click();\n\n let checkOutDateElement: Locator;\n if (attempt === maxRetries - 1) {\n // If this is the last attempt, try a 1-night stay (this has a higher success rate).\n checkOutDateElement = page.locator('.diji-calendar-month--item.--selectable:not(.--selected)').first();\n } else {\n // Choose a random available check-out date.\n const checkOutDateElements = await page.locator('.diji-calendar-month--item.--selectable:not(.--selected)').all();\n const randomIndex = Math.floor(Math.random() * checkOutDateElements.length);\n checkOutDateElement = checkOutDateElements[randomIndex];\n }\n\n await expect(checkOutDateElement).toBeVisible();\n await checkOutDateElement.click();\n\n // TODO: Instead of waiting for timeout, wait for the loading indicators on the other dates to disappear.\n // Context: After choosing checkout date, the loading indicators appear for the dates following the checkout\n // date. If we click 'Check Availability', we seem to briefly see an error message. This doesn't actually\n // make the tests fail though. Keeping this in here in case it's indicative of an issue with RoomStay itself.\n // The error is an \"Oh no, something went wrong\" message and shows the select room bar without any dates in it.\n // The error quickly goes away though.\n await page.waitForTimeout(500);\n\n // Click the 'Check Availability' button.\n const checkAvailabilityButton = page.getByRole('button', { name: 'Check Availability' });\n await expect(checkAvailabilityButton).not.toBeDisabled();\n await checkAvailabilityButton.click();\n\n // Check for error message.\n const errorMessage = await page.waitForSelector('text=Please check your dates and', { timeout: 1000 }).catch(() => null);\n if (errorMessage) {\n console.log(`Error message found on attempt ${attempt + 1}. Retrying with different dates.`);\n const newSearchButton = page.getByRole('button', { name: 'New Search' });\n await expect(newSearchButton).toBeVisible();\n await newSearchButton.click();\n } else {\n return true;\n }\n }\n\n return false;\n}\n\nexport async function proceedToConfirmationStep(page: any) {\n // Click the 'View Rates' button.\n const viewRatesNowButton = page.getByRole('button', { name: 'View rates now' }).first();\n await expect(viewRatesNowButton).toBeVisible();\n await expect(viewRatesNowButton).not.toBeDisabled();\n await viewRatesNowButton.click();\n\n // Click the first 'Book Now' button.\n const firstBookNowButton = page.getByRole('button', { name: 'Book Now' }).first();\n await expect(firstBookNowButton).toBeVisible();\n await firstBookNowButton.click();\n\n // Confirm that the 'Added xx' toast notification is visible.\n // TOODO: Sometimes there are two notifications, but I can only reproduce this in Playwright.\n const addedRoomNotification = page.locator('.c-notification__inner').first();\n await expect(addedRoomNotification).toBeVisible();\n await expect(addedRoomNotification).toContainText('Added');\n\n // A bit hacky... Need a better way to check the current step.\n try {\n const isAddonsStep = await page.waitForSelector('.step-selector__item.is-current p.text-body:has-text(\"Add-Ons\")', { timeout: 1000 });\n if (isAddonsStep) {\n const nextButton = page.getByRole('button', { name: 'Next Step' }).first();\n await expect(nextButton).toBeVisible();\n await nextButton.click();\n }\n } catch (error) {\n console.log('Add-ons step not found, continuing.');\n }\n\n const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });\n await expect(confirmReservationButton).toBeVisible();\n await expect(confirmReservationButton).toHaveText('Confirm Reservation');\n}\n\nexport async function fillContactInfo(page: any, data: CheckoutTestData) {\n // Fill Contact Info fields\n await page.fill('input[name=\"userProfiles.0.Forename\"]', data.firstName);\n await page.fill('input[name=\"userProfiles.0.Surname\"]', data.lastName);\n await page.fill('input[name=\"userProfiles.0.Email\"]', data.email);\n await page.fill('input[name=\"userProfiles.0.Phone\"]', data.phone);\n await page.fill('input[name=\"userProfiles.0.Address\"]', data.address);\n await page.fill('input[name=\"userProfiles.0.City\"]', data.city);\n await page.fill('input[name=\"userProfiles.0.PostCode\"]', data.zipCode);\n\n // Country selector\n await page.fill('.rs-enhanced-country-field--search input', data.country);\n await page.waitForSelector('.rs-enhanced-country-field--suggest-list-country', { state: 'visible' });\n await page.click('.rs-enhanced-country-field--suggest-list-country-name'); // Assuming there's only one result...\n}\n\nexport async function fillPaymentInformation(page: any, data: CheckoutTestData) {\n // Fill Payment Information. Each of these fields is within their own secure iframe that we need to enter first.\n\n const cardNumberFrame = await (await page.waitForSelector('iframe[title=\"Secure card number input frame\"]')).contentFrame();\n if (cardNumberFrame) {\n await cardNumberFrame.fill('input[aria-label=\"Card Number Input\"]', data.cardNumber);\n }\n\n const cardExpiryFrame = await (await page.waitForSelector('iframe[title=\"Secure card expiration date input frame\"]')).contentFrame();\n if (cardExpiryFrame) {\n await cardExpiryFrame.fill('input[aria-label=\"Card expiration date\"]', data.cardExpiry);\n }\n\n const cardCvvFrame = await (await page.waitForSelector('iframe[title=\"Secure card security code input frame\"]')).contentFrame();\n if (cardCvvFrame) {\n await cardCvvFrame.fill('input[aria-label=\"Card Security Code\"]', data.cardCVC);\n }\n\n const cardNameFrame = await (await page.waitForSelector('iframe[title=\"Secure text input frame\"]')).contentFrame();\n if (cardNameFrame) {\n await cardNameFrame.fill('input[aria-label=\"Text input\"]', `${data.firstName} ${data.lastName}`);\n }\n}\n\nexport async function submitBookingReservation(page: any) {\n const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });\n await expect(confirmReservationButton).toBeVisible();\n await confirmReservationButton.click();\n}\n\nexport async function verifyBookingConfirmation(page: any, data: CheckoutTestData) {\n // We should now be on the 'Thanks' step.\n await page.waitForSelector('.step-selector__item.is-current p.text-body:has-text(\"Thanks\")', { timeout: 5000 });\n\n // There should be a message thanking us for our booking.\n const thankYouMessage = page.locator('h3:has-text(\"Thank you\")');\n await expect(thankYouMessage).toBeVisible();\n\n // Click the 'More Details' button to show a modal with our booking details.\n const moreDetailsButton = page.getByRole('button', { name: 'More Details' });\n await expect(moreDetailsButton).toBeVisible();\n await moreDetailsButton.click();\n\n const modal = page.locator('div[class*=\"roomstay-modal\"]').first();\n await expect(modal).toBeVisible();\n\n // The modal should contain our name and email address.\n await expect(modal.locator(`text=${data.firstName} ${data.lastName}`)).toBeVisible();\n await expect(modal.locator(`text=${data.email}`)).toBeVisible();\n\n // Close the modal.\n const closeButton = modal.locator('i[name=\"Close\"]');\n await closeButton.click();\n}\n"]}
1
+ {"version":3,"file":"checkoutHelpers.js","sourceRoot":"/","sources":["e2e/helpers/checkoutHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, Locator } from '@playwright/test';\nimport { CheckoutTestData } from '../data/checkoutTestData';\n\nexport async function selectAvailableDates(page: any, maxRetries: number = 5): Promise<boolean> {\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n // Choose the first available check-in date.\n const checkInDateElement = page.locator('.diji-calendar-month--item.--selectable').first();\n await expect(checkInDateElement).toBeVisible();\n await checkInDateElement.click();\n\n let checkOutDateElement: Locator;\n if (attempt === maxRetries - 1) {\n // If this is the last attempt, try a 1-night stay (this has a higher success rate).\n checkOutDateElement = page.locator('.diji-calendar-month--item.--selectable:not(.--selected)').first();\n } else {\n // Choose a random available check-out date.\n const checkOutDateElements = await page.locator('.diji-calendar-month--item.--selectable:not(.--selected)').all();\n const randomIndex = Math.floor(Math.random() * checkOutDateElements.length);\n checkOutDateElement = checkOutDateElements[randomIndex];\n }\n\n await expect(checkOutDateElement).toBeVisible();\n await checkOutDateElement.click();\n\n // TODO: Instead of waiting for timeout, wait for the loading indicators on the other dates to disappear.\n // Context: After choosing checkout date, the loading indicators appear for the dates following the checkout\n // date. If we click 'Check Availability', we seem to briefly see an error message. This doesn't actually\n // make the tests fail though. Keeping this in here in case it's indicative of an issue with RoomStay itself.\n // The error is an \"Oh no, something went wrong\" message and shows the select room bar without any dates in it.\n // The error quickly goes away though.\n await page.waitForTimeout(500);\n\n // Click the 'Check Availability' button.\n const checkAvailabilityButton = page.getByRole('button', { name: 'Check Availability' });\n await expect(checkAvailabilityButton).not.toBeDisabled();\n await checkAvailabilityButton.click();\n\n // Check for error message.\n const errorMessage = await page.waitForSelector('text=Please check your dates and', { timeout: 1000 }).catch(() => null);\n if (errorMessage) {\n console.log(`Error message found on attempt ${attempt + 1}. Retrying with different dates.`);\n const newSearchButton = page.getByRole('button', { name: 'New Search' });\n await expect(newSearchButton).toBeVisible();\n await newSearchButton.click();\n } else {\n return true;\n }\n }\n\n return false;\n}\n\nexport async function proceedToConfirmationStep(page: any) {\n // Click the 'View Rates' button.\n const viewRatesNowButton = page.getByRole('button', { name: 'View rates now' }).first();\n await expect(viewRatesNowButton).toBeVisible();\n await expect(viewRatesNowButton).not.toBeDisabled();\n await viewRatesNowButton.click();\n\n // Click the first 'Book Now' button.\n const firstBookNowButton = page.getByRole('button', { name: 'Book Now' }).first();\n await expect(firstBookNowButton).toBeVisible();\n await firstBookNowButton.click();\n\n // Confirm that the 'Added xx' toast notification is visible.\n // TOODO: Sometimes there are two notifications, but I can only reproduce this in Playwright.\n const addedRoomNotification = page.locator('.c-notification__inner').first();\n await expect(addedRoomNotification).toBeVisible();\n await expect(addedRoomNotification).toContainText('Added');\n\n // A bit hacky... Need a better way to check the current step.\n try {\n const isAddonsStep = await page.waitForSelector('.step-selector__item.is-current p.text-body:has-text(\"Add-Ons\")', { timeout: 1000 });\n if (isAddonsStep) {\n const nextButton = page.getByRole('button', { name: 'Next Step' }).first();\n await expect(nextButton).toBeVisible();\n await nextButton.click();\n }\n } catch (error) {\n console.log('Add-ons step not found, continuing.');\n }\n\n const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });\n await expect(confirmReservationButton).toBeVisible();\n await expect(confirmReservationButton).toHaveText('Confirm Reservation');\n}\n\nexport async function fillContactInfo(page: any, data: CheckoutTestData) {\n // Fill Contact Info fields\n await page.fill('input[name=\"userProfiles.0.Forename\"]', data.firstName);\n await page.fill('input[name=\"userProfiles.0.Surname\"]', data.lastName);\n await page.fill('input[name=\"userProfiles.0.Email\"]', data.email);\n await page.fill('input[name=\"userProfiles.0.Phone\"]', data.phone);\n await page.fill('input[name=\"userProfiles.0.Address\"]', data.address);\n await page.fill('input[name=\"userProfiles.0.City\"]', data.city);\n await page.fill('input[name=\"userProfiles.0.PostCode\"]', data.zipCode);\n\n // Country selector\n await page.fill('.rs-enhanced-country-field--search input', data.country);\n await page.waitForSelector('.rs-enhanced-country-field--suggest-list-country', { state: 'visible' });\n await page.click('.rs-enhanced-country-field--suggest-list-country-name'); // Assuming there's only one result...\n}\n\nexport async function fillPaymentInformation(page: any, data: CheckoutTestData) {\n // Fill Payment Information. Each of these fields is within their own secure iframe that we need to enter first.\n\n const cardNumberFrame = await (await page.waitForSelector('iframe[title=\"Secure card number input frame\"]')).contentFrame();\n if (cardNumberFrame) {\n await cardNumberFrame.fill('input[aria-label=\"Card Number Input\"]', data.cardNumber);\n }\n\n const cardExpiryFrame = await (await page.waitForSelector('iframe[title=\"Secure card expiration date input frame\"]')).contentFrame();\n if (cardExpiryFrame) {\n await cardExpiryFrame.fill('input[aria-label=\"Card expiration date\"]', data.cardExpiry);\n }\n\n const cardCvvFrame = await (await page.waitForSelector('iframe[title=\"Secure card security code input frame\"]')).contentFrame();\n if (cardCvvFrame) {\n await cardCvvFrame.fill('input[aria-label=\"Card Security Code\"]', data.cardCVC);\n }\n\n const cardNameFrame = await (await page.waitForSelector('iframe[title=\"Secure text input frame\"]')).contentFrame();\n if (cardNameFrame) {\n await cardNameFrame.fill('input[aria-label=\"Text input\"]', `${data.firstName} ${data.lastName}`);\n }\n}\n\nexport async function submitBookingReservation(page: any) {\n const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });\n await expect(confirmReservationButton).toBeVisible();\n await confirmReservationButton.click();\n}\n\nexport async function verifyBookingConfirmation(page: any, data: CheckoutTestData) {\n // We should now be on the 'Thanks' step.\n await page.waitForSelector('.step-selector__item.is-current p.text-body:has-text(\"Thanks\")', { timeout: 5000 });\n\n // There should be a message thanking us for our booking.\n const thankYouMessage = page.locator('h3:has-text(\"Thank you\")');\n await expect(thankYouMessage).toBeVisible();\n\n // Click the 'More Details' button to show a modal with our booking details.\n const moreDetailsButton = page.getByRole('button', { name: 'More Details' });\n await expect(moreDetailsButton).toBeVisible();\n await moreDetailsButton.click();\n\n const modal = page.locator('div[class*=\"roomstay-modal\"]').first();\n await expect(modal).toBeVisible();\n\n // The modal should contain our name and email address.\n await expect(modal.locator(`text=${data.firstName} ${data.lastName}`)).toBeVisible();\n await expect(modal.locator(`text=${data.email}`)).toBeVisible();\n\n // Close the modal.\n const closeButton = modal.locator('i[name=\"Close\"]');\n await closeButton.click();\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runPlaywrightTestWithConfig = void 0;
3
+ exports.runPlaywrightTestWithConfig = runPlaywrightTestWithConfig;
4
4
  const frontendTestConfigs_1 = require("../frontendTestConfigs");
5
5
  function runPlaywrightTestWithConfig(runTest) {
6
6
  const specificUrl = process.env.URL;
@@ -23,5 +23,4 @@ function runPlaywrightTestWithConfig(runTest) {
23
23
  }
24
24
  selectedConfigs.forEach((config) => runTest(config));
25
25
  }
26
- exports.runPlaywrightTestWithConfig = runPlaywrightTestWithConfig;
27
26
  //# sourceMappingURL=playwrightHelpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"playwrightHelpers.js","sourceRoot":"/","sources":["e2e/helpers/playwrightHelpers.ts"],"names":[],"mappings":";;;AAAA,gEAAyE;AAEzE,SAAgB,2BAA2B,CACzC,OAA6C;IAE7C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;IACpC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IAEzC,IAAI,eAAqC,CAAC;IAE1C,IAAI,WAAW,EAAE;QACf,2DAA2D;QAC3D,MAAM,UAAU,GAAG,iCAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,WAAW,CAAC,IAAI;YAC7E,GAAG,EAAE,WAAW;YAChB,kBAAkB,EAAE,KAAK;SAC1B,CAAC;QAEF,eAAe,GAAG,CAAC,UAAU,CAAC,CAAC;KAChC;SAAM,IAAI,YAAY,EAAE;QACvB,eAAe,GAAG,iCAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;KACnE;SAAM;QACL,6CAA6C;QAC7C,eAAe,GAAG,iCAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;KACvE;IAED,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,CAAC;AAxBD,kEAwBC","sourcesContent":["import { FrontendTestConfig, testConfigs } from \"../frontendTestConfigs\";\n\nexport function runPlaywrightTestWithConfig(\n runTest: (config: FrontendTestConfig) => void\n): void {\n const specificUrl = process.env.URL;\n const isClientsArg = process.env.CLIENTS;\n\n let selectedConfigs: FrontendTestConfig[];\n\n if (specificUrl) {\n // Find the matching config or create one for the given URL\n const testConfig = testConfigs.find((config) => config.url === specificUrl) || {\n url: specificUrl,\n proceedWithPayment: false,\n };\n\n selectedConfigs = [testConfig];\n } else if (isClientsArg) {\n selectedConfigs = testConfigs.filter((config) => config.isClient);\n } else {\n // No URL provided, use the default config(s)\n selectedConfigs = testConfigs.filter((config) => config.runByDefault);\n }\n\n selectedConfigs.forEach((config) => runTest(config));\n}"]}
1
+ {"version":3,"file":"playwrightHelpers.js","sourceRoot":"/","sources":["e2e/helpers/playwrightHelpers.ts"],"names":[],"mappings":";;AAEA,kEAwBC;AA1BD,gEAAyE;AAEzE,SAAgB,2BAA2B,CACzC,OAA6C;IAE7C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;IACpC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IAEzC,IAAI,eAAqC,CAAC;IAE1C,IAAI,WAAW,EAAE,CAAC;QAChB,2DAA2D;QAC3D,MAAM,UAAU,GAAG,iCAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,WAAW,CAAC,IAAI;YAC7E,GAAG,EAAE,WAAW;YAChB,kBAAkB,EAAE,KAAK;SAC1B,CAAC;QAEF,eAAe,GAAG,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;SAAM,IAAI,YAAY,EAAE,CAAC;QACxB,eAAe,GAAG,iCAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,6CAA6C;QAC7C,eAAe,GAAG,iCAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACxE,CAAC;IAED,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,CAAC","sourcesContent":["import { FrontendTestConfig, testConfigs } from \"../frontendTestConfigs\";\n\nexport function runPlaywrightTestWithConfig(\n runTest: (config: FrontendTestConfig) => void\n): void {\n const specificUrl = process.env.URL;\n const isClientsArg = process.env.CLIENTS;\n\n let selectedConfigs: FrontendTestConfig[];\n\n if (specificUrl) {\n // Find the matching config or create one for the given URL\n const testConfig = testConfigs.find((config) => config.url === specificUrl) || {\n url: specificUrl,\n proceedWithPayment: false,\n };\n\n selectedConfigs = [testConfig];\n } else if (isClientsArg) {\n selectedConfigs = testConfigs.filter((config) => config.isClient);\n } else {\n // No URL provided, use the default config(s)\n selectedConfigs = testConfigs.filter((config) => config.runByDefault);\n }\n\n selectedConfigs.forEach((config) => runTest(config));\n}"]}
@@ -64,8 +64,8 @@ const getPrice = (text) => {
64
64
  };
65
65
  const TIMEOUT = 5 * 60 * 1000;
66
66
  test_1.test.setTimeout(TIMEOUT);
67
- (0, test_1.test)('price', ({ page }) => __awaiter(void 0, void 0, void 0, function* () {
68
- var _c;
67
+ (0, test_1.test)('price', (_a) => __awaiter(void 0, [_a], void 0, function* ({ page }) {
68
+ var _b;
69
69
  //------------------------------------INIT------------------------------------
70
70
  yield page.goto(url);
71
71
  //------------------------------------WAIT HOTEL APPLIED------------------------------------
@@ -137,7 +137,7 @@ test_1.test.setTimeout(TIMEOUT);
137
137
  (0, set_1.default)(rooms, [roomName, 'rates', rateName, 'total'], rateTotal);
138
138
  for (let night of yield nightlyPrices.all()) {
139
139
  const nightName = yield night.locator('> *:nth-child(1)').textContent();
140
- const nightPrice = getPrice(yield ((_c = night.locator('> *:nth-child(2)')) === null || _c === void 0 ? void 0 : _c.textContent()));
140
+ const nightPrice = getPrice(yield ((_b = night.locator('> *:nth-child(2)')) === null || _b === void 0 ? void 0 : _b.textContent()));
141
141
  if (!nightName || !nightPrice)
142
142
  continue;
143
143
  // set(rooms[roomName].rates![rateName].nights![nightName] = {};
@@ -1 +1 @@
1
- {"version":3,"file":"price.spec.js","sourceRoot":"/","sources":["e2e/price.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from '@playwright/test';\nimport set from 'lodash/set';\n\nconst args = process.argv.slice(3);\n// Extracting CLI parameters\nconst version = args[0] || process.env.PLAYWRIGHT_VERSION;\nconst hotelId = args[1] || process.env.PLAYWRIGHT_HOTEL_ID;\nconst startDate = args[2] || process.env.PLAYWRIGHT_START_DATE;\nconst endDate = args[3] || process.env.PLAYWRIGHT_END_DATE;\nconst children = parseInt(args[4], 10) || parseInt(process.env.PLAYWRIGHT_CHILDREN || '0', 10);\nconst adults = parseInt(args[5], 10) || parseInt(process.env.PLAYWRIGHT_ADULTS || '1', 10);\nconst promocode = args[6] ?? process.env.PLAYWRIGHT_PROMOCODE ?? '';\n\n// Set environment variables with PLAYWRIGHT_ prefix if parameters are provided\nif (version) {\n process.env.PLAYWRIGHT_VERSION = version;\n}\nif (hotelId) {\n process.env.PLAYWRIGHT_HOTEL_ID = hotelId;\n}\nif (startDate) {\n process.env.PLAYWRIGHT_START_DATE = startDate;\n}\nif (endDate) {\n process.env.PLAYWRIGHT_END_DATE = endDate;\n}\nif (!isNaN(children)) {\n process.env.PLAYWRIGHT_CHILDREN = children.toString();\n}\nif (!isNaN(adults)) {\n process.env.PLAYWRIGHT_ADULTS = adults.toString();\n}\nif (promocode) {\n process.env.PLAYWRIGHT_PROMOCODE = promocode;\n}\n\nif (!version || !hotelId || !startDate || !endDate || isNaN(children) || isNaN(adults)) {\n console.error('Usage: yarn run test:playwright <version> <hotelId> <startDate> <endDate> <children> <adults> <promocode>');\n console.error('Example: yarn run test:playwright 2/6.13 fa737326-ccdb-496a-bd31-2fbc3e97ed59 2024-08-28 2024-08-30 1 2');\n process.exit(1);\n}\n\nconst url = `https://production.app.roomstay.io/${version}/feature.html?engine=fp&hotel=${hotelId}#/step/date/?arrive=${startDate}&depart=${endDate}&children=${children}&adults=${adults}&promocode=${promocode}`;\nconst params: any = { version, hotelId, startDate, endDate, children, adults, promocode, url };\nconsole.log(params);\n\nconst spinnerSelector = '[name=Spinner]';\n\ntype Rooms = {\n [room: string]: {\n cheapestPrice?: number;\n rates?: {\n [rate: string]: {\n nights?: {\n [nightName: string]: {\n price?: number;\n };\n };\n total?: number;\n };\n };\n };\n};\n\n// function waitForAnimationEnd(locator: Locator) {\n// return locator.evaluate((element) => Promise.all(element.getAnimations().map((animation) => animation.finished)));\n// }\n\nconst getPrice = (text?: string | null): number | undefined => {\n const textPrice = text?.replace(/[a-zA-Z$]/g, '');\n return textPrice && !isNaN(+textPrice) ? +textPrice : undefined;\n};\n\nconst TIMEOUT = 5 * 60 * 1000;\ntest.setTimeout(TIMEOUT);\ntest('price', async ({ page }) => {\n //------------------------------------INIT------------------------------------\n await page.goto(url);\n\n //------------------------------------WAIT HOTEL APPLIED------------------------------------\n const [hotelResponse] = await Promise.all([\n page.waitForResponse((resp) => {\n const url = new URL(resp.url()).pathname.replace(/\\/$/, '').endsWith(`/frontend/hotel/${hotelId}`);\n return url && resp.status() === 200;\n }),\n page.waitForResponse((resp) => {\n const url = new URL(resp.url()).pathname.replace(/\\/$/, '').endsWith(`/frontend/availability/${hotelId}`);\n return url && resp.status() === 200;\n }),\n ]);\n const responseData = await hotelResponse.json();\n console.log({ responseData });\n await Promise.all([expect(page.locator('.hotel-name')).toHaveText(responseData.name), expect(page.locator('.room-details-container').first()).toBeVisible()]);\n\n //------------------------------------INIT------------------------------------\n const roomList = page.locator('.room-details-container');\n\n //------------------------------------1. TOTAL RATE PRICE------------------------------------\n let rooms: Rooms = {};\n for (let room of await roomList.all()) {\n await room.locator(spinnerSelector).first().waitFor({\n state: 'detached',\n });\n const roomName = await room.locator('.room-details--content-title').textContent();\n if (!roomName) continue;\n await room\n .getByRole('button', {\n name: 'View rates now',\n })\n .click();\n const cheapestPrice = getPrice(await room.locator('.room-details--content-price .headline').first().textContent()) || 0;\n set(rooms, [roomName, 'cheapestPrice'], cheapestPrice);\n //------------------------------------1. CHEAPEST PRICE------------------------------------\n const rates = room.locator('.room-info.--default');\n for (let rate of await rates.all()) {\n await rate.waitFor({\n state: 'attached',\n });\n const rateName = await rate.locator('.text-body').first().textContent();\n // console.log(`${roomName}-${rateName}`);\n if (!rateName) continue;\n // TODO wait for animation to end\n await page.waitForTimeout(1000);\n // await waitForAnimationEnd(room.nth(2));\n await rate\n .getByRole('button', {\n name: 'View price breakdown',\n })\n .click();\n const modal = page\n .locator('[class^=SimpleModal]', {\n hasText: '',\n })\n .first();\n await modal.waitFor({\n state: 'attached',\n });\n const modalSpinners = modal.locator(spinnerSelector);\n for (let spinner of await modalSpinners.all()) {\n await spinner.waitFor({\n state: 'detached',\n });\n }\n const nightlyPrices = modal.locator('.roomstay-tab-content .u-flex.u-marg-bottom');\n const rateTotal = getPrice(await modal.locator('.room-details--content-price-protection').textContent());\n set(rooms, [roomName, 'rates', rateName, 'total'], rateTotal);\n for (let night of await nightlyPrices.all()) {\n const nightName = await night.locator('> *:nth-child(1)').textContent();\n const nightPrice = getPrice(await night.locator('> *:nth-child(2)')?.textContent());\n if (!nightName || !nightPrice) continue;\n // set(rooms[roomName].rates![rateName].nights![nightName] = {};\n set(rooms, [roomName, 'rates', rateName, 'nights', nightName, 'price'], nightPrice);\n }\n await modal.locator('[name=Close]').click();\n await modal.waitFor({\n state: 'detached',\n });\n }\n }\n\n console.log(JSON.stringify(rooms, null, 2));\n});\n"]}
1
+ {"version":3,"file":"price.spec.js","sourceRoot":"/","sources":["e2e/price.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from '@playwright/test';\nimport set from 'lodash/set';\n\nconst args = process.argv.slice(3);\n// Extracting CLI parameters\nconst version = args[0] || process.env.PLAYWRIGHT_VERSION;\nconst hotelId = args[1] || process.env.PLAYWRIGHT_HOTEL_ID;\nconst startDate = args[2] || process.env.PLAYWRIGHT_START_DATE;\nconst endDate = args[3] || process.env.PLAYWRIGHT_END_DATE;\nconst children = parseInt(args[4], 10) || parseInt(process.env.PLAYWRIGHT_CHILDREN || '0', 10);\nconst adults = parseInt(args[5], 10) || parseInt(process.env.PLAYWRIGHT_ADULTS || '1', 10);\nconst promocode = args[6] ?? process.env.PLAYWRIGHT_PROMOCODE ?? '';\n\n// Set environment variables with PLAYWRIGHT_ prefix if parameters are provided\nif (version) {\n process.env.PLAYWRIGHT_VERSION = version;\n}\nif (hotelId) {\n process.env.PLAYWRIGHT_HOTEL_ID = hotelId;\n}\nif (startDate) {\n process.env.PLAYWRIGHT_START_DATE = startDate;\n}\nif (endDate) {\n process.env.PLAYWRIGHT_END_DATE = endDate;\n}\nif (!isNaN(children)) {\n process.env.PLAYWRIGHT_CHILDREN = children.toString();\n}\nif (!isNaN(adults)) {\n process.env.PLAYWRIGHT_ADULTS = adults.toString();\n}\nif (promocode) {\n process.env.PLAYWRIGHT_PROMOCODE = promocode;\n}\n\nif (!version || !hotelId || !startDate || !endDate || isNaN(children) || isNaN(adults)) {\n console.error('Usage: yarn run test:playwright <version> <hotelId> <startDate> <endDate> <children> <adults> <promocode>');\n console.error('Example: yarn run test:playwright 2/6.13 fa737326-ccdb-496a-bd31-2fbc3e97ed59 2024-08-28 2024-08-30 1 2');\n process.exit(1);\n}\n\nconst url = `https://production.app.roomstay.io/${version}/feature.html?engine=fp&hotel=${hotelId}#/step/date/?arrive=${startDate}&depart=${endDate}&children=${children}&adults=${adults}&promocode=${promocode}`;\nconst params: any = { version, hotelId, startDate, endDate, children, adults, promocode, url };\nconsole.log(params);\n\nconst spinnerSelector = '[name=Spinner]';\n\ntype Rooms = {\n [room: string]: {\n cheapestPrice?: number;\n rates?: {\n [rate: string]: {\n nights?: {\n [nightName: string]: {\n price?: number;\n };\n };\n total?: number;\n };\n };\n };\n};\n\n// function waitForAnimationEnd(locator: Locator) {\n// return locator.evaluate((element) => Promise.all(element.getAnimations().map((animation) => animation.finished)));\n// }\n\nconst getPrice = (text?: string | null): number | undefined => {\n const textPrice = text?.replace(/[a-zA-Z$]/g, '');\n return textPrice && !isNaN(+textPrice) ? +textPrice : undefined;\n};\n\nconst TIMEOUT = 5 * 60 * 1000;\ntest.setTimeout(TIMEOUT);\ntest('price', async ({ page }) => {\n //------------------------------------INIT------------------------------------\n await page.goto(url);\n\n //------------------------------------WAIT HOTEL APPLIED------------------------------------\n const [hotelResponse] = await Promise.all([\n page.waitForResponse((resp) => {\n const url = new URL(resp.url()).pathname.replace(/\\/$/, '').endsWith(`/frontend/hotel/${hotelId}`);\n return url && resp.status() === 200;\n }),\n page.waitForResponse((resp) => {\n const url = new URL(resp.url()).pathname.replace(/\\/$/, '').endsWith(`/frontend/availability/${hotelId}`);\n return url && resp.status() === 200;\n }),\n ]);\n const responseData = await hotelResponse.json();\n console.log({ responseData });\n await Promise.all([expect(page.locator('.hotel-name')).toHaveText(responseData.name), expect(page.locator('.room-details-container').first()).toBeVisible()]);\n\n //------------------------------------INIT------------------------------------\n const roomList = page.locator('.room-details-container');\n\n //------------------------------------1. TOTAL RATE PRICE------------------------------------\n let rooms: Rooms = {};\n for (let room of await roomList.all()) {\n await room.locator(spinnerSelector).first().waitFor({\n state: 'detached',\n });\n const roomName = await room.locator('.room-details--content-title').textContent();\n if (!roomName) continue;\n await room\n .getByRole('button', {\n name: 'View rates now',\n })\n .click();\n const cheapestPrice = getPrice(await room.locator('.room-details--content-price .headline').first().textContent()) || 0;\n set(rooms, [roomName, 'cheapestPrice'], cheapestPrice);\n //------------------------------------1. CHEAPEST PRICE------------------------------------\n const rates = room.locator('.room-info.--default');\n for (let rate of await rates.all()) {\n await rate.waitFor({\n state: 'attached',\n });\n const rateName = await rate.locator('.text-body').first().textContent();\n // console.log(`${roomName}-${rateName}`);\n if (!rateName) continue;\n // TODO wait for animation to end\n await page.waitForTimeout(1000);\n // await waitForAnimationEnd(room.nth(2));\n await rate\n .getByRole('button', {\n name: 'View price breakdown',\n })\n .click();\n const modal = page\n .locator('[class^=SimpleModal]', {\n hasText: '',\n })\n .first();\n await modal.waitFor({\n state: 'attached',\n });\n const modalSpinners = modal.locator(spinnerSelector);\n for (let spinner of await modalSpinners.all()) {\n await spinner.waitFor({\n state: 'detached',\n });\n }\n const nightlyPrices = modal.locator('.roomstay-tab-content .u-flex.u-marg-bottom');\n const rateTotal = getPrice(await modal.locator('.room-details--content-price-protection').textContent());\n set(rooms, [roomName, 'rates', rateName, 'total'], rateTotal);\n for (let night of await nightlyPrices.all()) {\n const nightName = await night.locator('> *:nth-child(1)').textContent();\n const nightPrice = getPrice(await night.locator('> *:nth-child(2)')?.textContent());\n if (!nightName || !nightPrice) continue;\n // set(rooms[roomName].rates![rateName].nights![nightName] = {};\n set(rooms, [roomName, 'rates', rateName, 'nights', nightName, 'price'], nightPrice);\n }\n await modal.locator('[name=Close]').click();\n await modal.waitFor({\n state: 'detached',\n });\n }\n }\n\n console.log(JSON.stringify(rooms, null, 2));\n});\n"]}