Reckon I have both sworn by, and sworn at, all three of ’em in my time.
Now, my own perspective might be a wee bit unusual because, in all cases, these were existing projects, that had all lately fallen on some hard times. They had been around for several years, were all in revenue production, and had been built by someone else who had since gone on to greener glades. (In one case, all the way to the Elysian Fields ...) In the case of Mojolicious, it seemed to have been a case of too-early adoption since that framework really wasn’t yet mature-and-stable at that time. But the frameworks were all doing their job acceptably well, and they still are today.
“Bugs,” per se, in all three cases, should not be a problem. At least not with respect to their code, heh. But it’s extremely important at this stage to look for a smooth fit to the entirety of what you want your web-site to do. Every framework, so to speak, “has attitude.” The designers have one notion of how something “should” be done, and they designed and built the software to do that, and in that way. (Incidentally, I do not mean that comment “personally.”) Like every architect does, they put scopes and boundaries on the project (all in different places), and to go outside of these they provide some sort of “plug-ins” and this is where you can run into trouble if you’re going to. Scope out your project completely and see what fits best. Don’t just think-so ... prove it.
Last comment is to, from the start, get to know Test::Most, and Selenium, extremely well.