product: maestro audience: test-developer authority: normative
Local Development Commands
Validate YAML
# All files — level 1 always; level 2 requires stack
py validate.py
# Specific file
py validate.py tests/my-test.yaml
Validate via API
$yaml = Get-Content "tests/my-test.yaml" -Raw
$body = @{ yamlContent = $yaml } | ConvertTo-Json
Invoke-RestMethod -Uri "http://localhost:7000/api/yaml/validate" `
-Method POST -Body $body -ContentType "application/json"
Validate via UI
Open http://localhost:7001/yaml-validator, paste YAML, click Validate.
Run a test via API
$body = @{
yamlFilePath = "my-package/tests/my-test.yaml"
serialNumber = "DEV-001"
} | ConvertTo-Json
Invoke-RestMethod -Uri "http://localhost:7000/api/testexecution/run" `
-Method POST -Body $body -ContentType "application/json"
Run a test via UI
Open http://localhost:7001/test-monitor, select the YAML file, enter the serial
number, click Start Test.
View results
Open http://localhost:7001/test-results and search by serial number.
Start the full stack
.\scripts\start-fullstack.ps1
# API: http://localhost:7000 (Swagger: http://localhost:7000/swagger)
# UI: http://localhost:7001
Build and publish .NET runner
The Maestro runner DOES NOT build your project. You MUST publish the output before the runner can load your DLLs.
# From your runner project directory
dotnet publish <YourProject>.csproj -c Release -o assemblies/ --no-self-contained
After publishing, verify assemblies/<YourProject>.dll exists, then commit
assemblies/ so the runner can load it from the repository.