Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/vdaburon/har-convertor-jmeter-plugin

Apache JMeter Plugin to convert a HAR file to a JMeter script and Record XML file
https://github.com/vdaburon/har-convertor-jmeter-plugin

convertor har jmeter jmeter-plugin jmeter-plugins

Last synced: 2 days ago
JSON representation

Apache JMeter Plugin to convert a HAR file to a JMeter script and Record XML file

Awesome Lists containing this project

README

        


har convertor jmeter plugin logo

Convert a HAR file to a JMeter script and a Record XML file.


Link to github project har-convertor-jmeter-plugin

# Convert a HAR file to a JMeter script and a Record XML file.

An article about motivations to create this tool: https://dzone.com/articles/convert-a-har-file-to-jmeter-script

## GUI interface in the JMeter Tools Menu
This tool is present in the Menu Tools > vdn@github - HAR Convertor Tool

![Menu Tools](doc/images/jmeter_menu_tools_with_har_convertor.png)

When you click and the menu line "vdn@github - HAR Convertor Tool", the tool GUI is display

![Menu Tools](doc/images/har_convertor_tool_gui.png)

### Parameters
Parameters are :
* har_in the HAR file to read (exported HAR from Web Browser : Chrome, Firefox, Edge ...)
* jmx_out the file JMeter script generated, if the text field is empty then the jmx_out is the file name of har_in without the extension with suffix ".jmx"

e.g. har_in = myhar1.har, jmx_out is empty then file_out will be myhar1.jmx
* record_out create the record xml file from the har file (could be open with the Listener View Results Tree)

e.g. record_out = record.xml
* add_result_tree_record, add a View Result Tree to view the Recording XML File Generated (default true), the record_out must be not empty
* external_file_infos, external csv file contains information about Timestamp, Transaction Name, date start or end.

e.g. external_file_infos = myappli_transactions.csv
* new_tc_pause time between 2 urls to create a new page (Transaction Controller) (default 5000 = jmeter property value : proxy.pause=5000)

* e.g. 5000 for 5 sec between 2 urls
* page_start_number, set the start page number for partial recording (default 1, must be an integer > 0)

* sampler_start_number, set the start sampler number for partial recording (default 1, must be an integer > 0)

* filter_include, the regular expression matches the URL to Include (first filter)

* default all = empty (no filter)
* e.g. filter_include=https://mysite.com/.*
* filter_exclude, the regular expression matches the URL to Exclude (second filter)

* default all = empty (no filter)
* e.g. filter_exclude=https://notmysite.com/.*
* or filter statics, filter_exclude=(?i).*\.(bmp|css|js|gif|ico|jpe?g|png|swf|eot|otf|ttf|mp4|woff|woff2|svg)
* add_pause checkbox, add Flow Control Action Pause, parameter new_tc_pause must be > 0 (default true)

* remove_cookie checkbox , remove header with cookie because add a Cookie Manager in the script (default true)

* remove_cache_request checkbox, remove cache request header because add a Cache Manager in the script (default true)

* har created with lrwr, the har file has been generated with LoadRunner Web Recorder Chrome extension and contains Transaction Name, expected values : true or false (default false = unchecked)

Status, the status line contains the tool status or the tool result.

e.g. : Status Results **OK**
* Tool HAR Convertor Finished OK, fileJmxOut=C:\Temp\script1.jmx
* Tool HAR Convertor Finished OK, fileJmxOut=C:\Temp\script1.jmx AND recordXmlOut=C:\Temp\record.xml

e.g. : Status Results **KO**
* Tool HAR Convertor Finished KO, CAN'T READ HAR fileHarIn = C:\Temp\harzzzz.har
* Tool HAR Convertor Finished KO, exception = java.util.regex.PatternSyntaxException: Unmatched closing ')' near index 2 (.))
* Tool HAR Convertor Finished KO, exception = net.sf.saxon.trans.XPathException: Failed to create output file file:/c:/toto.jmx

### Action buttons
* "CONVERT AND LOAD GENERATED SCRIPT", generates the JMeter script and record.xml file if set, next if no error LOAD the generated script in the current JMeter.
* "CONVERT", generates the JMeter script and record.xml file if set.

## Creating a har file and run the tool har-to-jmx-convertor to simulate recording from the JMeter recording template
This tool har-to-jmx-convertor try to **simulate** a script JMeter and a record xml file recording from the **JMeter Recording Template**.

### JMeter Recording Template and HTTP(S) Test Script Recorder - The standard way to record
The JMeter Recording Template :

![JMeter recording template start](doc/images/jmeter_record_template_begin.png)

The result of recording with JMeter "HTTP(S) Test Script Recorder" :

![JMeter script and record](doc/images/jmeter_record_template_tree_view.png)

### HAR created on a Browser (e.g. Firefox) - The new way with the convertor tool
Record the navigation in the web application with Developer tool : **Network** and **save** exchanges in **HAR** file format :

![Browser save HAR file](doc/images/browser_create_har.png)

Launch the "Convertor tool" :

![Step to create script and record from HAR file](doc/images/browsers_har_convertor_script_record.png)

Tool results : Open the script created and the record.xml in a View Results Tree

![Open the script created](doc/images/jmeter_script_record_created.png)

### HAR created in Chrome Browser with the LoadRunner Web Recorder Chrome Extension
This tool is compatible with Har file generated with the LoadRunner Web Recorder Chrome Extension.

The main advantage is to declare **Transaction Names when recording** and navigate to the web site. This transactions will be Page Names (Transaction Controllers names) in the JMeter script.

![Step to create script and record from HAR file from LoadRunner Web Recorder](doc/images/lrwr_chrome_extension_har_convertor_script_record.png)

The LoadRunner Web Recorder Chrome Extension is available at this url :

[Download the Recorder extension for Chrome : "HarGeneratorChrome"](https://www.microfocus.com/marketplace/appdelivery/content/recorder-extension-for-chrome)

You need to check to checkbox "HAR was generated with LoadRunner Web Recorder and Transaction Names" to indicate that is a HAR file generated with LoadRunner Web Recorder (lrwr), default false (unchecked).

### Standard HAR file created with Firefox, Chrome, Edge with external csv file for transaction information
You could add an external file that contains information about transaction name start and end.

![Step to create script and record from HAR file and external csv file](doc/images/browers_har_external_csv_convertor_script_record.png)

The format is :
- Timestamp iso format GMT;TRANSACTION;transaction name;start for starting a new transaction
- Timestamp iso format GMT;TRANSACTION;transaction name;stop for ending transaction the precedent transaction
- Separator ";"
- Charset UTF-8

E.g :


2024-05-06T12:39:58.711Z;TRANSACTION;login;start
2024-05-06T12:40:08.643Z;TRANSACTION;login;stop
2024-05-06T12:40:20.880Z;TRANSACTION;home;start
2024-05-06T12:40:37.634Z;TRANSACTION;home;stop

A simple tool named "create-external-file-for-har" create easily this csv file. https://github.com/vdaburon/create-external-file-for-har

You need to select the csv file in the text field : "(Optional) External csv file with transaction info (to read) "

### HAR created with BrowserMob Proxy
This tool is compatible with Har file generated with BrowserMob Proxy.

The BrowserMob Proxy create a har and could filter url or content (no binary).

The proxy client could be a browser or a client http in an application.

BrowserMob Proxy could be embedded in a java application or in Selenium java code application.

![Step to create script and record from HAR file from BrowserMob](doc/images/browsermob-proxy_har_convertor_script_record.png)

The BrowserMob Proxy is available at this url :

[Download the BrowserMob Proxy](https://github.com/lightbody/browsermob-proxy)

## More documentation from har-to-jmeter-convertor
For more documentation look at README from [har-to-jmeter-convertor](https://github.com/vdaburon/har-to-jmeter-convertor)

## Command line tool (CLI)
This tool could be use with script shell Windows or Linux.

Scripts shell are in <JMETER_HOME>\bin
* har-convertor-to-jmeter.cmd for Windows OS
* har-convertor-to-jmeter.sh for Linux/Mac OS

Help to see all parameters :


C:\apache-jmeter\bin>har-convertor-to-jmeter.cmd -help

usage: io.github.vdaburon.jmeter.har.HarForJMeter [-add_pause <add_pause>] [-add_result_tree_record
<add_result_tree_record>] [-external_file_infos <external_file_infos>] [-filter_exclude <filter_exclude>]
[-filter_include <filter_include>] -har_in <har_in> [-help] -jmx_out <jmx_out> [-new_tc_pause <new_tc_pause>]
[-page_start_number <page_start_number>] [-record_out <record_out>] [-remove_cache_request
<remove_cache_request>] [-remove_cookie <remove_cookie>] [-sampler_start_number <sampler_start_number>]
[-use_lrwr_infos <use_lrwr_infos>]
io.github.vdaburon.jmeter.har.HarForJMeter
-add_pause <add_pause> Optional boolean, add Flow Control Action Pause after Transaction
Controller (default true)
-add_result_tree_record <add_result_tree_record> Optional boolean, add 'View Result Tree' to view the record.xml file
created (default true), record_out must be not empty
-external_file_infos <external_file_infos> Optional, csv file contains external infos : timestamp transaction
name and start or end
-filter_exclude <filter_exclude> Optional, regular expression to exclude url
-filter_include <filter_include> Optional, regular expression to include url
-har_in <har_in> Har file to read (e.g : my_file.har)
-help Help and show parameters
-jmx_out <jmx_out> JMeter file created to write (e.g : script.jmx)
-new_tc_pause <new_tc_pause> Optional, create new Transaction Controller after request ms, same
as jmeter property : proxy.pause, need to be > 0 if set. Usefully
for Har created by Firefox or Single Page Application (Angular,
ReactJS, VuesJS ...)
-page_start_number <page_start_number> Optional, the start page number for partial recording (default 1)
-record_out <record_out> Optional, file xml contains exchanges likes recorded by JMeter
-remove_cache_request <remove_cache_request> Optional boolean, remove cache header in the http request (default
true because add a Cache Manager)
-remove_cookie <remove_cookie> Optional boolean, remove cookie in http header (default true because
add a Cookie Manager)
-sampler_start_number <sampler_start_number> Optional, the start sampler number for partial recording (default 1)
-use_lrwr_infos <use_lrwr_infos> Optional, the har file has been generated with LoadRunner Web
Recorder and contains Transaction Name, expected value :
'transaction_name' or don't add this parameter
E.g : java -jar har-for-jmeter-<version>-jar-with-dependencies.jar -har_in myhar.har -jmx_out scriptout.jmx -record_out
recording.xml -add_result_tree_record true -new_tc_pause 5000 -add_pause true -filter_include "https://mysite/.*"
-filter_exclude "https://notmysite/*" -page_start_number 50 -sampler_start_number 250


C:\apache-jmeter\bin>har-convertor-to-jmeter.cmd -har_in "myhar.har" -jmx_out "script_out.jmx" -filter_include "https://mysite.com/.*" -filter_exclude "https://notmysite.com/.*" -add_pause true -new_tc_pause 5000


/var/opt/apache-jmeter/bin>./har-convertor-to-jmeter.sh -har_in "myhar.har" -jmx_out "script_out.jmx" -record_out "record.xml" -add_pause true -new_tc_pause 5000

## Tool installed with jmeter-plugins-manager
This tool could be installed with the jmeter-plugins-manager from jmeter.plugins.org.

The tool name is : "vdn@github - har-convertor-jmeter-tool"

## Usage Maven
The maven groupId, artifactId and version, this plugin is in the **Maven Central Repository** [![Maven Central har-convertor-jmeter-plugin](https://maven-badges.herokuapp.com/maven-central/io.github.vdaburon/har-convertor-jmeter-plugin/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.vdaburon/har-convertor-jmeter-plugin)

```xml
io.github.vdaburon
har-convertor-jmeter-plugin
6.0
```

## License
Licensed under the Apache License, Version 2.0

## Versions
Version 6.0 date 2024-09-19, Use new library har-to-jmeter-convertor 6.0 for adding 'HTTP(S) Test Script Recorder' and 'View Results Tree' to view the Record.xml file created. Correct save file no url encoded name.

Version 5.3 date 2024-09-13, Use new library har-to-jmeter-convertor 5.3 that correct PUT with no parameter, no content and mime-type == null

Version 5.2 date 2024-06-20, Use new library har-to-jmeter-convertor 5.2 that correct extract parameters for mime type "form-urlencoded" ended with charset likes "application/x-www-form-urlencoded; charset=xxx"

Version 5.1 date 2024-05-17, Compatible with har generated by browsermob-proxy tool and csv file contains transaction infos. Use library har-to-jmeter-convertor 5.1.

Version 5.0 date 2024-05-10, Add an external csv file with transaction information for JMeter Transaction Controller Name. New parameter : -external_file_infos transaction_info.csv. Correct Filter Include first filter and Filter Exclude second filter.

Version 4.0 date 2024-05-06, Add compatibility with HAR generated with LoadRunner Web Recorder Chrome Extension. New checkbox "(Optional) HAR was generated with LoadRunner Web Recorder and Transaction Names"

Version 3.2 date 2024-03-30, Use library har-to-jmeter-convertor-2.2.jar, this version encode value for x-www-form-urlencoded when value contains space ' ' or equal '=' or slash '/' or plus '+' characters. Correct add the content for body data for POST, PUT or PATCH if not x-www-form-urlencoded in the Record.xml file.

Version 3.1 date 2024-03-29, Use library har-to-jmeter-convertor-2.2.jar, this version remove the header 'Content-length' because the length is computed by JMeter when the request is created. POST or PUT could have query string and body with content so add query string to the path. Set Content Encoding to UFT-8 for POST or PUT method and request Content-Type : application/json. Add body data content in record.xml for PUT and PATCH methods.

Version 3.0 date 2024-03-18, Add Load generated script if no error. File Chooser select only file and no directory.

Version 2.0 date 2024-03-12, for POST multipart/form-data don't put the content of the file in the Record.xml file because binary content could be large and not XML compatible. Add parameters : page_start_number and sampler_start_number to facilitate partial recording of website navigation.

Version 1.0 date 2024-03-11, First Release.