VOOZH about

URL: https://deepwiki.com/Accenture/Ocaramba/1.2-solution-structure-and-project-layout

⇱ Solution Structure and Project Layout | Accenture/Ocaramba | DeepWiki


Loading...
Last indexed: 6 June 2026 (fb3580)
Menu

Solution Structure and Project Layout

This page provides a detailed technical overview of the Ocaramba.sln solution structure. It explains the purpose of every project, the dependency hierarchy, and the architectural reasoning behind the separation of the core framework from the test implementation layers.

Architectural Overview

Ocaramba is structured as a multi-layered framework designed to support various test runners and platforms while maintaining a single, reusable core. The solution is divided into three primary categories:

  1. Core Framework Libraries: OcarambaLite and Ocaramba.
  2. Support Projects: Ocaramba.Tests.PageObjects and unit testing for the framework itself.
  3. Test Implementation Projects: Runner-specific integrations (NUnit, MsTest, Xunit, SpecFlow) and platform-specific samples (Appium, Angular, Cloud).

Dependency Hierarchy

The following diagram illustrates how projects relate to one another. OcarambaLite serves as the foundational root for all automation logic.

Diagram: Dependency Flow and Project Relationships


Sources: Ocaramba/Ocaramba.csproj:55-56(), Ocaramba.Tests.NUnit/Ocaramba.Tests.NUnit.csproj:36-38(), Ocaramba.UnitTests/Ocaramba.UnitTests.csproj:30-33(), Ocaramba.sln:21-56().


Core Framework Projects

OcarambaLite

OcarambaLite is the foundational engine. It contains essential logic for WebDriver management, configuration reading, and low-level element interactions. It is intentionally kept "light" by excluding specific browser driver executables (like chromedriver.exe) from its direct dependencies, allowing users to manage their own driver lifecycle and versions.

Ocaramba (Full)

The Ocaramba project is a comprehensive package built on top of OcarambaLite. It includes the core engine and adds pre-packaged Selenium drivers and additional third-party integrations for database and environment management.

Sources: OcarambaLite/OcarambaLite.csproj:1-62(), Ocaramba/Ocaramba.csproj:1-66().


Test Runner and Integration Projects

Ocaramba provides reference implementations for major .NET test runners, demonstrating how to bridge the framework with specific runner lifecycles.

ProjectRunner / PurposeKey Features
Ocaramba.Tests.NUnitNUnit 4Primary suite; includes Data-Driven Testing (DDT) with Excel (NPOI), CSV, and XML Ocaramba.Tests.NUnit/Ocaramba.Tests.NUnit.csproj12-56
Ocaramba.Tests.MsTestMSTestDemonstrates .runsettings and .testsettings integration alongside DDT.csv/DDT.xml Ocaramba.Tests.MsTest/Ocaramba.Tests.MsTest.csproj14-50
Ocaramba.Tests.XunitxUnitImplements the xUnit runner integration for the framework Ocaramba.Tests.Xunit/Ocaramba.Tests.Xunit.csproj18-21
Ocaramba.Tests.NUnitExtentReportsNUnit + ExtentSpecialized project for generating HTML dashboards via ExtentReports Ocaramba.sln51

Sources: Ocaramba.Tests.NUnit/Ocaramba.Tests.NUnit.csproj(), Ocaramba.Tests.MsTest/Ocaramba.Tests.MsTest.csproj(), Ocaramba.Tests.Xunit/Ocaramba.Tests.Xunit.csproj().


Specialized Implementation Projects

Ocaramba.Tests.PageObjects

This project is a shared library containing the Page Object Model (POM) classes. By separating Page Objects into their own project, they can be reused across different test runners without code duplication. It references OcarambaLite to access core element location logic Ocaramba.Tests.PageObjects/packages.lock.json44-58

Ocaramba.Tests.BrowserStack

A dedicated project for executing tests on the BrowserStack cloud platform.

  • Key Dependencies: Uses NLog and Selenium.Support for remote execution management Ocaramba.sln35

Ocaramba.Tests.Appium

Focuses on mobile automation. It configures the DriverContext to initialize mobile-specific drivers, utilizing the Appium.WebDriver dependency defined in the core layer OcarambaLite/OcarambaLite.csproj29

Ocaramba.Tests.Angular

Provides extensions for testing Angular-based applications, specifically focusing on synchronization with the Angular NgZone to prevent flaky tests Ocaramba.sln26

Sources: Ocaramba.Tests.PageObjects/packages.lock.json(), Ocaramba.sln:21-56().


Mapping Code Entities to System Roles

The following diagrams map specific code entities to their functional roles within the solution structure.

Diagram: Core Initialization and Configuration


Sources: OcarambaLite/OcarambaLite.csproj:42-43(), Ocaramba/Ocaramba.csproj:46-47().

Diagram: Documentation and Reporting


Sources: Ocaramba.Documentation/Ocaramba.Documentation.shfbproj:36-40(), Ocaramba.Documentation/Selenium.shfbproj:24-26().


Legacy and Unit Testing Projects

Legacy: Objectivity.*

The solution structure acknowledges its history through compatibility with legacy Objectivity.Test.Automation.* naming conventions. While the core projects have been rebranded to Ocaramba, the internal logic maintains structural continuity.

Ocaramba.UnitTests

This project contains unit tests for the framework's internal components.

Sources: Ocaramba.UnitTests/Ocaramba.UnitTests.csproj().