Where should I create a coded UI project?
Should Coded UI tests be within the solution that they are testing (similar to Unit Tests), or should they be contained in a separate, generic Coded UI solution that is built only once and executed whenever any solution needs to be tested? I should clarify that our Coded UI tests are not the regular recordings that can be created through Visual Studio, but rather hand-coded interaction classes developed by our QA engineers. Most of the common functions for interacting with elements on a page are packaged into a DLL that can be referenced in any test. I'm basically just trying to find out what the best practice is for creating a Coded UI testing infrastructure. Any help would be greatly appreciated. Thanks!
If you have to support multiple versions for your software product I would keep the tests with in the same repository. Then the tests will version with the application itself. Which will make you able to run the tests for older versions with ease. Also you will want your developers to run and maintain the tests. For example when they need to change the ID or the labels of a button. They should not need to checkout multiple repositories to verify their code changes did not break any old functionality. The only reason I can come up with to not have the tests included in the main codebase is if the included test-data is so huge that a clean checkout of the code would take ages, but I would then put the test-data in a different repo by itself.