Skip to content

About

A browser-based test automation solution utilizing Reqnroll (BDD) and Selenium WebDriver, driven by the MSTest framework and structured around the Page Object Model (POM) architectural pattern.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Reqnroll Automation Framework

A browser-based test automation solution utilizing Reqnroll (BDD) and Selenium WebDriver, driven by the MSTest framework and structured around the Page Object Model (POM) architectural pattern.

Reqnroll Automation Reqnroll Automation Core Build Security Scan

Features

  • BDD-driven testing powered by Reqnroll and Gherkin syntax for clear human-readable scenario specification.
  • Cross-browser testing supporting Chrome and Edge in both headed and headless modes.
  • Parallel execution capability using custom MSTest .runsettings configurations for accelerated pipeline feedback.
  • CI/CD integrated via GitHub Actions with automated artifact uploading, rerun handling, and custom NuGet authentication.

Architecture Overview

ReqnrollAutomation
├──  .github
│   └──  workflows
│       ├──  reqnroll-automation-core.yml
│       └──  reqnroll-automation.yml
├──  ReqnrollAutomation
│   ├──  Config
│   │   ├──  config.json
│   │   ├──  ConfigAdapter.cs
│   │   └──  ConfigManager.cs
│   ├──  Drivers
│   │   └──  DriverFactory.cs
│   ├──  Features
│   │   ├──  CarfaxCanadaWebsite
│   │   │   ├──  AccessibilityVerification.feature
│   │   │   ├──  FooterComponentVerification.feature
│   │   │   └── ...
│   │   └─  SwagLabs
│   │       ├──  UserAuthenticationVerification.feature
│   │       └── ...
│   ├──  Helpers
│   │   └──  CredentialManager.cs
│   ├──  Hooks
│   │   └──  TestHooks.cs
│   ├──  Models
│   │   └──  SwagLabsCredentials.cs
│   ├──  Pages
│   │   ├──  CarfaxCanadaWebsite
│   │   │   ├──  HomePage.cs
│   │   │   └── ...
│   │   ├──  SwagLabs
│   │   │   ├──  InventoryPage.cs
│   │   │   ├──  LoginPage.cs
│   │   │   └── ...
│   │   └──  BasePage.cs
│   ├──  StepDefinitions
│   │   ├──  CarfaxCanadaWebsite
│   │   │   ├──  CarfaxCanadaBaseStepDefinitions.cs
│   │   │   ├──  AccessibilityStepDefinitions.cs
│   │   │   ├──  FooterComponentStepDefinitions.cs
│   │   │   └── ...
│   │   ├──  SwagLabs
│   │   │   ├──  SwagLabsBaseStepDefinitions.cs
│   │   │   ├──  UserAuthenticationStepDefinitions.cs
│   │   │   └── ...
│   │   └──  BaseStepDefinitions.cs
│   ├──  GlobalUsings.cs
│   ├──  credentials.json
│   ├──  reqnroll.json
│   └──  ReqnrollAutomation.csproj
├──  ReqnrollAutomation.Core
│   ├──  Config
│   │   ├──  ConfigProvider.cs
│   │   └──  IConfigAdapter.cs
│   ├──  Extensions
│   │   ├──  ReqnrollContextExtensions.cs
│   │   ├──  WebDriverExtensions.cs
│   │   └──  WebElementExtensions.cs
│   └──  Helpers
│       ├──  ExtentReportPatcher.cs
│       ├──  LogMessageFormatter.cs
│       ├──  PathHelper.cs
│       └──  ReportManager.cs
├──  TestResults
│   ├──  CarfaxCanadaWebsite
│   │   ├──  2026-08-01_135952
│   │   │   ├──  Reports
│   │   │   │   └──  ExtentReport.html
│   │   │   └──  Screenshots
│   │   │       ├──  PASSED_Accessibility_toggle_enables_theme_contrast_140001_8.png
│   │   │       └── ...
│   │   └── ...
│   └──  SwagLabs
│       └── ...
├──  nuget.config
├──  parallel.runsettings
├──  sequential.runsettings
└──  ReqnrollAutomation.slnx

Prerequisites

  1. .NET 10 SDK installed.
  2. Supported Web Browsers installed:
    • Google Chrome
    • Microsoft Edge
  3. Visual Studio 2026 set up (with Reqnroll for Visual Studio 2022 and 2026 extension configured).

Parallel Execution

The framework leverages MSTest .runsettings configurations to enforce an isolated multi-worker execution strategy, maximizing test throughput while preserving scenario independence.

Browser Session Pooling

To eliminate process initialization overhead, the test suite instantiates a persistent pool of 4 browser instances at execution start-up:

  • Worker Allocation: Provisions 4 parallel threads, assigning a dedicated WebDriver instance to each worker.
  • Session Lifecycle: Maintains active browser processes across sequential scenarios within the same execution thread.
  • State Sanitation: Clears cookies, cache, and browser storage via scenario lifecycle hooks to ensure full test isolation.

Execution Modes

Mode Command Scope
Sequential dotnet test --settings sequential.runsettings Single-threaded execution for local debugging.
Parallel dotnet test --settings parallel.runsettings Multi-threaded execution across 4 concurrent worker instances.

Tip

Worker thread capacity can be adjusted by modifying the <Workers>4</Workers> node within the <Parallelize> element in parallel.runsettings.

About

A browser-based test automation solution utilizing Reqnroll (BDD) and Selenium WebDriver, driven by the MSTest framework and structured around the Page Object Model (POM) architectural pattern.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages