I’m not quite sure what you mean by “automation tools” for testing.
I have personally had excellent success with Google’s gtest unit test framework for unit testing, which runs very well on the Mac and the PC - but that isn’t going to cover the GUI.
Are you wanting something that “automatically presses the buttons and sees what happens?” My suggestion to you - give it up. I’m pretty sure there are no such tools that target Juce GUI components so you’d have to make one - but my fairly extensive experience with such systems is that they’re a real pain to use - the tests keep breaking when you make minor cosmetic changes, and when a test does break it tells you next to nothing about what happened to your code.
There’s the additional issue that these tests end up taking a reasonable amount of real time, and usually completely take over your mouse and keyboard, so you can’t get any work done.
My solution is to have an extensive battery of unit tests that I run after each change, no matter how small (because they take about two minutes even if I have to recompile the world, and I can put them in the background and check email). Before I check into the repo, I build and start up the application to see I haven’t made some gross error but that’s it. I don’t branch or tag until I’ve done heavier testing, but I do that very rarely.
Some people find unit tests boring but would you rather spend an hour writing a test, or two hours debugging the code? (and in fact, the ratio of “useful unit tests::time saved debugging” is generally greater than 2:1 in my experience!)