This has so much duplicated code from simulateViewerClick, there must be some way to share the code between them. This is just testing stuff, so don't worry about breaking interfaces :-)

Also, with that many arguments, might make sense to switch over to a single `config` or `options` arg.