Runs tied to one machine
Every execution means a terminal, the right config, browser, environment and filters - then collecting and sharing the HTML report by hand.
A product of ExpandIt · version 1.6 · actively developed
A Roman legionary carried his own stakes. Each evening, after the march, the camp's palisade went up from what the soldiers already had - no supply line, no waiting for anyone.
Vallus works the same way. Every instance runs on your own infrastructure and answers to nothing outside it. No telemetry, no licence server, no call home. Once it is installed it needs no route to the internet at all.
The Playwright CLI works for a single developer. vallus turns your existing Playwright projects into managed, repeatable workflows that anyone on the team can trigger - on demand, on a schedule, or from CI - with reports, traces and cross-run analytics in one place.
vallus in 30 seconds · voice-over, captions in the video · full 2-minute tour below
About the product
vallus /ˈva.lʊs/
noun, Latin
A sharpened stake driven into the crown of a rampart. In the plural, valli: a palisade.
Roman legionaries carried their stakes with them. The camp was not delivered - it was raised each evening from what every man had brought, and taken down again at dawn. The defence worked because it required nothing from outside the column.
That is the model Vallus is built on. Each deployment is a self-contained instance: the runner, the dashboard, reporting and access control, all on your own machine from the first minute. It runs inside networks with no route to the internet, and it does not phone home - the licence is verified locally, by signature, with nothing to check in with.
Every engineer on the team drives their own stake. The perimeter is what you build together.
The problem
Every organisation that adopts Playwright hits the same wall - and rebuilds the same scripts, spreadsheets and shared folders to work around it, once per project and per team.
Every execution means a terminal, the right config, browser, environment and filters - then collecting and sharing the HTML report by hand.
Testers and product people depend on a developer to start a suite, so verification queues up behind someone else's day.
There is no central place to run nightly suites or to fire a run from a pipeline when a build lands.
Without run history, flaky tests and slow regressions stay invisible until they break a release.
Reports live in folders on laptops, traces are awkward to share, and nobody can answer "was this green last week?"
Nothing decides who may run what against which environment - a real problem once staging and production data are involved.
What vallus does
It works with your existing projects as they are - same configs, same projects, same environments. No code changes, no rewriting of tests.
Register any number of Playwright projects behind one entry point. Several teams share a single instance, each with its own dashboard and its own access rules.
Define a run once - config, browser, test filters, environment variables, steps in sequence - and let anyone repeat it exactly, without touching a terminal.
Nightly regression, hourly smoke, or a one-off run at 3 a.m. Runs beyond the licensed limit wait in a queue instead of fighting over the same machine.
A run gets a container of its own, built from that project's code and its installed dependencies. Two runs cannot overwrite each other's generated sources or reports, so several can execute side by side on one server.
Each version of a suite becomes its own image, named after the commit it was built from. Rolling back to a known-good suite means running an older tag - no git operation, nothing rebuilt.
The image is chosen from the @playwright/test each project actually has installed, so a suite on 1.55 and one on 1.60 run on the same instance without either being upgraded to suit the other.
Point the runner at a repository and it clones the suite itself - including a subdirectory of a monorepo. An instance SSH key is generated for you to add as a deploy key, so nothing has to be arranged on the host first.
Trigger workflows from Jenkins, GitHub Actions, Azure or any pipeline with a token-authenticated HTTP call, and pick up the result programmatically.
Playwright HTML reports, Allure trends and the trace viewer are served straight from the dashboard - no zipping folders, no sharing files by hand.
Run history in SQLite turns into trends: flaky tests, newly failing specs, duration drift, step-level summaries, and CSV export for reporting.
Viewer, executor, admin and superAdmin roles, plus per-workflow permissions - so the people who may run against production are exactly the ones you chose.
Connect Keycloak, Entra ID or any OIDC provider with just-in-time account provisioning, and keep a break-glass local admin for emergencies.
Every workflow variable says where it comes from: a value typed in, a secret encrypted with the instance key, or a reference resolved from OpenBao or HashiCorp Vault when the run starts. Nothing sensitive sits in a .env file between runs, and a rotated credential takes effect on the next run without anyone editing a file.
Node/TypeScript Playwright projects and Python pytest-playwright suites run side by side under the same dashboard, roles and history. Node projects install with npm or bun, chosen per project.
Built-in certificate generation, TLS serving, and signed license keys - required anyway once the trace viewer is used from outside localhost.
Push execution results to Xray test executions and link runs back to Jira issues, so manual and automated coverage live in one report.
Runs, reports, traces and history stay on your infrastructure. Nothing is sent externally, no telemetry is collected, and once installed the product needs no internet connection.
How it works
Product tour · 2 min · voice-over, captions in the video
vallus ships as a package with its dependencies inside. Unzip it on any machine with Node.js, run npm install to add the database module for your platform, then npm start. It runs against the Playwright projects you already have.
unzip vallus-X.Y.Z.zip && cd vallus
npm install
npm start # dashboard on http://localhost:3000
# optional - HTTPS, needed for the trace viewer off localhost
npm run tls:cert
npm run start:tlsA compose file ships with the product: the runner behind a TLS proxy, with certificates handled for you. This is the mode where each run gets a container of its own, so several suites can execute side by side - it needs a Docker daemon the runner can reach.
# edit docker-compose.yml: point the project volume at your tests
docker compose up -d --build # dashboard on https://localhost:3000
# each run now gets its own container
docker ps --filter label=vallus.projectThe rest is the same either way
A setup wizard creates the first admin account and registers your Playwright projects - by folder path, or by cloning them straight from Git, including a subdirectory of a monorepo. Your test code stays untouched.
Compose runs from config, browser, filters and environment, assign who may execute them, then trigger on demand, on a schedule or from CI.
Open the HTML report or the trace for any run, watch Allure trends, and use cross-run analytics to spot flakiness and regressions early.
Fits your stack
vallus sits between the tools you already run. Everything below is configuration - nothing requires changes to your test code. The list is a snapshot: new integrations are added continuously, so if yours is missing, it is most likely a request away.
Playwright Test
Node.js / TypeScript, your existing configs
pytest-playwright
Python suites in the same dashboard
Playwright HTML report
Served per run
Allure
Trends and history across runs
Trace viewer
Hosted, shareable over HTTPS
Grafana
Run metrics for your own dashboards
ReportPortal
Optional result forwarding
Jenkins
Webhook-triggered runs
GitHub Actions
Token-authenticated triggers
Azure DevOps
Any pipeline with an HTTP step
Git
Pull the project before a run
Jira
Link runs back to issues
Xray
Push test executions
Keycloak / OIDC
SSO with JIT provisioning
TLS certificates
Generated or bring your own
Actively developed
You are buying something that is still being built - and the roadmap is open to the teams that use it.
vallus is under active development, not in maintenance mode. Releases land regularly, and every one of them is included in a running subscription at no extra cost.
The integration list grows constantly - reporting backends, issue trackers, identity providers, CI systems. What is listed on this page is the state today, not the ceiling.
Need a system that is not supported yet? Tell us. Integration requests from customers are how most of the current list came to exist, and Business and Enterprise tiers get theirs prioritized.
The product wraps your Playwright projects instead of owning them, so new versions do not ask you to rewrite tests. Your configs, your repository, your history stay as they are.
Missing an integration you depend on? Ask for it - most are a matter of configuration and a release, not a project.
Request an integrationDeployment and security
Once installed, vallus needs no outbound connection: no telemetry, no licence server, no update check. The licence is verified locally by signature. Installation itself fetches one native database module for your platform, which can be staged in advance for a disconnected network.
Runs, reports, traces and history are written to your own server. Nothing about your application, your environments or your test data leaves the perimeter.
Any machine with Node.js will do - a VM, a container, or a workstation. Optional extras such as Allure and HTTPS/TLS are configuration, not a separate install.
Giving each run its own container needs a Docker daemon the runner can reach; a compose file ships with the product. Without one it still runs every suite as before, in-process - the isolation is an upgrade, not a prerequisite.
Signed license keys, TLS, OIDC single sign-on with a break-glass local admin, role-based permissions and per-workflow grants for executors.
Licensing
All prices are net, in EUR, excluding VAT. Every tier is self-hosted on your own infrastructure. Evaluation is free for 21 days with full functionality - no card, no auto-renewal.
€0
6-month term, renewable
For small teams and evaluation - the core runner at no cost.
€2,400
per year
A single QA team putting its first suites behind a dashboard.
€6,000
per year
Several teams sharing one instance, with Jira/Xray in the loop.
from €14,000
per year
Organisation-wide rollout with an SLA and an agreed backlog.
* Running tests in parallel requires a Docker daemon the runner can reach - each run then gets a container of its own. Without one vallus still runs every suite, one at a time.
A perpetual, non-exclusive license with full source access and the right to modify the code for internal use - for organisations that need independence from the vendor, a code audit, or source escrow. One-time fee, first 12 months of maintenance included, 20% per year thereafter. Subscription fees paid in the first 24 months are credited in full against it.
FAQ
The manufacturer
A better quality starts now.
ExpandIt designs, builds and licenses vallus. The product is not a side project of a larger platform - it is the whole of what we do, and it grew out of years of hands-on work in software testing: functional UI tests first, but also unit, integration, performance and stress testing.
Much of that work was test automation - across Selenium WebDriver, Cypress, Appium, Protractor, Puppeteer, Cucumber and SpecFlow, with Jenkins, GitHub, Azure, Jira and Xray around them. vallus is the tool that kept being missing on those engagements: the layer that makes an automated suite something a whole team can run, govern and trust - not just the people who wrote it.
We build for the way testing teams actually work: self-hosted, inside your network, on top of the Playwright projects you already maintain. Nothing you run depends on us staying online.
Book a demo
Pick a slot that suits you and tell us a little about your setup. We walk through the launcher, a multi-step workflow, a live run, the trace viewer and cross-run analytics - then hand you a 21-day trial key if you want to try it yourself.