I have a feature suggestion which might help elevate the experience of multiple people working on the same project at the same time.
I find the NameMapping object is the hardest item to merge in a project even with the built-in tool it is not always easy to merge 2 versions of it together.
Generally, with development and Git each person would have their own branch to work from with new features and then merge it together once done. But again this runs into the issue of merging the NameMapping object together.
One of the best ways I have found to work is to have just the NameMapping folder on the network drive and the local instance of the project pointing to the network drive NameMapping folder. This allows people to work in their own branches while mitigating the issue of merge conflicts with the NameMapping object. Also, there are far fewer popups about modified files as only the NameMapping object is shared among all the testers, however then the issue comes in ether you need to copy the NameMapping folder into your local instance before committing to the repo or having the NameMapping folder in its own repo. Both are not the best to work with.
As I have outlined above I have found having the NameMapping object on a network drive and then linking it to the local instances of TestComplete to be the best way to work as it allows people to work in their own branches while keeping a single NameMapping object up to date on the network drive. However, this has the issue of not including the NameMapping object as part of the local Git Commit/Push.
Why not allow the best of both worlds, add a new feature where you have a local NameMapping object that is on your local PC then in TestComplete, you have the option to set up a Master NameMapping object which can be placed for example on a network drive. If there is no NameMapping object in the Master location copy the NameMapping object from the local drive to the Master location. If there is already a Master NameMapping object in the location it will tell you it will overwrite the local NameMapping object with the master.
TestComplete must then monitor the master NameMapping object and if an update is made to it, the user must be notified about the change and prompted to pull the change into their local cached NameMapping object.
When changes are saved to the local cached NameMapping object push them to the Master NameMapping object on the Network drive.
To take this one step further integrate it into your existing NameMapping object merge tool, so for example, if I have added items to my local cached NameMapping object and I get notified that there have been changes to the Master NameMapping object let me choose to merge the changes together so I don’t lose what I have done. Then I can save the merge NameMapping object.
I feel like this system will work well as it will allow multiple people to work from different branches on their local PC’s while ensuring that the NameMapping object is kept up to date. Then when the changes are Committed and Pushed the local cached NameMapping object will be included. This will mean that when the tests are run from a Pipeline like Azure DevOps even if the agent does not have access to the network drive the tests can run from the local NameMapping object.