Run tests your way, and gate releases on the results.

Run tests by hand with keyboard shortcuts, or automate them with Playwright. Start runs from CI webhooks or on a cron schedule, or upload results from your own pipeline. Every result ends up in one place.

Manual Execution

Keyboard-first: P to pass, F to fail. Guest access via shareable token for stakeholders who need to validate but don't have accounts. Public submission endpoint for external teams.

Add test cases to an existing run mid-execution. Results per case, tracked and exportable.

Manual Run View
TC-1: Login flowPASS (P)
TC-2: Search resultsPASS (P)
TC-3: Checkout flowFAIL (F)
TC-4: User profilePENDING

Automated Execution

Playwright-based. When a test fails with what looks like a timing or locator error, RuyQA asks a model to suggest a rewrite of the test's steps and runs the rewritten test once.

If the rewrite passes, the result is marked for review and the original failure stays in your failed count. A rewrite can loosen a test enough to hide a real bug, so it is never counted as a pass. Failures that look like real assertion failures are left alone. Run status goes PENDING, RUNNING, then COMPLETED, FAILED or CANCELLED.

Rewrite suggested
Test: User Profile — Edit Name
Error: locator not found: #edit-profile-btn
Diagnosis:

Looks like a locator problem, not a failed assertion.

Suggestion:

Rewritten steps, run once.

Result: passed after a rewrite. Flagged for review. Not counted as a pass.

Automated Execution

Playwright-based. When a test fails with what looks like a timing or locator error, RuyQA asks a model to suggest a rewrite of the test's steps and runs the rewritten test once.

If the rewrite passes, the result is marked for review and the original failure stays in your failed count. A rewrite can loosen a test enough to hide a real bug, so it is never counted as a pass. Failures that look like real assertion failures are left alone. Run status goes PENDING, RUNNING, then COMPLETED, FAILED or CANCELLED.

Rewrite suggested
Test: User Profile — Edit Name
Error: locator not found: #edit-profile-btn
Diagnosis:

Selector changed from #edit-profile-btn to [data-testid="edit-profile"]

Resolution:

Updated selector → [data-testid="edit-profile"] (confidence: 0.87)

Retry: ✓ PASSED (1.1s)

CI Agents

Register remote runner agents. Each agent reports a heartbeat — ONLINE, OFFLINE, or BUSY. Labels and capability metadata for targeted job assignment.

Your CI infrastructure, visible and manageable from RuyQA.

Agent Registry
runner-prod-1ONLINE
runner-prod-2ONLINE
runner-staging-1BUSY
runner-legacyOFFLINE

Webhooks & Scheduling

GitHub Actions, GitLab CI, Jenkins — inbound webhooks trigger automation runs on any build event. Provider-specific payload parsers plus a generic fallback.

Cron scheduling with cron expression and timezone. Link to a suite. Schedules run on cron expressions with a time zone. The last run and the next run are tracked.

Active Schedules
Cron: 0 8 * * 1-5
Suite: smoke-tests
Next run: Tomorrow 08:00 UTC
Cron: 0 22 * * 1-5
Suite: full-regression
Next run: Today 22:00 UTC

Bulk Ingestion

The /api/v1/ingest endpoint accepts authenticated, bulk result ingestion from any CI/CD pipeline. If your pipeline produces test results, RuyQA can receive them.

API Endpoint
POST /api/v1/ingest
Authorization: Bearer {token}

{
  "results": [
    { "test": "TC-1", "status": "passed" }
  ]
}

Start executing.

Your first test run — manual or automated — is minutes away.

Start Free Trial