Download Latest Version v2.1.1 source code.zip (2.6 MB)
Email in envelope

Get an email when there's a new version of Karate

Home / v2.0.10
Name Modified Size InfoDownloads / Week
Parent folder
karate-2.0.10.jar 2026-06-04 12.0 MB
cve-sbom-report.html 2026-06-04 42.1 kB
README.md 2026-06-04 3.8 kB
v2.0.10 source code.tar.gz 2026-06-04 1.7 MB
v2.0.10 source code.zip 2026-06-04 2.4 MB
Totals: 5 Items   16.1 MB 0

Important Fixes

  • screenshotOnFailure: true works again; added onStepFailure hook + ErrorRunEvent [#2845]
  • configure headers no longer leaks Background-set headers across requests [#2846]
  • Type-hint ! with an angle-bracket type in a doc-string no longer throws an NPE [#2847]
  • call read('f.feature') { key: #(var) } no longer throws ReferenceError: # is not defined [#2849]
  • startTime / endTime in the report JSON are correct again [#2850]
  • Java.type() resolves classes on the JUnit Platform classpath (--cp) again [#2855]
  • karate.tagValues aggregates all tags [#2859]
  • Gatling karateFeature("path", "@tag") applies the tag filter instead of treating it as a path [#2870]
  • Scenario Outline Example vars no longer mishandled when callonce is used in Background [#2874]
  • ApacheHttpClient proxy CONNECT TLS handshake uses the target host for SNI [#2877]
  • StackOverflowError on circular-reference variables fixed [#2880]
  • Regression on the left side of set for JSON keys with special characters fixed [#2886]
  • geckodriver starts again in standalone mode [#2884]
  • StackOverflowError when an afterScenario hook calls a feature with a circular reference fixed [#2887]
  • match $.field == '#notpresent' no longer throws when the field is missing [#2892]
  • #() / ##() schema references inside a doc-string match parse correctly [#2893]
  • [*] wildcard works inside karate.match() with $ JsonPath [#2894]
  • set keyword works with hyphenated key paths [#2896]
  • Embedded expressions in feature call args are evaluated as in v1 [#2897]
  • configure logging mask is applied to the scenario that triggers a callonce [#2898]
  • def var = $.missing yields #notpresent instead of throwing [#2899]
  • JUnit no longer runs the wrong tests when calling other feature files [#2900]
  • outputJunitXml exposed on io.karatelabs.junit6.Karate [#2901]
  • Type-hint suffix in an Examples table works in a match statement [#2902]

New Features & Enhancements

  • New karate-image extension — pixel image-comparison as its own ext module with a primitives API and an interactive diff lightbox in HTML reports
  • HTML report redesigned on Tailwind — timeline view, donut summary, filter chips, JSON syntax-highlighting of request/response bodies [#2895]
  • karate-js: ES6 classes (inheritance, super, instance/static fields), runtime strict mode, destructuring, logical-assignment (||=, &&=, ??=), RegExp named capture groups
  • Ext SPI — pluggable extensions contributing CLI subcommands, channel factories, ext globals, and report assets
  • Multi-part karate.embed object form + defer-until-visible embed rendering
  • Driver: out-of-process iframe (OOPIF) support for CDP; W3C driver mouse via the Actions API
  • Gatling: protocol-scoped callSingle / callOnce / setupOnce caches + protocol.runner exposure
  • JUnit 6: outputJunitXml / outputCucumberJson on the builder
  • Resource.bytes(byte[]) in-memory binary factory; CSV from byte[] support [#2873]
  • Runner.Builder.getResolvedFeatures() exposed [#2876]

View the complete list of all issues fixed in this release.

Full Changelog: https://github.com/karatelabs/karate/compare/v2.0.9...v2.0.10

Important: refer 2.0.0 release notes for those upgrading from 1.X

Artifacts

Source: README.md, updated 2026-06-04