TestKase
TestKase
|Docs
Automate

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

FrameworkEndpoint
Selenium (W3C WebDriver)https://<email>:<accessKey>@hub.testkase.com/wd/hub
Playwrightwss://hub.testkase.com/playwright?capabilities=<url-encoded JSON>

Capabilities

Standard W3C capabilities:

CapabilityValues
browserNamechrome, edge / MicrosoftEdge, firefox, safari (Selenium); Chrome, MicrosoftEdge, Firefox, pw-webkit (Playwright)
browserVersionlatest (default), latest-1, latest-N, or an exact major
platformNamemacOS 15 / macOS Sequoia, macOS 26 / macOS Tahoe

testkase:options (all optional):

KeyTypeEffect
buildstringGroup sessions under a named build (CI run ID / commit SHA)
namestringPer-session label
usernamestringAuth alternative to URL basic-auth
accessKeystringAuth alternative to URL basic-auth
tagsstring[]Free-form labels for filtering
recordingboolean (true)Capture session video
consoleboolean (true)Capture browser console (Chrome/Edge, FF 113+)
networkboolean (true)Capture network requests (Chrome/Edge, FF 129+)
driverboolean (true)Capture driver diagnostics
playwrightVersionstringPin the Playwright server lib (Playwright only)
maxQueueWaitSecondsnumber 0600 (default 60)How long to wait in the concurrency queue when the fleet is busy

Session timeouts

Three independent rules end a session automatically:

RuleThresholdWhy
Wall-clock cap60 minutes from session startHard ceiling, uniform across tiers
Customer idle10 minutes with no WebDriver command from your codeCatches hung runners and Ctrl+C without driver.quit()
Service unreachable90 seconds with no signal from the browser hostThe 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 prefixClassWhat it means & fix
bad capabilitiesBad requestA required field is missing or platformName is an unknown value. Check your config — retry won't help.
invalid testkase:options.username or accessKeyAuthCredentials don't validate. Regenerate at Settings → Access Keys.
free-tier minutes exhaustedQuotaYour free-tier allowance is used up. Upgrade to a paid plan.
No device matches…PickerYou 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…CapacityFleet 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.LaunchReal launch failure. Retry rarely helps — contact support if it persists.
Couldn't reach the browser host. Please try again.CapacityThe agent didn't respond in time. Retry — tunnels usually reconnect within ~60s.
Your Playwright client is X.Y. TestKase supports A.B–C.D.VersionYour Playwright client is too old or too new. Pin to a supported version.
<Brand> <Major> requires Playwright X.Y+ …VersionThe 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:

SKUFree lifetime allowanceCovers
automate90 minutesAll 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:options is a subset of BrowserStack's / LambdaTest's vendor blocks — the advanced proxy/geo flags aren't all mirrored.

Next steps