Skip to main content

🤖 nRobo — Next-Gen Test Automation for Selenium (with Playwright Superpowers)

nRobo brings the modern selector engine, autowait magic, and fluent APIs of Playwright, while staying fully compatible with Selenium WebDriver.

It’s built for QA teams who want stability, readability, and zero flakiness — without migrating away from the Selenium ecosystem.


Modern selectors + AutoWait + Collections + Allure reporting + CI-ready packaging. nRobo = Playwright-level power with Selenium-level compatibility.

⭐️ Why nRobo?

Because Selenium is powerful — but outdated.

Because Playwright is modern — but incompatible with Selenium ecosystems.

Because flaky UI tests cost time, money, and reputation.

nRobo solves all three*.

🚀 30-Second Quick Demo

def test_login(page):
    page.selector("text=Login").click()
    page.selector("#email").fill("admin")
    page.selector("#password").fill("secret")
    page.selector("button:has-text('Login')").click()
    page.selector("text=Welcome").should_be_visible()

This works on Selenium, but feels like Playwright.

🔥 nRobo vs Selenium vs Playwright

Capability Selenium Playwright nRobo
AutoWait on all actions ❌ ✅ ✅
text= selectors ❌ ✅ ✅
has-text(), has() ❌ ✅ ✅
Shadow DOM >>> ⚠️ ✅ ✅
Locator Collections ❌ ✅ ✅
Chaining: click().fill().should() ❌ ❌ ✅ (Exclusive)
Selenium WebDriver support ✅ ❌ ✅

nRobo = Playwright’s power + Selenium’s reach + its own exclusive features

✨ Exclusive Features (Only in nRobo)

1. Locator Action Chaining (Exclusive)

A fluent API inspired by Playwright but designed for Selenium:

page.selector("input").click().locator("#email").fill("admin").should_be_visible()

Mix CSS, XPath, Text, Regex, Pseudo, and Shadow selectors seamlessly.

🔧 Enable/Disable:

settings.ENABLE_LOCATOR_ACTION_CHAINING = True

📄 Full documentation:

➡️ docs/locator_action_chaining.md

2. Advanced Selector Engine (Playwright-level)

Supported:

  • text=Login

  • "Login"

  • regex: /login/i

  • :visible, :enabled, :checked

  • :has() + :has-text()

  • shadow:: pierce selectors

page.selector("form:has(input[name=email]) >> button:visible").click()

3. Autowait Engine (Eliminates 95% Flakiness)

  • Retries

  • Scroll into view

  • Visibility checks

  • Stale element handling

  • WebDriverWait on every action

page.selector("#login").click()  # auto-waits

4. Locator Collections API

rows = page.selector("tr").all()
rows.filter(has_text="Active").first().click()

Supports:

  • .all()

  • .first(), .last(), .nth(i)

  • .filter()

  • .map()

  • set-like operations

6. 🔌 API Testing Support

5. Modern Reporting (HTML + Allure)

  • Automatic screenshots

  • Logs with timestamps

  • Optional built-in Nginx Allure server

📦 Installation

pip install nrobo
nrobo init --app my_project
nrobo

📘 Documentation

All inside the docs/ directory.

🧱 Project Structure

nrobo/
  src/nrobo/
  docs/
  suites/
  tests/

🛠 Developer Guide

black src/ tests/
flake8 src/ tests/
pytest --cov=src/

Pull requests welcome!

MIT License

© 2025 pancht

Metadata

Release files for nrobo 2025.5.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nrobo 2025.5.7
File Size Uploaded
nrobo-2025.5.7.tar.gz 88.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nrobo 2025.5.7
File Interpreter ABI Platform
nrobo-2025.5.7-py3-none-any.whl Python 3 none any Details

Total release size: 192.6 kB

Release files / nrobo-2025.5.7.tar.gz

Download URL nrobo-2025.5.7.tar.gz
Size 88.9 kB
Tags Source
SHA-256 checksum
How to use checksums
ac9a53f608f4edfa7de93dc5c122e61fadf53202a077ae146782f8cd47652deb
BLAKE2b-256 checksum
How to use checksums
1c7dee95308a970cc5216c3f8499130408845e053676868f33ba87431dfbfbde
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / nrobo-2025.5.7-py3-none-any.whl

Download URL nrobo-2025.5.7-py3-none-any.whl
Size 103.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
781299da2280969fb69a05730cce4d3eb6b574b01030a60049f1adae47059111
BLAKE2b-256 checksum
How to use checksums
4827b8ba5bf0cd22bc4ae4cdd6d2b02af15a997a13869267dd2588b29364f26e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release history Release notifications | RSS feed

This release

2025.5.7 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page