Skip to content

0.9.4

Choose a tag to compare

@github-actions github-actions released this 11 Sep 22:58
· 89 commits to master since this release

Changelog:

Added:

  • suite_summary MCP tool. One call for the run as a whole: state counts, run window and duration, duration buckets, slowest methods, failure ids, counts by tag and package, participants. Reads only indices.json (#221).

  • #/issue/<key> and #/epic/<id> report links. Open the first test carrying the key with the matching method expanded and the filter applied, across every source. Filter links such as #/overview?q=issue:KEY still land on the Overview (#222).

  • SetupStep.setup(scope). One step can now act, wait for state, read a value out and act again: override setup(scope: SetupScope) and use given, action, collect, verify and verifyEventually on the scope, each executing immediately. The existing givens()/actions()/verify() triple is unchanged and remains the default body of setup, so current steps behave exactly as before. SetupScope.verifyEventually polls on the calling thread until the check stops throwing and needs no assertion-flavour dependency. Documented on the new Setup Steps page (#210).

  • SetupSteps(list). A List<SetupStep> constructor for steps assembled conditionally, instead of SetupSteps(*list.toTypedArray()) (#213).

  • One-line setup steps. setupActions(a, b) and setupStep { } build a SetupStep without an anonymous object; kotestSetupStep { }, hamkrestSetupStep { } and hamcrestSetupStep { } put the flavour's assertion helpers in scope (#212).

  • ?theme=dark|light on report URLs. Sets the initial theme for that load so a page embedding the report can match its own colour mode; not written back to the stored preference.

Changed:

  • Compact MCP listings. list_tests returns one row per class with method counts and elapsed time; children: true restores the method rows. get_test with a <class>:<method> id returns that method only. captured_interactions caps each captured value at max_value_chars (default 4000) and marks the cut (#221).
  • Report scrolling stays inside the report. Deep links and the sidebar reveal now scroll the report's own content pane rather than calling scrollIntoView, which in Firefox also scrolled any page embedding the report in an iframe. Standalone behaviour is unchanged.
  • Polling block rendering. thenEventually { then(a); and(b) } no longer reads "Then eventually then a and b". The wrapper line is unchanged, the first inner step drops its then, and each later step renders And as a keyword.