Skip to content

Browser performance testing

Protocol-level load testing tells you how many requests per second your server can handle. Browser performance testing tells you what a real user actually experiences: page load time, JavaScript render, Core Web Vitals, and every network call a modern SPA makes. This section explains the difference, when real browsers add value, and how MaxoPerf fits into each approach.

Protocol load tools — JMeter, k6, Taurus native — send raw HTTP requests directly from the runner process. There is no browser, no JavaScript engine, and no rendering. The runner measures:

  • Raw HTTP response time from first byte to last byte.
  • Throughput (requests per second).
  • Error rates by HTTP status code.

This is fast and cheap: a single runner CPU core can sustain thousands of protocol VUs. Protocol load is the right tool for answering “how many concurrent users can my server handle?”

Browser VUs drive actual Chromium or Firefox instances. Each browser:

  1. Fetches the HTML document.
  2. Parses and executes JavaScript (including framework boot, hydration, SPA routing).
  3. Renders the page, loads web fonts, images, and third-party scripts.
  4. Reports browser-side timing: Navigation Timing, Largest Contentful Paint (LCP), Cumulative Layout Shift (CLS), Interaction to Next Paint (INP), Time to First Byte (TTFB).

This is expensive: a single browser VU can use 10× the CPU and memory of a protocol VU. Browser testing is the right tool for answering “what does a user actually experience?”

Use browser-level testing when the question cannot be answered with protocol metrics alone:

  • Core Web Vitals measurement — LCP, CLS, INP, TTFB require a real browser rendering pipeline.
  • SPA correctness under load — client-side routing, lazy-loaded chunks, and hydration failures are invisible at the protocol level.
  • Third-party script impact — analytics, chat widgets, and A/B testing scripts add load only a browser can measure.
  • Front-end regression gate — verifying that a backend slowdown does not push LCP past your SLO.
  • User-journey timing — measuring the full login → dashboard → key action flow end-to-end, including render time.

Use protocol load for everything else: raw throughput, breakpoint capacity, soak endurance, and large-scale concurrency. Protocol load is 10–100× more efficient per VU.

MaxoPerf runs real-browser tests through the Taurus selenium executor (and the wdio executor for JavaScript-based scripts). Taurus manages browser lifecycle, parallelism, and result collection. MaxoPerf handles the runner fleet, result storage, and the run-detail dashboard.

In MaxoPerf you can:

  • Run a Taurus YAML with executor: selenium and a Python WebDriver script.
  • Use a Selenium IDE .side recording as the entrypoint — MaxoPerf detects the executor automatically.
  • Use the wdio executor for WebdriverIO JavaScript scripts.
  • Combine a small number of browser VUs with a large protocol load run (the hybrid pattern).

Playwright is the leading browser-automation and web-vitals measurement library for scripting user journeys. It is not a Taurus executor — you use Playwright scripts as the authoring and web-vitals measurement layer outside a MaxoPerf run, and pair those measurements with MaxoPerf’s scale-out protocol load for backend capacity. See Playwright performance testing for the full pattern.

Use this table to choose the right approach for your goal.

GoalApproachIn MaxoPerf
Find server throughput ceilingProtocol loadJMeter, k6, Taurus native executor
Measure LCP / CLS / INP / TTFBBrowser runTaurus selenium executor
Validate an SPA journey renders correctly under loadBrowser runTaurus selenium executor
Test API endpoints in CIProtocol loadk6 or Taurus HTTP
Combine UX check + backend scale testHybrid (browser VUs + protocol VUs)Two executors coordinated in MaxoPerf
Author a browser script + capture web vitalsPlaywright script (authoring layer)Run Playwright locally; pair with MaxoPerf protocol load
Soak / endurance over hoursProtocol loadAny protocol executor
Pre-release web-vitals gateBrowser smoke (low VUs)Taurus selenium, 2–5 VUs
PageWhat you will learn
Selenium performance testingRunning browser journeys under Taurus selenium in MaxoPerf — YAML, Python scripts, scaling VUs
Playwright performance testingCapturing Core Web Vitals with Playwright scripts; pairing with MaxoPerf protocol load
Browser vs protocol loadFull tradeoff analysis — accuracy, cost, scale, and what each catches
Frontend web vitals under loadMeasuring LCP/CLS/INP while the backend is under protocol stress
Hybrid load architectureCombining many protocol VUs + a few browser VUs in one coordinated MaxoPerf run
Daily browser performance scenariosPre-release gates, checkout journeys, login regressions, marketing-launch checks
Browser performance do / don’tPatterns that work; common mistakes that waste money or produce misleading data

Last updated: