Test observability

For your automation pipeline: follow Playwright runs live, then investigate failures, retries, steps, timing, metadata, and attachments.

Try the Live Demo Get Started

Open source and self-hostable. Explore Observer on GitHub.

Interested in shaping the product? Explore the design-partner program.

From end-of-run reports to test observability

Traditional test reports summarize results after a run completes. Observer receives test events during execution, so teams can follow progress as it happens, inspect failures in context, and compare behavior across runs.

Follow runs live

Track run and test status while the suite is executing, with timing and CI metadata alongside the results.

Investigate each attempt

Move from run summaries into test attempts, nested steps, durations, failures, and attached evidence.

Test Analytics

Review execution duration and outcomes across runs to spot changes in test behavior over time.

Connect your pipeline

Use the Playwright reporter today. Pytest and Mocha reporter work is in progress.

See the run, then inspect the test

Explore a run list and a detailed test execution view from the public demo. The screenshots show sample product data.

Observer run history listing test runs with status, duration, and passed, flaky, failed, and skipped counts.
Run history shows outcomes and duration across recent executions.
Observer test detail showing a passed attempt, execution timing, hooks, and named test steps.
Test details connect attempt status and timing to the steps that ran.

How Observer works

Test events flow through a durable processing pipeline. PostgreSQL stores run data for API queries; MongoDB is limited to buffering in-flight steps.

graph LR
        Tests[Playwright tests] --> Reporter[Playwright reporter]
        Reporter -->|gRPC events| Ingestion[gRPC ingestion]
        Ingestion --> NATS[NATS JetStream]
        NATS --> Processor[Processor]
        Processor -->|Durable run data| PostgreSQL[(PostgreSQL)]
        Processor -->|In-flight steps| MongoDB[(MongoDB buffer)]
        PostgreSQL --> API[API and WebSocket]
        NATS -.->|Live event relay| API
        API --> UI[Observer web UI]