Skip to content

v0.3.0

Choose a tag to compare

@DamianReeves DamianReeves released this 25 Feb 02:39
· 79 commits to main since this release

What's New

Attachments & Ctx Wrapper

  • Step handlers now receive Ctx (wrapping args, scenario, step, value) instead of raw Array[StepArg]
  • ctx.attach(), ctx.attach_bytes(), ctx.attach_url() for embedding attachments
  • Attachment and ExternalAttachment envelopes emitted in Cucumber Messages stream
  • DocString and DataTable support as step arguments

Hook Attachments

  • Hooks expanded to 6 variants (BeforeAll, AfterAll, BeforeScenario, AfterScenario, BeforeStep, AfterStep)
  • Hook contexts (RunHookCtx, CaseHookCtx, StepHookCtx) implement Attachable

Full Cucumber Expression Parameter Types

  • StepArg struct with StepValue enum for type-safe parameter access
  • Transformer support for custom parameter types
  • Setup.add_param_type methods for registration

Test Case Retry

  • @retry(N) tag on scenarios for automatic retry on failure
  • RunOptions.retries(N) for global retry configuration
  • Retry count tracked in RunSummary.retried
  • Only Failed scenarios are retried (not Skipped/Undefined)

Dry-Run Mode & Skip Tags

  • RunOptions.dry_run(true) — validates step definitions without executing handlers or hooks
  • @skip / @ignore tags with optional reasons: @skip("not-ready")
  • Configurable skip tags via RunOptions.skip_tags([...])
  • Skipped(String?) carries optional reason through results and messages

Config System

  • skip_tags field in moonspec.json5 config, wired through codegen into generated test code
  • Auto-discovers both moonspec.json and moonspec.json5 (both parsed as JSON5, merged with .json5 precedence)

Other

  • CLI version derived from embedded moon.mod.json
  • Cucumber Messages streaming pipeline with envelope compliance
  • Setup facade and ParameterType envelopes

Stats

  • 286 tests
  • 12 PRs merged since v0.2.0