https://github.com/abdelrhman-ellithy/noon-shopping-website-manual-automation
https://github.com/abdelrhman-ellithy/noon-shopping-website-manual-automation
Last synced: 7 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/abdelrhman-ellithy/noon-shopping-website-manual-automation
- Owner: Abdelrhman-Ellithy
- License: mit
- Created: 2024-08-16T13:08:39.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-12-14T09:02:20.000Z (10 months ago)
- Last Synced: 2025-02-09T22:15:48.582Z (8 months ago)
- Language: Java
- Size: 4.09 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Noon-Shopping-Website-Manual-Automation
Demo project using the **Ellithium Framework** for running both BDD and Non-BDD tests with Selenium WebDriver and Cucumber.
## Project Overview
This project demonstrates how to use the **Ellithium Framework** to implement UI tests with a focus on search functionality. The project automates the **Search Feature** and is designed to showcase key features such as:
- Running tests in **BDD Mode** using Cucumber.
- Writing and executing test scenarios using a Page Object Model (POM) design pattern.
- Utilizing utility classes provided by Ellithium for common Selenium actions like assertions, navigating pages, and interacting with web elements.### Key Features:
- **Search Feature Tests**: Automated tests for various search-related scenarios, including filtering, sorting, and validation of results.
- **Configurable Setup**: Choose between BDD and Non-BDD modes in the config file to switch between testing styles.
- **Utilities**: Provided utilities like `DriverActions` and `AssertionExecutor` simplify writing efficient, maintainable tests.
- **Manual Testing**: There are up to 68 manual test cases covering the **Search** and **Checkout** features.## Project Structure
```text
Noon-Shopping-Website-Manual-Automation
├── src
│ ├── main
│ │ ├── java
│ │ │ ├── Pages
│ │ │ │ └── SearchPage.java
│ │ ├── resources
│ │ │ ├── features
│ │ │ │ └── Search.feature
│ │ │ ├── properties
│ │ │ │ ├── default
│ │ │ │ │ └── allure.properties
│ │ │ │ │ └── config.properties
│ │ │ │ │ └── log4j2.properties
│ ├── test
│ │ ├── java
│ │ │ ├── APITests
│ │ │ │ └── MyEndPointTests.java
│ │ │ ├── Base
│ │ │ │ └── BaseStepDefinitions.java
│ │ │ ├── Runner
│ │ │ │ └── TestRunner.java
│ │ │ ├── stepDefinitions
│ │ │ │ └── SearchStepDefinitions.java
│ │ ├── resources
│ │ │ ├── TestData
├── Test-Output
│ ├── Logs
│ │ └── Test.log
│ ├── Reports
│ │ ├── Allure
│ │ │ ├── allure-report
│ │ │ │ └── Ellithium-Test-Report-2024-09-28-5-42-44PM.html
│ │ │ ├── allure-results
│ │ ├── Cucumber
│ │ │ └── cucumber.html
│ │ │ └── cucumber.json
│ ├── ScreenShots
│ │ ├── Failed
│ │ │ └── CHROME-Verify that user can search with partially product name-2024-09-28-5-42-37PM.png
├── .idea
│ └── compiler.xml
│ └── encodings.xml
│ └── jarRepositories.xml
│ └── misc.xml
│ └── uiDesigner.xml
│ └── vcs.xml
│ └── workspace.xml
└── TestNGRunner.xml
└── pom.xml
└── Manual-Test-Cases-.xlsx
└── README.md
```## Configuration
In the `config.properties` file, you can specify whether the tests should run in **BDD Mode** (Cucumber) or **Non-BDD Mode**. The appropriate setup class must be extended depending on the mode:
- **BDD Mode**:
```properties
runMode=BDD
```
Extend from `BDDSetup` in your runner class.- **Non-BDD Mode**:
```properties
runMode=NonBDD
```
Extend from `NonBDDSetup` in your runner class.## Key Classes
### 1. `BaseStepDefinitions.java` (Base Package)
Handles the initialization of the WebDriver through the `DriverFactory` provided by the Ellithium framework.### 2. `TestRunner.java` (Runner Package)
Defines the Cucumber options for running feature files. This class is responsible for running tests in **BDD Mode** by extending `BDDSetup`.### 3. `SearchStepDefinitions.java` (stepDefinitions Package)
Contains the Cucumber step definitions for the search feature. Uses `AssertionExecutor` for test assertions and `SearchPage` for page-specific actions.### 4. `SearchPage.java` (Pages Package)
Handles all interactions with the search page using helper methods from the `DriverActions` utility class.## Example Feature File (BDD Mode)
```gherkin
Feature: SearchBackground:
Given The user is on the homepageScenario: User Search query is Accepted
When they type a search query into the search bar
Then the search query should be accepted and processedScenario: Only Relevant Items Returned in the Results
Given The user has entered a search query
When they click the Search button or press Enter key
Then the search results page should display items matching the search queryScenario: Verify Search result updated according to the applied filter
Given The search results are displayed
When the user applies filters (e.g., brand)
Then the search results should be filtered accordinglyScenario: Verify Search result updated according to the applied sorting method
Given The search results are displayed
When the user chooses to sort the results (e.g., price)
Then the search results should be sorted accordinglyScenario: Verify that the "No Results Found" message is displayed when there are no matching items
Given The user enters a search query
When no items match the search query
Then a "No Results Found" message should be displayedScenario: Verify that user can search with product Company name
Given the user enters Company name in the search field
When they click the Search button or press Enter key
Then company products should be displayedScenario: Verify that user can search with partially typed product name
Given the user enters product name partially in the search field
When they click the Search button or press Enter key
Then products relevant to that name should be displayed
```## Test Results and Reports
- **Screenshots of failed tests**: Saved in `Test-Output/ScreenShots/Failed`.
- **Log files**: Generated in `Test-Output/Logs/Test.log`.
- **Allure Reports**: Generated in `Test-Output/Reports/Allure/allure-report`.## Running Tests
- Ensure all required dependencies are set up in `pom.xml`.
- To run the tests in **BDD Mode**, simply execute the `TestRunner` class located in the `Runner` package.
For reports, you can open:
```ext
├── Test-Output
│ ├── Reports
│ │ ├── Allure
```---