<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Joris Gallot</title>
    <description>The latest articles on DEV Community by Joris Gallot (@joris-gallot).</description>
    <link>https://dev.to/joris-gallot</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F916419%2F0e4b1fb7-7acc-4e70-9980-a61a2eec2cef.png</url>
      <title>DEV Community: Joris Gallot</title>
      <link>https://dev.to/joris-gallot</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joris-gallot"/>
    <language>en</language>
    <item>
      <title>Introducing Kinora: a Playwright test dashboard with history, flaky tracking, and traces</title>
      <dc:creator>Joris Gallot</dc:creator>
      <pubDate>Mon, 05 Oct 2026 17:38:23 +0000</pubDate>
      <link>https://dev.to/joris-gallot/introducing-kinora-a-playwright-test-dashboard-with-history-flaky-tracking-and-traces-j1i</link>
      <guid>https://dev.to/joris-gallot/introducing-kinora-a-playwright-test-dashboard-with-history-flaky-tracking-and-traces-j1i</guid>
      <description>&lt;p&gt;Playwright gives you an excellent HTML report for a single test run. You can open a failed test, inspect screenshots, read errors, and launch the trace viewer when you need the full story.&lt;/p&gt;

&lt;p&gt;That works great when you are looking at one run.&lt;/p&gt;

&lt;p&gt;It gets harder when your team wants to answer questions across many runs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is this failure new, or has it been failing for days?&lt;/li&gt;
&lt;li&gt;Which tests are flaky across branches and projects?&lt;/li&gt;
&lt;li&gt;Did the pass rate improve after the last fix?&lt;/li&gt;
&lt;li&gt;Where is the trace for the CI failure someone reported yesterday?&lt;/li&gt;
&lt;li&gt;Can everyone on the team debug from the same place without downloading artifacts?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is why I built Kinora.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Kinora?
&lt;/h2&gt;

&lt;p&gt;Kinora is a dashboard for Playwright test reports across projects and over time.&lt;/p&gt;

&lt;p&gt;CI runs push their results to Kinora. The dashboard keeps the history, tracks pass rates and trends, surfaces flaky tests, and lets you open the full Playwright trace inline from a failed test.&lt;/p&gt;

&lt;p&gt;The goal is not to replace Playwright's report. The goal is to keep the useful parts of every report after CI finishes and make them searchable, comparable, and easier to debug as a team.&lt;/p&gt;

&lt;p&gt;You can use Kinora in two ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Self-host it for free with Docker Compose.&lt;/li&gt;
&lt;li&gt;Use the hosted Kinora cloud when you do not want to run the infrastructure yourself.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The source is available on &lt;a href="https://github.com/Kinora-dev/kinora" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, with MIT-licensed embeddable packages and fair-source app packages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why not just use the Playwright HTML report?
&lt;/h2&gt;

&lt;p&gt;The Playwright HTML report is optimized for one run. That is the right default.&lt;/p&gt;

&lt;p&gt;But CI test debugging often needs a longer memory.&lt;/p&gt;

&lt;p&gt;A single report can tell you that a test failed. It does not naturally tell you that the same test failed three times this week, passed on &lt;code&gt;main&lt;/code&gt;, failed only on Chromium, or started getting slow after a specific change.&lt;/p&gt;

&lt;p&gt;Teams usually fill that gap with a mix of CI artifacts, screenshots, Slack messages, local downloads, and tribal knowledge.&lt;/p&gt;

&lt;p&gt;Kinora keeps the run data in one place so you can see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;run history by project&lt;/li&gt;
&lt;li&gt;pass rate trends&lt;/li&gt;
&lt;li&gt;failed and flaky tests&lt;/li&gt;
&lt;li&gt;retries and durations&lt;/li&gt;
&lt;li&gt;git and CI metadata&lt;/li&gt;
&lt;li&gt;trace.zip artifacts attached to failures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That context makes triage faster because the first question is no longer "where is the report?". It becomes "what changed?".&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;A typical setup looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add the Kinora reporter to your Playwright config, or upload a &lt;code&gt;results.json&lt;/code&gt; file with the CLI.&lt;/li&gt;
&lt;li&gt;Run Playwright in CI like you already do.&lt;/li&gt;
&lt;li&gt;Kinora normalizes the report and uploads the run through a simple REST API.&lt;/li&gt;
&lt;li&gt;The dashboard stores the run, tests, metadata, and trace artifacts.&lt;/li&gt;
&lt;li&gt;Your team opens Kinora to review the current run or compare it with history.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The important part is stable test identity.&lt;/p&gt;

&lt;p&gt;Kinora derives a cross-run key from the test file, title path, and project name. That means the same test can be tracked over time even when it is uploaded from different CI jobs or ingestion paths.&lt;/p&gt;

&lt;h2&gt;
  
  
  Debugging failures with traces inline
&lt;/h2&gt;

&lt;p&gt;Playwright traces are one of the best parts of the Playwright ecosystem. They let you replay actions, inspect DOM snapshots, view network requests, and understand what happened before a failure.&lt;/p&gt;

&lt;p&gt;But traces are often trapped inside CI artifacts.&lt;/p&gt;

&lt;p&gt;Kinora keeps the trace attached to the failed test. From the dashboard, you can open it directly in the embedded trace viewer without downloading the zip or switching tools.&lt;/p&gt;

&lt;p&gt;That makes traces part of the team workflow instead of a local debugging afterthought.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding flaky tests over time
&lt;/h2&gt;

&lt;p&gt;A flaky test is rarely obvious from a single run.&lt;/p&gt;

&lt;p&gt;You need history to see that a test passes most of the time, fails sometimes, retries successfully, or fails only under one browser or CI condition.&lt;/p&gt;

&lt;p&gt;Kinora keeps that history so flaky tests can be investigated as a pattern, not as isolated failures.&lt;/p&gt;

&lt;p&gt;The dashboard helps you spot tests that repeatedly move between passed, failed, and flaky states. From there, you can open the run, inspect the trace, and decide whether the problem is test code, app behavior, infrastructure, or timing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built for CI, self-hosting, and teams
&lt;/h2&gt;

&lt;p&gt;Kinora is CI-agnostic. Anything that can run Playwright and send an HTTP request can publish a run.&lt;/p&gt;

&lt;p&gt;The reporter is convenient for Playwright projects. The CLI is useful when you already generate a report and want to upload it as a separate step.&lt;/p&gt;

&lt;p&gt;For deployment, there are two paths:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Self-hosted: run the server, web app, Postgres, and artifact storage on your own infrastructure.&lt;/li&gt;
&lt;li&gt;Cloud: use Kinora without managing the stack.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Self-hosting matters because test reports can include sensitive URLs, logs, screenshots, traces, and environment metadata. If you want that data to stay on your infrastructure, it can.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is next?
&lt;/h2&gt;

&lt;p&gt;Kinora already covers the core workflow: ingest Playwright runs, keep history, surface failures and flaky tests, and open traces inline.&lt;/p&gt;

&lt;p&gt;The next steps are about making that workflow even more useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;better artifact previews for screenshots and videos&lt;/li&gt;
&lt;li&gt;richer local desktop workflows around traces and failed tests&lt;/li&gt;
&lt;li&gt;stronger integrations with alerts, pull requests, and agents&lt;/li&gt;
&lt;li&gt;more content and guides around Playwright reporting best practices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are using Playwright in CI and want a persistent dashboard for your test history, Kinora is available now.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://app.kinora.dev/signup" rel="noopener noreferrer"&gt;Try the hosted app&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://demo.kinora.dev" rel="noopener noreferrer"&gt;Open the live demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.kinora.dev" rel="noopener noreferrer"&gt;Read the docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Kinora-dev/kinora" rel="noopener noreferrer"&gt;Star the project on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>playwright</category>
      <category>testing</category>
      <category>devops</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
