Skip to content

Browser fleets — a managed Selenium Grid & Playwright endpoint

You already have a working Selenium or Playwright suite. Browser fleets let you keep every line of it and change one URL. MaxoPerf runs the browsers and gives you a single central control endpoint that speaks both the W3C WebDriver protocol (Selenium Grid-compatible) and Playwright connect().

A fleet is a set of real chrome, firefox, and edge browsers that you request by count and location. Point your existing client at the fleet endpoint. MaxoPerf allocates the browsers, records video, steps, HAR, and console for every session, and bills them as browser virtual users on your existing plan.

Get started with browser fleets.
  • A Selenium Grid alternative you don’t operate. No hub, no nodes, no Docker images, no autoscaling to watch. Request browsers and connect.
  • A Selenoid / Moon replacement. Selenoid is archived. Fleets give you the same facade-over-drivers model as a managed service, with observability built in.
  • A Microsoft Playwright Testing replacement. Microsoft is retiring MPT. Fleets speak Playwright connect() per engine, plus a CDP escape hatch that works with any Playwright version.
  • Full observability, no script edits. Every session gets a clean video, a synced step timeline, a network HAR, and the browser console. That is the same capture a MaxoPerf browser test gets.
  • Agent-native. Create and scale fleets from the MCP server, Loadrigo, your IDE, the REST API, or the console.
  1. Request browsers. Tell MaxoPerf which browsers you want, how many of each, and in which location. Use the console, the REST API, the MCP server, or an AI agent.

  2. MaxoPerf allocates runners. Each fleet runs on the same runner image a browser test uses. Browsers connect outbound to a gateway over a secure tunnel, so you have no inbound ports and no runner addresses to manage.

  3. Connect your client. You get one central endpoint. Selenium clients use the WebDriver URL. Playwright clients use the WebSocket URL for each engine. Any Chromium client can use the CDP escape hatch.

  4. Watch and inspect. Live sessions appear as video tiles on the fleet’s run in the console, each with its own steps, HAR, and console.

Browser fleets list. Each row shows the requested browsers, the location, and whether the fleet is serving sessions right now.

Browser fleets vs. browser tests: when to use which

Section titled “Browser fleets vs. browser tests: when to use which”

Both features run real chrome, firefox, and edge browsers on the same runner image. Both capture the same video, steps, HAR, and console, and both bill from the same VU-hours pool. The difference is who drives the browser:

Browser testBrowser fleet
Who drives the browserMaxoPerf runs your recorded or scripted scenarioYour own Selenium/Playwright client, running wherever your suite already runs
Best forLoad and functional scenarios authored in MaxoPerf (builder, VarioTest, or uploaded script)An existing Selenium/Playwright suite (CI, local dev, another framework) that needs somewhere to run browsers
LifecycleMaxoPerf starts, drives, and ends every sessionYou open and close sessions against a long-lived fleet endpoint over its lifetime
Concurrency modelSet once at test create (virtual users)Request N browsers up front, or scale a live fleet from its Configuration tab in the console, the REST API, or an AI agent, as your suite needs more

Every fleet exposes one central control endpoint. It is routed by path on the app domain, so there is no new host and no extra DNS:

ProtocolEndpointBrowsers
WebDriver (Selenium Grid)https://app.maxoperf.com/browser-fleets/<fleetId>/wd/hubchrome · firefox · edge (pick via the browserName capability)
Playwright (per engine)wss://app.maxoperf.com/browser-fleets/<fleetId>/playwright/{chromium,firefox,msedge}one WebSocket URL per engine
CDP (escape hatch)wss://app.maxoperf.com/browser-fleets/<fleetId>/cdp (Chrome) · .../cdp/msedge (Edge)Chromium, version-agnostic

Three more shapes ride on top of these for clients that want them: WebDriver BiDi (webSocketUrl: true), Selenium’s automatic se:cdp capability on chrome/edge, and CDP over plain https instead of wss://. See Connect a client for the exact snippets, and how to name a session so it’s findable later.

Every credential slot accepts either a fleet token (mpft_…) or an account API key (mpak_…) with access to the fleet. Put it in the slot your client uses:

  • Selenium: basic-auth in the URL, https://<fleetId>:<token>@app.maxoperf.com/browser-fleets/<fleetId>/wd/hub
  • Playwright / CDP: the ?token=<token> query parameter on the WebSocket URL
  • Raw HTTP: an Authorization header, or the maxoperf:options.token capability on WebDriver

While the fleet is live, you can retrieve or rotate its token at any time with GET /v1/fleets/<fleetId>/token, or reveal it on the fleet’s Connect tab in the console.

Every session gets all four signals (video, steps, console, and HAR) on every browser and every protocol.

BrowserProtocolVideoStepsConsoleHAR
chromeWebDriver✅✅✅✅
edgeWebDriver✅✅✅✅
firefoxWebDriver✅✅✅✅
chromePlaywright✅✅✅✅
edgePlaywright✅✅✅✅
firefoxPlaywright✅✅✅✅

connectOverCDP captures the same four signals as the Playwright row for the browser you connect to. It works on chromium engines only, because firefox has no CDP endpoint.

A live end-to-end suite checks every cell above. It opens a real session per cell and fails if any of the four signals is missing, so the table reflects tested behavior.

Every session — across every run a fleet has ever had — is inspectable from the fleet’s Sessions tab: a paginated table with browser, protocol, name, capture status per signal, and a per-row expand for that exact session’s video/steps/HAR/console, seeked to its own window. Open run takes you from there to the full run page. The Runs section above it lists every run the fleet has had, including ones with zero sessions, with a link to each.

  • Browser tests: write a new scenario inside MaxoPerf instead of driving your own client.