product: maestro audience: test-developer authority: normative
Checklist: New Package
Recommended development sequence
1. Scaffold via TAT UI
2. Open in VS Code; verify package.json
3. Write .NET test code
4. Publish runner project → `dotnet publish <YourProject>.csproj -c Release -o assemblies/ --no-self-contained`
5. Write YAML test definition(s) ← VS Code gives live schema feedback here
6. Validate: py validate.py ← level 1 immediately; level 2 when stack is up
7. Run test (mock or real hardware)
8. Verify results in Test Results page
9. Handle Python dependencies (if applicable)
10. Bump version in package.json
11. Write README.md
12. Git commit and push
Checklist
- Choose a package name —
<ProductId>_<TestName>_v<NN>:ESH10000121_FunctionalTest_v00 - Scaffold via TAT UI —
/packages→ New Package - Open in VS Code —
File → Open Folder; installredhat.vscode-yamlextension - Verify
package.json— name, version, author, description; setrequirements.minDotNetVersionfor .NET packages
.NET test code (if applicable)
- Write test methods — one method per logical operation (see
sdk/design-principle.md) - Add
[assembly: DoNotParallelize]inMSTestSettings.cs(seesdk/mstest-debugging.md) - Run
dotnet publish <YourProject>.csproj -c Release -o assemblies/ --no-self-contained— verifyassemblies/<YourProject>.dllexists and commit theassemblies/folder
Accordion instrument (if applicable)
- Add
AccordionQ2.WebApiClientNuGet reference to runner.csproj(not MSTest project) - Implement
Connect/Disconnectand wire as YAMLsetup/teardownsteps - Store agent host address in Station Config (
AGENT_HOST); reference via{{cfg.AGENT_HOST}} - See
getting-started/accordion-q2-client.mdand../Accordion/05-api-dotnet/
YAML test definitions
-
test.nameandtest.versionset - All variables declared in
variables:block - Every measurement has a
nameandunit - Limits are in correct order (
low_limit<high_limit) - Critical setup steps have
post_execution_action: terminate-on-fail - Cleanup steps have
run_on_abort: true -
repeat:blocks havemax_iterationsset - All hardware runner steps have
timeout_msset - Steps that use a shared instrument declare
requires:(e.g.[dmm, mux]) — safe to add even on single-execution stations - The
Connectsetup step hasretry:configured
Validation and testing
- Run
py validate.py— all files must pass - Run the test with mock steps or real hardware
- Verify results appear correctly in Test Results page
Python dependencies (if applicable)
-
requirements.pipPackagesdeclared inpackage.json - Wheels vendored in
wheels/for production (seesdk/python-dependencies.md) - Tested in runner container with
python -c "import mypackage"
Final steps
- Bump
versioninpackage.jsonbefore every commit that will be deployed - Write README.md
- Git commit and push