Skip to content

Domain Tools

Domain tools handle test creation, execution, exploration, security auditing, GitHub integration, and healing. Some work locally without cloud, while others require cloud authentication.

Testing & Exploration

test

Start a test session. Launches a browser, navigates to the URL (if provided), captures a page snapshot and screenshot, and returns a structured prompt for your AI assistant to execute test scenarios using the browser tools.

ParameterTypeRequiredDescription
descriptionstringYesWhat to test, in natural language
urlstringNoApp URL to test against
projectstringNoProject name (auto-saved to .fasttest.json)
devicestringNoDevice to emulate (e.g., iPhone 15, Pixel 7)
{
"description": "Test the checkout flow with a guest user",
"url": "https://shop.example.com",
"project": "E-Commerce"
}

Your AI assistant receives the page snapshot and follows the returned prompt to drive browser interactions — clicking, filling, asserting — using browser tools. No cloud LLM is involved.

explore

Explore a web application autonomously. Navigates to the URL, captures a snapshot and screenshot, and returns a structured prompt for your AI assistant to breadth-first survey the app — discovering pages, forms, CRUD flows, and error states.

ParameterTypeRequiredDescription
urlstringYesStarting URL
max_pagesnumberNoMax pages to explore (default: 20)
focusenumNoforms, navigation, errors, or all (default: all)
devicestringNoDevice to emulate
{
"url": "https://myapp.example.com",
"focus": "forms"
}

vibe_shield

One-command safety net for regression testing. Say “vibe shield my app” and FastTest Agent explores the app, generates test cases, saves them as a suite, and runs a baseline.

ParameterTypeRequiredDescription
urlstringYesApp URL to protect
projectstringNoProject name (auto-saved to .fasttest.json)
suite_namestringNoSuite name (default: Vibe Shield: <domain>)
devicestringNoDevice to emulate

First run: Returns a prompt to explore the app and build a test suite. Subsequent runs: Returns a prompt to run the existing suite and check for regressions.

{
"url": "https://myapp.example.com",
"project": "MyApp"
}

security_audit

Unified security testing with three modes: static code analysis (SAST/SCA), dynamic browser adversarial testing (DAST), or both. Say “secure my app” to trigger a full audit.

ParameterTypeRequiredDescription
modeenumNostatic, dynamic, or full (default: full)
directorystringNoDirectory to scan for static analysis (default: cwd)
urlstringConditionalURL for dynamic testing (required for dynamic and full modes)
focusenumNoDynamic focus: forms, navigation, auth, or all (default: all)
durationenumNoquick or thorough (default: thorough)
projectstringNoProject name for saving report
devicestringNoDevice to emulate for dynamic testing
severity_thresholdenumNoMinimum severity for static results: critical, high, medium, or low (default: low)
run_modeenumNoauto re-runs existing suite, interactive forces fresh testing
{
"mode": "full",
"directory": "/path/to/project",
"url": "https://myapp.example.com",
"focus": "forms",
"duration": "quick"
}

Static mode (SAST + SCA) — scans source code with opengrep and dependencies with Trivy. Finds vulnerabilities, secrets, misconfigurations, and known CVEs. Binaries are auto-downloaded on first use.

Dynamic mode (DAST) — browser adversarial testing:

  • XSS payloads, SQL injection strings, boundary values
  • Extremely long inputs, special characters, Unicode
  • Auth bypass attempts (direct URL access, session manipulation)
  • Console error monitoring and network failure detection

Full mode — runs both, then cross-references: findings confirmed by both static and dynamic analysis are flagged as “confirmed exploitable”.


Suite Management

save_suite

Save test cases as a reusable test suite in the cloud. If a suite with the same name already exists in the project, it will be updated automatically (test cases matched by name — existing updated, new added, unmentioned kept).

ParameterTypeRequiredDescription
suite_namestringYesName for the test suite
descriptionstringNoWhat this suite tests
intentstringNoWHY these tests exist (powers Provenance page)
test_typeenumNofunctional (default) or security
projectstringNoProject name (auto-resolved or created)
sessionstringNoDefault browser session for all test cases
setuparray/objectNoLogin steps (single role: array, multi-role: map)
test_casesarrayYesArray of test cases (see below)
chaos_findingsarrayNoSecurity findings to save as a report
chaos_urlstringNoURL tested during security audit session

Each test case has:

FieldTypeRequiredDescription
namestringYesTest case name
descriptionstringNoWhat this test verifies
priorityenumNocritical, high, medium, or low
stepsarrayYesTest steps (see actions below)
assertionsarrayYesAssertions to verify
tagsstring[]NoTags for categorization
statusenumNopassed or failed — records the result from your interactive session

Step actions: navigate, click, fill, fill_form, hover, select, wait_for, scroll, press_key, upload_file, evaluate, go_back, go_forward, drag, resize, assert

Every step should include an intent field — a plain-English description of what the step does, used for self-healing context.

Security findings can be attached when saving security test results. Each finding has:

FieldTypeRequiredDescription
severityenumYescritical, high, medium, or low
categorystringYese.g., xss, injection, crash, validation, error, auth
descriptionstringYesWhat was found
reproduction_stepsstring[]YesSteps to reproduce
console_errorsstring[]NoCaptured console errors

Execution

run

Execute a test suite. Fetches test cases from the cloud, runs each one in a local Playwright browser, attempts self-healing on failures, and reports results with regression detection.

ParameterTypeRequiredDescription
suite_idstringNoSuite ID (provide this OR suite_name)
suite_namestringNoSuite name (resolved automatically)
environment_namestringNoEnvironment to run against (e.g., staging, production)
test_case_idsstring[]NoSpecific test case IDs (default: all in suite)
pr_urlstringNoGitHub PR URL for posting results as a comment
devicestringNoDevice to emulate
{
"suite_name": "Login Flow",
"pr_url": "https://github.com/myorg/myrepo/pull/42"
}

Example output:

Test Run PASSED
Execution ID: exec-789
Total: 5 | Passed: 4 | Failed: 0 | Skipped: 1
Duration: 12.3s
PASSED Login with valid credentials (2100ms)
PASSED Add item to cart (3400ms)
PASSED Guest checkout flow (4200ms)
PASSED Order confirmation page (1800ms)
SKIPPED Payment with Apple Pay (800ms)
Self-Healed: 1 selector(s)
"Add item to cart" step 2
#add-to-cart -> [data-testid="add-to-cart"]
Strategy: data_testid (98% confidence)
Regression Diff:
Regressions: 0 | Fixes: 1 | New: 0

status

Check execution status or backend health.

ParameterTypeRequiredDescription
execution_idstringNoExecution ID to check (omit for health check)
base_urlstringNoOverride URL for health check

With execution_id: returns execution details (status, results, timing). Without execution_id: checks if the FastTest backend is reachable.

cancel

Cancel a running test execution.

ParameterTypeRequiredDescription
execution_idstringYesExecution ID to cancel

Setup & Configuration

setup

Authenticate with the FastTest Agent cloud via device auth flow. Opens a browser for secure login, then saves the API key locally.

ParameterTypeRequiredDescription
base_urlstringNoCloud API URL (default: https://api.fasttest.ai)

The flow:

  1. Requests a device code from the cloud
  2. Opens a browser to the verification URL
  3. Polls until you complete authentication
  4. Saves API key to ~/.fasttest/config.json

Project & Suite Listing

list

List projects, suites, or test cases in a single tool.

ParameterTypeRequiredDescription
typeenumYesprojects, suites, or cases
searchstringNoFilter suites by name (only for type='suites')
suite_idstringNoSuite ID (only for type='cases')
suite_namestringNoSuite name (only for type='cases')

Examples:

{ "type": "projects" }
{ "type": "suites", "search": "checkout" }
{ "type": "cases", "suite_name": "Login Flow" }

GitHub Integration

github_token

Set the GitHub personal access token for PR integration. The token is encrypted and shared across your organization.

ParameterTypeRequiredDescription
tokenstringYesGitHub PAT with repo scope

Healing

heal

Heal a broken selector or view healing history.

Heal mode (provide selector): Runs the 5-strategy healing cascade against the current page. If all local strategies fail, returns a page snapshot for your AI assistant to reason about.

ParameterTypeRequiredDescription
selectorstringNoThe broken CSS selector to heal
page_urlstringNoURL where the selector broke (defaults to current page)
error_messagestringNoThe Playwright error message
show_historybooleanNoSet to true to view healing patterns and statistics
limitnumberNoMax patterns to return when show_history=true (default: 20)
{ "selector": "#old-submit-btn" }

Success response:

Selector healed!
Original: #old-submit-btn
New: [data-testid="submit-btn"]
Strategy: data_testid (98% confidence)

Failure response: Returns a page snapshot and prompt for your AI assistant to suggest alternatives based on the current DOM.

History mode (show_history: true):

{ "show_history": true }
Healing Statistics
Total healed: 47
Patterns stored: 12
Avg confidence: 92%
Strategy breakdown:
data_testid: 23 heals
aria: 11 heals
text: 8 heals
structural: 5 heals