Headless CMS and Content Managment Hub
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

88 lines
2.9 KiB

import { expect } from '@playwright/test';
import { RulePage, RulesPage } from '../pages';
import { getRandomId } from '../utils';
import { test } from './_fixture';
// We have no easy way to identity rules. Therefore run them sequentially.
test.describe.configure({ mode: 'serial' });
test.beforeEach(async ({ appName, rulesPage }) => {
await rulesPage.goto(appName);
});
test('has header', async ({ page }) => {
const header = page.getByRole('heading', { name: /Rules/ });
await expect(header).toBeVisible();
});
test('create rule', async ({ rulesPage, rulePage }) => {
const ruleName = await createRandomRule(rulesPage, rulePage);
const ruleCard = await rulesPage.getRuleCard(ruleName);
await expect(ruleCard.root).toBeVisible();
});
test('delete rule', async ({ rulesPage, rulePage }) => {
const ruleName = await createRandomRule(rulesPage, rulePage);
const ruleCard = await rulesPage.getRuleCard(ruleName);
const dropdown = await ruleCard.openOptionsDropdown();
await dropdown.delete();
await expect(ruleCard.root).not.toBeVisible();
});
test('disable rule', async ({ rulePage, rulesPage }) => {
const ruleName = await createRandomRule(rulesPage, rulePage);
const ruleCard = await rulesPage.getRuleCard(ruleName);
const dropdown = await ruleCard.openOptionsDropdown();
await dropdown.action('Disable');
await expect(ruleCard.root.locator('sqx-toggle .toggle-container')).toHaveAttribute('data-state', 'unchecked');
});
test('enable rule', async ({ rulePage, rulesPage }) => {
const ruleName = await createRandomRule(rulesPage, rulePage);
const ruleCard = await rulesPage.getRuleCard(ruleName);
const dropdown1 = await ruleCard.openOptionsDropdown();
await dropdown1.action('Disable');
await expect(ruleCard.root.locator('sqx-toggle .toggle-container')).toHaveAttribute('data-state', 'unchecked');
const dropdown2 = await ruleCard.openOptionsDropdown();
await dropdown2.action('Enable');
await expect(ruleCard.root.locator('sqx-toggle .toggle-container')).toHaveAttribute('data-state', 'checked');
});
test('edit rule', async ({ page, rulePage, rulesPage }) => {
const ruleName = await createRandomRule(rulesPage, rulePage);
const ruleCard = await rulesPage.getRuleCard(ruleName);
const dropdown = await ruleCard.openOptionsDropdown();
await dropdown.action('Edit');
await expect(page.getByText('Enabled')).toBeVisible();
});
async function createRandomRule(rulesPage: RulesPage, rulePage: RulePage) {
const ruleName = `rule-${getRandomId()}`;
await rulesPage.addRule();
await rulePage.selectContentChangedTrigger();
await rulePage.selectWebhookAction();
await rulePage.save();
await rulePage.back();
const ruleCard = await rulesPage.getRuleCard('Unnamed Rule');
const renameDialog = await ruleCard.startRenameDblClick();
await renameDialog.enterName(ruleName);
await renameDialog.save();
return ruleName;
}