Simba is Java based clean code playwright automation framework architected using several useful design patterns.
Dependency | Version | Feature |
Playwright | 1.28.0 | End to End Automation - Browser & API |
TestNG | 7.4.0 | The Test Runner to execute suite |
JSON | 20220924 | Create & Parse JSON Files for API |
Apache POI | 5.2.3 | Read Excel files for test data |
Data Faker | 1.6.0 | Create runtime fake test data |
Owner | 1.0.12 | Minimize the properties file code |
Extent Reports | 3.1.5 | The HTML reporting library |
- Factory Pattern is used to reuse existing browser contexts instead of rebuilding them each time.
- Bridge pattern is used to switch implementations between UI and API at runtime.
- Decorator pattern is used to assign extra behaviors like highlight, retry .. to pages & elements at runtime without breaking the code that uses these objects.
- Chain of Responsibility pattern is used to navigate from a pattern/page to other.
- Observer pattern is used to switch to different data, browser on failure when retried.
- Step 1: Use the main source for the framework desaign.
- Step 2: Refer the test source for the sample test code (Salesforce).
- Step 3: Create your own app instance url and update the config.
- Step 4: Build your pages like the sample using the right method and locator.
- Step 5: Use the test data in your tests from faker or API or excel.
- Step 6: Build your tests using the pages
- Step 7: Once ready, run in the debug mode and look at the logs for details
✅ Single framework for both UI 🧭 and API Automation
- Single framework designed using bridge pattern to allow conversation between UI and API simultaneously.
- You can create data using API and use that data to your UI tests to make your tests independent.
- Your UI tests can execute the test and as part of the assertions, it make sense to validate using API.
✅ Fastest test execution 🚀 with configurable speed control
- Playwright engine is comparatively (above 30% on average) faster than other UI automation frameworks.
- Sometimes it requires a slow down to eliminate the script flakiness with configurable speed included through the listeners.
// Sample code to control your delays
setSlowMo(ConfigurationManager.configuration().slowMotion());
✅ Debug Faster with Snaps, Videos 🎥 and Tracings with configurable options
- Playwright library provides full/partial snaps, videos (webm) and trace viewer that captures network calls.
- Our framework allows configuration for framework user to either plugin on demand for every run or failures.
// Sample code to control your delays
setRecordVideoDir(Paths.get(folderName));
✅ Automated logins 💡 to avoid too many login tests
- Configurable automated logins can avoid unnecessary login tests through storing the state of the user.
- The user can either use the existing login storage or decide to login automated through configuration.
# Auto Login
auto.login = true
✅ Automated retries 🔁 with different browser and/or data
- Configurable retries with different data using the TestNG listener upon failure of the earlier data.
- Configurable retries with different browser using the TestNG listener upon failure of earlier browser.
# Retry Switch
retry.data.switch = true
retry.browser.switch = false
✅ Automated test data generation/selection for your CRUD operations
- Java Faker is used to generate random test data for most of your CREATE requests.
- You can also use ENUM for the master data obtained using the API requests from server.
- For all idempotent requests, the framework allows you to read data using API, Excel.
- Step 01: You run your designed testng xml with listeners.
- Step 02: The testng annotations (@Before) initialize the setup.
- Step 03: The playwright script invokes the browser and actions.
- Step 04: Simulatenously, the reporting engine captures the result.
- Step 05: Upon success completion, the videos, reports are published.
- Step 06: Upon failure, the testng retry is invoked with different data/browser.
- Step 07: Step 02 - 06 continues until success or max retries.
- Step 08: Look at the results folder for html results.
- Step 09: Look at the videos for the exact details.
- Step 10: Share the traceviewer results to your developer through defect log.
- Single framework to switch from Playwright to Selenium or vice versa.
- Defect Management tools integration LIKE Jira and users choice.
The project is MIT licensed.