Check out all the Courses - bit.ly/sdet-u-academy Join Mailing List - bit.ly/sdet-u-mailing-list If you like this video, make sure to subscribe to the channel and share this video :)
Hey I keep getting the following error: Exception during run: Error [ERR_REQUIRE_ESM]: require() of ES Module C:\Users\tuboo\Desktop\super-api-test ode_modules\chai\chai.js from C:\Users\tuboo\Desktop\super-api-test\test\user.js not supported. Instead change the require of chai.js in C:\Users\tuboo\Desktop\super-api-test\test\user.js to a dynamic import() which is available in all CommonJS modules. at Object.newLoader [as .js] (C:\Users\tuboo\Desktop\super-api-test ode_modules\pirates\lib\index.js:121:7) This is 2024, i've tried everything possible, no luck still, i know it has to do with the way i Imported chai for assertion... any suggestions please?
Some times I get the error "Error: Timeout of 2000ms exceeded.". If any one get the same error just add on the end of descripe block timeout(10000). describe('nameOfDescribe', () => {}).timeout(10000).
I was given an assignment for a Job Interview! I completed it with the help of this course and I got a call for the next round :) Now I am prepping for it! Thanks @dilpreetjohal
Glad you enjoyed the content. We have created multiple courses that takes our students from ground level. If you want to become a full stack Automation engineer, Please check out the academy at: sdetunicorns.com/courses/
Using Async/Await section, I was getting the Error: User Post "before all" hook for "/posts": TypeError: (0 , _user_helper.createRandonUser) is not a function To fix this I had to change the user_helper export to "module.exports.createRandomUser.." Hope this helps anyone else that may come across the same error when following along :) Dilpreet, awesome content and so clear and precise! I will look further into why I needed to add module for it to work as its not the first time I've come across this, for which I come across something similar with ava (from what I've seen so far the export is to allow something to be public), but any pointers into the right direction to get a better understanding would be great, I suspect this is related to nodejs with modules and versions of ES, and certain packages (I could be wrong), but I will be sure to do some further learnings after finishing this tut. Thank you for the awesome content!
Thank you Automation Bro. Much helpful. Can you tell how can we read the JSON file in supertest and pass it to POST request body? I have a request body that has 100 lines of data. My idea is to read the JSON file from the local drive and pass it to the post command. How can we do this?
Thanks for the detail video on API autoamtion i have limitied knowledge on this ,but with this am able to get knowledge and able to relate to the project,tq u so much can i get the reply from u having few more doubts can i ask on api automation
This is exactly what I wanted to implement in my project. Thanks for this video. Is there any documentation available for Chai and Mocha? There are few more things i need to understand before I start working.
Hello daljit I have doubt . 1. Why you use Babel here . Balel use for transfer ES6+ code to ES5 code for old browser but why you install and configure babel
Hi Pradeep, first off my name is Dilpreet (not daljit) :) Second, since we are using ES6 code such as import statements we need to use babel to support that. There are other workarounds that we can do to avoid that but simply using babel makes it easy to use both import and require statements.
People say that learn Java for API Automation testing most of companies use that. What should I do? Do I need to learn JavaScript for API automation orJava?
It's not the language that matters, it's about understanding the concepts behind API Automation and learning best practices. Once you know that, you can pick any language of your choice to automate it.
I'm very new to testing, and they told me to learn more about performance, load and stress testing. What do you suggest me to do?! Can you explain it in short terms what it is, what are the best tools to use etc... I'm more in javascript langugage. Thanks!
Thanks for the video Dilpreet. When I write blocks it or descripe(on vs code) there is not pasted automatically brackets or other symbvols. How to correct set up plugin?
I had the same problem. I think the video needs a bit more details regarding the setup steps and any extensions that might be needed. The following worked for me to fix this. In vs code. View >extensions Add the following extensions Mocha snippets Es6 mocha snippets Once these are added the following statements should complete with intellisense. dsc - enter: completes a describe block It - enter: completes an it block Describe and it - enter: completes a describe and it block in one operation
Hi Dilpreet, Thanks a ton for this amazing video. I have one question here, I have to also define header things as we define in postman tool. so where shall I define them in the user file ? Thanking you in advance
In Supertest, you can define headers for a request using the .set() method. This method sets a header value for the next request to be sent. You can chain multiple .set() methods to set multiple headers for the same request. You can find examples here - www.npmjs.com/package/supertest
@@sdetunicorns I have set the header value as return request .post('loginUser') .set(('Accept','application/json'),('Content-Length',[500]),('Host',[600])) .send(data) .then((res) => { console.log(res.body.accessToken); in postman(Header) : Content-Type: application/json Content-Length: Host: Error in Javascript: TypeError: Header name must be a valid HTTP token ["application/json"] please let me know what is wrong I am making here
Hi, curl request is simply an HTTP request which you can do with SuperTest itself. You can watch this course to learn how to make different kinds of HTTP request.
Hi Dilpreet, Thanks for the video. I need to implement my framework so that we can run the scripts in different environments by providing an environment parameter through cli or any other way. Would you know how this can be implemented in supertest + mocha. I am using the same stack as your tutorial. Thanks in advance.
In the HTTP get methods. expect(res.body.data.id) , it's not working . Supertest not recognising '.data' and getting this error 'TypeError: Cannot read properties of undefined (reading 'id')' .
if i try using the helper folder , I get an error , Is there a plug in that I am missing Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/Users/jaspreetmangat/Repo/camundatest/helper/user_helper' imported from /Users/jaspreetmangat/Repo/camundatest/test/task.js
@@sdetunicorns the response body is as below [ { "id": "295ab6e5-4ec4-11ec-8138-0a126fbd7918", "name": "Verify checklist", "assignee": null, "created": "2021-11-26T14:21:35.601+0000", "due": null, "followUp": null, "delegationState": null, "description": null, "executionId": "295a8fc1-4ec4-11ec-8138-0a126fbd7918", "owner": null, "parentTaskId": null, "priority": 50, "processDefinitionId": "defaultProductFlow:29:e3d70e16-4dd4-11ec-8138-0a126fbd7918", "processInstanceId": "295a8fc1-4ec4-11ec-8138-0a126fbd7918", "taskDefinitionKey": "verifyhecklist", "caseExecutionId": null, "caseInstanceId": null, "caseDefinitionId": null, "suspended": false, "formKey": null } ] Also I am stuck at another point , in some cases I will only get [] But cannot verfiy this "if (expect(res.body.data).to.be.null == true) { console.log("body not found");}" I get AssertionError: expected undefined to be null Also tried using expect(res.body.data).to.be.undefined but no luck V
Check out all the Courses - bit.ly/sdet-u-academy
Join Mailing List - bit.ly/sdet-u-mailing-list
If you like this video, make sure to subscribe to the channel and share this video :)
Hey I keep getting the following error:
Exception during run: Error [ERR_REQUIRE_ESM]: require() of ES Module C:\Users\tuboo\Desktop\super-api-test
ode_modules\chai\chai.js from C:\Users\tuboo\Desktop\super-api-test\test\user.js not supported.
Instead change the require of chai.js in C:\Users\tuboo\Desktop\super-api-test\test\user.js to a dynamic import() which is available in all CommonJS modules.
at Object.newLoader [as .js] (C:\Users\tuboo\Desktop\super-api-test
ode_modules\pirates\lib\index.js:121:7)
This is 2024, i've tried everything possible, no luck still, i know it has to do with the way i Imported chai for assertion... any suggestions please?
Hello, can you also add jsonSchema validation in the existing project, it will be helpful.
Amazing and extremally useful video. Thank you!
Amazing tutorial!!! So clear and concise. Thank you so much, Dilpreet
Huh sounds too amazing for buryat people ?
Some times I get the error "Error: Timeout of 2000ms exceeded.". If any one get the same error just add on the end of descripe block timeout(10000).
describe('nameOfDescribe', () => {}).timeout(10000).
I was given an assignment for a Job Interview! I completed it with the help of this course and I got a call for the next round :) Now I am prepping for it! Thanks @dilpreetjohal
That's amazing! I am glad this video helped you out to prep for your interview. Good luck in the next round :)
Thanks!
Glad you enjoyed the content. We have created multiple courses that takes our students from ground level. If you want to become a full stack Automation engineer, Please check out the academy at: sdetunicorns.com/courses/
Love the content so muchhhh!
Using Async/Await section, I was getting the Error:
User Post
"before all" hook for "/posts":
TypeError: (0 , _user_helper.createRandonUser) is not a function
To fix this I had to change the user_helper export to "module.exports.createRandomUser.."
Hope this helps anyone else that may come across the same error when following along :)
Dilpreet, awesome content and so clear and precise! I will look further into why I needed to add module for it to work as its not the first time I've come across this, for which I come across something similar with ava (from what I've seen so far the export is to allow something to be public), but any pointers into the right direction to get a better understanding would be great, I suspect this is related to nodejs with modules and versions of ES, and certain packages (I could be wrong), but I will be sure to do some further learnings after finishing this tut. Thank you for the awesome content!
Can you please make a video on using the basic auth instead of bearer token
sure, i can add to the list :)
Wow u r gr8🙏
Thank you! Stay tuned for more exciting things related to API test automation.
Hi Bro, Is this applicable for now? the API link URL has updated to version 2
love it brew!!
When I tried to log response body it's returning as [object, object]...But all assertion get passes
Are there plans to create a video that uses Oauth 2.0 to authenticate? That would be super useful.
I have added that in the list, will look into creating one in the future.
Thank you Automation Bro. Much helpful. Can you tell how can we read the JSON file in supertest and pass it to POST request body? I have a request body that has 100 lines of data. My idea is to read the JSON file from the local drive and pass it to the post command. How can we do this?
Hi Dilpreet
How can we rerun a specific test case if it fails because of 500 issue?
You can add this.retries(3); inside your it or describe block and it will retry on failure automatically.
@@sdetunicorns i tried doing that but it still fails on the first try itself
it worked. Thanks Dilpreet! I was using arrow functions for the test cases which was the reason for it failing before
Glad it worked out for you.
Thanks for the detail video on API autoamtion i have limitied knowledge on this ,but with this am able to get knowledge and able to relate to the project,tq u so much can i get the reply from u having few more doubts can i ask on api automation
That's good to hear! Sure, what doubts do you have?
@@sdetunicornsI would like to connect on the existed project framework,as one here to help found ur videos
This is exactly what I wanted to implement in my project. Thanks for this video.
Is there any documentation available for Chai and Mocha? There are few more things i need to understand before I start working.
You can find the docs here -
- mochajs.org/
- www.chaijs.com/
I got the error TypeError: Cannot read property 'gender' of undefined all time when running npm test. Can anyone help me? Thanks so much
I am getting following error :
Assertion failed: new_time >= loop->time, file c:\ws\deps\uv\src\win\core.c, line 39
Hello daljit I have doubt .
1. Why you use Babel here . Balel use for transfer ES6+ code to ES5 code for old browser but why you install and configure babel
Hi Pradeep, first off my name is Dilpreet (not daljit) :)
Second, since we are using ES6 code such as import statements we need to use babel to support that. There are other workarounds that we can do to avoid that but simply using babel makes it easy to use both import and require statements.
@@sdetunicorns Thankx for cleaning my doubts it's helpful.greatfull for such awesome valuable content.
People say that learn Java for API Automation testing most of companies use that. What should I do? Do I need to learn JavaScript for API automation orJava?
It's not the language that matters, it's about understanding the concepts behind API Automation and learning best practices. Once you know that, you can pick any language of your choice to automate it.
I'm very new to testing, and they told me to learn more about performance, load and stress testing. What do you suggest me to do?!
Can you explain it in short terms what it is, what are the best tools to use etc... I'm more in javascript langugage. Thanks!
Hey, you can look into JMeter to do performance and load testing. It's quite easy to setup and there are multiple resources out there already as well.
@23:15 >> seeing this error 'Uncaught AssertionError: .empty was passed non-string primitive undefined'
same issue here
is deserialization of response possible in this framework? Like in Java Rest Assured.
No that is not required here as you can directly access and manipulate JSON data with JavaScript.
Thanks for the video Dilpreet.
When I write blocks it or descripe(on vs code) there is not pasted automatically brackets or other symbvols. How to correct set up plugin?
I had the same problem. I think the video needs a bit more details regarding the setup steps and any extensions that might be needed.
The following worked for me to fix this.
In vs code. View >extensions
Add the following extensions
Mocha snippets
Es6 mocha snippets
Once these are added the following statements should complete with intellisense.
dsc - enter: completes a describe block
It - enter: completes an it block
Describe and it - enter: completes a describe and it block in one operation
Hi Dilpreet, Thanks a ton for this amazing video. I have one question here, I have to also define header things as we define in postman tool. so where shall I define them in the user file ?
Thanking you in advance
In Supertest, you can define headers for a request using the .set() method. This method sets a header value for the next request to be sent. You can chain multiple .set() methods to set multiple headers for the same request. You can find examples here - www.npmjs.com/package/supertest
@@sdetunicorns Thanks for your prompt reply. I will do the changes and will let you know about this.
@@sdetunicorns I have set the header value as return request
.post('loginUser')
.set(('Accept','application/json'),('Content-Length',[500]),('Host',[600]))
.send(data)
.then((res) => {
console.log(res.body.accessToken);
in postman(Header) : Content-Type: application/json
Content-Length:
Host:
Error in Javascript: TypeError: Header name must be a valid HTTP token ["application/json"]
please let me know what is wrong I am making here
Is the github link removed from description?
Updated - github.com/dilpreetj/JavaScript-API-Automation-Tests
In the Async / Await section, my text is passing but it’s say “user_id : “must not be a number”. Has anyone else experienced this? What’s the fix?
You will likely need to parse the user_id to string and then pass it to the API.
@@sdetunicorns how would I go about that? I’m super new to Java and API testing
@@sdetunicorns parse.string(“user_id”)?
Hi Bro, How to make Curl request I need to use Curl . With super test. And I am new to Api testing .can you help me
Hi, curl request is simply an HTTP request which you can do with SuperTest itself. You can watch this course to learn how to make different kinds of HTTP request.
Hi, Could you please tell me what I need to do to create this framework in TypeScript? Thank you
All these libraries are supported with TS as well, so you don't need to do anything different for TS.
@@sdetunicorns Do I still need babel with ts? What do I need to install differently to do this in ts? Thanks.
Well that depends on your project needs but in general you would not use Babel, just TS compiler is sufficient.
How can i use axios instead of super test
Install axios and everything else will pretty much same
I am getting an error on post request. it shows authentication failed
Try to do these steps in postman to make sure it works fine there. If it does then you can review your code and see what you are doing wrong.
Does anyone has issue with npm: command not found ? I am very new with Jenkins
That's because you need to get NodeJS plugin installed in your Jenkins first and then you will be able to run the npm command.
Can you please share git hub repo for this framework.
There you go - github.com/automationbro/JavaScript-API-Automation-Tests
@@sdetunicorns Thanks alot !!!!
Hi @39.40 I am getting error as TypeError: res.body.data.forEach is not a function . Any idea Why this error occurs? I followed all your steps
You can try to print out what you are getting for - res.body.data and troubleshoot from there
@@sdetunicorns Got it, I changed the res.body.data to Array.from(res.body.data) and now that works. Thanks for your response
Hi, I ran my test on GET /users. I see my test passing but cannot see response body :(
My response looks like :
null
{}
Do you know the reason why my response body is blank ?
can you please share your entire request url?
Hi Dilpreet,
Thanks for the video. I need to implement my framework so that we can run the scripts in different environments by providing an environment parameter through cli or any other way. Would you know how this can be implemented in supertest + mocha. I am using the same stack as your tutorial.
Thanks in advance.
Hi, you can use process.env.BASE_URL and then through CLI you can pass in your BASE_URL dynamically
@@sdetunicorns Thanks for your response!
Can you please make a video on API testing using AXIOS library?
Sure, I will add that to the list.
In the HTTP get methods. expect(res.body.data.id) , it's not working . Supertest not recognising '.data' and getting this error 'TypeError: Cannot read properties of undefined (reading 'id')' .
Hello, try to print out what you are getting from res.body as that's probably not returning the right response which is causing this error for you.
if i try using the helper folder , I get an error ,
Is there a plug in that I am missing
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/Users/jaspreetmangat/Repo/camundatest/helper/user_helper' imported from /Users/jaspreetmangat/Repo/camundatest/test/task.js
I got it , Import requires the file extension .
If I use expect(res.body.data).to.be.not.empty;
I get below error
Uncaught AssertionError: .empty was passed non-string primitive undefined
Try to print out what you are getting back as part of `res.body.data` and make sure you have proper data being returned
@@sdetunicorns the response body is as below
[
{
"id": "295ab6e5-4ec4-11ec-8138-0a126fbd7918",
"name": "Verify checklist",
"assignee": null,
"created": "2021-11-26T14:21:35.601+0000",
"due": null,
"followUp": null,
"delegationState": null,
"description": null,
"executionId": "295a8fc1-4ec4-11ec-8138-0a126fbd7918",
"owner": null,
"parentTaskId": null,
"priority": 50,
"processDefinitionId": "defaultProductFlow:29:e3d70e16-4dd4-11ec-8138-0a126fbd7918",
"processInstanceId": "295a8fc1-4ec4-11ec-8138-0a126fbd7918",
"taskDefinitionKey": "verifyhecklist",
"caseExecutionId": null,
"caseInstanceId": null,
"caseDefinitionId": null,
"suspended": false,
"formKey": null
}
]
Also I am stuck at another point , in some cases I will only get
[]
But cannot verfiy this "if (expect(res.body.data).to.be.null == true)
{
console.log("body not found");}"
I get
AssertionError: expected undefined to be null
Also tried using expect(res.body.data).to.be.undefined but no luck V