@massa-ai/cursor-plugin 1.60.1 → 1.62.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor-plugin/plugin.json +1 -1
- package/README.md +2 -2
- package/agent-profiles/{heavy/massa-ai-builder.md → balanced/builder.md} +4 -4
- package/agent-profiles/balanced/code-explorer.md +102 -0
- package/agent-profiles/balanced/code-reviewer.md +134 -0
- package/agent-profiles/balanced/designer.md +84 -0
- package/agent-profiles/balanced/judge.md +147 -0
- package/agent-profiles/balanced/product-manager.md +108 -0
- package/agent-profiles/balanced/test-engineer.md +100 -0
- package/agent-profiles/cheap/{massa-ai-builder.md → builder.md} +4 -4
- package/agent-profiles/cheap/code-explorer.md +102 -0
- package/agent-profiles/cheap/code-reviewer.md +134 -0
- package/agent-profiles/cheap/designer.md +84 -0
- package/agent-profiles/cheap/judge.md +147 -0
- package/agent-profiles/cheap/product-manager.md +108 -0
- package/agent-profiles/cheap/test-engineer.md +100 -0
- package/agent-profiles/{balanced/massa-ai-builder.md → heavy/builder.md} +4 -4
- package/agent-profiles/heavy/code-explorer.md +102 -0
- package/agent-profiles/heavy/code-reviewer.md +134 -0
- package/agent-profiles/heavy/designer.md +84 -0
- package/agent-profiles/heavy/judge.md +147 -0
- package/agent-profiles/heavy/product-manager.md +108 -0
- package/agent-profiles/heavy/test-engineer.md +100 -0
- package/agent-profiles/home/{massa-ai-builder.md → builder.md} +4 -4
- package/agent-profiles/home/code-explorer.md +102 -0
- package/agent-profiles/home/code-reviewer.md +134 -0
- package/agent-profiles/home/designer.md +84 -0
- package/agent-profiles/home/judge.md +147 -0
- package/agent-profiles/home/product-manager.md +108 -0
- package/agent-profiles/home/test-engineer.md +100 -0
- package/agent-profiles/work/builder.md +63 -0
- package/agent-profiles/work/code-explorer.md +102 -0
- package/agent-profiles/work/code-reviewer.md +134 -0
- package/agent-profiles/work/designer.md +84 -0
- package/agent-profiles/work/judge.md +147 -0
- package/agent-profiles/work/product-manager.md +108 -0
- package/agent-profiles/work/test-engineer.md +100 -0
- package/agents/builder.md +63 -0
- package/agents/code-explorer.md +102 -0
- package/agents/code-reviewer.md +134 -0
- package/agents/designer.md +84 -0
- package/agents/judge.md +147 -0
- package/agents/product-manager.md +108 -0
- package/agents/test-engineer.md +100 -0
- package/hooks/massa-ai-hook +4 -4
- package/install.sh +110 -33
- package/package.json +1 -1
- package/skills/agents/builder/SKILL.md +3 -5
- package/skills/agents/code-explorer/SKILL.md +104 -0
- package/skills/agents/code-reviewer/SKILL.md +136 -0
- package/skills/agents/designer/SKILL.md +34 -18
- package/skills/agents/judge/SKILL.md +101 -51
- package/skills/agents/product-manager/SKILL.md +110 -0
- package/skills/agents/test-engineer/SKILL.md +57 -23
- package/skills/bootstrap/SKILL.md +4 -5
- package/skills/{adr → create-adr}/SKILL.md +3 -3
- package/skills/{to-prd → create-prd}/SKILL.md +3 -3
- package/skills/{rfc → create-rfc}/SKILL.md +3 -3
- package/skills/{tdd → create-tdd}/SKILL.md +3 -3
- package/skills/{ticket → create-ticket}/SKILL.md +3 -3
- package/skills/massa-ai/SKILL.md +26 -29
- package/skills/massa-ai/references/agent-orchestration.md +69 -66
- package/skills/massa-ai/references/audit-report-io.md +8 -87
- package/skills/massa-ai/references/code-reuse-scan.md +1 -1
- package/skills/massa-ai/references/{adr-authoring.md → create-adr.md} +3 -3
- package/skills/massa-ai/references/{rfc → create-rfc}/discovery-and-sizing.md +1 -1
- package/skills/massa-ai/references/{tdd → create-tdd}/calibrated-examples.md +3 -3
- package/skills/massa-ai/references/{tdd → create-tdd}/discovery-and-sizing.md +1 -1
- package/skills/massa-ai/references/{tdd → create-tdd}/quality-and-lifecycle.md +1 -1
- package/skills/massa-ai/references/{ticket → create-ticket}/intake-and-sources.md +1 -1
- package/skills/massa-ai/references/figma-pre-analysis.md +1 -1
- package/skills/massa-ai/references/furps/analyst-role.md +3 -3
- package/skills/massa-ai/references/furps/checklist.md +2 -2
- package/skills/massa-ai/references/furps/intake.md +7 -7
- package/skills/massa-ai/references/hook-enforcement.md +4 -8
- package/skills/massa-ai/references/implementation-delivery.md +2 -2
- package/skills/massa-ai/references/knowledge-verification-chain.md +0 -1
- package/skills/massa-ai/references/mobile-context.md +2 -5
- package/skills/massa-ai/references/pr-task-fix.md +1 -1
- package/skills/massa-ai/references/spec-driven/sub-agents.md +5 -5
- package/skills/massa-ai/references/spec-driven/validate.md +1 -1
- package/skills/massa-ai/references/subagent-design.md +6 -9
- package/skills/massa-ai/references/synapse-policy.md +2 -2
- package/skills/massa-ai/references/verification-ladder.md +2 -2
- package/skills/massa-ai/scripts/validate_audit_report.ts +3 -8
- package/skills/massa-ai/workflows/architecture/architecture-audit.md +4 -5
- package/skills/massa-ai/workflows/architecture/architecture-fix.md +5 -6
- package/skills/massa-ai/workflows/bugs/bugs-audit.md +2 -3
- package/skills/massa-ai/workflows/bugs/bugs-fix.md +4 -5
- package/skills/massa-ai/workflows/code-quality/code-quality-audit.md +2 -3
- package/skills/massa-ai/workflows/code-quality/code-quality-fix.md +4 -5
- package/skills/massa-ai/workflows/commit.md +3 -3
- package/skills/massa-ai/workflows/{adr.md → create-adr.md} +10 -10
- package/skills/massa-ai/workflows/{to-prd.md → create-prd.md} +4 -4
- package/skills/massa-ai/workflows/{rfc.md → create-rfc.md} +6 -6
- package/skills/massa-ai/workflows/{tdd.md → create-tdd.md} +11 -11
- package/skills/massa-ai/workflows/{ticket.md → create-ticket.md} +5 -5
- package/skills/massa-ai/workflows/debug.md +4 -5
- package/skills/massa-ai/workflows/design.md +2 -2
- package/skills/massa-ai/workflows/exploration.md +2 -2
- package/skills/massa-ai/workflows/feature.md +5 -6
- package/skills/massa-ai/workflows/implementation/implementation-audit.md +22 -3
- package/skills/massa-ai/workflows/implementation/implementation-fix.md +6 -7
- package/skills/massa-ai/workflows/judge-with-debate.md +14 -14
- package/skills/massa-ai/workflows/mobile-figma/mobile-figma-audit.md +2 -2
- package/skills/massa-ai/workflows/mobile-figma/mobile-figma-fix.md +10 -11
- package/skills/massa-ai/workflows/pr-review.md +31 -13
- package/skills/massa-ai/workflows/{discovery.md → product-discovery.md} +12 -12
- package/skills/massa-ai/workflows/refactor.md +4 -5
- package/skills/massa-ai/workflows/refinement/furps-refinement.md +7 -7
- package/skills/massa-ai/workflows/requirements/requirements-audit.md +2 -2
- package/skills/massa-ai/workflows/requirements/requirements-fix.md +5 -6
- package/skills/massa-ai/workflows/security/security-audit.md +2 -3
- package/skills/massa-ai/workflows/security/security-fix.md +3 -4
- package/skills/massa-ai/workflows/spec-driven.md +9 -10
- package/skills/massa-ai/workflows/tests/tests-audit.md +2 -2
- package/skills/massa-ai/workflows/tests/tests-fix.md +16 -6
- package/skills/massa-ai/workflows/the-fool.md +7 -7
- package/skills/{discovery → product-discovery}/SKILL.md +3 -3
- package/agent-profiles/balanced/massa-ai-architecture-specialist.md +0 -62
- package/agent-profiles/balanced/massa-ai-audit-specialist.md +0 -79
- package/agent-profiles/balanced/massa-ai-context-curator.md +0 -64
- package/agent-profiles/balanced/massa-ai-designer.md +0 -66
- package/agent-profiles/balanced/massa-ai-documentation-agent.md +0 -61
- package/agent-profiles/balanced/massa-ai-furps-analyst.md +0 -68
- package/agent-profiles/balanced/massa-ai-investigator.md +0 -65
- package/agent-profiles/balanced/massa-ai-judge.md +0 -95
- package/agent-profiles/balanced/massa-ai-meta-judge.md +0 -83
- package/agent-profiles/balanced/massa-ai-mobile-specialist.md +0 -79
- package/agent-profiles/balanced/massa-ai-navigator.md +0 -72
- package/agent-profiles/balanced/massa-ai-plan-critic.md +0 -87
- package/agent-profiles/balanced/massa-ai-planner.md +0 -62
- package/agent-profiles/balanced/massa-ai-requirements-analyst.md +0 -61
- package/agent-profiles/balanced/massa-ai-reviewer.md +0 -63
- package/agent-profiles/balanced/massa-ai-test-engineer.md +0 -63
- package/agent-profiles/balanced/massa-ai-verification-agent.md +0 -62
- package/agent-profiles/cheap/massa-ai-architecture-specialist.md +0 -62
- package/agent-profiles/cheap/massa-ai-audit-specialist.md +0 -79
- package/agent-profiles/cheap/massa-ai-context-curator.md +0 -64
- package/agent-profiles/cheap/massa-ai-designer.md +0 -66
- package/agent-profiles/cheap/massa-ai-documentation-agent.md +0 -61
- package/agent-profiles/cheap/massa-ai-furps-analyst.md +0 -68
- package/agent-profiles/cheap/massa-ai-investigator.md +0 -65
- package/agent-profiles/cheap/massa-ai-judge.md +0 -95
- package/agent-profiles/cheap/massa-ai-meta-judge.md +0 -83
- package/agent-profiles/cheap/massa-ai-mobile-specialist.md +0 -79
- package/agent-profiles/cheap/massa-ai-navigator.md +0 -72
- package/agent-profiles/cheap/massa-ai-plan-critic.md +0 -87
- package/agent-profiles/cheap/massa-ai-planner.md +0 -62
- package/agent-profiles/cheap/massa-ai-requirements-analyst.md +0 -61
- package/agent-profiles/cheap/massa-ai-reviewer.md +0 -63
- package/agent-profiles/cheap/massa-ai-test-engineer.md +0 -63
- package/agent-profiles/cheap/massa-ai-verification-agent.md +0 -62
- package/agent-profiles/heavy/massa-ai-architecture-specialist.md +0 -62
- package/agent-profiles/heavy/massa-ai-audit-specialist.md +0 -79
- package/agent-profiles/heavy/massa-ai-context-curator.md +0 -64
- package/agent-profiles/heavy/massa-ai-designer.md +0 -66
- package/agent-profiles/heavy/massa-ai-documentation-agent.md +0 -61
- package/agent-profiles/heavy/massa-ai-furps-analyst.md +0 -68
- package/agent-profiles/heavy/massa-ai-investigator.md +0 -65
- package/agent-profiles/heavy/massa-ai-judge.md +0 -95
- package/agent-profiles/heavy/massa-ai-meta-judge.md +0 -83
- package/agent-profiles/heavy/massa-ai-mobile-specialist.md +0 -79
- package/agent-profiles/heavy/massa-ai-navigator.md +0 -72
- package/agent-profiles/heavy/massa-ai-plan-critic.md +0 -87
- package/agent-profiles/heavy/massa-ai-planner.md +0 -62
- package/agent-profiles/heavy/massa-ai-requirements-analyst.md +0 -61
- package/agent-profiles/heavy/massa-ai-reviewer.md +0 -63
- package/agent-profiles/heavy/massa-ai-test-engineer.md +0 -63
- package/agent-profiles/heavy/massa-ai-verification-agent.md +0 -62
- package/agent-profiles/home/massa-ai-architecture-specialist.md +0 -62
- package/agent-profiles/home/massa-ai-audit-specialist.md +0 -79
- package/agent-profiles/home/massa-ai-context-curator.md +0 -64
- package/agent-profiles/home/massa-ai-designer.md +0 -66
- package/agent-profiles/home/massa-ai-documentation-agent.md +0 -61
- package/agent-profiles/home/massa-ai-furps-analyst.md +0 -68
- package/agent-profiles/home/massa-ai-investigator.md +0 -65
- package/agent-profiles/home/massa-ai-judge.md +0 -95
- package/agent-profiles/home/massa-ai-meta-judge.md +0 -83
- package/agent-profiles/home/massa-ai-mobile-specialist.md +0 -79
- package/agent-profiles/home/massa-ai-navigator.md +0 -72
- package/agent-profiles/home/massa-ai-plan-critic.md +0 -87
- package/agent-profiles/home/massa-ai-planner.md +0 -62
- package/agent-profiles/home/massa-ai-requirements-analyst.md +0 -61
- package/agent-profiles/home/massa-ai-reviewer.md +0 -63
- package/agent-profiles/home/massa-ai-test-engineer.md +0 -63
- package/agent-profiles/home/massa-ai-verification-agent.md +0 -62
- package/agent-profiles/work/massa-ai-architecture-specialist.md +0 -62
- package/agent-profiles/work/massa-ai-audit-specialist.md +0 -79
- package/agent-profiles/work/massa-ai-builder.md +0 -63
- package/agent-profiles/work/massa-ai-context-curator.md +0 -64
- package/agent-profiles/work/massa-ai-designer.md +0 -66
- package/agent-profiles/work/massa-ai-documentation-agent.md +0 -61
- package/agent-profiles/work/massa-ai-furps-analyst.md +0 -68
- package/agent-profiles/work/massa-ai-investigator.md +0 -65
- package/agent-profiles/work/massa-ai-judge.md +0 -95
- package/agent-profiles/work/massa-ai-meta-judge.md +0 -83
- package/agent-profiles/work/massa-ai-mobile-specialist.md +0 -79
- package/agent-profiles/work/massa-ai-navigator.md +0 -72
- package/agent-profiles/work/massa-ai-plan-critic.md +0 -87
- package/agent-profiles/work/massa-ai-planner.md +0 -62
- package/agent-profiles/work/massa-ai-requirements-analyst.md +0 -61
- package/agent-profiles/work/massa-ai-reviewer.md +0 -63
- package/agent-profiles/work/massa-ai-test-engineer.md +0 -63
- package/agent-profiles/work/massa-ai-verification-agent.md +0 -62
- package/agents/massa-ai-architecture-specialist.md +0 -62
- package/agents/massa-ai-audit-specialist.md +0 -79
- package/agents/massa-ai-builder.md +0 -63
- package/agents/massa-ai-context-curator.md +0 -64
- package/agents/massa-ai-designer.md +0 -66
- package/agents/massa-ai-documentation-agent.md +0 -61
- package/agents/massa-ai-furps-analyst.md +0 -68
- package/agents/massa-ai-investigator.md +0 -65
- package/agents/massa-ai-judge.md +0 -95
- package/agents/massa-ai-meta-judge.md +0 -83
- package/agents/massa-ai-mobile-specialist.md +0 -79
- package/agents/massa-ai-navigator.md +0 -72
- package/agents/massa-ai-plan-critic.md +0 -87
- package/agents/massa-ai-planner.md +0 -62
- package/agents/massa-ai-requirements-analyst.md +0 -61
- package/agents/massa-ai-reviewer.md +0 -63
- package/agents/massa-ai-test-engineer.md +0 -63
- package/agents/massa-ai-verification-agent.md +0 -62
- package/skills/agents/architecture-specialist/SKILL.md +0 -67
- package/skills/agents/audit-specialist/SKILL.md +0 -84
- package/skills/agents/context-curator/SKILL.md +0 -69
- package/skills/agents/documentation-agent/SKILL.md +0 -67
- package/skills/agents/furps-analyst/SKILL.md +0 -72
- package/skills/agents/investigator/SKILL.md +0 -70
- package/skills/agents/meta-judge/SKILL.md +0 -87
- package/skills/agents/mobile-specialist/SKILL.md +0 -84
- package/skills/agents/navigator/SKILL.md +0 -77
- package/skills/agents/plan-critic/SKILL.md +0 -91
- package/skills/agents/planner/SKILL.md +0 -67
- package/skills/agents/requirements-analyst/SKILL.md +0 -66
- package/skills/agents/reviewer/SKILL.md +0 -68
- package/skills/agents/verification-agent/SKILL.md +0 -67
- package/skills/general/SKILL.md +0 -14
- package/skills/maestro/SKILL.md +0 -14
- package/skills/maestro-audit/SKILL.md +0 -14
- package/skills/maestro-fix/SKILL.md +0 -14
- package/skills/massa-ai/personas/README.md +0 -35
- package/skills/massa-ai/personas/ai-native-nodejs-cli-architect.md +0 -47
- package/skills/massa-ai/personas/catalog.json +0 -7
- package/skills/massa-ai/personas/context-skill-harness-engineer-architect.md +0 -47
- package/skills/massa-ai/personas/product-manager.md +0 -65
- package/skills/massa-ai/personas/senior-mobile-engineer.md +0 -46
- package/skills/massa-ai/personas/senior-mobile-qa-automation-engineer.md +0 -51
- package/skills/massa-ai/personas/signals/ai-native-nodejs-cli-architect.json +0 -20
- package/skills/massa-ai/personas/signals/context-skill-harness-engineer-architect.json +0 -20
- package/skills/massa-ai/personas/signals/product-manager.json +0 -21
- package/skills/massa-ai/personas/signals/senior-mobile-engineer.json +0 -18
- package/skills/massa-ai/personas/signals/senior-mobile-qa-automation-engineer.json +0 -18
- package/skills/massa-ai/references/maestro/artifacts-reports.md +0 -69
- package/skills/massa-ai/references/maestro/cli-device.md +0 -65
- package/skills/massa-ai/references/maestro/cloud.md +0 -69
- package/skills/massa-ai/references/maestro/config-env-output.md +0 -76
- package/skills/massa-ai/references/maestro/fact-ledger.md +0 -73
- package/skills/massa-ai/references/maestro/js-scripting.md +0 -70
- package/skills/massa-ai/references/maestro/mcp.md +0 -59
- package/skills/massa-ai/references/maestro/patterns.md +0 -102
- package/skills/massa-ai/references/maestro/selectors.md +0 -91
- package/skills/massa-ai/references/maestro/workspace-execution.md +0 -81
- package/skills/massa-ai/references/maestro/yaml-commands.md +0 -203
- package/skills/massa-ai/references/maestro.md +0 -31
- package/skills/massa-ai/workflows/general.md +0 -88
- package/skills/massa-ai/workflows/maestro/maestro-audit.md +0 -64
- package/skills/massa-ai/workflows/maestro/maestro-fix.md +0 -111
- package/skills/massa-ai/workflows/maestro/maestro.md +0 -80
- package/skills/persona-router/SKILL.md +0 -52
- package/skills/persona-router/references/routing-details.md +0 -98
- /package/skills/massa-ai/references/{rfc → create-rfc}/ATTRIBUTION.md +0 -0
- /package/skills/massa-ai/references/{rfc → create-rfc}/document-contract.md +0 -0
- /package/skills/massa-ai/references/{rfc → create-rfc}/quality-and-lifecycle.md +0 -0
- /package/skills/massa-ai/references/{tdd → create-tdd}/document-contract.md +0 -0
- /package/skills/massa-ai/references/{ticket → create-ticket}/atlassian-fix.md +0 -0
- /package/skills/massa-ai/references/{ticket → create-ticket}/templates-and-quality.md +0 -0
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
# Maestro Config, Env, And Output Boundaries
|
|
2
|
-
|
|
3
|
-
Use when deciding whether a fact belongs in a Flow header, `config.yaml`, CLI invocation, report metadata, or artifact output.
|
|
4
|
-
|
|
5
|
-
## Boundary Matrix
|
|
6
|
-
|
|
7
|
-
| Surface | Owns | Does not own |
|
|
8
|
-
|---|---|---|
|
|
9
|
-
| Flow header | `appId` or `url`, `name`, `tags`, `env`, hooks, JUnit `properties` | Workspace discovery policy for all flows |
|
|
10
|
-
| `config.yaml` | `flows`, `testOutputDir`, global tags, `executionOrder`, platform config, Cloud notifications/baseline | JUnit/HTML report generation |
|
|
11
|
-
| CLI flags | `--env`, `--config`, `--format`, `--output`, `--test-output-dir`, `--debug-output`, tag overrides, device/platform | Persistent source truth |
|
|
12
|
-
| Report file | JUnit/HTML result selected by `--format` and `--output` | Screenshots/videos/debug logs by default |
|
|
13
|
-
| Artifact dirs | screenshots, videos, `commands-*.json`, AI reports, and optionally `maestro.log` | Test result XML unless explicitly written there by `--output` |
|
|
14
|
-
|
|
15
|
-
## Flow Header Fields
|
|
16
|
-
|
|
17
|
-
```yaml
|
|
18
|
-
appId: com.example.app
|
|
19
|
-
name: Checkout Critical Path
|
|
20
|
-
tags:
|
|
21
|
-
- smoke
|
|
22
|
-
env:
|
|
23
|
-
REGION: us
|
|
24
|
-
onFlowStart:
|
|
25
|
-
- runFlow: setup/user.yaml
|
|
26
|
-
onFlowComplete:
|
|
27
|
-
- runFlow: cleanup/user.yaml
|
|
28
|
-
properties:
|
|
29
|
-
junitId: TC-CHECKOUT-001
|
|
30
|
-
junitClassname: com.example.CheckoutE2E
|
|
31
|
-
---
|
|
32
|
-
- launchApp
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Use `properties` for JUnit metadata. `junitId` and `junitClassname` are reserved report attributes; other properties are emitted as JUnit properties.
|
|
36
|
-
|
|
37
|
-
## Env Injection
|
|
38
|
-
|
|
39
|
-
Pass runtime values through CLI or flow/subflow/script env:
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
maestro test -e APP_ID=com.example.android -e USER_KIND=admin flows/login.yaml
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
```yaml
|
|
46
|
-
- runFlow:
|
|
47
|
-
file: login.yaml
|
|
48
|
-
env:
|
|
49
|
-
USER_KIND: admin
|
|
50
|
-
- runScript:
|
|
51
|
-
file: setupUser.js
|
|
52
|
-
env:
|
|
53
|
-
role: admin
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
Do not hardcode secrets in YAML. Use repo-approved secret injection, Maestro Cloud secrets, or CI environment variables.
|
|
57
|
-
|
|
58
|
-
## Output Rules
|
|
59
|
-
|
|
60
|
-
- `--format junit --output <path>` creates CI-readable JUnit XML.
|
|
61
|
-
- `--format html` or `--format html-detailed` creates HTML reports.
|
|
62
|
-
- `--test-output-dir` stores screenshots, videos, `commands-*.json`, and AI reports.
|
|
63
|
-
- `--debug-output` stores `maestro.log`; when same as `--test-output-dir`, outputs consolidate.
|
|
64
|
-
- config.yaml cannot configure report generation; it can configure `testOutputDir`.
|
|
65
|
-
|
|
66
|
-
## Closure Evidence
|
|
67
|
-
|
|
68
|
-
Every Maestro closure should include:
|
|
69
|
-
|
|
70
|
-
- command and exit status
|
|
71
|
-
- report format and report path
|
|
72
|
-
- `--test-output-dir`
|
|
73
|
-
- `--debug-output` when used or skipped reason
|
|
74
|
-
- app/platform/device
|
|
75
|
-
- environment source, with secrets redacted
|
|
76
|
-
- validation assets protected
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
# Maestro Fact Ledger
|
|
2
|
-
|
|
3
|
-
Use before making Maestro claims. Defines source authority, fact tags, local transcript requirements, and quarantine rules for unsupported checklist items.
|
|
4
|
-
|
|
5
|
-
## Authority Order
|
|
6
|
-
|
|
7
|
-
1. `official-doc`: current official Maestro documentation, preferably `.md` pages under `https://docs.maestro.dev/`.
|
|
8
|
-
2. `live-help`: successful local CLI transcript from the installed Maestro binary, including command, exit code, stdout, and stderr.
|
|
9
|
-
3. `repo-convention`: current repository flows, config, CI, scripts, report paths, and existing naming/tag patterns.
|
|
10
|
-
4. `excluded/unverified`: NotebookLM answers, a user-supplied coverage checklist, blog posts, memory, or assumptions that are not confirmed by the first three sources.
|
|
11
|
-
|
|
12
|
-
If sources conflict, prefer `official-doc` for product behavior and `live-help` for installed CLI syntax. Mention version drift when `live-help` differs from docs.
|
|
13
|
-
|
|
14
|
-
This Authority Order is the Maestro instantiation of `references/knowledge-verification-chain.md` — `live-help` supersedes generic lookup for installed CLI facts; do not layer the generic chain on top of it.
|
|
15
|
-
|
|
16
|
-
## Fact Tag Rules
|
|
17
|
-
|
|
18
|
-
Every normative statement in Maestro workflows, reports, or implementation notes must carry a source class in the agent's working notes:
|
|
19
|
-
|
|
20
|
-
- `official-doc`: cite the page URL or title.
|
|
21
|
-
- `live-help`: include command, exit code, stdout summary, stderr summary, and Maestro version when available.
|
|
22
|
-
- `repo-convention`: cite local path or command evidence.
|
|
23
|
-
- `excluded/unverified`: name the unsupported claim and do not use it as a requirement, fix direction, or verification gate.
|
|
24
|
-
|
|
25
|
-
Do not copy long transcripts into final reports. Summarize exact evidence and keep raw logs behind context-firewall boundaries.
|
|
26
|
-
|
|
27
|
-
## Required Live CLI Transcript Gate
|
|
28
|
-
|
|
29
|
-
Before using a live CLI fact, capture:
|
|
30
|
-
|
|
31
|
-
| Probe | Required evidence |
|
|
32
|
-
|---|---|
|
|
33
|
-
| `command -v maestro` | command, exit code, stdout path, stderr |
|
|
34
|
-
| `maestro --version` | command, exit code, stdout version, stderr |
|
|
35
|
-
| `maestro --help` | command, exit code, stdout subcommand/global option summary, stderr |
|
|
36
|
-
| Relevant subcommand help | command, exit code, stdout option summary, stderr |
|
|
37
|
-
|
|
38
|
-
Run relevant subcommand help for the surface in use: `maestro test --help`, `maestro cloud --help`, `maestro record --help`, `maestro mcp` or supported MCP help shape, and any repo-specific command wrapper.
|
|
39
|
-
|
|
40
|
-
If PATH cannot resolve `maestro`, mark local CLI validation blocked. If the binary exists but cannot start, record the failure and avoid claiming executable readiness. Do not install Maestro automatically.
|
|
41
|
-
|
|
42
|
-
## Coverage Checklist Handling
|
|
43
|
-
|
|
44
|
-
When the user supplies a coverage checklist, use it to ask "did we cover this surface?" Never cite it as source truth, and never assume one exists — if the user supplied none, this section imposes no requirement.
|
|
45
|
-
|
|
46
|
-
Checklist-only facts that must stay non-normative unless independently verified:
|
|
47
|
-
|
|
48
|
-
- `maestro query` as a CLI subcommand.
|
|
49
|
-
- Dashboard polling URL or API response shape not found in official docs or Maestro MCP tool metadata.
|
|
50
|
-
- Unsupported flags such as `--flavor`, singular `--shard`, generic `--debug`, or non-web `--headless` when current docs/live help do not support them.
|
|
51
|
-
- Obsolete BYO AI guidance such as `MAESTRO_CLI_AI_KEY` or `MAESTRO_CLI_AI_MODEL`.
|
|
52
|
-
- WSL-specific caveats unless official docs or repo convention explicitly establish them for the target project.
|
|
53
|
-
|
|
54
|
-
## Current Source Anchors
|
|
55
|
-
|
|
56
|
-
Use these pages first:
|
|
57
|
-
|
|
58
|
-
- CLI command matrix: https://docs.maestro.dev/maestro-cli/maestro-cli-commands-and-options.md
|
|
59
|
-
- YAML commands: https://docs.maestro.dev/reference/commands-available.md
|
|
60
|
-
- Selectors: https://docs.maestro.dev/reference/selectors.md
|
|
61
|
-
- Workspace config: https://docs.maestro.dev/reference/workspace-configuration.md
|
|
62
|
-
- Reports/artifacts: https://docs.maestro.dev/maestro-flows/workspace-management/test-reports-and-artifacts.md
|
|
63
|
-
- JavaScript: https://docs.maestro.dev/maestro-flows/javascript/run-and-debug-javascript.md
|
|
64
|
-
- Cloud build: https://docs.maestro.dev/maestro-cloud/build-your-app-for-the-cloud.md
|
|
65
|
-
- Cloud limits: https://docs.maestro.dev/maestro-cloud/limits.md
|
|
66
|
-
- MCP: https://docs.maestro.dev/get-started/maestro-mcp.md
|
|
67
|
-
|
|
68
|
-
## Failure Handling
|
|
69
|
-
|
|
70
|
-
- Missing official page: use the docs query interface or `llms.txt`; otherwise tag the fact `excluded/unverified`.
|
|
71
|
-
- Live help blocked by sandbox or permissions: retry only when allowed, then record blocked reason and proceed with official-doc facts only.
|
|
72
|
-
- Repo has no Maestro flows: ask for the target test root before creating one.
|
|
73
|
-
- Repo convention conflicts with official docs: preserve repo behavior for existing suites, but do not generalize it beyond that repository without a source tag.
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# Maestro JavaScript Reference
|
|
2
|
-
|
|
3
|
-
Use for `evalScript`, `runScript`, inline expressions, generated data, shared state, and JavaScript logging.
|
|
4
|
-
|
|
5
|
-
## Execution Methods
|
|
6
|
-
|
|
7
|
-
Maestro supports three JavaScript paths:
|
|
8
|
-
|
|
9
|
-
1. Inline `${...}` expressions inside YAML command values.
|
|
10
|
-
2. `evalScript` for short logic-only steps.
|
|
11
|
-
3. `runScript` for external `.js` files with reusable or complex logic.
|
|
12
|
-
|
|
13
|
-
```yaml
|
|
14
|
-
- inputText: ${'User_' + faker.name().firstName()}
|
|
15
|
-
- evalScript: ${output.timestamp = new Date().getTime()}
|
|
16
|
-
- runScript:
|
|
17
|
-
file: setupUser.js
|
|
18
|
-
env:
|
|
19
|
-
role: admin
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Shared State
|
|
23
|
-
|
|
24
|
-
Use `output` for data shared between scripts and later flow steps.
|
|
25
|
-
|
|
26
|
-
```yaml
|
|
27
|
-
- evalScript: ${output.email = 'qa_' + Date.now() + '@example.com'}
|
|
28
|
-
- inputText: ${output.email}
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Keep output values small and non-secret. Do not put tokens, raw PII, or credentials into logs or artifact reports.
|
|
32
|
-
|
|
33
|
-
## Script Env
|
|
34
|
-
|
|
35
|
-
```yaml
|
|
36
|
-
- runScript:
|
|
37
|
-
file: setupUser.js
|
|
38
|
-
env:
|
|
39
|
-
userRole: admin
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
```javascript
|
|
43
|
-
const role = userRole;
|
|
44
|
-
console.log('Setting up role: ' + role);
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Logging
|
|
48
|
-
|
|
49
|
-
`console.log` output is captured in `maestro.log` with a JavaScript console prefix. `maestro.log` belongs to `--debug-output`, not `--test-output-dir`, unless both flags point at the same directory.
|
|
50
|
-
|
|
51
|
-
Limitations from official docs:
|
|
52
|
-
|
|
53
|
-
- Multiple `console.log` arguments are not supported; concatenate or use template literals in external files.
|
|
54
|
-
- Template literals do not work inside `evalScript` the way they do in external `.js` files because `evalScript` already uses `${...}` syntax.
|
|
55
|
-
|
|
56
|
-
```yaml
|
|
57
|
-
- evalScript: '${console.log("Value: " + output.email)}'
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
## When To Use JS
|
|
61
|
-
|
|
62
|
-
Use JS for:
|
|
63
|
-
|
|
64
|
-
- generated test data
|
|
65
|
-
- lightweight derived values
|
|
66
|
-
- setup/teardown API calls when the repo already permits them
|
|
67
|
-
- assertions via `assertTrue`
|
|
68
|
-
- reusable selector constants when the repository has that convention
|
|
69
|
-
|
|
70
|
-
Avoid JS when a native Maestro command is clearer. Keep helpers deterministic and committed with the flow when they are part of the test contract.
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# Maestro MCP Reference
|
|
2
|
-
|
|
3
|
-
Use only when the task mentions Maestro MCP, agent/device automation through MCP tools, Maestro Viewer, or Cloud MCP tooling.
|
|
4
|
-
|
|
5
|
-
## MCP Surface
|
|
6
|
-
|
|
7
|
-
Maestro MCP ships inside the Maestro CLI and is started with:
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
maestro mcp
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
Agent configs generally use stdio with command `maestro` and args `["mcp"]`. If the agent launches from a minimal shell, use full binary path and explicit `JAVA_HOME` when needed.
|
|
14
|
-
|
|
15
|
-
## Install Examples
|
|
16
|
-
|
|
17
|
-
Codex CLI:
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
codex mcp add maestro -- maestro mcp
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
Manual config:
|
|
24
|
-
|
|
25
|
-
```toml
|
|
26
|
-
[mcp_servers.maestro]
|
|
27
|
-
command = "maestro"
|
|
28
|
-
args = ["mcp"]
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Do not install or modify MCP config unless the user asks or the active workflow explicitly owns integration setup.
|
|
32
|
-
|
|
33
|
-
## Tool Metadata
|
|
34
|
-
|
|
35
|
-
Official docs list these MCP tools:
|
|
36
|
-
|
|
37
|
-
- `list_devices`
|
|
38
|
-
- `inspect_screen`
|
|
39
|
-
- `take_screenshot`
|
|
40
|
-
- `run`
|
|
41
|
-
- `cheat_sheet`
|
|
42
|
-
- `list_cloud_devices`
|
|
43
|
-
- `run_on_cloud`
|
|
44
|
-
- `get_cloud_run_status`
|
|
45
|
-
- `open_maestro_viewer`
|
|
46
|
-
|
|
47
|
-
`run` accepts exactly one execution shape: inline YAML, specific files, or directory with include/exclude tags. `list_cloud_devices`, `run_on_cloud`, and `get_cloud_run_status` require Maestro Cloud authentication.
|
|
48
|
-
|
|
49
|
-
## Viewer
|
|
50
|
-
|
|
51
|
-
Maestro Viewer embeds a device/browser surface for inspection and interaction. Use it as an optional runtime sensor when available; do not treat screenshot success alone as full product or Figma parity.
|
|
52
|
-
|
|
53
|
-
## CLI Help Caveat
|
|
54
|
-
|
|
55
|
-
Some installed Maestro versions may print `maestro mcp` usage while returning a non-zero code for `maestro mcp --help`. Record command, exit code, stdout, and stderr exactly. Use official MCP docs plus `maestro --help` for normative MCP availability unless subcommand help succeeds.
|
|
56
|
-
|
|
57
|
-
## Boundary
|
|
58
|
-
|
|
59
|
-
MCP can speed authoring and live verification, but it does not replace repository state, official docs, saved audit reports, or deterministic closure evidence. Record skipped reason when MCP is not configured.
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
# Maestro Workflow Patterns
|
|
2
|
-
|
|
3
|
-
Use for stable suite design, setup/teardown strategy, validation assets, and workflow output contracts.
|
|
4
|
-
|
|
5
|
-
## Stable Flow Design
|
|
6
|
-
|
|
7
|
-
- Keep flows readable, short, and scoped to one user journey or smoke path.
|
|
8
|
-
- Reuse subflows for login, onboarding, permissions, setup, teardown, and navigation.
|
|
9
|
-
- Prefer deep links, API fixtures, or app state reset over long UI-only setup when the repo already supports them.
|
|
10
|
-
- Prefer stable selectors and observable states over fixed waits, coordinates, images, and copy that changes often.
|
|
11
|
-
- Keep setup and teardown explicit, idempotent, and isolated.
|
|
12
|
-
- Preserve existing flows, subflows, fixtures, snapshots, baselines, and CI report consumers unless the scoped task explicitly changes them.
|
|
13
|
-
|
|
14
|
-
## Suite Segmentation
|
|
15
|
-
|
|
16
|
-
Common suite intents:
|
|
17
|
-
|
|
18
|
-
- smoke
|
|
19
|
-
- critical path
|
|
20
|
-
- release-blocking
|
|
21
|
-
- nightly
|
|
22
|
-
- platform-specific
|
|
23
|
-
- quarantined
|
|
24
|
-
- device-farm-only
|
|
25
|
-
- Cloud-only
|
|
26
|
-
|
|
27
|
-
Use tags and config rather than duplicate flow logic when possible.
|
|
28
|
-
|
|
29
|
-
## Setup And Cleanup
|
|
30
|
-
|
|
31
|
-
Use the smallest deterministic setup:
|
|
32
|
-
|
|
33
|
-
1. reset app state (`clearState`, launch options, fixture cleanup)
|
|
34
|
-
2. set permissions and locale/timezone assumptions
|
|
35
|
-
3. create test data through repo-approved fixture/API helpers
|
|
36
|
-
4. navigate by deep link or reusable subflow
|
|
37
|
-
5. verify initial state before exercising the journey
|
|
38
|
-
6. clean up in `onFlowComplete` or explicit teardown
|
|
39
|
-
|
|
40
|
-
If cleanup cannot be guaranteed, isolate test data and record residual risk.
|
|
41
|
-
|
|
42
|
-
## Output Contracts
|
|
43
|
-
|
|
44
|
-
`maestro` closure summary must include:
|
|
45
|
-
|
|
46
|
-
- scenario source
|
|
47
|
-
- changed flows/subflows/fixtures/setup/teardown
|
|
48
|
-
- setup/teardown strategy
|
|
49
|
-
- command
|
|
50
|
-
- exit status
|
|
51
|
-
- JUnit report path
|
|
52
|
-
- artifact directory
|
|
53
|
-
- device/platform/app build
|
|
54
|
-
- skipped reason
|
|
55
|
-
- validation assets protected
|
|
56
|
-
- residual risk
|
|
57
|
-
|
|
58
|
-
`maestro-audit` report must include:
|
|
59
|
-
|
|
60
|
-
- flow inventory
|
|
61
|
-
- scenario source matrix
|
|
62
|
-
- Maestro run matrix
|
|
63
|
-
- artifact evidence
|
|
64
|
-
- `MST-*` findings or explicit no-finding evidence
|
|
65
|
-
- execution handoff
|
|
66
|
-
|
|
67
|
-
`maestro-fix` closure matrix must include:
|
|
68
|
-
|
|
69
|
-
- selected `MST-*` IDs
|
|
70
|
-
- status: `fixed`, `blocked`, `deferred`, or `skipped`
|
|
71
|
-
- changed files
|
|
72
|
-
- command/artifact evidence
|
|
73
|
-
- skipped reason or `none`
|
|
74
|
-
- JUnit/artifact paths — cite the **on-disk** JUnit report path and artifact directory the run actually produced, never a remembered or expected path
|
|
75
|
-
- validation assets protected
|
|
76
|
-
- residual risk
|
|
77
|
-
|
|
78
|
-
## Discrimination Sensor (Flow Mutation)
|
|
79
|
-
|
|
80
|
-
The Maestro instantiation of `references/discrimination-sensor.md`: mutate a **scratch copy** of the flow under the claim being verified — perturb a selector (point it at a wrong element) or an assertion (invert or change its expected value) — and confirm the run fails. A run that still passes with a perturbed selector/assertion is not discriminating for that behavior.
|
|
81
|
-
|
|
82
|
-
Deviation from the generic tier table, stated on purpose: device-backed runs are expensive, so the sensor is a **single lightweight mutation only** — the ≥5-mutation P0 tier does not apply to Maestro flows. Record killed/survived and restore the scratch per the shared reference's isolation rules.
|
|
83
|
-
|
|
84
|
-
## Routing Boundaries
|
|
85
|
-
|
|
86
|
-
- Product bugs, missing test IDs, app architecture changes, backend data setup changes, or unclear requirements route to parent workflows.
|
|
87
|
-
- `maestro-fix` may edit only Maestro flows, subflows, fixtures, setup/teardown, test data, or directly scoped Maestro CI/report wiring from a saved `MST-*` finding.
|
|
88
|
-
- Passing Maestro flows do not prove full requirements coverage. Pair run evidence with scenario-source coverage when making all-clear claims.
|
|
89
|
-
|
|
90
|
-
## Skipped Checks
|
|
91
|
-
|
|
92
|
-
Allowed skipped/blocker reasons include:
|
|
93
|
-
|
|
94
|
-
- Maestro CLI unavailable or cannot start
|
|
95
|
-
- app binary/build unavailable
|
|
96
|
-
- device/emulator/simulator unavailable
|
|
97
|
-
- credentials/signing/backend unavailable
|
|
98
|
-
- Cloud auth/plan unavailable
|
|
99
|
-
- target report is stale or invalid
|
|
100
|
-
- official docs or live help do not support requested flag/command
|
|
101
|
-
|
|
102
|
-
Always state the strongest evidence still collected, such as static YAML validation, path inspection, config scan, or report artifact inspection.
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
# Maestro Selectors Reference
|
|
2
|
-
|
|
3
|
-
Use when choosing or auditing selectors. Official selector index: https://docs.maestro.dev/reference/selectors.md.
|
|
4
|
-
|
|
5
|
-
## Source Basis
|
|
6
|
-
|
|
7
|
-
Maestro targets UI through the accessibility tree for mobile and through rendered browser UI for web. Stable selectors are a reliability contract, not a cosmetic choice.
|
|
8
|
-
|
|
9
|
-
## Core Selectors
|
|
10
|
-
|
|
11
|
-
| Selector | Use | Notes |
|
|
12
|
-
|---|---|---|
|
|
13
|
-
| `text` | Visible text or accessibility label | Regex by default; brittle under localization/copy churn. |
|
|
14
|
-
| `id` | Android resource ID or iOS accessibility identifier | Preferred for dynamic content, icons, and localized apps. |
|
|
15
|
-
| `index` | Specific occurrence among duplicates | 0-based; pair with stable selector to avoid list drift. |
|
|
16
|
-
| `point` | Relative or absolute coordinates | Last resort when no accessibility target exists. |
|
|
17
|
-
| `css` | Web-only DOM selector | Does not use the same regex behavior as text/id. |
|
|
18
|
-
|
|
19
|
-
```yaml
|
|
20
|
-
- tapOn:
|
|
21
|
-
id: login_button
|
|
22
|
-
- assertVisible:
|
|
23
|
-
text: ".*Welcome.*"
|
|
24
|
-
- tapOn:
|
|
25
|
-
id: buy_button
|
|
26
|
-
index: 2
|
|
27
|
-
- tapOn:
|
|
28
|
-
point: "50%,50%"
|
|
29
|
-
- assertVisible:
|
|
30
|
-
css: "#main-header"
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Relational Selectors
|
|
34
|
-
|
|
35
|
-
Relational selectors identify elements by screen position or accessibility hierarchy:
|
|
36
|
-
|
|
37
|
-
- `above`, `below`, `leftOf`, `rightOf`
|
|
38
|
-
- `containsChild`, `childOf`, `containsDescendants`
|
|
39
|
-
|
|
40
|
-
```yaml
|
|
41
|
-
- tapOn:
|
|
42
|
-
text: Delete
|
|
43
|
-
childOf:
|
|
44
|
-
id: basket_container
|
|
45
|
-
|
|
46
|
-
- assertVisible:
|
|
47
|
-
id: list_item
|
|
48
|
-
containsDescendants:
|
|
49
|
-
- text: Wireless Headphones
|
|
50
|
-
- text: "$99.99"
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
Position selectors use screen bounds; combine them with `id`, `text`, or state filters when possible.
|
|
54
|
-
|
|
55
|
-
## Trait, State, And Dimension Filters
|
|
56
|
-
|
|
57
|
-
Use trait, state, and dimension selectors only when they make an already stable selector more precise:
|
|
58
|
-
|
|
59
|
-
- Traits: physical characteristics such as shape or long text when official docs support them for the command.
|
|
60
|
-
- State: `enabled`, `checked`, `focused`, `selected`.
|
|
61
|
-
- Dimensions: width/height matchers with tolerance when official docs support them.
|
|
62
|
-
|
|
63
|
-
```yaml
|
|
64
|
-
- tapOn:
|
|
65
|
-
id: terms_checkbox
|
|
66
|
-
checked: false
|
|
67
|
-
|
|
68
|
-
- assertVisible:
|
|
69
|
-
id: submit_button
|
|
70
|
-
enabled: true
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## Platform Caveats
|
|
74
|
-
|
|
75
|
-
- Android Views: `id` maps to resource ID; text may include visible text or content descriptions.
|
|
76
|
-
- Android Compose: configure semantics so test tags become resource IDs when ID selectors are required.
|
|
77
|
-
- iOS UIKit/SwiftUI: `text` maps to accessibility label; `id` maps to accessibility identifier.
|
|
78
|
-
- Flutter: prefer visible text, Semantics labels, or Semantics identifiers; internal Flutter keys are not enough.
|
|
79
|
-
- Web: `css` is web-only; official docs mark web automation as beta and Chromium-based.
|
|
80
|
-
|
|
81
|
-
## Selector Policy
|
|
82
|
-
|
|
83
|
-
Prefer this order for new or fixed flows:
|
|
84
|
-
|
|
85
|
-
1. Existing repo convention and stable test IDs/accessibility identifiers.
|
|
86
|
-
2. Accessible visible labels that are low churn and localized deliberately.
|
|
87
|
-
3. Relational selectors anchored to stable IDs/text.
|
|
88
|
-
4. State/dimension filters to reduce ambiguity.
|
|
89
|
-
5. Coordinates, images, screenshots, or index-only selectors only when no stronger target exists.
|
|
90
|
-
|
|
91
|
-
If a needed stable selector is missing from production app code, stop and route app changes through `feature`, `debug`, or a parent implementation workflow. Do not modify production code inside `maestro-fix`.
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# Maestro Workspace And Execution Reference
|
|
2
|
-
|
|
3
|
-
Use when discovering Maestro roots, config files, tags, execution order, suite isolation, and CI invocation.
|
|
4
|
-
|
|
5
|
-
## Discovery
|
|
6
|
-
|
|
7
|
-
Search current source for:
|
|
8
|
-
|
|
9
|
-
- `.maestro/`, `maestro/`, `e2e/`, `flows/`
|
|
10
|
-
- `*.yaml`, `*.yml`
|
|
11
|
-
- `config.yaml`
|
|
12
|
-
- CI or scripts that invoke `maestro`
|
|
13
|
-
- Existing report/artifact paths
|
|
14
|
-
|
|
15
|
-
Prefer the existing repository root, naming, tags, setup, teardown, fixtures, and artifact directories. If no Maestro workspace exists, ask for the target test root before creating one. If multiple roots exist, ask which root owns the app, platform, or suite.
|
|
16
|
-
|
|
17
|
-
## `config.yaml`
|
|
18
|
-
|
|
19
|
-
Official workspace configuration is structured around global workspace settings, execution/filtering, platform settings, and Cloud-only settings.
|
|
20
|
-
|
|
21
|
-
Key fields:
|
|
22
|
-
|
|
23
|
-
- `flows`: glob patterns for suite discovery; `*` covers root-level YAML, `**` covers recursive patterns.
|
|
24
|
-
- `testOutputDir`: default artifact directory override for screenshots, logs, and metadata.
|
|
25
|
-
- `includeTags` and `excludeTags`: global tag filters.
|
|
26
|
-
- `executionOrder.continueOnFailure`: whether ordered execution stops after a failure.
|
|
27
|
-
- `executionOrder.flowsOrder`: ordered flow names or filenames.
|
|
28
|
-
- `platform.ios.snapshotKeyHonorModalViews`
|
|
29
|
-
- `platform.ios.disableAnimations` and `platform.android.disableAnimations`: Cloud-only animation settings.
|
|
30
|
-
- `baselineBranch` and `notifications`: Cloud-only configuration.
|
|
31
|
-
|
|
32
|
-
Report generation is not configured in `config.yaml`; use CLI `--format` and `--output`.
|
|
33
|
-
|
|
34
|
-
## Tags
|
|
35
|
-
|
|
36
|
-
Tags live in individual Flow headers and can also be configured globally in `config.yaml`.
|
|
37
|
-
|
|
38
|
-
```yaml
|
|
39
|
-
appId: com.example.app
|
|
40
|
-
tags:
|
|
41
|
-
- smoke
|
|
42
|
-
- checkout
|
|
43
|
-
---
|
|
44
|
-
- launchApp
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
CLI `--include-tags` and `--exclude-tags` override global config filters. Multiple tags inside one include/exclude flag use OR logic. Combining include and exclude applies inclusion first, then exclusion.
|
|
48
|
-
|
|
49
|
-
## Execution Order And Isolation
|
|
50
|
-
|
|
51
|
-
Default execution order is non-deterministic so flows stay isolated. Use `executionOrder` only for goal-driven flows that truly need sequencing.
|
|
52
|
-
|
|
53
|
-
Even ordered flows should be able to run on a reset device. Prefer `runFlow` hooks/subflows for setup rather than relying on previous flow side effects.
|
|
54
|
-
|
|
55
|
-
```yaml
|
|
56
|
-
executionOrder:
|
|
57
|
-
continueOnFailure: false
|
|
58
|
-
flowsOrder:
|
|
59
|
-
- signup_flow
|
|
60
|
-
- verify_email_flow
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
## Local And CI Execution
|
|
64
|
-
|
|
65
|
-
Use repository wrappers when present. Otherwise prefer:
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
maestro test --format junit --output build/maestro/report.xml --test-output-dir build/maestro/artifacts .maestro
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
Add `--debug-output build/maestro/debug` when `maestro.log` or JavaScript logs matter. Add `--no-ansi` only when supported by current live help or repo convention.
|
|
72
|
-
|
|
73
|
-
For local sharding, capture connected devices first. `--shards`, `--shard-all`, and `--shard-split` are local CLI options; do not claim exact device-count failure behavior without official docs, live run evidence, or repo convention.
|
|
74
|
-
|
|
75
|
-
## Workspace Risks To Audit
|
|
76
|
-
|
|
77
|
-
- Config discovery misses nested flows because `flows` lacks recursive patterns.
|
|
78
|
-
- Tags configured in both Flow headers and CLI/config produce unexpected selection.
|
|
79
|
-
- Ordered flows depend on prior side effects instead of explicit setup.
|
|
80
|
-
- CI reports are stored in current directory because `--output` is omitted.
|
|
81
|
-
- `testOutputDir`, `--test-output-dir`, and `--debug-output` are treated as the same location when they are not.
|