Just like to share with Devs team (hope it is the right place).
Couple year ago I meet with my best friend from gaming industry he talking about Give-When-Then test style similar to https://gojko.net/2015/02/25/how-to-get-the-most-out-of-given-when-then/
And then I found couple articles for GUI testing similar to this: https://www.theregister.co.uk/Print/2007/11/12/unit_testing_2/
I try these approachs in my design it allow me write any test case from the User interactions with the GUI point of view (mouse, keyboard, and file system…) without need of any actual mouse, keyboard, GUI or full file system to automatic test. Just all mock tests would cover a lot core logic, and uses case. Only think left is not test is the actual behavior a button, a check box etc… (these are system object delivered by the system – in which they should work). The key to me is separate your your control and data model from the View by create interface the view. And the views is a dumb class (stateless except the check box state etc.)
Slowly plant move into this style, we may not need intensive volunteer tester for every builds I think. But will be a very long path to get all there.