![]() |
VOOZH | about |
Ocaramba is a cross-platform C# test automation framework built on top of Selenium WebDriver. It is designed to provide a standardized, robust architecture for web and mobile UI testing, supporting .NET 8.0 across Windows, Linux, and macOS README.md5-22
The framework emphasizes the Page Object Pattern, maintainability through a layered architecture, and extensive support for various test runners (NUnit, MSTest, xUnit) and execution environments (Docker, Selenium Grid, Cloud Providers) README.md21-35
Ocaramba is split into two primary NuGet packages to allow developers to choose the level of dependency management they require:
OcarambaLite and includes bundled Selenium drivers like ChromeDriver and GeckoDriver for out-of-the-box local execution Ocaramba/Ocaramba.csproj36-55The following diagram illustrates how the core libraries relate to the external Selenium ecosystem and the test projects.
Diagram: System Component Hierarchy
Sources: Ocaramba/Ocaramba.csproj31-55 OcarambaLite/OcarambaLite.csproj29-34 Ocaramba/packages.lock.json5-155
Ocaramba supports a wide array of browsers and platforms through its BrowserType enumeration OcarambaLite/BrowserType.cs28-99:
| Category | Supported Entities |
|---|---|
| Desktop Browsers | Chrome, Firefox, Edge (Chromium), Safari, Internet Explorer README.md30 OcarambaLite/BrowserType.cs33-68 |
| Mobile Platforms | Android and iOS via Appium README.md23 OcarambaLite/BrowserType.cs93 |
| Cloud Providers | BrowserStack, SauceLabs, TestingBot README.md35 OcarambaLite/BrowserType.cs73-98 |
| Specialized Apps | AngularJS (via SynchronizeWithAngular) README.md45 |
This diagram bridges the configuration space (Natural Language/Settings) to the code entities responsible for execution.
Diagram: Configuration to Code Mapping
Sources: OcarambaLite/BrowserType.cs28-99 README.md41 OcarambaLite/OcarambaLite.csproj31-43
DriverContext, which manages the lifecycle of the WebDriver instance, including screenshots on failure and JavaScript error logging README.md41-46JavaScriptClick, WaitForAjax, and GetElement (which replaces FindElement with built-in robust waiting) README.md32-33Verify class allows for "soft assertions," enabling tests to continue after a failure to collect multiple errors before failing the test run README.md37PerformanceHelper measures average and 90th percentile action times, reporting them to CI tools like TeamCity README.md38For detailed technical documentation on specific areas of the framework, refer to the following pages:
appsettings.json configuration file.Ocaramba.sln: OcarambaLite (core), Ocaramba (full), test runner projects (NUnit, MsTest, Xunit, Features), PageObjects, Appium, BrowserStack, NUnitExtentReports, and legacy Objectivity.* projects. Covers the dependency hierarchy and why the split exists.Sources: