Skip to content

thookham/TestKit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

TestKit - Hardware Profile Library for Windows Testing

TestKit Banner

License: MIT Profiles Hardware Models Python

TestKit is a comprehensive, industry-leading repository of hardware profiles specifically designed for testing and debugging Windows applications across diverse device configurations. With 22,122+ unique profiles spanning Windows 95 through Windows 11, TestKit provides standardized hardware definitions that can be exported to Docker, Vagrant, Terraform, and Windows Sandbox.

What's New in v1.4.0: Added Batch Export, Hyper-V, and VMware support. Now spanning 22,000+ profiles with enterprise-grade virtualization tools.


πŸ“š Documentation

✨ Features

  • Massive Database: Over 80 hardware models and 22,000+ profiles.
  • Multi-Format Export:
    • 🐳 Docker (Containerized simulation)
    • ⚑ Hyper-V (Local virtualization)
    • πŸ–₯️ VMware (Workstation/Player configs)
    • πŸ“¦ Vagrant (VirtualBox automation)
    • ☁️ Terraform (AWS Cloud deployment)
    • πŸͺŸ Windows Sandbox (Ephemeral desktop testing)
  • Batch Operations: Filter and export thousands of profiles with batch_export.py.

Modern software must work across an enormous range of hardware configurations. TestKit solves the "Standard Library of Hardware Definitions" problem by providing:

βœ… Pre-defined hardware profiles - No more manual spec lookups
βœ… Industry-leading coverage - 45 base hardware models Γ— hundreds of configuration variants
βœ… Multi-platform export - Docker, Vagrant, Terraform, Windows Sandbox
βœ… Global hardware representation - American, European, and Asian manufacturers
βœ… Historical depth - From Windows XP (Pentium 4) to Windows 11 (latest handhelds)

Architecture

Use Cases

  • QA Testing: Validate software across realistic hardware constraints
  • DevOps: Provision test environments matching real-world deployment targets
  • Support Teams: Reproduce customer issues on specific hardware configurations
  • Performance Testing: Benchmark across different CPU/RAM/GPU combinations
  • Compatibility Testing: Ensure legacy support (XP/7) and cutting-edge compatibility (Win 11)

πŸ“Š Profile Coverage

| Servers | Dell, HP | PowerEdge R740, ProLiant DL380 | 850+ |\r | Desktops | System76, Dell, HP | Thelio, Dimension, Compaq | 1,100+ |\r | Cloud VMs | AWS, Azure | EC2 t2.micro, Standard_D2s_v3 | 120+ |\r | Legacy | Various, Toshiba | XP/Vista era systems, Satellite C55 | 950+ |\r | Global Manufacturers | Xiaomi, Huawei, GPD, Toshiba | Mi Notebook, MateBook, Win 3, PortΓ©gΓ© | 1,200+ |\r

Coverage Matrix

Operating System Coverage

  • Windows XP (2001-2014)
  • Windows 7 (2009-2020)
  • Windows 8/8.1 (2012-2016)
  • Windows 10 (2015-2025)
  • Windows 11 (2021+)
  • Windows Server (2012 R2 - 2022)

πŸš€ Quick Start

1. Generate Profiles

cd TestKit
python scripts/generate_profiles.py

Output: 16,912 profiles generated in profiles/ directory, organized by OS version.

2. Run with Docker (Optional) 🐳

No Python installed? No problem! Run TestKit commands directly via Docker.

# Build the image
docker-compose build

# Run commands (mounts ./exports automatically)
docker-compose run --rm testkit --profile profiles/win11/acer-aspire-vero-windows-11-v1.json --format docker

3. Export to Your Platform

Export Flow

Docker

python scripts/export.py \
  --profile "profiles/win11/acer-aspire-vero-windows-11-v1.json" \
  --format docker \
  --output exports

# Run the generated launch script
./exports/launch.ps1  # or ./exports/launch.sh

Vagrant (VirtualBox)

python scripts/export.py \
  --profile "profiles/win10/lenovo-thinkpad-t480-windows-10-v1.json" \
  --format vagrant \
  --output exports

Terraform (AWS)

python scripts/export.py \
  --profile "profiles/win11/msi-gs66-stealth-windows-11-v1.json" \
  --format terraform \
  --output exports

# Deploy to AWS
cd exports
terraform init
terraform apply

Windows Sandbox

python scripts/export.py \
  --profile "profiles/win10/lenovo-thinkpad-t480-windows-10-v1.json" \
  --format wsb \
  --output exports

# Double-click the .wsb file to launch Windows Sandbox with the profile

πŸ“ Repository Structure

TestKit/
β”œβ”€β”€ profiles/              # Generated JSON profiles (16,912 files)
β”‚   β”œβ”€β”€ win7/
β”‚   β”œβ”€β”€ win8/
β”‚   β”œβ”€β”€ win10/
β”‚   β”œβ”€β”€ win11/
β”‚   └── other/             # Server editions, XP, Vista
β”œβ”€β”€ scripts/
β”‚   β”œβ”€β”€ db/
β”‚   β”‚   └── laptops.json   # Hardware database (45 base models)
β”‚   β”œβ”€β”€ generate_profiles.py  # Profile generator
β”‚   β”œβ”€β”€ export.py          # Multi-platform exporter
β”‚   └── validate_db.py     # Database validation utility
β”œβ”€β”€ exports/               # Exported configurations
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ images/            # Visual assets and diagrams
β”‚   β”œβ”€β”€ ARCHITECTURE.md    # Technical deep-dive
β”‚   β”œβ”€β”€ TUTORIALS.md       # Step-by-step guides
β”‚   β”œβ”€β”€ HARDWARE_GUIDE.md  # Complete hardware catalog
β”‚   β”œβ”€β”€ API_REFERENCE.md   # CLI and schema documentation
β”‚   └── integration_strategy.md  # Platform integration guides
β”œβ”€β”€ .github/
β”‚   β”œβ”€β”€ workflows/         # CI/CD automation
β”‚   └── ISSUE_TEMPLATE/    # Issue templates
β”œβ”€β”€ README.md
β”œβ”€β”€ ROADMAP.md
β”œβ”€β”€ CONTRIBUTING.md
β”œβ”€β”€ CHANGELOG.md
└── LICENSE

πŸ”§ Profile Schema

Each profile is a JSON file with the following structure:

{
  "id": "acer-aspire-vero-windows-11-v1",
  "make": "Acer",
  "model": "Aspire Vero",
  "year": 2021,
  "os": "windows-11",
  "form_factor": "Laptop",
  "hardware": {
    "cpu": "Intel Core i5-1155G7",
    "cpu_count": 4,
    "ram_mb": 8192,
    "storage_gb": 256,
    "gpu": "Intel Iris Xe Graphics",
    "gpu_vram_mb": 0,
    "screen_resolution": "1920x1080"
  },
  "software": {
    "browser": "Edge",
    "accessibility": "None"
  }
}

See docs/API_REFERENCE.md for complete schema specification.


πŸ† Why TestKit Stands Out

vs. BrowserStack / Device Farms

  • Cost: TestKit is free and open-source; no per-minute charges
  • Privacy: Run tests on-premise; no data leaves your infrastructure
  • Customization: Modify profiles for your specific needs
  • Scale: Generate unlimited environments simultaneously

vs. Manual VM Creation

  • Speed: 1 command vs. hours of manual configuration
  • Consistency: Profiles are version-controlled and reproducible
  • Coverage: Test 16,912 configurations vs. maintaining a few VMs
  • Automation: CI/CD integration built-in

vs. Windows Dev VMs

  • Variety: 45 hardware types vs. generic VM
  • History: Support for legacy Windows (XP, 7) alongside modern versions
  • Export Flexibility: Deploy to cloud, local VMs, or containers
  • Real Hardware Specs: Based on actual manufacturer specifications

🌐 Interoperability

TestKit is designed to integrate seamlessly with existing testing infrastructure:

Device Farms

Export profiles to Docker and deploy to on-premise device labs or cloud platforms like AWS Device Farm.

Virtualization

Use Vagrant or Terraform exporters to provision VMs with infrastructure-as-code tools like Ansible, Puppet, or Chef.

Local Testing

Use Windows Sandbox (.wsb) files for lightweight, ephemeral testing environments on Windows 10 Pro/Enterprise.

CI/CD Integration

Profiles can be integrated into GitHub Actions, Azure DevOps, or Jenkins pipelines for automated cross-hardware testing.


πŸ“– Common Workflows

Testing Legacy Application on Windows 7

# Find a Windows 7 profile
ls profiles/win7/

# Export to Vagrant
python scripts/export.py \
  --profile "profiles/win7/hp-elitebook-840-g3-windows-7-v1.json" \
  --format vagrant \
  --output exports

# Launch VM
cd exports
vagrant up

Reproducing ARM-based Surface Issue

# Export Surface Pro X (Qualcomm ARM)
python scripts/export.py \
  --profile "profiles/win10/microsoft-surface-pro-x-windows-10-v1.json" \
  --format wsb \
  --output exports

# Test in Windows Sandbox
./exports/microsoft-surface-pro-x-windows-10-v1.wsb

Cloud Testing on AWS

# Export to Terraform
python scripts/export.py \
  --profile "profiles/win11/asus-rog-ally-windows-11-v1.json" \
  --format terraform \
  --output exports

# Deploy
cd exports
terraform apply
# Instance launched with tags matching TestKit profile

Testing New Acer Laptop Configuration

# Use one of the new Tier 1 profiles
python scripts/export.py \
  --profile "profiles/win11/acer-predator-helios-300-windows-11-v1.json" \
  --format docker \
  --output exports

# Build and run container
cd exports
docker build -t testkit-helios .
docker run -it testkit-helios

πŸŽ“ Learning Resources


πŸ’‘ Best Practices

Profile Selection

  1. Match OS: Choose profiles targeting your application's supported Windows versions
  2. Consider Form Factor: Laptop profiles for mobility testing, desktop for performance
  3. Hardware Constraints: Test on low-spec profiles to ensure minimum requirements work

Export Strategy

  • Development: Use Windows Sandbox for quick, disposable testing
  • CI/CD: Use Docker for fast, parallel test execution
  • QA/Staging: Use Vagrant or Terraform for persistent, shareable environments
  • Production Validation: Use cloud exports (Terraform) for real-world infrastructure testing

Profile Customization

# Copy and modify a profile
cp profiles/win10/base-profile.json my-custom-profile.json
# Edit my-custom-profile.json with your specific hardware requirements
python scripts/export.py --profile my-custom-profile.json --format vagrant

πŸ› οΈ Development

Adding New Hardware

  1. Edit scripts/db/laptops.json
  2. Add new entry following the schema:
{
  "make": "Framework",
  "model": "Laptop 13",
  "year": 2023,
  "form_factor": "Laptop",
  "supported_os": ["Windows 10", "Windows 11"],
  "cpu_options": [
    {"name": "Intel Core i7-1165G7", "cores": 4}
  ],
  "ram_options": [16384, 32768],
  "storage_options": [512, 1024],
  "gpu_options": [{"name": "Intel Iris Xe Graphics", "vram": 0}],
  "resolution_options": ["2256x1504"]
}
  1. Regenerate profiles:
python scripts/generate_profiles.py

Running Validation

python scripts/validate_db.py

See CONTRIBUTING.md for detailed contribution guidelines.


πŸ“ Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines on:

  • Adding new hardware definitions
  • Improving exporters
  • Writing documentation
  • Reporting issues
  • Submitting pull requests

πŸ“œ License

This project is open-source and available under the MIT License.


πŸ™‹ FAQ

Q: Why JSON profiles instead of directly provisioning VMs?
A: TestKit provides definitions, not implementations. This separation allows you to use the same profile across Docker, Vagrant, Terraform, or custom tooling.

Q: Can I use TestKit for Linux/Mac testing?
A: TestKit focuses on Windows testing, but the profile format is extensible. You could adapt it for other platforms.

Q: How accurate are the hardware profiles?
A: Profiles are based on manufacturer specifications and real hardware reviews. For exact hardware behavior, use real devices or manufacturer-provided VMs.

Q: What's the difference between TestKit and BrowserStack?
A: BrowserStack is a cloud device farm offering real devices. TestKit provides profile definitions you can use to provision your own environments (cloud or on-premise).

Q: How often is the hardware database updated?
A: We aim to add new hardware profiles quarterly. Community contributions are welcome to accelerate coverage of new devices.

Q: Can I use TestKit commercially?
A: Yes! TestKit is MIT licensed, allowing commercial use. See LICENSE for details.


πŸ“Š Statistics

  • Hardware Models: 80 base configurations
  • Generated Profiles: 22,122 unique combinations
  • Supported OS Versions: 12+ Windows versions (including Win95/XP)
  • Export Formats: 4 (Docker, Vagrant, Terraform, Windows Sandbox)
  • Form Factors: 15+ (laptops, desktops, handhelds, servers, cloud VMs, rugged, POS, medical, SBC)
  • Manufacturers: 45+ global brands

πŸ”— Related Projects


🀝 Community


Built with ❀️ for the Windows testing community

TestKit v1.1.0 - Empowering developers to test across the hardware spectrum

About

Testing utilities and tools collection

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published