The JavaScript engine
Karate’s JavaScript engine is what really distinguishes this framework from many others. It is built on GraalVM (https://www.graalvm.org/), which allows so-called polyglot programming. This means that it can mix and match different programming languages together in a single application and even pass values back and forth. This makes it possible to use native JavaScript code both directly embedded into feature files, within Karate’s main configuration, or even stored in external files.
The direct integration of JavaScript in Karate is especially helpful when working with JSON and similar formats. This format is a first-class citizen in JavaScript whereas in Java you would need additional libraries to effectively work with it (for example, Gson
or Jackson
). This enables test authors to directly write JSON in steps without the need to escape or encode certain characters. It also allows for more straightforward assertions and matching by the direct integration of JSONPath as we will see further on.
In Chapter 7, Extending Karate Functionality, we will explore how JavaScript can be used to customize and simplify more complex validations, matching, or data manipulations.
The JavaScript engine is only one of the parts that power Karate’s internals. Let’s now look at the other one: Java itself.