@mirai/core 0.4.36 → 0.4.37

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 (209) hide show
  1. package/package.json +1 -1
  2. package/.env +0 -22
  3. package/.gitlab-ci.yml +0 -4
  4. package/.nvmrc +0 -1
  5. package/__tests__/Booking/__mocks__/booking-delete.json +0 -1
  6. package/__tests__/Booking/__mocks__/booking-get.json +0 -105
  7. package/__tests__/Booking/booking.constants.js +0 -8
  8. package/__tests__/Booking/workflows/cancel.workflow.js +0 -20
  9. package/__tests__/Booking/workflows/index.js +0 -5
  10. package/__tests__/Booking/workflows/openMobileMenu.workflow.js +0 -4
  11. package/__tests__/Booking/workflows/print.workflow.js +0 -13
  12. package/__tests__/Booking/workflows/resend.workflow.js +0 -18
  13. package/__tests__/Booking/workflows/review.workflow.js +0 -17
  14. package/__tests__/BookingQuery/__mocks__/user-booking-get.json +0 -9
  15. package/__tests__/BookingQuery/workflows/index.js +0 -1
  16. package/__tests__/BookingQuery/workflows/login.workflow.js +0 -22
  17. package/__tests__/Checkout/__mocks__/checkout-get.json +0 -935
  18. package/__tests__/Checkout/__mocks__/checkout-post-PAYLATER.json +0 -10
  19. package/__tests__/Checkout/__mocks__/checkout-post-TPV.json +0 -7
  20. package/__tests__/Checkout/__mocks__/checkout-post-TRANSFER.json +0 -10
  21. package/__tests__/Checkout/checkout.constants.js +0 -8
  22. package/__tests__/Checkout/workflows/form.workflow.js +0 -17
  23. package/__tests__/Checkout/workflows/index.js +0 -4
  24. package/__tests__/Checkout/workflows/payment.workflow.js +0 -10
  25. package/__tests__/Checkout/workflows/review.workflow.js +0 -19
  26. package/__tests__/Checkout/workflows/submit.workflow.js +0 -9
  27. package/__tests__/Deals/__mocks__/deals-success.json +0 -739
  28. package/__tests__/Deals/workflows/calendar.workflow.js +0 -14
  29. package/__tests__/Deals/workflows/clear.workflow.js +0 -7
  30. package/__tests__/Deals/workflows/index.js +0 -5
  31. package/__tests__/Deals/workflows/occupation.workflow.js +0 -6
  32. package/__tests__/Deals/workflows/promocode.workflow.js +0 -3
  33. package/__tests__/Deals/workflows/submit.workflow.js +0 -6
  34. package/__tests__/Finder/workflows/calendar.workflow.js +0 -10
  35. package/__tests__/Finder/workflows/index.js +0 -3
  36. package/__tests__/Finder/workflows/occupation.workflow.js +0 -27
  37. package/__tests__/Finder/workflows/promocode.workflow.js +0 -8
  38. package/__tests__/Rates/__mocks__/extras-one-success.json +0 -138
  39. package/__tests__/Rates/__mocks__/extras-success.json +0 -397
  40. package/__tests__/Rates/__mocks__/rates-success.json +0 -731
  41. package/__tests__/Rates/workflows/extras.js +0 -9
  42. package/__tests__/Rates/workflows/extrasExpect.js +0 -11
  43. package/__tests__/Rates/workflows/index.js +0 -4
  44. package/__tests__/Rates/workflows/multiroom.js +0 -26
  45. package/__tests__/Rates/workflows/rates.js +0 -9
  46. package/__tests__/Session/workflows/bookings.workflow.js +0 -18
  47. package/__tests__/Session/workflows/forgotPassword.workflow.js +0 -20
  48. package/__tests__/Session/workflows/index.js +0 -5
  49. package/__tests__/Session/workflows/login.workflow.js +0 -29
  50. package/__tests__/Session/workflows/logout.workflow.js +0 -8
  51. package/__tests__/Session/workflows/profile.workflow.js +0 -49
  52. package/__tests__/Signup/workflows/index.js +0 -2
  53. package/__tests__/Signup/workflows/signup.workflow.js +0 -26
  54. package/__tests__/Signup/workflows/signupError.workflow.js +0 -22
  55. package/__tests__/__screenshots__/rates.spec.jsx/Desktop/Search-multiroom-with-one-extras-1.png +0 -0
  56. package/__tests__/__screenshots__/rates.spec.jsx/Desktop/Search-multiroom-with-some-extras-1.png +0 -0
  57. package/__tests__/__screenshots__/rates.spec.jsx/iPhone-12/Search-multiroom-with-one-extras-1.png +0 -0
  58. package/__tests__/__screenshots__/rates.spec.jsx/iPhone-12/Search-multiroom-with-some-extras-1.png +0 -0
  59. package/__tests__/booking.spec.jsx +0 -34
  60. package/__tests__/bookingQuey.spec.js +0 -43
  61. package/__tests__/buttonFinder.spec.js +0 -16
  62. package/__tests__/checkout.spec.jsx +0 -52
  63. package/__tests__/constants.js +0 -20
  64. package/__tests__/deals.spec.js +0 -30
  65. package/__tests__/finder.spec.js +0 -75
  66. package/__tests__/helpers/closeNotification.js +0 -7
  67. package/__tests__/helpers/getWeekNumber.js +0 -8
  68. package/__tests__/helpers/index.js +0 -2
  69. package/__tests__/rates.spec.jsx +0 -39
  70. package/__tests__/session.spec.js +0 -32
  71. package/__tests__/signup.spec.js +0 -17
  72. package/build/components/BannerLoyalty/__tests__/__snapshots__/BannerLoyalty.skeleton.test.js.snap +0 -287
  73. package/build/components/BannerLoyalty/__tests__/__snapshots__/BannerLoyalty.test.js.snap +0 -102
  74. package/build/components/Booking/__tests__/__snapshots__/Booking.test.js.snap +0 -1302
  75. package/build/components/Booking/components/Field/__tests__/__snapshots__/Field.test.js.snap +0 -139
  76. package/build/components/Booking/components/Hotelverse/__tests__/__snapshots__/Hotelverse.test.js.snap +0 -108
  77. package/build/components/Booking/partials/__tests__/__snapshots__/Booking.FormCancel.test.js.snap +0 -546
  78. package/build/components/Booking/partials/__tests__/__snapshots__/Booking.FormEdit.test.js.snap +0 -46
  79. package/build/components/Booking/partials/__tests__/__snapshots__/Booking.FormResend.test.js.snap +0 -166
  80. package/build/components/Booking/partials/__tests__/__snapshots__/Booking.Information.test.js.snap +0 -110
  81. package/build/components/Booking/partials/__tests__/__snapshots__/Booking.Menu.test.js.snap +0 -82
  82. package/build/components/Booking/partials/__tests__/__snapshots__/Booking.Modal.test.js.snap +0 -432
  83. package/build/components/Booking/partials/__tests__/__snapshots__/Booking.ModalAgency.test.js.snap +0 -319
  84. package/build/components/Booking/partials/__tests__/__snapshots__/Booking.Payment.test.js.snap +0 -178
  85. package/build/components/BookingQuery/__tests__/__snapshots__/BookingQuery.test.js.snap +0 -1048
  86. package/build/components/ButtonFinder/__tests__/__snapshots__/ButtonFinder.test.js.snap +0 -8210
  87. package/build/components/Chat/__tests__/__snapshots__/Chat.constants.test.js.snap +0 -30
  88. package/build/components/Chat/__tests__/__snapshots__/Chat.test.js.snap +0 -634
  89. package/build/components/Chat/components/Avatar/__tests__/__snapshots__/Avatar.test.jsx.snap +0 -97
  90. package/build/components/Chat/components/Input/__tests__/__snapshots__/Input.test.jsx.snap +0 -178
  91. package/build/components/Chat/components/InputRich/__tests__/__snapshots__/InputRich.test.jsx.snap +0 -282
  92. package/build/components/Chat/components/Message/__tests__/__snapshots__/Message.test.jsx.snap +0 -211
  93. package/build/components/Chat/components/Message/components/__tests__/__snapshots__/Booking.test.js.snap +0 -65
  94. package/build/components/Chat/components/Message/components/__tests__/__snapshots__/Card.test.js.snap +0 -29
  95. package/build/components/Chat/components/Message/components/__tests__/__snapshots__/Environment.test.js.snap +0 -44
  96. package/build/components/Chat/components/Offline/__tests__/__snapshots__/Offline.test.js.snap +0 -162
  97. package/build/components/Chat/helpers/__tests__/__snapshots__/getVerboseDate.test.js.snap +0 -9
  98. package/build/components/Checkout/__tests__/__snapshots__/Checkout.test.js.snap +0 -2018
  99. package/build/components/Checkout/components/InputRadio/__tests__/__snapshots__/InputRadio.test.js.snap +0 -347
  100. package/build/components/Checkout/partials/__tests__/__snapshots__/Checkout.Confirmation.test.js.snap +0 -418
  101. package/build/components/Checkout/partials/__tests__/__snapshots__/Checkout.Form.test.js.snap +0 -6754
  102. package/build/components/Deals/__tests__/__snapshots__/Deals.Calendar.test.js.snap +0 -4449
  103. package/build/components/Deals/__tests__/__snapshots__/Deals.constants.js.snap +0 -15
  104. package/build/components/Deals/__tests__/__snapshots__/Deals.test.js.snap +0 -7828
  105. package/build/components/Deals/helpers/__tests__/__mocks__/deal.json +0 -25
  106. package/build/components/Environment/__tests__/__snapshots__/Environment.State.test.js.snap +0 -120
  107. package/build/components/Environment/__tests__/__snapshots__/Environment.test.js.snap +0 -988
  108. package/build/components/Finder/__tests__/__snapshots__/Finder.constants.test.js.snap +0 -39
  109. package/build/components/Finder/__tests__/__snapshots__/Finder.test.js.snap +0 -22237
  110. package/build/components/Finder/components/Calendar/__tests__/__mocks__/prices.json +0 -11
  111. package/build/components/Finder/components/Calendar/__tests__/__snapshots__/Calendar.test.js.snap +0 -11108
  112. package/build/components/Finder/components/Places/__tests__/__mocks__/places.json +0 -44
  113. package/build/components/Finder/components/Places/__tests__/__snapshots__/Places.test.js.snap +0 -324
  114. package/build/components/Finder/helpers/__tests__/__mocks__/dataSource.json +0 -1382
  115. package/build/components/Finder/helpers/__tests__/__snapshots__/getForwarderUrl.test.js.snap +0 -7
  116. package/build/components/Header/__tests__/__snapshots__/Header.test.js.snap +0 -1187
  117. package/build/components/Profile/components/Bookings/__tests__/__snapshots__/Bookings.test.js.snap +0 -19
  118. package/build/components/Rates/__tests__/__snapshots__/Rates.Content.test.js.snap +0 -41
  119. package/build/components/Rates/__tests__/__snapshots__/Rates.Footer.test.js.snap +0 -50
  120. package/build/components/Rates/__tests__/__snapshots__/Rates.Header.test.js.snap +0 -3
  121. package/build/components/Rates/__tests__/__snapshots__/Rates.RoomSelector.test.js.snap +0 -3
  122. package/build/components/Rates/__tests__/__snapshots__/Rates.Unavailability.test.js.snap +0 -53
  123. package/build/components/Rates/__tests__/__snapshots__/Rates.test.js.snap +0 -11760
  124. package/build/components/Rates/components/CardHotel/__tests__/__snapshots__/CardHotel.test.js.snap +0 -113
  125. package/build/components/Rates/components/Filters/__tests__/__snapshots__/FIlters.Button.test.js.snap +0 -32
  126. package/build/components/Rates/components/Filters/__tests__/__snapshots__/Filters.Amenity.test.js.snap +0 -21
  127. package/build/components/Rates/components/Filters/__tests__/__snapshots__/Filters.BookingOption.test.js.snap +0 -32
  128. package/build/components/Rates/components/Filters/__tests__/__snapshots__/Filters.test.js.snap +0 -167
  129. package/build/components/Rates/components/Hotelverse/__tests__/__snapshots__/Hotelverse.test.js.snap +0 -3
  130. package/build/components/Rates/components/Item/__tests__/__snapshots__/Item.Preview.test.js.snap +0 -96
  131. package/build/components/Rates/components/Item/__tests__/__snapshots__/Item.Rates.test.js.snap +0 -9
  132. package/build/components/Rates/components/Item/__tests__/__snapshots__/Item.Summary.test.js.snap +0 -53
  133. package/build/components/Rates/components/Item/__tests__/__snapshots__/Item.test.js.snap +0 -154
  134. package/build/components/Rates/components/Item/components/Amenities/__tests__/__snapshots__/Amenities.test.js.snap +0 -3
  135. package/build/components/Rates/components/Item/components/Countdown/__tests__/__snapshots__/Countdown.test.js.snap +0 -3
  136. package/build/components/Rates/components/Item/components/Features/__tests__/__snapshots__/Features.test.js.snap +0 -40
  137. package/build/components/Rates/components/Item/components/ModalCancellationInfo/__tests__/__snapshots__/ModalCancellationInfo.test.js.snap +0 -35
  138. package/build/components/Rates/components/Item/components/ModalInfo/__tests__/__snapshots__/ModalInfo.test.js.snap +0 -72
  139. package/build/components/Rates/components/Item/components/ModalOfferInfo/__tests__/__snapshots__/ModalOfferInfo.test.js.snap +0 -49
  140. package/build/components/Rates/components/Item/components/ModalUrl/__tests__/__snapshots__/ModalUrl.test.js.snap +0 -50
  141. package/build/components/Rates/components/Item/components/Option/__tests__/__snapshots__/Option.test.js.snap +0 -18
  142. package/build/components/Rates/components/Item/components/PriceDetails/__tests__/__snapshots__/PriceDetails.test.js.snap +0 -23
  143. package/build/components/Rates/components/Item/components/RateDetails/__tests__/__snapshots__/RateDetails.test.js.snap +0 -3
  144. package/build/components/Rates/components/Item/components/Slider/__tests__/__snapshots__/Slider.test.js.snap +0 -27
  145. package/build/components/Rates/components/Item/components/TooltipDates/__tests__/__snapshots__/TooltipDates.test.js.snap +0 -3
  146. package/build/components/Rates/components/ModalClubRate/__tests__/__snapshots__/ModalClubRate.test.js.snap +0 -257
  147. package/build/components/Rates/components/ModalExtras/__tests__/__snapshots__/ModalExtras.test.js.snap +0 -68
  148. package/build/components/Rates/components/ModalMapView/__tests__/__snapshots__/ModalMapView.test.js.snap +0 -78
  149. package/build/components/Session/__tests__/__snapshots__/Session.test.js.snap +0 -260
  150. package/build/components/Signup/__tests__/__snapshots__/Signup.test.js.snap +0 -1091
  151. package/build/components/__shared__/BookingDates/__tests__/__snapshots__/BookingDates.test.js.snap +0 -208
  152. package/build/components/__shared__/BookingDetails/__tests__/__snapshots__/BookingDetails.test.js.snap +0 -2190
  153. package/build/components/__shared__/BookingTable/__tests__/__snapshots__/BookingTable.Row.test.js.snap +0 -500
  154. package/build/components/__shared__/BookingTable/__tests__/__snapshots__/BookingTable.test.js.snap +0 -745
  155. package/build/components/__shared__/BookingTerms/__tests__/__snapshots__/BookingTerms.test.js.snap +0 -450
  156. package/build/components/__shared__/ButtonMore/__tests__/__snapshots__/ButtonMore.test.js.snap +0 -115
  157. package/build/components/__shared__/ButtonPayment/__tests__/__snapshots__/ButtonPayment.test.js.snap +0 -206
  158. package/build/components/__shared__/ButtonPayment/components/Form/__tests__/__snapshots__/Form.test.js.snap +0 -65
  159. package/build/components/__shared__/ButtonPayment/components/FormAddon/__tests__/__snapshots__/FormAddon.test.js.snap +0 -68
  160. package/build/components/__shared__/ButtonPayment/components/FormCheckout/__tests__/__snapshots__/FormCheckout.test.js.snap +0 -356
  161. package/build/components/__shared__/ButtonPayment/components/FormCheckout/helpers/__tests__/__snapshots__/getStyle.test.js.snap +0 -23
  162. package/build/components/__shared__/ButtonPayment/components/FormPaycomet/__tests__/__snapshots__/FormPaycomet.test.js.snap +0 -165
  163. package/build/components/__shared__/ButtonPayment/components/FormSipay/__tests__/__snapshots__/FormSipay.test.js.snap +0 -161
  164. package/build/components/__shared__/ButtonPayment/components/InputField/__tests__/__snapshots__/InputField.test.js.snap +0 -190
  165. package/build/components/__shared__/Card/__tests__/__snapshots__/Card.test.js.snap +0 -34
  166. package/build/components/__shared__/Countdown/__tests__/__snapshots__/Countdown.test.js.snap +0 -42
  167. package/build/components/__shared__/Field/__tests__/__snapshots__/Field.test.js.snap +0 -1018
  168. package/build/components/__shared__/FieldOccupation/__tests__/__snapshots__/FieldOccupation.test.js.snap +0 -2243
  169. package/build/components/__shared__/FieldPromocode/__tests__/__snapshots__/FieldPromocode.test.jsx.snap +0 -373
  170. package/build/components/__shared__/Footer/__tests__/__snapshots__/Footer.test.js.snap +0 -178
  171. package/build/components/__shared__/NotificationRequiredFields/__tests__/__snapshots__/NotificationRequiredFields.test.js.snap +0 -118
  172. package/build/components/__shared__/Occupation/__tests__/__mocks__/occupation.json +0 -17
  173. package/build/components/__shared__/Occupation/__tests__/__snapshots__/Occupation.test.js.snap +0 -3754
  174. package/build/components/__shared__/Payment/__tests__/__snapshots__/Payment.test.js.snap +0 -1109
  175. package/build/components/__shared__/Payment/components/AmazonPay/__tests__/__snapshots__/AmazonPay.test.js.snap +0 -23
  176. package/build/components/__shared__/Payment/components/Aplazame/__tests__/__snapshots__/Aplazame.test.js.snap +0 -33
  177. package/build/components/__shared__/Payment/components/Card/__tests__/__snapshots__/Card.test.js.snap +0 -933
  178. package/build/components/__shared__/Payment/components/PCI/__tests__/__snapshots__/PCI.test.js.snap +0 -474
  179. package/build/components/__shared__/Payment/components/Tpv/__tests__/__snapshots__/Tpv.test.js.snap +0 -98
  180. package/build/components/__shared__/PriceBreakdown/__tests__/__snapshots__/PriceBreakdown.Line.test.js.snap +0 -49
  181. package/build/components/__shared__/PriceBreakdown/__tests__/__snapshots__/PriceBreakdown.test.js.snap +0 -337
  182. package/build/components/__shared__/SelectEnvironment/__tests__/__snapshots__/SelectEnvironment.test.js.snap +0 -1192
  183. package/build/components/__shared__/Skeleton/__tests__/__snapshots__/Skeleton.test.js.snap +0 -66
  184. package/build/components/__shared__/TextRequiredFields/__tests__/__snapshots__/TextRequiredFields.test.js.snap +0 -41
  185. package/build/components/helpers/__tests__/__mocks__/hotels.json +0 -87
  186. package/build/components/helpers/__tests__/__snapshots__/parseHtml.test.js.snap +0 -317
  187. package/playwright.config.js +0 -50
  188. package/public/App.Container.jsx +0 -147
  189. package/public/App.jsx +0 -34
  190. package/public/App.module.css +0 -153
  191. package/public/index.html +0 -32
  192. package/public/index.template.html +0 -19
  193. package/public/performance/index.html +0 -159
  194. package/public/routes/Deals.jsx +0 -20
  195. package/public/routes/Finder.jsx +0 -19
  196. package/public/routes/Home.constants.js +0 -52
  197. package/public/routes/Home.jsx +0 -131
  198. package/public/routes/NotFound.jsx +0 -23
  199. package/public/routes/Profile.jsx +0 -21
  200. package/public/routes/Signup.jsx +0 -20
  201. package/public/routes/Step0-Accommodations.jsx +0 -4
  202. package/public/routes/Step1-Rates.jsx +0 -12
  203. package/public/routes/Step2-Checkout.jsx +0 -4
  204. package/public/routes/Step3-Booking.jsx +0 -4
  205. package/public/routes/components/Logo.jsx +0 -18
  206. package/public/routes/components/index.js +0 -1
  207. package/public/routes/index.js +0 -10
  208. package/public/routes/routes.module.css +0 -259
  209. package/public/themes/monalisa.theme.css +0 -45
@@ -1,9 +0,0 @@
1
- export const extras = async ({ page, empty, onlyOne }) => {
2
- await page.route('https://reservation.mirai.com/XMAS/reservation/v2/booking/extras*', (route) => {
3
- route.fulfill({
4
- status: 200,
5
- contentType: 'application/json',
6
- body: JSON.stringify(empty ? {} : require(`../__mocks__/extras${onlyOne ? '-one' : ''}-success.json`)),
7
- });
8
- });
9
- };
@@ -1,11 +0,0 @@
1
- import { expect } from '@playwright/test';
2
-
3
- export const extrasExpect = async ({ page, testId }) => {
4
- await page.waitForTimeout(500);
5
- await expect(page).toHaveScreenshot({
6
- clip: await (await page.getByTestId(`${testId}-modalExtras`)).boundingBox(),
7
- });
8
-
9
- await page.getByTestId(`${testId}-modalExtras-submit`).click();
10
- await expect(page).toHaveURL(/.*step2-checkout/, { timeout: 10000 });
11
- };
@@ -1,4 +0,0 @@
1
- export * from './extras';
2
- export * from './extrasExpect';
3
- export * from './multiroom';
4
- export * from './rates';
@@ -1,26 +0,0 @@
1
- import { expect } from '@playwright/test';
2
-
3
- import { occupation } from '../../Finder/workflows';
4
-
5
- const WAIT_URL = 'https://reservation.mirai.com/XMAS/reservation/v2/booking/rates*';
6
-
7
- export const multiroom = async ({ isMobile, page, testId }) => {
8
- await expect(await page.getByTestId(`${testId}-multiroom`)).toBeHidden();
9
-
10
- await occupation({ addRoom: true, isMobile, page, search: true, testId: `${testId}-finder` });
11
- await expect(await page.getByTestId(`${testId}-multiroom`)).toBeVisible();
12
-
13
- await page.waitForResponse(WAIT_URL);
14
- const buttons = await page.getByTestId(`${testId}-multiroom`).locator('ui-button').all();
15
- expect(buttons.length).toBe(2);
16
- expect(buttons[0]).not.toHaveAttribute('disabled');
17
- expect(buttons[1]).toHaveAttribute('disabled');
18
-
19
- await page.getByTestId(`${testId}-item-0-select`).click();
20
- await page.waitForResponse(WAIT_URL);
21
- expect(buttons[0]).not.toHaveAttribute('disabled');
22
- expect(buttons[1]).not.toHaveAttribute('disabled');
23
-
24
- await page.getByTestId(`${testId}-item-0-select`).click();
25
- await page.getByTestId(`${testId}-footer-reserve`).click();
26
- };
@@ -1,9 +0,0 @@
1
- export const rates = async ({ page }) => {
2
- await page.route('https://reservation.mirai.com/XMAS/reservation/v2/booking/rates*', (route) => {
3
- route.fulfill({
4
- status: 200,
5
- contentType: 'application/json',
6
- body: JSON.stringify(require('../__mocks__/rates-success.json')),
7
- });
8
- });
9
- };
@@ -1,18 +0,0 @@
1
- import { expect } from '@playwright/test';
2
-
3
- export const bookings = async ({ isMobile, page }) => {
4
- await page.getByTestId('show-profile-menu').click();
5
- await page.getByTestId(`profile-menu-${isMobile ? 2 : 1}`).click();
6
-
7
- await page.waitForURL(/\/profile/, { waitUntil: 'networkidle', timeout: 10000 });
8
-
9
- // Card: price details
10
- await page.getByText('Price details').first().click();
11
- await expect(page.locator('ui-tooltip-content')).toBeVisible();
12
-
13
- // Search
14
- await page.getByTestId('show-search').click();
15
- await page.fill('input[name="search"]', '19800410');
16
- await page.getByTestId('button-search').click();
17
- await expect(page.locator('ui-tooltip-content')).not.toBeVisible();
18
- };
@@ -1,20 +0,0 @@
1
- import { expect } from '@playwright/test';
2
-
3
- import { USER } from '../../constants';
4
-
5
- export const forgotPassword = async ({ page }) => {
6
- await page.getByTestId('show-login').click();
7
- await page.waitForTimeout(300);
8
-
9
- await page.getByTestId('login-action').click();
10
-
11
- await page.fill('input[name="email"]', USER.email);
12
-
13
- const [responseError] = await Promise.all([
14
- page.waitForResponse((response) => response.url().includes('/recovery') && !!response.status()),
15
- page.getByTestId('login-button').click(),
16
- ]);
17
- expect(responseError.status()).toBe(200);
18
-
19
- await page.getByTestId('login-button-secondary').click();
20
- };
@@ -1,5 +0,0 @@
1
- export * from './bookings.workflow';
2
- export * from './forgotPassword.workflow';
3
- export * from './login.workflow';
4
- export * from './logout.workflow';
5
- export * from './profile.workflow';
@@ -1,29 +0,0 @@
1
- import { expect } from '@playwright/test';
2
-
3
- import { SESSION } from '../../constants';
4
-
5
- export const login = async ({ page }) => {
6
- await page.getByTestId('show-login').click();
7
- await page.waitForTimeout(300);
8
-
9
- // Fails
10
- await page.fill('input[name="email"]', SESSION.email);
11
- expect(await page.getByTestId('login-button').getAttribute('disabled')).toBe('true');
12
- await page.fill('input[name="password"]', 'PassworD');
13
-
14
- const [responseError] = await Promise.all([
15
- page.waitForResponse((response) => response.url().includes('/login') && !!response.status()),
16
- page.getByTestId('login-button').click(),
17
- ]);
18
- expect(responseError.status()).toBe(400);
19
-
20
- // Success
21
- await page.fill('input[name="email"]', SESSION.email);
22
- await page.fill('input[name="password"]', SESSION.password);
23
-
24
- const [response] = await Promise.all([
25
- page.waitForResponse((response) => response.url().includes('/login') && !!response.status()),
26
- page.getByTestId('login-button').click(),
27
- ]);
28
- expect(response.status()).toBe(200);
29
- };
@@ -1,8 +0,0 @@
1
- import { expect } from '@playwright/test';
2
-
3
- export const logout = async ({ isMobile, page }) => {
4
- await page.getByTestId('show-profile-menu').click();
5
- await page.getByTestId(`profile-menu-${isMobile ? 3 : 2}`).click();
6
-
7
- await expect(page.getByTestId('show-login')).toBeVisible();
8
- };
@@ -1,49 +0,0 @@
1
- import { expect } from '@playwright/test';
2
-
3
- import { SESSION, USER } from '../../constants';
4
-
5
- // ! TODO: Somehow we should close the notifications
6
- // import { closeNotification } from '../../helpers';
7
-
8
- export const profile = async ({ isMobile, page }) => {
9
- await page.getByTestId('show-profile-menu').click();
10
- await page.getByTestId(`profile-menu-${isMobile ? 1 : 0}`).click();
11
-
12
- await page.waitForURL(/\/profile/, { waitUntil: 'networkidle', timeout: 10000 });
13
-
14
- // Update profile
15
- await page.fill('input[name="firstName"]', USER.firstName);
16
- await page.fill('input[name="lastName"]', USER.lastName);
17
- await page.fill('input[name="dateOfBirth"]', USER.dateOfBirth);
18
- await page.locator('input[name="subscribed"]').check();
19
-
20
- const [response] = await Promise.all([
21
- page.waitForResponse((response) => response.url().includes('/modify_member') && !!response.status()),
22
- page.getByTestId('button-save').click(),
23
- ]);
24
- expect(response.status()).toBe(200);
25
- // await closeNotification();
26
-
27
- // Move to "security" context
28
- await page.getByTestId('profile-context-2').click();
29
-
30
- // Try to change the password but user fails with the confirmation password
31
- await page.fill('input[name="password"]', SESSION.password);
32
- await page.fill('input[name="rePassword"]', 'n3wp4ssw0rD');
33
- expect(await page.getByTestId('button-password').getAttribute('disabled')).toBe('true');
34
-
35
- // User changes password
36
- await page.fill('input[name="password"]', SESSION.password);
37
- await page.fill('input[name="rePassword"]', SESSION.password);
38
- const [responsePassword] = await Promise.all([
39
- page.waitForResponse((response) => response.url().includes('/modify_member') && !!response.status()),
40
- page.getByTestId('button-password').click(),
41
- ]);
42
- expect(responsePassword.status()).toBe(200);
43
- // await closeNotification();
44
-
45
- // Try to delete account and cancel process.
46
- await page.getByTestId('button-delete-account').click();
47
- await page.waitForTimeout(300);
48
- await page.getByTestId('button-delete-close').click();
49
- };
@@ -1,2 +0,0 @@
1
- export * from './signup.workflow';
2
- export * from './signupError.workflow';
@@ -1,26 +0,0 @@
1
- import { expect } from '@playwright/test';
2
-
3
- import { USER } from '../../constants';
4
-
5
- export const signup = async ({ page }) => {
6
- await page.fill('ui-signup input[name="firstName"]', USER.firstName);
7
- await page.fill('ui-signup input[name="lastName"]', USER.lastName);
8
- await page.fill('ui-signup input[name="email"]', `${new Date().getTime()}@mail.com`);
9
- await page.fill('ui-signup input[name="dateOfBirth"]', USER.dateOfBirth);
10
- await page.locator('ui-signup select[name="country"]').selectOption('United States');
11
- await page.fill('ui-signup input[name="password"]', USER.password);
12
- await page.locator('ui-signup input[name="subscribed"]').check();
13
-
14
- // User forgot some fields
15
- await page.getByTestId('signup-button').click();
16
- await page.waitForSelector('ui-notification-error', { state: 'visible' });
17
- await page.locator('input[name="privacy"]').check();
18
-
19
- // Success
20
- const [responseError] = await Promise.all([
21
- page.waitForResponse((response) => response.url().includes('/join') && !!response.status()),
22
- page.getByTestId('signup-button').click(),
23
- ]);
24
-
25
- expect(responseError.status()).toBe(201);
26
- };
@@ -1,22 +0,0 @@
1
- import { expect } from '@playwright/test';
2
-
3
- import { USER } from '../../constants';
4
-
5
- export const signupError = async ({ page }) => {
6
- await page.fill('ui-signup input[name="firstName"]', USER.firstName);
7
- await page.fill('ui-signup input[name="lastName"]', USER.lastName);
8
- await page.fill('ui-signup input[name="email"]', USER.email);
9
- await page.fill('ui-signup input[name="dateOfBirth"]', USER.dateOfBirth);
10
- await page.locator('ui-signup select[name="country"]').selectOption('United States');
11
- await page.fill('ui-signup input[name="password"]', USER.password);
12
- await page.locator('ui-signup input[name="subscribed"]').check();
13
- await page.locator('input[name="privacy"]').check();
14
-
15
- // Success
16
- const [responseError] = await Promise.all([
17
- page.waitForResponse((response) => response.url().includes('/join') && !!response.status()),
18
- page.getByTestId('signup-button').click(),
19
- ]);
20
-
21
- expect(responseError.status()).toBe(409);
22
- };
@@ -1,34 +0,0 @@
1
- import { test } from '@playwright/test';
2
-
3
- import { PAGE_URL, URL_PARAMS } from './Booking/booking.constants';
4
- import { cancel, print, resend, review } from './Booking/workflows';
5
-
6
- test.beforeEach(async ({ context, page }) => {
7
- await context.addInitScript(() => (window.IS_PLAYWRIGHT = true));
8
-
9
- await page.route('https://reservation.mirai.com/XMAS/reservation/v2/booking/*', (route) => {
10
- route.fulfill({
11
- status: 200,
12
- contentType: 'application/json',
13
- body: JSON.stringify(require(`./Booking/__mocks__/booking-${route.request().method().toLowerCase()}.json`)),
14
- });
15
- });
16
-
17
- await page.goto(`${PAGE_URL}${URL_PARAMS.DEFAULT}`, { waitUntil: 'networkidle', timeout: 10000 });
18
- });
19
-
20
- test(`Review`, async ({ isMobile, page }) => {
21
- await review({ isMobile, page });
22
- });
23
-
24
- test(`Print`, async ({ isMobile, page }) => {
25
- await print({ isMobile, page });
26
- });
27
-
28
- test(`Resend`, async ({ isMobile, page }) => {
29
- await resend({ isMobile, page });
30
- });
31
-
32
- test(`Cancel`, async ({ isMobile, page }) => {
33
- await cancel({ isMobile, page });
34
- });
@@ -1,43 +0,0 @@
1
- import { test, expect } from '@playwright/test';
2
-
3
- import { login } from './BookingQuery/workflows';
4
-
5
- const CORRECT_ID = '23011372299';
6
- const CORRECT_PIN_CODE = '7950376';
7
- const INCORRECT_ID = '123456789';
8
- const INCORRECT_PIN_CODE = '123456';
9
-
10
- const testId = 'bookingQuery';
11
-
12
- test.beforeEach(async ({ context, page }) => {
13
- await context.addInitScript(() => (window.IS_PLAYWRIGHT = true));
14
-
15
- await page.goto('http://local.mirai.com:8080', { waitUntil: 'networkidle', timeout: 10000 });
16
- });
17
-
18
- test('incorrect id and pinCode booking', async ({ page }) => {
19
- await login({ id: INCORRECT_ID, page, pinCode: INCORRECT_PIN_CODE, testId });
20
- await expect(page.getByTestId(`${testId}-notification-error`)).toBeVisible();
21
- });
22
-
23
- test('incorrect id and correct pinCode booking', async ({ page }) => {
24
- await login({ id: INCORRECT_ID, page, pinCode: CORRECT_PIN_CODE, testId });
25
- await expect(page.getByTestId(`${testId}-notification-error`)).toBeVisible();
26
- });
27
-
28
- test('correct id and incorrect pinCode booking', async ({ page }) => {
29
- await login({ id: CORRECT_ID, page, pinCode: INCORRECT_PIN_CODE, testId });
30
- await expect(page.getByTestId(`${testId}-notification-error`)).toBeVisible();
31
- });
32
-
33
- test('correct id and correct pinCode booking', async ({ page }) => {
34
- await page.route(/.*login_reservation.json*/, (route) => {
35
- route.fulfill({
36
- status: 200,
37
- contentType: 'application/json',
38
- body: JSON.stringify(require(`./BookingQuery/__mocks__/user-booking-get.json`)),
39
- });
40
- });
41
- await login({ id: CORRECT_ID, page, pinCode: CORRECT_PIN_CODE, testId, wait: false });
42
- await expect(page).toHaveURL(/.*step3-booking*/);
43
- });
@@ -1,16 +0,0 @@
1
- import { test } from '@playwright/test';
2
-
3
- const testId = `button-finder`;
4
-
5
- test.beforeEach(async ({ context, page }) => {
6
- await context.addInitScript(() => (window.IS_PLAYWRIGHT = true));
7
-
8
- await page.goto('http://local.mirai.com:8080', { waitUntil: 'networkidle', timeout: 10000 });
9
- });
10
-
11
- test('Open & Close', async ({ page }) => {
12
- await page.getByTestId(`${testId}-button-modal`).click();
13
- await page.waitForTimeout(300);
14
- await page.getByTestId(`${testId}-modal-button-close`).click();
15
- await page.waitForTimeout(300);
16
- });
@@ -1,52 +0,0 @@
1
- import { test } from '@playwright/test';
2
-
3
- import { PAGE_URL, URL_PARAMS } from './Checkout/checkout.constants';
4
- import { form, payment, review, submit } from './Checkout/workflows';
5
-
6
- const PAYMENTS = ['PAYLATER', 'TPV', 'TRANSFER'];
7
-
8
- test.beforeEach(async ({ context }) => {
9
- await context.addInitScript(() => (window.IS_PLAYWRIGHT = true));
10
- });
11
-
12
- const enviroment = async ({ page, payment }) => {
13
- await page.route(
14
- 'https://reservation.mirai.com/XMAS/reservation/request_is_possible_prereserve_V2.json*',
15
- (route) => {
16
- route.fulfill({
17
- status: 200,
18
- contentType: 'application/json',
19
- body: JSON.stringify({ status: 'OK', message: '', data: null }),
20
- });
21
- },
22
- );
23
- await page.route(/https:\/\/reservation\.mirai\.com\/XMAS\/reservation\/v2\/booking\/checkout(\?.*)?$/, (route) => {
24
- const method = route.request().method().toLowerCase();
25
-
26
- route.fulfill({
27
- status: 200,
28
- contentType: 'application/json',
29
- body: JSON.stringify(
30
- require(`./Checkout/__mocks__/checkout-${method}${method === 'post' ? `-${payment}` : ''}.json`),
31
- ),
32
- });
33
- });
34
-
35
- await page.goto(`${PAGE_URL}${URL_PARAMS.DEFAULT}`, { waitUntil: 'networkidle', timeout: 10000 });
36
- };
37
-
38
- PAYMENTS.forEach((paymentId) => {
39
- test(`Payment w/ ${paymentId}`, async ({ page }) => {
40
- await enviroment({ page, payment: paymentId });
41
-
42
- await form({ page });
43
- await payment({ page, payment: paymentId });
44
- await submit({ page, payment: paymentId });
45
- });
46
- });
47
-
48
- test(`Review & return to previous step`, async ({ page }) => {
49
- await enviroment({ page });
50
-
51
- await review({ page });
52
- });
@@ -1,20 +0,0 @@
1
- const DEFAULT_TIMEOUT = 10000;
2
-
3
- const SESSION = {
4
- email: 'hello@soyjavi.com',
5
- password: 'BuyB1tc01N',
6
- };
7
-
8
- const USER = {
9
- firstName: 'Hal',
10
- lastName: 'Finney',
11
- dateOfBirth: '04/05/1956',
12
- phone: {
13
- prefix: '+1',
14
- number: '818-555-1234',
15
- },
16
- email: 'hal@finney.org',
17
- password: 'BuyB1tc01N',
18
- };
19
-
20
- export { DEFAULT_TIMEOUT, SESSION, USER };
@@ -1,30 +0,0 @@
1
- import { test } from '@playwright/test';
2
-
3
- import { calendar, clear, occupation, promocode, submit } from './Deals/workflows';
4
-
5
- test.beforeEach(async ({ context, page }) => {
6
- await context.addInitScript(() => (window.IS_PLAYWRIGHT = true));
7
-
8
- await page.route('https://index-deal.mirai.com/100379008/350807', (route) => {
9
- route.fulfill({
10
- status: 200,
11
- contentType: 'application/json',
12
- body: JSON.stringify(require('./Deals/__mocks__/deals-success.json')),
13
- });
14
- });
15
- await page.goto('http://local.mirai.com:8080/deals', { waitUntil: 'networkidle', timeout: 10000 });
16
- });
17
-
18
- test('Search (default)', async ({ isMobile, page }) => {
19
- await calendar({ isMobile, page });
20
- await occupation({ isMobile, page });
21
- await promocode({ isMobile, page });
22
- await submit({ isMobile, page });
23
- });
24
-
25
- test('Fulfill form & clear', async ({ isMobile, page }) => {
26
- await calendar({ isMobile, page });
27
- await occupation({ isMobile, page });
28
- await promocode({ isMobile, page });
29
- await clear({ isMobile, page });
30
- });
@@ -1,75 +0,0 @@
1
- import { expect, test } from '@playwright/test';
2
-
3
- import { calendar, occupation, promocode } from './Finder/workflows';
4
-
5
- const testId = 'finder';
6
-
7
- test.beforeEach(async ({ context, page }) => {
8
- await context.addInitScript(() => (window.IS_PLAYWRIGHT = true));
9
-
10
- await page.goto('http://local.mirai.com:8080', { waitUntil: 'networkidle', timeout: 10000 });
11
- });
12
-
13
- test('Search (default)', async ({ page }) => {
14
- await calendar({ page, testId });
15
- await page.getByTestId(`${testId}-submit`).click();
16
-
17
- await expect(page).toHaveURL(/.*step1-rates/, { timeout: 10000 });
18
- });
19
-
20
- test('Search w/ +1 adult', async ({ isMobile, page }) => {
21
- await calendar({ isMobile, page, testId });
22
- await occupation({ addAdult: true, isMobile, page, testId });
23
-
24
- await page.getByTestId(`${testId}-submit`).click();
25
-
26
- await expect(page).toHaveURL(/.*step1-rates/, { timeout: 10000 });
27
- });
28
-
29
- test('Search w/ +1 child', async ({ isMobile, page }) => {
30
- await calendar({ isMobile, page, testId });
31
- await occupation({ addChild: true, isMobile, page, testId });
32
-
33
- await page.getByTestId(`${testId}-submit`).click();
34
-
35
- await expect(page).toHaveURL(/.*step1-rates/, { timeout: 10000 });
36
- });
37
-
38
- test('Search w/ +1 child widhout age', async ({ isMobile, page }) => {
39
- await calendar({ isMobile, page, testId });
40
- await occupation({ addAgeChild: false, addChild: true, isMobile, page, testId });
41
-
42
- await page.getByTestId(`${testId}-submit`).click();
43
-
44
- if (isMobile) await expect(page.getByTestId(`${testId}-occupation-field-modal`)).toBeVisible();
45
- else await expect(page.getByTestId(`${testId}-occupation`)).toBeVisible();
46
- });
47
-
48
- test('Search w/ promocode', async ({ isMobile, page }) => {
49
- await calendar({ isMobile, page, testId });
50
- await promocode({ isMobile, page, testId });
51
-
52
- await page.getByTestId(`${testId}-submit`).click();
53
-
54
- await expect(page).toHaveURL(/.*step1-rates/, { timeout: 10000 });
55
- });
56
-
57
- test('Search w/ +1 adult & promocode', async ({ isMobile, page }) => {
58
- await calendar({ isMobile, page, testId });
59
- await occupation({ addAdult: true, isMobile, page, testId });
60
- await promocode({ isMobile, page, testId });
61
-
62
- await page.getByTestId(`${testId}-submit`).click();
63
-
64
- await expect(page).toHaveURL(/.step1-rates/, { timeout: 10000 });
65
- });
66
-
67
- test('Search w/ +1 adult, +1 room & promocode', async ({ isMobile, page }) => {
68
- await calendar({ isMobile, page, testId });
69
- await occupation({ addAdult: true, addRoom: true, isMobile, page, testId });
70
- await promocode({ isMobile, page, testId });
71
-
72
- await page.getByTestId(`${testId}-submit`).click();
73
-
74
- await expect(page).toHaveURL(/.step1-rates/, { timeout: 10000 });
75
- });
@@ -1,7 +0,0 @@
1
- export const closeNotification = async ({ page }) => {
2
- await page.waitForTimeout(300);
3
-
4
- const button = page.locator('ui-notification[class*="visible"] ui-pressable');
5
- await button.waitFor({ state: 'visible' });
6
- await button.click();
7
- };
@@ -1,8 +0,0 @@
1
- import { UTC } from '@mirai/locale';
2
-
3
- export const getWeekNumber = (date) => {
4
- const firstDayOfYear = UTC(new Date(date.getFullYear(), 0, 1));
5
- const pastDaysOfYear = (Number(date) - Number(firstDayOfYear)) / 86400000;
6
-
7
- return Math.ceil((pastDaysOfYear + firstDayOfYear.getDay()) / 7);
8
- };
@@ -1,2 +0,0 @@
1
- export * from './closeNotification';
2
- export * from './getWeekNumber';
@@ -1,39 +0,0 @@
1
- import { expect, test } from '@playwright/test';
2
-
3
- import { extras, extrasExpect, multiroom, rates } from './Rates/workflows';
4
-
5
- const testId = 'rates';
6
-
7
- test.beforeEach(async ({ context, page }) => {
8
- await context.addInitScript(() => (window.IS_PLAYWRIGHT = true));
9
- await rates({ page });
10
-
11
- await page.goto(
12
- 'http://local.mirai.com:8080/step1-rates?checkin=10/04/2025&idtokenprovider=100379008&currency=EUR&hsri=02040&lang=en&nights=2&parties=W3siYWR1bHRzIjoyLCJjaGlsZHJlbiI6W119XQ%3D%3D&&step=1',
13
- { waitUntil: 'networkidle', timeout: 10000 },
14
- );
15
- });
16
-
17
- test('Search multiroom without extras', async ({ isMobile, page }) => {
18
- await rates({ page });
19
- await extras({ empty: true, page });
20
- await multiroom({ isMobile, page, testId });
21
-
22
- await expect(page).toHaveURL(/.*step2-checkout/, { timeout: 10000 });
23
- });
24
-
25
- test('Search multiroom with some extras', async ({ isMobile, page }) => {
26
- await rates({ page });
27
- await extras({ page });
28
- await multiroom({ isMobile, page, testId });
29
-
30
- await extrasExpect({ page, testId });
31
- });
32
-
33
- test('Search multiroom with one extras', async ({ isMobile, page }) => {
34
- await rates({ page });
35
- await extras({ onlyOne: true, page });
36
- await multiroom({ isMobile, page, testId });
37
-
38
- await extrasExpect({ page, testId });
39
- });
@@ -1,32 +0,0 @@
1
- import { test } from '@playwright/test';
2
-
3
- import { bookings, forgotPassword, login, logout, profile } from './Session/workflows';
4
-
5
- test.beforeEach(async ({ context, page }) => {
6
- await context.addInitScript(() => (window.IS_PLAYWRIGHT = true));
7
-
8
- await page.goto('http://local.mirai.com:8080', { waitUntil: 'networkidle', timeout: 10000 });
9
- });
10
-
11
- test('Login', async ({ isMobile, page }) => {
12
- await login({ isMobile, page });
13
- });
14
-
15
- test('Edit profile', async ({ isMobile, page }) => {
16
- await login({ isMobile, page });
17
- await profile({ isMobile, page });
18
- });
19
-
20
- test('View bookings', async ({ isMobile, page }) => {
21
- await login({ isMobile, page });
22
- await bookings({ isMobile, page });
23
- });
24
-
25
- test('Logout', async ({ isMobile, page }) => {
26
- await login({ isMobile, page });
27
- await logout({ isMobile, page });
28
- });
29
-
30
- test('Forgot password', async ({ isMobile, page }) => {
31
- await forgotPassword({ isMobile, page });
32
- });
@@ -1,17 +0,0 @@
1
- import { test } from '@playwright/test';
2
-
3
- import { signup, signupError } from './Signup/workflows';
4
-
5
- test.beforeEach(async ({ context, page }) => {
6
- await context.addInitScript(() => (window.IS_PLAYWRIGHT = true));
7
-
8
- await page.goto('http://local.mirai.com:8080/signup', { waitUntil: 'networkidle', timeout: 10000 });
9
- });
10
-
11
- test('Signup', async ({ page }) => {
12
- await signup({ page });
13
- });
14
-
15
- test('User already exists', async ({ page }) => {
16
- await signupError({ page });
17
- });