dyang / merge_junit_report Goto Github PK
View Code? Open in Web Editor NEWA fastlane plugin that merges multiple junit reports into one
License: MIT License
A fastlane plugin that merges multiple junit reports into one
License: MIT License
Right now this repository is useful only for fastlane
users. Can you move merging functionality to separate gem and add this new gem as a dependency to the current project, please?
Is it possible to update this plugin to no longer use nokogiri
and instead use something that does not require manual installation? What I mean is that when ever I update gems, I always have to brew unlink xz
and call gem install nokogiri-version-number
and then brew link xz
. Its a pain.
I transitioned fastlane-plugin-setup_fragile_tests_for_rescan
to use REXML
and it seems to work nicely; it is included in Ruby.
@dyang, I've finally been able to update our code to use your nokogiri
-free plugin. However, it is not working for me. Can you take a look and see if this is user error or if there is something that your action doesn't anticipate that it should?
Here are the two files I'm trying to merge:
report_0.xml
<?xml version='1.0' encoding='UTF-8'?>
<testsuites failures='1' name='UI Tests.xctest' tests='26'>
<testsuite failures='1' name='MyTests' tests='26'>
<testcase classname='MyTests' name='testMyThingAdditionInLandscape' time='21.818'/>
<testcase classname='MyTests' name='testMyThingAdditionStep1' time='18.772'/>
<testcase classname='MyTests' name='testMyThingAdditionStep2' time='18.024'/>
<testcase classname='MyTests' name='testMyThingAdditionStep3' time='17.976'/>
<testcase classname='MyTests' name='testMyThingAdditionStep4' time='18.061'/>
<testcase classname='MyTests' name='testAlertDeduplication' time='13.720'/>
<testcase classname='MyTests' name='testAppNeedsUpdateError' time='11.169'/>
<testcase classname='MyTests' name='testCancelingAddMyAccount' time='14.947'/>
<testcase classname='MyTests' name='testCancelingPlarp' time='13.662'/>
<testcase classname='MyTests' name='testDeletingMyThings' time='15.896'/>
<testcase classname='MyTests' name='testDiagnosticsButtonHiddenWhenOff' time='8.031'/>
<testcase classname='MyTests' name='testDiagnosticsNotRecordedWhenOff' time='21.633'/>
<testcase classname='MyTests' name='testDiagnosticsRecordedWhenOn' time='21.985'/>
<testcase classname='MyTests' name='testDuplicateMyThing' time='17.676'/>
</testsuite>
</testsuites>
report_1.xml
<?xml version='1.0' encoding='UTF-8'?>
<testsuites name='UI Tests.xctest' tests='1' failures='1'>
<testsuite name='MyTests' tests='1' failures='1'>
<testcase classname='MyTests' name='testMyThingEditing'>
<failure message='UI Testing Failure - No matches found for "Clear text" Button'>MyTests.m:121</failure>
</testcase>
</testsuite>
</testsuites>
result of merge:
<?xml version='1.0' encoding='UTF-8'?>
<testsuites name='UI Tests.xctest' tests='26'>
<testsuite name='MyTests' tests='26'>
<testcase classname='MyTests' name='testMyThingAdditionInLandscape' time='21.818'/>
<testcase classname='MyTests' name='testMyThingAdditionStep1' time='18.772'/>
<testcase classname='MyTests' name='testMyThingAdditionStep2' time='18.024'/>
<testcase classname='MyTests' name='testMyThingAdditionStep3' time='17.976'/>
<testcase classname='MyTests' name='testMyThingAdditionStep4' time='18.061'/>
<testcase classname='MyTests' name='testAlertDeduplication' time='13.720'/>
<testcase classname='MyTests' name='testAppNeedsUpdateError' time='11.169'/>
<testcase classname='MyTests' name='testCancelingAddMyAccount' time='14.947'/>
<testcase classname='MyTests' name='testCancelingPlarp' time='13.662'/>
<testcase classname='MyTests' name='testDeletingMyThings' time='15.896'/>
<testcase classname='MyTests' name='testDiagnosticsButtonHiddenWhenOff' time='8.031'/>
<testcase classname='MyTests' name='testDiagnosticsNotRecordedWhenOff' time='21.633'/>
<testcase classname='MyTests' name='testDiagnosticsRecordedWhenOn' time='21.985'/>
<testcase classname='MyTests' name='testDuplicateMyThing' time='17.676'/>
</testsuite>
</testsuites>
Notice that it is missing:
<testcase classname='MyTests' name='testMyThingEditing'>
<failure message='UI Testing Failure - No matches found for "Clear text" Button'>MyTests.m:121</failure>
</testcase>
Here is the command I am running:
final_report_filepath = 'artifacts/tests/report.xml'
test_result_filepaths = ['artifacts/tests/report_0.xml', 'artifacts/tests/report_1.xml']
merge_junit_report(
input_files: test_result_filepaths,
output_file: final_report_filepath
)
Can you provide an example command in the readme that shows how to pass in the derived data path? Should it point to the root derived data or the derived data folder for a specific application?
Thanks for putting together a great plugin. I'm updating our build system to use it after multiple re-scans.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.