Added e2e tests for archive/unarchive tiers (#16101)

refs TryGhost/Team#2371
This commit is contained in:
Elena Baidakova 2023-01-11 13:53:07 +04:00 committed by GitHub
parent f8fe009f9f
commit a3f7188369
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 77 additions and 4 deletions

View File

@ -11,6 +11,7 @@
@triggerClass="gh-contentfilter-menu-trigger gh-contentfilter-menu-trigger-tiers" @triggerClass="gh-contentfilter-menu-trigger gh-contentfilter-menu-trigger-tiers"
@dropdownClass="gh-contentfilter-menu-dropdown" @dropdownClass="gh-contentfilter-menu-dropdown"
@matchTriggerWidth={{false}} @matchTriggerWidth={{false}}
data-test-select-tiers-list
as |type| as |type|
> >
{{#if type.name}}{{type.name}}{{else}}<span class="red">Unknown type</span>{{/if}} {{#if type.name}}{{type.name}}{{else}}<span class="red">Unknown type</span>{{/if}}

View File

@ -1,5 +1,5 @@
<div class="modal-content" {{on-key "Enter" (perform this.archiveTierTask)}}> <div class="modal-content" data-test-modal="archive-tier" {{on-key "Enter" (perform this.archiveTierTask)}}>
<header class="modal-header"> <header class="modal-header">
<h1>Archive tier</h1> <h1>Archive tier</h1>
</header> </header>
@ -21,6 +21,7 @@
@successText="Archived" @successText="Archived"
@task={{this.archiveTierTask}} @task={{this.archiveTierTask}}
@class="gh-btn gh-btn-black gh-btn-icon" @class="gh-btn gh-btn-black gh-btn-icon"
data-test-button="archive-tier"
/> />
</div> </div>
</div> </div>

View File

@ -1,5 +1,5 @@
<div class="modal-content" {{on-key "Enter" (perform this.unarchiveTask)}}> <div class="modal-content" data-test-modal="unarchive-tier" {{on-key "Enter" (perform this.unarchiveTask)}}>
<header class="modal-header"> <header class="modal-header">
<h1>Reactivate tier</h1> <h1>Reactivate tier</h1>
</header> </header>
@ -20,6 +20,7 @@
@buttonText="Reactivate" @buttonText="Reactivate"
@task={{this.unarchiveTask}} @task={{this.unarchiveTask}}
@class="gh-btn gh-btn-black gh-btn-icon" @class="gh-btn gh-btn-black gh-btn-icon"
data-test-button="unarchive-tier"
/> />
</div> </div>
</div> </div>

View File

@ -2,6 +2,7 @@
{{#unless this.tier.isNew}} {{#unless this.tier.isNew}}
<button <button
type="button" type="button"
data-test-button="archive-tier"
{{on "click" this.handleArchiveTier}} {{on "click" this.handleArchiveTier}}
> >
<span>Archive</span> <span>Archive</span>
@ -10,6 +11,7 @@
{{else}} {{else}}
<button <button
type="button" type="button"
data-test-button="unarchive-tier"
{{on "click" this.handleUnarchiveTier}} {{on "click" this.handleUnarchiveTier}}
> >
<span>Reactivate</span> <span>Reactivate</span>

View File

@ -58,12 +58,11 @@ test.describe('Admin', () => {
const updatedMonthlyPrice = '66'; const updatedMonthlyPrice = '66';
const updatedYearlyPrice = '666'; const updatedYearlyPrice = '666';
const updatedDescription = 'Updated description text'; const updatedDescription = 'Updated description text';
const enableInPortal = true;
await createTier(page, { await createTier(page, {
name: tierName, name: tierName,
monthlyPrice: 5, monthlyPrice: 5,
yearlyPrice: 50 yearlyPrice: 50
}, enableInPortal); });
await test.step('Open Membership settings', async () => { await test.step('Open Membership settings', async () => {
await page.locator('[data-test-nav="settings"]').click(); await page.locator('[data-test-nav="settings"]').click();
@ -119,5 +118,74 @@ test.describe('Admin', () => {
await expect(portalTierCard.locator('.amount').first()).toHaveText(updatedMonthlyPrice); await expect(portalTierCard.locator('.amount').first()).toHaveText(updatedMonthlyPrice);
}); });
}); });
test('Can archive and unarchive a Tier', async ({page}) => {
await page.goto('/ghost');
const tierName = getUniqueName('Archive Tier');
const tierId = getSlug(tierName);
await createTier(page, {
name: tierName,
monthlyPrice: 5,
yearlyPrice: 50
});
await test.step('Open Membership settings', async () => {
await page.locator('[data-test-nav="settings"]').click();
await page.locator('[data-test-nav="members-membership"]').click();
// Tiers request can take time, so waiting until there is no connections before interacting with them
await page.waitForLoadState('networkidle');
});
const tierCard = await test.step('Expand the premium tier list and find the new tier', async () => {
await page.locator('[data-test-toggle-pub-info]').click();
await page.waitForSelector(`[data-test-tier-card="${tierId}"]`);
return await page.locator(`[data-test-tier-card="${tierId}"]`);
});
await test.step('Archive tier', async () => {
await tierCard.locator('[data-test-button="tiers-actions"]').click();
await tierCard.locator('[data-test-button="archive-tier"]').click();
const modal = page.locator('[data-test-modal="archive-tier"]');
await modal.locator('[data-test-button="archive-tier"]').click();
});
await test.step('Archived tier should not be available in active tiers', async () => {
await expect(page.locator(`[data-test-tier-card="${tierId}"]`)).toBeHidden();
});
await test.step('Archived tier should be available in archived tiers', async () => {
const tiersSelect = await page.locator('[data-test-select-tiers-list]');
await tiersSelect.click();
await page.getByRole('option', {name: 'Archived'}).click();
await expect(page.locator(`[data-test-tier-card="${tierId}"]`)).toBeVisible();
});
await test.step('Archived tier should not be available in portal settings', async () => {
await expect(page.locator(`[data-test-settings-tier-label="${tierName}"]`)).toBeHidden();
});
await test.step('Unarchive tier', async () => {
await tierCard.locator('[data-test-button="tiers-actions"]').click();
await tierCard.locator('[data-test-button="unarchive-tier"]').click();
const modal = page.locator('[data-test-modal="unarchive-tier"]');
await modal.locator('[data-test-button="unarchive-tier"]').click();
});
await test.step('Unarchived tier should be available in active tiers', async () => {
await expect(page.locator(`[data-test-tier-card="${tierId}"]`)).toBeVisible();
});
await test.step('Open Portal settings', async () => {
await page.locator('[data-test-toggle="portal-settings"]').click();
// Wait until the list of tiers available at signup is visible
await page.waitForSelector('[data-test-tiers-at-signup]');
});
await test.step('Unarchived tier should be available in portal settings', async () => {
await page.locator(`[data-test-settings-tier-label="${tierName}"]`);
expect(await page.locator(`[data-test-settings-tier-input="${tierName}"]`).isChecked()).toBeFalsy();
});
});
}); });
}); });