RUVIOLTAModern testing platform v3.0.1
All-in-one Web + API + Android testing

One test flow.Web + API + Android.Your rules.

Ruviolta 3.0.1 brings browser automation, first-class API testing and native Android testing into the same readable .ut (User Testing) language. Run on virtual or real Android devices without maintaining a separate mobile test project or runner.

✓ Web + API + Android✓ Virtual + real devicesOne .ut languageWindows · Linux
New in Ruviolta 3.0.1

Android joins the Ruviolta testing platform.

Provision Android only when you need it, then use the same readable test language against the Ruviolta Emulator or a connected real device. Native inputs, selects, switches, checkboxes, file uploads, scrolling and application lifecycle commands are ready for end-to-end mobile flows.

Android initVirtual devicesReal devicesNative controlsFile upload
Quick start

From empty folder to UI + API examples

Full setup
1

Create a Node project

npm init -y
2

Install Ruviolta

npm install -g ruviolta
3

Initialize workspace

ruviolta init
4

Run a tagged example

ruviolta run projects/example "@exampleDomain"
Quick start
npm init -y
npm install -g ruviolta
ruviolta init
ruviolta run projects/example "@exampleDomain"

The run examples use the ruviolta executable. With a project-local npm installation, prefix the same command with npx unless Ruviolta is already available on your shell PATH.

Core platform

One platform instead of separate Web, API and mobile worlds

◎

Driver-free browser UI

Chrome and Edge use CDP. Firefox uses WebDriver BiDi. No separate browser drivers to download or keep in sync.

↯

First-class API testing

Use api(), assertions, capture, OAuth 2.0, GraphQL, SOAP, polling, WebSocket and SSE directly inside .ut files.

A

Native Android testing

Use the same project model and readable commands with the Ruviolta Emulator or a connected physical Android device. Android support is downloaded only after explicit initialization.

⇄

Mixed UI + API flows

Go UI → API → UI or API → UI → API in one scenario. The browser starts lazily only when a browser step is actually reached.

◇

API-aware Stepflow

Debug API-only tests in the standalone Stepflow window, then continue inside the injected panel when a mixed flow reaches the browser.

▤

Unified reports

Browser steps, API requests, assertions, captures, reusable flows, cases, cleanup and screenshots stay together in the same project report.

↗

Reusable parameterized flows

param() declares bindable flow inputs, run() accepts positional and named invocation values, output() returns data, and nested or cross-project flows keep their own local scope.

Optional Android setup

Download mobile support only when you need it

Android setup
Terminal
ruviolta android init
ruviolta mobile start android
ruviolta mobile app install android projects/android/demoData/Ruviolta-Demo-1.1.2.apk
ruviolta run projects/android "@demoTest"
ruviolta mobile stop android

A clean Web/API install by default

ruviolta android init detects Windows or Linux, downloads and verifies the matching Android package, installs the managed runtime outside your workspace, and creates only the editable projects/android example.

Verified downloadVirtual + realNon-destructive init
Powerful by design

Advanced capabilities that stay readable

W

Parallel Workers

Run explicit isolated lanes concurrently. Each Worker owns its runtime, browser session, variables and login state.

▣

Multiple isolated windows

Switch with openWindow() while each declared window keeps an independent browser process and profile.

⇄

Network mocking

Return custom responses, block requests or introduce deterministic delay with scenario-scoped browser network mocks.

▶

Failure evidence

Optional failure video, screenshots, browser console evidence and unified nested reports make failures easier to understand.

Shadow DOMNested iframesSession reuserunRepeated()
Mixed UI + API example

Request → verify → capture → continue in the browser

mixed-ui-api.ut
File Description: Mixed UI and API example

@mixedUiApiExample
Scenario: Move from UI to API and back to UI
  Variables:
            let userId = 1

        waitForText("body", "Example Domain", 5000)
        clickLink("Learn more")
        waitForUrlContains("iana.org", 5000)

        api("GET", "/users/{id}", {
          path: { id: userId }
        })

  Verify:
        expectStatus(200)
        expectHeader("content-type", /json/)
        expectJson("$.id", userId)
        expectExists("$.name")

        captureJson("$.id") -> verifiedUserId

        visit("https://example.com/?verifiedUser=" + verifiedUserId)
        waitForUrlContains("verifiedUser=1")
        waitForText("body", "Example Domain")

No mode switch

UI and API are simply different kinds of Ruviolta steps. Conditional UI waits can optionally use a timeout in milliseconds as their final argument; when omitted, the project timeout is used. Captured response data can immediately drive browser navigation, reusable flows, cleanup, or another API request.

Verify:captureJson()lazy browser
API capabilities

More than basic REST requests

HTTP

Requests & auth

Path/query parameters, headers, cookies, JSON, form, text, binary, multipart, Bearer, Basic, API keys and custom signing.

✓

Assertions & capture

Status, headers, cookies, deep JSON, schema, XPath, response time, text, grouped Verify:, captureJson() and captureXPath().

GQL

Protocols

GraphQL, SOAP 1.1/1.2, OAuth 2.0 and polling use the same response, report and debugger model.

↭

Realtime

Named WebSocket and SSE sessions support send/receive, filtering, counts, timeouts and deterministic cleanup.

Browser support

One project model across supported browsers

BrowserProtocolWindowsLinux
Google ChromeChrome DevTools ProtocolSupportedSupported
Microsoft EdgeChrome DevTools ProtocolSupportedSupported
Mozilla FirefoxWebDriver BiDiSupportedSupported
API-only means no browser: a project can omit the UI baseUrl and use only api.baseUrl. In mixed flows, Ruviolta starts the configured browser only when the first browser command is reached.
Release focus

Ruviolta 3.0.1

3.0.1

Android joins the platform

Virtual and real devices, native controls, application lifecycle, file upload, contextual selectors, project data and lazy platform provisioning extend Ruviolta beyond the browser and API.

.ut

User Testing, one readable language

The same .ut file format and project model cover Web UI, API, Android and reusable cross-project flows without separate runners.