Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Php Junit Merge Laravel Package

andreas-weber/php-junit-merge

A PHP tool for merging multiple JUnit XML test reports into one file, simplifying consolidation of results from parallel test runs and CI jobs. Useful for build pipelines that need a single combined JUnit report.

Deep Wiki
Context7

Product Decisions This Supports

  • Parallel/sharded test suite reporting: If we shard PHPUnit or Pest across CI runners (or use ParaTest), each shard emits its own JUnit XML. This package consolidates those into a single artifact so our CI provider, PR checks, or dashboard shows one test report instead of N fragmented ones.
  • Unified quality gate across tools: PHPUnit, Pest, PHPStan, Psalm, and Infection can all emit JUnit XML. Merging them into one file lets us feed a single report into GitHub Actions test reporters, GitLab MR widgets, Jenkins, TeamCity, or a BI dashboard — a prerequisite for a "one red/green per PR" policy.
  • Build vs. buy/borrow: The job is small and mechanical (XML parse, dedupe/normalize <testsuite>/<testcase>, re-emit). Deciding to adopt a 12-star, last-released-2021 dependency vs. a 30-line internal merge script is a genuine decision this package forces — and the answer is not obviously "adopt."
  • Tooling consolidation roadmap: Useful input to a broader decision about whether test reporting is a first-class platform concern (owned in our CI templates) or a per-team script. If we standardize on a merge step in reusable workflows, we need to pick and pin something.
  • Vendor/OSS risk budgeting: A concrete data point for how much unsupported, single-maintainer code we tolerate in the critical path of CI. This one is low-blast-radius (reporting only, not test execution), which makes it a reasonable candidate for a "tolerated but isolated" tier.
  • Not supported: test execution, coverage merging (that's phpunit's --coverage / php-code-coverage territory), flaky-test detection, or historical trend analysis. Don't let stakeholders infer those.

When to Consider This Package

Adopt (or vendor/fork) only when all of these hold:

  • We have a real multi-artifact JUnit problem — parallel shards, matrix builds, or multiple tools — and no native consolidation in our CI provider.
  • We need the merge at build time in PHP (e.g., inside a Composer-driven pipeline) rather than as a CI-native step or a junit-merge/xunit-viewer-style external binary.
  • We accept the maintenance profile: last release 2021-07-19, ~12 stars, effectively unmaintained. That means we pin the version, read the source before trusting it, and treat a fork as likely.
  • The merge is reporting-only — a failure or bug here yields a bad dashboard, not a broken build.

Look elsewhere (or write ~50 lines ourselves) when:

  • We need features beyond concatenation: deduplication of retried tests, timestamp/duration normalization, suite-name namespacing across tools, or streaming for very large suites — verify these against the source, don't assume.
  • Our CI can merge natively (GitLab artifacts:reports:junit accepts multiple files; many reporters accept globs/tabs). Then adding a PHP dependency is pure overhead.
  • We need active maintenance, security patching, or a supported SLA — a 2021 last release fails that bar.
  • We're on modern PHP versions we can't confirm are tested; an unmaintained XML-handling library is also a mild supply-chain/XXE-hygiene question worth a quick audit.
  • The team isn't PHP-centric and would rather run a CLI merger in a container.

How to Pitch It (Stakeholders)

To executives: This is a small, MIT-licensed utility that merges JUnit XML test reports — it does not test anything itself. Its value is purely in making our CI test results legible as a single signal per pull request, which shortens the loop between "build went red" and "here's what failed." It is not a strategic dependency: low stars, no release since 2021, tiny surface area. Recommendation: treat it as a cheap, reversible, pin-and-isolate component — or replace it with a small in-house merge step — and do not build roadmap commitments on top of it.

To engineering: One job: read multiple JUnit XML files, combine the suites, write one file. That's it. Benefits are real if we shard tests or collect reports from PHPUnit/Pest/PHPStan/Infection; costs are a dormant dependency in the CI path. Ask for: (1) a spike confirming it handles our PHP version and suite shapes, (2) a version pin plus a wrapper so swapping it out is a one-line change, (3) a fallback of ~50 lines of DOMDocument code if the spike disappoints. Ship it behind our CI templates, not scattered across repos — consolidation is the whole point, and a merge step per-repo defeats it.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
cgv/localized-resource