Skip to main content

AI-driven functional testing agent. Point it at a URL; it explores the app, generates a test plan, runs it, and reports findings. Web + visual regression + accessibility in v0.1; API + mobile in later versions.

Project description

Sentinel

Point it at a URL. It explores the app, generates a test plan, runs it, and reports findings. Web + visual regression + accessibility in v0.1; API + mobile in later versions.

PyPI License: MIT Status Built by ThinkNext

Status: alpha, live on PyPI as sentinel-agent==0.1.0a1. Web + visual regression + accessibility ship today. API testing in v0.1.0a2; mobile (React Native) in v0.1.0a3.

Install: pip install sentinel-agent · Repo: GitHub · Issues: file one

What it does

Point Sentinel at a URL:

sentinel run https://your-app.com

In one command, the agent:

  1. Opens the URL in headless Chromium
  2. Reads the rendered HTML + visible text
  3. Asks the LLM to generate a focused test plan (2-5 scenarios, 3-8 steps each)
  4. Runs the plan in fresh browser sessions per scenario
  5. Captures screenshots and compares against baselines (visual regression)
  6. Scans each page state for WCAG 2.1 AA violations (axe-core)
  7. Reports findings: failed scenarios, visual diffs, accessibility issues, with cost

Why this exists

The same teams that need Cascade (meeting-to-PR) and Relay (issue-to-PR) need a way to verify that the PRs those agents produce actually work. Hand-writing Playwright tests for every feature is the bottleneck. Sentinel removes the bottleneck: generate tests with the same LLM that writes the code.

Sentinel sits next to Cascade and Relay as the third ThinkNext open-source product. Shared internals (LLM clients, error types) come from cascade-agent.

Install

pip install sentinel-agent

# One-time: install the Chromium binary Playwright needs
playwright install chromium

Configure

# Reuses cascade-agent's credentials; configure once for all three products
cascade configure llm anthropic --key sk-ant-xxx --set-default

If you want a project-local config (highly recommended; lets you set viewport, baseline directory, accessibility thresholds):

sentinel init

This scaffolds sentinel.yaml with sensible defaults you can edit.

Run

sentinel run https://cascadeagent.dev

# Output (truncated):
#   ✓  3/3 scenarios passed, 0 visual diff(s), 2 a11y violation(s)
#
#   ✓  Homepage loads and primary CTA is visible  (1.42s)
#   ✓  Get-started link navigates to /getting-started/  (1.83s)
#   ✓  Docs sidebar contains all expected sections  (2.10s)
#
#   Accessibility violations:
#     [moderate] color-contrast: Elements must meet minimum color contrast...
#       sample: .text-slate-500
#       (3 node(s) affected)
#     [minor] image-alt: Images must have alt text...
#       sample: img.hero-illustration
#       (1 node(s) affected)
#
#   cost:    $0.04 (5,210 in / 980 out tokens)

What ships in v0.1.0a1

Capability Status Module
Web testing via Playwright sentinel.browser, sentinel.runner
LLM-driven test plan generation sentinel.planner
Visual regression (PIL pixel diff) sentinel.visual
Accessibility scan (axe-core 4.10) sentinel.a11y
Multi-page exploration 🚧 v0.1.0a2 (plans are single-URL today)
API contract testing (OpenAPI) 🚧 v0.1.0a2
Self-healing tests (re-plan on failure) 🚧 v0.1.0a2
Mobile (React Native via Detox) 🚧 v0.1.0a3

How it differs from existing tools

Playwright Codegen Pytest + Playwright Percy / Chromatic Sentinel
Generates tests from a URL partial (record/replay)
Self-hosted
Bring your own LLM n/a n/a n/a
Visual regression
Accessibility scan partial (plugin)
Open source

Sentinel is for teams who want test coverage without spending the engineering hours to author it. The trade-off is that AI-generated tests have failure modes hand-written tests do not (e.g. an LLM picks a fragile selector). The self-healing v0.1.0a2 feature is the answer to that.

Configuration

sentinel.yaml (after sentinel init):

version: 1

agent:
  provider: anthropic
  model: claude-opus-4-7
  temperature: 0.2

browser:
  headless: true
  viewport_width: 1280
  viewport_height: 720
  timeout_ms: 30000

visual:
  enabled: true
  baseline_dir: sentinel-baselines
  diff_threshold_percent: 0.5

a11y:
  enabled: true
  fail_on:
    - critical
    - serious

Architecture

   sentinel run <url>
          │
          ▼
   ┌──────────────┐
   │ explore page │  Playwright opens URL, grabs HTML + visible text
   └──────┬───────┘
          │
          ▼
   ┌──────────────┐
   │   planner    │  LLM produces TestPlan (2-5 scenarios, 3-8 steps each)
   └──────┬───────┘
          │
          ▼
   ┌──────────────┐
   │    runner    │  Fresh browser session per scenario
   │              │  Each step is one Playwright action
   │              │  screenshot steps → visual regression check
   │              │  a11y_scan steps → axe-core injection
   └──────┬───────┘
          │
          ▼
   ┌──────────────┐
   │ SentinelReport │  Scenarios + visual diffs + a11y violations + cost
   └──────────────┘

Roadmap

Version Status Highlights
v0.1.0a1 Shipped (2026-05-26) Web testing, visual regression, accessibility
v0.1.0a2 Planned Multi-page exploration, self-healing tests, API contract testing
v0.1.0a3 Planned Mobile (React Native via Detox or Maestro)
v0.2 Q4 2026 CI integration (GitHub Actions / GitLab CI / Bitbucket / Azure), parallel execution
v1.0 Mid-2027 Stable API, full coverage of web + API + mobile + visual + a11y, baselined

License

MIT. See LICENSE.

About

Built and maintained by ThinkNext Software Solutions, alongside our other open-source projects Cascade (meeting-to-PR) and Relay (issue-to-PR).

Follow along: @ThinkNextHQ · LinkedIn · Blog

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sentinel_agent-0.1.0a2.tar.gz (25.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sentinel_agent-0.1.0a2-py3-none-any.whl (23.9 kB view details)

Uploaded Python 3

File details

Details for the file sentinel_agent-0.1.0a2.tar.gz.

File metadata

  • Download URL: sentinel_agent-0.1.0a2.tar.gz
  • Upload date:
  • Size: 25.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for sentinel_agent-0.1.0a2.tar.gz
Algorithm Hash digest
SHA256 4c00e9d03c6f55523423f64d743b57f8e8f46b65e773a1937133ffff9156d712
MD5 659a9667d5c23f4d6da2de309b40cd35
BLAKE2b-256 b76fbebc9bdfe50451828de5a83f5f3ea63b2f1a888c0d94cf2e83e93afeb504

See more details on using hashes here.

File details

Details for the file sentinel_agent-0.1.0a2-py3-none-any.whl.

File metadata

File hashes

Hashes for sentinel_agent-0.1.0a2-py3-none-any.whl
Algorithm Hash digest
SHA256 edf85c32c469f2c7d6097dbd6e612cdfea7fdd5e3f18a9e7f14a7c7b0f3bc804
MD5 99c83678a3d45436e1dde5cabd4876ee
BLAKE2b-256 d53974399974dc7d20adbf0f69ea87b2a33eef8da7f8f05a139eebca622b86c3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page