Reference
Automate capabilities reference, common errors, session timeouts, free minutes, concurrency, and known limits.
Reference
A single-page reference for Automate capabilities, common errors, timeouts, and quotas.
Endpoints
| Framework | Endpoint |
|---|---|
| Selenium (W3C WebDriver) | https://<email>:<accessKey>@hub.testkase.com/wd/hub |
| Playwright | wss://hub.testkase.com/playwright?capabilities=<url-encoded JSON> |
Capabilities
Standard W3C capabilities:
| Capability | Values |
|---|---|
browserName | chrome, edge / MicrosoftEdge, firefox, safari (Selenium); Chrome, MicrosoftEdge, Firefox, pw-webkit (Playwright) |
browserVersion | latest (default), latest-1, latest-N, or an exact major |
platformName | macOS 15 / macOS Sequoia, macOS 26 / macOS Tahoe |
testkase:options (all optional):
| Key | Type | Effect |
|---|---|---|
build | string | Group sessions under a named build (CI run ID / commit SHA) |
name | string | Per-session label |
username | string | Auth alternative to URL basic-auth |
accessKey | string | Auth alternative to URL basic-auth |
tags | string[] | Free-form labels for filtering |
recording | boolean (true) | Capture session video |
console | boolean (true) | Capture browser console (Chrome/Edge, FF 113+) |
network | boolean (true) | Capture network requests (Chrome/Edge, FF 129+) |
driver | boolean (true) | Capture driver diagnostics |
playwrightVersion | string | Pin the Playwright server lib (Playwright only) |
maxQueueWaitSeconds | number 0–600 (default 60) | How long to wait in the concurrency queue when the fleet is busy |
Session timeouts
Three independent rules end a session automatically:
| Rule | Threshold | Why |
|---|---|---|
| Wall-clock cap | 60 minutes from session start | Hard ceiling, uniform across tiers |
| Customer idle | 10 minutes with no WebDriver command from your code | Catches hung runners and Ctrl+C without driver.quit() |
| Service unreachable | 90 seconds with no signal from the browser host | The host went silent (network drop / crash) |
A driver.sleep() sends no command, so it counts as idle. If your test needs a long pause, send a cheap call like getCurrentUrl() to reset the 10-minute idle window. Captures uploaded before any cut-off are preserved.
Common errors
Errors surface as your client's connect/session error, prefixed by the reason from the Hub. Match on the prefix:
| Error prefix | Class | What it means & fix |
|---|---|---|
bad capabilities | Bad request | A required field is missing or platformName is an unknown value. Check your config — retry won't help. |
invalid testkase:options.username or accessKey | Auth | Credentials don't validate. Regenerate at Settings → Access Keys. |
free-tier minutes exhausted | Quota | Your free-tier allowance is used up. Upgrade to a paid plan. |
No device matches… | Picker | You asked for a browser/version that isn't in the fleet. Use latest / latest-N, or pick from the "Available:" list in the message. |
All matching devices in use. Waited Ns… | Capacity | Fleet at capacity — you sat in the queue and nothing freed up. Retry, lower CI worker count, or raise maxQueueWaitSeconds. |
Couldn't start the browser. Please try again. | Launch | Real launch failure. Retry rarely helps — contact support if it persists. |
Couldn't reach the browser host. Please try again. | Capacity | The agent didn't respond in time. Retry — tunnels usually reconnect within ~60s. |
Your Playwright client is X.Y. TestKase supports A.B–C.D. | Version | Your Playwright client is too old or too new. Pin to a supported version. |
<Brand> <Major> requires Playwright X.Y+ … | Version | The Firefox/WebKit major you asked for isn't bundled with your Playwright client. Upgrade your client or use the bundled major. |
The live capabilities matrix shows every supported browser × OS × version in real time — use it to pick a working combination.
Free minutes & concurrency
Automate is billed as one SKU, automate, with a one-time lifetime free allowance:
| SKU | Free lifetime allowance | Covers |
|---|---|---|
automate | 90 minutes | All Automate sessions (browser today) |
Lifetime means the 90 minutes don't reset — they're a one-time pool per account. The allowance is shared org-wide (every member of an org draws from the same counter). Premium and enterprise plans ignore the minute cap entirely.
Concurrency is bounded by your plan's threads (seats). Each concurrent session consumes one thread, and a run's parallelism can't exceed your thread count. The free tier allows 1 parallel session. When all your threads are busy, extra sessions wait in the concurrency queue (up to maxQueueWaitSeconds) rather than failing immediately.
The concurrency queue is a UX convenience, not a billing gate — every tier can set any maxQueueWaitSeconds from 0 to 600. Both the free-minute quota and the thread cap are checked before queue entry, so queueing never bypasses billing.
Known limits
- Browser automation today — native mobile app automation (Appium, on real Android & iOS) is coming soon.
- No local-testing tunnel yet — your test target must be a publicly reachable URL.
- Safari has no console/network capture — a protocol gap, matching other vendors.
testkase:optionsis a subset of BrowserStack's / LambdaTest's vendor blocks — the advanced proxy/geo flags aren't all mirrored.
