I've filed this on the Polymer Github Issues: https://github.com/Polymer/polymer/issues/513
On Thursday, 22 May 2014 14:13:55 UTC+1, [email protected] wrote: > > I've now discovered the issue with this. When Karma runs in it's context > mode, it appends the file hash to the link as a query param, which look > like this: > > <link > href="/base/main/components/a/a.html?a6a4ee4791f8cd22cca1d76284ef18e9cfe95cbe" > rel="import"><link > href="/base/main/components/b/b.html?a59384009c80baff4e8de4896cb8a6bf8e192890" > rel="import"> > > These extra query params seem to be breaking Polymer's dependency > resolution logic. We can simplify all of this by removing Karma, and just > on a static HTML page with any old additional query params in the link > elements, we can break dependency resolution. > > On Thursday, 22 May 2014 10:56:38 UTC+1, [email protected] wrote: >> >> 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/1a8df221-9b23-4a9d-b7cc-2f2451653bb5%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
