I don't see how readability and reliability conflict each other in anyway.
Research Clean Code and refactoring. Test-code is code and should follow the clean-code guidelines if you ask me if you want it readable.
There are more ways to make your code more readable. Every method (including your wait's and such) longer than 5 lines should be refactored into even smaller functions with good descriptive names. This to improve readability.
I would hide waits with some methods like this simple example:
class loginPage {
public login(userObject) {
waitAndtypeUsername(user.username);
waitAndtypePassword(user.password);
waitAndSumbit();
}
private waitForMethods...(argument) {
// contains selector, wait code, focus code, type or click code.
// probably around 5-10 lines max, or else make more methods.
}
}
Maybe you can remove the wait from the methods names if you always wait, only add extra information if it helps readability. I would keep the public pageObjects methods on the top and the private methods under those.
“Clean code always looks like it was written by someone who cares.”
I don't see how more code makes it less readable if you practise clean-code. Reliability is some code you hide in your pageObjects. Your tests read clean by using pageObjects the right way. Your main pageObject methods should also read clean. They should be short and read like well written prose.
“The ratio of time spent reading (code) versus writing is well over 10
to 1 ... (therefore) making it easy to read makes it easier to write.”\
I would really urge every developer (also test-automation-developers!) to either read the Clean Code book or watch the video training course if you have problems with unreadable, unmaintainable, rigid or fragile code.