`launch` does a good job of waiting on its own but waiting for the URL is not trustworthy anyway as it will be valid long before all of the elements in the app have loaded (imagine the js lazy loading).

Here is a perfect example of it donein the app object more cleanly:
https://github.com/mozilla-b2g/gaia/blob/master/tests/python/gaia-ui-tests/gaiatest/apps/camera/app.py#L33