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.
ghost/apps/stats/test/acceptance/stats.test.ts

48 lines
1.5 KiB

import OverviewTab from './pages/OverviewTab.ts';
import {
createMockRequests,
mockApi
} from '@tryghost/admin-x-framework/test/acceptance';
import {expect, test} from '@playwright/test';
test.describe('Stats App', () => {
test('loads with default mocked data', async ({page}) => {
// Use the default mock requests - includes all common endpoints
await mockApi({page, requests: createMockRequests()});
const overviewPage = new OverviewTab(page);
await overviewPage.visit();
await expect(overviewPage.header).toBeVisible();
});
test('shows an error without mocked data', async ({page}) => {
const overviewPage = new OverviewTab(page);
await overviewPage.visit();
await expect(overviewPage.body).toContainText(/Unexpected Application Error/);
});
test('loads with custom mocked data', async ({page}) => {
const customMemberHistory = {
stats: [
{date: '2024-01-01', paid: 50, free: 100, comped: 5, paid_subscribed: 2, paid_canceled: 0}
],
meta: {totals: {paid: 50, free: 100, comped: 5}}
};
await mockApi({page, requests: createMockRequests({
browseMemberCountHistory: {
method: 'GET',
path: /^\/stats\/member_count\//,
response: customMemberHistory
}
})});
const overviewPage = new OverviewTab(page);
await overviewPage.visit();
await expect(overviewPage.body).toContainText('155');
});
});