Thanks to @cemoktra, @zikani03, @lambrospetrou, @jmvargas, @quantonganh, @sandeshbhusal, @thePanz, @niklasweimann, @infogulch, @orlandow,
Breaking Changes:
- Check that variables do not conflict with existing functions #3229
Enhancements:
- Implement function newUuid #973
- Implement --limit-rate from curl #1222
- Add --curl option to export executed requests to curl commands #2679
- Configure --connect-timeout per request #3163
- Support short name for sections [QueryStringParams] => [Query], [FormParams] => [Form], [MultipartFormData] => [Multipart] #3238
- Remove url-specific parser (align with grammar) #3244
- Remove the crate float-cmp #3247
- Jsonpath / Add filter on boolean value #3252
- Jsonpath / Add non-equal filter on string and number value #3261
- Add support for backtick strings in predicates values #3317
- Categorise options in --help #3339
- Support more JSON / XML "like" mimetypes with debug output #3343
- Add curl debug command to --json and JSON report #3374
- Add curl debug command to HTML report #3386
- Render Date value #3431
Bugs Fixed:
- Fix reading standard input multiple times #3216
- Fix filename parsing (used by cert option) #3242
- Add additional check for --max-filesize option #3245
- Support case-insensitive Cookie Attributes #3265
- Allow any string in Location Header when not following redirection #3293
- Fix graceful shutdown of workers threads in --test #3297
- Fix missing space in variable option HTML export #3412
Bugs Fixed:
- Fix regression in --output when output file doesn't exist #3195
Thanks to @lambrospetrou, @OverkillGuy, @badboy, @DenuxPlays, @linkdd, @nkback, @claytonneal,
Breaking Changes:
- Encode oneline string only with one backtick #3113
Enhancements:
- Create intermediary directories if necessary when producing TAP report #2860
- Expose request comments in --out json (hurlfmt) #2850
- Create intermediary directories if necessary when producing JUnit report #2842
- Add global requests count in test summary #2832
- Replace output warnings by errors #2815
- Fix inconsistent case for fields queryString and httpVersion in --json #2804
- Run tests in parallel #2753
- Add support for importing curl url option in hurlfmt #2750
- Add JSON report #2738
- Add repeat option to repeat a sequence of Hurl file #2680
- Add repeat option per request #2680
- Add optional duration unit #2653
- Apply delay only once per entry, no matter how many retry #1973
- Add toFloat filter #1732
- Accept directory as Hurl arguments for processing file #1446
Bugs Fixed:
- Get SSL certificates info on reused connections, from a cache #3031
- Fix max-redirs: -1 in [Options] section #3023
- Fix error displayed in double with bad option #2920
- Fix hurlfmt exit code with lint error #2919
- Truncate file then append it when dumping response with --output. #2886
- Fix crash with --json option when capturing 'HttpOnly' and 'Secure' cookie attribute #2871
- Fix crash when capturing 'Expires' cookie attribute #2870
- Fix empty JSON key parsing #2836
- Do not filter 'Authorization' header if host doesn't change while following redirect #2823
- Fix sending 'Authorization' header from --user when following redirect #2812
- Fix URL when following redirect for certain 'Location' header #2783
- Fix powershell completion file #2729
Thanks to @tarampampam, @CMiksche, @CodeMan99, @OverkillGuy, @hsanson, @jaminalder, @teto, @humphd, @mohammed90,
Enhancements:
- Support --user option per request #2585
- Add isNumber predicate #2538
- Create intermediate directory when using --report-html #2531
- Use '-' to read Hurl file from standard input #2523
- Add --from-entry option to execute a file from a given entry #2500
- Add isIsoDate predicate (take a string, checks YYYY-MM-DDTHH:mm:sssZ) #2427
- Add completion files in Linux/MacOS packages #2401
- Fix tarball layout to Linux filesystem #2401
- Add --max-filesize option to limit HTTP response #2353
- Display source request when there are asserts/runtime errors #2351
- Using explicit stdout output #2312
- Prevent raw binary response to be displayed on standard output #2306
- Add --netrc, --netrc-file and --netrc-optional options #2094
- Generate bash completion for hurl/hurlfmt #1864
- Generate powershell completion for hurl/hurlfmt #1864
- Generate fish completion for hurl/hurlfmt #1864
- Generate zsh completion for hurl/hurlfmt #1864
- Add experimental --parallel / --jobs options #88 #87
Bugs Fixed:
- Export begin_call, end_call timings fields to RFC3339 (microseconds) #2699
- Fix standalone css for regex #2693
- Fix charset parsing logic of Content-Type header #2540
- Fix filename templatization bug under certain conditions #2533
- Fix empty glob not always returning an error #2517
- Fix hurlfmt query certificate for hurl output format #2511
- Fix --test progress bar not displayed when verbose is used #2506
- Per request output takes file-root into account for path resolving #2445
- Fix silent error when verbose option use unset variable #2444
- Fix Content-type header override when used in lowercase #2416
Security Issues Fixed:
- Prevent script injection in HTML report #2719
Thanks to @hi2code, @lambrospetrou, @glb-cblin, @moono, @gmetal, @mihirn, @humphd, @RickMoynihan, @pit1sIBM, @janwytze, @kingluo, @teto, @khimaros, @iredmail, @andres-lowrie, @nikeee, @ztittle, @legzo
Enhancements:
- Add --location-trusted option #2296
- Add --unix-socket option #2291
- Export entry source line number in JSON output #2273
- Use Template for filename type #2259 #1731 #464
- Add dark mode support for HTML report #2254
- Add --output option per request #2184 #1326
- Add filter jsonpath #2134 #1632 #440
- Improve JSON body parsing error reporting #2056
- Support template in option values #2041
- Support conda-forge installation #2018
- Add timestamps to the HTML reports #1983
- Log only non-default options in verbose mode #1927
- Support template in key string #1877 #1710 #898
- Add skip option #1815
- Add --ipv4/--ipv6 option #1727
- Add --http3 option #1155
- Add --http2 option #1155
- Add --http1.0/-0 option #1155
- Add --http1.1 option #1155
Bugs Fixed:
- Add short name -v for verbose option #2310
- Fix unicode surrogate pair decoding in JSON request body #2235
- Better error description for some parse error #2187
- Fix undefined error for various I/O error using --output. #2156
- TAP reports can't be appended if there are failed tests #2099
- Support HTTP/2 on Windows #2072
- Support key password in --cert option (certificate[:password]) #2047
- Keep initial request headers when following redirects #1990
Thanks to @danielzfranklin, @apparentorder, @ppaulweber, @taigrr, @kallelindqvist, @jlazic, @Lythenas, @Jayshua, @chenrui333, @nikeee, @jasonkarns, @humphd,
Breaking Changes:
- Fix published release packages names #1951
Enhancements:
- Print host architecture with --version #1893
- Add the aws-sigv4 option to generate AWS SigV4 signed requests #1840
- Add delay CLI option #1832
- Add --delay Option #1832
- Support RFC-7807 application/problem+json for response body logging as text #1766
- Rename fail-at-end option with continue-on-error option #1739
- Add connect-to per request option #1736
- Add support for --resolve option per request #1711
- Add TAP report #1666 #601
- Implement isDate predicate #1520
- Add docker arm64 build #536
Bugs Fixed:
- IsEmpty doesn't seem to work on object collections #1788
- Fix Cookie Query Parsing error #1784
- Support empty BasicAuth section #1772
- Fix standalone option for hurlfmt HTML output #1759
- Support IPv4/IPv6 address in proxy [Options] #1756
- Reuse same HTTP method on redirect for appropriate HTTP status codes #1719
- Fix URL runtime evaluation #1716
Thanks to @elbart, @dross-carve, @kaala, @phaza, @FiloSottile, @linker3000, @pfeiferj, @devnoname120, @jasonkarns,
Breaking Changes:
- The option --retry now takes a number that specifies the explicit number of retries (same behaviour than curl)
- The
jsonpath
query/filter does not coerce single-entry collection any more #1469 hurl
crate:LoggerOptionsBuilder
replacesLoggerOption
, retry option fromRunnerOptionsBuilder
have changed, and verbose option have been moved fromRunnerOptionsBuilder
toLoggerOptionsBuilder
Enhancements:
- Add xpath filter #1698
- Introduce curl --path-as-is option #1669
- Deprecate word predicate when operator is available #1662
- Make hurlfmt support several input files (like Hurl) #1650
- Add timings info to very verbose mode #1644
- Add waterfall to HTML report for a Hurl file #1613
- Add proxy in Options section #1602
- Add decode filter #1560
- Add --error-format option to output HTTP context on errors #1542
- Update --retry option to match curl option #1475
- Add support for LINK, UNLINK, PURGE, LOCK, UNLOCK, PROPFIND and VIEW HTTP method #967
- Support arbitrary HTTP methods #967
Bugs Fixed:
- Export [Options] to JSON #1673
- Use --data-binary for log curl command when posting file #1654
- Fix extra request headers logs with large body. #1651
- Print error message when no file is found with --glob option #1638
- Support additional dot in jsonpath expression #1555
- Make Call, Certificate, Cookie, Header, Request, Response, Timings, Version public #1548
- Add quotes around certificate attribute in HTML export #1515
- Change API in jsonpath / remove single-entry coercion #1469
Bugs Fixed:
- Do not parse key/value in certificate subject/issue any more #1583
- Fix hurlfmt less predicate #1577
- Patch encoding issue with xpath and libxml 2.11.1+ #1535
Thanks to @DannyBen, @dermetfan, @joesantos418
3.0.0 is a major update because of breaking changes in Hurl crates.
Enhancements:
- Add test attributes to JUnit XML #1460
- Add certificate query #1384
- Add daysAfterNow / daysBeforeNow filters #1309
- Add errors in HTML report #1286
- Use long options for curl command #1236
- Add progress bar for tests #1224
- Add date value/filters #1206
- Implement isEmpty predicate #849
- Add curl input to hurlfmt #316
Bugs Fixed:
- Fix performance issue in Reader remaining method #1456
- Parse empty JSON array body #1424
- Add meta utf-8 charset to HTML report #1366
- Use an uuid as identifier for the HTML Hurl file run report #1285 #1283
- Improve HTML export #1059
Thanks to @softprops,
Bugs Fixed:
- Fix GraphQL query with variables to HTTP body request #1218
Thanks to @imsVLC, @ad8lmondy, @jlecour, @ako, @jmoore34, @robjtede, @devnoname120, @dalejefferson-rnf, @dnsmichi,
Enhancements:
- Add option ssl-no-revoke #1163
- Add client cert/key to command line args and options #1129
- Add connect-to option #1079
- Add name attribute to JUnit report #1078
- Check HTTP version and status first, then other asserts #1072
- Support new one line string #1041
- Add filters for htmlEscape and htmlUnescape #1038
- Add toInt filter #1029
- Use HTTP instead of HTTP/* for any HTTP version match #975
- Add RunnerOptionsBuilder to create instance of RunnerOptions #972
- Add support for LINK, UNLINK, PURGE, LOCK, UNLOCK, PROPFIND and VIEW HTTP method #967
- Accept multiple --variables-file options #532
- Add GraphQL support #504
- Add --resolve option #379
Bugs Fixed:
- Support '-' in JSONPath dot notation #1174
- Fix cargo test --doc on Alpine #1124
- Do not add newline at eof with --no-format option #1058
- Fix variables update #1037
- Fix querystring key parsing #1027
Thanks to @chenrui333, @Jiehong, @Goffen,
Enhancements:
- Add curl logs #899
- Add query url #895
- Make compact help #861
- List all libcurl features with --version #836
- Add --retry and --retry-interval option to retry request until asserts and captures are ok #525
Bugs Fixed:
- Fix hurlfmt --color crash #957
- Fix missing line in HTML output #924
- Fix HTTP HEAD #903
- Fix relative redirect #875
Thanks to @danielbprice, @fourjay, @datamuc, @bdmorin, @humphd, @kautsig, @Karrq, @balroggg,
Enhancements:
- Add string comparison predicates #798
- Improve text summary #779 #593
- Support NO_COLOR env variable (https://no-color.org) #713
- Improve URL parsing error message #662
- Display deprecated warning when using --progress and --summary option #637
- Log body request in very verbose #628
- Add options section #612
- Install Hurl with npm #544
- Add very verbose option #499
- Add support for XML namespaces in XPath query #493
- Use Template type for cookie value #473
Bugs Fixed:
- Accept expression in comparison predicate #799
- Fix file access authorization #674
- Fix body file access #674
- Fix implicit body asserts on compressed response body #567
- Fix Brotli response body decoding #564
- Fix sha256, md5, bytes query on compressed body #563
- Fix redirection not followed #552
- Encode string variables in JSON body #530
- Fix curl export shell escape #530
- Allow different types in JSON array #495
Thanks to @humphd
Bugs Fixes:
- Support @ for the username in [BasicAuth] section #513
- Fix panicking while processing expected Regex value #514
Thanks to @linjan, @adworacz, @humphd, @jpluscplusm,
Changes:
- Add -A/--user-agent curl option to specify a User Agent for all requests of a file #452
- Support filter with nested object in jsonpath expression #423
- Add BasicAuth section #360
- Add next request in interactive mode #268
- Improving pattern for regex capture and matches predicates #4
Bugs Fixes:
- Add additional characters in cookie value #466
- Add square brackets in key-string #457
- Fix Build in Alpine #448
- Check that data file is a child of user provided context dir #405
- Report error on missing closing quote for quoted String #403
Thanks to @humphd, @tbolon, @ansscfc, @atcol, @realtica, @ramkumarkb
Changes:
- Support globs with --test arg #387
- Add ARM Testing with Circle CI #335
- Option --html renamed to --report-html #333
- Add JUnit XML Report Output #326
- Add option --cacert #314
- Display libcurl error code/message #310
- Display curl -V version in hurl -V #309
- Use --json parameter to write JSON to stdout #283
- Using Environment Variables in Hurl files #122
Bugs Fixes:
Thanks to @youhavethewrong, @fourjay, @tbolon, @Morreski, @andrejohansson
Changes:
- Install via Scoop #289
- Support spaces in filenames #287
- Remove deprecated option --append #262
- Improve HTML output for hurlfmt #260
- Add option --ignore-asserts #254
Bugs Fixes:
- Support tilde in URL #294
- Fix Windows Terminal output for non-UTF-8 byte sequences #292
- Fix asserts entries in JSON report #286
- Fix --test mode in Windows (/dev/null) #273
- Support key with underscore in jsonpath dot notation #269
- Fix Windows installer PATH #267
Bugs Fixes:
Changes:
- Simplify JSON/HTML report generation #241
- Add --progress option to print progressive status and executed count #236
- Add endsWith predicate #234
- Add --summary option to print tests metrics #232
- Add md5 query #231
- Add Hex body #230
- Add dependency check in the CI #226
- Use startswith/contains predicate with bytearray #224
- Add subquery count #217
- Add notEquals (!=) predicate #216
- Accept predicate value raw-string and base64 #215
- improve error messages when syntax is not recognized #213
- Add operators for arithmetic predicates #210
- Improve error messages if the URL contains an illegal character #207
- Improve Error message for the countEquals predicate #195
- Improve Error Message "Could not Resolve Host" #194
- Add HTTP Headers in the session json file. #191
- Improve Hurl Report #190
- Output curl command-line in verbose mode #179
- Normalize win64 packages names #178
- Add checksum body query (md5, sha1, sha256) #102
Bugs Fixes:
- Fix incorrect JSON export for lessThan predicate #212
- Fix segmentation fault with Invalid XPath Assert #192
Hurl 1.2.0 is now available for Windows.
Changes:
- Create release for Windows #174
- Run Test Integ in Windows #160
- Support terminal colors in Windows #159
- Update to Rust 1.50.0 #156
- Support Hurl File with UTF8 BOM #151
- Type input variables #120
Bugs Fixes:
Changes:
- Add windows build documentation #150
- Add verbose output when a ssl error occurs #145
- Migrate integration scripts to python #126
- Add option --interactive #121
- Improve Template Support in JSON body #116
- Update to Rust 1.49.0 #112
- Add option --variables-file / --variables #42
Bugs Fixes:
- Insecure mode for a full session #143
- Display error message when hurl input can not be decoded #139
- Cookie value in cookie section doesn't accept some value #132
- Running cargo test in windows #128
- Input Cookie file #124
Changes:
- Update to Rust 1.48.0 #107
- Add type predicates #98
- Arithmetic predicates for number (Integer or Float) #95
- Add predicates to test value types #94
- Add duration query #90
- Add comparison predicates #89
Bugs Fixes:
- Serialization of cookie query for Expires attributes with hurlfmt #100
- Valid Jsonpath query is not parsed #93
Changes:
- Update hurlfmt usage #81
- Migrate fully to GitHub Actions #69
- Add Hurl File JSON export #65
- Support wildcard value in implicit status code response #55
Bugs Fixes:
- Can not parse user in URL (Basic Authentication) #73
- MultipartFormData is not present in json export #63
- Hurl usage doesn't end with newline #60
Hurl 0.99.13 now uses libcurl under the hood instead of reqwest rust crate. This makes hurl even closer to curl in terms of behavior and semantic.
Changes:
- Improve Cookie Asserts #5
- Request Cookies Section should not change cookie store #25
- Uncompress response body for queries #35
- Add option --compressed #36
- Predicates with not qualifier #39
- Support Multiple Content-Encoding (at the same time) #40
- Add option -u, --user #41
- Do not add header Expect automatically #44
- Add timeout option (--connect-timeout and --max-time) #30
- Add option --compressed #34
- Decompress response body #38
Bugs Fixes:
Initial Release (beta)