Last updated: July 2026
Per-session SaaS pricing for Selenium and Playwright grids adds up fast once a QA team runs more than a handful of parallel jobs a day. Teams that self-host a Selenium grid VPS trade a metered bill for a fixed monthly rate and full control over browser versions, extensions, and network egress. This guide gives concrete concurrency-sizing math — RAM per Chromium instance, vCPU per parallel session — mapped to real VPS tiers, plus a note on scaling a grid horizontally across multiple nodes.
Why Teams Move Off Per-Session Test Cloud Pricing
Managed browser-testing clouds charge per concurrent session, per minute, or per test run, and the meter keeps running whether a suite is flaky or clean. A self-hosted test automation infrastructure removes that variable cost entirely: once the VPS is provisioned, running 10 tests or 10,000 costs the same. Teams also get to pin exact browser and driver versions instead of inheriting whatever image the vendor updates on their schedule, which matters for CI suites that need reproducible results across weeks of regression runs.
The tradeoff is that someone owns the infrastructure — patching the OS, restarting stuck browser containers, and sizing nodes correctly so tests do not fail from resource starvation rather than real bugs. That's a solvable operational cost, and it's the one this guide is built to size correctly from the start.
Concurrency Sizing: RAM per Chromium Instance, vCPU per Session
A headless Chromium or Firefox instance running a real Selenium/Playwright session commonly needs several hundred megabytes of RAM under normal page load, with heavier single-page apps, video recording, or multiple open tabs pushing that higher. CPU is usually the tighter constraint: page rendering, JavaScript execution, and screenshot/video encoding are all CPU-bound, so a practical planning rule is to budget roughly one vCPU per concurrent browser session for stable pass rates, with RAM sized generously above the theoretical minimum to leave headroom for the OS, the grid hub/router process, and Docker overhead.
Under-provisioning either resource shows up the same way: sessions that time out, browsers that crash mid-test, or intermittent failures that look like flaky tests but are actually the node running out of headroom. Sizing a node from real vCPU and RAM numbers up front avoids chasing false negatives in CI.
Mapping Sizing to X-Zone VPS Tiers
X-Zone's KVM VPS lineup runs from 2GB/1vCPU up to the 32GB/8vCPU Business tier at EUR58/mo, which gives QA teams a clean tier-to-concurrency ladder instead of over-buying a single oversized box:
| VPS Tier | Specs | Suggested Role |
|---|---|---|
| Nano | 2GB / 1 vCPU / 40GB — EUR4/mo | Grid hub/router only, or single-session smoke tests |
| Micro | 4GB / 2 vCPU / 80GB — EUR6/mo | Small team, 2 parallel sessions |
| Starter | 8GB / 2 vCPU / 120GB — EUR10/mo | Hub + light parallel node, 2-3 sessions |
| Basic | 16GB / 4 vCPU / 160GB — EUR16/mo | Dedicated node, 4 concurrent sessions |
| Pro | 24GB / 6 vCPU / 200GB — EUR30/mo | CI worker node, 6 concurrent sessions |
| Business | 32GB / 8 vCPU / 300GB — EUR58/mo | Heavy node, 8 concurrent sessions with headroom |
A common pattern is to run the grid hub on a small tier and add one or more mid-tier nodes as workers, scaling out rather than up as suite size grows — cheaper and more resilient than a single large box that becomes a bottleneck.
Deploying a Docker-Based Selenium or Playwright Grid
Every X-Zone VPS ships with full root and KVM access, which is what makes Docker-based Selenium/Playwright grid deployments straightforward — no container restrictions, no shared-kernel limitations to work around. Standard Docker Compose grid setups (a hub/router container plus one or more browser node containers) run unmodified on a KVM guest, and root access means the Chromium/Firefox sandbox flags, shared-memory size (`/dev/shm`), and resource limits can all be tuned per node rather than accepted as defaults on more restrictive hosting models.
This is also where KVM matters practically: unlike container-based or shared-kernel virtualization, a KVM virtual machine gets its own kernel and a guaranteed resource allocation, so a Chromium process consuming its full CPU and memory budget under load doesn't compete with a noisy neighbor's workload the way it can in constrained shared-hosting environments common across the industry. That isolation, combined with full root access on every X-Zone VPS tier, is what makes a KVM VPS a solid fit for a headless browser automation server, even a small one.
Horizontal Scaling: Multi-Node Grids Across Several VPS Instances
Vertical scaling a single node runs into a ceiling fast: once vCPU or RAM is saturated, adding more parallel sessions just increases test flakiness. The better pattern for a growing suite is horizontal — a lightweight hub node routing to several worker nodes, each sized per the table above, added as concurrency needs grow. Because X-Zone VPS instances deploy in under 60 seconds, spinning up an extra node for a burst test run (a big release, a full regression pass before a deploy) is fast enough to do on demand rather than keeping idle capacity provisioned year-round.
Each additional node registers with the hub over the same private or public network, and because every tier includes 1 Gbps unmetered bandwidth, moving test artifacts, screenshots, and video recordings between hub and workers doesn't add a per-GB line item to the bill — a real cost difference from SaaS grids that meter data transfer alongside session time. Teams with EU-based user bases or CI runners can also place nodes in specific datacenter cities to keep grid traffic geographically close to the systems under test, reducing round-trip latency in the test results themselves.
When a Dedicated Server Makes More Sense
A VPS-based grid comfortably covers most CI pipelines, but organizations running large regression suites around the clock — dozens of concurrent sessions across every merge, all day — eventually hit a point where consolidating onto dedicated hardware is more cost-effective than running many mid-tier VPS nodes. A dedicated server removes the hypervisor layer entirely and hands over full physical CPU and RAM, which matters once a grid's aggregate resource footprint approaches what a single VPS tier can offer. For most self-hosted grids, though, a two-or-three-node VPS setup sized off the table above is the right starting point, with dedicated hardware as the next step once volume justifies it.
Verdict
Self-hosting a Selenium or Playwright grid on a VPS turns a metered per-session bill into a fixed, predictable cost — and sizing it correctly from real vCPU-per-session and RAM-per-instance numbers avoids the flaky-test failures that come from under-provisioned nodes. X-Zone Servers' KVM VPS lineup, with full root access, Docker-ready images, sub-60-second deploys, and unmetered 1 Gbps bandwidth on every tier, gives QA and automation teams a clean path from a single hub node to a horizontally scaled multi-node grid without re-architecting anything along the way.