Think of testing like double-entry bookkeeping. If there’s a bug in your implementation, the test will fail. If there’s a bug in your test, but the implementation is correct, then the test will also fail.
There is a very slim chance that a bug in your test and a corresponding bug in your implementation could cause a test to pass only by coincidence, but I wouldn’t worry about this too much.
There might be some value in testing things like Page Objects and Fakes if they are reasonably complex, since you can use a TDD approach, and because it may give a more useful failure message when something is wrong.