Skip to content

Commit 04ef900

Browse files
committed
Fix user login flows and order
1 parent 2eea5f6 commit 04ef900

File tree

3 files changed

+83
-31
lines changed

3 files changed

+83
-31
lines changed

e2e/scripts/pageHelpers.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,10 +272,14 @@ export const loginShopper = async ({page, userCredentials}) => {
272272
.locator("input#password")
273273
.fill(userCredentials.password);
274274

275+
const loginResponsePromise=page.waitForResponse('**/shopper/auth/v1/organizations/**/oauth2/login')
275276
const tokenResponsePromise=page.waitForResponse('**/shopper/auth/v1/organizations/**/oauth2/token')
276277
await page.getByRole("button", { name: /Sign In/i }).click();
278+
await loginResponsePromise;
279+
expect((await loginResponsePromise).status()).toBe(303); // Login returns a 303 redirect to /callback with authCode and usid
277280
await tokenResponsePromise;
278-
return await tokenResponsePromise.status() === 200;
281+
expect((await tokenResponsePromise).status()).toBe(200);
282+
return true;
279283
} catch {
280284
return false;
281285
}

e2e/tests/desktop/registered-shopper.spec.js

Lines changed: 40 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
const { test, expect } = require("@playwright/test");
99
const config = require("../../config");
10-
const {
10+
const {
1111
addProductToCart,
1212
registerShopper,
1313
validateOrderHistory,
@@ -20,19 +20,39 @@ const {
2020
getCreditCardExpiry,
2121
} = require("../../scripts/utils.js");
2222

23-
const REGISTERED_USER_CREDENTIALS = generateUserCredentials();
23+
let REGISTERED_USER_CREDENTIALS = {};
24+
25+
test.beforeAll(async () => {
26+
// Generate credentials once and use throughout tests to avoid creating a new account
27+
REGISTERED_USER_CREDENTIALS = generateUserCredentials();
28+
});
2429

2530
/**
2631
* Test that registered shoppers can add a product to cart and go through the entire checkout process,
2732
* validating that shopper is able to get to the order summary section,
2833
* and that order shows up in order history
2934
*/
3035
test("Registered shopper can checkout items", async ({ page }) => {
31-
// register and login user
32-
await registerShopper({page, userCredentials: REGISTERED_USER_CREDENTIALS});
36+
// Since we're re-using the same account, we need to check if the user is already registered.
37+
// This ensures the tests are independent and not dependent on the order they are run in.
38+
const isLoggedIn = await loginShopper({
39+
page,
40+
userCredentials: REGISTERED_USER_CREDENTIALS,
41+
});
42+
43+
if (!isLoggedIn) {
44+
await registerShopper({
45+
page,
46+
userCredentials: REGISTERED_USER_CREDENTIALS,
47+
});
48+
}
49+
50+
await expect(
51+
page.getByRole("heading", { name: /Account Details/i })
52+
).toBeVisible();
3353

3454
// Shop for items as registered user
35-
await addProductToCart({page});
55+
await addProductToCart({ page });
3656

3757
// cart
3858
await page.getByLabel(/My cart/i).click();
@@ -135,7 +155,7 @@ test("Registered shopper can checkout items", async ({ page }) => {
135155
).toBeVisible();
136156

137157
// order history
138-
await validateOrderHistory({page});
158+
await validateOrderHistory({ page });
139159
});
140160

141161
/**
@@ -144,24 +164,31 @@ test("Registered shopper can checkout items", async ({ page }) => {
144164
test("Registered shopper can add item to wishlist", async ({ page }) => {
145165
const isLoggedIn = await loginShopper({
146166
page,
147-
userCredentials: REGISTERED_USER_CREDENTIALS
148-
})
167+
userCredentials: REGISTERED_USER_CREDENTIALS,
168+
});
149169

150-
if(!isLoggedIn) {
151-
await registerShopper({page, userCredentials: generateUserCredentials() })
170+
if (!isLoggedIn) {
171+
await registerShopper({
172+
page,
173+
userCredentials: REGISTERED_USER_CREDENTIALS,
174+
});
152175
}
153176

177+
await expect(
178+
page.getByRole("heading", { name: /Account Details/i })
179+
).toBeVisible();
180+
154181
// Navigate to PDP
155-
await navigateToPDPDesktop({page});
182+
await navigateToPDPDesktop({ page });
156183

157184
// add product to wishlist
158185
await expect(
159186
page.getByRole("heading", { name: /Cotton Turtleneck Sweater/i })
160187
).toBeVisible();
161188

162189
await page.getByRole("radio", { name: "L", exact: true }).click();
163-
await page.getByRole("button", { name: /Add to Wishlist/i }).click()
190+
await page.getByRole("button", { name: /Add to Wishlist/i }).click();
164191

165192
// wishlist
166-
await validateWishlist({page})
193+
await validateWishlist({ page });
167194
});

e2e/tests/mobile/registered-shopper.spec.js

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,30 +13,47 @@ const {
1313
validateOrderHistory,
1414
validateWishlist,
1515
loginShopper,
16-
navigateToPDPMobile
16+
navigateToPDPMobile,
1717
} = require("../../scripts/pageHelpers");
1818
const {
1919
generateUserCredentials,
2020
getCreditCardExpiry,
2121
} = require("../../scripts/utils.js");
2222

23-
const REGISTERED_USER_CREDENTIALS = generateUserCredentials();
23+
let REGISTERED_USER_CREDENTIALS = {};
24+
25+
test.beforeAll(async () => {
26+
// Generate credentials once and use throughout tests to avoid creating a new account
27+
REGISTERED_USER_CREDENTIALS = generateUserCredentials();
28+
});
2429

2530
/**
2631
* Test that registered shoppers can add a product to cart and go through the entire checkout process,
2732
* validating that shopper is able to get to the order summary section,
2833
* and that order shows up in order history
2934
*/
3035
test("Registered shopper can checkout items", async ({ page }) => {
31-
// Create Account and Sign In
32-
await registerShopper({
36+
// Since we're re-using the same account, we need to check if the user is already registered.
37+
// This ensures the tests are independent and not dependent on the order they are run in.
38+
const isLoggedIn = await loginShopper({
3339
page,
3440
userCredentials: REGISTERED_USER_CREDENTIALS,
35-
isMobile: true
36-
})
41+
});
42+
43+
if (!isLoggedIn) {
44+
await registerShopper({
45+
page,
46+
userCredentials: REGISTERED_USER_CREDENTIALS,
47+
isMobile: true,
48+
});
49+
}
50+
51+
await expect(
52+
page.getByRole("heading", { name: /Account Details/i })
53+
).toBeVisible();
3754

3855
// Shop for items as registered user
39-
await addProductToCart({page, isMobile: true})
56+
await addProductToCart({ page, isMobile: true });
4057

4158
// cart
4259
await page.getByLabel(/My cart/i).click();
@@ -138,7 +155,7 @@ test("Registered shopper can checkout items", async ({ page }) => {
138155
).toBeVisible();
139156

140157
// order history
141-
await validateOrderHistory({page});
158+
await validateOrderHistory({ page });
142159
});
143160

144161
/**
@@ -147,27 +164,31 @@ test("Registered shopper can checkout items", async ({ page }) => {
147164
test("Registered shopper can add item to wishlist", async ({ page }) => {
148165
const isLoggedIn = await loginShopper({
149166
page,
150-
userCredentials: REGISTERED_USER_CREDENTIALS
151-
})
167+
userCredentials: REGISTERED_USER_CREDENTIALS,
168+
});
152169

153-
if(!isLoggedIn) {
170+
if (!isLoggedIn) {
154171
await registerShopper({
155172
page,
156-
userCredentials: generateUserCredentials(),
157-
isMobile: true
158-
})
173+
userCredentials: REGISTERED_USER_CREDENTIALS,
174+
isMobile: true,
175+
});
159176
}
160177

178+
await expect(
179+
page.getByRole("heading", { name: /Account Details/i })
180+
).toBeVisible();
181+
161182
// PDP
162-
await navigateToPDPMobile({page});
183+
await navigateToPDPMobile({ page });
163184

164185
// add product to wishlist
165186
await expect(
166187
page.getByRole("heading", { name: /Cotton Turtleneck Sweater/i })
167188
).toBeVisible();
168189
await page.getByRole("radio", { name: "L", exact: true }).click();
169-
await page.getByRole("button", { name: /Add to Wishlist/i }).click()
190+
await page.getByRole("button", { name: /Add to Wishlist/i }).click();
170191

171192
// wishlist
172-
await validateWishlist({page})
193+
await validateWishlist({ page });
173194
});

0 commit comments

Comments
 (0)