GeezerVison is showing github.com — titlePath breaking Functionality in 2.15.0 · Issue #871 · allure-framework/allure-python
titlePath breaking Functionality in 2.15.0 #871DescriptionThe new version (2.15.0) is breaking previous functionality.
When we run: allure generate acceptance-tests/reports/allure --clean -o artifacts/allure-report
Edit: We are running this command inside a kotlin file for TeamCity.
The result is:
Error message
Could not read test result file acceptance-tests/reports/allure/876f1bcd-72c2-4791-885d-cd1a9d23f14b-result.json
08:37:45 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "titlePath" (class io.qameta.allure.model.TestResult), not marked as ignorable (18 known properties: "start", "descriptionHtml", "parameters", "name", "historyId", "statusDetails", "status", "links", "fullName", "uuid", "description", "testCaseId", "stage", "labels", "stop", "steps", "rerunOf", "attachments"])
08:37:45 at [Source: (sun.nio.ch.ChannelInputStream); line: 1, column: 3049] (through reference chain: io.qameta.allure.model.TestResult["titlePath"])
08:37:45 at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
08:37:45 at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:823)
08:37:45 at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1153)
08:37:45 at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1589)
08:37:45 at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1567)
08:37:45 at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:294)
08:37:45 at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
08:37:45 at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4013)
08:37:45 at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3070)
08:37:45 at io.qameta.allure.allure2.Allure2Plugin.readTestResult(Allure2Plugin.java:344)
08:37:45 at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
08:37:45 at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
08:37:45 at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
08:37:45 at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
08:37:45 at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
08:37:45 at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
08:37:45 at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
08:37:45 at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
08:37:45 at io.qameta.allure.allure2.Allure2Plugin.readResults(Allure2Plugin.java:104)
08:37:45 at io.qameta.allure.ReportGenerator.lambda$readResults$0(ReportGenerator.java:47)
08:37:45 at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
08:37:45 at io.qameta.allure.ReportGenerator.readResults(ReportGenerator.java:47)
08:37:45 at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
08:37:45 at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
08:37:45 at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
08:37:45 at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
08:37:45 at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
08:37:45 at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
08:37:45 at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
08:37:45 at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
08:37:45 at io.qameta.allure.ReportGenerator.generate(ReportGenerator.java:69)
08:37:45 at io.qameta.allure.ReportGenerator.generate(ReportGenerator.java:58)
08:37:45 at io.qameta.allure.Commands.generate(Commands.java:104)
08:37:45 at io.qameta.allure.CommandLine.run(CommandLine.java:152)
08:37:45 at java.base/java.util.Optional.orElseGet(Optional.java:364)
08:37:45 at io.qameta.allure.CommandLine.main(CommandLine.java:88)
Activityrob-broadley commented on Jul 23, 2025 We are also hitting this issue. We have a large number of repos which use allure-python pinned to >2.0, <3.0 - to keep up to date, but avoid breaking changes. These will therefore all now be using 2.15, with this breaking change.
We are using Allure in Jenkins using the plugin https://plugins.jenkins.io/allure-jenkins-plugin which has not had a release since Nov 2024.
From what I can see the issue was introduced by #870. baev commented on Jul 23, 2025 rvolnoboy commented on Jul 23, 2025 Getting the same issue as others right after update to version 2.15.0. Getting empty allure report:
13:29:13 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "titlePath" (class io.qameta.allure.model.TestResult), not marked as ignorable (18 known properties: "start", "descriptionHtml", "parameters", "name", "historyId", "statusDetails", "status", "links", "fullName", "uuid", "description", "testCaseId", "stage", "labels", "stop", "steps", "rerunOf", "attachments"])
13:29:13 at [Source: (sun.nio.ch.ChannelInputStream); line: 1, column: 1047] (through reference chain: io.qameta.allure.model.TestResult["titlePath"])
13:29:13 at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
13:29:13 at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:823)
13:29:13 at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1153)
13:29:13 at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1589)
13:29:13 at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1567)
13:29:13 at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:294)
13:29:13 at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
13:29:13 at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4013)
13:29:13 at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3070)
13:29:13 at io.qameta.allure.allure2.Allure2Plugin.readTestResult(Allure2Plugin.java:344)
13:29:13 at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
13:29:13 at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
13:29:13 at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
13:29:13 at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
13:29:13 at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
13:29:13 at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
13:29:13 at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
13:29:13 at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
13:29:13 at io.qameta.allure.allure2.Allure2Plugin.readResults(Allure2Plugin.java:104)
13:29:13 at io.qameta.allure.ReportGenerator.lambda$readResults$0(ReportGenerator.java:47)
13:29:13 at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
13:29:13 at io.qameta.allure.ReportGenerator.readResults(ReportGenerator.java:47)
13:29:13 at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
13:29:13 at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
13:29:13 at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
13:29:13 at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
13:29:13 at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
13:29:13 at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
13:29:13 at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
13:29:13 at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
13:29:13 at io.qameta.allure.ReportGenerator.generate(ReportGenerator.java:69)
13:29:13 at io.qameta.allure.ReportGenerator.generate(ReportGenerator.java:58)
13:29:13 at io.qameta.allure.Commands.generate(Commands.java:104)
13:29:13 at io.qameta.allure.CommandLine.run(CommandLine.java:152)
13:29:13 at java.base/java.util.Optional.orElseGet(Optional.java:364)
13:29:13 at io.qameta.allure.CommandLine.main(CommandLine.java:88)
rvolnoboy commented on Jul 23, 2025
You need to update allure-commandline to the latest version (2.34.1 as of today). For the Jenkins plugin, you need to update the installed Allure tool, see https://allurereport.org/docs/integrations-jenkins/#_2-install-the-global-tool.
PS this issue is caused by a bug in Allure 2, which was fixed in late 2021; so please consider regular updates to the latest version.
We are on the latest plugin and Allure lib in python.
allure-pytest==2.15.0
allure-behave==2.15.0
allure-python-commons-test==2.15.0
allure-python-commons==2.15.0
Allure Jenkins Plugin
Version 2.32.0 baev commented on Jul 23, 2025 The Allure Jenkins Plugin can work with different versions of the Allure-Commandline tool:
- In the Jenkins web interface, go to Manage Jenkins → Global Tool Configuration.
- Under the Allure Commandline section, find the Allure tool.
- Update the tool configuration to use the latest version
Reacted by rvolnoboy and Rob Broadley baev commented on Jul 23, 2025 It's unclear to most users that Allure Commandline needs to be updated separately when the Allure Jenkins plugin is used. We plan to address this by
- Adding a section to the documentation to specifically mention the update process
- Release an update for the Allure Jenkins Plugin that updates stale tools to the more modern ones
BTW, we plan to rework the Allure Jenkins plugin, as it's currently quite stale, and likely revisit some design choices. rvolnoboy commented on Jul 23, 2025
The Allure Jenkins Plugin can work with different versions of the Allure-Commandline tool:
- In the Jenkins web interface, go to Manage Jenkins → Global Tool Configuration.
- Under the Allure Commandline section, find the Allure tool.
- Update the tool configuration to use the latest version
Thank you, it worked. I didn't know about a separate update process for allure-commandline. We used a version from 2019. rob-broadley commented on Jul 23, 2025 Thank you, can also confirm that updating the Allure Commandline version in Jenkins fixes the issue.
It's unclear to most users that Allure Commandline needs to be updated separately when the Allure Jenkins plugin is used. We plan to address this by
- Adding a section to the documentation to specifically mention the update process
- Release an update for the Allure Jenkins Plugin that updates stale tools to the more modern ones
BTW, we plan to rework the Allure Jenkins plugin, as it's currently quite stale, and likely revisit some design choices.
Sounds like a good plan, I imagine there are many users who don't realise they are running a years old version. Reacted by Dmitry Baev and Petrisor Ionel
MetadataMetadataDevelopmentNo branches or pull requestsIssue actions
|