Files
Remote-Terminal-for-MeshCore/tests/e2e/specs/mark-all-read.spec.ts
Jack Kingsman 566181faed More e2e tests
2026-02-24 22:33:28 -08:00

37 lines
1.3 KiB
TypeScript

import { test, expect } from '@playwright/test';
import { getUnreads } from '../helpers/api';
import { seedChannelUnread } from '../helpers/seed';
const CHANNEL_NAME = '#markread-e2e';
test.describe('Mark all as read', () => {
test('clears server and UI unread state', async ({ page }) => {
// Seed a couple of unread channel messages
seedChannelUnread({ channelName: CHANNEL_NAME, unreadCount: 2 });
// Sanity: server reports unreads
const before = await getUnreads();
expect(Object.values(before.counts).some((c) => c > 0)).toBeTruthy();
await page.goto('/');
await expect(page.getByText(CHANNEL_NAME, { exact: true })).toBeVisible({ timeout: 15_000 });
// Sidebar should show the mark-all control
const markAll = page.getByText('Mark all as read');
await expect(markAll).toBeVisible();
await markAll.click();
// Server unreads should now be empty
await expect(async () => {
const after = await getUnreads();
expect(Object.keys(after.counts).length).toBe(0);
expect(Object.keys(after.mentions).length).toBe(0);
}).toPass({ timeout: 10_000, intervals: [1_000] });
// Reload to ensure persistence
await page.reload();
await expect(page.getByText('Mark all as read')).not.toBeVisible();
});
});