E2E tests that read like specs

Vanya is a constrained DSL for end-to-end tests. Write once, transpile to Python, JavaScript, and more.

๐Ÿ“–

Readable

Tests read like specifications. No boilerplate, no ceremony.

๐Ÿ”„

Portable

Write once, transpile to Playwright, Requests, Cypress, and more.

๐Ÿ›ก๏ธ

Type-safe

Static analysis catches errors before runtime. Plugin schemas validate your tests.

๐Ÿงฉ

Extensible

Add new frameworks with TOML plugin files. No code changes required.

Write this, get that

Vanya transpiles your readable test specs into production-ready test code for your framework of choice.

login.vanya
vanya 0.1
"User can log in"

within Browser (plugin: playwright-python, type: browser)
  go to "https://example.com/login"
  type "user@example.com" into "Email"
  type "password123" into "Password"
  click "Sign In"
  see "Welcome back"
test_login.py (generated)
# Generated by vanya
from playwright.sync_api import sync_playwright

def test_user_can_log_in():
    with sync_playwright() as p:
        browser = p.chromium.launch()
        page = browser.new_page()
        page.goto("https://example.com/login")
        page.fill("[placeholder='Email']", "user@example.com")
        page.fill("[placeholder='Password']", "password123")
        page.click("text=Sign In")
        assert page.locator("text=Welcome back").is_visible()
        browser.close()

Install in seconds

npm install -g vanya