2023-10-13 14:42:39 +03:00
|
|
|
const {expect} = require('@playwright/test');
|
|
|
|
const test = require('../fixtures/ghost-test');
|
2023-05-05 13:11:26 +03:00
|
|
|
|
|
|
|
test.describe('Announcement Bar Settings', () => {
|
|
|
|
test('Bar hidden by default', async ({page}) => {
|
|
|
|
await page.goto('/ghost');
|
|
|
|
await goToAnnouncementBarSettings(page);
|
|
|
|
|
|
|
|
await test.step('Bar should be hidden', async () => {
|
2023-10-09 10:12:46 +03:00
|
|
|
const htmlFrame = getPreviewFrame(page);
|
2023-05-05 13:11:26 +03:00
|
|
|
await expect(await htmlFrame.locator('#announcement-bar-root')).toHaveCount(0);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
test('Show/hide bar if visibility checked/unchecked and text filled', async ({page}) => {
|
|
|
|
await page.goto('/ghost');
|
2023-10-09 10:12:46 +03:00
|
|
|
const modal = await goToAnnouncementBarSettings(page);
|
2023-05-05 13:11:26 +03:00
|
|
|
|
|
|
|
await test.step('Check free members', async () => {
|
2023-10-09 10:12:46 +03:00
|
|
|
const freeMembersCheckbox = modal.getByLabel('Free members');
|
|
|
|
await expect(freeMembersCheckbox).not.toBeChecked();
|
|
|
|
await freeMembersCheckbox.check();
|
2023-05-05 13:11:26 +03:00
|
|
|
});
|
|
|
|
|
|
|
|
await test.step('Fill announcement text', async () => {
|
2023-10-09 10:12:46 +03:00
|
|
|
await modal.locator('.koenig-react-editor').click();
|
|
|
|
await expect(await modal.locator('[contenteditable="true"]')).toBeVisible({timeout: 30000}); // add timeout as lexical module loading can take time
|
2023-05-05 13:11:26 +03:00
|
|
|
await page.keyboard.type('Announcement text');
|
2023-10-09 10:12:46 +03:00
|
|
|
await modal.getByText('Announcement').first().click(); // defocus the editor
|
2023-05-05 13:11:26 +03:00
|
|
|
});
|
|
|
|
|
2023-10-09 10:12:46 +03:00
|
|
|
const htmlFrame = getPreviewFrame(page);
|
2023-05-05 13:11:26 +03:00
|
|
|
await test.step('Announcement bar should be visible', async () => {
|
|
|
|
await expect(await htmlFrame.getByText('Announcement text')).toBeVisible();
|
|
|
|
});
|
|
|
|
|
|
|
|
await test.step('Disable free members', async () => {
|
2023-10-09 10:12:46 +03:00
|
|
|
const freeMembersCheckbox = modal.getByLabel('Free members');
|
|
|
|
await expect(freeMembersCheckbox).toBeChecked();
|
|
|
|
await freeMembersCheckbox.uncheck();
|
|
|
|
await modal.locator('.koenig-react-editor').click();
|
2023-05-05 13:11:26 +03:00
|
|
|
});
|
|
|
|
|
|
|
|
await test.step('Announcement bar should be hidden', async () => {
|
|
|
|
await expect(await htmlFrame.getByText('Announcement text')).toBeHidden();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
async function goToAnnouncementBarSettings(page) {
|
2023-10-09 10:12:46 +03:00
|
|
|
await test.step('Navigate to the announcement bar settings', async () => {
|
2023-05-05 13:11:26 +03:00
|
|
|
await page.locator('[data-test-nav="settings"]').click();
|
2023-10-09 10:12:46 +03:00
|
|
|
await page.getByTestId('announcement-bar').getByRole('button', {name: 'Customize'}).click();
|
|
|
|
// Wait for the preview to load
|
|
|
|
await getPreviewFrame(page).locator('body *:visible').first().waitFor();
|
2023-05-05 13:11:26 +03:00
|
|
|
});
|
2023-10-09 10:12:46 +03:00
|
|
|
return page.getByTestId('announcement-bar-modal');
|
2023-05-05 13:11:26 +03:00
|
|
|
}
|
|
|
|
|
2023-10-09 10:12:46 +03:00
|
|
|
function getPreviewFrame(page) {
|
|
|
|
return page.frameLocator('[data-testid="announcement-bar-preview-iframe"] > iframe[data-visible=true]');
|
2023-05-05 13:11:26 +03:00
|
|
|
}
|