TestNG is a testing framework inspired from JUnit and NUnit but introducing some new functionalities that make it more powerful.
This repository demonstrates a comprehensive test framework for both API and unit testing, developed using TestNG and Java. It supports writing and executing tests for APIs (using the Reqres API) as well as unit tests for individual components. The project is designed with modularity in mind, providing an organized structure for efficient test development and execution.
-
Clone the repository
-
Ensure you have the following dependencies installed on the machine
- Java >= 8
- Maven >= 3.1+
Maven:
mvn install -DskipTests
This repository contains the following API and unit tests:
Module | Test Name | Description |
---|---|---|
API | GetRequestTest | This test verifies the GET requests for the Reqres API, ensuring correct data is fetched and validating the response structure. |
API | PostRequestTest | This test verifies the POST requests, ensuring data is successfully created and the response includes the correct status code and payload. |
API | PutRequestTest | This test verifies the PUT requests for updating resources in the Reqres API, checking data integrity post-update. |
API | DeleteRequestTest | This test verifies the DELETE requests, ensuring resources are deleted successfully and the correct response code is returned. |
Unit | CreditCardValidatorTest | This unit test checks the whether the entered credit card number is correct or not. |
Unit | EmailValidatorTest | This unit test checks the correctness of the email validation logic, ensuring only properly formatted email addresses are accepted. |
Unit | ShoppingCartTest | This unit test verifies that the shopping cart functionality works correctly, verifying item addition and cart emptying functionality. |
Unit | UserRegistrationTest | This test validates the user registration process, which includes testing valid and invalid user registration scenarios. |
BrowserStack Test Observability is a tool that provides deep insights into test execution, performance, and debugging to help teams improve test reliability and speed.
-
Create a new BrowserStack account or use an existing one.
-
Identify your BrowserStack username and access key from the BrowserStack Automate Dashboard and export them as environment variables using the below commands.
- For *nix based and Mac machines:
export BROWSERSTACK_USERNAME=<browserstack-username> && export BROWSERSTACK_ACCESS_KEY=<browserstack-access-key>
- For Windows:
set BROWSERSTACK_USERNAME=<browserstack-username> set BROWSERSTACK_ACCESS_KEY=<browserstack-access-key>
Alternatively, you can also hardcode username and access_key objects in the browserstack.yml file.
Note:
- We have configured a list of test capabilities in the browserstack.yml file. You can certainly update them based on your test requirements.
In this section, we will run only API tests on Browserstack Test Observability. To change test capabilities for this configuration, please refer to the browserstack.yml
file.
-
How to run the test?
To run the default API tests on your own machine, use the following command:
Maven:
mvn clean test -P api-test
To run a specific API test, use the following command with the additional 'test-name' argument:
Maven:
mvn clean test -P api-test -Dtest=GetApi
where, the argument
test
ortest-name
can be any testclass implemented in this repository. -
Output
This run profile executes API tests on BrowserStack's Test Observability. Please refer to your BrowserStack dashboard for test results.
In this section, we will run only Unit tests on Browserstack Test Observability. To change test capabilities for this configuration, please refer to the browserstack.yml
file.
-
How to run the test?
To run the default Unit tests on your own machine, use the following command:
Maven:
mvn clean test -P unit-test
To run a specific Unit test, use the following command with the additional 'test-name' argument:
Maven:
mvn clean test -P unit-test -Dtest=ShoppingCartTest
where, the argument
test
ortest-name
can be any testclass implemented in this repository. -
Output
This run profile executes unit tests on BrowserStack's Test Observability. Please refer to your BrowserStack dashboard for test results.
In this section, we will run the Enitre test suite on Browserstack Test Observability. To change test capabilities for this configuration, please refer to the browserstack.yml
file.
-
How to run the test?
To run the default tests on your own machine, use the following command:
Maven:
mvn clean test -P sample-test
To run a specific test, use the following command with the additional 'test-name' argument:
Maven:
mvn clean test -P sample-test -Dtest=ShoppingCartTest
where, the argument
test
ortest-name
can be any testclass implemented in this repository. -
Output
This run profile executes all tests on BrowserStack's Test Observability. Please refer to your BrowserStack dashboard for test results.
- View your test results on the BrowserStack Observability dashboard