1

I tried my best but could not find information on calling an API inside the Javascript function when dealing with automation in Karate. Now, I might get suggestions to call the API outside the function and then do operations inside the function. However, my use case is such that I have to call the API inside the function only. Is there a way to do this? One approach is to create a Java file and then write the code in java. However, I specifically want to know if there is any way to call an API inside a JS function in a FEATURE FILE itself.

aiy
  • 11
  • 1

1 Answers1

0

First, these kinds of "clever" tests are not recommended, please read this to understand why: https://stackoverflow.com/a/54126724/143475

If you still want to do this, read on.

First - most of the time, this kind of need can be achieved by doing a call to a second feature file:

* if (condition) karate.call('first.feature')

Finally, this is an experimental and un-documented feature in Karate, but there is a JS API to perform HTTP requests:

* eval
"""
var http = karate.http('https://httpbin.org');
http.path('anything');
var response = http.get().body;
karate.log('response:', response);
"""

It is a "fluent API" so you can do everything in one-line:

var body = karate.http('https://httpbin.org/get').get().body;

If you need details, read the source-code of the HttpRequestBuilder and Response classes in the Karate project.

Peter Thomas
  • 54,465
  • 21
  • 84
  • 248