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') }) })