GIT Integration - Prevent merge conflicts - Property values to be ignored
Problem:
GIT integration causes a lot of unnecessary file changes. This can result in a lot of merge conflicts that shouldn't be there and substantially blocks the feature of working on SOAPui testing as a team. This is a main hurdle in approving ReadyAPI as the standard API testing tool in our organisation.
Example of file changes:
We use dynamic property setting, meaning we do not have a fixed set of test data, but we generate these on the fly of a run in order to be as reselient to changes as possible. We mostly use property setting at project level so these properties can be re-used over the entire test flow. Examples: We use data generated from test case 1 (API call X) to be used as input property parameter in test case 2 (API call Y) and as expected result in test case 3 (API call Z). If data from call X changes the test cases 2 and 3 will not break but correctly use/assert the new data. This way we can also run these tests over various environments (where the test data may be different) and we can survive data refreshes. It also enables us to run the testcases in build agent as CI, as there the whole project will be buildup from scratch (without any properties values from a previous run).
For us this is key in writing stable, future-proof test cases.
So NONE of the properties values should be regarded as changes to our code base. Examples are:
- <con:config service=...> <con:restRequest name= ...> <con:settings> <con:setting ... entry key="Authorization" value="Bearer jwt token" --> this authorization token always changes with a new run, but it's not needed to save this into git.
- <con: properties> <con: property> <con:name>notificatieIdtoDelete</con:name> - <con:value>adffda32-bb5f-466a-b2c8-2cbe0fed36b6</con:value> --> This GUID will always be a different one on each run. No need to save this into git.
- <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con: parameters><con:entry key="xyz" value="${#TestCase#xyz}"/><con:entry key="x" value="79ef0fc6-1d26-4851-b972-5097c2f20528"/> --> This GUID will always be a different one on each run. No need to save this into git.
- in the settings.xml file it seems all changes on <con: property> <con:value> are the project properties values?. If so all these can be ignored. Of course, other relevant changes in the settings.xml still need to be commitable.
- data-gen step values (e.g. counter increases on each run). Ofcourse the counter should still be increased, even when ignoring this into the GIT commit.
Need for solution:
Is there perhaps a way to get these specific values within the xml files into a git ignore? (I am relatively new to GIT)
Other create,update or delete changes in the actual test suits/cases/steps (renamings, groovy scripts, setup/tear down scripts, environment changes, assertions, ...) obiously still need to be submitted and checked in so potential merge conflicts can still be solved.
Proposed feature request (if no easy solution can be provided):
Option to exclude the saving of the values of properties in composite projects into repository.
What I have done so far:
We use a manual git tool (GIT extensions, Sourcetree)
We work with composite projects and have enabled pretty print and normalized line-breaks settings.
We have read the documentation on git integration and searched for answers in following similar posts:
- https://community.smartbear.com/t5/SoapUI-Pro/How-do-I-minimize-merge-conflicts-in-a-ReadyApi-composite/td-p/141151
- https://community.smartbear.com/t5/SoapUI-Pro/Ready-API-and-GIT-SCM-struggles/m-p/145582#M33077
Thank you very much in advance!
UPDATE 04/03/2020:
For anyone stumbling on this post: A solution has been provided by nmrao : see https://community.smartbear.com/t5/SoapUI-Pro/Solution-Script-to-Cleanup-of-Custom-property-values-in-the/m-p/198108#M45275
Ah, it seems there is already a feature request submitted for this:
went over to cast my vote!
Hopefully others will do the same :)
I tried to come up with some tips to mitigate conflicts, please see here: