演练场
21 个场景,专为 打垮天真录制器而生。
下面每一页都是一个有控的陷阱 — 哈希类名、懒加载弹窗、Shadow DOM、跨标签流程、IME 合成、拖拽。装上扩展,点 Start,跑一遍 Try this 步骤,再对照每页上列出的 ActionStep[] 期望输出。
- 安装
- 钉到工具栏
- 打开一个场景
Start照着 "Try this" 做Save as Skill
覆盖矩阵20 个场景
F.真实产品综合 — Notion / Linear / Jira / Salesforce4 个场景
A.选择器稳定性 — 哈希类名、相同兄弟节点、多语言4 个场景
B.异步 + 时序 — SPA 路由、懒加载弹窗2 个场景
C.多界面 — iframe、Shadow DOM、脱敏、新标签4 个场景
D.特殊输入 — 拖拽、文件、组合键、contenteditable、剪贴板、combobox6 个场景
F.
真实产品综合
有分量的产品形态场景,把 12 个以上难点串成完整工作流 — 演练场里最接近"扛得住一天工作"的部分。
4 个场景
块编辑器
F1 · Notion-style block editor
A workspace with a sidebar of pages, a block-based contenteditable doc, slash commands, @-mentions, and drag-handle reordering.
12 个难点
A2A3A4B1B3D1D2D3D4D5D6E2
议题追踪
F2 · Linear-style issue tracker
Keyboard-first issue tracker: Cmd+K command palette, status/priority/assignee comboboxes, list and Kanban views, drag between columns.
12 个难点
A2A3A4B1B2B3D1D3D4D5D6E2
迭代看板
F3 · Jira-style sprint board
Full login flow: credentials → 2FA → sprint board with drag-between-columns, side flyout with rich-text comments + drag-to-upload attachments, embedded wiki iframe, print preview in new tab.
15 个难点
A2A3A4B1B3C1C2C4D1D2D3D4D5D6E2
CRM
F4 · Salesforce-style CRM
Login → home → accounts list → record detail with inline-edit pencils, masked phone/SSN/CC fields, Country→State dependent comboboxes, attachment dropzone, multi-step approval workflow, "Generate quote" new tab, live-chat widget in an iframe.
15 个难点
A2A3B1B2B3C1C2C4D1D2D3D4D5D6E2
A.
选择器稳定性
选择器要在动态类名、相同兄弟节点、locale 切换之后依然可用。
4 个场景
A1 · Static form (smoke)
Three text fields + submit. The baseline every recorder must pass.
[data-testid="*-input"]A2 · Dynamic class hashes
Buttons get fresh `btn__primary--ab3f9c` classes on every load.
.btn__primary--ab3f9cA3 · Identical sibling tiebreak
Six rows with identical "Pick" buttons. Only position distinguishes them.
fingerprintIndex: 3A4 · Locale-stable selectors via data-i18n-key
"Continue" / "继续" / "Weiter" — same DOM, three languages.
data-i18n-key="action.continue"B.
异步 + 时序
回放需要等 SPA 路由、防抖搜索、懒加载弹窗。
2 个场景
C.
多界面
Iframe、Shadow DOM、多标签流程都是一等公民。
4 个场景
C1 · Same-origin iframe
A button inside an iframe. Recorder injects into the iframe; actions carry a `frameId`.
frameId: <non-zero>C2 · Sensitive-field redaction
Password, phone, and credit-card inputs are auto-masked before they hit storage.
masked: true · ***C3 · Shadow DOM piercing
`<my-card>` Web Component with an open shadow root.
kind: "shadow"C4 · Multi-tab (target="_blank")
Click a link that opens a second tab, then click on that new tab.
switchTab → tabs.createD.
特殊输入
拖拽、文件上传、组合键、contenteditable、剪贴板、ARIA combobox。
6 个场景
D1 · HTML5 drag & drop
Drag a card from "Backlog" onto "In progress".
drag → dataTransferD2 · File upload
Pick a file. Recorder captures filename + size + mime — never the bytes.
fileMeta · no bytesD3 · Modifier-key chords
Cmd/Ctrl + K opens a palette; Ctrl + Enter submits.
metaKey + "k"D4 · contenteditable richtext
A div with `contenteditable="true"` — like a Notion/Slack composer.
inputType: "contenteditable"D5 · Clipboard (copy + paste)
Copy a value from one place, paste it into another.
Cmd-C → Cmd-VD6 · ARIA combobox
Type to filter, click an option.
comboboxContext.optionText