Every hosting benchmark we publish is reproducible. We've published the test scripts we use on GitHub so you can verify our results, test your own hosts, or adapt the methodology for your needs.
📦 Repository: github.com/mangeshsupe/thatmy-test-scripts
MIT License. Free to use, modify, and adapt for your own testing.
What's Included
1. k6 Load Testing Script
File: k6/wordpress-load-test.js
What it does: Simulates concurrent users hitting a WordPress homepage. Measures response times, error rates, and custom metrics like TTFB percentiles.
Usage:
# Install k6 (once) brew install k6 # Run the test k6 run k6/wordpress-load-test.js \ --vus 100 \ --duration 60s \ -e TARGET_URL=https://yourhost.com
Customizable parameters:
--vus— Number of concurrent users (default: 100)--duration— Test duration (default: 60s)TARGET_URL— Your WordPress site URLRAMP_UP— How fast to ramp up users (default: 30s)
Output: Response time percentiles (p50, p95, p99), error rate, request/second throughput.
2. WebPageTest Batch Script
File: webpagetest/batch-test.js
What it does: Runs WebPageTest against multiple hosts simultaneously. Captures TTFB, FCP, LCP, Speed Index, and waterfall data.
Usage:
# Install dependencies npm install # Run batch test node webpagetest/batch-test.js \ --api-key YOUR_WEBPAGETEST_KEY \ --hosts hosts.json \ --location Dulles_VA \ --runs 9
Customizable parameters:
--api-key— WebPageTest API key (free at webpagetest.org)--hosts— JSON file with host URLs--location— Test location (Dulles_VA, Frankfurt_Germany, etc.)--runs— Number of test runs per host (default: 9)--private— Run private tests (requires paid API key)
Output: CSV with TTFB, FCP, LCP, Speed Index, fully-loaded time for each host.
Note: WebPageTest free tier allows 200 tests/day. Paid tier unlimited. See webpagetest.org/getkey.php
3. PassMark CPU Lookup Script
File: cpu/passmark-lookup.js
What it does: Takes a CPU model name and returns PassMark rank, score, and release year.
Usage:
# Look up a single CPU node cpu/passmark-lookup.js "AMD EPYC 9474F" # Batch lookup from file node cpu/passmark-lookup.js --file cpu-models.txt
Output:
AMD EPYC 9474F: Rank: #31 Score: 91,423 Release Year: 2023 Cores: 48
4. Data Aggregation Script
File: data/aggregate-results.js
What it does: Combines results from k6, WebPageTest, and CPU data into a unified CSV/JSON output.
Usage:
node data/aggregate-results.js \ --k6 ./results/k6-results.json \ --webpagetest ./results/wpt-results.csv \ --cpu ./results/cpu-data.json \ --output ./results/final-benchmark.csv
Output: Single CSV file with all metrics per host, ready to import into spreadsheet or analysis tools.
How We Use These Scripts
Our monthly testing workflow:
- Setup: Create test WordPress install on each host (identical plugins, content, theme)
- WebPageTest: Run batch-test.js against all 15 hosts from Dulles VA (9 runs each)
- Load test: Run k6 load test (50, 100, 250 concurrent users) against each host
- CPU verification: SSH into each host, run
lscpu, look up on PassMark - Aggregation: Combine all results into unified CSV
- Analysis: Calculate percentiles, identify trends, update benchmark pages
Total time: 4-6 hours per monthly test cycle
Reproducing Our Benchmarks
To verify our TTFB data or run against your own hosts:
- Clone the repo:
git clone https://github.com/mangeshsupe/thatmy-test-scripts.git - Install dependencies:
npm install && brew install k6 - Get WebPageTest key: Free account at webpagetest.org
- Create hosts.json: List of WordPress sites to test
- Run batch-test.js: Start WebPageTest tests
- Run k6 script: Start load tests once pages are up
- Compare results: See how your host stacks up
Full instructions in repository README.
Customizing for Your Use Case
Testing your own site:
- Fork the repo
- Update
hosts.jsonwith your site URL - Run load tests to benchmark against public data
- Use k6 to test your own performance optimization efforts
Testing different WordPress versions:
- Modify the test WordPress install to use WordPress 6.4, 6.6, etc.
- Run full test cycle to see version impact on performance
Testing non-WordPress platforms:
- Adapt k6 script to target different URLs/endpoints
- Use WebPageTest batch runner on any web application
Requirements
Software:
- Node.js 18+ (for batch and aggregation scripts)
- k6 (for load testing)
- WebPageTest API key (free account at webpagetest.org)
Hardware:
- Laptop or desktop with 8GB+ RAM
- Stable internet connection (load tests generate 50Mbps+ traffic)
Cost:
- Free (WebPageTest free tier: 200 tests/day)
- Optional: Paid WebPageTest plan for unlimited tests ($99+/month)
License & Attribution
These scripts are published under the MIT License. You're free to:
- Use: Run them against your own hosts
- Modify: Adapt for different testing scenarios
- Distribute: Share modified versions
- Commercialize: Use for commercial testing services
Attribution appreciated but not required: If you use these scripts for published benchmarks, a link back to thatmy.com/how-we-test is appreciated.
Support & Issues
Questions or issues with the scripts?
- GitHub Issues: File a bug report at the repository
- Email: mangesh@thatmy.com
Related Resources
- Complete Testing Methodology — Full explanation of test conditions
- WordPress Hosting Benchmarks — Our monthly results using these scripts
- WebPageTest Documentation — Test configuration reference
- k6 Documentation — Load testing framework guide
- PassMark CPU Benchmarks — CPU ranking database
