feat: migrate from wsUrl to endpoints + add relay transport and pairing

This commit is contained in:
Mohamed Boudra
2026-01-21 14:55:23 +07:00
parent ae9a98223f
commit ddbcc272f1
29 changed files with 1729 additions and 280 deletions
+47
View File
@@ -0,0 +1,47 @@
import { test, expect } from './fixtures';
test('manual host add accepts host:port only and persists endpoints', async ({ page }) => {
const daemonPort = process.env.E2E_DAEMON_PORT;
if (!daemonPort) {
throw new Error('E2E_DAEMON_PORT is not set (expected from globalSetup).');
}
// Override the default fixture seeding for this navigation (must run before app boot).
await page.addInitScript(() => {
localStorage.setItem('@paseo:daemon-registry', JSON.stringify([]));
localStorage.removeItem('@paseo:settings');
});
await page.goto('/settings');
await page.getByText('+ Add Host', { exact: true }).click();
await page.getByText('Manual', { exact: true }).click();
const input = page.getByPlaceholder('localhost:6767');
await expect(input).toBeVisible();
await input.fill(`127.0.0.1:${daemonPort}`);
await page.getByText('Add', { exact: true }).click();
await expect(page.getByText(`127.0.0.1:${daemonPort}`, { exact: true }).first()).toBeVisible();
await expect(page.getByText('Online', { exact: true }).first()).toBeVisible({ timeout: 15000 });
await page.waitForFunction(
(port) => {
const raw = localStorage.getItem('@paseo:daemon-registry');
if (!raw) return false;
try {
const parsed = JSON.parse(raw);
if (!Array.isArray(parsed) || parsed.length !== 1) return false;
const entry = parsed[0];
return (
Array.isArray(entry?.endpoints) &&
entry.endpoints.some((endpoint: unknown) => endpoint === `127.0.0.1:${port}`)
);
} catch {
return false;
}
},
daemonPort,
{ timeout: 10000 }
);
});