Karate (software)
Karate is an open-source general-purpose test-automation framework that can script calls to HTTP end-points and assert that the JSON or XML responses are as expected. Karate also has support for service-virtualization where it can bring up "mock" (or stub) servers which can substitute for web-services that need to participate in an integration-test. Karate's capabilities include being able to run tests in parallel, HTML reports and compatibility with Continuous Integration tools.
Original author(s) | Peter Thomas |
---|---|
Initial release | February 12, 2017 |
Repository | https://github.com/intuit/karate |
Written in | Java |
License | MIT |
The additional capability to re-use functional tests as performance-tests via integration with the Gatling tool was released in July 2018[1] The project also added the capability to perform web-UI automation in 2019[2] which was declared out of RC (release-candidate) status in 2020.[3]
Karate is implemented in Java but test-scripts are written in Gherkin since Karate was originally an extension of the Cucumber framework. It was built within Intuit and released under the MIT license.
Basic usage
This example shows what a simple Karate test script looks like and how it is based on the Gherkin syntax.
Feature: karate 'hello world' example
Scenario: create and retrieve a cat
Given url 'http://myhost.com/v1/cats'
And request { name: 'Billie' }
When method post
Then status 201
And match response == { id: '#notnull', name: 'Billie' }
Given path response.id
When method get
Then status 200
This actually makes two calls, first an HTTP POST
to 'http://myhost.com/v1/cats' and then a GET
to the same URL but with the value of response.id
appended as a REST-ful path parameter. The match
keyword is used for asserting that a given payload is as expected. The use of the #notnull
"fuzzy match" token takes care of "ignoring" the actual value since it is dynamic, as it is a server-side auto-generated identifier.
Features
- Although based on Cucumber, Karate does not require the user to write extra "step-definitions", which saves a lot of effort. Tests are fully described in Gherkin.[5]
- Built-in support for switching the environment[6]
- Comprehensive support for HTTP, including SOAP/XML, HTTPS, HTTP proxies, URL-encoded form data, multi-part file uploads[6]
- HTTP API mocks
- Integration with popular Java unit-testing frameworks such as JUnit[7]
- Compatibility with continuous integration tools[7]
- Web-browser automation of Chrome via the Chrome DevTools Protocol[2]
- Cross-browser automation via the W3C WebDriver specification
Reception
Karate was featured as one of the top 5 open-source API testing tools within six months of its release.[8] It was also mentioned as one of the 10 API testing tools to try in 2017.[6]
Karate was first listed in the ThoughtWorks Technology Radar in 2019[9] with a rating of "Assess". One year later it moved into the "Trial" category in May 2020.[10]
References
- "Karate 0.8.0 release notes - which introduced performance-testing".
- Thomas, Peter. "The world needs an alternative to Selenium - so we built one". HackerNoon.
- "Karate 0.9.5 release notes - which introduced web-browser automation".
- Thomas, Peter (2017-02-28). "Karate: Web-Services Testing Made Simple". BLUEprint by Intuit. Retrieved 2018-02-23.
- "REST API Testing with Karate | Baeldung". Baeldung. 2017-11-16. Retrieved 2018-02-23.
- Assertible. "10 API testing tools to try in 2017". Assertible. Retrieved 2018-02-23.
- "Testing a Java Spring Boot REST API with Karate". semaphoreci.com. Retrieved 2018-02-23.
- "5 top open-source API testing tools: How to choose | TechBeacon". TechBeacon. Retrieved 2018-02-23.
- "ThoughtWorks Technology Radar Vol. 20 (April 2019)" (PDF). Retrieved 2019-09-19.
- "ThoughtWorks Technology Radar (Languages & Frameworks) Vol. 22 (May 2020)".