I tried the allure-katalon-bridge v1.0.0 developed by Monty_Bagati. Let me report what I experienced.
My environment:
- macOS Tahoe 26.5.2
- Katalon Studio IDE Free 11.3.0 (I did not use Katalon Runtime Engine)
I confirmed that the “allure” command is installed and operational on my machine. In the Terminal I did:
$ allure --version
2.43.0
I checked the location of the “allure” executable:
$ which allure
/Users/kazurayam/.volta/bin/allure
Problem 1: the report was not generated
I created a new Katalon project based on the Sample WebUI project (Healthcare sample).
I downloaded the allure-katalon-bridge-main.zip from the GitHub Releases v1.0.0; unzipped it.
I followed the doc.
I needed to do chmod +x xxxx for two shell files, then I double-clicked the allure-katalon-bridge/macOS/Install.command. In the dialog, I selected my “Healthcare example” project. The allure-katalon-bridge worked and imported sevaral files into the project.
I started Katalon Studio IDE; I opened the Healthcare tests project; I chose the healthcare-tests/Test Suites/healthcare-tests - TS_RegressionTest. I ran it. The Test Suite ran as usual.
I saw several new folders and files created in the Healthcare project. I found the allure-results folder with the following content:
$ pwd
/Users/kazurayam/katalon-workspace/healthcare-tests
$ ls
allure-diag.txt Drivers Profiles test.prj
allure-report GlobalVariables.glbl README.md thumbnail.png
allure-results Include Reports thumbnail@2x.png
allure-step-diag.txt katatlon-test.sh Scripts View Allure Report.bat
bin Keywords settings View Allure Report.command
Checkpoints Libs Test Cases view-allure-report.sh
console.properties Object Repository Test Listeners
Data Files Plugins Test Suites
$ tree allure-results
allure-results
├── 14325c1e-5250-46f9-92a9-5c868634e1dd-result.json
├── 8aad0c96-0eb8-42d7-a8a4-6d4577395766-result.json
├── 98371daa-1595-4abe-acc8-961757a8d519-result.json
├── categories.json
├── environment.properties
└── executor.json
1 directory, 6 files
I checked the allure-report folder and found it contained nothing.
$ tree allure-report
allure-report
0 directories, 0 files
No HTML report was created! Why? I investigated a bit…
I wanted to see the log out of the allure.AllureReportBridge class. I looked into the Console of Katalon Studio IDE, but found no log from the class recorded. I wanted to set the logger to output logs. So I edited the healthcare-tests/Include/config/log.properties file to have a line:
logging.level.allure=DEBUG
and re-ran the Test Suite. Then I noticed several interesting logs.
...
2026-08-09 10:14:23.451 INFO c.k.katalon.core.main.TestCaseExecutor - END Test Cases/Main Test Cases/TC3_Visual Testing Example
2026-08-09 10:14:23.454 INFO allure.AllureReportBridge - [Allure] Suite finished. Results: /Users/kazuakiurayama/katalon-workspace/healthcare-tests/allure-results
2026-08-09 10:14:23.456 INFO allure.AllureReportBridge - [Allure][diag] run at Sun Aug 09 10:14:23 JST 2026\ntestSuiteContext.getTestSuiteId() = 'Test Suites/healthcare-tests - TS_RegressionTest'\nRunConfiguration.getExecutionSourceName() = 'healthcare-tests - TS_RegressionTest'\nRunConfiguration.getExecutionSource() = '/Users/kazuakiurayama/katalon-workspace/healthcare-tests/Test Suites/healthcare-tests - TS_RegressionTest.ts'\nRunConfiguration.getExecutedEntity() = 'TestSuite'\n=> resolved name = 'healthcare-tests - TS_RegressionTest' (via getExecutionSourceName())\n
2026-08-09 10:14:23.613 WARN allure.AllureReportBridge - [Allure] Could not auto-generate the HTML report - is 'allure' on PATH? (Cannot run program "allure": error=2, No such file or directory)
java.io.IOException: Cannot run program "allure": error=2, No such file or directory
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1170)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1089)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:318)
at allure.AllureReportBridge.runAllureGenerate(AllureReportBridge.groovy:269)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:318)
at allure.AllureReportBridge.generateHtmlReport(AllureReportBridge.groovy:197)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:318)
at allure.AllureReportBridge.finishSuite(AllureReportBridge.groovy:157)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:318)
at AllureTestListener.afterTestSuite(AllureTestListener.groovy:41)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1254)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:814)
at groovy.lang.GroovyObject.invokeMethod(GroovyObject.java:39)
at com.kms.katalon.core.context.internal.TestHooker.invokeMethod(TestHooker.java:111)
at com.kms.katalon.core.context.internal.TestHooker.lambda$3(TestHooker.java:95)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at com.kms.katalon.core.context.internal.TestHooker.invokeContextMethods(TestHooker.java:94)
at com.kms.katalon.core.context.internal.TestListenerCollector.lambda$3(TestListenerCollector.java:88)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at com.kms.katalon.core.context.internal.TestListenerCollector.handleListenerEvent(TestListenerCollector.java:85)
at com.kms.katalon.core.context.internal.ExecutionEventManager.publicEvent(ExecutionEventManager.java:47)
at com.kms.katalon.core.main.TestSuiteExecutor.executeListenerAfterTestSuite(TestSuiteExecutor.java:126)
at com.kms.katalon.core.main.TestSuiteExecutor.execute(TestSuiteExecutor.java:114)
at com.kms.katalon.core.main.TestCaseMain.startTestSuite(TestCaseMain.java:206)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:318)
at S0809_2.run(S0809_2.groovy:40)
at groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:254)
at groovy.lang.GroovyShell.run(GroovyShell.java:360)
at groovy.lang.GroovyShell.run(GroovyShell.java:349)
at groovy.ui.GroovyMain.processOnce(GroovyMain.java:652)
at groovy.ui.GroovyMain.run(GroovyMain.java:398)
at groovy.ui.GroovyMain.access$1400(GroovyMain.java:68)
at groovy.ui.GroovyMain$GroovyCommand.process(GroovyMain.java:322)
at groovy.ui.GroovyMain.processArgs(GroovyMain.java:142)
at groovy.ui.GroovyMain.main(GroovyMain.java:115)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:117)
at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:39)
Caused by: java.io.IOException: error=2, No such file or directory
at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:295)
at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:225)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1126)
... 43 more
2026-08-09 10:14:23.640 INFO c.k.katalon.core.main.TestSuiteExecutor - --------------------
2026-08-09 10:14:23.640 INFO c.k.katalon.core.main.TestSuiteExecutor - END Test Suites/healthcare-tests - TS_RegressionTest
2026-08-09 10:14:23.640 INFO c.k.katalon.core.main.TestSuiteExecutor - ====================
The stack trace showed a fatal error message Cannot run program "allure": error=2, No such file or directory'. It was thrown by allure.AllureReportBridge.runAllureGenerate(AllureReportBridge.groovy` at the line#269.
In the Keywords/allure/AllureReportBridge.groovy file, I found the following fragment
private static boolean runAllureGenerate(File resultsDir, File outputDir, boolean singleFile) {
List<String> baseCommand = ['allure', 'generate', resultsDir.absolutePath, '--clean', '-o', outputDir.absolutePath]
if (singleFile) {
baseCommand << '--single-file'
}
boolean isWindows = System.getProperty('os.name', '').toLowerCase().contains('win')
List<String> command = isWindows ? (['cmd', '/c'] + baseCommand) : baseCommand
Process process = new ProcessBuilder(command).redirectErrorStream(true).start() // <= Exception HERE
...
I noticed that the baseCommand starts with a string allure. Is it OK? Maybe not, I thought. I edited the source slightly:
List<String> baseCommand = ['allure', 'generate', resultsDir.absolutePath, '--clean', '-o', outputDir.absolutePath]
List<String> baseCommand = ['/Users/kazurayam/.volta/bin/allure', 'generate', resultsDir.absolutePath, '--clean', '-o', outputDir.absolutePath]
I re-run the test suite. This time I got a HTML report in the allure-report folder. Oorah!
$ tree allure-report
allure-report
└── healthcare-tests - TS_RegressionTest_20260809_103416.html
1 directory, 1 file
The report generated this time looked like this:
You can see the report here
As far as I know, the new ProcessBuilder([command]) requires the absolute path of command on the machine.
The ProcessBuilder never parses the environment variable PATH and lookup the location of ‘allure’. The PATH is meant for the shell (sh, bash, etc) only. It is not meant to be a resource for Java’s ProcessBuilder.
How the environment variable PATH is given in Katalon Stuido IDE?
I wrote a Test case Test Cases/echoPATH as follows:
String path = System.getenv("PATH");
println(path);
When I ran the Test Case in the Katalon Studio IDE, I got:
/usr/bin:/bin:/usr/sbin:/sbin
On the other hand, when I ran the same *.groovy script in the Terminal window with bash interpreter, I got …
/Users/kazurayam/.bun/bin:/Users/kazurayam/.volta/bin:/Users/kazurayam/.anyenv/envs/nodenv/shims:/Users/kazurayam/.anyenv/envs/nodenv/bin:/Users/kazurayam/.anyenv/bin:/usr/local/bin:/usr/local/sbin:/Users/kazurayam/.nodebrew/current/bin:/Users/kazurayam/.pyenv/shims:/Users/kazurayam/.pyenv/bin:/Users/kazurayam/.deno/bin:/Users/kazurayam/.volta/bin:/Users/kazurayam/.local/bin:/Users/kazurayam/.nvm/versions/node/v22.14.0/bin:/Users/kazurayam/.sdkman/candidates/springboot/current/bin:/Users/kazurayam/.sdkman/candidates/maven/current/bin:/Users/kazurayam/.sdkman/candidates/kotlin/current/bin:/Users/kazurayam/.sdkman/candidates/java/current/bin:/Users/kazurayam/.sdkman/candidates/groovy/current/bin:/Users/kazurayam/.sdkman/candidates/gradle/current/bin:/Users/kazurayam/.gem/ruby/2.7.4/bin:/Users/kazurayam/.rubies/ruby-2.7.4/lib/ruby/gems/2.7.0/bin:/Users/kazurayam/.rubies/ruby-2.7.4/bin:/Users/kazurayam/.cargo/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/pkg/env/global/bin:/Library/Apple/usr/bin:/opt/homebrew/bin:/usr/local/go/bin:/Users/kazurayam/Library/Android/sdk/platform-tools:.:/Applications/Firefox.app/Contents/MacOS/firefox:/Users/kazurayam/.cargo/bin:/Users/kazurayam/.gvm/bin
The environment variable PATH in Katalon Studio IDE and the PATH in my command line — these had completely different setup.
I think that it is not a good idea if the allure-katalon-bridge depends on the PATH.
In Windows cmd.exe (the Command Prompt), you can use the built-in WHERE command to find where a command or executable is located. It searches your PATH to show matching file locations. In Mac/Linux shell, you can use the built-in which command to find out the location of allure
Problem 2: Test Suite Collection generated a broken Allure HTML report.
In the healthcare-tests project, we have the healthcare-tests/Test Suite/healthcare-tests - TS_RegressionTestCollection. I ran it. The Collection went through fine.
In the Test Explorer of Katalon Studio IDE, I looked into the allure-report directory, found a .html file. So I double clicked it. I got the following Error dialog.
The html seemed to be broken somehow.
I switched to mac Finder, navigated to the allure-report directory, found the html file. So I opend it with Chrome.
It opened, looked ok at a glance, but I found something strange.
I expected the report to contain the results of 2 Test Suites — one executed with Chrome, another with Firefox.
However, the Collection report contained only the result of the Test Suite with Firefox. No report of Chrome found.
Allure report and the built-in report — which one to choose
Now I got 2 instances of Test Suite execution report. One generated using the allure-katalon-bridge. Another generated by Katalon Studio. Which one should I choose?
I found both reports cover the same log information. Both are equally useful.
If you are already familiar with the Allure products and want to see the test results in the Allure report format, the bridge offers you a favourable choice. You would welcome it. If you have a large Test Suite which contains hundreds of component Test Cases, then the rich features of Allure might shine.
To be honest I don’t know Allure; I am not a fan of Allure products. I do not need the pie chart and bar chart for a tiny test execution report. So I would prefer the built-in HTML report of Katalon Studio as it is compact, well-optimized for tiny Katalon tests.