This isnt related to Cypress - This is more of Behaviour Design, Given is what user will have, When is the Action a user will perform. Then is the outcome (Outcome has to be checked always based on the actions performed). But the assertion like visible etc.. can also be used in When/Given for avoiding test flakiness(Example: Link has to be visible before you click).