# Result 格式速查表

## ⚠️ 强制规则：观察点覆盖

result 必须覆盖 test_steps 中所有"观察【XXX】"的要求，遗漏即为实现缺陷。

| 观察点类型 | result 必须包含 |
|-----------|----------------|
| 数值显示 | 具体数值 |
| 文本显示 | 对应文本 |
| 状态显示 | 状态值 |

### 操作类型映射

| 类型 | 实现 | result格式 |
|------|------|------------|
| API类 | Button包装，onClick调用HAR API | `API名(参数) → 结果` |
| 触发型UI | Button触发，回调中设置result | `Toast显示成功` |
| 回调类 | 三层策略：L1即时→L2回调→L3缺陷 | 见参考文件references/result-format.md |
| 展示型UI | 量化状态追踪，实时显示 | `状态名: 值` |

## API类操作

| 场景 | 格式 |
|------|------|
| 成功 | `setChecked(true) → true` |
| 失败 | `setChecked: error: ${e.message}` |
| 无法测试 | `setChecked(true): ⚠️ 无法测试 - [原因]` |
| 替代验证 | `setChecked: 通过替代方式验证 - [说明]` |

## 回调类操作

| 层级 | 格式 |
|------|------|
| L1即时 | `toggle: false → true` |
| L2回调 | `OnChangeListener #1: isChecked=true` |
| L3缺陷 | `⚠️ 回调未触发（可能接口缺陷）` |
**注意**：若library使用`@State private`无法外部控制，L2可能无法触发，如实记录为缺陷。

## 展示型UI

- 量化状态追踪（scrollOffset、headerId等）
- result实时显示状态值
- 固定高度预览区`.height(200)`
- 组合行为必须验证组合条件

**示例**
| 场景 | 格式 |
|------|------|
| 状态追踪 | `当前头部ID: 1 | 滚动偏移: 150vp` |
| 组合验证成功 | `主头部ID: 1 | 子头部ID: 2 | 状态: 同时吸顶` |
| 组合验证失败 | `主头部ID: 1 | 子头部ID: 2\n⚠️ 双层吸顶未同时生效` |

## 触发型UI

| 场景 | 格式 |
|------|------|
| Toast | `Toast显示成功` |
| Dialog | `Dialog已弹出` |

### 无法测试API处理

例如：API存在但无法调用（如ArkTS父组件无法调用子组件方法）：
| 处理 | 格式 |
|------|------|
| 如实反馈 | `setChecked(true): �7�2�1�5 无法测试 - ArkTS父组件无法调用子组件方法` |
| 替代验证 | `setChecked: 通过替代方式(点击组件)验证 - 状态变化成功` |
| 记录缺陷 | 05-demo-gen.json interface_gaps字段 |

## 禁止格式

| 禁止 | 原因 |
|------|------|
| `验证通过` | 无客观依据 |
| `回调已触发` | 写死虚假结果 |
| `等待操作 F-XX-XX...`保持不变 | 禁止操作之后result区不动 |