My ultimate would be this: cordova create TestFilePlugin cd TestFilePlugin cordova platform add android cordova plugin add http://git-wip-us.apache.org/repos/asf/cordova-labs.git#cdvtest:cordova-plugin-test-framework cordova plugin add ../cordova-plugin-file/ cordova plugin add ../cordova-plugin-file/test/ cordova run android --start cdvtests/index.html
Then do this for each plugin, and for each platform Then do this for all combinations of plugins ... Note the run --start does not yet exist, but this would be awesome! @purplecabbage risingj.com On Thu, Jun 19, 2014 at 4:15 PM, Jesse <purplecabb...@gmail.com> wrote: > Option a) was what I suggested a ways back, and I still stand by it. > I think it provides the greatest transparency, and simplicity, yet it is > still very flexible. > I don't think it would be hard to accomplish either. This is the small > re-org I was hinting at, you've already done the hard part. > > > @purplecabbage > risingj.com > > > On Thu, Jun 19, 2014 at 3:45 PM, Michal Mocny <mmo...@chromium.org> wrote: > >> Andrew has raised that concern as well. My gut says that the bundling of >> a >> few shorts scripts that get parsed but not run as long as they don't get >> require() will not affect applications negatively (there are probably many >> more significant overheads we live with today in cordova) -- but I >> understand why that may not be useful default. >> >> In that case, some ideas: (I recall these were proposed previously but not >> sure by whom) >> (a) Bundle tests as a plugin-within-the-plugin as such: >> myplugin/ >> - plugin.xml >> - src/... >> - www/... >> - tests/ >> - plugin.xml >> - www/... >> >> Which basically means the plugin tests live in the same repo/branch, and >> are fetched as part of "plugin add", but are not moved into platforms/ on >> cordova prepare by default, thus don't end up in your application (disk >> and >> network are cheap, application startup and size costs are not, right?). >> Then, to run tests, we basically need to iterate all plugins looking for a >> nested tests/plugin.xml, and install those. This can be added to >> CLI/Plugman, or just be a CLI hook even. >> >> (b) add a <js-test-module> or <js-module type="test"> that is only used if >> you run prepare with --test. Similar to the above, but I think requires >> more CLI/config file changes, which I'm not a fan of. >> (c) Just ship tests as a second plugin in a second repo, and document how >> to install tests. Can then perhaps have a <dependency type=tests>. I >> don't like this as much since its basically back to mobile-spec. >> >> WDYT? >> >> -Michal >> >> >> On Thu, Jun 19, 2014 at 4:53 PM, Jesse <purplecabb...@gmail.com> wrote: >> >> > re: >> > >> > Q: What do I do if my plugin tests must have very large assets? >> > - A: Don't bundle those assets with your plugin. If you can, have >> your >> > ... >> > >> > >> > My concern is I do not want to see tests added to every project that >> uses a >> > plugin, even if the assets are not large, there are implications to >> > including the test framework + all the tests because they get loaded and >> > processed with all of the plugins and will impact load time even if >> never >> > run. >> > >> > 99.9% of the time the plugin tests will be used by us the plugin >> > developers, and not the people who use the plugin in there apps. >> > >> > I agree, having the tester install the test harness plugin dependency >> > themselves is probably a better option, as I see you have wrapped all >> tests >> > inside a exports.defineAutoTests so we don't have to worry about >> > describe/it/expects not being defined. >> > >> > >> > @purplecabbage >> > risingj.com >> > >> > >> > On Thu, Jun 19, 2014 at 1:27 PM, Michal Mocny <mmo...@chromium.org> >> wrote: >> > >> > > Jesee, the branch is NOT a requirement (I don't think I documented it >> as >> > > such, except in the examples for installing plugins for initial look). >> > > Actually, we should delete those stale branches now that we are >> moving >> > > up-to-date tests into master. It was just for early experimentation >> on >> > the >> > > feature. >> > > >> > > Jesse, I'm not seeing the benefit of using plugins-tests.xml or the >> > > dependency on the test plugin yet, may you elaborate your thoughts? >> > > >> > > My hope was that tests are just always installed alongside plugins. >> If >> > > that is not a good idea for some particular plugin, say because it >> uses >> > > huge assets, I elaborated my answer in the plugin FAQ ( >> > > >> > > >> > >> https://github.com/apache/cordova-labs/blob/cdvtest/cordova-plugin-test-framework/README.md#faq >> > > ): >> > > FAQ >> > > >> > > - >> > > >> > > Q: Should I add org.apache.cordova.test-harness as a <dependancy> >> of >> > my >> > > plugin? >> > > - A: No. The end-user should decide if they want to install the >> test >> > > harness, not your plugin (most users won't). >> > > - >> > > >> > > Q: What do I do if my plugin tests must have very large assets? >> > > - A: Don't bundle those assets with your plugin. If you can, have >> your >> > > tests fail gracefully if those assets don't don't exist (perhaps >> > log >> > > a >> > > warning, perhaps fail a single asset-checking test, and skip the >> > > rest). >> > > Then, ideally download those assets automatically into local >> > storage >> > > the >> > > first time tests run. Or create a manual test step to download >> > > and install >> > > assets. As a final alternative, split those test assets into a >> > > separate >> > > plugin, and instruct users to install that plugin to run your >> full >> > > test >> > > suite. >> > > - >> > > >> > > Q: Should I ship my app with the test harness plugin installed? >> > > - A: Not likely. If you want, you can. Then your app could even >> embed >> > a >> > > link to the test page (cdvtests/index.html) from a help section >> of >> > > your app, to give end users a way to run your test suite out in >> > > the feild. >> > > That may help diagnose causes of issues within your app. Maybe. >> > > >> > > >> > > ============= >> > > >> > > >> > > Feel free the debate those answers -- now is certainly the time -- >> but I >> > > put a lot of effort to make it super flexible and to not require >> > depending >> > > on changes to CLI :P >> > > >> > > -Michal >> > > >> > > >> > > On Thu, Jun 19, 2014 at 3:11 PM, Jesse <purplecabb...@gmail.com> >> wrote: >> > > >> > > > Sorry I missed providing feedback on this earlier ... >> > > > Having a deeper look at this, I am not feeling great about the extra >> > > > requirement that every plugin have an additional branch. >> > > > >> > > > Several concerns arise : >> > > > - test branch can be out of sync with master >> > > > - how do we test a specific version? >> > > > - tests are not immediately visible when looking at master >> > > > - differing versions of plugin.xml depending on the branch >> > > > >> > > > The majority of the work has been done (thanks Michal!), and mostly >> any >> > > > suggestions I make will just require moving code and changing a few >> > > > conventions. >> > > > >> > > > What if we? : >> > > > 1. add a plugin-test.xml file which has the exact format of >> plugin.xml >> > > > 2. keep tests/ and plugin-test.xml file in master branch >> > > > 3. have plugman/cli support an additional flag --test so we can >> install >> > > > like this: >> > > > cordova plugin add >> > > > http://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git >> > --test >> > > > This would mean that in addition to processing the plugin.xml of the >> > > > plugin, we would also process the plugin-test.xml file ( identical >> > > > processing logic ) >> > > > 4. have all plugin-test.xml files declare a dependency on >> > > > cordova-plugin-test-framework >> > > > >> > > > The above suggestions could also be used in conjuction with the >> cordova >> > > run >> > > > --tests platform mentioned by Michal, but without the need to manage >> > the >> > > > switching of branches. >> > > > >> > > > >> > > > @purplecabbage >> > > > risingj.com >> > > > >> > > > >> > > > On Tue, Jun 17, 2014 at 2:16 PM, Michal Mocny <mmo...@chromium.org> >> > > wrote: >> > > > >> > > > > Piotr: Actually I'm not sure how running tests in the harness >> would >> > > work, >> > > > > since the path to the resource may be different. However, in >> > general, >> > > > with >> > > > > development using the harness you aren't making any changes to >> > plugins. >> > > > > The whole point is for app developers who want to modify only web >> > > > > application bits and not deal with native compiles. >> > > > > >> > > > > In theory the app harness could support working on the js-modules >> of >> > > > > plugins, but that sounds like a really niche idea. I'd not be >> > opposed >> > > to >> > > > > someone working on it but I'm not sure you'll have luck finding >> > > > volunteers. >> > > > > >> > > > > -Michal >> > > > > >> > > > > >> > > > > On Tue, Jun 17, 2014 at 5:13 PM, Michal Mocny < >> mmo...@chromium.org> >> > > > wrote: >> > > > > >> > > > > > At the time I went through my design iterations I just didn't >> want >> > to >> > > > > > necessarily depend on cordova tooling changes / documentation. >> In >> > > > other >> > > > > > words, someone else may have a different strategy for testing.. >> > > > > > >> > > > > > My personal opinion would be have the test plugin ship with a >> > plugin >> > > > hook >> > > > > > (those are in, right? or at least on their way), that will >> > > > automatically >> > > > > > update the start page if you pass a flag to run command. Ie, >> in an >> > > > ideal >> > > > > > world: `cordova run --tests` runs a plugin hook passing in >> --tests >> > > > flag >> > > > > > which changes the start page, in a way that isn't overwritten by >> > the >> > > > > > top-level config.xml. >> > > > > > >> > > > > > My 2 cents, since I don't want "our way" of testing mobile spec >> to >> > be >> > > > > "the >> > > > > > only way" to test. Frameworks and opinions on testing change. >> > > > > > >> > > > > > -Michal >> > > > > > >> > > > > > >> > > > > > On Tue, Jun 17, 2014 at 4:33 PM, Piotr Zalewa < >> pzal...@mozilla.com >> > > >> > > > > wrote: >> > > > > > >> > > > > >> One thing more - it would be great if user could create a test >> > using >> > > > > test >> > > > > >> harness app as well. Is it also considered? >> > > > > >> >> > > > > >> Dnia Tue Jun 17 13:27:22 2014 Martin Gonzalez pisze: >> > > > > >> >> > > > > >> It would be a nice to have in the cli, aimed to just setup the >> > > right >> > > > > path >> > > > > >>> in the config.xml, maybe along with an another argument to >> build, >> > > > > >>> run/emulate as well. >> > > > > >>> It sounds great. >> > > > > >>> >> > > > > >>> >> > > > > >>> 2014-06-17 15:21 GMT-05:00 Piotr Zalewa <pzal...@mozilla.com >> >: >> > > > > >>> >> > > > > >>> Thanks Martin, >> > > > > >>>> >> > > > > >>>> Has it been considered to create a separate command >> "testrun" or >> > > > > similar >> > > > > >>>> which would remove the need to edit the config.xml? >> > > > > >>>> >> > > > > >>>> Dnia Tue Jun 17 11:58:33 2014 Michal Mocny pisze: >> > > > > >>>> >> > > > > >>>> Martin, thanks for posting those links. >> > > > > >>>> >> > > > > >>>>> >> > > > > >>>>> And I'll look into the INFRA tickets I need to file to set >> up a >> > > > repo >> > > > > >>>>> for >> > > > > >>>>> that plugin, since its ready to come out of labs. >> > > > > >>>>> >> > > > > >>>>> >> > > > > >>>>> On Tue, Jun 17, 2014 at 2:06 PM, Martin Gonzalez < >> > > > > >>>>> martin.c.glez.g...@gmail.com> wrote: >> > > > > >>>>> >> > > > > >>>>> This is the Cordova Plugin Test Framework readme.md, you >> can >> > > > catch >> > > > > >>>>> up >> > > > > >>>>> >> > > > > >>>>>> with >> > > > > >>>>>> the functionality by reading some of the content: >> > > > > >>>>>> >> > > > > >>>>>> Repository: >> > > > > >>>>>> https://github.com/apache/cordova-labs >> > > > > >>>>>> >> > > > > >>>>>> Docs: >> > > > > >>>>>> >> https://github.com/apache/cordova-labs/blob/master/README.md >> > > > > >>>>>> >> > > > > >>>>>> https://github.com/apache/cordova-labs/blob/cdvtest/ >> > > > > >>>>>> cordova-plugin-test-framework/README.md >> > > > > >>>>>> >> > > > > >>>>>> >> > > > > >>>>>> >> > > > > >>>>>> 2014-06-17 12:56 GMT-05:00 Piotr Zalewa < >> pzal...@mozilla.com >> > >: >> > > > > >>>>>> >> > > > > >>>>>> a documentation explaining how it's gonna work >> > > > > >>>>>> >> > > > > >>>>>>> >> > > > > >>>>>>> Dnia Tue Jun 17 10:51:58 2014 Michal Mocny pisze: >> > > > > >>>>>>> >> > > > > >>>>>>> What do you mean? >> > > > > >>>>>>> >> > > > > >>>>>>> >> > > > > >>>>>>>> >> > > > > >>>>>>>> On Tue, Jun 17, 2014 at 1:50 PM, Piotr Zalewa < >> > > > > pzal...@mozilla.com> >> > > > > >>>>>>>> wrote: >> > > > > >>>>>>>> >> > > > > >>>>>>>> Is there any predev document? >> > > > > >>>>>>>> >> > > > > >>>>>>>> >> > > > > >>>>>>>>> Dnia Mon Jun 16 18:30:46 2014 Andrew Grieve pisze: >> > > > > >>>>>>>>> >> > > > > >>>>>>>>> Yeah, really exciting. Thanks for taking this on. >> > > > > >>>>>>>>> >> > > > > >>>>>>>>> >> > > > > >>>>>>>>> >> > > > > >>>>>>>>>> On Mon, Jun 16, 2014 at 3:42 PM, Michal Mocny < >> > > > > >>>>>>>>>> mmo...@chromium.org> >> > > > > >>>>>>>>>> wrote: >> > > > > >>>>>>>>>> >> > > > > >>>>>>>>>> Fantastic! >> > > > > >>>>>>>>>> >> > > > > >>>>>>>>>> >> > > > > >>>>>>>>>> I'll try to keep an eye out on the PR's, and please >> ping >> > me >> > > > if >> > > > > >>>>>>>>>>> you >> > > > > >>>>>>>>>>> would >> > > > > >>>>>>>>>>> like any help. >> > > > > >>>>>>>>>>> >> > > > > >>>>>>>>>>> -Michal >> > > > > >>>>>>>>>>> >> > > > > >>>>>>>>>>> >> > > > > >>>>>>>>>>> On Mon, Jun 16, 2014 at 3:25 PM, Marcel Kinard < >> > > > > >>>>>>>>>>> cmarc...@gmail.com> >> > > > > >>>>>>>>>>> wrote: >> > > > > >>>>>>>>>>> >> > > > > >>>>>>>>>>> Hi, after some discussions here with IBM >> management, >> > > > we’re >> > > > > >>>>>>>>>>> going >> > > > > >>>>>>>>>>> to >> > > > > >>>>>>>>>>> >> > > > > >>>>>>>>>>> bring >> > > > > >>>>>>>>>>> >> > > > > >>>>>>>>>>>> in a couple extra interns for a week to jumpstart the >> > > > > migration >> > > > > >>>>>>>>>>>> of >> > > > > >>>>>>>>>>>> >> > > > > >>>>>>>>>>>> the >> > > > > >>>>>>>>>>> >> > > > > >>>>>>>>>> >> > > > > >>>>>> tests out of mobile-spec into the new plugin test >> framework. >> > > > Staci >> > > > > >>>>>>> >> > > > > >>>>>>>> Cooper >> > > > > >>>>>>>>>>>> will be leading this effort, and Martin Gonzalez will >> > be a >> > > > > part >> > > > > >>>>>>>>>>>> of >> > > > > >>>>>>>>>>>> >> > > > > >>>>>>>>>>>> it. >> > > > > >>>>>>>>>>> >> > > > > >>>>>>>>>> >> > > > > >>>>>> >> > > > > >>>>>>> So if you see a bunch of pull requests, this is what it >> is >> > > for. >> > > > > >>>>>>>>>>>> >> > > > > >>>>>>>>>>>> We’ll >> > > > > >>>>>>>>>>> >> > > > > >>>>>>>>>> >> > > > > >>>>>> get >> > > > > >>>>>>> >> > > > > >>>>>>>> the interns to submit an ICLA asap. >> > > > > >>>>>>>>>>>> >> > > > > >>>>>>>>>>>> >> > > > > >>>>>>>>>>>> >> > > > > >>>>>>>>>>>> >> > > > > >>>>>>>>>>> -- >> > > > > >>>>>>>>>>> >> > > > > >>>>>>>>>> >> > > > > >>>>>>>>>> Piotr Zalewa >> > > > > >>>>>>>>> Mozilla >> > > > > >>>>>>>>> >> > > > > >>>>>>>>> >> > > > > >>>>>>>>> >> > > > > >>>>>>>>> -- >> > > > > >>>>>>>> >> > > > > >>>>>>> Piotr Zalewa >> > > > > >>>>>>> Mozilla >> > > > > >>>>>>> >> > > > > >>>>>>> >> > > > > >>>>>>> >> > > > > >>>>>> >> > > > > >>>>>> -- >> > > > > >>>>>> Regards, >> > > > > >>>>>> Martin Gonzalez >> > > > > >>>>>> >> > > > > >>>>>> >> > > > > >>>>>> >> > > > > >>>>> -- >> > > > > >>>> Piotr Zalewa >> > > > > >>>> Mozilla >> > > > > >>>> >> > > > > >>>> >> > > > > >>> >> > > > > >>> >> > > > > >>> >> > > > > >> -- >> > > > > >> Piotr Zalewa >> > > > > >> Mozilla >> > > > > >> >> > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> > >