Karate v0.9.6 Release Notes
Release Date: 2020-08-24 // about 3 years ago-
What's New
- 🏁 Windows Desktop app automation - Karate Robot - also see the detailed install guide
- 👀 Revamped HTML report (see video)
- 👀 Intercept browser HTTP requests in Chrome (see video)
- 🔧
configure callSingleCache
- so that you don't need to wait for a "sign-in flow", every time you re-run a test in dev mode driver.inputFile()
- Chrome-native file-upload- 💻 WebDriver support for the new (Chromium based) Microsoft Edge browser
- 👌 Improved tree walking in UI tests, e.g.
locateAll()
,parent
,children
etc. - 🤡 Multiple mock files can be combined into one at run-time (thanks @michaelpro1)
- 👀 CLI testing support ! See this thread for details
- 👀
match
can finally be used in JS with all the power you normally have in feature files, see this thread and some extras to introspect object / data types within JS blocks - 👀
contains deep
for recursive nested JSON matching (see example)
💥 Breaking Changes
karate.stop()
now takes a mandatory port number argument, so you can call the same (static)cURL
command to resume, e.g.curl localhost:8080
- 🔨
exists()
API refactored for UI tests, see this thread for details - 👀 a
match
with a primitive number on the right-hand-side could incorrectly pass, this should be very rare - see this thread for details - again extremely unlikely and rare, but a backslash (
\
) character was getting swallowed in doc-string (triple-quote) sections, so in case you were escaping them, you don't need to any more (commit details)
🚀 For a list of all issues closed in this release, go here.
🚀 To keep track of news and releases, follow us on Twitter @KarateDSL or on LinkedIn by joining this group.
Contributors
Thanks to the following rock stars for contributions and pull-requests !
@10twenty4
@a-st
@abhi-rao
@babusekaran
@cueo
@michaelpro1
@maxandersen
@kchopperla
@KostasKgr
@ewexlerr
@joelpramos
@kirksl
@luizvazVote for Karate !
Karate is in the running for "Best Open Source Project" in the HackerNoon "Noonies".
👉 Show your appreciation for Karate by voting here: Best Open Source Project
And here for the lead-developer of Karate (Peter Thomas): Contributor of the Year - OPEN SOURCE.
Thanks !
Previous changes from v0.9.5
-
The Big One
🚀 This took a while ! The last release was in July 2019 - but it does indicate that 0.9.4 was super-stable and that Karate for API testing is quite feature-complete. So what's new ? Web Browser Automation !
🍱 A lot of work went into this area, and the feedback from early adopters who used 0.9.5.RCX has been extremely encouraging. And now 🥁 we consider it ready for use.
👍 To know more about how Karate is different from (and better in our opinion than) the competition - please read this blog post: The world needs an alternative to Selenium - so we built one.
🚀 One additional point that is going to give us an edge over other browser-automation solutions is this - because Karate embeds a web-server (via the test-doubles capability) you can submit a self-contained snippet of HTML as a full-fledged project - to demo or replicate issues. The beauty of this is that it would run completely locally, yet perfectly replicate any exotic edge case. We put a lot of thought into Karate to make it easy for developers to build, extend and maintain, and if you find any gaps in the web-browser automation - we should be able to release minor / dot-releases pretty quickly.
💥 Breaking Changes
The Debugger
💻 What we used to call the "Karate UI" (implemented in JavaFX) has been retired.
Now we have what we feel is a game-changer - a debugger which is part of the Visual Studio Code extension for Karate created by Kirk Slota. This debugger is special - it can not only step-through code, but step backwards and hot-reload code. Note that this works for any Karate test, so API and UI automation is covered. See this video of the Karate-Runner in action. Thanks also to @peterquiel who contributed syntax-coloring support to the Karate-Runner.
🚀 Note that you can point the Karate-Runner to an existing Maven (or even Gradle) project, and it will work fine. The new ZIP Release is ideal for especially non-Java teams - who don't want to use Maven or Gradle.
We know of many .NET, JS and Python shops using the Karate standalone JAR - and the ZIP Release makes a very compelling case for Karate and UI automation. There is no need to compile code, and reports are built-in.
🔧
configure abortedStepsShouldPass
You will need to be aware of this only if you use the
karate.abort()
keyword and an old version of the cucumber-reporting library - and if you want steps after an "abort" to pass - #755Notable Improvements
- ✅ Karate used to create a lot of log files on the file-system when running tests in parallel - and in rare cases, would exceed OS limits, not any more - #860
- 0️⃣
karate.get()
now takes a default value, which is very useful for conditional logic and "called" features where a variable has not been "pre-defined". Note thatkarate.get()
is very flexible, it can evaluate even Json-Path and XPath - not just variable references - 🐎 Gatling tests would freeze in some cases, performance issues have been fixed - #845
- An
ExecutionHook
interface has been introduced for more control over the life-cycle and for teams that need to integrate with 3-rd party reporting solutions and the like, and you can inject your custom implementation via the parallelRunner
- #855 - 🌲 And you can now "mask" parts of the HTTP log to avoid sensitive data such as
Authorization
headers and passwords being persisted and leaked - #699 - ✅ Distributed Testing - that should solve for "scaling out" UI or Gatling tests
- 👀 Introducing Karate Robot (experimental) for desktop app automation and native mouse / keyboard events, you can navigate using images, see video - we know that many teams need this, there is a severe lack of solutions in this space - so please get in touch and contribute if you can !
- 🖨
karate.log()
now "pretty prints" JSON and XML, so you don't have to resort to things likeJSON.parse()
andJSON.stringify()
in your JavaScript snippets. Note that you should never need to use things likeJSON.parse()
- and they cause problems in the long term. - There is no need to use the
@KarateOptions
annotation for the parallel runner any more. Use the "builder" methods on theRunner
class, which handles multiple features (or just directory / paths), tags, and the number of threads. Going forward, as a best-practice, you are recommended to not use the annotations any more - and if you use JUnit 5, you don't need it at all, see the example below - 👀 JUnit 5 API - a little less verbose syntax via
Karate.run()
, see below:
🚀 For a list of all fixes in this release, see here.
Contributors
Thanks to @paaco, @Celeo, @peterquiel, @ghostwriternr, @sivachithambaram, @BadgerOps, @man007yadav, @Nishant-sehgal, @TamannaBhasin27, @benjaminqc, @babusekaran, @celcius112, @khanguyen88 and @kirksl for pull-requests and other contributions. You rock !