import assert from 'node:assert/strict' import { renderToStaticMarkup } from 'react-dom/server' import { PlanCreateBlock, PlanUpdateBlock, TaskBlock, ThinkingBlock } from '../src/renderer/src/workbuddy/conversation/SpecializedBlocks' const reasoning = renderToStaticMarkup() assert.match(reasoning, /Reasoning body/) assert.match(reasoning, /思考中/) assert.doesNotMatch(reasoning, /]*>[+-]<\/span>/) const plan = renderToStaticMarkup( undefined} onDownloadPlan={() => undefined} onBuildPlan={() => undefined} /> ) assert.match(plan, /plan\.md/) assert.match(plan, /aria-label="Download plan"[^>]*>执行(?:OK|>|x|-) ) assert.match(activePlan, /使用 search 探索中\.\.\./) const failedPlan = renderToStaticMarkup( ) assert.match(failedPlan, /aria-label="Failed"/) const cancelledPlan = renderToStaticMarkup( ) assert.match(cancelledPlan, /aria-label="Cancelled"/) const update = renderToStaticMarkup( ) assert.match(update, /Release plan confirmed/) assert.match(update, /cb-plan-update-spinner/) const task = renderToStaticMarkup( ) assert.match(task, /任务 builder 子代理: Run checks/) assert.match(task, /任务执行已取消!/) assert.match(task, /aria-expanded="true" aria-label="Collapse task"/) assert.match(task, /execute_command/) assert.match(task, /Stopped output/) const pendingTask = renderToStaticMarkup() assert.match(pendingTask, /正在创建任务/) console.log('Specialized block icon and label SSR regression checks passed')