|
|
import {test, expect} from '../../../../helpers/playwright';
|
|
|
import {
|
|
|
AnalyticsOverviewPage,
|
|
|
PostAnalyticsPage,
|
|
|
PostAnalyticsGrowthPage,
|
|
|
MembersPage
|
|
|
} from '../../../../helpers/pages/admin';
|
|
|
|
|
|
// 测试套件:Ghost 管理后台 - 文章分析(Post Analytics)- Growth(增长)页
|
|
|
test.describe('Ghost Admin - Post Analytics - Growth', () => {
|
|
|
// 每个测试开始前的准备工作:导航并打开目标文章的分析页面,再点击 Growth 选项
|
|
|
test.beforeEach(async ({page}) => {
|
|
|
const analyticsOverviewPage = new AnalyticsOverviewPage(page);
|
|
|
await analyticsOverviewPage.goto();
|
|
|
// 在概览页点击最新文章的 analytics 按钮,进入文章分析面板
|
|
|
await analyticsOverviewPage.latestPost.analyticsButton.click();
|
|
|
|
|
|
// TODO 注释保留:理想情况下不应需等待页面完全加载即可点击 growth 链接
|
|
|
const postAnalyticsPage = new PostAnalyticsPage(page);
|
|
|
// 等待文章分析页面加载完成(确保元素可交互)
|
|
|
await postAnalyticsPage.waitForPageLoad();
|
|
|
// 点击 Growth 按钮,进入增长视图
|
|
|
await postAnalyticsPage.growthButton.click();
|
|
|
});
|
|
|
|
|
|
// 测试:空成员卡片应显示 Free members 字样并且数量为 0
|
|
|
test('empty members card', async ({page}) => {
|
|
|
const postAnalyticsPageGrowthPage = new PostAnalyticsGrowthPage(page);
|
|
|
|
|
|
// 断言 members 卡片包含“Free members”标签
|
|
|
await expect(postAnalyticsPageGrowthPage.membersCard).toContainText('Free members');
|
|
|
// 断言成员数量显示为 0(空数据场景)
|
|
|
await expect(postAnalyticsPageGrowthPage.membersCard).toContainText('0');
|
|
|
});
|
|
|
|
|
|
// 测试:在空成员场景点击“查看成员”应跳转到 Members 页面并显示无匹配结果
|
|
|
test('empty members card - view member', async ({page}) => {
|
|
|
const postAnalyticsPageGrowthPage = new PostAnalyticsGrowthPage(page);
|
|
|
// 点击“查看成员”按钮(应导航到 Members 列表)
|
|
|
await postAnalyticsPageGrowthPage.viewMemberButton.click();
|
|
|
|
|
|
const membersPage = new MembersPage(page);
|
|
|
// 断言 Members 页面显示“无成员匹配”的提示文本
|
|
|
await expect(membersPage.body).toContainText('No members match');
|
|
|
});
|
|
|
|
|
|
// 测试:Top sources 卡片在无数据时显示“无来源数据”提示
|
|
|
test('empty top sources card', async ({page}) => {
|
|
|
const postAnalyticsPageGrowthPage = new PostAnalyticsGrowthPage(page);
|
|
|
|
|
|
// 断言 top sources 卡片包含“No sources data available”
|
|
|
await expect(postAnalyticsPageGrowthPage.topSourcesCard).toContainText('No sources data available');
|
|
|
});
|
|
|
});
|
|
|
|