running-qa-flows

Executes written QA flow specs against a running Composer app via the agent debug port.

518|49|Updated Apr 7, 2021
One-click install
npx skills add https://github.com/dxos/dxos --skill running-qa-flows
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: running-qa-flows
Source: https://github.com/dxos/dxos/tree/main/.agents/skills/running-qa-flows
Command: npx skills add https://github.com/dxos/dxos --skill running-qa-flows

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Manually verifying that a plugin change works end to end in the real Composer application is slow and error-prone, and unit tests cannot cover live UI behavior. This Skill executes a written flow QA-n test plan from a .mdl spec against a running Composer instance, establishing preconditions, driving each step through the agent debug port, and reporting a per-step pass/fail table.

Core Features & Use Cases

  • Spec-driven execution: Reads given, before, test, and after stages from a flow block in a PLUGIN.mdl or APP.mdl file and runs them in order, with --stage support for partial runs.
  • Live app driving: Starts a QA server with moon run composer-app:serve-qa, connects through the debug port session, and invokes operations through the capability invoker with exact key matching.
  • Effect-based assertions: Judges each step by its actual effect in the database or DOM rather than invocation return values, and reports failures as QA-n.m with observed versus expected values.
  • Use Case: After modifying a Composer plugin, ask the agent to run the plugin's ## QA flow to confirm documents are created, placed, opened, and edited correctly in the real app before merging.

Quick Start

Run the QA-1 flow from the plugin's PLUGIN.mdl against a fresh dev server and report the per-step pass/fail table.

Frequently Asked Questions about running-qa-flows

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run a QA flow against a running Composer app?

Start a QA server with `moon run composer-app:serve-qa`, which sets DX_DEBUG_PORT and publishes a session to temp/debug-port.json. Then read the flow block from the .mdl spec, verify its given preconditions, and invoke each step through the debug port session.

What is a flow block in a PLUGIN.mdl file?

A flow is a written test plan in the `## QA` section of a PLUGIN.mdl or APP.mdl file, defined in the qa.mdl dialect. It contains given preconditions plus before, test, and after step lists, where each step has do, invoke, expect, and assert fields.

When should I use running-qa-flows instead of composer-debug?

Use running-qa-flows when executing a written QA plan with defined steps and assertions end to end. Use composer-debug for ad-hoc probing of a live page, since it defaults to read-only inspection rather than executing a mutating plan.

Why does a QA flow step pass even though nothing changed in the app?

A step can falsely pass when judged by its invocation return value instead of its effect, or when leftover artifacts from a previous run satisfy an existence-shaped assert. Always verify the flow's artifacts are absent first and judge steps by database or DOM state.

Can I run only part of a QA flow?

Yes, the `--stage=before|test|after` option runs a single stage. A partial run is normal: before stands a fixture up, after tears one down, and test re-tests against an existing fixture, with leftovers reported so the next full run's given check catches them.

Why must cleanup use operations instead of space.db.remove?

Calling space.db.remove deletes the object but leaves an open plank pointing at it, and the user cannot close a plank whose object no longer exists. The after stage runs through operations like space.removeObjects, which unlinks from the collection and closes open surfaces.