Skip to content

VladimirRamirez07/qa-multipurpose-framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

24 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ§ͺ QA Multipurpose Framework

Enterprise-grade test automation ecosystem covering Web, API and Mobile from a single repository, applying SOLID principles and clean architecture.

TypeScript Playwright Appium Allure BrowserStack CI/CD License LinkedIn CI/CD Status


πŸ“‹ Table of Contents


🎯 Overview

This framework demonstrates how a single repository can serve as the backbone for an entire QA organization. It provides a unified, scalable, and maintainable test automation solution across four testing layers:

Layer Tool Coverage
🌐 Web Playwright + POM UI regression, cross-browser, visual
πŸ”Œ API Playwright APIRequestContext REST, schema validation, contract
πŸ“± Mobile Appium 3.x + UiAutomator2 Android native apps on real emulators
πŸ”„ E2E Playwright + WebdriverIO Cross-layer end-to-end flows
☁️ Cloud BrowserStack Real devices & browsers at scale

πŸ›οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              TEST SUITES LAYER                  β”‚
β”‚  Web Tests β”‚ API Tests β”‚ Mobile Tests β”‚ E2E     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚              PAGE OBJECT MODEL                  β”‚
β”‚  Pages β”‚ Components β”‚ Screens β”‚ API Clients     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚              CORE FRAMEWORK                     β”‚
β”‚  Base Classes β”‚ DI Container β”‚ Interfaces       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚              SHARED UTILITIES                   β”‚
β”‚   Helpers β”‚ Constants β”‚ Types β”‚ Data Factories  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚              CONFIG LAYER                       β”‚
β”‚    Dev β”‚ QA β”‚ Staging β”‚ BrowserStack            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Tech Stack

Category Technology Purpose
Language TypeScript 5.x Type-safe test development
Web Testing Playwright 1.60 Cross-browser automation
Mobile Testing Appium 3.4.2 + UiAutomator2 Android automation
Mobile Client WebdriverIO Appium session management
Reporting Allure Reports Visual test reporting
Cloud Testing BrowserStack Real device testing
Data Generation Custom Factories Dynamic test data
CI/CD GitHub Actions Automated pipelines
Pattern Page/Screen Object Model Maintainable test structure
Architecture SOLID Principles Scalable framework design

πŸ“ Project Structure

qa-multipurpose-framework/
β”œβ”€β”€ πŸ“ src/
β”‚   β”œβ”€β”€ πŸ“ web/
β”‚   β”‚   β”œβ”€β”€ pages/          # Page Object classes
β”‚   β”‚   β”œβ”€β”€ components/     # Reusable UI components
β”‚   β”‚   └── fixtures/       # Web test fixtures
β”‚   β”œβ”€β”€ πŸ“ api/
β”‚   β”‚   β”œβ”€β”€ clients/        # API client classes
β”‚   β”‚   β”œβ”€β”€ schemas/        # JSON schema validators
β”‚   β”‚   └── interceptors/   # Request/response interceptors
β”‚   β”œβ”€β”€ πŸ“ mobile/
β”‚   β”‚   β”œβ”€β”€ screens/        # Screen Object classes
β”‚   β”‚   β”œβ”€β”€ gestures/       # Mobile gesture helpers
β”‚   β”‚   └── fixtures/       # Mobile test fixtures
β”‚   β”œβ”€β”€ πŸ“ core/
β”‚   β”‚   β”œβ”€β”€ base/           # Base test classes
β”‚   β”‚   β”œβ”€β”€ di/             # Dependency injection
β”‚   β”‚   └── interfaces/     # TypeScript interfaces
β”‚   └── πŸ“ shared/
β”‚       β”œβ”€β”€ utils/          # Data factories
β”‚       β”œβ”€β”€ helpers/        # Utility functions
β”‚       β”œβ”€β”€ constants/      # Global constants
β”‚       └── types/          # Shared TypeScript types
β”œβ”€β”€ πŸ“ config/
β”‚   β”œβ”€β”€ environments/       # dev / qa / staging configs
β”‚   └── browserstack/       # BrowserStack capabilities
β”œβ”€β”€ πŸ“ tests/
β”‚   β”œβ”€β”€ web/                # Web test specs
β”‚   β”œβ”€β”€ api/                # API test specs
β”‚   β”œβ”€β”€ mobile/             # Mobile test specs
β”‚   └── e2e/                # End-to-end flows
β”œβ”€β”€ πŸ“ .github/workflows/   # CI/CD pipelines
β”œβ”€β”€ πŸ“ docs/                # Technical documentation
β”œβ”€β”€ πŸ“ reports/             # Allure output
β”œβ”€β”€ playwright.config.ts    # Main Playwright config
β”œβ”€β”€ tsconfig.json           # TypeScript config
└── package.json            # Scripts & dependencies

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • npm 9+
  • Java 11+ (for Appium)
  • Android Studio + Emulator (for mobile)

Installation

# Clone the repository
git clone https://github.com/VladimirRamirez07/qa-multipurpose-framework.git
cd qa-multipurpose-framework

# Install dependencies
npm install

# Install Playwright browsers
npx playwright install

# Configure environment
cp .env.example .env

▢️ Running Tests

# Web tests (all browsers)
npm run test:web

# API tests
npm run test:api

# E2E tests
npm run test:e2e

# All tests
npm run test:all

# Parallel execution (4 workers)
npm run test:parallel

# By environment
npm run test:dev
npm run test:staging

# Cloud (BrowserStack)
npm run test:browserstack

πŸ“± Mobile Testing

This framework includes full Android automation using Appium 3.x with the UiAutomator2 driver, following the Screen Object Model pattern.

Setup

# Install Appium globally
npm install -g appium

# Install Android driver
appium driver install uiautomator2

Running Mobile Tests

# 1. Start Android emulator from Android Studio Device Manager

# 2. Start Appium server
appium

# 3. Run mobile tests in a new terminal
MOBILE=true npx playwright test tests/mobile --project=mobile-chrome

Mobile Capabilities (Pixel 8 - Android 17)

{
  platformName: 'Android',
  'appium:automationName': 'UiAutomator2',
  'appium:deviceName': 'emulator-5554',
  'appium:platformVersion': '17.0',
  'appium:appPackage': 'com.android.settings',
  'appium:appActivity': '.Settings',
}

Screen Object Pattern

// Every screen extends a base class
export class HomeScreen {
  constructor(private driver: Browser) {}

  async isAppLoaded(): Promise<boolean> { ... }
  async getCurrentPackage(): Promise<string> { ... }
  async getCurrentActivity(): Promise<string> { ... }
}

πŸ“Š Reporting

This framework uses Allure Reports for rich, interactive test reporting with screenshots, videos, and step-by-step logs.

# Generate report
npm run allure:generate

# Open report in browser
npm run allure:open

# Live serve
npm run allure:serve

🌍 Environments

Environment Base URL API URL Retries
dev dev.example.com api-dev.example.com 1
qa qa.example.com api-qa.example.com 2
staging staging.example.com api-staging.example.com 3

βš™οΈ CI/CD Pipeline

GitHub Actions pipelines run automatically on every push and pull request:

  • βœ… TypeScript compilation check
  • βœ… Web tests on Chromium, Firefox & WebKit in parallel
  • βœ… API tests
  • βœ… Allure report generation
  • βœ… Test results published as artifacts

🎨 Design Patterns

Pattern Application
Page Object Model Every UI screen has its own class
Screen Object Model Every mobile screen has its own class
Factory Pattern Dynamic test data generation
Singleton Driver/browser instance management
Dependency Injection Decoupled service layer
Strategy Pattern Environment-based configuration
Builder Pattern API request construction

πŸ“š Documentation


πŸ‘¨β€πŸ’» Author

Vladimir Ramirez

QA Automation Engineer passionate about building scalable test frameworks that deliver real business value.

GitHub


Built with ❀️ and a lot of β˜•

About

Enterprise-grade test automation framework covering Web, API & Mobile from a single repository. Built with TypeScript, Playwright, Appium, Allure & BrowserStack following SOLID principles.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors