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'); }); });