mission-control/tests/agent-model-config.spec.ts

96 lines
2.4 KiB
TypeScript

import { test, expect } from '@playwright/test'
import { API_KEY_HEADER, createTestAgent, deleteTestAgent } from './helpers'
/**
* E2E tests for agent model configuration updates.
* Verifies the API handles edge cases like empty/null model values.
*/
test.describe('Agent Model Config', () => {
const cleanup: number[] = []
test.afterEach(async ({ request }) => {
for (const id of cleanup) {
await deleteTestAgent(request, id).catch(() => {})
}
cleanup.length = 0
})
test('PUT with valid model config succeeds', async ({ request }) => {
const { id } = await createTestAgent(request)
cleanup.push(id)
const res = await request.put(`/api/agents/${id}`, {
headers: API_KEY_HEADER,
data: {
gateway_config: {
model: {
primary: 'claude-3-5-sonnet-20241022',
fallbacks: ['gpt-4o'],
},
},
},
})
expect(res.status()).toBe(200)
})
test('PUT with empty fallbacks array succeeds', async ({ request }) => {
const { id } = await createTestAgent(request)
cleanup.push(id)
const res = await request.put(`/api/agents/${id}`, {
headers: API_KEY_HEADER,
data: {
gateway_config: {
model: {
primary: 'claude-3-5-sonnet-20241022',
fallbacks: [],
},
},
},
})
expect(res.status()).toBe(200)
})
test('PUT with empty string primary returns appropriate response', async ({ request }) => {
const { id } = await createTestAgent(request)
cleanup.push(id)
const res = await request.put(`/api/agents/${id}`, {
headers: API_KEY_HEADER,
data: {
gateway_config: {
model: {
primary: '',
fallbacks: [],
},
},
},
})
// Server should accept the update (model config is optional gateway config)
expect([200, 400]).toContain(res.status())
})
test('PUT with whitespace-only fallbacks filters them', async ({ request }) => {
const { id } = await createTestAgent(request)
cleanup.push(id)
const res = await request.put(`/api/agents/${id}`, {
headers: API_KEY_HEADER,
data: {
gateway_config: {
model: {
primary: 'claude-3-5-sonnet-20241022',
fallbacks: [' ', '', 'gpt-4o'],
},
},
},
})
expect(res.status()).toBe(200)
})
})