An enterprise-grade, fully orchestrated QA/QC automation framework designed for a high-availability Forex trading application.
This repository serves as a technical portfolio piece demonstrating architectural thinking, risk-based testing, and cross-platform automation orchestration designed to meet stringent European and US Fintech compliance standards.
Amir Mohammad Shahsavarani
Senior SDET | Automation Architect
- 📧 Email: amirmohammadshi@gmail.com
- 📱 Phone: (+98) 919 207 2689
- 💼 LinkedIn: amir-shahsavarani
- 🐙 GitHub: NPS-Dive
Professional Summary:
I am a Senior SDET with 9 years in software engineering, combining full-stack development experience with deep test automation expertise. I design scalable test frameworks across UI, API, and database layers, write maintainable test code, and integrate automation into CI/CD pipelines. This project showcases my ability to orchestrate complex infrastructures and bridge the gap between business risk and technical execution. I am actively seeking relocation opportunities (Europe, US, Australia, New Zealand) to lead QA teams and drive software quality at the executive level.
To demonstrate polyglot proficiency and use the best tool for each layer, this project implements a multi-language stack:
| Layer | Technology / Language | Purpose |
|---|---|---|
| Control Center | C# / ASP.NET Core | Central UI/Orchestrator to run test suites separately or in parallel. Handles JSON/CSV logbook mutation. |
| Web E2E | TypeScript + Playwright | BDD (Cucumber/Gherkin) driven UI tests for Forex trading interfaces. |
| Mobile E2E | Python + Appium + Behave | BDD automated testing for Android/iOS Forex applications. |
| API & Perf | TypeScript/JS + k6 | Functional, Load, Stress, Spike, and Concurrency testing for backend trade execution. |
| Reporting | Grafana, InfluxDB, Allure | Visual metrics dashboarding (Auto-provisioned) and detailed E2E step reporting. |
├── docs/ # Risk assessments, triage rules, TestRail mappings
├── grafana/ # Auto-provisioned Grafana dashboards & datasources for immediate visualization
├── qa-control-center/ # ASP.NET Core MVC Orchestrator UI
├── results/ # Immutable JSON/CSV logbooks for historical test runs
├── tests/
│ ├── api_k6/ # Functional, Load, Stress, Spike, Concurrency scripts
│ ├── mobile_appium/ # Python/Behave BDD mobile tests
│ └── web_playwright/ # TypeScript/Cucumber BDD UI tests
├── docker-compose.yml # InfluxDB and Grafana infrastructure setup
└── README.md
The automation framework validates an imaginary high-stakes Forex trading platform based on strict business rules:
- Authentication & Security: Secure login and session management.
- Wallet Management: Paying and receiving funds securely.
-
Trade Execution Constraint: Trade requests are inherently rejected if
$$Wallet_Balance < Trade_Price$$ . - Concurrency & Race Conditions: Ensuring parallel trade requests do not bypass wallet constraints (tested via k6 concurrency).
- Audit Logging: Every transaction is logged and queryable by currency pair.
Our API performance tests apply standard queuing theory and risk calculations.
Risk is quantified dynamically using:
For Spike and Stress tests, we measure system throughput:
Service Level Agreements (SLAs) enforced by the pipeline:
- API Functional Errors
$$= 0%$$ - P95 Response Time under Load
$$\le 2000$$ ms.
For detailed documentation, refer to the /docs directory:
01_Risk_Assessment.md02_Triage_Rules.md03_TestRail_Mappings.csv
To capture real-time telemetry from k6, spin up the Docker containers. The Grafana dashboards and InfluxDB data sources are auto-provisioned—no manual setup required. bash docker-compose up -d
- Grafana UI:
http://localhost:3000(Login disabled, direct Admin access) - InfluxDB:
http://localhost:8086
bash
cd qa-control-center
dotnet build
dotnet run
The ASP.NET Core dashboard will automatically open in your default browser at http://localhost:5187.
From the Control Center UI, you can click to run:
- Web Playwright Tests
- Mobile Appium Tests
- API k6 Suites (Functional, Load, Stress, Spike, Concurrency)
- Real-time API Metrics: Open the "Forex k6 Performance" dashboard in Grafana.
- Immutable Logbook: Every test execution appends its results to the local data stores:
results/test_logbook.csvresults/test_logbook.json
MIT License - Copyright (c) 2026 Amir Mohammad Shahsavarani
Go to your repository on GitHub. On the main page, look at the top right of the file list and click the ⚙️ (gear icon) next to "About".
Description:
Enterprise QA Automation Orchestrator for a Forex platform. Built by a Senior SDET showcasing C# ASP.NET Core, Playwright, Appium, k6, and auto-provisioned Grafana dashboards.
Topics / Tags:
Type these into the "Topics" field and press Enter after each:
sdet, qa-automation, csharp, aspnetcore, playwright, appium, k6, grafana, bdd, test-orchestration
Open your terminal (PowerShell, Bash, or Command Prompt) in the root of your project folder and run the following commands to send all your new files to GitHub:
# Add all new and modified files (README, docker-compose, grafana folder, MVC changes)
git add .
# Commit the changes with a clear message
git commit -m "feat: add grafana provisioning, finalize UI orchestrator, and update documentation"
# Push to your main branch (replace 'main' with 'master' if your default branch is master)
git push origin main