{"id":47668114,"url":"https://github.com/spechive/spechive","last_synced_at":"2026-04-29T08:03:42.833Z","repository":{"id":346648392,"uuid":"1181563248","full_name":"SpecHive/SpecHive","owner":"SpecHive","description":"OSS platform — NestJS + React + Drizzle + PostgreSQL","archived":false,"fork":false,"pushed_at":"2026-04-27T11:52:52.000Z","size":2116,"stargazers_count":8,"open_issues_count":14,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-27T13:24:10.523Z","etag":null,"topics":["flaky-tests","nestjs","open-source","playwright","playwright-reporter","postgresql","react","self-hosted","test-analytics","test-reporting","testing","typescript"],"latest_commit_sha":null,"homepage":"https://spechive.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SpecHive.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-14T10:08:18.000Z","updated_at":"2026-04-26T12:40:20.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/SpecHive/SpecHive","commit_stats":null,"previous_names":["spechive/spechive"],"tags_count":125,"template":false,"template_full_name":null,"purl":"pkg:github/SpecHive/SpecHive","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpecHive%2FSpecHive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpecHive%2FSpecHive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpecHive%2FSpecHive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpecHive%2FSpecHive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SpecHive","download_url":"https://codeload.github.com/SpecHive/SpecHive/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpecHive%2FSpecHive/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32416146,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T06:29:02.080Z","status":"ssl_error","status_checked_at":"2026-04-29T06:29:00.631Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flaky-tests","nestjs","open-source","playwright","playwright-reporter","postgresql","react","self-hosted","test-analytics","test-reporting","testing","typescript"],"created_at":"2026-04-02T12:06:03.742Z","updated_at":"2026-04-29T08:03:42.828Z","avatar_url":"https://github.com/SpecHive.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SpecHive\n\nOpen-source test reporting platform for Playwright.\n\n![CI](https://github.com/SpecHive/SpecHive/actions/workflows/release.yml/badge.svg) ![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg) [![npm](https://img.shields.io/npm/v/@spechive/playwright-reporter)](https://www.npmjs.com/package/@spechive/playwright-reporter)\n\nSee every test failure. Track flaky tests. Ship with confidence. Simple to deploy — a single `docker compose up` with no JVM or complex setup required.\n\n[spechive.dev](https://spechive.dev) | [Try SpecHive Cloud](https://app.spechive.dev) | [Documentation](https://spechive.dev/blog/setting-up-playwright-test-reporting-in-5-minutes)\n\n![SpecHive Dashboard](https://spechive.dev/images/dashboard-overview.png)\n\n## Why SpecHive?\n\n- **One install, results flow automatically.** Add a single reporter package to your Playwright config — no servers to configure, no plugins to wire up.\n- **Self-hosted or cloud — you choose where data lives.** Same reporter, same dashboard. The only difference is the `apiUrl`.\n- **Flaky test detection and trend analytics built in.** Track pass rates, durations, and flaky patterns across runs without a separate BI tool.\n- **Artifacts attached to failures, not buried in CI logs.** Screenshots, traces, and videos linked directly to each failed test.\n\n## Quick Start — Cloud\n\nThe fastest way to get started. Create a project, copy your token, and results start flowing in minutes. Free tier includes 5,000 test results per month — no credit card required.\n\n[Get started free](https://app.spechive.dev)\n\n**1. Install the reporter**\n\n```bash\nnpm install -D @spechive/playwright-reporter\n```\n\n**2. Add to your Playwright config**\n\n```typescript\n// playwright.config.ts\nexport default defineConfig({\n  reporter: [\n    ['html'],\n    [\n      '@spechive/playwright-reporter',\n      {\n        projectToken: process.env.SPECHIVE_PROJECT_TOKEN,\n      },\n    ],\n  ],\n});\n```\n\n**3. Run your tests**\n\n```bash\nnpx playwright test\n```\n\nThat's it. Results appear in your dashboard within seconds.\n\nSee [packages/playwright-reporter/README.md](packages/playwright-reporter/README.md) for the full configuration reference, CI setup examples, and troubleshooting guide.\n\n## Quick Start — Self-Hosted\n\nClone the repository and start the stack:\n\n```bash\ngit clone https://github.com/SpecHive/SpecHive.git\ncd spechive\ncp .env.example .env\n# Fill in the required secrets in .env\ndocker compose up -d\n```\n\nPoint the reporter at your instance by adding `apiUrl` to the config:\n\n```typescript\n[\n  '@spechive/playwright-reporter',\n  {\n    apiUrl: 'https://your-spechive-instance.com',\n    projectToken: process.env.SPECHIVE_PROJECT_TOKEN,\n  },\n];\n```\n\nSee [docs/deployment-checklist.md](docs/deployment-checklist.md) for the full production deployment guide.\n\n## Features\n\n- **Full run history** — every pass, fail, and flaky result in one place with drill-down to individual attempts\n- **Flaky test detection** — automatically flags tests that flip between pass and fail across runs\n- **Trend analytics** — pass rate and duration trends per project, suite, and individual test\n- **Screenshots, traces, and videos on every failure** — artifacts attached directly to test results, not lost in CI logs\n- **Works out of the box with major CI providers** — GitHub Actions, GitLab CI, Jenkins, CircleCI, Azure DevOps, and more\n- **Team management and role-based access** — multi-tenant with organization-scoped data isolation\n- **Automatic artifact cleanup** — configurable retention periods keep storage costs predictable\n\n## Architecture\n\n```\n                        ┌─────────────────────────────────┐\nReporter ──▶            │           gateway                │\n                        │  (JWT auth · rate limiting)      │\ndashboard ◀──▶          └──────┬──────────────┬────────────┘\n                               │              │\n                               ▼              ▼\n                        ingestion-api    query-api\n                               │              │\n                               ▼              ▼\n                           PostgreSQL ◀───────┘\n                               │\n                            Outboxy\n                               │\n                               ▼\n                            worker ──▶ MinIO (S3)\n```\n\nThe **gateway** is the single external entry point — reporters and the dashboard connect only to it. Internal services are not exposed.\n\n### Monorepo structure\n\n```\napps/\n  gateway/         API gateway — JWT auth, rate limiting, routing (port 3003)\n  ingestion-api/   Receives test results from reporters (port 3000)\n  worker/          Processes events from the transactional outbox (port 3001)\n  query-api/       Serves data to the dashboard (port 3002)\n  dashboard/       React/Vite SPA (port 5173)\n\npackages/\n  api-types/              Typed API response interfaces\n  database/               Drizzle schema, migrations, seed\n  eslint-config/          Shared ESLint config\n  nestjs-common/          Shared NestJS modules\n  playwright-reporter/    Playwright reporter for SpecHive\n  reporter-core-protocol/ Protocol types for test reporters\n  shared-types/           Branded ID types and enums\n  typescript-config/      Shared tsconfig bases\n```\n\n## Community\n\n- [GitHub Discussions](https://github.com/orgs/SpecHive/discussions) — questions, ideas, and show-and-tell\n- [Issue tracker](https://github.com/SpecHive/SpecHive/issues) — bug reports and feature requests\n\n## Contributing\n\nContributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for setup instructions, development workflow, and commit conventions.\n\n## License\n\nSpecHive uses a dual-license model:\n\n| Component                                                                                                                                          | License                                              |\n| -------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |\n| `apps/`, `packages/database`, `packages/nestjs-common`, `packages/api-types`                                                                       | [AGPL-3.0](LICENSE)                                  |\n| `packages/playwright-reporter`, `packages/reporter-core-protocol`, `packages/shared-types`, `packages/eslint-config`, `packages/typescript-config` | MIT (see individual `LICENSE` files in each package) |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspechive%2Fspechive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspechive%2Fspechive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspechive%2Fspechive/lists"}