{"id":24580067,"url":"https://github.com/vdaburon/junitreportkpicomparejmeterreportcsv","last_synced_at":"2026-02-23T09:03:35.381Z","repository":{"id":166410068,"uuid":"641852774","full_name":"vdaburon/JUnitReportKpiCompareJMeterReportCsv","owner":"vdaburon","description":"Compare 2 load tests. This tool create a JUnit XML file with KPI rules and compare 2 JMeter CSV Report (current and reference)  result in html, csv and json formats","archived":false,"fork":false,"pushed_at":"2025-04-25T15:31:13.000Z","size":476,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-04T23:09:26.404Z","etag":null,"topics":["cicd","csv-comparison","jmeter","jmeter-plugin","jmeter-plugins","junit","junit-xml","kpi","kpis"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vdaburon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-05-17T09:51:04.000Z","updated_at":"2025-04-25T15:27:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"ea0b691a-7a9a-4154-88c9-aef8d69e332e","html_url":"https://github.com/vdaburon/JUnitReportKpiCompareJMeterReportCsv","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/vdaburon/JUnitReportKpiCompareJMeterReportCsv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vdaburon%2FJUnitReportKpiCompareJMeterReportCsv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vdaburon%2FJUnitReportKpiCompareJMeterReportCsv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vdaburon%2FJUnitReportKpiCompareJMeterReportCsv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vdaburon%2FJUnitReportKpiCompareJMeterReportCsv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vdaburon","download_url":"https://codeload.github.com/vdaburon/JUnitReportKpiCompareJMeterReportCsv/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vdaburon%2FJUnitReportKpiCompareJMeterReportCsv/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273619452,"owners_count":25138238,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cicd","csv-comparison","jmeter","jmeter-plugin","jmeter-plugins","junit","junit-xml","kpi","kpis"],"created_at":"2025-01-24T01:32:38.135Z","updated_at":"2026-02-23T09:03:30.335Z","avatar_url":"https://github.com/vdaburon.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Compare 2 load tests JMeter Report CSV File and create a JUnit Report based on custom Key Performance Indicators (KPIs)\n\nThis tool read KPI declarations in a file and apply the KPI assertion on 2 JMeter Report CSV files (current and reference) and generates a result file in JUnit XML format and others formats Html, Json and Csv.\n\nJMeter Report CSV file is created with Listener : \n- Summary Report, documentation at [Summary Report](https://jmeter.apache.org/usermanual/component_reference.html#Summary_Report)\n- Aggregate Report, documentation at [Aggregate Report](https://jmeter.apache.org/usermanual/component_reference.html#Aggregate_Report)\n- Synthesis Report, documentation at [Synthesis Report](https://jmeter-plugins.org/wiki/SynthesisReport/)\n\nand \"Save Table Data\" button\u003cbr\u003e\n![save_table_data](doc/images/summary_report_save_table_data.png)\n\nJMeter Report CSV could be generated in Command Line Interface (CLI) with :\n- JMeterPluginsCMD tool, documentation at [JMeterPluginsCMD](https://jmeter-plugins.org/wiki/JMeterPluginsCMD/)\n  - E.g : JMeterPluginsCMD.bat --generate-csv aggregate.csv --input-jtl results.csv --plugin-type AggregateReport\n  - JMeterPluginsCMD.bat --generate-csv synthesis.csv --input-jtl results.csv --plugin-type SynthesisReport\n- jmeter-graph-tool-maven-plugin maven plugin, documentation at [jmeter-graph-tool-maven-plugin](https://github.com/vdaburon/jmeter-graph-tool-maven-plugin)\n\nExample of a JMeter Report CSV file (Synthesis Report) \u003cbr\u003e\n![jmeter report csv](doc/images/example_csv_file.png)\u003cbr\u003e\nThe column separator is ',' and the decimal separator is the period '.' character (usually : LANG=en_US)\n\nThe first line contains **header** column name\u003cbr\u003e\n![headers jmeter report csv](doc/images/headers_jmeter_report_csv_file.png)\n\n## The KPI file format\nThe KPI file need 6 columns :\n1) name_kpi the name of the KPI also the classname in the Test Case in JUnit\n2) metric_csv_column_name the column name **header** in the JMeter Report CSV file (**header** likes : `# Samples` or `Average` or `Min` or `Max` or `90% Line` or `Std. Dev.` or `Error %` or `Throughput` or `Received KB/sec` or `Avg. Bytes` or `MY_COLUMN_NAME`)\n3) label_regex the Label name in regular expression, label header in the JMeter Report CSV file (E.g : `SC01_P.*` or `SC\\d+_P.*` or `SC01_P01_LOGIN` or `SC01_P01_LOGIN|SC01_P02_HOME` or `\\d+ /.*` )\n4) comparator the comparator `\u003c` or `\u003c=` or `\u003e` or `\u003e=`\n5) compare_to `empty` (column value is empty) or `REFERENCE` \n5) threshold_delta the value\n6) comment a comment to explain the kpi\n\nIf compare_to is empty, value is compared to current result threshold_delta **absolute** value (E.g : 2000 ms **absolute**), for `Error %` value between 0 and 1 (0.20 for 20%)\u003cbr\u003e\nIf compare_to equals `REFERENCE`, current value not end with `%` then compare to (reference value + threshold_delta) **delta** value (E.g : **add** 500 ms (**delta**) to the reference value)\u003cbr\u003e\nIf compare_to equals `REFERENCE`,current value ended with `%` then compare to (reference value + threshold_delta/100) **delta** % value (E.g : **add** 10% (**delta**) to the reference value)\u003cbr\u003e\n\nExamples : \u003cbr\u003e\nPercentiles_90,90% Line,SC01_P01_LOGIN,\u0026lt;=,REFERENCE,500   : The current value column `90% Line` for Label SC01_P01_LOGIN need to be \u0026lt;= (The reference value column `90% Line` for Label SC01_P01_LOGIN + 500 ms delta) \u003cbr\u003e\nPage Size,Avg. Bytes,SC.\u0026#42;,\u0026lt;=,,6120  : The current value colum `Avg. Bytes` for Labels starting with \"SC\" need to be \u0026lt;= 6120 Bytes (absolute value)\u003cbr\u003e\nErrors rate,Error %,SC\\d+\\_SCRIPT.\u0026#42;,\u0026lt;=,REFERENCE,5% : The current value column `Error %` for Labels matching regex need to be \u0026lt;= (The reference value column `Error %` for Labels matching regex * 1.05 (5% delta) )\u003cbr\u003e\n\nThe column separator is ','  and the decimal separator is the period '.' character for the kpi file\n\u003cpre\u003e\nname_kpi,metric_csv_column_name,label_regex,comparator,compare_to,threshold_delta,comment\nPercentiles_90,90% Line,SC\\d+_P.*,\u003c=,REFERENCE,500,Current \u003c= (Reference + 500 ms)\nPercentiles_90 specific pages,90% Line,SC01_P03_LOGIN|SC03_P03_LOGIN,\u003c=,REFERENCE,10%,Current \u003c= (Reference * 1.10)\nPercentiles_90 specific pages,90% Line,SC01_P03_LOGIN|SC03_P03_LOGIN,\u003c=,REFERENCE,,Current \u003c= Reference\nAverage Pages,Average,SC\\d+_P.*,\u003c=,,2000,Current \u003c= 2000 ms\nAverage Pages,Average,SC\\d+_P.*,\u003c=,REFERENCE,-5%,Current \u003c= Reference * 0.95) Reference -5% \u003c= Current \u003c Reference +5%\nAverage Pages,Average,SC\\d+_P.*,\u003c,REFERENCE,5%,Current \u003c (Reference * 1.05)\nErrors rate,Error %,SC\\d+_SCRIPT.*,\u003c,,0.10,Current \u003c 0.10\nErrors rate,Error %,SC\\d+_SCRIPT.*,\u003c=,REFERENCE,5%,Current \u003c (Reference + 5%)\nPage Size,Avg. Bytes,SC.*,\u003c=,,6120,Current \u003c= 6120 Bytes\nMax time specific API,Max,SC01_P05_LANCE_RECH,\u003c=,,100,Current \u003c= 100\nNumber pages,# Samples,SC.*,\u003e,REFERENCE,,Current \u003e= Reference\n\u003c/pre\u003e\n\nKPI View in Excel\u003cbr\u003e\n![kpi in Excel](doc/images/kpi_excel.png)\n\nSave in UTF-8 comma separator **no BOM** or csv with comma separator if you have only ASCII characters (no accent é,è, à ...)\n\n## Parameters \nThe tool have parameters :\n\u003cpre\u003e\nusage: io.github.vdaburon.jmeter.utils.comparekpi.JUnitReportCompareJMReportCsv -csvJMReportCurrent \u0026lt;csvJMReportCurrent\u0026gt;\n       -csvJMReportReference \u0026lt;csvJMReportReference\u0026gt; [-csvLabelColumnName \u0026lt;csvLabelColumnName\u0026gt;] [-csvOutFile \u0026lt;csvOutFile\u0026gt;] [-divHtmlOutFile\n       \u0026lt;divHtmlOutFile\u0026gt;] [-exitReturnOnFail \u0026lt;exitReturnOnFail\u0026gt;] [-help] [-htmlOutFile \u0026lt;htmlOutFile\u0026gt;] [-jsonOutFile \u0026lt;jsonOutFile\u0026gt;]\n       [-junitFile \u0026lt;junitFile\u0026gt;] -kpiFile \u0026lt;kpiFile\u0026gt;\nio.github.vdaburon.jmeter.utils.comparekpi.JUnitReportCompareJMReportCsv\n -csvJMReportCurrent \u0026lt;csvJMReportCurrent\u0026gt;       JMeter report current csv file (E.g : summary.csv or aggregate.csv or synthesis.csv)\n -csvJMReportReference \u0026lt;csvJMReportReference\u0026gt;   JMeter report reference csv file (E.g : summary_ref.csv or aggregate_ref.csv or\n                                                synthesis_ref.csv)\n -csvLabelColumnName \u0026lt;csvLabelColumnName\u0026gt;       Label Column Name in CSV JMeter Report (Default : Label)\n -csvOutFile \u0026lt;csvOutFile\u0026gt;                       Csv out file result optional (E.g: result.csv)\n -divHtmlOutFile \u0026lt;divHtmlOutFile\u0026gt;               Div Partial Html Page out file result optional (E.g: div_result.html), to include in an\n                                                another HTML Page\n -exitReturnOnFail \u0026lt;exitReturnOnFail\u0026gt;           if true then when kpi fail then create JUnit XML file and program return exit 1 (KO); if\n                                                false (Default) then create JUnit XML File and exit 0 (OK)\n -help                                          Help and show parameters\n -htmlOutFile \u0026lt;htmlOutFile\u0026gt;                     Html out file result optional (E.g: result.html)\n -jsonOutFile \u0026lt;jsonOutFile\u0026gt;                     Json out file result optional (E.g: result.json)\n -junitFile \u0026lt;junitFile\u0026gt;                         junit file name out (Default : TEST-jmeter-junit-plugin-compare-jmreport.xml)\n -kpiFile \u0026lt;kpiFile\u0026gt;                             KPI file contains rule to check and compare to reference value (E.g : kpi_compare.csv)\nE.g : java -jar junit-reporter-kpi-compare-jmeter-report-csv-\u0026lt;version\u0026gt;-jar-with-dependencies.jar -csvJMReportCurrent summary.csv\n-csvJMReportReference summary_ref.csv -kpiFile kpi_compare.csv -exitReturnOnFail true\nor more parameters : java -jar junit-reporter-kpi-compare-jmeter-report-csv-\u0026lt;version\u0026gt;-jar-with-dependencies.jar -csvJMReportCurrent\naggreagate.csv  -csvJMReportReference aggregate_ref.csv -csvLabelColumnName Label -kpiFile kpi_compare.csv -junitFile junit_compare.xml\n-htmlOutFile result.html -divHtmlOutFile div_result.html -csvOutFile result.csv -jsonOutFile result.json -exitReturnOnFail true\n\u003c/pre\u003e\n\n## JUnit Report XML file generated\nExample JUnit XML file generated :\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?\u003e\n\u003ctestsuite errors=\"0\" failures=\"4\" name=\"JUnit Report From Compare JMeter Report Csv\" skipped=\"0\" tests=\"11\"\u003e\n  \u003ctestcase classname=\"Percentiles_90\" name=\"90% Line (SC\\d+_P.*) \u0026lt;= (500 + REFERENCE Value)\"/\u003e\n  \u003ctestcase classname=\"Percentiles_90 specific pages\" name=\"90% Line (SC01_P03_LOGIN|SC03_P03_LOGIN) \u0026lt;= (10% + REFERENCE Value)\"/\u003e\n  \u003ctestcase classname=\"Percentiles_90 specific pages\" name=\"90% Line (SC01_P03_LOGIN|SC03_P03_LOGIN) \u0026lt;= (REFERENCE Value)\"/\u003e\n  \u003ctestcase classname=\"Average Pages\" name=\"Average (SC\\d+_P.*) \u0026lt;= 2000\"/\u003e\n  \u003ctestcase classname=\"Average Pages\" name=\"Average (SC\\d+_P.*) \u0026lt;= (-5% + REFERENCE Value)\"\u003e\n    \u003cfailure message=\"\"\u003eActual value 80.0 exceeds threshold 76.0 for samples matching \"SC\\d+_P.*\"; fail label(s) \"SC01_P01_ACCUEIL\", \"SC03_P02_DMD_FORM_LOGIN\", \"SC01_P02_DMD_FORM_LOGIN\", \"SC03_P03_LOGIN\", \"SC01_P03_LOGIN\", \"SC01_P04_DMD_FORM_RECH\", \"SC03_P04_LIEN_STATS\", \"SC01_P05_LANCE_RECH\", \"SC03_P06_LOGOUT\", \"SC01_P06_DETAIL_DOC\", \"SC01_P07_RETOUR_LISTE\", \"SC01_P08_RETOUR_MENU\", \"SC01_P09_LOGOUT\"\u003c/failure\u003e\n  \u003c/testcase\u003e\n  \u003ctestcase classname=\"Average Pages\" name=\"Average (SC\\d+_P.*) \u0026lt;= (5% + REFERENCE Value)\"/\u003e\n  \u003ctestcase classname=\"Errors rate\" name=\"Error % (SC\\d+_SCRIPT.*) \u0026lt; 0.10\"/\u003e\n  \u003ctestcase classname=\"Errors rate\" name=\"Error % (SC\\d+_SCRIPT.*) \u0026lt;= (5% + REFERENCE Value)\"/\u003e\n  \u003ctestcase classname=\"Page Size\" name=\"Avg. Bytes (SC.*) \u0026lt;= 6120\"\u003e\n    \u003cfailure message=\"\"\u003eActual value 38365.0 exceeds threshold 6120.0 for samples matching \"SC.*\"; fail label(s) \"SC01_P01_ACCUEIL\", \"SC03_P01_ACCUEIL\", \"SC01_P04_DMD_FORM_RECH\", \"SC03_P04_LIEN_STATS\", \"SC01_P05_LANCE_RECH\", \"SC01_P06_DETAIL_DOC\", \"SC01_P07_RETOUR_LISTE\", \"SC03_SCRIPT_STATS\", \"SC01_SCRIPT_RECH_AFF_DETAIL\"\u003c/failure\u003e\n  \u003c/testcase\u003e\n  \u003ctestcase classname=\"Max time specific API\" name=\"Max (SC01_P05_LANCE_RECH) \u0026lt;= 100\"\u003e\n    \u003cfailure message=\"\"\u003eActual value 132.0 exceeds threshold 100.0 for samples matching \"SC01_P05_LANCE_RECH\"; fail label(s) \"SC01_P05_LANCE_RECH\"\u003c/failure\u003e\n  \u003c/testcase\u003e\n  \u003ctestcase classname=\"Number pages\" name=\"# Samples (SC.*) \u0026gt; (REFERENCE Value)\"\u003e\n    \u003cfailure message=\"\"\u003eActual value 4.0 is less or equals then threshold 4.0 for samples matching \"SC.*\"; fail label(s) \"SC03_SCRIPT_STATS\", \"SC01_SCRIPT_RECH_AFF_DETAIL\"\u003c/failure\u003e\n  \u003c/testcase\u003e\n\u003c/testsuite\u003e\n```\nRemark : failure message is limited to 1024 characters, if failure message finished with \"...\" then the message is voluntarily truncated.\n\n## JUnit Report in a Gitlab Pipeline\nA JUnit Report with KPIs display in a Gitlab Pipeline\u003cbr\u003e\n![junit gitlab pipeline](doc/images/junit_report_in_gitlab_pipeline.png)\n\nIf you click on button \"View Details\" for Status Fail, you will show the fail message\u003cbr\u003e\n![junit gitlab pipeline detail fail](doc/images/junit_report_in_gitlab_pipeline_detail_fail.png)\n\n## JUnit Report in Jenkins Build\nA JUnit Report with KPIs display in Jenkins Build\u003cbr\u003e\n![junit jenkins build](doc/images/junit_report_jenkins.png)\n\nIf you click on link \"Name Test\" fail , you will show the fail message\u003cbr\u003e\n![junit jenkins build detail fail](doc/images/junit_report_jenkins_detail_fail.png)\n\n## Html out format\nThe result could be a html page ou partial html page (div)\u003cbr\u003e\n![html out format](doc/images/html_out_result.png)\n\n## Csv out format\nThe result in a csv file\u003cbr\u003e\n![csv out format](doc/images/csv_out_result.png)\n\n## Json out format\nThe result in a Json file\u003cbr\u003e\n![csv out format](doc/images/json_out_result.png)\n\n## License\nSee the LICENSE file Apache 2 [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n\n## Usage Maven\nThe maven groupId, artifactId and version, this plugin is in the **Maven Central Repository** [![Maven Central junit-reporter-kpi-compare-jmeter-report-csv](https://maven-badges.herokuapp.com/maven-central/io.github.vdaburon/junit-reporter-kpi-compare-jmeter-report-csv/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.vdaburon/junit-reporter-kpi-compare-jmeter-report-csv)\n\n```xml\n\u003cgroupId\u003eio.github.vdaburon\u003c/groupId\u003e\n\u003cartifactId\u003ejunit-reporter-kpi-compare-jmeter-report-csv\u003c/artifactId\u003e\n\u003cversion\u003e1.4\u003c/version\u003e\n```\nJust include the plugin in your `pom.xml` and execute `mvn verify` \u003cbr\u003e\nor individual launch `mvn -jmeterReportCurrent=synthesis.csv -DjmeterReportReference=synthesis_ref.csv -DkpiFile=kpi.csv -DjunitFile=TEST-jmeter-junit-plugin-compare-jmreport.xml exec:exec@create_junit-reporter-kpi-compare-jmeter-report`\n\n```xml\n\n\u003cproject\u003e\n    \u003cproperties\u003e\n        \u003cjmeterReportCurrent\u003esynthesis.csv\u003c/jmeterReportCurrent\u003e\n        \u003cjmeterReportReference\u003esynthesis_ref.csv\u003c/jmeterReportReference\u003e \n        \u003ckpiFile\u003ekpi.csv\u003c/kpiFile\u003e\n        \u003cjunitFile\u003eTEST-jmeter-junit-plugin-compare-jmreport.xml\u003c/junitFile\u003e\n    \u003c/properties\u003e\n\n    \u003cdependencies\u003e\n        \u003cdependency\u003e\n            \u003cgroupId\u003eio.github.vdaburon\u003c/groupId\u003e\n            \u003cartifactId\u003ejunit-reporter-kpi-compare-jmeter-report-csv\u003c/artifactId\u003e\n            \u003cversion\u003e1.4\u003c/version\u003e\n        \u003c/dependency\u003e\n    \u003c/dependencies\u003e\n\n    \u003cbuild\u003e\n        \u003cplugins\u003e\n            \u003cplugin\u003e\n                \u003cgroupId\u003eorg.codehaus.mojo\u003c/groupId\u003e\n                \u003cartifactId\u003eexec-maven-plugin\u003c/artifactId\u003e\n                \u003cversion\u003e1.2.1\u003c/version\u003e\n                \u003cexecutions\u003e\n                    \u003cexecution\u003e\n                        \u003c!-- individual launch : mvn exec:exec@create_junit-reporter-kpi-compare-jmeter-report --\u003e\n                        \u003cid\u003ecreate_junit-reporter-kpi-compare-jmeter-report\u003c/id\u003e\n                        \u003cphase\u003everify\u003c/phase\u003e\n                        \u003cgoals\u003e\n                            \u003cgoal\u003eexec\u003c/goal\u003e\n                        \u003c/goals\u003e\n                        \u003cconfiguration\u003e\n                            \u003carguments\u003e\n                                \u003cargument\u003e-classpath\u003c/argument\u003e\n                                \u003c!-- automatically creates the classpath using all project dependencies,\n                                                   also adding the project build directory --\u003e\n                                \u003cclasspath/\u003e\n                                \u003cargument\u003eio.github.vdaburon.jmeter.utils.comparekpi.JUnitReportCompareJMReportCsv\u003c/argument\u003e\n                                \u003cargument\u003e-kpiFile\u003c/argument\u003e\n                                \u003cargument\u003e${project.build.directory}/jmeter/testFiles/${kpiFile}\u003c/argument\u003e\n                                \u003cargument\u003e-csvJMReportCurrent\u003c/argument\u003e\n                                \u003cargument\u003e${project.build.directory}/jmeter/results/${jmeterReportCurrent}\u003c/argument\u003e\n                                \u003cargument\u003e-csvJMReportReference\u003c/argument\u003e\n                                \u003cargument\u003e${project.build.directory}/jmeter/results/${jmeterReportReference}\u003c/argument\u003e\n                                \u003cargument\u003e-junitFile\u003c/argument\u003e\n                                \u003cargument\u003e${project.build.directory}/jmeter/results/${junitFile}\u003c/argument\u003e\n                                \u003cargument\u003e-exitReturnOnFail\u003c/argument\u003e\n                                \u003cargument\u003etrue\u003c/argument\u003e\n                            \u003c/arguments\u003e\n                        \u003c/configuration\u003e\n                    \u003c/execution\u003e\n                \u003c/executions\u003e\n            \u003c/plugin\u003e\n        \u003c/plugins\u003e\n    \u003c/build\u003e\n\u003c/project\u003e\n```\n\n## Simple jar tool\nThis tool is a java jar, so it's could be use as simple jar (look at [Release](https://github.com/vdaburon/JUnitReportKpiCompareJMeterReportCsv/releases) to download jar file)\n\u003cpre\u003e\njava -jar junit-reporter-kpi-compare-jmeter-report-csv-\u0026lt;version\u0026gt;-jar-with-dependencies.jar -csvJMReportCurrent summary.csv -csvJMReportReference summary_ref.csv -kpiFile kpi.csv -junitFile junit-report.xml -exitReturnOnFail true\n\u003c/pre\u003e\n\n## Tool installed with jmeter-plugins-manager\nThis tool could be installed with the jmeter-plugins-manager from jmeter.plugins.org.\u003cbr\u003e\nThe tool name is : \"vdn@github - junit-reporter-kpi-compare-jmeter-report-csv tool\"\n\nin JMETER_HOME\\bin (Windows)\n\u003cpre\u003e\njunit-reporter-kpi-compare-jmeter-report-csv.cmd -csvJMReportCurrent summary.csv -csvJMReportReference summary_ref.csv -kpiFile kpi.csv -junitFile junit-report.xml -htmlOutFile result.html -csvOutFile result.csv\n\u003c/pre\u003e\nor \u003cbr\u003e\nin JMETER_HOME/bin (Linux or MacOS)\n\u003cpre\u003e\njunit-reporter-kpi-compare-jmeter-report-csv.sh -csvJMReportCurrent summary.csv -csvJMReportReference summary_ref.csv -kpiFile kpi.csv -junitFile junit-report.xml -htmlOutFile result.html -csvOutFile result.csv\n\u003c/pre\u003e\n\n## Link to other project\nUsually this plugin is use with [jmeter-graph-tool-maven-plugin](https://github.com/vdaburon/jmeter-graph-tool-maven-plugin)\n\n## Versions\nversion 1.4 date 2025-04-25, Change page title, define unique table css class to avoid conflict, update libraries (jackson, commons-cli, commons-csv, freemarker, nexus-staging).\n\nversion 1.3 date 2023-07-11, Change default freemaker directory for html_templates because same directory and same files name than others tools junit-report-kpi-xxx generate errors\n\nversion 1.2 add jmeter-plugins.org installer\n\nversion 1.1 export result in html, json or csv format\n\nVersion 1.0 initial version\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvdaburon%2Fjunitreportkpicomparejmeterreportcsv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvdaburon%2Fjunitreportkpicomparejmeterreportcsv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvdaburon%2Fjunitreportkpicomparejmeterreportcsv/lists"}