67 lines
2.0 KiB
TypeScript
67 lines
2.0 KiB
TypeScript
import { test, expect } from '@playwright/test'
|
|
import { API_KEY_HEADER } from './helpers'
|
|
|
|
function uid() {
|
|
return `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`
|
|
}
|
|
|
|
test.describe('Chat Session Preferences API', () => {
|
|
test('PATCH + GET roundtrip for local session rename and color tag', async ({ request }) => {
|
|
const key = `codex-cli:e2e-${uid()}`
|
|
|
|
const patchRes = await request.patch('/api/chat/session-prefs', {
|
|
headers: API_KEY_HEADER,
|
|
data: {
|
|
key,
|
|
name: 'E2E Session Name',
|
|
color: 'teal',
|
|
},
|
|
})
|
|
|
|
expect(patchRes.status()).toBe(200)
|
|
const patchBody = await patchRes.json()
|
|
expect(patchBody.ok).toBeTruthy()
|
|
expect(patchBody.pref?.name).toBe('E2E Session Name')
|
|
expect(patchBody.pref?.color).toBe('teal')
|
|
|
|
const getRes = await request.get('/api/chat/session-prefs', { headers: API_KEY_HEADER })
|
|
expect(getRes.status()).toBe(200)
|
|
const getBody = await getRes.json()
|
|
expect(getBody.prefs?.[key]?.name).toBe('E2E Session Name')
|
|
expect(getBody.prefs?.[key]?.color).toBe('teal')
|
|
|
|
const clearRes = await request.patch('/api/chat/session-prefs', {
|
|
headers: API_KEY_HEADER,
|
|
data: {
|
|
key,
|
|
name: null,
|
|
color: null,
|
|
},
|
|
})
|
|
expect(clearRes.status()).toBe(200)
|
|
const clearBody = await clearRes.json()
|
|
expect(clearBody.ok).toBeTruthy()
|
|
expect(clearBody.pref).toBeNull()
|
|
|
|
const getAfterClear = await request.get('/api/chat/session-prefs', { headers: API_KEY_HEADER })
|
|
const afterBody = await getAfterClear.json()
|
|
expect(afterBody.prefs?.[key]).toBeUndefined()
|
|
})
|
|
|
|
test('PATCH rejects invalid color', async ({ request }) => {
|
|
const key = `claude-code:e2e-${uid()}`
|
|
|
|
const res = await request.patch('/api/chat/session-prefs', {
|
|
headers: API_KEY_HEADER,
|
|
data: {
|
|
key,
|
|
color: 'magenta',
|
|
},
|
|
})
|
|
|
|
expect(res.status()).toBe(400)
|
|
const body = await res.json()
|
|
expect(body.error).toContain('Invalid color')
|
|
})
|
|
})
|