Skip to content

Commit e61cd22

Browse files
committed
refactor(e2e): register DeliveryAddressUtil as Playwright fixture
Follows the established POM pattern from discounts.spec.ts and giftCards.spec.ts: register the utility in base.extend, destructure from test args ({addresses}), and use beforeEach for shared navigation setup. This replaces the manual `new DeliveryAddressUtil(page)` + `navigateToAddresses()` repetition in every test.
1 parent 1492ffb commit e61cd22

File tree

2 files changed

+23
-36
lines changed

2 files changed

+23
-36
lines changed

e2e/fixtures/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {StorefrontPage} from './storefront';
77
import {CartUtil} from './cart-utils';
88
import {DiscountUtil} from './discount-utils';
99
import {GiftCardUtil} from './gift-card-utils';
10+
import {DeliveryAddressUtil} from './delivery-address-utils';
1011
import type {MswScenario} from './msw/scenarios';
1112
import {getHandlersForScenario} from './msw/handlers';
1213

@@ -27,6 +28,7 @@ export const test = base.extend<
2728
cart: CartUtil;
2829
discount: DiscountUtil;
2930
giftCard: GiftCardUtil;
31+
addresses: DeliveryAddressUtil;
3032
},
3133
{forEachWorker: void}
3234
>({
@@ -46,6 +48,10 @@ export const test = base.extend<
4648
const giftCard = new GiftCardUtil(page);
4749
await use(giftCard);
4850
},
51+
addresses: async ({page}, use) => {
52+
const addresses = new DeliveryAddressUtil(page);
53+
await use(addresses);
54+
},
4955
});
5056

5157
const TEST_STORE_KEYS = [

e2e/specs/skeleton/deliveryAddresses.spec.ts

Lines changed: 17 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
import {setTestStore, test, expect, MSW_SCENARIOS} from '../../fixtures';
22
import {DELIVERY_ADDRESS_SEED_COUNT} from '../../fixtures/msw/handlers';
3-
import {
4-
DeliveryAddressUtil,
5-
type AddressFormData,
6-
} from '../../fixtures/delivery-address-utils';
3+
import type {AddressFormData} from '../../fixtures/delivery-address-utils';
74

85
setTestStore('mockShop', {
96
mock: {scenario: MSW_SCENARIOS.deliveryAddresses},
@@ -28,29 +25,24 @@ test.describe('Delivery Addresses', () => {
2825
// and Delete tests then operate on).
2926
test.describe.configure({mode: 'serial'});
3027

31-
test.describe('Read', () => {
32-
test('renders existing addresses', async ({page}) => {
33-
const addresses = new DeliveryAddressUtil(page);
34-
await addresses.navigateToAddresses();
28+
test.beforeEach(async ({addresses}) => {
29+
await addresses.navigateToAddresses();
30+
});
3531

32+
test.describe('Read', () => {
33+
test('renders existing addresses', async ({addresses}) => {
3634
await addresses.assertAddressCount(DELIVERY_ADDRESS_SEED_COUNT);
3735
});
3836

39-
test('shows the create address form', async ({page}) => {
40-
const addresses = new DeliveryAddressUtil(page);
41-
await addresses.navigateToAddresses();
42-
37+
test('shows the create address form', async ({addresses}) => {
4338
const createForm = addresses.getCreateAddressForm();
4439
await expect(createForm).toBeVisible();
4540
await expect(
4641
createForm.getByRole('button', {name: 'Create'}),
4742
).toBeVisible();
4843
});
4944

50-
test('displays default address checkbox state', async ({page}) => {
51-
const addresses = new DeliveryAddressUtil(page);
52-
await addresses.navigateToAddresses();
53-
45+
test('displays default address checkbox state', async ({addresses}) => {
5446
const existingForms = addresses.getExistingAddresses();
5547
const firstCheckbox = existingForms.first().getByRole('checkbox');
5648
await expect(firstCheckbox).toBeChecked();
@@ -61,10 +53,7 @@ test.describe('Delivery Addresses', () => {
6153
});
6254

6355
test.describe('Create', () => {
64-
test('creates a new address', async ({page}) => {
65-
const addresses = new DeliveryAddressUtil(page);
66-
await addresses.navigateToAddresses();
67-
56+
test('creates a new address', async ({addresses}) => {
6857
await addresses.assertAddressCount(DELIVERY_ADDRESS_SEED_COUNT);
6958
await addresses.createAddress(NEW_ADDRESS);
7059

@@ -77,10 +66,7 @@ test.describe('Delivery Addresses', () => {
7766
});
7867

7968
test.describe('Update', () => {
80-
test('updates an existing address', async ({page}) => {
81-
const addresses = new DeliveryAddressUtil(page);
82-
await addresses.navigateToAddresses();
83-
69+
test('updates an existing address', async ({addresses}) => {
8470
const updatedCity = 'New Portland';
8571
const existingForms = addresses.getExistingAddresses();
8672
const targetForm = existingForms.first();
@@ -97,10 +83,9 @@ test.describe('Delivery Addresses', () => {
9783
});
9884

9985
test.describe('Default Address', () => {
100-
test('toggles default address to a different address', async ({page}) => {
101-
const addresses = new DeliveryAddressUtil(page);
102-
await addresses.navigateToAddresses();
103-
86+
test('toggles default address to a different address', async ({
87+
addresses,
88+
}) => {
10489
const existingForms = addresses.getExistingAddresses();
10590
const firstForm = existingForms.first();
10691
const secondForm = existingForms.nth(1);
@@ -125,10 +110,7 @@ test.describe('Delivery Addresses', () => {
125110
});
126111

127112
test.describe('Delete', () => {
128-
test('deletes an address and decreases count', async ({page}) => {
129-
const addresses = new DeliveryAddressUtil(page);
130-
await addresses.navigateToAddresses();
131-
113+
test('deletes an address and decreases count', async ({addresses}) => {
132114
const countBefore = await addresses.getExistingAddresses().count();
133115
expect(countBefore).toBeGreaterThan(0);
134116
const lastForm = addresses.getExistingAddresses().last();
@@ -137,10 +119,9 @@ test.describe('Delivery Addresses', () => {
137119
await addresses.assertAddressCount(countBefore - 1);
138120
});
139121

140-
test('shows empty state when all addresses are deleted', async ({page}) => {
141-
const addresses = new DeliveryAddressUtil(page);
142-
await addresses.navigateToAddresses();
143-
122+
test('shows empty state when all addresses are deleted', async ({
123+
addresses,
124+
}) => {
144125
await expect(addresses.getEmptyState()).toHaveCount(0);
145126
const remaining = await addresses.getExistingAddresses().count();
146127
for (let i = 0; i < remaining; i++) {

0 commit comments

Comments
 (0)