Bläddra i källkod

WIP: 覆盖 iOS 快速模式回读同步

[gstack-context]
Decisions: session.resume fast=true 模拟 iOS 已配置状态;Web 回读变蓝且不重复 config.set
Remaining: 全量测试、真实 9119 页面验证、重载 8800
Skill: /gitnexus-exploring + /frontend-skill
[/gstack-context]
samien 2 månader sedan
förälder
incheckning
4b98b1eb0b
2 ändrade filer med 14 tillägg och 1 borttagningar
  1. 13 0
      tests/e2e/workspace.spec.ts
  2. 1 1
      tests/fixtures/fake-hermes.mjs

+ 13 - 0
tests/e2e/workspace.spec.ts

@@ -126,6 +126,19 @@ test('syncs the blue fast-mode shortcut with the iOS-compatible session config',
   }).toBe('normal')
 })
 
+test('reconciles an iOS fast-mode selection from the resumed 9119 session', async ({ page }) => {
+  await page.request.post('http://127.0.0.1:19119/__test/rpc-requests/reset')
+  await page.goto('/chat/session-yaoer?profile=yaoer')
+  await expect(page.getByRole('button', { name: '快速模式:已关闭' })).toBeVisible()
+  await page.getByRole('textbox', { name: '输入消息,Enter 发送,Shift + Enter 换行' }).fill('读取 iOS 快速模式')
+  await page.getByRole('button', { name: '发送消息' }).click()
+  await expect(page.getByRole('button', { name: '快速模式:已开启' })).toHaveCSS('color', 'rgb(22, 119, 255)')
+
+  const payload = await (await page.request.get('http://127.0.0.1:19119/__test/rpc-requests')).json() as { requests: Array<{ method: string; params: Record<string, unknown> }> }
+  expect(payload.requests.some(request => request.method === 'session.resume' && request.params.session_id === 'session-yaoer')).toBe(true)
+  expect(payload.requests.some(request => request.method === 'config.set' && request.params.key === 'fast')).toBe(false)
+})
+
 test('keeps the show-thinking preference across sessions of the same Agent', async ({ page }) => {
   await page.goto('/chat/session-demo')
   await expect(page.locator('.turn-trace')).toHaveCount(1)

+ 1 - 1
tests/fixtures/fake-hermes.mjs

@@ -134,7 +134,7 @@ server.on('upgrade', (request, socket, head) => {
       const requestFrame = JSON.parse(raw.toString())
       rpcRequests.push(requestFrame)
       const respond = result => client.send(JSON.stringify({ jsonrpc: '2.0', id: requestFrame.id, result }))
-      if (requestFrame.method === 'session.resume') return respond({ session_id: 'runtime-demo', stored_session_id: requestFrame.params.session_id, fast: false, messages: [] })
+      if (requestFrame.method === 'session.resume') return respond({ session_id: 'runtime-demo', stored_session_id: requestFrame.params.session_id, fast: requestFrame.params.session_id === 'session-yaoer', messages: [] })
       if (requestFrame.method === 'session.create') return respond({ session_id: 'runtime-new', stored_session_id: 'session-new', fast: requestFrame.params.fast === true })
       if (requestFrame.method === 'session.usage') return respond({ context_used: 12500, context_max: 114688, total: 12500, input: 9000, output: 3500 })
       if (requestFrame.method === 'prompt.submit') {