Where to keep your UI automation tests?

I had to work in different projects and different teams with completely different approach to automation and places of storage of UI automation tests and the most common are:
  • Keep UI automation tests in the same repository with code of the application
  • Keep UI automation tests in different repositories saving the link between them (e.g. maven pom.xml)
  • Don’t store automation in the repository in general
I don’t want to talk about the last approach since it is NOT a correct way of working. Let’s describe pros and cons of the first two. 

Keep UI automation tests in the same repository

Pros
  • You don’t need to update the link between versions of code and tests
  • Higher standards to quality of the automation since failures are highly visible and very sensitive
  • Developers will become aware if test are breaking after applying application code changes.
  • Easier to involve developers in test development and maintenance 
  • Easier to add test execution to CI/CD pipelines
Cons
  • If you want to apply fixes to the code of tests you will need to update the code base of the application and sometimes even rebuild/redeploy it.
Keep UI automation tests in different repositories

Pros
  • If you want to apply fixes to the code of tests you will NOT need to rebuild/redeploy a whole application, just change the version of running tests
  • In case, if tests fail because of broken tests you can still deliver the application. You can fix tests in different branch and rerun them against still the same version of application or even rerun them manually. It is not breaking the code freeze
  • Testers can write automation independently from developers since their code will NOT break the build of the application
Cons
  • You need continuously update the link between versions of code and tests
  • Testers will become owners of their test repository (One more configuration task in their backlog)
  • It is harder to integrate tests in application's CI/CD process
  • Automation test code quality can degradate since code issues are less visible and can be even ignored (depends on situation and the reason of issues)
As you see both approaches have a number of valid pros and cons, so only you can decide which one to use.

P.S. In case, you know any other pros and cons of these approaches please leave a comment and I will update the post.

Comments

Popular posts from this blog

QA Chapter

Leader is not an individual contributor

Organizing UI automation testing