Quality Hub
Quality Hub stores definitions separately from executions. Ready only when stored evidence passed. Unchecked is not Ready.
Manual cases and runs
- Write a test case: title, objective, preconditions, steps, expected results.
- Group cases into a suite.
- Start a manual run. Record passed / failed / blocked / skipped / error per case.
- A later run is compared with the previous one. Pass→fail is a regression. Still-failing is not.
API tests
GET, HEAD, or OPTIONS on paths of the authorized live URL only. HTTP 200 is not a pass if a JSON path disagrees. Invince does not POST, does not store Authorization, and does not call other hosts.
Browser tests
Invince starts Playwright, Cypress, Selenium, and Robot on GitHub-hosted runners from Browser Tests (workflow_dispatch of invince-launch-qa.yml). Chromium does not run inside Invince Cloud Run.
npx playwright test --reporter=json > playwright-report.json
invince test-report playwright-report.json --upload
A bare URL is rejected. Empty suites are not a pass. Apply supabase/manual/apply_quality_ci_tools.sql if quality_ci_reports.tool still only allows playwright.
Requirements
Write a requirement, then link cases to it. Zero cases, skipped executions, or a missing run stays Unchecked. That is not Ready.
Coverage
Invince does not execute tests to produce coverage. On your runner:
invince coverage coverage/lcov.info --upload
A URL is rejected. Empty lcov is not a pass. Route/test filename pairing on Coverage is a heuristic, not statement coverage.
Load tests
Invince does not generate concurrent users. On your runner:
k6 run load/k6.js --summary-export k6-summary.json
invince qa-load k6-summary.json --upload
A URL is rejected. Failed thresholds are Do not launch on the GitHub check. Missing load stays Ready there (Quality Hub still shows Unchecked on Launch QA).
Evals
Invince does not call a model to score answers. On your runner, produce JSON and upload:
invince eval eval-results.json --upload
Each case needs expected (exact, trim) or expectedContains, plus actual. A pass, score, or judge field is ignored. A URL file is rejected. Zero cases is not a pass. Failed cases are Fix first on the GitHub check. Missing evals stay Ready there (Quality Hub still shows Unchecked).
Evidence pack
Download JSON from Evidence. It copies stored hub statuses. Unchecked is not Ready. Admins also get quality write audit rows (manual writes and CLI ingest). This is not a certification.
GitHub launch gate
The check Invince launch gate stays Ready when suite/API/CI/coverage/load/eval evidence is missing (Quality Hub still shows Unchecked for a required suite). A failed stored suite, API collection, Playwright report, zero-hit lcov, or eval set is Fix first. A failed owner-run k6 summary is Do not launch.
What it does not do
- Drive a browser from Invince Cloud Run
- Generate load against arbitrary origins
- Execute tests to invent coverage
- Call a model to judge eval answers
- Two-account IDOR or login-as-user
- A single invented “software quality %”
Permissions
Members can read. Owner, admin, and developer can write.
Apply supabase/manual/apply_quality_foundation.sql, apply_quality_runtime.sql, apply_quality_coverage.sql, and apply_quality_evals.sql if production has not run the latest migrations.