A Selenium UI automation project for the ParaBank banking application using Selenium, C#, NUnit, CSV-based test data, and the Page Object Model (POM).
The project implements genuine data-driven testing using NUnit TestCaseSource and covers registration, account creation, fund transfers, bill payment, transaction search, and contact information updates.
π Project Overview
This project automates end-to-end UI test scenarios for the ParaBank application:
Application: ParaBank URL: https://parabank.parasoft.com/
-
Registration
- Valid registration with unique users
- Duplicate username
- Missing required field
- Password/confirm-password mismatch
-
Open New Account
- Checking account
- Savings account
- Account creation verification
- Account type verification
-
Transfer Funds
- Valid transfers with different amounts
- Insufficient balance where supported
- Zero/negative amount where supported
- Same source and destination account where supported
-
Bill Pay
- Valid bill payment
- Missing/invalid required data
- Account number mismatch
- Invalid amount/phone format where validated by the application
-
Find Transactions
- Available transaction search options
- Valid search scenarios
- No-result scenarios
-
Update Contact Info
- Valid update
- Missing/invalid fields where validated by the application
- C#
- Selenium WebDriver
- NUnit
- NUnit
TestCaseSource - CSV test data
- Page Object Model (POM)
- Visual Studio / Visual Studio Code
- Git & GitHub
The project uses CSV files as external test data sources.
Test data is kept separate from the test logic, and NUnit TestCaseSource is used to provide the CSV data to the test methods.
The general flow is:
CSV Test Data
β
CSV Reader
β
NUnit TestCaseSource
β
Test Method
β
Page Object
β
Selenium WebDriver
β
ParaBank UI
β
Assertions
This allows the same test logic to execute against multiple sets of data without duplicating test methods.
The exact structure may vary depending on the implementation, but the project follows the Page Object Model and separates test data from test logic.
ParaBankDDT/
β
βββ Pages/
β βββ Page Objects
β
βββ Tests/
β βββ NUnit Test Classes
β
βββ TestData/
β βββ CSV Test Data
β
βββ Utilities/
β βββ Test Data / Helper Classes
β
βββ ...
β
βββ README.md
Before running the project, make sure you have the following installed.
Install the appropriate .NET SDK required by the project.
Verify the installation:
dotnet --versionVerify Git:
git --versionYou can run the project using either:
- Visual Studio
- Visual Studio Code
For Visual Studio, make sure the required .NET development/testing workload is installed.
For VS Code, install the C# / C# Dev Kit extensions as appropriate for your installed .NET version.
Open Git Bash or a terminal and run:
git clone https://github.com/MuhammadSaad1223/Data-Driven-Testing-practice.gitMove into the project directory:
cd Data-Driven-Testing-practiceClone the repository using Git:
git clone https://github.com/MuhammadSaad1223/Data-Driven-Testing-practice.gitOpen the cloned project folder in Visual Studio.
If the repository contains a .sln solution file, open the .sln file.
If it contains a .csproj project file, open the project directly.
Visual Studio should automatically restore the required NuGet packages.
You can also restore them from:
Solution β Restore NuGet Packages
Build the solution:
Build β Build Solution
Or use:
Ctrl + Shift + B
Make sure the project builds successfully.
Open:
Test β Test Explorer
The NUnit tests should appear in Test Explorer.
Run all tests using:
Run All
You can also run individual tests or test classes.
Open Git Bash:
git clone https://github.com/MuhammadSaad1223/Data-Driven-Testing-practice.gitThen:
cd Data-Driven-Testing-practiceRun:
code .Or open the cloned folder manually in VS Code.
Install the Microsoft C# tooling/extension required for your .NET setup.
From the VS Code terminal:
dotnet restoredotnet buildMake sure the build completes successfully.
Run:
dotnet testThis will build the test project and execute the NUnit tests.
The tests use CSV files to keep test data separate from the automation logic.
Test data is created automatically when the required CSV file does not already exist.
The CSV data is then consumed through NUnit TestCaseSource.
This allows additional test cases to be added by modifying the test data rather than creating duplicate test methods.
The registration tests require unique usernames for successful registration scenarios.
The project handles unique test users where required so that previously registered users do not interfere with subsequent test executions.
The tests contain meaningful assertions to verify the actual behavior of the ParaBank application.
Assertions cover areas such as:
- Successful registration
- Registration errors
- Account creation
- Correct account type
- Transfer results
- Bill payment results
- Transaction search results
- No-result scenarios
- Contact information updates
- Validation/error messages where supported by the application
The tests do not assume that a validation exists. Validation behavior is based on what the ParaBank application actually returns.
The project follows the Page Object Model pattern.
Page objects are responsible for interacting with the application's UI, while test classes contain the test scenarios, test data, and assertions.
This provides better:
- Maintainability
- Reusability
- Readability
- Separation of concerns
- Scalability
Tests can be executed individually from Visual Studio Test Explorer or through the appropriate NUnit/.NET test commands.
For example:
dotnet testYou can also run a specific test project if the repository contains multiple projects:
dotnet test path/to/TestProject.csproj- The tests require an active internet connection because they interact with the ParaBank website.
- The application is a public practice/demo application, so its behavior may change over time.
- Some negative scenarios are tested only where the current application actually provides the relevant validation.
- Tests that create users or accounts may modify application state.
- Registration tests use unique users where required.
- Do not store real passwords, personal information, or other sensitive credentials in the CSV test-data files.
Clone Repository
β
Open in Visual Studio / VS Code
β
Restore Dependencies
β
Build Project
β
CSV Test Data
β
NUnit TestCaseSource
β
Test Method
β
Page Object Model
β
Selenium WebDriver
β
ParaBank
β
Assertions
β
Test Result