Hi,
I am using newman as library to run postman collections.
Looking to do a validation to compare expected json response saved in json file while the responses are recived using on(‘request’,(error,data) event.
below is my code where content is response from api and data is json response in file.
I’m really following what you’re trying to do here? What’s the Collection doing if you’re also trying to use the Newman events to make assertions against?
Might be just me - I’m just not really understanding the problem you’re trying to solve.
Collection is hitting all the api’s and I am saving response in ‘actresponse’ variable.
Then I am comparing it with response saved in file and stored in variable ‘expresponse’.
Hey @shalaka-m I spotted some issues which are likely the cause of errors you are seeing
The following code will run asynchronously, so it is not guaranteed that the value inside expresponse would be available when you are setting the script using data.item.events.members[0].script.exec
To fix this, move that statement inside then().
And while setting global variables, you are passing strings, so newman would not be aware of what the variables content and data
...
"pm.globalVariables.set(\"actresponse\",JSON.parse(content));\r", // Where is content in the scope of the test script?
"pm.globalVariables.set(\"expresponse\",JSON.parse(data));\r", // same with data?
...
I haven’t tested these, but the async file-read function may cause other problems too! The code may not return before the collection’s “test” script gets executed for example.
You may want to revisit how you are structuring the file read to get expected responses. A better approach would be to read the responses and store inside a variable before executing newman.run(), but it would come at the cost of memory overhead.
Thanks @xk0der ,
I see this error using above solution ‘TypeError: Cannot read properties of undefined (reading ‘events’)’ .
Looks like postman script is unable to read variables that are set in node.