Skip to content

Commit a74289c

Browse files
committed
feat(e2e): update address modal and add data-testid locators
1 parent 7e27779 commit a74289c

File tree

3 files changed

+43
-12
lines changed

3 files changed

+43
-12
lines changed
Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
import { Locator, Page } from "@playwright/test"
22
import { AccountPage } from "./account-page"
3-
import { AddAddressModal } from "./modals/add-address-modal"
3+
import { AddressModal } from "./modals/address-modal"
44

55
export class AddressesPage extends AccountPage {
6-
addAddressModal: AddAddressModal
6+
addAddressModal: AddressModal
7+
editAddressModal: AddressModal
8+
addressContainer: Locator
9+
addressesWrapper: Locator
10+
newAddressButton: Locator
11+
712
constructor(page: Page) {
813
super(page)
9-
this.addAddressModal = new AddAddressModal(page)
14+
this.addAddressModal = new AddressModal(page, "add")
15+
this.editAddressModal = new AddressModal(page, "edit")
16+
this.addressContainer = this.container.getByTestId("address-container")
17+
this.addressesWrapper = page.getByTestId("addresses-page-wrapper")
18+
this.newAddressButton = this.container.getByTestId("add-address-button")
1019
}
1120

1221
getAddressContainer(text: string) {
@@ -15,7 +24,7 @@ export class AddressesPage extends AccountPage {
1524
.filter({ hasText: text })
1625
return {
1726
container,
18-
editButton: container.getByTestId("address-edit-button"),
27+
editButton: container.getByTestId('address-edit-button'),
1928
deleteButton: container.getByTestId("address-delete-button"),
2029
name: container.getByTestId("address-name"),
2130
company: container.getByTestId("address-company"),
@@ -24,4 +33,10 @@ export class AddressesPage extends AccountPage {
2433
provinceCountry: container.getByTestId("address-province-country"),
2534
}
2635
}
36+
37+
async goto() {
38+
await super.goto()
39+
await this.addressesLink.click()
40+
await this.addressesWrapper.waitFor({ state: "visible" })
41+
}
2742
}

e2e/fixtures/account/modals/add-address-modal.ts renamed to e2e/fixtures/account/modals/address-modal.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { Page, Locator } from "@playwright/test"
22
import { BaseModal } from "../../base/base-modal"
33

4-
export class AddAddressModal extends BaseModal {
5-
addAddressButton: Locator
4+
export class AddressModal extends BaseModal {
5+
saveButton: Locator
66
cancelButton: Locator
77

88
firstNameInput: Locator
@@ -16,10 +16,14 @@ export class AddAddressModal extends BaseModal {
1616
countrySelect: Locator
1717
phoneInput: Locator
1818

19-
constructor(page: Page) {
20-
super(page, page.getByTestId("add-address-modal"))
19+
constructor(page: Page, modalType: "add" | "edit") {
20+
if (modalType === "add") {
21+
super(page, page.getByTestId("add-address-modal"))
22+
} else {
23+
super(page, page.getByTestId("edit-address-modal"))
24+
}
2125

22-
this.addAddressButton = this.container.getByTestId("add-address-button")
26+
this.saveButton = this.container.getByTestId("save-button")
2327
this.cancelButton = this.container.getByTestId("cancel-button")
2428

2529
this.firstNameInput = this.container.getByTestId("first-name-input")

src/modules/account/components/address-card/edit-address-modal.tsx

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,9 @@ const EditAddress: React.FC<EditAddressProps> = ({
7171
"border-gray-900": isActive,
7272
}
7373
)}
74+
data-testid="address-container"
7475
>
75-
<div className="flex flex-col" data-testid="address-container">
76+
<div className="flex flex-col">
7677
<Heading className="text-left text-base-semi" data-testid="address-name">
7778
{address.first_name} {address.last_name}
7879
</Heading>
@@ -115,7 +116,7 @@ const EditAddress: React.FC<EditAddressProps> = ({
115116
</div>
116117
</div>
117118

118-
<Modal isOpen={state} close={close}>
119+
<Modal isOpen={state} close={close} data-testid="edit-address-modal">
119120
<Modal.Title>
120121
<Heading className="mb-2">Edit address</Heading>
121122
</Modal.Title>
@@ -129,33 +130,38 @@ const EditAddress: React.FC<EditAddressProps> = ({
129130
required
130131
autoComplete="given-name"
131132
defaultValue={address.first_name || undefined}
133+
data-testid="first-name-input"
132134
/>
133135
<Input
134136
label="Last name"
135137
name="last_name"
136138
required
137139
autoComplete="family-name"
138140
defaultValue={address.last_name || undefined}
141+
data-testid="last-name-input"
139142
/>
140143
</div>
141144
<Input
142145
label="Company"
143146
name="company"
144147
autoComplete="organization"
145148
defaultValue={address.company || undefined}
149+
data-testid="company-input"
146150
/>
147151
<Input
148152
label="Address"
149153
name="address_1"
150154
required
151155
autoComplete="address-line1"
152156
defaultValue={address.address_1 || undefined}
157+
data-testid="address-1-input"
153158
/>
154159
<Input
155160
label="Apartment, suite, etc."
156161
name="address_2"
157162
autoComplete="address-line2"
158163
defaultValue={address.address_2 || undefined}
164+
data-testid="address-2-input"
159165
/>
160166
<div className="grid grid-cols-[144px_1fr] gap-x-2">
161167
<Input
@@ -164,33 +170,38 @@ const EditAddress: React.FC<EditAddressProps> = ({
164170
required
165171
autoComplete="postal-code"
166172
defaultValue={address.postal_code || undefined}
173+
data-testid="postal-code-input"
167174
/>
168175
<Input
169176
label="City"
170177
name="city"
171178
required
172179
autoComplete="locality"
173180
defaultValue={address.city || undefined}
181+
data-testid="city-input"
174182
/>
175183
</div>
176184
<Input
177185
label="Province / State"
178186
name="province"
179187
autoComplete="address-level1"
180188
defaultValue={address.province || undefined}
189+
data-testid="state-input"
181190
/>
182191
<CountrySelect
183192
name="country_code"
184193
region={region}
185194
required
186195
autoComplete="country"
187196
defaultValue={address.country_code || undefined}
197+
data-testid="country-select"
188198
/>
189199
<Input
190200
label="Phone"
191201
name="phone"
192202
autoComplete="phone"
193203
defaultValue={address.phone || undefined}
204+
data-testid="phone-input"
194205
/>
195206
</div>
196207
{formState.error && (
@@ -206,10 +217,11 @@ const EditAddress: React.FC<EditAddressProps> = ({
206217
variant="secondary"
207218
onClick={close}
208219
className="h-10"
220+
data-testid="cancel-button"
209221
>
210222
Cancel
211223
</Button>
212-
<SubmitButton>Save</SubmitButton>
224+
<SubmitButton data-testid="save-button">Save</SubmitButton>
213225
</div>
214226
</Modal.Footer>
215227
</form>

0 commit comments

Comments
 (0)