2023-06-22 14:55:05 +03:00
|
|
|
import {MockedApi, initialize} from '../utils/e2e';
|
|
|
|
import {expect, test} from '@playwright/test';
|
|
|
|
|
|
|
|
test.describe('CTA', async () => {
|
|
|
|
test('Shows CTA when not logged in', async ({page}) => {
|
|
|
|
const mockedApi = new MockedApi({});
|
|
|
|
mockedApi.addComments(2);
|
|
|
|
|
|
|
|
const {frame} = await initialize({
|
|
|
|
mockedApi,
|
|
|
|
page,
|
|
|
|
publication: 'Publisher Weekly'
|
|
|
|
});
|
|
|
|
|
|
|
|
const ctaBox = await frame.getByTestId('cta-box');
|
|
|
|
await expect(ctaBox).toBeVisible();
|
|
|
|
|
|
|
|
await expect(ctaBox).toContainText('Join the discussion');
|
|
|
|
await expect(ctaBox).toContainText('Become a member of Publisher Weekly to start commenting');
|
|
|
|
await expect(ctaBox).toContainText('Sign in');
|
2023-08-17 13:47:08 +03:00
|
|
|
|
|
|
|
// Does not show the reply buttons if not logged in
|
|
|
|
const replyButton = frame.getByTestId('reply-button');
|
|
|
|
await expect(replyButton).toHaveCount(0);
|
|
|
|
|
|
|
|
// Does not show the main form
|
|
|
|
const form = frame.getByTestId('form');
|
|
|
|
await expect(form).toHaveCount(0);
|
2023-06-22 14:55:05 +03:00
|
|
|
});
|
|
|
|
|
|
|
|
test('Shows different CTA if no comments', async ({page}) => {
|
|
|
|
const mockedApi = new MockedApi({});
|
|
|
|
|
|
|
|
const {frame} = await initialize({
|
|
|
|
mockedApi,
|
|
|
|
page,
|
|
|
|
publication: 'Publisher Weekly'
|
|
|
|
});
|
|
|
|
|
|
|
|
const ctaBox = await frame.getByTestId('cta-box');
|
|
|
|
await expect(ctaBox).toBeVisible();
|
|
|
|
|
|
|
|
await expect(ctaBox).toContainText('Start the conversation');
|
|
|
|
});
|
|
|
|
|
|
|
|
test('Shows CTA when logged in, but not a paid member and comments are paid only', async ({page}) => {
|
|
|
|
const mockedApi = new MockedApi({});
|
|
|
|
mockedApi.addComments(2);
|
|
|
|
mockedApi.setMember({
|
|
|
|
status: 'free'
|
|
|
|
});
|
|
|
|
|
|
|
|
const {frame} = await initialize({
|
|
|
|
mockedApi,
|
|
|
|
page,
|
|
|
|
publication: 'Publisher Weekly',
|
|
|
|
commentsEnabled: 'paid'
|
|
|
|
});
|
|
|
|
|
|
|
|
const ctaBox = await frame.getByTestId('cta-box');
|
|
|
|
await expect(ctaBox).toBeVisible();
|
|
|
|
|
|
|
|
await expect(ctaBox).toContainText('Join the discussion');
|
|
|
|
await expect(ctaBox).toContainText('Become a paid member of Publisher Weekly to start commenting');
|
|
|
|
|
|
|
|
// Don't show sign in button
|
|
|
|
await expect(ctaBox).not.toContainText('Sign in');
|
2023-08-17 13:47:08 +03:00
|
|
|
|
|
|
|
// No replies or comments possible
|
|
|
|
const replyButton = frame.getByTestId('reply-button');
|
|
|
|
await expect(replyButton).toHaveCount(0);
|
|
|
|
|
|
|
|
const form = frame.getByTestId('form');
|
|
|
|
await expect(form).toHaveCount(0);
|
|
|
|
});
|
|
|
|
|
|
|
|
test('No CTA when logged in', async ({page}) => {
|
|
|
|
const mockedApi = new MockedApi({});
|
|
|
|
mockedApi.addComments(2);
|
|
|
|
mockedApi.setMember({
|
|
|
|
status: 'free'
|
|
|
|
});
|
|
|
|
|
|
|
|
const {frame} = await initialize({
|
|
|
|
mockedApi,
|
|
|
|
page,
|
|
|
|
publication: 'Publisher Weekly'
|
|
|
|
});
|
|
|
|
|
|
|
|
const ctaBox = await frame.getByTestId('cta-box');
|
|
|
|
await expect(ctaBox).not.toBeVisible();
|
|
|
|
|
|
|
|
// No replies or comments possible
|
|
|
|
const replyButton = frame.getByTestId('reply-button');
|
|
|
|
await expect(replyButton).toHaveCount(2);
|
|
|
|
|
|
|
|
const form = frame.getByTestId('form');
|
|
|
|
await expect(form).toHaveCount(1);
|
2023-06-22 14:55:05 +03:00
|
|
|
});
|
|
|
|
});
|
|
|
|
|