• United States+1
  • United Kingdom+44
  • Afghanistan (‫افغانستان‬‎)+93
  • Albania (Shqipëri)+355
  • Algeria (‫الجزائر‬‎)+213
  • American Samoa+1684
  • Andorra+376
  • Angola+244
  • Anguilla+1264
  • Antigua and Barbuda+1268
  • Argentina+54
  • Armenia (Հայաստան)+374
  • Aruba+297
  • Australia+61
  • Austria (Österreich)+43
  • Azerbaijan (Azərbaycan)+994
  • Bahamas+1242
  • Bahrain (‫البحرين‬‎)+973
  • Bangladesh (বাংলাদেশ)+880
  • Barbados+1246
  • Belarus (Беларусь)+375
  • Belgium (België)+32
  • Belize+501
  • Benin (Bénin)+229
  • Bermuda+1441
  • Bhutan (འབྲུག)+975
  • Bolivia+591
  • Bosnia and Herzegovina (Босна и Херцеговина)+387
  • Botswana+267
  • Brazil (Brasil)+55
  • British Indian Ocean Territory+246
  • British Virgin Islands+1284
  • Brunei+673
  • Bulgaria (България)+359
  • Burkina Faso+226
  • Burundi (Uburundi)+257
  • Cambodia (កម្ពុជា)+855
  • Cameroon (Cameroun)+237
  • Canada+1
  • Cape Verde (Kabu Verdi)+238
  • Caribbean Netherlands+599
  • Cayman Islands+1345
  • Central African Republic (République centrafricaine)+236
  • Chad (Tchad)+235
  • Chile+56
  • China (中国)+86
  • Christmas Island+61
  • Cocos (Keeling) Islands+61
  • Colombia+57
  • Comoros (‫جزر القمر‬‎)+269
  • Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)+243
  • Congo (Republic) (Congo-Brazzaville)+242
  • Cook Islands+682
  • Costa Rica+506
  • Côte d’Ivoire+225
  • Croatia (Hrvatska)+385
  • Cuba+53
  • Curaçao+599
  • Cyprus (Κύπρος)+357
  • Czech Republic (Česká republika)+420
  • Denmark (Danmark)+45
  • Djibouti+253
  • Dominica+1767
  • Dominican Republic (República Dominicana)+1
  • Ecuador+593
  • Egypt (‫مصر‬‎)+20
  • El Salvador+503
  • Equatorial Guinea (Guinea Ecuatorial)+240
  • Eritrea+291
  • Estonia (Eesti)+372
  • Ethiopia+251
  • Falkland Islands (Islas Malvinas)+500
  • Faroe Islands (Føroyar)+298
  • Fiji+679
  • Finland (Suomi)+358
  • France+33
  • French Guiana (Guyane française)+594
  • French Polynesia (Polynésie française)+689
  • Gabon+241
  • Gambia+220
  • Georgia (საქართველო)+995
  • Germany (Deutschland)+49
  • Ghana (Gaana)+233
  • Gibraltar+350
  • Greece (Ελλάδα)+30
  • Greenland (Kalaallit Nunaat)+299
  • Grenada+1473
  • Guadeloupe+590
  • Guam+1671
  • Guatemala+502
  • Guernsey+44
  • Guinea (Guinée)+224
  • Guinea-Bissau (Guiné Bissau)+245
  • Guyana+592
  • Haiti+509
  • Honduras+504
  • Hong Kong (香港)+852
  • Hungary (Magyarország)+36
  • Iceland (Ísland)+354
  • India (भारत)+91
  • Indonesia+62
  • Iran (‫ایران‬‎)+98
  • Iraq (‫العراق‬‎)+964
  • Ireland+353
  • Isle of Man+44
  • Israel (‫ישראל‬‎)+972
  • Italy (Italia)+39
  • Jamaica+1876
  • Japan (日本)+81
  • Jersey+44
  • Jordan (‫الأردن‬‎)+962
  • Kazakhstan (Казахстан)+7
  • Kenya+254
  • Kiribati+686
  • Kosovo+383
  • Kuwait (‫الكويت‬‎)+965
  • Kyrgyzstan (Кыргызстан)+996
  • Laos (ລາວ)+856
  • Latvia (Latvija)+371
  • Lebanon (‫لبنان‬‎)+961
  • Lesotho+266
  • Liberia+231
  • Libya (‫ليبيا‬‎)+218
  • Liechtenstein+423
  • Lithuania (Lietuva)+370
  • Luxembourg+352
  • Macau (澳門)+853
  • Macedonia (FYROM) (Македонија)+389
  • Madagascar (Madagasikara)+261
  • Malawi+265
  • Malaysia+60
  • Maldives+960
  • Mali+223
  • Malta+356
  • Marshall Islands+692
  • Martinique+596
  • Mauritania (‫موريتانيا‬‎)+222
  • Mauritius (Moris)+230
  • Mayotte+262
  • Mexico (México)+52
  • Micronesia+691
  • Moldova (Republica Moldova)+373
  • Monaco+377
  • Mongolia (Монгол)+976
  • Montenegro (Crna Gora)+382
  • Montserrat+1664
  • Morocco (‫المغرب‬‎)+212
  • Mozambique (Moçambique)+258
  • Myanmar (Burma) (မြန်မာ)+95
  • Namibia (Namibië)+264
  • Nauru+674
  • Nepal (नेपाल)+977
  • Netherlands (Nederland)+31
  • New Caledonia (Nouvelle-Calédonie)+687
  • New Zealand+64
  • Nicaragua+505
  • Niger (Nijar)+227
  • Nigeria+234
  • Niue+683
  • Norfolk Island+672
  • North Korea (조선 민주주의 인민 공화국)+850
  • Northern Mariana Islands+1670
  • Norway (Norge)+47
  • Oman (‫عُمان‬‎)+968
  • Pakistan (‫پاکستان‬‎)+92
  • Palau+680
  • Palestine (‫فلسطين‬‎)+970
  • Panama (Panamá)+507
  • Papua New Guinea+675
  • Paraguay+595
  • Peru (Perú)+51
  • Philippines+63
  • Poland (Polska)+48
  • Portugal+351
  • Puerto Rico+1
  • Qatar (‫قطر‬‎)+974
  • Réunion (La Réunion)+262
  • Romania (România)+40
  • Russia (Россия)+7
  • Rwanda+250
  • Saint Barthélemy (Saint-Barthélemy)+590
  • Saint Helena+290
  • Saint Kitts and Nevis+1869
  • Saint Lucia+1758
  • Saint Martin (Saint-Martin (partie française))+590
  • Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)+508
  • Saint Vincent and the Grenadines+1784
  • Samoa+685
  • San Marino+378
  • São Tomé and Príncipe (São Tomé e Príncipe)+239
  • Saudi Arabia (‫المملكة العربية السعودية‬‎)+966
  • Senegal (Sénégal)+221
  • Serbia (Србија)+381
  • Seychelles+248
  • Sierra Leone+232
  • Singapore+65
  • Sint Maarten+1721
  • Slovakia (Slovensko)+421
  • Slovenia (Slovenija)+386
  • Solomon Islands+677
  • Somalia (Soomaaliya)+252
  • South Africa+27
  • South Korea (대한민국)+82
  • South Sudan (‫جنوب السودان‬‎)+211
  • Spain (España)+34
  • Sri Lanka (ශ්‍රී ලංකාව)+94
  • Sudan (‫السودان‬‎)+249
  • Suriname+597
  • Svalbard and Jan Mayen+47
  • Swaziland+268
  • Sweden (Sverige)+46
  • Switzerland (Schweiz)+41
  • Syria (‫سوريا‬‎)+963
  • Taiwan (台灣)+886
  • Tajikistan+992
  • Tanzania+255
  • Thailand (ไทย)+66
  • Timor-Leste+670
  • Togo+228
  • Tokelau+690
  • Tonga+676
  • Trinidad and Tobago+1868
  • Tunisia (‫تونس‬‎)+216
  • Turkey (Türkiye)+90
  • Turkmenistan+993
  • Turks and Caicos Islands+1649
  • Tuvalu+688
  • U.S. Virgin Islands+1340
  • Uganda+256
  • Ukraine (Україна)+380
  • United Arab Emirates (‫الإمارات العربية المتحدة‬‎)+971
  • United Kingdom+44
  • United States+1
  • Uruguay+598
  • Uzbekistan (Oʻzbekiston)+998
  • Vanuatu+678
  • Vatican City (Città del Vaticano)+39
  • Venezuela+58
  • Vietnam (Việt Nam)+84
  • Wallis and Futuna+681
  • Western Sahara (‫الصحراء الغربية‬‎)+212
  • Yemen (‫اليمن‬‎)+967
  • Zambia+260
  • Zimbabwe+263
  • Åland Islands+358
Thanks! We'll be in touch in the next 12 hours
Oops! Something went wrong while submitting the form.

A Guide to End-to-End API Test Automation with Postman and GitHub Actions

Objective

  • The blog intends to provide a step-by-step guide on how to automate API testing using Postman. It also demonstrates how we can create a pipeline for periodically running the test suite.
  • Further, it explains how the report can be stored in a central S3 bucket, finally sending the status of the execution back to a designated slack Channel, informing stakeholders about the status, and enabling them to obtain detailed information about the quality of the API.

Introduction to Postman

  • To speed up the API testing process and improve the accuracy of our APIs, we are going to automate the API functional tests using Postman.
  • Postman is a great tool when trying to dissect RESTful APIs.
  • It offers a sleek user interface to create our functional tests to validate our API's functionality.
  • Furthermore, the collection of tests will be integrated with GitHub Actions to set up a CI/CD platform that will be used to automate this API testing workflow.

Getting started with Postman

Setting up the environment

  • Click on the "New" button on the top left corner. 
  • Select "Environment" as the building block.
  • Give the desired name to the environment file.

Create a collection

  • Click on the "New" button on the top left corner.
  • Select "Collection" as the building block.
  • Give the desired name to the Collection.

Adding requests to the collection

  • Configure the Requests under test in folders as per requirement.
  • Enter the API endpoint in the URL field.
  • Set the Auth credentials necessary to run the endpoint. 
  • Set the header values, if required.
  • Enter the request body, if applicable.
  • Send the request by clicking on the "Send" button.
  • Verify the response status and response body.

Creating TESTS

  • Click on the "Tests" tab.
  • Write the test scripts in JavaScript using the Postman test API.
  • Run the tests by clicking on the "Send" button and validate the execution of the tests written.
  • Alternatively, the prebuilt snippets given by Postman can also be used to create the tests.
  • In case some test data needs to be created, the “Pre-request Script“ tab can be used.

Running the Collection

  • Click on the ellipses beside the collection created. 
  • Select the environment created in Step 1.
  • Click on the "Run Collection" button.

  • Alternatively, the collection and the env file can be exported and also run via the Newman command.

Collaboration

The original collection and the environment file can be exported and shared with others by clicking on the "Export" button. These collections and environments can be version controlled using a system such as Git.

  • While working in a team, team members raise PRs for their changes against the original collection and env via forking. Create a fork.
  • Make necessary changes to the collection and click on Create a Pull request.
  • Validate the changes and approve and merge them to the main collection.

Integrating with CI/CD


Creating a pipeline with GitHub Actions

GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform that allows you to automate your build, test, and deployment pipeline.

You can create workflows that build and test every pull request to your repository, or deploy merged pull requests to production. To create a pipeline, follow the below steps

  • Create a .yml file inside folder .github/workflows at root level.
  • The same can also be created via GitHub.
  • Configure the necessary actions/steps for the pipeline.

Workflow File

  • Add a trigger to run the workflow.
  • The schedule in the below code snippet is a GitHub Actions event that triggers the workflow at a specific time interval using a CRON expression.
  • The push and pull_request events denote the Actions event that triggers the workflow for each push and pull request on the develop branch.
  • The workflow_dispatch tag denotes the ability to run the workflow manually, too, from GitHub Actions.
  • Create a job to run the Postman Collection.
  • Check out the code from the current repository. Also, create a directory to store the results.
  • Install Nodejs.
  • Install Newman and necessary dependencies
  • Running the collection
  • Upload Newman report into the directory

Generating Allure report and hosting the report onto s3.

  • Along with the default report that Newman provides, Allure reporting can also be used in order to get a dashboard of the result. 
  • To generate the Allure report, install the Allure dependencies given in the installation step above.
  • Once, that is done, add below code to your .yml file.
  • Create a bucket in s3, which you will be using for storing the reports
  • Create an iam role for the bucket.
  • The below code snipper user aws-actions/configure-aws-credentials@v1 action to configure your AWS.
  • Credentials Allure generates 2 separate folders eventually combining them to create a dashboard.

Use the code snippet in the deploy section to upload the contents of the folder onto your s3 bucket.

  • Once done, you should be able to see the Allure dashboard hosted on the Static Website URL for your bucket.

Send Slack notification with the Status of the job

  • When a job is executed in a CI/CD pipeline, it's important to keep the team members informed about the status of the job. 
  • Below GitHub Actions step sends a notification to a Slack channel with the status of the job.
  • It uses the “notify-slack-action" GitHub Action, which is defined in the "ravsamhq/notify-slack-action" repository.
  • The "if: always()" condition indicates that this step should always be executed, regardless of whether the previous steps in the workflow succeeded or failed.
Get the latest engineering blogs delivered straight to your inbox.
No spam. Only expert insights.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Did you like the blog? If yes, we're sure you'll also like to work with the people who write them - our best-in-class engineering team.

We're looking for talented developers who are passionate about new emerging technologies. If that's you, get in touch with us.

Explore current openings

A Guide to End-to-End API Test Automation with Postman and GitHub Actions

Objective

  • The blog intends to provide a step-by-step guide on how to automate API testing using Postman. It also demonstrates how we can create a pipeline for periodically running the test suite.
  • Further, it explains how the report can be stored in a central S3 bucket, finally sending the status of the execution back to a designated slack Channel, informing stakeholders about the status, and enabling them to obtain detailed information about the quality of the API.

Introduction to Postman

  • To speed up the API testing process and improve the accuracy of our APIs, we are going to automate the API functional tests using Postman.
  • Postman is a great tool when trying to dissect RESTful APIs.
  • It offers a sleek user interface to create our functional tests to validate our API's functionality.
  • Furthermore, the collection of tests will be integrated with GitHub Actions to set up a CI/CD platform that will be used to automate this API testing workflow.

Getting started with Postman

Setting up the environment

  • Click on the "New" button on the top left corner. 
  • Select "Environment" as the building block.
  • Give the desired name to the environment file.

Create a collection

  • Click on the "New" button on the top left corner.
  • Select "Collection" as the building block.
  • Give the desired name to the Collection.

Adding requests to the collection

  • Configure the Requests under test in folders as per requirement.
  • Enter the API endpoint in the URL field.
  • Set the Auth credentials necessary to run the endpoint. 
  • Set the header values, if required.
  • Enter the request body, if applicable.
  • Send the request by clicking on the "Send" button.
  • Verify the response status and response body.

Creating TESTS

  • Click on the "Tests" tab.
  • Write the test scripts in JavaScript using the Postman test API.
  • Run the tests by clicking on the "Send" button and validate the execution of the tests written.
  • Alternatively, the prebuilt snippets given by Postman can also be used to create the tests.
  • In case some test data needs to be created, the “Pre-request Script“ tab can be used.

Running the Collection

  • Click on the ellipses beside the collection created. 
  • Select the environment created in Step 1.
  • Click on the "Run Collection" button.

  • Alternatively, the collection and the env file can be exported and also run via the Newman command.

Collaboration

The original collection and the environment file can be exported and shared with others by clicking on the "Export" button. These collections and environments can be version controlled using a system such as Git.

  • While working in a team, team members raise PRs for their changes against the original collection and env via forking. Create a fork.
  • Make necessary changes to the collection and click on Create a Pull request.
  • Validate the changes and approve and merge them to the main collection.

Integrating with CI/CD


Creating a pipeline with GitHub Actions

GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform that allows you to automate your build, test, and deployment pipeline.

You can create workflows that build and test every pull request to your repository, or deploy merged pull requests to production. To create a pipeline, follow the below steps

  • Create a .yml file inside folder .github/workflows at root level.
  • The same can also be created via GitHub.
  • Configure the necessary actions/steps for the pipeline.

Workflow File

  • Add a trigger to run the workflow.
  • The schedule in the below code snippet is a GitHub Actions event that triggers the workflow at a specific time interval using a CRON expression.
  • The push and pull_request events denote the Actions event that triggers the workflow for each push and pull request on the develop branch.
  • The workflow_dispatch tag denotes the ability to run the workflow manually, too, from GitHub Actions.
  • Create a job to run the Postman Collection.
  • Check out the code from the current repository. Also, create a directory to store the results.
  • Install Nodejs.
  • Install Newman and necessary dependencies
  • Running the collection
  • Upload Newman report into the directory

Generating Allure report and hosting the report onto s3.

  • Along with the default report that Newman provides, Allure reporting can also be used in order to get a dashboard of the result. 
  • To generate the Allure report, install the Allure dependencies given in the installation step above.
  • Once, that is done, add below code to your .yml file.
  • Create a bucket in s3, which you will be using for storing the reports
  • Create an iam role for the bucket.
  • The below code snipper user aws-actions/configure-aws-credentials@v1 action to configure your AWS.
  • Credentials Allure generates 2 separate folders eventually combining them to create a dashboard.

Use the code snippet in the deploy section to upload the contents of the folder onto your s3 bucket.

  • Once done, you should be able to see the Allure dashboard hosted on the Static Website URL for your bucket.

Send Slack notification with the Status of the job

  • When a job is executed in a CI/CD pipeline, it's important to keep the team members informed about the status of the job. 
  • Below GitHub Actions step sends a notification to a Slack channel with the status of the job.
  • It uses the “notify-slack-action" GitHub Action, which is defined in the "ravsamhq/notify-slack-action" repository.
  • The "if: always()" condition indicates that this step should always be executed, regardless of whether the previous steps in the workflow succeeded or failed.

Did you like the blog? If yes, we're sure you'll also like to work with the people who write them - our best-in-class engineering team.

We're looking for talented developers who are passionate about new emerging technologies. If that's you, get in touch with us.

Explore current openings