Skip to content

feat(core): rich scenario assertions — 8 assertion types + evaluateScenario()#100

Merged
sepehr-safari merged 1 commit into
mainfrom
feat/core-assertions
Jul 9, 2026
Merged

feat(core): rich scenario assertions — 8 assertion types + evaluateScenario()#100
sepehr-safari merged 1 commit into
mainfrom
feat/core-assertions

Conversation

@sepehr-safari

Copy link
Copy Markdown
Member

Summary

Implements 8 declarative assertion types for scenario evaluation:

  1. event_order — verify events appear in a specific order
  2. event_count — verify count of events (optionally filtered by action)
  3. payload_field — verify a payload field value (equals/contains)
  4. timing — verify timing gaps between two actions (minGapMs/maxGapMs)
  5. session_state — verify session status (active/completed/aborted)
  6. failure_severity — verify a specific failure has expected severity
  7. no_failures — verify no failures detected
  8. failure_count — verify count of detected failures (optionally by code)

New API

export function runAssertions(ctx: AssertionContext, assertions: ScenarioAssertion[]): AssertionResult[];
export function evaluateScenario(scenario: Scenario): ScenarioEvalResult;

Backward Compatibility

  • Scenario type extended with optional assertions field
  • Existing scenarios with only expectedFailures work unchanged
  • expectedFailures comparison still evaluated in evaluateScenario()

Files Changed

  • packages/toolkit/src/core/types.tsScenarioAssertion, AssertionResult, ScenarioEvalResult types + optional assertions on Scenario
  • packages/toolkit/src/core/assertions.ts — new module (evaluators + runAssertions + evaluateScenario)
  • packages/toolkit/src/core/assertions.test.ts — 27 unit tests
  • packages/toolkit/src/core/index.ts — export assertions API
  • packages/toolkit/src/index.ts — re-export from root barrel
  • .changeset/v03-assertions.md — minor bump changeset
  • CURRENT_STATE.md — updated with v0.3.0 progress

Closes #86

Checklist

  • 8 assertion types implemented
  • runAssertions() evaluates each assertion against analysis results
  • evaluateScenario() combines parsing + detection + assertions
  • Backward compatible — existing scenarios work unchanged
  • Unit tests for each assertion type (pass + fail cases)
  • Unit tests for evaluateScenario() with mixed assertions
  • Exported from @ocpp-debugkit/toolkit/core and root barrel
  • Changeset added
  • CURRENT_STATE.md updated
  • Lint, typecheck, test, format all pass (349 tests)

@sepehr-safari sepehr-safari merged commit 6775642 into main Jul 9, 2026
2 checks passed
@sepehr-safari sepehr-safari deleted the feat/core-assertions branch July 9, 2026 00:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(core): rich scenario assertions

1 participant