0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-03-11 02:12:21 -05:00

Added playwright test for paid member switching plans

refs https://github.com/TryGhost/Team/issues/2371

- tests that a paid member can switch between monthly and yearly plans after logging in
This commit is contained in:
Rishabh 2022-12-08 15:04:16 +05:30 committed by Rishabh Garg
parent bc9b8a22f0
commit ae3d85d2c4

View file

@ -3,6 +3,7 @@ const {completeStripeSubscription, createMember} = require('../utils');
test.describe('Portal', () => {
test.describe('Upgrade', () => {
let memberUrl;
test('allows free member upgrade to paid tier', async ({page}) => {
// create a new free member
await createMember(page, {
@ -11,7 +12,7 @@ test.describe('Portal', () => {
note: 'Testy McTest is a test member'
});
//get the url of the current member on admin
const memberUrl = await page.url();
memberUrl = await page.url();
// open member impersonation modal
await page.locator('[data-test-button="member-actions"]').click();
@ -46,5 +47,42 @@ test.describe('Portal', () => {
await page.goto(memberUrl);
await expect(page.locator('[data-test-tier]').first()).toBeVisible();
});
test('allows member to switch to monthly plan', async ({page}) => {
// go to member detail page in admin
await page.goto(memberUrl);
// open member impersonation modal
await page.locator('[data-test-button="member-actions"]').click();
await page.locator('[data-test-button="impersonate"]').click();
await page.locator('[data-test-button="copy-impersonate-link"]').click();
await page.waitForSelector('[data-test-button="copy-impersonate-link"] span:has-text("Link copied")');
// get impersonation link from input and redirect to it
const link = await page.locator('[data-test-input="member-signin-url"]').inputValue();
await page.goto(link);
const portalTriggerButton = page.frameLocator('#ghost-portal-root iframe.gh-portal-triggerbtn-iframe').locator('div').nth(1);
const portalFrame = page.frameLocator('#ghost-portal-root div iframe');
// open portal
await portalTriggerButton.click();
// test member can switch to monthly plan from yearly
// TODO: Update to use data-test-* attributes when ready
await portalFrame.getByRole('button', {name: 'Change'}).click();
await portalFrame.getByRole('button', {name: 'Monthly'}).click();
await portalFrame.locator('.gh-portal-btn-product .gh-portal-btn').first().click();
await portalFrame.getByRole('button', {name: 'Confirm'}).click();
await expect(await portalFrame.getByText('/month')).toBeVisible();
// test member can switch to yearly plan again from monthly
// TODO: Update to use data-test-* attributes when ready
await portalFrame.getByRole('button', {name: 'Change'}).click();
await portalFrame.getByRole('button', {name: 'Yearly'}).click();
await portalFrame.locator('.gh-portal-btn-product .gh-portal-btn').first().click();
await portalFrame.getByRole('button', {name: 'Confirm'}).click();
await expect(await portalFrame.getByText('/year')).toBeVisible();
});
});
});