Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consider adopting the Open Test Reporting format #5271

Closed
marcphilipp opened this issue Dec 9, 2024 · 4 comments
Closed

Consider adopting the Open Test Reporting format #5271

marcphilipp opened this issue Dec 9, 2024 · 4 comments
Labels
status: wontfix typically a feature which won't be added, or a "bug" which is actually intended behavior type: feature enhancement proposal

Comments

@marcphilipp
Copy link

TL;DR The JUnit team has defined a new language-agnostic test reporting format and implemented a CLI tool for validation, conversion, and HTML report generation. We're reaching out to well-known testing frameworks and reporting tools to ask for feedback and, ultimately, adoption, if you think this format provides value to your users.

Motivation and Context

You've probably come across the "JUnit XML" format for test reporting. This format did not originate from the JUnit project but was initially introduced by the Ant build tool and then adopted by other Java build tools like Maven and Gradle. Many build servers know how to parse the XML-based format, and even non-Java tools often support it. However, it’s based on the concept of test classes and methods, so using it for frameworks and tools where those elements are not present is awkward at best. Moreover, it does not support nested structures beyond a simple parent-child relationship. Finally, it is not extensible: no additional attributes can be added without the risk of breaking existing tools.

For those reasons, many testing frameworks (for example, TestNG and Spock in the Java ecosystem) have defined their own reporting formats. This has given them the flexibility they need, but the number of tools that can parse, display, or transform their custom formats is very limited.

To overcome these limitations, the JUnit team is defining a new format for test reporting. Its goal is to be platform-agnostic so that as many testing frameworks as possible can benefit from it. Moreover, it is designed to be extensible so new data can be added as needed, without breaking consumers. However, all well-known attributes are properly defined so it remains consumable by downstream reporting tools.

Of course, it will take a while for downstream tools to support the new format. However, as the number of testing frameworks that have adopted it increases, the more likely downstream tools are to do so as well.

Overview

The new format is based on XML because it provides more expressive ways to define schemas. Moreover, XML has typed extensions built-in via the use of multiple schemas. If a testing framework provides a listener mechanism, it should be possible to write an Open Test Reporting XML file from an extension.

Benefits

  • Easy to write event-based XML format (with optional Java API)
    • Supports infrastructure information, Git metadata, tags, data/file attachments
    • Custom data can be added by defining an extension schema
  • Language-agnostic
    • No Java-specific elements in the core schema
    • Not tied to the concept of test classes and methods
    • Full support for nested structures
  • Extensible HTML report generator

Next Steps

The JUnit team would be happy to get your feedback on this initiative. We can discuss here or you're welcome to start a thread or open an issue in the Open Test Reporting repo. Should you consider adopting the new format, we'd be happy to provide guidance but we won't have the resources to actually contribute an implementation.


This is a bit of an unusual request so please forgive me for not picking a concrete issue template.

@JoshuaKGoldberg
Copy link
Member

JoshuaKGoldberg commented Dec 9, 2024

Thanks for the heads up @marcphilipp! Exciting to see a "successor" to the JUnit XML format come from the JUnit team. I'll take a look and post over on the ota4j-team/open-test-reporting side.

Per #5027, we're steering away from most feature additions to Mocha for the time being. That includes new core reporters which aren't already/yet commonplace in the JavaScript ecosystem. Given how new this format is, I'm going to close this issue for the time being. If it ends up being popular and used in other JS ecosystem projects we can certainly re-evaluate.

Edit: @voxpelli brings up a good point, I should have linked to our docs on creating third-party reporters: https://github.com/mochajs/mocha/wiki/Third-party-reporters

If you're looking to get more tread around JavaScript folks, I'd suggest looking at Vitest. Vitest is something like the JS ecosystem darling at the moment for unit tests. Other projects listed on https://2023.stateofjs.com/en-US/libraries/testing might be of interest to you as well.

Cheers! 🤎

@JoshuaKGoldberg JoshuaKGoldberg closed this as not planned Won't fix, can't repro, duplicate, stale Dec 9, 2024
@JoshuaKGoldberg JoshuaKGoldberg added type: feature enhancement proposal status: wontfix typically a feature which won't be added, or a "bug" which is actually intended behavior labels Dec 9, 2024
@voxpelli
Copy link
Member

voxpelli commented Dec 9, 2024

It's possible to create third party reporters for Mocha, that's where I would start

@marcphilipp
Copy link
Author

Thanks for the feedback and the pointers! 👍

@marcphilipp
Copy link
Author

I opened vitest-dev/vitest#7066 for Vitest.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: wontfix typically a feature which won't be added, or a "bug" which is actually intended behavior type: feature enhancement proposal
Projects
None yet
Development

No branches or pull requests

3 participants