selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

canyon logo

Self-host canyon

v3.0.15

JavaScript code coverage platform for E2E testing

ReleaseOpen SourceMIT
Updated8 hours ago
LanguageTypescript
Setup difficultyAdvanced
Stars
178
Ports
3000 (development mode frontend and API), 8080 (production mode frontend and API)
Requires
Node.js, PostgreSQL
Docker
zhangtao25/canyon
Install with Docker
Canyon home screen showing coverage overview

What is canyon?

This platform collects JavaScript code coverage during end-to-end and UI automation test runs. It separates hit data from map data at compile time, which lets it process the large amounts of coverage data that UI tests generate. The system has three parts: plugins that add instrumentation during CI builds, a Node.js and React application that receives and processes the coverage data, and a web interface for viewing reports broken down by individual test cases. It works with popular build tools like Vite, Next.js, and Webpack, automation frameworks such as Playwright, and CI systems including GitHub Actions and GitLab CI. You can run the community edition yourself on your own hardware using Node.js 20 or later with PostgreSQL 14 or later, or by pulling the zhangtao25/canyon Docker image. The codebase is MIT licensed and receives regular updates.

Should you self-host canyon?

canyon scores 47/100 on selfhost.directory (how scoring works) and ranks #7 of 10 in Testing. It has 178 GitHub stars.

It shipped 12 stable releases in the past year. The latest, v3.0.15, came out on 9 September 2026. New versions land roughly every 3 days.

Setup is advanced: plan for several services and some ongoing maintenance. An official Docker image is available. It is MIT-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is Locust (78/100, 28 245 stars). It scores higher overall, so compare the two before you pick. See canyon vs Locust side by side.

Features

  • Automation framework integrations
  • Build tool integrations
  • CI provider detection
  • GitLab source metadata integration
  • Per-test-case coverage
  • Real-time coverage reports
  • Self-hosted community edition
  • Separate hit and map data
  • Source Map Support

canyon README

How to install canyon

Install canyon with Docker

Environment variables
DATABASE_URL, GITLAB_BASE_URL, GITLAB_PRIVATE_TOKEN, BETTER_AUTH_SECRET, BETTER_AUTH_URL, BETTER_AUTH_TRUSTED_ORIGIN, GITLAB_CLIENT_ID, GITLAB_CLIENT_SECRET

docker pull zhangtao25/canyon

Community edition Docker image on Docker Hub

How to configure canyon

  • BETTER_AUTH_SECRETreplace-with-a-random-secretBetter Auth signing secret

    Better Auth signing secret

  • BETTER_AUTH_TRUSTED_ORIGINhttp://localhost:3000Better Auth trusted origin

    Better Auth trusted origin

  • BETTER_AUTH_URLhttp://localhost:3000Better Auth service URL

    Better Auth service URL

  • DATABASE_URLPostgreSQL connection string for data storage

    PostgreSQL connection string for data storage

    values: postgres://username:password@host:5432/dbname

  • GITLAB_BASE_URLhttp://git.xxx.comGitLab instance URL for source metadata integration

    GitLab instance URL for source metadata integration

  • GITLAB_CLIENT_ID111GitLab OAuth client ID

    GitLab OAuth client ID

  • GITLAB_CLIENT_SECRET222GitLab OAuth client secret

    GitLab OAuth client secret

  • GITLAB_PRIVATE_TOKENxxxGitLab private token for API access

    GitLab private token for API access

canyon releases & version history

FAQ

为什么 Compare 中的变更代码文件数量和 GitLab 不一致?

Compare counts only files that Babel compiles and includes in coverage calculation (js, jsx, ts, tsx), while GitLab shows all Git diff files including docs, images, and config files. The difference is due to different statistical scopes.

More in Testing

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…