/** * 套件详情页(suite detail) * 业务:展示单个套件的用例列表,提供重跑/停止动作 * 注意:页面不内联任何"重跑逻辑",只声明引用 run-suite action —— 行为万物皆注册 */ import { definePage } from 'vibe-registry' export const suiteDetailPage = definePage({ layout: 'qa-console', title: '测试编排 · 套件详情', blocks: [ { widget: 'suite-list', bind: { suites: 'suites' } }, { widget: 'suite-detail-view', props: { mode: 'detail', suiteId: 'current' }, bind: { cases: 'cases', suite: 'suite' }, }, ], setup: async (ctx) => { const suiteId = ctx.params.id ?? 'auth' const cases = [ { id: 'a1', name: '登录成功', priority: 'P0', status: 'passed', durationMs: 120 }, { id: 'a2', name: '登录失败锁定', priority: 'P1', status: 'failed', durationMs: 340 }, { id: 'a3', name: '令牌过期刷新', priority: 'P1', status: 'running', durationMs: null }, ] return { suites: [ { id: 'auth', name: '认证模块', passedRate: 0.92, lastResult: 'passed' }, { id: 'billing', name: '计费模块', passedRate: 0.71, lastResult: 'failed' }, ], suite: { id: suiteId, name: `${suiteId} 套件` }, cases, } }, actions: { rerun: async (payload: { suiteId?: string }) => { // 页面只做"把用户意图转成 action 调用",实现仍在注册表 const { runSuiteAction } = await import('../registry/actions/run-suite.ts') return runSuiteAction.handler({ suiteId: payload.suiteId ?? 'auth' }, null) }, }, })