{"action":"published","release":{"url":"https://api.github.com/repos/intuit/karate/releases/7184297","assets_url":"https://api.github.com/repos/intuit/karate/releases/7184297/assets","upload_url":"https://uploads.github.com/repos/intuit/karate/releases/7184297/assets{?name,label}","html_url":"https://github.com/intuit/karate/releases/tag/0.5.0","id":7184297,"tag_name":"0.5.0","target_commitish":"master","name":"","draft":false,"author":{"login":"ptrthomas","id":915480,"avatar_url":"https://avatars0.githubusercontent.com/u/915480?v=4","gravatar_id":"","url":"https://api.github.com/users/ptrthomas","html_url":"https://github.com/ptrthomas","followers_url":"https://api.github.com/users/ptrthomas/followers","following_url":"https://api.github.com/users/ptrthomas/following{/other_user}","gists_url":"https://api.github.com/users/ptrthomas/gists{/gist_id}","starred_url":"https://api.github.com/users/ptrthomas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ptrthomas/subscriptions","organizations_url":"https://api.github.com/users/ptrthomas/orgs","repos_url":"https://api.github.com/users/ptrthomas/repos","events_url":"https://api.github.com/users/ptrthomas/events{/privacy}","received_events_url":"https://api.github.com/users/ptrthomas/received_events","type":"User","site_admin":false},"prerelease":false,"created_at":"2017-07-27T02:53:14Z","published_at":"2017-07-27T03:00:40Z","assets":[],"tarball_url":"https://api.github.com/repos/intuit/karate/tarball/0.5.0","zipball_url":"https://api.github.com/repos/intuit/karate/zipball/0.5.0","body":"## Breaking Changes\r\nThere are a couple of breaking changes. Please read this section carefully so that your upgrade goes smoothly.\r\n\r\n### `responseCookies` instead of `cookies`\r\nHopefully most users would not be referring to cookies, but if you are - the 'built-in' variable name has been changed to be consistent with the others such as `responseHeaders`, `responseStatus` and the like, and to avoid confusion with the `cookie` and `cookies` keywords for setting up the request.\r\n\r\nA simple find-and-replace (where necessary) is all you need to do. Here is the [documentation](https://github.com/intuit/karate/tree/master#responsecookies).\r\n\r\n### `table` - strings need to be enclosed in quotes\r\nRefer to the [documentation](https://github.com/intuit/karate/tree/master#table) - this makes sense, because Karate is all about dynamic data. If you need the traditional Cucumber table experience, just use the `Scenario Outline` and [`Examples`](https://github.com/intuit/karate/tree/master#the-cucumber-way) like normal.\r\n\r\n## Notable Fixes\r\n### Headers (and cookies) set in the `Background` worked only for the first `Scenario`\r\nEspecially if you are mixing `call` or `callonce` with `header` or `configure headers`.\r\n\r\n### [#103](https://github.com/intuit/karate/issues/103) - Apache client was skipping cookies on `.com` domains\r\nFixed.\r\n\r\n### [#110](https://github.com/intuit/karate/issues/110) - File-upload now supports setting the `filename`\r\nA new [`multipart file`](https://github.com/intuit/karate/tree/master#multipart-file) syntax was introduced. The old behavior where a file-stream passed to `multipart field` would 'short-cut' into a file-upload will still be supported (to reduce pain for those upgrading) - but we will deprecate this at a later date.\r\n\r\n## Enhancements\r\n### Failures in called scripts now log the called script name\r\nYes, this should have been done sooner.\r\n\r\n### `call` and `callonce` can update 'global' shared variables and config\r\nThis is a little subtle, but can dramatically reduce the 'noise' in your top-level script that does the main 'business' flow. You can move all the setup 'clutter' into called scripts. Refer to the [documentation for more](https://github.com/intuit/karate/tree/master#shared-scope).\r\n\r\n### `configure cookies` introduced\r\nNot something you would use often since `responseCookies` are auto-added to all subsequent requests. Unless response cookies were encountered in a 'called' script in which case the item above may be part of the answer. Refer to the [documentation](https://github.com/intuit/karate/tree/master#configure).\r\n\r\n### `replace` keyword added\r\nThis is very useful if you have to perform a lot of text-replace. Refer to the [documentation](https://github.com/intuit/karate/tree/master#replace)\r\n\r\n### `remove` keyword added\r\nFor deleting JSON keys or entire XML nodes from a payload. Refer to the [documentation](https://github.com/intuit/karate/tree/master#remove).\r\n\r\n### HTTP Mock Servlet\r\nA big one ! Test any Java servlet based controller (e.g. Spring MVC, Jersey JAX-RS) without booting a container. Refer to the [documentation](https://github.com/intuit/karate/tree/master/karate-mock-servlet).\r\n\r\nThis also introduced an option to `configure` a custom HTTP Client implementation, details which are in the above link.\r\n\r\n### Type Conversion supports Java Beans (or POJO-s)\r\nYes you can convert any Java Bean into JSON or XML. Refer to the [documentation](https://github.com/intuit/karate/tree/master#the-karate-object)\r\n\r\nAnd if you need to go the other way, look at `karate.toBean()` in the next section.\r\n\r\n### `karate` built-in JS object\r\nHas a few more operations available on it:\r\n* `karate.remove(name, path)`\r\n* `karate.jsonPath(json, expression)`\r\n* `karate.read(filename)`\r\n* `karate.pretty(value)`\r\n* `karate.prettyXml(value)`\r\n* `karate.toBean(json, className)`\r\n\r\nRefer to the [documentation](https://github.com/intuit/karate/tree/master#the-karate-object)\r\n\r\n### XML manipulation improvements\r\nEspecially for projects dealing with SOAP and namespaces. This file should be a handy reference: [`xml.feature`](https://github.com/intuit/karate/blob/master/karate-junit4/src/test/java/com/intuit/karate/junit4/xml/xml.feature).\r\n\r\n### `contains` macro shortcut\r\nA missing piece in the JSON schema-like validation short-cuts. Refer to the last paragraph in this section of the documentation - [Schema Validation](https://github.com/intuit/karate/tree/master#ignore-or-validate).\r\n\r\n### Remove If Null\r\nA common need, which is to fully remove a JSON key or XML node (or attribute) from a given baseline payload - that now has an elegant solution. Refer to the [documentation](https://github.com/intuit/karate/tree/master#remove-if-null).\r\n\r\n### Karate UI and Postman Import\r\nThis is another big one ! Details [here](https://github.com/intuit/karate/wiki/Karate-UI).\r\n\r\n### Draft Spring REST Docs Support\r\nIf you are interested refer to [this thread](https://github.com/intuit/karate/issues/25#issuecomment-318038190).\r\n\r\nThanks to @rishabhbitsg for the [pull requests](https://github.com/intuit/karate/pulls?q=is%3Apr+author%3Arishabhbitsg) !"}}
{"actor":{"display_login":"ptrthomas"}}