The thing I don't like about loops like this in a test is that it typically makes debugging from a stacktrace quite difficult because the stacktrace does not tell you which part of the loop it was in when it failed. This is pretty important for this case as we really do need to know if if it failed on the first or 2nd or 3rd; that is the express purpose of the test.

Mostly this can be mitigated by moving the assertions out of the helper methods and directly into the loop itself where you can use a custom error message with the loop index in it.

I expect when we refactor this test with a camera app object we'd do away with the loop and just have the steps replicated. It's only a few extra lines and gives good clear stacktrace results.