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.
Why teams move to browser fleets
Section titled “Why teams move to 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.
How a fleet works
Section titled “How a fleet works”-
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.
-
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.
-
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.
-
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 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 test | Browser fleet | |
|---|---|---|
| Who drives the browser | MaxoPerf runs your recorded or scripted scenario | Your own Selenium/Playwright client, running wherever your suite already runs |
| Best for | Load 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 |
| Lifecycle | MaxoPerf starts, drives, and ends every session | You open and close sessions against a long-lived fleet endpoint over its lifetime |
| Concurrency model | Set 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 |
The endpoints
Section titled “The endpoints”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:
| Protocol | Endpoint | Browsers |
|---|---|---|
| WebDriver (Selenium Grid) | https://app.maxoperf.com/browser-fleets/<fleetId>/wd/hub | chrome · 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.
Authentication in one line
Section titled “Authentication in one line”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
Authorizationheader, or themaxoperf:options.tokencapability 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.
What gets captured
Section titled “What gets captured”Every session gets all four signals (video, steps, console, and HAR) on every browser and every protocol.
| Browser | Protocol | Video | Steps | Console | HAR |
|---|---|---|---|---|---|
| chrome | WebDriver | ✅ | ✅ | ✅ | ✅ |
| edge | WebDriver | ✅ | ✅ | ✅ | ✅ |
| firefox | WebDriver | ✅ | ✅ | ✅ | ✅ |
| chrome | Playwright | ✅ | ✅ | ✅ | ✅ |
| edge | Playwright | ✅ | ✅ | ✅ | ✅ |
| firefox | Playwright | ✅ | ✅ | ✅ | ✅ |
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.
Inspecting sessions after the fact
Section titled “Inspecting sessions after the fact”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.
Next steps
Section titled “Next steps”See also
Section titled “See also”- Browser tests: write a new scenario inside MaxoPerf instead of driving your own client.