Desktop QA Flows
Use this skill when asked to create, review, or improve QA flows for a
Rocket.Chat Desktop PR, branch, release candidate, or changed feature.
Canonical References
Read these before authoring flows:
AGENTS.md
qa/AGENTS.md
qa/README.md
qa/flow-template.md
Those files define the schema and validation rules. This skill defines the
repeatable PR workflow.
Workflow
- Lock the comparison range: base branch, head branch or commit, and whether
the requested range is fully in scope.
- Inspect the changed implementation before writing steps: changed files,
commits, tests, React components, Fuselage icons, i18n labels, menu
definitions, modal buttons, platform guards, docs, installers, and helper
pages.
- Map changed Desktop surfaces to user-visible risk:
- Electron main process, preload, IPC, and deep links.
- Settings UI, menus, modals, server list, i18n, and layout.
- OS protocol handlers, default apps, registry, desktop files, and cold
launch behavior.
- Packaging, installers, release policy, startup, persistence, shortcuts,
workspace routing, and diagnostics.
- Compare those risks with existing
qa/**/flows/*.md.
- Update an existing flow when it already covers the same user-visible
hypothesis.
- Add a new flow when the changed surface creates a new user-visible risk.
- Create a new
qa/<feature-slug>/ pack when the risk does not belong in an
existing pack.
- Write every branch-derived flow with
## Review Basis: comparison range,
changed surface, user-visible risk, hypothesis, and smallest useful proof.
- Keep every step visually findable. Put screen region, relative position, icon
shape, nearby UI, visible labels, and confirmation state directly in the
Action cell.
- Add static helper HTML or read-only scripts when they reduce ambiguity for
clickable links, protocol handlers, OS checks, or repeated evidence capture.
Coverage Rules
- Do not claim full QA unless the full requested comparison range was checked.
- Mark unchanged or already-covered surfaces explicitly in the summary.
- Classify result findings as
confirmed, suspected, or blocked.
- If runtime validation is not practical, use the smallest useful proof: an
existing test, targeted test, local UI repro, OS-level repro, or code-path
proof.
- Keep Qase source IDs in the repo and leave generated Qase IDs empty until a
case already exists in Qase.
Validation
After changing QA packs, run:
node qa/scripts/validate-flows.mjs qa/<pack>
node qa/scripts/export-qase-csv.mjs qa/<pack>
git diff --check
Report any unvalidated pack or partial surface review clearly.
1---2name: desktop-qa-flows3description: Create or review Qase-ready QA flows for Rocket.Chat Desktop PRs and branches.4---56# Desktop QA Flows78Use this skill when asked to create, review, or improve QA flows for a9Rocket.Chat Desktop PR, branch, release candidate, or changed feature.1011## Canonical References1213Read these before authoring flows:1415- `AGENTS.md`16- `qa/AGENTS.md`17- `qa/README.md`18- `qa/flow-template.md`1920Those files define the schema and validation rules. This skill defines the21repeatable PR workflow.2223## Workflow24251. Lock the comparison range: base branch, head branch or commit, and whether26 the requested range is fully in scope.272. Inspect the changed implementation before writing steps: changed files,28 commits, tests, React components, Fuselage icons, i18n labels, menu29 definitions, modal buttons, platform guards, docs, installers, and helper30 pages.313. Map changed Desktop surfaces to user-visible risk:32 - Electron main process, preload, IPC, and deep links.33 - Settings UI, menus, modals, server list, i18n, and layout.34 - OS protocol handlers, default apps, registry, desktop files, and cold35 launch behavior.36 - Packaging, installers, release policy, startup, persistence, shortcuts,37 workspace routing, and diagnostics.384. Compare those risks with existing `qa/**/flows/*.md`.395. Update an existing flow when it already covers the same user-visible40 hypothesis.416. Add a new flow when the changed surface creates a new user-visible risk.427. Create a new `qa/<feature-slug>/` pack when the risk does not belong in an43 existing pack.448. Write every branch-derived flow with `## Review Basis`: comparison range,45 changed surface, user-visible risk, hypothesis, and smallest useful proof.469. Keep every step visually findable. Put screen region, relative position, icon47 shape, nearby UI, visible labels, and confirmation state directly in the48 `Action` cell.4910. Add static helper HTML or read-only scripts when they reduce ambiguity for50 clickable links, protocol handlers, OS checks, or repeated evidence capture.5152## Coverage Rules5354- Do not claim full QA unless the full requested comparison range was checked.55- Mark unchanged or already-covered surfaces explicitly in the summary.56- Classify result findings as `confirmed`, `suspected`, or `blocked`.57- If runtime validation is not practical, use the smallest useful proof: an58 existing test, targeted test, local UI repro, OS-level repro, or code-path59 proof.60- Keep Qase source IDs in the repo and leave generated Qase IDs empty until a61 case already exists in Qase.6263## Validation6465After changing QA packs, run:6667```sh68node qa/scripts/validate-flows.mjs qa/<pack>69node qa/scripts/export-qase-csv.mjs qa/<pack>70git diff --check71```7273Report any unvalidated pack or partial surface review clearly.