zypper ref && zypper dup as root is the best practice. Ideally not within the GUI (I use either screen or tmux myself so if the GUI fails at some point during the update, it can finish).
If the update doesn’t work, provide information about your system so folks can help you troubleshoot.
Using the snapshot to recover is a good approach as well - I did that a couple of times before I started using screen or tmux.