Skip to content

Releases: kinora-dev/kinora

v0.15.0

Choose a tag to compare

@github-actions github-actions released this 22 Oct 16:34

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

Choose a tag to compare

@github-actions github-actions released this 20 Oct 13:14

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-reporter now groups sharded Vitest runs into one run, like the Playwright reporter and CLI shipped in 0.13.0. Needs @kinora/vitest-reporter 0.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_id is 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

Choose a tag to compare

@github-actions github-actions released this 19 Oct 16:34

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_ID on GitHub Actions, CI_PIPELINE_ID on GitLab CI, or KINORA_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 the on-failure policy fires on one.
  • The CLI and the Vitest reporter group sharded runs too. kinora upload reads the shard from the Playwright JSON report (new flags --group-key and --no-group), and @kinora/vitest-reporter reads it from --shard (new groupKey option). A Vitest shard with no browser test still uploads, empty, so the run can complete.
  • The ingest API accepts groupKey, attempt and shard on POST /api/v1/runs, and returns the run's status and shardProgress. See the API reference.
  • Needs @kinora/reporter 0.11.0, @kinora/cli 0.11.0 or @kinora/vitest-reporter 0.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-reports setup, 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.
  • /healthcheck returns the status of each service, without error details.
  • Internal error messages are no longer sent to dashboard clients in production.

v0.12.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 18:47

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/reporter 0.10.0 or @kinora/cli 0.10.0. See PR comments.
  • With the on-failure policy, 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

Choose a tag to compare

@github-actions github-actions released this 14 Oct 17:06

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/history without testKey now 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. Pass testKey to get one test's full timeline. See the API reference.

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 18:00

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/reporter 0.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 scanA11y helper in @kinora/reporter/a11y: it runs the scan with @axe-core/playwright and 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 with testInfo.attach and 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/cli 0.8.0 reads the same scans from the JSON report, when they are attached with a body.

  • See the Playwright reporter guide.

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 16:49

Kinora 0.9.0

This release brings the accessibility checks of your Storybook stories into kinora, ranked by severity.

Accessibility

  • @kinora/vitest-reporter 0.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 todo mode record their violations as warnings, with their impact. In error mode, the story fails and kinora reads its violations from the failure, without their impact. See Vitest and Storybook.

MCP

  • @kinora/mcp 0.4.0: component_health and test_history return the accessibility violations of each story or test.

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 15:50

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/mcp 0.3.0: test_history and component_health return the health of each test or story (stable, flaky or broken) with its reason, and component_health can filter on it.

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 14:56

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

Choose a tag to compare

@github-actions github-actions released this 11 Oct 14:59

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 toMatchScreenshot uploads its expected, actual and diff images, shown in the same comparison view as Playwright's toHaveScreenshot.
  • 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.