mirror of
https://github.com/jkingsman/Remote-Terminal-for-MeshCore.git
synced 2026-03-28 17:43:05 +01:00
37 lines
1.3 KiB
TypeScript
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();
|
|
});
|
|
});
|