customer.ts 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. import { expect } from "../setup";
  2. import {
  3. generateName,
  4. generateFirstName,
  5. generateLastName,
  6. generateEmail,
  7. generateDescription,
  8. } from "./faker";
  9. export async function register(page) {
  10. const credentials = {
  11. firstName: generateFirstName(),
  12. lastName: generateLastName(),
  13. email: generateEmail(),
  14. password: "admin123",
  15. };
  16. await page.goto("");
  17. await page.getByLabel("Profile").click();
  18. await page.getByRole("link", { name: "Sign Up" }).click();
  19. await page.getByPlaceholder("First Name").click();
  20. await page.getByPlaceholder("First Name").fill(credentials.firstName);
  21. await page.getByPlaceholder("Last Name").click();
  22. await page.getByPlaceholder("Last Name").fill(credentials.lastName);
  23. await page.getByPlaceholder("email@example.com").click();
  24. await page.getByPlaceholder("email@example.com").fill(credentials.email);
  25. await page.getByPlaceholder("Password", { exact: true }).click();
  26. await page
  27. .getByPlaceholder("Password", { exact: true })
  28. .fill(credentials.password);
  29. await page.getByPlaceholder("Confirm Password").click();
  30. await page.getByPlaceholder("Confirm Password").fill(credentials.password);
  31. const isAgreementVisible = await page.locator("#agreement").nth(1).isVisible();
  32. if (isAgreementVisible) {
  33. await page.getByText("I agree with this statement.").click();
  34. }
  35. const isNewsletterVisible = await page
  36. .locator("#main form div")
  37. .filter({ hasText: "Subscribe to newsletter" })
  38. .locator("label")
  39. .first()
  40. .isVisible();
  41. if (isNewsletterVisible) {
  42. await page
  43. .locator("#main form div")
  44. .filter({ hasText: "Subscribe to newsletter" })
  45. .locator("label")
  46. .first()
  47. .click();
  48. }
  49. await page.getByRole("button", { name: "Register" }).click();
  50. await expect(
  51. page
  52. .getByText(
  53. "Account created successfully."
  54. )
  55. .first()
  56. ).toBeVisible();
  57. return credentials;
  58. }
  59. export async function loginAsCustomer(page) {
  60. const credentials = await register(page);
  61. await page.goto("");
  62. await page.getByLabel("Profile").click();
  63. await page.getByRole("link", { name: "Sign In" }).click();
  64. await page.getByPlaceholder("email@example.com").click();
  65. await page.getByPlaceholder("email@example.com").fill(credentials.email);
  66. await page.getByPlaceholder("email@example.com").press("Tab");
  67. await page.getByPlaceholder("Password").fill(credentials.password);
  68. await page.getByRole("button", { name: "Sign In" }).click();
  69. return credentials;
  70. }
  71. export async function addAddress(page) {
  72. await page.getByLabel("Profile").click();
  73. await page.getByRole("link", { name: "Profile" }).click();
  74. await page.getByRole("link", { name: " Address " }).click();
  75. await page.getByRole("link", { name: "Add Address" }).click();
  76. await page.getByPlaceholder("Company Name").click();
  77. await page.getByPlaceholder("Company Name").fill(generateName());
  78. await page.getByPlaceholder("Company Name").press("Tab");
  79. await page.getByPlaceholder("First Name").fill(generateFirstName());
  80. await page.getByPlaceholder("First Name").press("Tab");
  81. await page.getByPlaceholder("Last Name").fill(generateLastName());
  82. await page.getByPlaceholder("Last Name").press("Tab");
  83. await page
  84. .getByPlaceholder("Email", { exact: true })
  85. .fill("test@example.com");
  86. await page.getByPlaceholder("Email", { exact: true }).press("Tab");
  87. await page.getByPlaceholder("Vat ID").press("Tab");
  88. await page.getByPlaceholder("Street Address").fill("Demo");
  89. await page.getByPlaceholder("Street Address").press("Tab");
  90. await page.getByLabel("Country").selectOption("DZ");
  91. await page.getByPlaceholder("State").click();
  92. await page.getByPlaceholder("State").fill("any");
  93. await page.getByPlaceholder("City").click();
  94. await page.getByPlaceholder("City").fill("any");
  95. await page.getByPlaceholder("Post Code").click();
  96. await page.getByPlaceholder("Post Code").fill("123456");
  97. await page.getByPlaceholder("Phone").click();
  98. await page.getByPlaceholder("Phone").fill("9876543210");
  99. await page
  100. .locator("#main form div")
  101. .filter({ hasText: "Set as Default" })
  102. .locator("label")
  103. .first()
  104. .click();
  105. await page
  106. .locator("#main form div")
  107. .filter({ hasText: "Set as Default" })
  108. .locator("label")
  109. .first()
  110. .click();
  111. await page.getByRole("button", { name: "Save" }).click();
  112. await expect(
  113. page.getByText("Address have been successfully added.").first()
  114. ).toBeVisible();
  115. }
  116. export async function addWishlist(page) {
  117. await page.locator(".action-items > span").first().click();
  118. await page
  119. .locator(
  120. "div:nth-child(9) > div:nth-child(2) > div > .-mt-9 > .action-items > span"
  121. )
  122. .first()
  123. .click();
  124. await expect(
  125. page.getByText("Item Successfully Added To Wishlist").first()
  126. ).toBeVisible();
  127. }
  128. export async function addReview(page) {
  129. const review = {
  130. title: generateName(),
  131. comment: generateDescription(),
  132. };
  133. await page
  134. .locator("#main div")
  135. .filter({ hasText: "New Products View All New" })
  136. .getByLabel("Arctic Touchscreen Winter")
  137. .click();
  138. await page.getByRole("button", { name: "Reviews" }).click();
  139. await page.locator("#review-tab").getByText("Write a Review").click();
  140. await page.locator("#review-tab span").nth(3).click();
  141. await page.locator("#review-tab span").nth(4).click();
  142. await page.getByPlaceholder("Title").fill(review.title);
  143. await page.getByPlaceholder("Comment").fill(review.comment);
  144. await page.getByRole("button", { name: "Submit Review" }).click();
  145. await expect(
  146. page.getByText("Review submitted successfully.").first()
  147. ).toBeVisible();
  148. return review;
  149. }