I just spent some time on this and here's what I have to show:
I think the duplicate error was caused by how you were including the components directory in karma.conf.js. I saw two entries for components, so I reduced it to one and set included to false. In each suite I have a before block where I setup the link tag for my element and listen for its load event before jumping into the individual tests.
Also take a look at test/karma-loader.js where I load polymer.html and listen for the polymer-ready event before kicking off mocha.
So, you can try to use this approach to see how far you get with it. The nice part about the iframe work around is that you don't have to manually manage the link elements yourself and it reduces possible prototype pollution issues but if you prefer this style that's cool too :)
Keep in mind, Karma was invented in an era before Web Components even existed and making testing web components easy is not one of their design goals. At present, there isn't a really great tool for testing Web Components because they're so new. We hope that story changes in the future, but it will take time for us to get there.
Hope this helps!