Update files
This commit is contained in:
@@ -118,6 +118,7 @@ export default async function globalSetup() {
|
||||
env: {
|
||||
...process.env,
|
||||
PASEO_HOME: paseoHome,
|
||||
PASEO_SERVER_ID: 'e2e-test-daemon',
|
||||
PASEO_LISTEN: `0.0.0.0:${port}`,
|
||||
PASEO_RELAY_ENDPOINT: `127.0.0.1:${relayPort}`,
|
||||
PASEO_CORS_ORIGINS: `http://localhost:${metroPort}`,
|
||||
|
||||
@@ -71,3 +71,119 @@ test('new agent respects serverId in the URL', async ({ page }) => {
|
||||
const input = page.getByRole('textbox', { name: 'Message agent...' });
|
||||
await expect(input).toBeEditable({ timeout: 30000 });
|
||||
});
|
||||
|
||||
test('new agent auto-selects first online host when no preference is stored', async ({ page }) => {
|
||||
const daemonPort = process.env.E2E_DAEMON_PORT;
|
||||
if (!daemonPort) {
|
||||
throw new Error('E2E_DAEMON_PORT is not set (expected from globalSetup).');
|
||||
}
|
||||
|
||||
const nowIso = new Date().toISOString();
|
||||
const testDaemon = {
|
||||
id: 'e2e-test-daemon',
|
||||
label: 'localhost',
|
||||
endpoints: [`127.0.0.1:${daemonPort}`],
|
||||
relay: null,
|
||||
metadata: null,
|
||||
createdAt: nowIso,
|
||||
updatedAt: nowIso,
|
||||
};
|
||||
|
||||
await page.goto('/');
|
||||
await page.evaluate(
|
||||
({ daemon }) => {
|
||||
const nonce = localStorage.getItem('@paseo:e2e-seed-nonce') ?? '1';
|
||||
localStorage.setItem('@paseo:e2e-disable-default-seed-once', nonce);
|
||||
localStorage.setItem('@paseo:daemon-registry', JSON.stringify([daemon]));
|
||||
localStorage.removeItem('@paseo:create-agent-preferences');
|
||||
localStorage.removeItem('@paseo:settings');
|
||||
},
|
||||
{ daemon: testDaemon }
|
||||
);
|
||||
|
||||
await page.reload();
|
||||
await expect(page.getByText('New agent', { exact: true }).first()).toBeVisible();
|
||||
await expect(page.getByText('Online', { exact: true }).first()).toBeVisible({ timeout: 20000 });
|
||||
|
||||
// Host should be auto-selected (no manual selection required).
|
||||
await expect(page.getByText('localhost', { exact: true }).first()).toBeVisible();
|
||||
const input = page.getByRole('textbox', { name: 'Message agent...' });
|
||||
await expect(input).toBeEditable({ timeout: 30000 });
|
||||
});
|
||||
|
||||
test('adopts daemon-provided serverId for legacy host ids', async ({ page }) => {
|
||||
const daemonPort = process.env.E2E_DAEMON_PORT;
|
||||
if (!daemonPort) {
|
||||
throw new Error('E2E_DAEMON_PORT is not set (expected from globalSetup).');
|
||||
}
|
||||
|
||||
const nowIso = new Date().toISOString();
|
||||
const legacyId = 'legacy-daemon-id';
|
||||
const daemon = {
|
||||
id: legacyId,
|
||||
label: 'localhost',
|
||||
endpoints: [`127.0.0.1:${daemonPort}`],
|
||||
relay: null,
|
||||
metadata: null,
|
||||
createdAt: nowIso,
|
||||
updatedAt: nowIso,
|
||||
};
|
||||
|
||||
await page.goto('/settings');
|
||||
await page.evaluate(
|
||||
({ daemon, legacyId }) => {
|
||||
const nonce = localStorage.getItem('@paseo:e2e-seed-nonce') ?? '1';
|
||||
localStorage.setItem('@paseo:e2e-disable-default-seed-once', nonce);
|
||||
localStorage.setItem('@paseo:daemon-registry', JSON.stringify([daemon]));
|
||||
localStorage.setItem(
|
||||
'@paseo:create-agent-preferences',
|
||||
JSON.stringify({
|
||||
serverId: legacyId,
|
||||
provider: 'claude',
|
||||
providerPreferences: {
|
||||
claude: { model: 'haiku' },
|
||||
codex: { model: 'gpt-5.1-codex-mini' },
|
||||
},
|
||||
})
|
||||
);
|
||||
localStorage.removeItem('@paseo:settings');
|
||||
},
|
||||
{ daemon, legacyId }
|
||||
);
|
||||
|
||||
await page.reload();
|
||||
await expect(page.getByText('Online', { exact: true }).first()).toBeVisible({ timeout: 20000 });
|
||||
|
||||
// Wait for server_info handshake to rekey registry + preferences.
|
||||
await page.waitForFunction(
|
||||
() => {
|
||||
const raw = localStorage.getItem('@paseo:daemon-registry');
|
||||
const prefsRaw = localStorage.getItem('@paseo:create-agent-preferences');
|
||||
if (!raw || !prefsRaw) return false;
|
||||
const registry = JSON.parse(raw);
|
||||
const prefs = JSON.parse(prefsRaw);
|
||||
if (!Array.isArray(registry) || registry.length !== 1) return false;
|
||||
if (registry[0]?.id !== 'e2e-test-daemon') return false;
|
||||
if (prefs?.serverId !== 'e2e-test-daemon') return false;
|
||||
const legacyIds = registry[0]?.metadata?.legacyIds;
|
||||
return Array.isArray(legacyIds) && legacyIds.includes('legacy-daemon-id');
|
||||
},
|
||||
{ timeout: 20000 }
|
||||
);
|
||||
|
||||
const snapshot = await page.evaluate(() => {
|
||||
const raw = localStorage.getItem('@paseo:daemon-registry');
|
||||
const prefsRaw = localStorage.getItem('@paseo:create-agent-preferences');
|
||||
return { raw, prefsRaw };
|
||||
});
|
||||
if (!snapshot.raw || !snapshot.prefsRaw) {
|
||||
throw new Error('Expected registry + preferences to be present after rekey.');
|
||||
}
|
||||
|
||||
const registry = JSON.parse(snapshot.raw) as any[];
|
||||
expect(registry[0].id).toBe('e2e-test-daemon');
|
||||
expect(registry[0].metadata.legacyIds).toContain('legacy-daemon-id');
|
||||
|
||||
const prefs = JSON.parse(snapshot.prefsRaw) as any;
|
||||
expect(prefs.serverId).toBe('e2e-test-daemon');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user