mirror of
https://github.com/jkingsman/Remote-Terminal-for-MeshCore.git
synced 2026-03-28 17:43:05 +01:00
61 lines
1.9 KiB
TypeScript
61 lines
1.9 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
import {
|
|
createChannel,
|
|
deleteChannel,
|
|
sendChannelMessage,
|
|
getChannels,
|
|
} from '../helpers/api';
|
|
|
|
test.describe('Channel message persistence across delete/re-add', () => {
|
|
const suffix = Date.now().toString().slice(-6);
|
|
const channelName = `#persist${suffix}`;
|
|
let channelKey = '';
|
|
|
|
test.afterAll(async () => {
|
|
// Cleanup
|
|
if (channelKey) {
|
|
try {
|
|
await deleteChannel(channelKey);
|
|
} catch {
|
|
// Best-effort
|
|
}
|
|
}
|
|
});
|
|
|
|
test('messages persist after channel delete and re-create', async ({ page }) => {
|
|
// Create channel via API
|
|
const channel = await createChannel(channelName);
|
|
channelKey = channel.key;
|
|
|
|
// Send a message via API
|
|
const testMessage = `persist-test-${Date.now()}`;
|
|
await sendChannelMessage(channelKey, testMessage);
|
|
|
|
// Verify message appears in UI
|
|
await page.goto('/');
|
|
await expect(page.getByText('Connected')).toBeVisible();
|
|
await page.getByText(channelName, { exact: true }).first().click();
|
|
await expect(page.getByText(testMessage)).toBeVisible({ timeout: 15_000 });
|
|
|
|
// Delete channel via API (only removes channels row, messages remain)
|
|
await deleteChannel(channelKey);
|
|
|
|
// Verify channel is gone from sidebar
|
|
await page.reload();
|
|
await expect(page.getByText('Connected')).toBeVisible();
|
|
await expect(page.getByText(channelName, { exact: true })).not.toBeVisible({ timeout: 10_000 });
|
|
|
|
// Re-create the same hashtag channel (derives same key)
|
|
const recreated = await createChannel(channelName);
|
|
channelKey = recreated.key;
|
|
|
|
// Navigate to it
|
|
await page.reload();
|
|
await expect(page.getByText('Connected')).toBeVisible();
|
|
await page.getByText(channelName, { exact: true }).first().click();
|
|
|
|
// Verify original message is still visible as outgoing
|
|
await expect(page.getByText(testMessage)).toBeVisible({ timeout: 15_000 });
|
|
});
|
|
});
|