Skip to content

Repository files navigation

Testjam logo

Testjam

Self-hosted test management for teams that ship. Plan suites, drive manual runs with keyboard shortcuts, stream CI results live, and export self-contained HTML reports.

Backendtestjam-clientFrontendE2E

Create suite → case → plan → execution → results


Highlights

📚 LibraryProjects → nested suites → cases with steps, preconditions, tags, attachments
🎯 PlansCurate cases from many suites into versioned plans
▶️RunManual runs with j/k nav + p/f/b/n to set status — under a second per case
📡 LiveWebSocket stream of step status + logs from CI via testjam-listener
📥 ImportJUnit and Robot Framework XML, matched by external_id or name
📄 ReportsSelf-contained HTML, attachments inlined as data URLs
🐞 Bug trackerNative bugs with severity, status workflow, comments, watchers, audit timeline, release notes
🔌 IntegrationsPush bugs to GitHub, Jira, GitLab, Azure DevOps, OpenProject + outbound event webhooks
💬 MentionsCross-entity references between users, bugs, runs and cases with email + in-app notifications
🐍 Python SDKpip install testjam-client — full API coverage for custom CI integration, dashboards and scripting
💻 CLIpip install "testjam-client[cli]"testjam binary with profiles, REPL, JSON output, run tail
Stack
LayerTech
BackendFastAPI · SQLAlchemy (sync) · Alembic · PostgreSQL 18
FrontendReact 18 · Vite · TanStack Query · Tailwind · Radix UI
AuthJWT Bearer + scoped API tokens (X-API-Key)
Testspytest · Vitest · Robot Framework (E2E)
RuntimeDocker Compose

Quick start

cp .env.example .env
# edit .env: set POSTGRES_PASSWORD and SECRET_KEY=$(openssl rand -hex 32)
docker compose up -d
docker compose exec api python scripts/create_admin.py \
--username admin --email admin@example.com --password secret

Open http://localhost:8080 and sign in. API docs at http://localhost:8080/api/docs.

Three containers: db (Postgres 18), api (FastAPI + uvicorn), web (nginx + built frontend). Only APP_PORT (default 8080) is exposed to the host.


Documentation

Full user manual, SDK reference, CLI guide, and architecture overview live in docs/.

SectionWhat you'll find
Getting startedDeploy, first admin, sign in
User manualAll features end-to-end
Python SDKtestjam-client setup, examples, auth
testjam CLIShell commands, profiles, REPL
Robot listenerStream CI results live
ArchitectureBackend + frontend structure for contributors and LLMs
Members & tokensRoles, permissions, API keys
AdministrationBackups, restore, instance settings

Development

export COMPOSE_FILE=docker-compose-dev.yml
docker compose up
docker compose exec api python scripts/create_admin.py \
--username admin --email admin@example.com --password secret

UI on http://localhost:5173 · API on http://localhost:8000/api/docs

make test# all suites
make test-api # pytest (backend)
make test-front # vitest (frontend)
make test-e2e # Robot Framework (parallel)

See docs/architecture.md for project structure and conventions.


History

Testjam began in April 2019 as a sandbox — the first commit landed under the name pyjam and was renamed to testjam a week later. The intent was to scratch a personal itch: a clean, self-hosted test management tool that wasn't a 2010-era PHP install or a SaaS lock-in. Real life made shipping it alone unrealistic. The bug tracker, the realtime layer, the SDK, the i18n, the Robot Framework listener, the CI orchestrator — each one a side quest, all of them dragging the calendar out of reach. The repository sat dormant for years.

What changed was the arrival of LLMs capable of pair-programming at design speed. The full feature surface visible here was iterated and shipped during one focused stretch with AI assistance, turning a six-year-old prototype into a v1.0 release.

On the name

Testjam here refers strictly to this open-source repository — the self-hosted test management tool documented above. The name was chosen for this codebase in April 2019 and the project is unaffiliated with anything else that may happen to share it. If you arrived here looking for a different product that uses the same name, you're in the wrong place.

About

Open-source self-hosted test management with keyboard-driven manual runs, built-in bug tracker, and first-class CI integration via Python SDK, CLI, and Robot Framework listener.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages