⚡ Sangsakala Proxy 🏠 Home
Skip to content
feresbr1Public

About

A high-performance API load testing application with a Python async engine, real-time analytics, and a modern React dashboard.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

Loadforge

A high-performance API load testing application with a Python async engine, real-time analytics, and a modern React dashboard.

Architecture

Browser (React + Recharts)
    │ SSE
    ▼
Vite (:5173) ──proxy──▶ Node/Express (:3001) ──SSE proxy──▶ Python/FastAPI (:3002)
                              │                                     │
                              │ history, config                     │ aiohttp + asyncio
                              ▼                                     ▼
                         JSON file storage                    Target Endpoint

The stress engine runs in Python using aiohttp for lower per-request overhead, accurate timing, and better concurrency scaling compared to Node-based alternatives. The Node server handles the API layer, history persistence, and SSE streaming to the browser.

Features

Endpoint Configuration

  • Target URL with HTTP method selection (GET, POST, PUT, DELETE, PATCH, HEAD)
  • Custom request headers (key-value editor)
  • JSON request body editor for POST/PUT/PATCH
  • Environment variable substitution using {{variable}} syntax in URLs, headers, and body

Authentication

  • Bearer Token — auto-injects Authorization: Bearer <token>
  • Basic Auth — username and password
  • API Key — send as header or query parameter, configurable key name

Load Profiles

  • Total request count (up to 50,000)
  • Concurrency level (up to 500 parallel connections)
  • Ramp-up time (gradually increase load over N seconds)
  • Duration-based mode (run for a fixed time instead of fixed count)
  • Request delay (throttle between requests)
  • Per-request timeout
  • Quick presets: Quick Check, Light, Medium, Heavy, Spike, Endurance

Warm-Up Phase

  • Configurable warm-up requests that execute before the measured test
  • Warm-up results are excluded from all metrics, charts, and the final report

Response Assertions

  • Status code checks (=, !=, <, >, etc.)
  • Response time thresholds
  • Body contains text matching
  • JSON path extraction and comparison ($.data.id)
  • Header exists and header equals checks
  • Failed assertions count as test failures
  • Per-assertion pass rate tracked and displayed in the report

SLA Thresholds

  • Max average response time
  • Max P95 / P99 response time
  • Max error rate (%)
  • Min throughput (req/s)
  • Max absolute response time
  • Pass/fail verdict displayed in the report with per-check breakdown

Multi-Step Scenario Testing

  • Chain multiple API calls into a user journey
  • Each step has its own URL, method, headers, body, and assertions
  • Variable extractors — pull values from a response (JSON path, header, or status code) and use them as {{variables}} in later steps
  • Per-step delay configuration
  • Reorder, add, and remove steps in the UI
  • Per-step metrics in the final report (count, avg response, error rate)

Real-Time Dashboard

  • Live-updating stat cards: requests sent, throughput, avg latency, error rate, assertion pass rate
  • Status code badges with color coding
  • Four streaming charts (Recharts):
    • Throughput over time
    • Response time over time
    • Error rate over time
    • Completed requests over time
  • Abort button to stop a running test

Final Report

Tabbed report with six sections:

  • Overview — percentile bar chart, latency histogram, status code pie chart, response time table, bottleneck analysis
  • Assertions — per-assertion pass rate with progress bars
  • SLA — pass/fail per check with target vs actual
  • Timeline — scatter plot waterfall of every request (start offset vs duration)
  • Steps — per-step metrics for scenario tests
  • Errors — error list with codes and messages

Performance Rating

Automatic grading based on response times and error rate:

Grade Criteria
Excellent avg < 200ms, P95 < 500ms, errors < 1%
Good avg < 500ms, P95 < 1000ms, errors < 2%
Moderate avg < 1000ms, errors < 5%
Poor avg < 2000ms or errors 5-10%
Failed avg > 2000ms or errors > 10%

Bottleneck Detection

Automated analysis flags:

  • High tail latency (P99 > 3x average)
  • High error rates
  • Requests approaching timeout
  • Throughput below concurrency level
  • High response time variance (P90 > 2x average)

Export

  • JSON — full test result
  • CSV — summary metrics, status codes, histogram, assertions, SLA
  • PDF — formatted report with tables (jsPDF + autotable)

Test History

  • Save test results with custom names
  • View past results with the full report
  • Delete old entries
  • Side-by-side comparison of up to 3 tests (throughput, latency, error rate, grade)
  • Persisted to a JSON file on the server (last 100 results)

Saved Configurations

  • Save and reload test configs from the browser (localStorage)
  • Includes all settings: URL, auth, assertions, SLA, env vars, load params

Safety

  • Warning banner about testing only permitted endpoints
  • Confirmation dialog for high-load tests (>1000 requests or >100 concurrency)
  • Server-side rate limit: max 5 concurrent tests
  • Request validation on both client and server

Setup

# Install everything
npm run install:all

# Start all three servers
npm run dev

Or individually:

cd worker && python main.py      # Python engine on :3002
cd server && npm run dev          # Node API on :3001
cd client && npm run dev          # React UI on :5173

Open http://localhost:5173 in your browser.

Requirements

  • Node.js 20+
  • Python 3.12+
  • npm

Tech Stack

Layer Technology
Stress Engine Python, FastAPI, aiohttp, asyncio
API Server Node.js, Express, SSE
Frontend React, TypeScript, Vite, Recharts, Tailwind CSS
PDF Export jsPDF + jspdf-autotable
Persistence JSON file (server), localStorage (client)

About

A high-performance API load testing application with a Python async engine, real-time analytics, and a modern React dashboard.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages