<?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: Monty Bagati</title>
    <description>The latest articles on DEV Community by Monty Bagati (@monty_bagati_6651e3b22a36).</description>
    <link>https://dev.to/monty_bagati_6651e3b22a36</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%2F2038381%2F8cd87f00-c4a0-4984-aa6b-5c7806566749.jpg</url>
      <title>DEV Community: Monty Bagati</title>
      <link>https://dev.to/monty_bagati_6651e3b22a36</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/monty_bagati_6651e3b22a36"/>
    <language>en</language>
    <item>
      <title>Katalon Studio has no native Allure adapter. Here's how to get one anyway.</title>
      <dc:creator>Monty Bagati</dc:creator>
      <pubDate>Sat, 15 Aug 2026 11:19:22 +0000</pubDate>
      <link>https://dev.to/monty_bagati_6651e3b22a36/katalon-studio-has-no-native-allure-adapter-heres-how-to-get-one-anyway-4g8</link>
      <guid>https://dev.to/monty_bagati_6651e3b22a36/katalon-studio-has-no-native-allure-adapter-heres-how-to-get-one-anyway-4g8</guid>
      <description>&lt;p&gt;JUnit has an official Allure adapter. TestNG has one. Cucumber has one.&lt;br&gt;
Katalon Studio does not, even though it's one of the most widely used test&lt;br&gt;
automation platforms out there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Allure-Katalon Bridge&lt;/strong&gt; fixes that. It turns any Katalon Studio project&lt;br&gt;
into an Allure-reporting project by copying a handful of files into it. No&lt;br&gt;
plugin installation, no OSGi packaging, no command line required, and no&lt;br&gt;
changes to your existing Test Cases or Test Suites.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/montbaga/allure-katalon-bridge" rel="noopener noreferrer"&gt;https://github.com/montbaga/allure-katalon-bridge&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/allure-katalon-bridge" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/allure-katalon-bridge&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;License: Apache-2.0&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  What you get, automatically
&lt;/h2&gt;

&lt;p&gt;Once it's installed, every test suite run produces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One Allure result per test case, with status, timing, suite/host/thread
labels, and the test framework identified as Katalon Studio&lt;/li&gt;
&lt;li&gt;A failure screenshot on any non-passed WebUI test case (screenshot on
every test case, pass or fail, is a one-line config change if you want
it)&lt;/li&gt;
&lt;li&gt;A stack trace attached automatically on failure&lt;/li&gt;
&lt;li&gt;A stable history ID, so retries and repeat runs show up as trend data in
the report instead of unrelated one-off results&lt;/li&gt;
&lt;li&gt;A self-contained &lt;code&gt;allure-report/&amp;lt;Name&amp;gt;_&amp;lt;timestamp&amp;gt;.html&lt;/code&gt; file, generated
automatically at the end of the run. You double-click it and it opens,
same as any other HTML file, because everything (styles, scripts, data)
is embedded inline. No local server, no &lt;code&gt;allure open&lt;/code&gt;, nothing extra to
run.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're running a Test Suite Collection, every member suite combines&lt;br&gt;
into a single report instead of one report per suite, and that report is&lt;br&gt;
named after the Collection itself. If the same suite runs more than once&lt;br&gt;
inside a Collection (once per browser, for example), each occurrence gets&lt;br&gt;
its own entry in the report rather than merging into one. A suite that&lt;br&gt;
opens a browser shows exactly which one right in its name in the Suites&lt;br&gt;
view; a suite that never opens one (a pure API test case, say) doesn't&lt;br&gt;
get a browser label at all.&lt;/p&gt;

&lt;p&gt;Step-level detail inside a test case is entirely opt-in, from a Test Case&lt;br&gt;
script or Cucumber glue code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight groovy"&gt;&lt;code&gt;&lt;span class="n"&gt;CustomKeywords&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="s1"&gt;'allure.AllureKeywords.step'&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Log in as admin'&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;WebUI&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setText&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;findTestObject&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Page/input_Username'&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt; &lt;span class="s1"&gt;'admin'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;WebUI&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;click&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;findTestObject&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Page/button_Login'&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;
&lt;span class="o"&gt;})&lt;/span&gt;
&lt;span class="n"&gt;CustomKeywords&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="s1"&gt;'allure.AllureKeywords.severity'&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'critical'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;CustomKeywords&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="s1"&gt;'allure.AllureKeywords.epic'&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Patient Management'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;CustomKeywords&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="s1"&gt;'allure.AllureKeywords.attachJson'&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Booking payload'&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;responsePayload&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything else, the zero-touch part, needs none of that. Steps, epics,&lt;br&gt;
and severities are extras for when you want more detail, not a&lt;br&gt;
requirement to get a working report.&lt;/p&gt;
&lt;h2&gt;
  
  
  Installing it
&lt;/h2&gt;

&lt;p&gt;Pick whichever fits how you work:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Double-click&lt;/strong&gt;, the simplest path. Open the folder matching your OS,&lt;br&gt;
double-click the installer, pick your Katalon project folder in the&lt;br&gt;
dialog that opens. Uninstall the same way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Drag-and-drop&lt;/strong&gt;: drop your project folder straight onto the installer&lt;br&gt;
file, skips the dialog entirely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Script&lt;/strong&gt;, for CI or anyone scripting the setup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./Linux/install.sh /path/to/your/katalon/project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;macOS shares this same script (bash is bash on both), and there's a&lt;br&gt;
Windows PowerShell equivalent too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;npm&lt;/strong&gt;, works identically on Windows, macOS, and Linux, no need to pick a&lt;br&gt;
platform-specific script at all:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx allure-katalon-bridge &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"/path/to/your/katalon/project"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or install it once and reuse it across projects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; allure-katalon-bridge
allure-katalon-bridge &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"/path/to/your/katalon/project"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Re-running install on a project you've already set up upgrades it in&lt;br&gt;
place, no side effects. A customized &lt;code&gt;allure.properties&lt;/code&gt; is left alone by&lt;br&gt;
default; add &lt;code&gt;--force&lt;/code&gt; (or &lt;code&gt;-Force&lt;/code&gt; on the PowerShell script) if you want&lt;br&gt;
it overwritten with the shipped default too.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually lands in your project
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Test Listeners/AllureTestListener.groovy      auto-discovered by Katalon, the only wiring needed
Keywords/allure/AllureReportBridge.groovy     the engine: status mapping, attachments, environment/executor/categories files
Keywords/allure/AllureConfig.groovy           allure.properties reader, with ALLURE_* env var overrides
Keywords/allure/AllureKeywords.groovy         optional: step(), attachText/Json/Html/File/Screenshot, epic/feature/story/severity/label/link/issue/tmsLink/parameter
Include/config/allure/allure.properties       configuration file (results dir, screenshot policy, and more)
Include/config/allure/categories.json         failure categorization tuned to Katalon/Selenium exception types
Drivers/allure-java-commons-2.35.4.jar        Apache-2.0, from Qameta Software
Drivers/allure-model-2.35.4.jar               the only 2 extra jars needed
Drivers/fetch-allure-jars.ps1                 re-downloads those 2 jars from Maven Central if your org won't commit binaries to git
View Allure Report.bat / .command             optional: opens your most recent report for you
view-allure-report.sh                         same, for Linux/CI or manual use
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything it installs is tracked in &lt;code&gt;.allure-bridge/manifest.txt&lt;/code&gt;, so&lt;br&gt;
uninstalling removes exactly what was added and touches nothing else in&lt;br&gt;
your project. &lt;code&gt;allure-results/&lt;/code&gt; (your generated test output) and your&lt;br&gt;
&lt;code&gt;allure.properties&lt;/code&gt; are kept by default even after uninstall.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuring it
&lt;/h2&gt;

&lt;p&gt;Everything lives in &lt;code&gt;Include/config/allure/allure.properties&lt;/code&gt;, and any key&lt;br&gt;
can be overridden per environment with &lt;code&gt;ALLURE_&amp;lt;KEY_IN_UPPER_SNAKE_CASE&amp;gt;&lt;/code&gt;&lt;br&gt;
(so &lt;code&gt;allure.results.dir&lt;/code&gt; becomes &lt;code&gt;ALLURE_RESULTS_DIR&lt;/code&gt;), handy for pointing&lt;br&gt;
different CI environments at different result folders without touching&lt;br&gt;
the file itself.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;allure.enabled&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Master switch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;allure.results.dir&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;allure-results&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Where raw results are written&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;allure.clean.results.before.run&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Clears last run's results first, so a report only shows the run it's named after&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;allure.attach.screenshot.on.failure&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Screenshot on any non-passed status&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;allure.attach.screenshot.always&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Screenshot on every test case, pass or fail&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;allure.categories.file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Include/config/allure/categories.json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Failure categorization template&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;allure.auto.generate.report&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Auto-runs &lt;code&gt;allure generate&lt;/code&gt; after every suite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;allure.report.dir&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;allure-report&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Where the generated HTML report lands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;allure.report.single.file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;One self-contained &lt;code&gt;.html&lt;/code&gt; file; set &lt;code&gt;false&lt;/code&gt; for a folder instead, useful for very large suites&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;allure.commandline.path&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;auto-detected&lt;/td&gt;
&lt;td&gt;Manual override if auto-detection can't find your &lt;code&gt;allure&lt;/code&gt; install&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  CI, out of the box
&lt;/h2&gt;

&lt;p&gt;Ready-to-copy configs ship for Azure Pipelines, GitHub Actions, and&lt;br&gt;
GitLab CI. Copy the one matching your platform, fill in one line with&lt;br&gt;
your Test Suite or Collection path, add your Katalon API key as a secret,&lt;br&gt;
and push.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;executor.json&lt;/code&gt; auto-detects Jenkins, Azure Pipelines, GitHub Actions,&lt;br&gt;
and GitLab CI from each platform's own standard environment variables, so&lt;br&gt;
your Allure report header links back to the exact build that produced&lt;br&gt;
it, with zero configuration on your end.&lt;/p&gt;

&lt;p&gt;One flag worth calling out if you're setting this up yourself:&lt;br&gt;
&lt;code&gt;--config -webui.autoUpdateDrivers=true&lt;/code&gt;. Hosted CI agents update their&lt;br&gt;
browsers automatically, and Katalon's bundled WebUI driver can fall&lt;br&gt;
behind that, so without this flag a suite can start failing with&lt;br&gt;
&lt;code&gt;SessionNotCreatedException&lt;/code&gt; purely because the agent's browser moved&lt;br&gt;
past what the bundled driver supports. This flag tells Katalon to fetch a&lt;br&gt;
matching driver at run time instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Katalon Studio (built against long-stable public APIs, so it isn't
pinned to one specific version)&lt;/li&gt;
&lt;li&gt;Windows or macOS to use the double-click installer as-is; Linux works
through the install script from a terminal&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://allurereport.org/docs/install/" rel="noopener noreferrer"&gt;Allure commandline&lt;/a&gt;
(&lt;code&gt;npm install -g allure-commandline&lt;/code&gt;) to auto-generate the HTML report
and view it. The bridge auto-detects it across PATH, common install
locations, and your login shell; if it still can't find it, one clear
warning tells you exactly what to set&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why it's built the way it is
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;th&gt;How it's solved&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;No hook to drive Allure's lifecycle from Katalon&lt;/td&gt;
&lt;td&gt;Katalon's public, documented Test Listener API (&lt;code&gt;@BeforeTestSuite&lt;/code&gt;/&lt;code&gt;@BeforeTestCase&lt;/code&gt;/&lt;code&gt;@AfterTestCase&lt;/code&gt;/&lt;code&gt;@AfterTestSuite&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Allure's Jackson clashes with Katalon's bundled Jackson&lt;/td&gt;
&lt;td&gt;Ships only &lt;code&gt;allure-java-commons&lt;/code&gt; and &lt;code&gt;allure-model&lt;/code&gt;, whose Jackson is shaded internally&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Results land in a different folder depending on IDE vs CLI vs CI&lt;/td&gt;
&lt;td&gt;Results directory is resolved explicitly against the project root, not the process's working directory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A reporting bug could fail or change the outcome of a real test&lt;/td&gt;
&lt;td&gt;Every hook catches its own exceptions and only logs a warning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can't afford to touch thousands of existing test cases&lt;/td&gt;
&lt;td&gt;Fully automatic at the suite/case level; step-level detail is entirely opt-in&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Get started
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx allure-katalon-bridge &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"/path/to/your/katalon/project"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reopen the project in Katalon Studio, run a test suite like you always&lt;br&gt;
do, and a finished report is already waiting for you in &lt;code&gt;allure-report/&lt;/code&gt;&lt;br&gt;
by the time it's done. No extra click, no extra script.&lt;/p&gt;

&lt;p&gt;If you run into a Katalon or CI combination that doesn't work, open an&lt;br&gt;
issue on the repo. Questions or help wiring this into a specific setup&lt;br&gt;
are welcome too.&lt;/p&gt;

</description>
      <category>katalon</category>
      <category>allure</category>
      <category>katalonallure</category>
    </item>
  </channel>
</rss>
