Ellithium is a Unified powerful, flexible Test Automation Framework for Web, Mobile, API, DB Testing, designed to streamline and enhance the testing process. it provides an end-to-end solution for automated testing. With support for BDD, cross-browser testing,
JavaApache-2.0
🌀 Ellithium
🌀 Enhanced Test Automation Framework for Testing WEb, Mobile, API, SQL and NoSQL DBs🚀
Ellithium is a Unified powerful, flexible, and scalable test automation framework designed to streamline and enhance the testing process. Leveraging tools such as TestNG, Cucumber, Rest Assured, and others, it provides an end-to-end solution for automated testing. With support for BDD, cross-browser testing, parallel execution, headless testing, and detailed Allure reporting, Ellithium aims to make your test automation faster, more reliable, and easier to maintain.
👨💻 Supported Testing PlatForms
Web
Mobile
API
DB
✅
✅
✅
✅
🚀 Supported DB Types with Caching Mechanisms 🚀
Mongo
Couchebase
Redis
MY_SQL
SQL_SERVER
ORACLE
IBM_DB2
POSTGRES_SQL
SQLITE
✅
✅
✅
✅
✅
✅
✅
✅
✅
🚀 Key Features
BDD Support
Parallel Execution
Cross-Browser Testing
Headless Testing
Logging
Screenshots Attaching
User Stories Linking
Reporting
Command line Executor Interface
✅
✅
✅
✅
✅
✅
✅
✅
✅
Allure Reporting: Generate rich, interactive test reports with Allure, including test history and trend analysis.
Modular Design: A well-structured and modular framework promoting code reuse and easy maintenance.
Executing OS Commands: Execute system commands via the built-in Command Executor Interface.
API Testing: Full support for API testing with Rest Assured for RESTful services.
Database Testing: Extends coverage to both SQL and NoSQL databases, including MySQL, SQL Server, PostgreSQL, Oracle, IBM DB2, SQLite, Couchbase, MongoDB, and Redis, enabling comprehensive backend testing.
Mobile Testing: Test native, hybrid, and mobile apps on Android and IOS, with Appium integration and support for real devices and emulators.
Test Data Generation: Dynamically generate test data using Java Faker for realistic names, emails, addresses, and more.
CI/CD Integration: Seamless integration with popular CI/CD tools such as Jenkins, GitHub Actions, and GitLab.
Exception Handling: Robust mechanisms for capturing exceptions during test execution.
Synchronization Handling
CI/CD integration
Test Data Generation
✅
✅
✅
👨💻 Supported OS for OS Command Executor Interface
Windows
Mac
Linux
Android
IOS
✅
✅
✅
✅
✅
📄 Supported File Formats for Reading and Writing
Ellithium supports reading and writing data from various file formats, including:
JSON
CSV
Excel
Properties
Jar
PDF
Text
✅
✅
✅
✅
✅
✅
✅
👨💻 Developed using:
🦸 Powered by:
Prerequisites
Ensure you have the following installed:
Java Development Kit (JDK): Version 17 or above (21 preferred)
Maven: 3.8.1 or higher
🏁 Getting Started
Follow these steps to set up a new Maven project with Ellithium:
Here is the updated Getting Started section formatted for your README file:
Step 1: Create a New Maven Project
Create a new Maven project using your preferred IDE (e.g., IntelliJ IDEA).
Step 2: Update the pom.xml
Add the following configuration to your pom.xml to set the Java version, include the required dependencies, and configure the plugins.
Step 3: Open the Termenal in the Project directory then run this command
mvn clean test
Step 4: Select The Running Mode # BDD, NonBDD
you find a new config file created here src/main/resources/properties/config.properties at your project
BDD Mode (for running with Cucumber):
runMode=BDD
Non-BDD Mode (for running without Cucumber):
runMode=NonBDD
Option 1: BDD Mode
Demo-Project for setup use after follow the following steps
Step 1: Create a Test Runner Class
Create a Runner Package then create a new class named TestRunner that extends the BDDSetup class from Ellithium.
Specify the paths for your feature files and step definitions using the @CucumberOptions.
packageRunner;
importEllithium.core.base.BDDSetup;
importio.cucumber.testng.CucumberOptions;
@CucumberOptions(
glue = "stepDefinitions", // path to your stepDefinitions package, note you should use . instead of /features = "src/main/resources/features"// path to your features folder
, tags = "@Run"
)
publicclassTestRunnerextendsBDDSetup {
}
Step 2: To Create a BaseStepDefinitions Class.
Create a BaseStepDefinitions class that will be used to extend the other StepDefinitions Classes from it.
packageBase;
importEllithium.core.driver.DriverFactory;
importorg.openqa.selenium.WebDriver;
publicclassBaseStepDefinitions {
protectedWebDriverdriver;
protectedAndroidDriverandroidDriver;
protectedIOSDriveriosDriver;
publicBaseStepDefinitions() {
// for Webdriver= DriverFactory.getNewDriver(DriverType.Chrome, HeadlessMode.False, PrivateMode.True, PageLoadStrategyMode.Normal,WebSecurityMode.SecureMode,SandboxMode.Sandbox);
// for Android MobileandroidDriver= DriverFactory.getNewDriver(DriverType.Android,newURL("http://0.0.0.0:4723"),options);
// for IOS MobileiosDriver=DriverFactory.getNewDriver(DriverType.IOS,newURL("http://0.0.0.0:4723"),options);
// for DB SQL Provider [MY_SQL, SQL_SERVER, POSTGRES_SQL, ORACLE_SID, ORACLE_SERVICE_NAME, IBM_DB2]SQLDatabaseProviderdb=newSQLDatabaseProvider(
SQLDBType.MY_SQL,
username,
password,
serverIp,
port,
dbName);
}
// for DB SQL Provider [SQLite]SQLDatabaseProviderSQLitedb= SQLDatabaseProvider( SQLDBType.SQLITE, pathToSQLiteDataBase);
// for NoSQL DB ProviderCouchbaseDatabaseProvidercouchDB=CouchbaseDatabaseProvider(connectionString, username, password, bucketName);
MongoDatabaseProvidermongoDB=MongoDatabaseProvider(StringconnectionString, StringdbName);
RedisDatabaseProviderredisDB=RedisDatabaseProvider(StringconnectionString);
}
}
The default values for WebDriver if you didn't pass all the paramaters are:
@default("false") StringHeadlessMode, // can be true or false (Not Supported with Safari)@default("Normal") StringPageLoadStrategy, // can be Normal or Eager@default("True") StringPrivateMode, // can be true or false@default("Sandbox") StringSandboxMode, // can be Sandbox or NoSandbox (Not Supported with Safari)@default("True") StringWebSecurityMode// can be True or False (Not Supported with Safari)
Option 2: NonBDD Mode
Demo-Project for setup use after follow the following steps
Step 1: Create a BaseTest Class
Create a Tests Package then create a new class named BaseTest that extends the NonBDDSetup class from Ellithium.
packageTests;
importEllithium.core.driver.DriverFactory;
importEllithium.core.base.NonBDDSetup;
importorg.openqa.selenium.WebDriver;
importorg.testng.annotations.*;
publicclassBaseTestsextendsNonBDDSetup {
WebDriverdriver;
// with Web and the Same Logic for Other@BeforeClasspublicvoidSetup() {
driver= DriverFactory.getNewDriver(DriverType.Chrome, HeadlessMode.False, PrivateMode.True, PageLoadStrategyMode.Normal,WebSecurityMode.SecureMode,SandboxMode.Sandbox);
}
@AfterClasspublicvoidtareDown() {
DriverFactory.quitDriver();
}
}
Complete your logic as you like here after that
this class will be used to extend the other classes from it
as here in step 2
Step 2: Create a another Test Class and extend from the BaseTests class