Rob,

If you closely with my karma.conf, it is not actually loading two lots of 
the components. The first line referencing the components directory 
(https://github.com/keithamus/polymer-karma-test/blob/master/karma.conf.js#L13) 
loads in all .html files (which Karma knows to use <link rel=import> for), 
the second line referencing the components directory 
(https://github.com/keithamus/polymer-karma-test/blob/master/karma.conf.js#L15) 
loads in all of the test.js files, and finally the last line 
(https://github.com/keithamus/polymer-karma-test/blob/master/karma.conf.js#L20) 
LOOKS like it may load in all the files again, but doesn't - because 
include is set to false.

It seems in your solution you've just moved all of the <link rel=imports> 
from being generated by Karma, to doing so manually in the tests. While 
this seems to work, its still IMO as bad as the iframe solution - its not 
**solving** anything, just working around it. I'm sure there is a solution 
which requires no intervention from tests themselves.

Karma does seem to work when loading these elements in, it does everything 
correctly (using <link rel=import>). The debug view actually works and you 
can see the tests passing in the console, so I don't necessarily think that 
Karma needs to be worked around - it smells more like a bug to me. While I 
understand Karma was invented before webcomponents, I can't actually see 
why web components shouldn't *just work* in Karma, if you could elaborate 
on this with specifics that'd be great.

On Wednesday, 21 May 2014 00:35:15 UTC+1, Rob Dodson wrote:
>
> I just spent some time on this and here's what I have to show:
> https://github.com/robdodson/polymer-karma-test
>
> 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!
>
> On Tuesday, May 20, 2014 7:59:37 AM UTC-7, keithamus wrote:
>>
>> Seems a shame to have to plug (read: hack) around Karma, when the default 
>> (read: easier to set up) usage gets 99% of the way there. Not to balk at 
>> your efforts at all - I just think it seems like tackling this problem 
>> seems preferable to having to inject iframes with custom scripts.
>>
>> On Tuesday, 20 May 2014 15:47:49 UTC+1, Rob Dodson wrote:
>>>
>>> I know the Polymer team uses a plugin they wrote for Karma to run tests 
>>> in iframes. You can check it out here:
>>> https://github.com/Polymer/core-tests/tree/master/tests
>>>
>>> We haven't written a ton of guidance around it (though I believe Addy is 
>>> working on an article) but the tools folder in that repo might be enough to 
>>> get you started. Maybe give it a shot, see how far you get, and we can keep 
>>> this thread going to work through any issues.
>>>
>>> On Tuesday, May 20, 2014 7:37:29 AM UTC-7, keithamus wrote:
>>>>
>>>> I've set up a reduced test case on 
>>>> Github<https://github.com/keithamus/polymer-karma-test>to demonstrate the 
>>>> problem I'm having.
>>>>
>>>> Essentially, Karma <http://karma-runner.github.io/> isn't working with 
>>>> Polymer - during running of the tests, Polymer complains about duplicate 
>>>> elements being registered, however, in Karma's debug mode, and in fact 
>>>> outside of the test environment, the polymer elements work fine.
>>>>
>>>> I realise that this sounds pretty much like a Karma bug, but this seems 
>>>> like a good place to get the ball rolling at least.
>>>>
>>>> The error from Polymer is as follows:
>>>>
>>>>   Error: DuplicateDefinitionError: a type with name 'a-element' is already 
>>>> registered
>>>>   at 
>>>> /Users/keith/Projects/polymer-karma-test/main/bower_components/platform/platform.js:15
>>>>
>>>>
>>>> Feel free to pull the repo and have a play
>>>>
>>>

Follow Polymer on Google+: plus.google.com/107187849809354688692
--- 
You received this message because you are subscribed to the Google Groups 
"Polymer" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/polymer-dev/20d0105b-3f9c-4516-a9c4-f1963602a7db%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to