Skip to content
TestLookupTestLookup
Search Ctrl K

Search TestLookup

Enter a term to search the local static index.

    Documentation (development version)

    This is the home page of the TestLookup documentation. TestLookup is free, open-source test intelligence for software teams. These pages describe the current development version of the project. That version is not a stable release, and the pages do not describe any particular installation.

    Any page here can change when the documentation moves to a newer development version. A feature described here may still be turned off in your installation. These pages also cannot tell you whether your own servers, database updates, AI models or credentials work.

    These pages describe the TestLookup development version of 4 November 2026. You can browse the source code of that version on GitHub.

    TestLookup has no tagged release yet. The repository’s VERSION file reads 0.1.0, but no v0.1.0 tag or GitHub release existed when the website last checked.

    The summary report labels its pass rate as counted per unique test: the field pass_rate_basis always reads unique_tests. That label is wrong in three cases: in latest mode, when the report falls back to run totals, and when the report is filtered by suite. The reports guide explains each case.

    The OpenAPI document also lacks a complete description of some API responses. That is a gap in the documentation and the data types, not a sign that those endpoints fail. The troubleshooting guide lists these and other known limits.

    This version of the source code has:

    • 731 HTTP operations across 620 paths, in 92 groups;
    • 772 named OpenAPI data formats (schemas);
    • 160 database tables (defined with SQLAlchemy).

    The API reference covers every operation and data format. Where a description is incomplete, it says so instead of making up response fields. These counts describe the source code, not a running server.

    The website has one documentation version, shown as Development (pre-release). That label does not mean a stable version, a release tag, an upgrade window or a support period.

    You want toStart here
    Use TestLookupThe guide inside the app, at /docs on your installation, product overview, user journeys
    Install and operate itDeployment guide, operator guide, sizing, upgrading
    Integrate CI, SDKs or AI assistantsAPI guide, all endpoints, CLI, SDKs and MCP
    Understand or change the codeArchitecture, codebase map, contributing

    See the full documentation index on GitHub, grouped by reader.

    Read bootstrap.py, and find /api/v1/ingest in the generated API reference. Follow ingestion_pipeline.py through finishing the run and recording its follow-up jobs. Then open the run detail page in the web app. In a test installation you can throw away, send a small report and watch three things separately: TestLookup accepting the upload, the stored run’s status, and the AI pipeline and review state. Next, change a harmless label in the web app and run the matching frontend check. Do this before you change how the core statuses move.

    • When you filter the summary report by release, every figure follows the filter except the flaky-test count, which always covers the whole project. See how the summary adds up results, with examples.

    • The OpenAPI document does not fully describe some API responses, because the endpoint returns a plain JSON object, a file or a stream. The API reference marks each one under “Contract limit”.

    • These pages are written from the source code. They cannot tell you whether your own installation’s database updates, databases, job queues, AI models or integration credentials work. Check those with the steps in the deployment guide.

    • Review of AI reports is not enforced by default. TestLookup records the AI reports it would have held back, but still sends them. Turn enforcement on only after you check who receives your reports.

    • Work happens in the background, one step after another. Each of these finishes separately: the upload’s 202 response, its task status, the stored run, the AI pipeline, an accepted review and a successful delivery. An upload’s task status expires after 24 hours.

    • The core analysis works with rules and the available machine-learning classifier. Deeper features, such as the AI model and looking up your own documents, need a configured model, their feature flags and enough evidence. Without them, analysis falls back to a simpler method, so it keeps working with less depth. A confidence value is not a calibrated probability, unless an evaluation shows that it is.

    • Offline mode allows checked local or private model addresses. It is not a network firewall. Download models, images and libraries before you cut an installation off from the internet.

    • The upload rate limits and the busy-server check let traffic through when TestLookup cannot read Redis. They manage traffic, but they cannot promise to protect the server during an outage.

    • TestLookup keeps data in several stores, with no single transaction across them. Recovery jobs repair interrupted work, but they cannot promise that every effect happens exactly once.

    • On a single-node K3s installation, the local-path storage lives on that one machine. Running several copies of the app does not protect you from a failed disk. You still need backups on another machine, and regular practice at restoring them.

    Next: start with the quick start.