fix(tests): iteration 12

This commit is contained in:
Mohamed Boudra
2026-03-13 13:42:51 +07:00
parent 2f13806a2c
commit 4a01b9ec90
6 changed files with 42 additions and 76 deletions
@@ -1,4 +1,8 @@
import { expect, test, type Page } from "@playwright/test";
import {
buildCreateAgentPreferences,
buildSeededHost,
} from "./helpers/daemon-registry";
const SERVER_ID =
process.env.PLAYWRIGHT_REPRO_SERVER_ID ?? "srv_ETXtcjYRGrCI";
@@ -26,33 +30,17 @@ function seedDaemonRegistryScript(params: {
endpoint: string;
nowIso: string;
}) {
const daemon = {
const daemon = buildSeededHost({
serverId: params.serverId,
label: "localhost",
connections: [
{
id: `direct:${params.endpoint}`,
type: "direct",
endpoint: params.endpoint,
},
],
preferredConnectionId: `direct:${params.endpoint}`,
createdAt: params.nowIso,
updatedAt: params.nowIso,
};
endpoint: params.endpoint,
nowIso: params.nowIso,
});
localStorage.setItem("@paseo:e2e", "1");
localStorage.setItem("@paseo:daemon-registry", JSON.stringify([daemon]));
localStorage.setItem(
"@paseo:create-agent-preferences",
JSON.stringify({
serverId: params.serverId,
provider: "codex",
providerPreferences: {
claude: { model: "haiku" },
codex: { model: "gpt-5.1-codex-mini", thinkingOptionId: "low" },
},
})
JSON.stringify(buildCreateAgentPreferences(params.serverId))
);
}
+11 -17
View File
@@ -1,4 +1,7 @@
import { test, expect } from './fixtures';
import {
buildSeededHost,
} from './helpers/daemon-registry';
test('host removal removes the host from UI and persists after reload', async ({ page }) => {
const daemonPort = process.env.E2E_DAEMON_PORT;
@@ -14,27 +17,18 @@ test('host removal removes the host from UI and persists after reload', async ({
const extraEndpoint = `127.0.0.1:${extraPort}`;
const nowIso = new Date().toISOString();
const extraDaemon = {
const extraDaemon = buildSeededHost({
serverId: 'srv_e2e_extra_daemon',
endpoint: extraEndpoint,
label: 'extra',
connections: [
{ id: `direct:${extraEndpoint}`, type: 'direct', endpoint: extraEndpoint },
],
preferredConnectionId: `direct:${extraEndpoint}`,
createdAt: nowIso,
updatedAt: nowIso,
};
nowIso,
});
const seededTestDaemon = {
const seededTestDaemon = buildSeededHost({
serverId: seededServerId,
label: 'localhost',
connections: [
{ id: `direct:127.0.0.1:${daemonPort}`, type: 'direct', endpoint: `127.0.0.1:${daemonPort}` },
],
preferredConnectionId: `direct:127.0.0.1:${daemonPort}`,
createdAt: nowIso,
updatedAt: nowIso,
};
endpoint: `127.0.0.1:${daemonPort}`,
nowIso,
});
const seedOnceKey = `@paseo:e2e-host-removal-seeded:${Math.random().toString(36).slice(2)}`;
+17 -35
View File
@@ -1,4 +1,8 @@
import { test, expect } from './fixtures';
import {
buildCreateAgentPreferences,
buildSeededHost,
} from './helpers/daemon-registry';
import { ensureHostSelected, gotoHome } from './helpers/app';
test('new agent auto-selects the previous host', async ({ page }) => {
@@ -25,28 +29,12 @@ test('new agent respects serverId in the URL', async ({ page }) => {
// Ensure this test's storage is deterministic even under parallel load.
const nowIso = new Date().toISOString();
const testDaemon = {
const testDaemon = buildSeededHost({
serverId,
label: 'localhost',
connections: [
{
id: `direct:127.0.0.1:${daemonPort}`,
type: 'direct',
endpoint: `127.0.0.1:${daemonPort}`,
},
],
preferredConnectionId: `direct:127.0.0.1:${daemonPort}`,
createdAt: nowIso,
updatedAt: nowIso,
};
const createAgentPreferences = {
serverId: testDaemon.serverId,
provider: 'codex',
providerPreferences: {
claude: { model: 'haiku' },
codex: { model: 'gpt-5.1-codex-mini', thinkingOptionId: 'low' },
},
};
endpoint: `127.0.0.1:${daemonPort}`,
nowIso,
});
const createAgentPreferences = buildCreateAgentPreferences(testDaemon.serverId);
await page.goto('/settings');
await page.evaluate(
@@ -60,7 +48,10 @@ test('new agent respects serverId in the URL', async ({ page }) => {
{ daemon: testDaemon, preferences: createAgentPreferences }
);
await page.reload();
await expect(page.getByText('New agent', { exact: true }).first()).toBeVisible({ timeout: 20000 });
await expect(page.getByText('Settings', { exact: true }).first()).toBeVisible({ timeout: 20000 });
await expect(page.locator(`[data-testid="daemon-card-${serverId}"]:visible`).first()).toBeVisible({
timeout: 20000,
});
await page.goto(`/?serverId=${encodeURIComponent(serverId)}`);
await expect(page.getByText('New agent', { exact: true }).first()).toBeVisible();
@@ -87,20 +78,11 @@ test('new agent auto-selects first online host when no preference is stored', as
}
const nowIso = new Date().toISOString();
const testDaemon = {
const testDaemon = buildSeededHost({
serverId,
label: 'localhost',
connections: [
{
id: `direct:127.0.0.1:${daemonPort}`,
type: 'direct',
endpoint: `127.0.0.1:${daemonPort}`,
},
],
preferredConnectionId: `direct:127.0.0.1:${daemonPort}`,
createdAt: nowIso,
updatedAt: nowIso,
};
endpoint: `127.0.0.1:${daemonPort}`,
nowIso,
});
await gotoHome(page);
await page.evaluate(
+1 -1
View File
@@ -72,7 +72,7 @@ test('manual host add accepts host:port only and persists a direct connection',
entry?.serverId === serverId &&
Array.isArray(entry?.connections) &&
entry.connections.some(
(conn: any) => conn?.type === 'direct' && conn?.endpoint === `127.0.0.1:${port}`
(conn: any) => conn?.type === 'directTcp' && conn?.endpoint === `127.0.0.1:${port}`
)
);
} catch {
@@ -1,4 +1,5 @@
import { test, expect } from './fixtures';
import { buildDirectTcpConnection } from './helpers/daemon-registry';
import { gotoHome, openSettings } from './helpers/app';
test('connects via relay when direct endpoints fail', async ({ page }) => {
@@ -18,7 +19,7 @@ test('connects via relay when direct endpoints fail', async ({ page }) => {
serverId,
label: 'relay-daemon',
connections: [
{ id: 'direct:127.0.0.1:9', type: 'direct', endpoint: '127.0.0.1:9' },
buildDirectTcpConnection('127.0.0.1:9'),
{ id: `relay:${relayEndpoint}`, type: 'relay', relayEndpoint, daemonPublicKeyB64 },
],
preferredConnectionId: 'direct:127.0.0.1:9',
+2 -1
View File
@@ -1,4 +1,5 @@
import { test, expect } from './fixtures';
import { buildDirectTcpConnection } from './helpers/daemon-registry';
import { gotoHome, openSettings } from './helpers/app';
test('relay connection stays stable across multiple tabs', async ({ page }) => {
@@ -18,7 +19,7 @@ test('relay connection stays stable across multiple tabs', async ({ page }) => {
serverId,
label: 'relay-daemon',
connections: [
{ id: 'direct:127.0.0.1:9', type: 'direct', endpoint: '127.0.0.1:9' },
buildDirectTcpConnection('127.0.0.1:9'),
{ id: `relay:${relayEndpoint}`, type: 'relay', relayEndpoint, daemonPublicKeyB64 },
],
preferredConnectionId: 'direct:127.0.0.1:9',