There are a number of ways that we could make the `login` method know which page object to return, including just checking where we are after login completes. So that is a viable solution, but it doesn't address the issue of having conditional logic in the page object instead of the test. Ideally page objects shouldn't contain any conditional logic, and it should be the test that dictates what's supposed to happen. That's why, even though I agree it isn't wonderful, I suggested adding an expectation argument to the `login` method. That way it's the test that says what's expected, rather than the `login` method being responsible for determining what's expected.

Honestly it's a bit of a "six of one, half a dozen of the other", but I do think that the rule of thumb that page objects shouldn't include conditional logic is a good one. I'm going to ping @davehunt to see what he thinks, as he's usually my guru when in comes to things like this.