Skip to content

Vaadin Load Testing Tools #8706

@mshabarov

Description

@mshabarov

Description

Load testing tool that generates and runs load testing scripts automatically based on the existing end-to-end tests in a project and on the given testing profile/parameters.

Tier

Pro

License

Proprietary

Motivation

Background

For Developers: Validate scalability without learning Vaadin internals or load testing tools
For Evaluators: Answer "will this scale?" during 30-day trial period, not after deployment

Problem

Vaadin apps are uniquely hard to load test because of protocol between client and server, i.e. can't just copy-paste request and replay it 100 times:

  • Custom UIDL protocol (not standard REST/GraphQL)
  • Dynamic CSRF tokens per request
  • Stateful server-side sessions
  • Request chaining dependencies (syncId, clientId, components state)
  • No way to reuse existing E2E test logic for load testing

Solution

This tool turns scalability validation from a 2-week consulting efforts into a 10-minute automated task.

  1. You already have TestBench E2E tests (realistic user workflows)
  2. Run test through proxy → captures Vaadin protocol traffic
  3. Tool generates k6 script that handles all protocol complexity
  4. Execute with virtual users according to a given profile (N users, thresholds, time durations etc.)
  5. Get clear answer: "Your app handles 500 concurrent users at 200ms p95 response time, fails at 600 users due to DB connection pool exhaustion".

E2E tests already encode real user behavior. Just replay them at scale without requiring developers to understand how.

Expected capabilities of the tool:

  • Zero protocol expertise: Run existing E2E tests at scale without understanding UIDL/CSRF/session/cookies handling
  • Instant realistic scenarios: Reuse TestBench tests as load test workflows - no separate script writing
  • Result Verification: A way to verify that each virtual user's actions actually succeeded as intended, e.g. did a record actually get created in the database, no duplicated keys/IDs after concurrent requests.
  • Know your limits: Identify breaking points (users, response times, error rates) before production
  • Clear pass/fail: Automated thresholds show if app meets scalability requirements
  • Bottleneck visibility: See where system fails under load (DB, network, memory)

Requirements

  • Supports Vaadin protocol specifics
    • Upload, downloads
    • Vaadin Push
  • Allows setting of pass/fail thresholds
  • Allows response validation checks
  • Supports importing of realistic users data from CSV/DB
  • Performs license check
  • Prints a log message that it's experimental
  • Online documentation

Nice-to-haves

  • Configurable realistic load patterns, ramping profiles
  • Custom metrics - Vaadin-specific measurements in addition to sessions, UIs.
  • K6 autoinstallation.
  • Export and view test results as HTML, PDF, CSV, plain text reports.

Implementation Plan

  1. Integration
    • Integrate PoC into TestBench
    • Draft reference documentation
    • Release TestBench 10.2.0-alpha1 with a feature flag
  2. Validation
    • Demo sessions with pilot customers
    • Collect feedback on fit/gaps
    • Prioritize must-haves
  3. MVP
    • Implement critical features from feedback
    • Complete PoC→MVP transition
    • Target GA in 25.2 (June 2026)

Risks, limitations and breaking changes

Risks

Major PoC rework after pilot demos to customers, thus we need to start these session ASAP.

Limitations

Grafana k6 provides solid open-source foundation thus selected as a tool for running load scripts; other tools like Gatling, JMeter can be considered in the future.
TestBench is used as a source of E2E tests, Playwright can be considered in the future.
Maven plugin is the only way, we can consider Gradle plugin or another way of running the tool in the future.
Spring Actuator is used for basic metric from the app, for now we only consider Spring apps.

Breaking changes

No breaking changes are anticipated, this is a new module in TestBench.

Out of scope

No response

Materials

No response

Metrics

No response

Pre-implementation checklist

  • Estimated (estimate entered into Estimate custom field)
  • Product Manager sign-off
  • Engineering Manager sign-off

Pre-release checklist

  • Verified with pilot customer
  • Documented (link to documentation provided in sub-issue or comment)
  • UX/DX tests conducted and blockers addressed
  • Approved for release by Product Manager

Security review

The load testing tool is an external utility and is not integrated into the application or its runtime environment. As such, it does not affect the application's security posture and does not require a security review.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    June 2026 (25.2)

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions