Maestro Lint
Maestro Lint helps you write reliable Maestro flows faster by validating your YAML in real time.
It highlights problems directly in the editor, suggests quick fixes for common mistakes, and checks references that usually break test runs.
What's New
- Improved interpolation validation with clear diagnostics for invalid patterns such as
$var, {output.value}, and output.value when ${...} is expected.
- Better selector and command validation for real-world Maestro usage (including relational selector blocks and command-specific schemas).
- Additional best-practice warnings to reduce flaky flows (for example:
point usage, index without anchor, broad regex selectors).
- Improved command map validation for
openLink, setPermissions, and launchApp.permissions.
Why Maestro Lint?
When a flow fails, the issue is often simple: a typo, an invalid property, bad casing, wrong indentation, or a missing file.
Maestro Lint catches these problems before execution so you can focus on test intent instead of debugging YAML details.
Key Features
- Real-time diagnostics in the editor and Problems panel
- Quick fixes for typo and casing issues
- Context-aware command suggestions and property/value completions
- Validation for command structure, nested blocks, and indentation
- Extended selector validation for commands like tapOn, longPressOn, doubleTapOn, assertVisible, assertNotVisible, and copyTextFrom
- Validation for openLink object syntax (link, browser, autoVerify)
- Validation for permissions maps in setPermissions and launchApp (including all and Android dynamic permission keys)
- Best-practice warnings for fragile selectors (point usage, index without anchor, overly broad regex)
- One-of validation for extendedWaitUntil (visible xor notVisible)
- Interpolation syntax validation for
${...} patterns and malformed $ references
- Validation for
runFlow and runScript file paths
- Validation for
when, env, output, and maestro references
- Workspace-wide validation command
What It Validates
- Unknown commands with smart suggestions
- Invalid properties for each command
- Invalid values based on command schema
- Header issues (
appId, invalid header properties, invalid header values)
when block structure and allowed values
- Nested object constraints (for example,
setPermissions)
- Nested permission map constraints for
setPermissions and launchApp
- Best-practice diagnostics for selector reliability and maintainability
- Relative path and extension rules (for example,
addMedia)
- Missing referenced files in flows and scripts
Commands
Maestro Lint: Validate Current File
Maestro Lint: Validate Workspace
Maestro Lint: Restart Linter
Maestro Lint: Show Output
Extension Settings
maestroLint.enable: Enable or disable linting
maestroLint.configPath: Path to your linter config file
maestroLint.validateOnSave: Validate on file save
maestroLint.validateOnType: Validate while typing
maestroLint.debounceDelay: Debounce delay for on-type validation
maestroLint.filePattern: Glob pattern of files to validate
Configuration File
Maestro Lint reads your project configuration from linter.config.json.
This allows you to tune severities and behavior to match your team standards.
Author
License
MIT
| |