A modern, responsive web application for testing API performance under heavy load conditions, with real-time visualizations and performance metrics.
- ✅ Comprehensive Testing: Send hundreds or thousands of requests with configurable concurrency
- 📊 Real-time Visualizations: Monitor active tests with dynamic charts and graphs
- 🌓 Dark/Light Mode: Seamless theme switching with persistent user preferences
- 📱 Responsive Design: Works beautifully on desktops, tablets, and mobile devices
- 📈 Detailed Metrics: Track success rates, response times, throughput, and error rates
- 🔄 WebSocket Support: Live updates during stress tests
- 💾 Resource Monitoring: Tracks CPU and memory usage during tests
- Installation
- Project Structure
- Usage
- Configuration
- Customization
- Technology Stack
- Contributing
- License
- Node.js (v14.0.0 or higher)
- npm or yarn
- A backend server for processing stress tests (WebSocket endpoint at
ws://localhost:8080/stress-test)
-
Clone the repository:
git clone https://github.com/yourusername/api-stress-tester.git cd api-stress-tester -
Install dependencies:
npm install # or yarn install -
Start the development server:
npm start # or yarn start -
Build for production:
npm run build # or yarn build
api-stress-tester/
├── public/
│ ├── index.html
│ └── favicon.ico
├── src/
│ ├── components/
│ │ ├── test.jsx # Stress test form component
│ │ └── graph.jsx # Data visualization component
│ ├── App.jsx # Main application component
│ ├── index.js # Entry point
│ └── index.css # Global styles
├── package.json
├── tailwind.config.js # Tailwind CSS configuration
└── README.md
- Enter the target API URL in the URL field
- Configure the number of requests (1-10,000)
- Set concurrency level (1-500)
- Click "Run Stress Test"
- Monitor real-time metrics during the test
- View detailed results after test completion
The application provides several visualizations:
- Requests Summary: Shows total requests, successes, and failures
- Response Time Distribution: Displays response times across all requests
- Requests per Second: Shows throughput over time
- Error Rate Over Time: Tracks percentage of failed requests
The application connects to a WebSocket server at ws://localhost:8080/stress-test. To change this endpoint, modify the WebSocket URL in the test.jsx file:
const ws = new WebSocket("ws://localhost:8080/stress-test");You can adjust the default test parameters in test.jsx:
const [requests, setRequests] = useState(100);
const [concurrency, setConcurrency] = useState(10);The application uses Tailwind CSS for styling with a custom color palette. To modify themes:
- Edit the color variables in
index.cssfor light/dark mode - Update the Tailwind configuration in
tailwind.config.js
Charts are built using Recharts. To customize visualizations:
- Modify chart configurations in
graph.jsx - Update chart colors, styles, and layouts as needed
- Add new chart types by extending the existing components
- React: UI library for building component-based interfaces
- React Router: Navigation and routing solution
- Recharts: Composable charting library for data visualization
- Tailwind CSS: Utility-first CSS framework
- Lucide Icons: Modern SVG icon set
- WebSockets: For real-time data communication
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- The Recharts team for the amazing charting library
- The Lucide team for their beautiful and accessible icons
- The Tailwind CSS team for the utility-first CSS framework



