Skip to content

Commit 1d3bf24

Browse files
committed
Fixed browser test
1 parent 1de575e commit 1d3bf24

File tree

3 files changed

+27
-30
lines changed

3 files changed

+27
-30
lines changed

ghost/core/test/e2e-browser/admin/tiers.spec.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ test.describe('Admin', () => {
3232

3333
await sharedPage.goto('/ghost/');
3434
await sharedPage.goto('/ghost/#/settings/offers');
35-
await expect(sharedPage.getByTestId('offers')).toContainText(offerName);
35+
await sharedPage.getByTestId('offers').getByRole('button', {name: 'Manage offers'}).click();
36+
await expect(sharedPage.getByTestId('offers-modal')).toContainText(offerName);
3637
});
3738

3839
test('Can create additional Tier', async ({sharedPage}) => {

ghost/core/test/e2e-browser/portal/offers.spec.js

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ test.describe('Portal', () => {
3131
// check that offer was added in the offer list screen
3232
await sharedPage.goto('/ghost');
3333
await sharedPage.getByRole('navigation').getByRole('link', {name: 'Settings'}).click();
34-
await expect(await sharedPage.getByTestId('offers')).toContainText(offerName);
34+
await sharedPage.getByTestId('offers').getByRole('button', {name: 'Manage offers'}).click();
35+
await expect(sharedPage.getByTestId('offers-modal')).toContainText(offerName);
36+
await sharedPage.getByTestId('offers-modal').getByRole('button', {name: 'Close'}).click();
3537

3638
await sharedPage.goto(offerLink);
3739

@@ -79,9 +81,9 @@ test.describe('Portal', () => {
7981

8082
// // Ensure the offer redemption count was bumped
8183
await sharedPage.goto('/ghost/#/settings/offers');
82-
// await sharedPage.locator('.gh-nav a[href="#/offers/"]').click();
83-
const locator = await sharedPage.locator(`[data-test-offer="${offerName}"]`);
84-
await expect(locator).toContainText('1 redemption');
84+
await sharedPage.getByTestId('offers').getByRole('button', {name: 'Manage offers'}).click();
85+
const offerRow = sharedPage.getByTestId('offer-item').filter({hasText: offerName});
86+
await expect(offerRow).toContainText('1');
8587
});
8688

8789
test('Creates and uses a one-time discount Offer', async ({sharedPage}) => {
@@ -108,9 +110,9 @@ test.describe('Portal', () => {
108110
// check that offer was added in the offer list screen
109111
await sharedPage.goto('/ghost');
110112
await sharedPage.getByRole('navigation').getByRole('link', {name: 'Settings'}).click();
111-
await expect(sharedPage.getByTestId('offers')).toContainText(offerName);
112-
// open offer details page
113-
// await sharedPage.locator(`[data-test-offer="${offerName}"] a`).first().click();
113+
await sharedPage.getByTestId('offers').getByRole('button', {name: 'Manage offers'}).click();
114+
await expect(sharedPage.getByTestId('offers-modal')).toContainText(offerName);
115+
await sharedPage.getByTestId('offers-modal').getByRole('button', {name: 'Close'}).click();
114116

115117
// fetch offer url from portal settings and open it
116118
await sharedPage.goto(offerLink);
@@ -185,7 +187,9 @@ test.describe('Portal', () => {
185187

186188
await sharedPage.goto('/ghost');
187189
await sharedPage.getByRole('navigation').getByRole('link', {name: 'Settings'}).click();
188-
await expect(await sharedPage.getByTestId('offers')).toContainText(offerName);
190+
await sharedPage.getByTestId('offers').getByRole('button', {name: 'Manage offers'}).click();
191+
await expect(sharedPage.getByTestId('offers-modal')).toContainText(offerName);
192+
await sharedPage.getByTestId('offers-modal').getByRole('button', {name: 'Close'}).click();
189193

190194
await sharedPage.goto(offerLink);
191195

@@ -260,7 +264,9 @@ test.describe('Portal', () => {
260264
// check that offer was added in the offer list screen
261265
await sharedPage.goto('/ghost');
262266
await sharedPage.getByRole('navigation').getByRole('link', {name: 'Settings'}).click();
263-
await expect(sharedPage.getByTestId('offers')).toContainText(offerName);
267+
await sharedPage.getByTestId('offers').getByRole('button', {name: 'Manage offers'}).click();
268+
await expect(sharedPage.getByTestId('offers-modal')).toContainText(offerName);
269+
await sharedPage.getByTestId('offers-modal').getByRole('button', {name: 'Close'}).click();
264270

265271
await sharedPage.goto(offerLink);
266272

ghost/core/test/e2e-browser/utils/e2e-browser-utils.js

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -260,34 +260,24 @@ const createOffer = async (page, {name, tierName, offerType, amount, discountTyp
260260
await page.getByTestId('tiers').getByText('No active tiers found').waitFor({state: 'hidden'});
261261
await page.getByTestId('offers').getByRole('button', {name: 'Manage tiers'}).waitFor({state: 'hidden'});
262262

263-
// only one of these buttons is ever available - either 'Add offer' or 'Manage offers'
264-
const hasExistingOffers = await page.getByTestId('offers').getByRole('button', {name: 'Manage offers'}).isVisible();
265-
const isCTA = await page.getByTestId('offers').getByRole('button', {name: 'Add offer'}).isVisible();
266-
267-
// Archive other offers to keep the list tidy
268-
// We only need 1 offer to be active at a time
269-
// Either the list of active offers loads, or the CTA when no offers exist
270-
if (hasExistingOffers && !isCTA) {
271-
await page.getByTestId('offers').getByRole('button', {name: 'Manage offers'}).click();
272-
273-
// Selector for the elements with data-testid 'offer-item'
274-
// const offerItemsSelector = '[data-testid="offer-item"]';
263+
await page.getByTestId('offers').getByRole('button', {name: 'Manage offers'}).click();
264+
265+
// Wait for the modal to fully load (retention offers are always present)
266+
await page.getByTestId('retention-offer-item').first().waitFor();
267+
268+
// Archive all existing signup offers to keep the list tidy
269+
while (await page.getByTestId('offer-item').count() > 0) {
275270
await page.getByTestId('offer-item').nth(0).click();
276271
await page.getByRole('button', {name: 'Archive offer'}).click();
277272

278273
const confirmModal = await page.getByTestId('confirmation-modal');
279274
await confirmModal.getByRole('button', {name: 'Archive'}).click();
280275
await confirmModal.waitFor({state: 'hidden'});
281-
282-
// Still in the offers modal after archiving — click "New offer" directly
283-
await page.getByText('New offer').click();
284-
} else if (await page.getByTestId('offers').getByRole('button', {name: 'Add offer'}).isVisible()) {
285-
await page.getByTestId('offers').getByRole('button', {name: 'Add offer'}).click();
286-
} else {
287-
await page.getByTestId('offers').getByRole('button', {name: 'Manage offers'}).click();
288-
await page.getByText('New offer').click();
289276
}
290277

278+
// Click "New offer" to open the creation form
279+
await page.getByText('New offer').click();
280+
291281
await page.getByLabel('Offer name').fill(offerName);
292282

293283
if (offerType === 'freeTrial') {

0 commit comments

Comments
 (0)