Skip to content

Kinora-dev/kinora

Repository files navigation

kinora

A dashboard for your Playwright tests - across projects and over time - with an embedded trace viewer.

Live demo (read-only, no sign-up) · Website · Cloud

Playwright ships a great HTML report for a single run. kinora sits one level up: push every CI run to a kinora server and get one place to track pass rates, spot trends, and surface flaky tests over time. Failing tests get a View trace button that opens the full Playwright trace (DOM / timeline / network / console) right in the dashboard, no separate tooling.

Overview

Features

Trends over time

Push from CI and kinora keeps the history: pass rate, run count and duration per project, a sparkline trend, and one colored strip per run, so a slow drift shows long before it breaks the build.

Per-project page with pass rate, trend sparkline and per-run history strips

Flakiness

Every test gets a flaky rate and a fail rate computed across its run history. Flip on Unstable only to see what is quietly costing you retries, and spot the tests newly broken or newly flaky since the last run.

Tests page listing per-test flaky rate and fail rate across runs with an unstable-only filter

Per-test history

Each test keeps a stable identity however it was uploaded, so you can follow one test run-to-run: when it started flaking, when it was fixed, and how long it has been green.

Per-test history with a status timeline, pass and flaky rates, and a list of failures and flakes

Run-to-run compare

Diff any two runs: newly failing, fixed, newly flaky, and still failing, grouped for you.

Run-to-run comparison

Embedded trace viewer

Failing tests get a View trace button that opens the full Playwright trace inline - DOM, timeline, network, console - plus a Copy prompt to hand the failure to an LLM.

Embedded Playwright trace viewer

Alerts

Get notified when a run brings new failures or regressions. Each project can post to Slack, an email address, or a custom webhook, with an every-run / on-failure / on-regression policy.

Desktop app

A macOS app that signs into your account and opens straight on the latest run's failures. Re-run a failing test locally with your repo's own Playwright, jump to the source in your editor, copy a ready-to-paste AI prompt, or open the full trace inline. It also opens any local trace.zip with no account at all, a self-contained replacement for playwright show-trace.

Download for macOS (Apple Silicon). Auto-updates from there.

kinora desktop app showing a project's failing tests with re-run, open-in-editor, copy-prompt and view-trace actions

Packages

Monorepo, fair source: the deployable surface is FSL-1.1-MIT, the client libraries you embed are MIT.

Package Role License
@kinora/server Hono + tRPC API, better-auth, Drizzle/Postgres - ingest + dashboard data FSL-1.1-MIT
@kinora/web Vue 3 dashboard (runs, history, flakiness, compare, alerts, billing) FSL-1.1-MIT
@kinora/desktop Electron app: cloud failures dashboard + local trace viewer FSL-1.1-MIT
@kinora/trace-viewer Vendored Playwright trace engine (Apache-2.0) + our Vue UI MIT
@kinora/reporter Playwright reporter - auto-uploads on onEnd MIT
@kinora/cli Manual upload of a results.json MIT
@kinora/core zod contracts + normalize + ingest client (shared) MIT
@kinora/ui Shared shadcn-vue design system MIT

Send your tests

Reporter (recommended)

Auto-uploads at the end of every playwright test run. One line in your config:

// playwright.config.ts
export default defineConfig({
  reporter: [['@kinora/reporter', { project: { slug: 'web-app' } }]],
  // enable tracing so View trace works
  use: { trace: 'on-first-retry' },
})

Set the token via env (keep it out of the config / in CI secrets):

KINORA_TOKEN=<token> npx playwright test

On GitHub Actions, git and CI metadata are filled in automatically. See @kinora/reporter for all options and the CI example. Self-hosting? Point it at your server with KINORA_URL (selfhost/README.md).

CLI (manual)

For setups without the reporter, or to upload an existing results.json from a separate CI job:

# playwright.config.ts: reporter: [['json', { outputFile: 'results.json' }]]
npx @kinora/cli upload results.json --project web-app --token <project-token>

The CLI can also bulk-import a backlog of historical reports (kinora import <dir>). See @kinora/cli for all flags and the CI example.

Development

Run the whole stack locally.

pnpm install

# 1. server + database
cd packages/server
cp .env.example .env
docker compose up -d            # Postgres on :5436
pnpm migrate latest             # create tables
pnpm db:seed                    # seed a demo account + data, prints login + an API token
pnpm dev                        # server on :3000

# 2. web
cd packages/web
cp .env.example .env
pnpm dev                        # dashboard on :5173

# 3. trace viewer (from the repo root)
pnpm dev:viewer                 # trace viewer on :5174

Open http://localhost:5173 and sign in with the seeded credentials (demo@kinora.dev / password123). Use the printed API token to push real runs from a project via the reporter or CLI.

Self-hosting

Run the whole stack with one docker compose (Postgres + server + dashboard, single origin, local-FS artifacts, no S3). See selfhost/README.md for the quickstart, configuration, sending tests, custom domains, upgrades, and backups.

Licensing

kinora is fair source, the deployable product (server, web) is FSL-1.1-MIT, the libraries you embed in your own test suite (reporter, cli, core, ui) and the trace viewer are MIT. The trace engine under packages/trace-viewer/src/core and src/sw is vendored from microsoft/playwright (Apache-2.0).

About

A dashboard for your Playwright reports, across projects and over time

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors