allure-framework / allure2

Allure Report is a flexible, lightweight multi-language test reporting tool. It provides clear graphical reports and allows everyone involved in the development process to extract the maximum of information from the everyday testing process
https://allurereport.org/
Apache License 2.0
4.21k stars 713 forks source link

allure commandline: support building report when results and categories.json are in different folders #1236

Open vlsi opened 3 years ago

vlsi commented 3 years ago

Is your feature request related to a problem? Please describe.

Currently bin/allure requires that both simple-result.json and categories.json are in the same folder. If I put the files into different folders and pass both of them to bin/allure serve, then the report does not pick up the categories.

The problem of having different data in the same folder looks like "overlapping outputs" to the build systems. Overlapping outputs incur extra burden on builds systems (e.g. https://docs.gradle.org/current/userguide/build_cache_concepts.html#concepts_overlapping_outputs)

Describe the solution you'd like

I would like to provide an explicit pair of "results" and "categories", so allure could build the report accordingly.

For instance: ./allure serve --results results1 --categories path/to/categories.json --results results2 --categories another/categories.json An alternative option is to prepare the description in a standalone JSON file and pass it to ./allure serve --input inputs.json

Describe alternatives you've considered

An alternative would be producing files into different folders and create yet another folder that combines all the files right before calling allure. However, it would require extra file copy operation.

vlsi commented 3 years ago

Yet more ideas: what if categories.json file had "applicability" information associated with the categories? In other words: 1) executor.json lists the metadata on the executor side. For instance, it could be test type, build system type, etc, etc 2) categories.json could specify that "if test_type=e2e, then the following categories apply: ..."

The benefits would be: a) There would be no reason to copy categories.json into every folder with test data b) categories.json files could be combined, and they would still behave well. For instance, if a certain categories classifies only a subset of executors, then it is fine. The key plus here is that we no longer need to maintain relationship between "test data results" and "categories files". The command might be way simpler: ./allure serve --categories path/to/categories.json results1 results2 c) There might be globally-shared categories that might even be published as artifacts (e.g. io.qameta.allure.categories:allure-selenide:1.2). It would be so much fun if Allure could automatically classify "Selenium known issues" :)