This project utilizes a 'smart' automation infrastructure for multi-platform quality assurance automated testing to demonstrate my knowledge & capabilities in QA Automation.
This project is built to serve as an automation infrastructure with a TestNG framework and a Page-Object-Model for testing applications on multiple platforms. The infrastructure provides an easy, simple and quick way to add new tests, and is easily expandable & maintained.
Jenkins is used to schedule executions of the Test Suites profiles for each platform (more profiles can be easily added to create different test scenarios) linked into a pipeline.
Allure Report system is used as the main reporting system.
This project performs automated testing of various applications:
- Web based application
- Web API
- Mobile application
- Electron application
- Desktop application
- Layers (utilities, extensions, workflows...)
- Page object model design pattern
- External files Support
- Failure mechanisms
- Electron driver
- Reporting system (including video recordings & screenshots)
- Support for different client browsers
- API support
- Visual testing
- Database support
- CI & CD support
- Grafana - Web based application tested with WebDriver
- Grafana API - Web API tested with REST Assuard
- UK Mortgage Calculator - Mobile application tested with Appium
- TodoList Desktop application tested with ElectronDriver
- Windows Calculator - Desktop application tested with WinAppDriver
- TestNG Framework
- Listenrs interface for Logs & Customizable TestNG Reports
- Monte Screen Recorder for Video Recordings
- Selenium Java & API
- REST Assured for API Testing
- SikuliX API for Visual Testing
- Appium Studio & Java-Appium for Mobile Testing
- MySQL Database to store Login Credentials
- OpenCSV for CSV file parsing
- Jenkins for Automating Test executions & Test Pipelines
- Allure Reports - Reporting System
Please note: Configuration file & DB credentials have been redacted.
Grafana: Web & API Testing with Selenium WebDriver - Grafana Web Tests Video
Verify login was successful
Verify expected amount of current users
WebFlows.addNewUser("John Doe", "JD@localhost", "JDTester", "123abc999");
Verify this image: is located on screen by looking at pixels' colors
Web - Check if a user is found - Data Driven Testing using a data provider for multiple users & expected results
WebFlows.searchAndVerifyUser(username, shouldBeFound);
API - Verify HTTP response property (GET), Add new Team (POST), Update property (PUT), Delete Team by team ID (DELETE)
ApiFlows.getTeamProperty("teams[0].name"), "Kuku Group");
ApiFlows.postTeam("YoniTeam", "yoni@team.com");
ApiFlows.updateTeam("YoniTeam", "yoni@atid.com", id);
ApiFlows.deleteTeam(id);
Add new Todo items, mark item as completed, delete an item, add new items with a color tag, mark all as completed
ElectronFlows.createTodo("Learn Quality Assurance");
ElectronFlows.createTodo("Learn Automation");
ElectronFlows.completeTodoByName("Learn Quality Assurance");
ElectronFlows.deleteTodoByName("Learn Quality Assurance");
ElectronFlows.createTodoWithColorTag("I have a green color tag", "background: rgb(114, 204, 87);");
ElectronFlows.createTodoWithColorTag("Learn Electron Driver", "background: rgb(87, 185, 244);");
ElectronFlows.completeAllTodos();
Each operation is defined separately, allowing combinations for complex calculations & QA for smaller 'units'.
DesktopFlows.division(calcMain.btn_8, calcMain.btn_0);
The button assignment allows multiple operations to be implemented in the code using only 1 line of code & 1 String as an input
DesktopFlows.enterEquation("1+2*(3^4)=%14=!l=/p=");
In this example, the symbols: '^' was assigned to the Power button, '%' was assigned to the mod button, '!' was assigned to the Factorial button, 'l' was assigned to the log button, 'p' was assigned to the Pi button. The common chars were assigned respectively.
The reports show the 'steps' in each test, with info such as: description, duration, history, parameters & values, verification values, screenshots and more.