TestIntel — Release Notes
v2026.1.0
Operational notes
- License enforcement is ON by default (
license.enforce: true). An
expired or cancelled license now actually enforces (previously it was only
logged). Behavior: a configurable grace period (default 7 days,
license.grace_period_days) of full access with a warning banner after
expiry, then read-only mode — you can still view your inventory, history,
and settings, but generation/sync and other mutating actions are blocked
(HTTP 402). Your data is never deleted; restoring the license restores
full access. Seat limits are also enforced: creating a user invite is
refused once active users + pending invites reach the license's seat count
(Enterprise/unlimited exempt).
- Recovery: a renewed customer regains access automatically within the
unhealthy re-check window (default 1 hour) or instantly via the **"Refresh
license status"** button on the banner (POST /auth/license/recheck). The
license key itself is set via the TESTINTEL_LICENSE_KEY environment
variable.
- Outage safety: enforcement triggers only on an *authoritative* expired/
cancelled response — if the license server is merely unreachable, TestIntel
keeps working on the cached license and never locks you out.
- Opt-out / delay during an upgrade window: set
license.enforce: false
in config.yaml to disable enforcement entirely (useful for local/dev or
if you want to upgrade before turning enforcement on). See
docs/configuration-reference.md → "License enforcement".
- Note: this is a client-side deterrent (self-hosted). It stops accidental
overage; the License Agreement's audit rights remain the backstop.
- Two-way sync — legacy baseline migration. Sync now stores a per-test
baseline *snapshot* (last_synced_snapshot), used for three-way conflict
resolution. Tests synced before this existed may have a baseline hash but no
snapshot. These migrate automatically the next time they are touched by a
pull, push-update, or repair-baselines run (the snapshot is populated
alongside the hash). Until then, such a legacy test is treated safely: it is
never falsely flagged as edited, and if a conflict is reviewed before
migration, all differing fields are shown as conflicts (no baseline to
attribute changes) — which is the safe, conservative default. No manual
migration step is required; a routine pull of your synced projects backfills
them.
Features
- AI Chat Assistant — test strategy, test case generation, automation code, impact analysis, CI/CD config, BDD/Gherkin scenarios, performance tests
- Multi-provider AI — Anthropic Claude (default), OpenAI, AWS Bedrock (BYOK)
- Test Inventory — living test document with auto-incrementing IDs, duplicate detection, status/tag workflow, HTML/CSV export
- Staging Queue — AI-generated tests held for human review before promotion to inventory
- Coverage Gap Analysis — identifies untested endpoints, functions, and components
- Test Maintenance Score — 0-100 health score with trend tracking
- Flaky Test Detection — per-test run history, flakiness scoring, pattern-based root cause suggestions
- OpenAPI/Swagger Integration — auto-detects specs for precise API test generation
- Jira Integration — live API for requirements import, ticket-aware chat context
- Xray Integration — push/pull test cases and results
- Zephyr Scale Integration — push/pull test cases and results
- GitHub Code Context — file tree, contents, PR/commit diffs
- Knowledge Base — upload documents to ground AI output in org-specific context
- Project Management — multi-project support with dropdown-driven project selection
- Web UI — Chat, Staging, Inventory, Settings tabs
- REST API — complete API with Swagger docs at /docs
- Security — file upload validation, XXE-safe XML parsing, rate limiting, input sanitization, security headers
- Docker — Dockerfile + docker-compose.yml for team deployment
UX Improvements
- Project selection via dropdown — the project dropdown in the Chat tab drives all operations (Staging, Inventory, Sync). All API calls include
?project=from the selected value. The first project created is automatically the default (used as fallback for API calls without?project=). The "Set as Default" button has been removed from the UI — the concept of a default project is internal-only and not exposed to users.
Deferred to Next Release
The following features are fully implemented in the codebase but hidden from the UI for the initial release. They will be enabled in a future release after additional polish and user testing.
#### Reporting Tab (History/Analytics)
- What it does: CI results dashboard, trend charts, health score, flaky test detection, top failures, cross-project comparison
- Current state: Backend fully functional (API endpoints at
/history/*still active), UI tab hidden - To re-enable for next release:
- In
testintel/web/static/index.html, removestyle="display:none;"from the Reporting tab button:
<!-- Change this: -->
<button class="tab" data-tab="history" style="display:none;">Reporting</button>
<!-- To this: -->
<button class="tab" data-tab="history">Reporting</button>
- That's it. All JS rendering, API routes, and backend logic remain intact.
- API access: The
/history/*endpoints remain accessible via API key for CLI and CI integrations even while the tab is hidden.
#### CLI (testintel command)
- What it does: Full command-line interface for all TestIntel features — project management, inventory, requirements, results, history, health score, coverage gaps, knowledge base, and schema discovery
- Current state: Fully implemented and tested, but not shipped or documented for v2026.1.0
- Rationale: Users should become familiar with the Web UI first. The CLI will be introduced in a future release as a power-user and CI/CD integration tool.
- Risk: None — the CLI is a separate entry point (
testintelcommand) that does not affect the web application - To enable for next release: Document the CLI commands and include in user-facing documentation. No code changes needed.
v0.1.0 (Beta)
Features
- AI Chat Assistant — test strategy, test case generation, automation code, impact analysis, CI/CD config, BDD/Gherkin scenarios, performance tests
- Multi-provider AI — Anthropic Claude (default), OpenAI, AWS Bedrock (BYOK)
- Test Inventory — living test document with auto-incrementing IDs, duplicate detection, status/tag workflow, HTML/CSV export
- Historical Reporting — snapshots, trend tracking, cross-project comparison, HTML dashboard
- Test Maintenance Score — 0-100 health score with 6 weighted components (pass rate, automation, freshness, review backlog, flakiness, coverage)
- Coverage Gap Analysis — extracts testable surface from code (endpoints, functions, components), matches against inventory, reports gaps
- Flaky Test Detection — per-test run history tracking, flakiness scoring, pattern-based root cause suggestions
- OpenAPI/Swagger Integration — auto-detects specs in repos, feeds structured API context to AI for precise test generation
- Jira Integration — live API for requirements import, ticket-aware chat context, JQL search
- Xray Integration — push/pull test cases (Manual, Cucumber, Generic, Exploratory), push/pull results, JUnit XML import
- Zephyr Scale Integration — push/pull test cases, push/pull results, JUnit XML upload
- Schema Discovery —
testintel discoverscans Jira/Xray/Zephyr for field mappings - GitHub Code Context — file tree, contents, PR/commit diffs for any public or private repo
- Local Workspace Support — scan local folders for code context
- Stack Detection — auto-detects frameworks (Playwright, Selenium, Cypress, pytest, JUnit, React Native, Flutter, k6, JMeter, etc.)
- Knowledge Base — upload documents to ground AI output in org-specific context
- Requirements Ingestion — CSV, JSON, XML, TXT, MD file parsing + live Jira import
- Test Result Ingestion — JUnit XML parsing with inventory matching
- Project Management — org/project/repo model, default project with "Set as Default" workflow, configurable test ID format, mismatch banner when viewing non-default project
- Web UI — Chat, Inventory, History, Settings tabs with sync buttons and health score
- AI Setup Banner — dismissible warning when no AI provider key is configured, with role-appropriate guidance
- CLI — full command set for all features
- REST API — complete API with Swagger docs at /docs
- Security — file upload validation, XXE-safe XML parsing, rate limiting, input sanitization, security headers, log redaction
- Admin/Member Auth — role-based API keys, admin-only settings
- Secrets Management — pluggable provider (local file + env var fallback)
- License Validation — validates against license server with 24hr caching and graceful degradation
- Docker — Dockerfile + docker-compose.yml for team deployment
- CI/CD — GitHub Actions runs 245 tests on every push
Known Limitations
- Coverage gap analysis uses regex-based extraction for code without OpenAPI specs — may miss some endpoints
- Flaky detection requires multiple result imports to build run history
- Web UI secrets management encrypts values at rest using Fernet (AES-128-CBC) with an auto-generated key
- No per-user authentication yet (admin/member key model)