Selenium does not give you assertions. You bring your own library, and you decide what to check. That freedom means you can write a test that passes on a completely broken app without realising it.
Here are the three weak checks that show up most often in code review.
Weak check 1: you check something exists, not what it says.