Repository navigation
Releases: kinora-dev/kinora
Release list
v0.15.0
Kinora 0.15.0
This release adds real-time trace playback, network request search, and a download button to the trace viewer, along with several trace viewer fixes.
Trace viewer
- Traces now play in real time over the screencast, instead of jumping frame to frame. Thanks @ciprian-hudl for the contribution.
- A new download button lets you save the trace.zip directly from the viewer. Thanks @ciprian-hudl for the contribution.
- The network tab can now search headers and bodies, via a new "Search in" menu. Thanks @ciprian-hudl for the contribution.
- Console messages are cross-linked to their matching network request.
- Requests handled by a route (e.g. via
page.route()) are now marked in the network tab. Thanks @ciprian-hudl for the contribution. - Fixed the filmstrip tiling unevenly instead of evenly across frames. Thanks @ciprian-hudl for the contribution.
v0.14.0
Kinora 0.14.0
This release finishes Vitest sharding, keeps the trace viewer's action-group filter across reloads, and fixes a path-traversal issue and a slow project delete.
Sharded runs
@kinora/vitest-reporternow groups sharded Vitest runs into one run, like the Playwright reporter and CLI shipped in 0.13.0. Needs@kinora/vitest-reporter0.3.0.- The command palette shows a neutral dot, instead of a false failure state, for a run still missing shards.
Trace viewer
- "Show action groups" is remembered across traces and reloads (stored in
kinora-tv-hidden-action-groups), instead of resetting on every load. Thanks @ciprian-hudl for the contribution.
Desktop
- Fixed a path-traversal issue in local test re-run: the resolved file path is now checked against the repo root before use.
Self-hosting
- Deleting a large project no longer risks hitting the statement timeout:
artifact.test_idis now indexed, so the project → run → test → artifact cascade no longer scans the whole artifact table per deleted test. Thanks @ciprian-hudl for the contribution.
v0.13.0
Kinora 0.13.0
This release lets every shard of a sharded run upload on its own, and kinora assembles them into one run. A run missing shards says so, instead of reading as green.
Sharded runs
- Each shard uploads directly: no blob reports to move, no merge job. kinora groups the shards of one CI run (
GITHUB_RUN_IDon GitHub Actions,CI_PIPELINE_IDon GitLab CI, orKINORA_GROUP_KEY) into a single run, with every test and trace. The shard count comes from Playwright or Vitest, nothing to configure. - A run still missing shards shows "2 of 4 shards" in the run table, on the run page and in the overview, never a health. After two hours it is closed as "Incomplete", and alerts fire then. A late shard still completes it. Self-host: set the delay with
KINORA_SHARD_TIMEOUT_MINUTES. - Re-running a failed shard (GitHub's "Re-run failed jobs", a GitLab job retry) fills its slot again instead of adding a run. A test that failed on the first attempt and passes on the re-run is kept as flaky, so the re-run does not hide it. Re-run results are not counted again in your usage, and a re-run is never turned away by the free plan's result limit.
- The PR comment updates as each shard lands ("2 of 4 shards landed"), then shows the whole run, and marks the tests that only passed on a re-run. Slack, email and webhook alerts for an incomplete run say how many shards landed (
incomplete: { landed, total }in the webhook body), and theon-failurepolicy fires on one. - The CLI and the Vitest reporter group sharded runs too.
kinora uploadreads the shard from the Playwright JSON report (new flags--group-keyand--no-group), and@kinora/vitest-reporterreads it from--shard(newgroupKeyoption). A Vitest shard with no browser test still uploads, empty, so the run can complete. - The ingest API accepts
groupKey,attemptandshardonPOST /api/v1/runs, and returns the run'sstatusandshardProgress. See the API reference. - Needs
@kinora/reporter0.11.0,@kinora/cli0.11.0 or@kinora/vitest-reporter0.3.0, and a server on 0.13.0 for the Vitest reporter (self-host: upgrade the server first). Older versions, and the blob report +merge-reportssetup, work as before. See Sharded runs.
Dashboard
- A trace deleted by your retention settings now shows as expired on the run page, instead of a link that no longer opens.
- The Analytics charts no longer misplace the crosshair, and the page no longer fails for browsers that report legacy time zone names (
Asia/Calcutta,Europe/Kiev). - Traces recorded with Playwright 1.64.1 open in the trace viewer.
Self-hosting
- New setting
KINORA_SHARD_TIMEOUT_MINUTES(default 120): how long a sharded run waits for its missing shards before it is closed as incomplete. - In production the server logs JSON, with a request id on every line.
- The server keeps running when Postgres drops idle connections, for example after a restart.
/healthcheckreturns the status of each service, without error details.- Internal error messages are no longer sent to dashboard clients in production.
v0.12.0
Kinora 0.12.0
This release makes the PR comment name every flaky test and link each test to its trace, and lets a run open on a single test.
PR comments
- The comment now names the flaky tests instead of only counting them: the newly flaky ones first, then those already flaky on the base branch, so a reviewer sees which tests flaked before merging. Long lists are capped at 15 tests.
- Each listed test, failures and flaky tests alike, links to the run narrowed to that test, with its trace one click away. The run page signs the trace when it opens, so the link keeps working for as long as the comment is up.
- Needs
@kinora/reporter0.10.0 or@kinora/cli0.10.0. See PR comments. - With the
on-failurepolicy, a green run now updates the comment an earlier failing run left, instead of leaving it red.
Dashboard
- A run can open on a single test with
?test=<testKey>, exact even when several tests share a title. A banner says so, with a button to show the whole run.
v0.11.0
Kinora 0.11.0
This release makes kinora hold up on large test suites: big runs upload reliably, and the dashboard stays fast on projects with thousands of tests and a long history.
Large projects
- Runs with more than 3,449 tests no longer fail to upload. A run can carry up to 50,000 tests.
- The Tests page loads a fraction of the data on large projects: on 3,000 tests with 500 runs, the server no longer reaches gigabytes of memory, and the page downloads about 12 MB instead of 150 MB.
- The test history page loads only the test it shows, and the failure causes it shares with other tests: about 1 second on a large project, instead of 3 or more.
- The Components page reads only the tests that mount stories, and returns at once for a project without any.
- The run page lists its tests 50 at a time, with the page in the URL. A run with 20,000 tests opens in under a second instead of 3. Changing the status tab, tag or search goes back to the first page.
Read API
GET /api/v1/projects/:slug/historywithouttestKeynow returns, for each test, only the points its health reads: its last 20 runs and, for a test failing right now, its whole failing streak. Counts and rates still cover the project's last 500 runs. PasstestKeyto get one test's full timeline. See the API reference.
v0.10.0
Kinora 0.10.0
This release brings accessibility checks to Playwright tests: kinora now records the axe scans of your end-to-end tests, like it does for Storybook stories.
Accessibility
-
@kinora/reporter0.8.0 reads the axe scans attached to a test and uploads their violations: the rules broken, their impact (critical, serious, moderate, minor), the elements they hit and a link to each rule's documentation. Only the violations are sent, not axe's full result. -
New
scanA11yhelper in@kinora/reporter/a11y: it runs the scan with@axe-core/playwrightand attaches the result to the test, so kinora can read it.import { scanA11y } from '@kinora/reporter/a11y' const { violations } = await scanA11y(page) expect(violations).toEqual([])
-
If you already build your scans with
AxeBuilder, attach the result as JSON withtestInfo.attachand kinora picks it up, whatever the attachment name. Without an attachment, kinora only sees the test fail. -
Assert on the violations and the test fails on them. Scan without asserting and kinora records them as warnings, to track a backlog without blocking CI.
-
The Tests page shows how many rules each test breaks, filters on tests with accessibility issues, and ranks your test files by their violations under Accessibility hotspots.
-
@kinora/cli0.8.0 reads the same scans from the JSON report, when they are attached with abody. -
See the Playwright reporter guide.
v0.9.0
Kinora 0.9.0
This release brings the accessibility checks of your Storybook stories into kinora, ranked by severity.
Accessibility
@kinora/vitest-reporter0.2.0 uploads the accessibility check of each story run with Storybook's a11y addon: the rules it breaks, their impact (critical, serious, moderate, minor), the elements they hit and a link to each rule's documentation. Only the violations are sent, not axe's full result.- The run and test pages list the violations of a test, most severe first.
- On the Components page, each story shows how many rules it breaks, and Accessibility hotspots ranks the components by their stories' violations, weighted by impact. Filter the page on stories with accessibility issues.
- Stories in the addon's
todomode record their violations as warnings, with their impact. Inerrormode, the story fails and kinora reads its violations from the failure, without their impact. See Vitest and Storybook.
MCP
@kinora/mcp0.4.0:component_healthandtest_historyreturn the accessibility violations of each story or test.
v0.8.0
Kinora 0.8.0
This release tells flaky tests from broken ones, even when your suite runs without retries.
Flaky and broken tests
- The Tests and Components pages now flag each test or story as Flaky or Broken over its last 20 runs, instead of a single "Unstable" count. Hover the badge to see why.
- A test is flaky when it passed and failed on the same commit, needed a retry to pass, or keeps flipping between pass and fail. Flakiness now shows up for Vitest and Storybook suites, which run without retries by default.
- A test is broken when it fails and keeps failing. Its page links to the run where it started failing, with the commit.
- Filter each list on Needs attention, Flaky or Broken. Links shared with the previous
?unstable=filter still open the same list. - See Flaky and broken tests for the exact rules.
MCP
@kinora/mcp0.3.0:test_historyandcomponent_healthreturn thehealthof each test or story (stable,flakyorbroken) with its reason, andcomponent_healthcan filter on it.
v0.7.0
Kinora 0.7.0
This release adds an Analytics page to every project, a command palette to jump anywhere in the dashboard, and a better dashboard on mobile.
Analytics
- Added an Analytics page to each project, next to Per-test history and Components. It shows how the project evolves over the last 30 days (per day) or 90 days (per week), across every run.
- The test outcomes chart shows the share of passed, flaky and failed results over time. Hover a day or a week to see the counts.
- Filter by branch. The range and branch are kept in the URL, so a copied link opens the same view.
Dashboard
- Added a command palette (
⌘K/Ctrl+K) to search projects, runs and tests across the workspace and jump straight to them. - Improved the layout of the dashboard on small screens: header, project cards, run, test history, tests and compare pages.
Desktop
- Updated Electron to 44.
v0.6.0
Kinora 0.6.0
This release opens kinora to Vitest browser mode and Storybook, adds support for Playwright 1.64 traces, and makes the dashboard pick up new deploys on its own.
Vitest and Storybook
- Added
@kinora/vitest-reporter(0.1.0), a Vitest reporter that uploads browser-mode and Storybook tests, with their Playwright traces. Requires Vitest 4.1 or later. - Storybook stories run through the Vitest addon show up on the Components page, as
<Component>/<Story>, with no extra setup. - A failed
toMatchScreenshotuploads its expected, actual and diff images, shown in the same comparison view as Playwright'stoHaveScreenshot. - Only tests running in a browser are uploaded by default, so Node unit tests do not use up your monthly results. Set
include: 'all'to upload them too.
Trace viewer
- Added support for traces recorded with Playwright 1.64. Traces from that version could not be opened before.
Dashboard
- The run history table keeps its sort in the URL, and goes back to the first page when the sort changes.
Desktop
- Fixed the error context of a failing test not being read from traces recorded with recent Playwright versions.