Changelog:
Fixes:
- Non-null assertion (
!!) in rendered paths. Fixture, output and chained-call expressions containing Kotlin's!!operator —fixtures(MyFixture)!!.name,outputs[MyOutput].foo!!.bar— were not recognised, so the raw source words leaked into the sentence instead of the value. All path patterns now accept!!after the accessor and after any chain segment, and path resolution strips it (#168). - Kotlin stdlib extension functions in rendered paths. A path segment calling a stdlib extension —
fixtures[X]!!.uppercase(),.first()— silently renderednull, because only Java members of the receiver were searched. Resolution now falls back to the stdlib extension facades (StringsKt,CollectionsKt,MapsKt,ArraysKt), including@InlineOnlyfunctions. User-defined extensions remain unresolvable (#169). - By-key outputs with non-word keys.
outputs("my-key")and other keys containing hyphens, dots or spaces were not recognised; the quoted key may now be any string (#170). - Explicit type arguments in rendered expressions.
outputs<String>("myKey")— which the compiler forces whenever the type can't be inferred — and generic chain calls like.first<String>()were not recognised. Type arguments are now accepted on thefixtures/outputsaccessors and on chain segments, and erased during path resolution (#171). - Factory fixture navigation paths resolve to the navigated value.
fixtures[productFor(p)].namerendered the whole fixture value rather than the.nameproperty, making sentences silently misleading. The trailing path is now carried through parsing and applied when rendering (#172). - Fixture factory calls inside a
fixtures[...]subscript render as a single value.fixtures[productFor(provideType)](the documented@Fixturefactory-call syntax) previously leaked the literal word "fixtures" before the fixture value, because only the inner factory call was recognised. The wholefixtures[factory(args)]span, including any trailing navigation, is now recognised as one fixture-factory expression, so the accessor is absorbed. - Parameterised test header hover no longer truncates. The invocation header showed the full parameterised display name through a native
titlehover, which browsers cap at roughly 1024 characters, clipping long names mid-string. It now uses the built-in tooltip, which wraps and scrolls with no cap; the collapsed "N params" chip gained a hover listing the parameters, and long parameter names in the expanded table now show a hover too (#165). - Protected phrases no longer match inside longer words. A protected phrase matched case-insensitively at any position, so a phrase like
Closebit intoClosedDateand split it mid-word, rendering the display name asClose d Dateinstead ofClosed Date; rendered sentences mangled the same way. Phrase matches now only apply when they align to camel-word or punctuation boundaries, in both test display names and sentences (#166).