{"_id":"grunt-croc-qunit","_rev":"27-d124891de138a21a0b660110c28d04d0","name":"grunt-croc-qunit","description":"Run QUnit unit tests in headless PhantomJS with code coverage support via Istanbul. Despite grunt-contrib-qunit it has no direct dependency on phantomjs module","dist-tags":{"latest":"1.0.2"},"versions":{"0.1.0":{"name":"grunt-croc-qunit","description":"Run QUnit unit tests in a headless PhantomJS instance. It's modified version of plugins: grunt-contrib-qunit and grunt-lib-phantomjs","version":"0.1.0","homepage":"https://github.com/CrocInc/grunt-croc-qunit","author":{"name":"Sergei Dorogin","url":"https://github.com/evil-shrike"},"repository":{"type":"git","url":"git://github.com/CrocInc/grunt-croc-qunit.git"},"bugs":{"url":"https://github.com/CrocInc/grunt-croc-qunit/issues"},"licenses":[{"type":"MIT","url":"https://github.com/CrocInc/grunt-croc-qunit/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt"},"dependencies":{"eventemitter2":"~0.4.9","semver":"~1.0.14","temporary":"~0.0.4"},"devDependencies":{"grunt":"~0.4.1","grunt-contrib-jshint":"~0.6.0","grunt-contrib-connect":"~0.3.0","difflet":"~0.2.3","phantomjs":"~1.9.0-1"},"peerDependencies":{"grunt":"~0.4.0"},"keywords":["gruntplugin"],"_id":"grunt-croc-qunit@0.1.0","dist":{"shasum":"9d59efa942dc41d4f45226fe64987c06662375cc","tarball":"https://registry.npmjs.org/grunt-croc-qunit/-/grunt-croc-qunit-0.1.0.tgz","integrity":"sha512-IIv17Tspm48FL0FYAFG4BfgMDhSTvL+MMa3fzFSDCfIkDGVmUX9NU5OWO5VC7CieYbFr80p36nm+RtiCzhvkUA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE9AsSDKjwoWiHGe3fSUVjXuXgSH4FL0ldfC7I2BtHCDAiAJIsrKBzDfuuvDbv1HLOqdNl/S66XuDhQEkrcFPKVJ3w=="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"shrike","email":"npm@dorogin.com"},"maintainers":[{"name":"shrike","email":"npm@dorogin.com"}],"directories":{}},"0.1.1":{"name":"grunt-croc-qunit","description":"Run QUnit unit tests in a headless PhantomJS instance. It's modified version of grunt-contrib-qunit and grunt-lib-phantomjs plugins without direct dependency on phantomjs module","version":"0.1.1","homepage":"https://github.com/CrocInc/grunt-croc-qunit","author":{"name":"Sergei Dorogin","url":"https://github.com/evil-shrike"},"repository":{"type":"git","url":"git://github.com/CrocInc/grunt-croc-qunit.git"},"bugs":{"url":"https://github.com/CrocInc/grunt-croc-qunit/issues"},"licenses":[{"type":"MIT","url":"https://github.com/CrocInc/grunt-croc-qunit/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt"},"dependencies":{"eventemitter2":"~0.4.9","semver":"~1.0.14","temporary":"~0.0.4"},"devDependencies":{"grunt":"~0.4.1","grunt-contrib-jshint":"~0.6.0","grunt-contrib-connect":"~0.3.0","difflet":"~0.2.3","phantomjs":"~1.9.0-1"},"peerDependencies":{"grunt":"~0.4.0"},"keywords":["gruntplugin","qunit","grunt","phantomjs","CROC"],"_id":"grunt-croc-qunit@0.1.1","dist":{"shasum":"89c69bf0c2ccd265123a0311fc2b673f803bd97f","tarball":"https://registry.npmjs.org/grunt-croc-qunit/-/grunt-croc-qunit-0.1.1.tgz","integrity":"sha512-ql7989mMMZbI1+pVEreuNy/9IT17UA+UuDd6foGJvk+sB7unnylQq3y7ZIE4pXye/ZyOkZ2RCaLO4m39VWmH8Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICVvFrd2MwnYoZfV14ZP22UyZXryQjqDKGhw2zTdiZU9AiB1ekCdYVwpYG0H7MCDrciZEc9L5ehb6ZtjIISCoiBcWQ=="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"shrike","email":"npm@dorogin.com"},"maintainers":[{"name":"shrike","email":"npm@dorogin.com"}],"directories":{}},"0.1.2":{"name":"grunt-croc-qunit","description":"Run QUnit unit tests in a headless PhantomJS instance with code coverage support. Despite grunt-contrib-qunit it has no direct dependency on phantomjs module","version":"0.1.2","homepage":"https://github.com/CrocInc/grunt-croc-qunit","author":{"name":"Sergei Dorogin","url":"https://github.com/evil-shrike"},"repository":{"type":"git","url":"git://github.com/CrocInc/grunt-croc-qunit.git"},"bugs":{"url":"https://github.com/CrocInc/grunt-croc-qunit/issues"},"licenses":[{"type":"MIT","url":"https://github.com/CrocInc/grunt-croc-qunit/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt"},"dependencies":{"eventemitter2":"~0.4.9","semver":"~1.0.14","temporary":"~0.0.4"},"devDependencies":{"grunt":"~0.4.1","grunt-contrib-jshint":"~0.6.0","grunt-contrib-connect":"~0.3.0","difflet":"~0.2.3","phantomjs":"~1.9.0-1"},"peerDependencies":{"grunt":"~0.4.0"},"keywords":["gruntplugin","qunit","grunt","phantomjs","CROC","Istanbul","codecoverage","code coverage"],"_id":"grunt-croc-qunit@0.1.2","dist":{"shasum":"5e1c69b05df2b9b5abea47489383fdcd03531b3d","tarball":"https://registry.npmjs.org/grunt-croc-qunit/-/grunt-croc-qunit-0.1.2.tgz","integrity":"sha512-OYPTsyQyRYxtIZFyqZ1BC6wIDQSvlAv7yf5cE3+gvd8wazUzRJa+xrrzRpxqCFaAmSvlVPZVHfzRhzg48a6+gg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGeCdIXDRdpGttcg4ylbMFat+nU5OJbQG6DtkCtwu5zgIhAN0IPUbD8rhDPBB62vb690V91JJvIMCo7jBgYKFr665w"}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"shrike","email":"npm@dorogin.com"},"maintainers":[{"name":"shrike","email":"npm@dorogin.com"}],"directories":{}},"0.2.0":{"name":"grunt-croc-qunit","description":"Run QUnit unit tests in a headless PhantomJS instance with code coverage support. Despite grunt-contrib-qunit it has no direct dependency on phantomjs module","version":"0.2.0","homepage":"https://github.com/CrocInc/grunt-croc-qunit","author":{"name":"Sergei Dorogin","url":"https://github.com/evil-shrike"},"repository":{"type":"git","url":"git://github.com/CrocInc/grunt-croc-qunit.git"},"bugs":{"url":"https://github.com/CrocInc/grunt-croc-qunit/issues"},"licenses":[{"type":"MIT","url":"https://github.com/CrocInc/grunt-croc-qunit/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt"},"dependencies":{"eventemitter2":"~0.4.9","semver":"~1.0.14","temporary":"~0.0.4"},"devDependencies":{"grunt":"~0.4.1","grunt-contrib-jshint":"~0.6.0","grunt-contrib-connect":"~0.3.0","difflet":"~0.2.3","phantomjs":"~1.9.0-1"},"peerDependencies":{"grunt":"~0.4.0"},"keywords":["gruntplugin","qunit","grunt","phantomjs","CROC","Istanbul","codecoverage","code coverage"],"_id":"grunt-croc-qunit@0.2.0","dist":{"shasum":"86fbc2fc7c331b98a50e16573c3475aef349ea99","tarball":"https://registry.npmjs.org/grunt-croc-qunit/-/grunt-croc-qunit-0.2.0.tgz","integrity":"sha512-Bk/EqBalSAH1PDDsFBJ15ahcQJyhZP23pV/00OA54xqkd4Z8MX70JUUTY6QjFudnAin+II6MVoob580ykOiXMg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCp4MG5FvxXMgxiIfHK5XZe9AInBSAsYq0oEM8wVreuKwIhAPW0KAg2xs2dGB8fyCoCqscp1zdqWs4wbkALvC5E682g"}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"shrike","email":"npm@dorogin.com"},"maintainers":[{"name":"shrike","email":"npm@dorogin.com"}],"directories":{}},"0.3.0":{"name":"grunt-croc-qunit","description":"Run QUnit unit tests in a headless PhantomJS instance with code coverage support. Despite grunt-contrib-qunit it has no direct dependency on phantomjs module","version":"0.3.0","homepage":"https://github.com/CrocInc/grunt-croc-qunit","author":{"name":"Sergei Dorogin","url":"https://github.com/evil-shrike"},"repository":{"type":"git","url":"git://github.com/CrocInc/grunt-croc-qunit.git"},"bugs":{"url":"https://github.com/CrocInc/grunt-croc-qunit/issues"},"licenses":[{"type":"MIT","url":"https://github.com/CrocInc/grunt-croc-qunit/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt"},"dependencies":{"eventemitter2":"~0.4.9","semver":"~1.0.14","temporary":"~0.0.4"},"devDependencies":{"grunt":"~0.4.1","grunt-contrib-jshint":"~0.6.0","grunt-contrib-connect":"~0.3.0","difflet":"~0.2.3","phantomjs":"~1.9.0-1"},"peerDependencies":{"grunt":"~0.4.0"},"keywords":["gruntplugin","qunit","grunt","phantomjs","CROC","Istanbul","codecoverage","code coverage"],"_id":"grunt-croc-qunit@0.3.0","dist":{"shasum":"04dbbb1f04b4a526c54338862db1fbfbb42d4409","tarball":"https://registry.npmjs.org/grunt-croc-qunit/-/grunt-croc-qunit-0.3.0.tgz","integrity":"sha512-yzjj9QcieF3QTurtdFwX3gRdW6Y6QKFM5fQ41p5Z0H9YPP9T180tRpUB4rrTNZMo6C3t1CSh0bsn3mR6m0HrtA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCThHZQsdAtRWrzU3UQVb9F/PLk+c1BgoqdHBlmfymOLAIgT/nYFtS3NonHiU12tuxAywFPzAcLukz8y30IpKU+b7Y="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"shrike","email":"npm@dorogin.com"},"maintainers":[{"name":"shrike","email":"npm@dorogin.com"}],"directories":{}},"0.3.1":{"name":"grunt-croc-qunit","description":"Run QUnit unit tests in a headless PhantomJS instance with code coverage support via Istanbul. Despite grunt-contrib-qunit it has no direct dependency on phantomjs module","version":"0.3.1","homepage":"https://github.com/CrocInc/grunt-croc-qunit","author":{"name":"Sergei Dorogin","url":"https://github.com/evil-shrike"},"repository":{"type":"git","url":"git://github.com/CrocInc/grunt-croc-qunit.git"},"bugs":{"url":"https://github.com/CrocInc/grunt-croc-qunit/issues"},"licenses":[{"type":"MIT","url":"https://github.com/CrocInc/grunt-croc-qunit/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt"},"dependencies":{"eventemitter2":"~0.4.9","semver":"~1.0.14","temporary":"~0.0.4"},"devDependencies":{"grunt":"~0.4.1","grunt-contrib-jshint":"~0.6.0","grunt-contrib-connect":"~0.3.0","difflet":"~0.2.3","phantomjs":"~1.9.0-1"},"peerDependencies":{"grunt":"~0.4.0"},"keywords":["gruntplugin","qunit","grunt","phantomjs","CROC","Istanbul","codecoverage","code coverage","testing"],"gitHead":"236480be2df3bb5ab26c709058250796e10ebf96","_id":"grunt-croc-qunit@0.3.1","_shasum":"e5469db53118df00b78cad54962f4f194e521637","_from":".","_npmVersion":"2.10.1","_nodeVersion":"0.12.3","_npmUser":{"name":"shrike","email":"npm@dorogin.com"},"dist":{"shasum":"e5469db53118df00b78cad54962f4f194e521637","tarball":"https://registry.npmjs.org/grunt-croc-qunit/-/grunt-croc-qunit-0.3.1.tgz","integrity":"sha512-jg6TQX87/Cl6y7Su9DWXGXF5OUuu3to2GpRrt/qX497b06yoidpjEArKiXq+QqKFeneQROTJkBdbod04MrOEnw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFj+l4Rcaf3HxQkq3xZFdFBVGzsi5YA0qswNVpowQVw1AiBJxqw72QsNVjIWe/0MycAyqMYD51pYKLj0irGISvW94A=="}]},"maintainers":[{"name":"shrike","email":"npm@dorogin.com"}],"directories":{}},"0.3.2":{"name":"grunt-croc-qunit","description":"Run QUnit unit tests in a headless PhantomJS instance with code coverage support via Istanbul. Despite grunt-contrib-qunit it has no direct dependency on phantomjs module","version":"0.3.2","homepage":"https://github.com/CrocInc/grunt-croc-qunit","author":{"name":"Sergei Dorogin","url":"https://github.com/evil-shrike"},"repository":{"type":"git","url":"git://github.com/CrocInc/grunt-croc-qunit.git"},"bugs":{"url":"https://github.com/CrocInc/grunt-croc-qunit/issues"},"licenses":[{"type":"MIT","url":"https://github.com/CrocInc/grunt-croc-qunit/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt"},"dependencies":{"eventemitter2":"~0.4.9","semver":"~1.0.14","temporary":"~0.0.4"},"devDependencies":{"grunt":"~0.4.1","grunt-contrib-jshint":"~0.6.0","grunt-contrib-connect":"~0.3.0","difflet":"~0.2.3","phantomjs":"~1.9.0-1"},"peerDependencies":{"grunt":">=0.4.0"},"keywords":["gruntplugin","qunit","grunt","phantomjs","CROC","Istanbul","codecoverage","code coverage","testing"],"gitHead":"a4f15036200f0310d8c3bf2033f8cf954d3ed2de","_id":"grunt-croc-qunit@0.3.2","_shasum":"8580cecc76362b4a8a54b5e9e4e102b2e9afb0ce","_from":".","_npmVersion":"3.6.0","_nodeVersion":"5.3.0","_npmUser":{"name":"shrike","email":"npm@dorogin.com"},"dist":{"shasum":"8580cecc76362b4a8a54b5e9e4e102b2e9afb0ce","tarball":"https://registry.npmjs.org/grunt-croc-qunit/-/grunt-croc-qunit-0.3.2.tgz","integrity":"sha512-wVOXJliLZuVOKASZS8O0DuD5LV8P8apU3iVW9VTDLzbcM9BSwv8g/rwtqdL8EjLXKWHgEDPaB4c1wLSILfCFXA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCEM072NZ5dHLnHJrMzrZVNf05EGSWCqsJqk70nq+rxfAIgN7HkmcxNZXPWAj+WRepLkIhYDPrvE23Zpa8zQsjNrJc="}]},"maintainers":[{"name":"shrike","email":"npm@dorogin.com"}],"_npmOperationalInternal":{"host":"packages-9-west.internal.npmjs.com","tmp":"tmp/grunt-croc-qunit-0.3.2.tgz_1456091513124_0.7396739169489592"},"directories":{}},"0.4.0":{"name":"grunt-croc-qunit","description":"Run QUnit unit tests in a headless PhantomJS instance with code coverage support via Istanbul. Despite grunt-contrib-qunit it has no direct dependency on phantomjs module","version":"0.4.0","homepage":"https://github.com/CrocInc/grunt-croc-qunit","author":{"name":"Sergei Dorogin","url":"https://github.com/evil-shrike"},"repository":{"type":"git","url":"git://github.com/CrocInc/grunt-croc-qunit.git"},"bugs":{"url":"https://github.com/CrocInc/grunt-croc-qunit/issues"},"licenses":[{"type":"MIT","url":"https://github.com/CrocInc/grunt-croc-qunit/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt"},"dependencies":{"eventemitter2":"~0.4.9","semver":"~1.0.14","temporary":"~0.0.4"},"devDependencies":{"grunt":"~0.4.1","grunt-contrib-jshint":"~0.6.0","grunt-contrib-connect":"~0.3.0","difflet":"~0.2.3","phantomjs":"~1.9.0-1"},"peerDependencies":{"grunt":">=0.4.0"},"keywords":["gruntplugin","qunit","grunt","phantomjs","CROC","Istanbul","codecoverage","code coverage","testing"],"gitHead":"5a3e709cbf9c6241466350ee8e104a78603babc5","_id":"grunt-croc-qunit@0.4.0","_shasum":"eb22f91b363121271e98f676b91691a987d5541d","_from":".","_npmVersion":"3.6.0","_nodeVersion":"5.3.0","_npmUser":{"name":"shrike","email":"npm@dorogin.com"},"dist":{"shasum":"eb22f91b363121271e98f676b91691a987d5541d","tarball":"https://registry.npmjs.org/grunt-croc-qunit/-/grunt-croc-qunit-0.4.0.tgz","integrity":"sha512-jQ6rSWw2Sr/GPdlD87fsF2npazbMu/YD8sUYTsxKliP+gFEJZhGxHC6rZbDRfoH3M4tNke7eRektq3r6G57H0Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD77tp5WAuWaV3p8l+rZL+ZBf6OzGAAeGbn7+tglgAyZwIgOTXEXWs65RVKeUsO8bHfeHExNKTplaiFqBnLTxt5v7Q="}]},"maintainers":[{"name":"shrike","email":"npm@dorogin.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-croc-qunit-0.4.0.tgz_1466687189668_0.001954256324097514"},"directories":{}},"1.0.0":{"name":"grunt-croc-qunit","description":"Run QUnit unit tests in headless PhantomJS with code coverage support via Istanbul. Despite grunt-contrib-qunit it has no direct dependency on phantomjs module","version":"1.0.0","homepage":"https://github.com/CrocInc/grunt-croc-qunit","author":{"name":"Sergei Dorogin","url":"https://github.com/evil-shrike"},"repository":{"type":"git","url":"git://github.com/CrocInc/grunt-croc-qunit.git"},"bugs":{"url":"https://github.com/CrocInc/grunt-croc-qunit/issues"},"licenses":[{"type":"MIT","url":"https://github.com/CrocInc/grunt-croc-qunit/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","scripts":{"test":"grunt"},"dependencies":{"colors":"^1.1.2","eventemitter2":"~2.2.1","semver":"~5.3.0","temporary":"~0.0.8"},"devDependencies":{"grunt":"~1.0.1","grunt-contrib-jshint":"~1.1.0","grunt-contrib-connect":"~1.0.2","difflet":"~1.0.1","phantomjs":"~1.9.0-1"},"keywords":["qunit","grunt","gruntplugin","phantomjs","CROC","Istanbul","codecoverage","code coverage","testing"],"gitHead":"6fae76576272391d20f0fe93a595fd43f0a8e52b","_id":"grunt-croc-qunit@1.0.0","_shasum":"f2604f7308c836d6bfc684bb8b72b880a4683e52","_from":".","_npmVersion":"3.10.9","_nodeVersion":"7.2.1","_npmUser":{"name":"shrike","email":"npm@dorogin.com"},"dist":{"shasum":"f2604f7308c836d6bfc684bb8b72b880a4683e52","tarball":"https://registry.npmjs.org/grunt-croc-qunit/-/grunt-croc-qunit-1.0.0.tgz","integrity":"sha512-YO9/2Yh3UcyJT0YXyLz6sPXB1YMfnNRw7s6gosO/n61WTo7d1VMI4cMYau4Uw5yqL6JxRZ1kMWcbaKIBBf52OA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG9DYTJCvpZxi4nhj13vIBkTzCCyFRLVaFpXhjCyhfOzAiEAs25jXx9QOI1uK8HO5tnUEBM/aZpS3hQ7lvYX1DHUd9I="}]},"maintainers":[{"name":"shrike","email":"npm@dorogin.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-croc-qunit-1.0.0.tgz_1481126318248_0.012948742136359215"},"directories":{}},"1.0.1":{"name":"grunt-croc-qunit","description":"Run QUnit unit tests in headless PhantomJS with code coverage support via Istanbul. Despite grunt-contrib-qunit it has no direct dependency on phantomjs module","version":"1.0.1","homepage":"https://github.com/CrocInc/grunt-croc-qunit","author":{"name":"Sergei Dorogin","url":"https://github.com/evil-shrike"},"repository":{"type":"git","url":"git://github.com/CrocInc/grunt-croc-qunit.git"},"bugs":{"url":"https://github.com/CrocInc/grunt-croc-qunit/issues"},"license":"MIT","main":"Gruntfile.js","scripts":{"test":"grunt"},"dependencies":{"colors":"^1.1.2","eventemitter2":"~2.2.1","semver":"~5.3.0","temporary":"~0.0.8"},"devDependencies":{"grunt":"~1.0.1","grunt-contrib-jshint":"~1.1.0","grunt-contrib-connect":"~1.0.2","difflet":"~1.0.1","phantomjs":"~1.9.0-1"},"keywords":["qunit","grunt","gruntplugin","phantomjs","CROC","Istanbul","codecoverage","code coverage","testing"],"gitHead":"ececa59cc1736aabe6653a63c3d79f6356348bf2","_id":"grunt-croc-qunit@1.0.1","_npmVersion":"5.8.0","_nodeVersion":"9.2.0","_npmUser":{"name":"shrike","email":"npm@dorogin.com"},"dist":{"integrity":"sha512-LgZY/Y6oQX/tIqcxUlVHzyK0yJyATdPDuhHvnOpWO/GauKAiEwJhiIs6w+DwIIK4dEn43fvPOre/RRsGzButIA==","shasum":"a3deec7b8e436c7fdeece16ab558d52d3e369b51","tarball":"https://registry.npmjs.org/grunt-croc-qunit/-/grunt-croc-qunit-1.0.1.tgz","fileCount":32,"unpackedSize":342350,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGhjwAx5DKZe39ECvteLSM4YalgiTAEP9SUKd80gZAOAIhAKWRKOP1GvOKuH4dzEBfUjq8zksbe+VCx20AGx9WrQ8a"}]},"maintainers":[{"name":"shrike","email":"npm@dorogin.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-croc-qunit_1.0.1_1523303182205_0.644388040201552"},"_hasShrinkwrap":false},"1.0.2":{"name":"grunt-croc-qunit","description":"Run QUnit unit tests in headless PhantomJS with code coverage support via Istanbul. Despite grunt-contrib-qunit it has no direct dependency on phantomjs module","version":"1.0.2","homepage":"https://github.com/CrocInc/grunt-croc-qunit","author":{"name":"Sergei Dorogin","url":"https://github.com/evil-shrike"},"repository":{"type":"git","url":"git://github.com/CrocInc/grunt-croc-qunit.git"},"bugs":{"url":"https://github.com/CrocInc/grunt-croc-qunit/issues"},"license":"MIT","main":"Gruntfile.js","scripts":{"test":"grunt"},"dependencies":{"colors":"^1.1.2","eventemitter2":"~2.2.1","semver":"~5.3.0","temporary":"~0.0.8"},"devDependencies":{"grunt":"~1.0.1","grunt-contrib-jshint":"~1.1.0","grunt-contrib-connect":"~1.0.2","difflet":"~1.0.1","phantomjs":"~1.9.0-1"},"keywords":["qunit","grunt","gruntplugin","phantomjs","CROC","Istanbul","codecoverage","code coverage","testing"],"gitHead":"ef85600a4f94714d2b0564a56e5ead9d34d0ff99","_id":"grunt-croc-qunit@1.0.2","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-u3clrWx9UaFTbea0rQXPQA+68Fzrr7zfG1YvqBCQ5GQl4iStE7C8d5zSHW0mezszBwfJHWyaAFEoiIRgWNYiGw==","shasum":"01f950a3f3eafe950759d840b78b108b34c0c9cb","tarball":"https://registry.npmjs.org/grunt-croc-qunit/-/grunt-croc-qunit-1.0.2.tgz","fileCount":32,"unpackedSize":342010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdw9AmCRA9TVsSAnZWagAAwPoP/1FKYOw/T05N1lfuAV+h\nTx8Ny0Plrr6U+/45wuQp5ae1B32hi2sJ1OxL4jL62PRZWGsEi++GxxB67dUJ\n8fp6Bj3tbZhRYENaizYF1rDfMhxldUeKT4fHQVtftz8cMdzSRvOU96d8fmUA\nhdGtNQscHUInMqiUODq4yMTADpqDq9N8jYNRp7VbHxgUDj8pTNWyIclE/jfS\nQX1DiS+fERwR6HcykMTQnFnv0R4XPSjkTZn7HzpIq3B4POUgLzWsabmehWff\nbemnVs7v/1BHPJZmAqN1dyZ0XZ9VAICioga0FhCipr8Vk5V2iPZ9HG+xCGB+\nU7LHZ2e1WX4+8DJSjvvbD/ViiH1A1Ch1xPHsmG6N3v3JuGBA3IEqsjhLBd/S\n+zFwpV9KXAUdgJ3Xcz/qOpk2oNBd8PvB8fiWcZodmi8ClllOzvSyYeF7EfJq\nD6F/WlRaXG97pibAv+1lNKWjZKvB73Al8VcUe2qG+twBHAp+oTZF5QKz9SUB\nHOj0pd3iAO8qv3kLyR1orOZaj+mcN/ly3jaUzq7eBlx/Io0aFPbd6YotOeqa\nsl8D2UHE264SgvFntz51SbXLoSAajJ+stSklVCFxNlj+tJKYmVhbX474Ys9B\nxPBLrYPXoF2DaDdt1OvpkAUzx8x9rYNj3HUS2zd3AyHNtkQHFvaX4QipJq2N\nPD3A\r\n=kL2v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/yVN6C+n4EDvk7eH01x1Mgdf1w5Zq9k0p5NljYbBM9gIhAMpkZThiLLrI5/LI43V+eP3Nj7fUgSeDCu8pv4L6WewU"}]},"maintainers":[{"name":"shrike","email":"npm@dorogin.com"}],"_npmUser":{"name":"oberon-dev","email":"rrv@elec.ru"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-croc-qunit_1.0.2_1573113893857_0.1888964776608335"},"_hasShrinkwrap":false}},"readme":"# grunt-croc-qunit [![Build Status](https://travis-ci.org/CrocInc/grunt-croc-qunit.png?branch=master)](https://travis-ci.org/CrocInc/grunt-croc-qunit)\r\n\r\n[![NPM](https://nodei.co/npm/grunt-croc-qunit.png?downloads=true&downloadRank=true)](https://nodei.co/npm/grunt-croc-qunit/)  \r\n\r\n> Run QUnit unit tests in a headless PhantomJS instance with code coverage support.\r\n\r\n\r\n## Overview\r\nThis plugin is modified version of two plugins: [grunt-contrib-qunit][] and [grunt-lib-phantomjs][].\r\nHere's reasoning why it was forked and modified.\r\n\r\nOriginal `grunt-contrib-qunit` creates the following dependencies tree:\r\n* grunt-contrib-qunit -> grunt-lib-phantomjs -> phantomjs npm module -> PhantomJS\r\n\r\nThis works great when you install [grunt-contrib-qunit][] from official npm registry. All dependencies downloaded and installed automatically.\r\nBut [phantomjs npm module][] has very specific feature: on installation after [PhantomJS][] downloading it hardcodes absolute path to its executable.\r\nSuch behavior makes it impossible to share `node_modules` folder between machines. \r\nConsequently, it's impossible to keep `node_modules` in VCS (Git/Subversion).\r\n\r\nThat's because this plugin was created. It does not depend on `grunt-lib-phantomjs` and `phantomjs` npm modules.\r\nIt expects that you will install [PhantomJS][] on your own and supply path to its executable in task's options.\r\n\r\n[grunt-contrib-qunit]: https://github.com/gruntjs/grunt-contrib-qunit\r\n[grunt-lib-phantomjs]: https://github.com/gruntjs/grunt-lib-phantomjs\r\n[phantomjs npm module]: https://github.com/Obvious/phantomjs\r\n[PhantomJS]: http://www.phantomjs.org/\r\n\r\nThere are other distinctions from original `grunt-contrib-qunit`:  \r\n\r\n-  additinal tasks for generating code coverage reports via [Istanbul][]\r\n-  `bridge.js` script was modified to remove excess processing of QUnit.equal's arguments (see [this issue](https://github.com/gruntjs/grunt-contrib-qunit/issues/44))  \r\n-  `bridge.js` reports code coverage info from `window.__coverage__` as phantomjs' `qunit.coverage` event on test completion\r\n-  added `eventHandlers` option for `qunit` task\r\n-  different reporters support: logging test results by default is done to console (via grunt.log), but there is another reporter \"teamcity\" which reports result in [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) syntax.\r\n\r\n> Pay attention not to redefine `window.alert` as it is used internally by the tasks for coordination purposes\r\n \r\n## Getting Started\r\n \r\nTo install the plugin:\r\n\r\n```shell\r\nnpm install grunt-croc-qunit --save-dev\r\n```\r\n\r\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\r\n\r\n```js\r\ngrunt.loadNpmTasks('grunt-croc-qunit');\r\n```\r\nOr just use `matchdep` module.\r\n\r\n\r\n## QUnit task\r\n_Grunt task for executing [QUnit][] tests inside PhantomJS_.\r\n\r\nTask targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide.\r\n\r\nPlease note that this plugin doesn't download and install [PhantomJS][].\r\n\r\nFor running [QUnit][] tests you'll need to manually install PhantomJS first into some reachable place. You can use [phantomjs npm module][] for this.\r\n\r\n[QUnit]: http://qunitjs.com/\r\n[PhantomJS]: http://www.phantomjs.org/\r\n[phantomjs npm module]: https://github.com/Obvious/phantomjs\r\n\r\nAlso note that running grunt with the `--debug` flag will output a lot of PhantomJS-specific debugging information. This can be very helpful in seeing what actual URIs are being requested and received by PhantomJS.\r\n\r\n### Options\r\n\r\n#### phantomPath\r\nType: `String`  \r\nDefault: (none)  \r\nRequired: yes\r\n\r\nThe path to PhantomJS executable. It can be absolute or relative to the current working directory (by default it's folder where Gruntfile.js lives).  \r\n\r\n#### eventHandlers\r\nType: `Object`  \r\nDefault: (none)\r\n\r\nAn object map where keys are event names and values are event handlers.\r\n\r\n \r\n#### timeout\r\nType: `Number`  \r\nDefault: `5000`\r\n\r\nThe amount of time (in milliseconds) that grunt will wait for a QUnit `start()` call before failing the task with an error.\r\n\r\n#### inject\r\nType: `String`  \r\nDefault: (built-in)\r\n\r\nPath to an alternate QUnit-PhantomJS bridge file to be injected. See [the built-in bridge](https://github.com/CrocInc/grunt-croc-qunit/blob/master/phantomjs/bridge.js) for more information.\r\n\r\n#### urls\r\nType: `Array`  \r\nDefault: `[]`\r\n\r\nAbsolute `http://` or `https://` urls to be passed to PhantomJS. Specified URLs will be merged with any specified `src` files first. Note that urls must be served by a web server, and since this task doesn't contain a web server, one will need to be configured separately. The [grunt-contrib-connect plugin](https://github.com/gruntjs/grunt-contrib-connect) provides a basic web server.\r\n\r\n#### (-- PhantomJS arguments)\r\nType: `String`  \r\nDefault: (none)\r\n\r\nAdditional `--` style arguments that need to be passed in to PhantomJS may be specified as options, like `{'--option': 'value'}`. This may be useful for specifying a cookies file, local storage file, or a proxy. See the [PhantomJS API Reference][] for a list of `--` options that PhantomJS supports.\r\n\r\n#### force\r\nType: `boolean`  \r\nDefault: `false`\r\n\r\nDo not fail task if some failed\r\n\r\n#### reporter\r\nType: `String`  \r\nValues: \"console\" | \"teamcity\"  \r\nDefault: \"console\"  \r\n\r\nName of reporter to use. By default plugin will report progress to console (via `grunt.log`).\r\n\r\nSpecify \"teamcity\" for usage of a reporter which uses [TeamCity syntax](https://confluence.jetbrains.com/display/TCD10/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-ReportingTests).\r\n\r\n#### verbose\r\nType: `Boolean`  \r\nDefault: `true`  \r\n\r\nUse `false` to more concise output (only module start/end and test pass/fail result will be logged).\r\n\r\n### Usage examples\r\n\r\n#### Wildcards\r\nIn this example, `grunt qunit:all` will test all `.html` files in the test directory _and all subdirectories_. First, the wildcard is expanded to match each individual file. Then, each matched filename is passed to [PhantomJS][] (one at a time).\r\n\r\n```javascript  \r\n// Project configuration.\r\ngrunt.initConfig({\r\n  qunit: {\r\n    options: {\r\n      'phantomPath': 'tools/phantomjs/phantomjs.exe'\r\n    },\r\n    all: ['test/**/*.html']\r\n  }\r\n});\r\n```\r\n\r\n#### Testing via http:// or https://\r\nIn circumstances where running unit tests from local files is inadequate, you can specify `http://` or `https://` URLs via the `urls` option. Each URL is passed to [PhantomJS][] (one at a time).\r\n\r\nIn this example, `grunt qunit` will test two files, served from the server running at `localhost:8000`.\r\n\r\n```js\r\n// Project configuration.\r\ngrunt.initConfig({\r\n  qunit: {\r\n    options: {\r\n      'phantomPath': 'node_modules/phantomjs/lib/phantom/phantomjs.exe'\r\n    },\r\n    all: {\r\n      options: {\r\n        urls: [\r\n          'http://localhost:8000/tests/run-tests.html?filter=UnitTest1',\r\n          'http://localhost:8000/tests/run-tests.html?filter=UnitTest1'\r\n        ]\r\n      }\r\n    }\r\n  }\r\n});\r\n```\r\n\r\nWildcards and URLs may be combined by specifying both.\r\n\r\n#### Using the grunt-contrib-connect plugin\r\nIt's important to note that grunt does not automatically start a `localhost` web server. That being said, the [grunt-contrib-connect plugin][] `connect` task can be run before the `qunit` task to serve files via a simple [connect][] web server.\r\n\r\n[grunt-contrib-connect plugin]: https://github.com/gruntjs/grunt-contrib-connect\r\n[connect]: http://www.senchalabs.org/connect/\r\n\r\nIn the following example, if a web server isn't running at `localhost:8000`, running `grunt qunit` with the following configuration will fail because the `qunit` task won't be able to load the specified URLs. However, running `grunt connect qunit` will first start a static [connect][] web server at `localhost:8000` with its base path set to the Gruntfile's directory. Then, the `qunit` task will be run, requesting the specified URLs.\r\n\r\n```js\r\n// Project configuration.\r\ngrunt.initConfig({\r\n  qunit: {\r\n    options: {\r\n      'phantomPath': 'node_modules/phantomjs/lib/phantom/phantomjs.exe'\r\n    },\r\n    testserver: {\r\n      options: {\r\n        urls: [          \r\n          'http://localhost:8000/tests/run-tests.html'\r\n        ]\r\n      }\r\n    }\r\n  },\r\n  connect: {\r\n    testserver: {\r\n      options: {\r\n        port: 8000,\r\n        base: '.'\r\n      }\r\n    }\r\n  }\r\n});\r\n\r\n// This plugin provides the \"connect\" task.\r\ngrunt.loadNpmTasks('grunt-contrib-connect');\r\n\r\n// A convenient task alias.\r\ngrunt.registerTask('test', ['connect:testserver', 'qunit:testserver']);\r\n```\r\n\r\n#### Specifying filter for QUnit\r\nIt can be usefull to run a single test. QUnit supports `filter` query string parameter. If the parameter is specified then QUnit executes only tests which names satisfy the filter.\r\n\r\n```js\r\ngrunt.initConfig({\r\n  qunit:{\r\n    options: {\r\n      'phantomPath': '../../Tools/phantomjs/phantomjs.exe',\r\n      urlFilter: \"\"\r\n    },\r\n    test: {\r\n      options: {\r\n      urls: ['http://127.0.0.1:<%= connect.test.options.port %>/tests-runner.html<%= qunit.options.urlFilter %>']\r\n    }\r\n  },\r\n  connect: {\r\n    test: {\r\n      options: {\r\n        port: 8001,\r\n        base: '.'\r\n      }\r\n    }\r\n  }\r\n});\r\n\r\ngrunt.registerTask('test', function (target) {\r\n  addQUnitUrlFilter('qunit.options.urlFilter');\r\n  var filter = grunt.option('filter');\r\n  if (filter) {\r\n    grunt.config.set(taskPropName, '?filter=' + filter);\r\n  }\t\r\n  grunt.task.run(['qunit:test']);\r\n});\t\r\n\r\n```\r\nNow you can execute a single test (or any other ones with filter) via QUnit as: `grunt test --filter=MyTestName`\r\n\r\n\r\n#### Custom timeouts and PhantomJS options\r\nIn the following example, the default timeout value of `5000` is overridden with the value `10000` (timeout values are in milliseconds). Additionally, PhantomJS will read stored cookies from the specified file. See the [PhantomJS API Reference][] for a list of `--` options that PhantomJS supports.\r\n\r\n[PhantomJS API Reference]: https://github.com/ariya/phantomjs/wiki/API-Reference\r\n\r\n```js\r\n// Project configuration.\r\ngrunt.initConfig({\r\n  qunit: {\r\n    options: {\r\n      timeout: 10000,\r\n      '--cookies-file': 'misc/cookies.txt'\r\n    },\r\n    all: ['test/**/*.html']\r\n  }\r\n});\r\n```\r\n\r\n#### Events and reporting\r\n[QUnit callback](http://api.qunitjs.com/category/callbacks/) methods and arguments are also emitted through grunt's event system so that you may build custom reporting tools. Please refer to the QUnit documentation for more information.\r\n\r\nThe events are as follows :\r\n\r\n* `qunit.begin`\r\n* `qunit.moduleStart`\r\n* `qunit.testStart`\r\n* `qunit.log`\r\n* `qunit.testDone`\r\n* `qunit.moduleDone`\r\n* `qunit.done`\r\n* `qunit.coverage`\r\n\r\nStarting with v1.0 events arguments are the same in QUnit callbacks.\r\n\r\nIn addition to QUnit callback-named events, the following event is emitted when [PhantomJS][] is spawned for a test:\r\n\r\n* `qunit.spawn`: url\r\n\r\nYou may listen for these events like so:\r\n\r\n```js\r\ngrunt.event.on('qunit.spawn', function (url) {\r\n  grunt.log.ok(\"Running test: \" + url);\r\n});\r\n```\r\n\r\nAdditionally you can supply an object in `eventHandlers` task's option.   \r\n```js\r\n\tqunit:{\r\n\t\toptions: {\r\n\t\t\t'phantomPath': '../../Tools/phantomjs/phantomjs.exe'\r\n\t\t},\r\n\t\ttest: {\r\n\t\t\toptions: {\r\n\t\t\t\teventHandlers: {\r\n\t\t\t\t\t'qunit.coverage': function (coverage) {\r\n\t\t\t\t\t\tgrunt.file.write('.tmp/coverage.json', JSON.stringify(coverage));\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t    urls: ['http://127.0.0.1:9002/tests-runner.html']\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n```\r\n\r\nThe event `qunit.coverage` allows using [Istanbul][] code coverage library. See next chapter.\r\n\r\n[Istanbul]: https://github.com/gotwarlost/istanbul/\r\n\r\n\r\n\r\n## Code coverage tasks\r\n\r\nThe module contains Grunt tasks `coverageInstrument`, `coverageReport` for code coverage via [Istanbul][].\r\n\r\nWhen you have loaded the plugin (via `grunt.loadNpmTasks`) you have some tasks available besides `qunit`. These tasks are for creating code coverage reports using [Istanbul][]:  \r\n\r\n- coverageInstrument\r\n- coverageReport\r\n\r\n[Istanbul]: https://github.com/gotwarlost/istanbul/\r\n\r\nThe plugin doesn't depend on Istanbul module directly. So it doesn't add additional dependency into your project if you aren't going to use code coverage with Istanbul.\r\nIf you decide to use Istanbul for code coverage you will need to install Istanbul:\r\n`npm install istanbul --save-dev`.\r\n\r\nYou should also install [grunt-contrib-connect][] and [serve-static][] in order to be able to generate the static web server that will allow you to execute the instrumented .js code in place of the original .js code:\r\n``` \r\nnpm install grunt-contrib-connect serve-static --save-dev\r\n```\r\n\r\n[grunt-contrib-connect]: https://www.npmjs.com/package/grunt-contrib-connect\r\n[serve-static]: https://www.npmjs.com/package/serve-static\r\n\r\nCode coverage tasks are supposed to be run in the following order: coverageInstrument => connect:testcoverage => qunit => coverageReport.\r\n\r\n\r\n### `coverageInstrument` task\r\n\r\nTask targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide.\r\n\r\nTask's `src` specifies what files will be instrumented. Task's parameters should describe a set of `*.js` files. Task's `dest` property specifies a folder path where instrumented files will be saved (some kind of temporary folder). These instrumented files should be used during tests execution.     \r\nThe task `src-dest` mappings specification use standard [Grunt rules for files processing](http://gruntjs.com/configuring-tasks#files).\r\n \r\n#### src\r\nType: `String`  \r\nRequired: yes\r\n\r\n`src`, `expand`, `cwd` properties should descibe a set of `*.js` files to instument.\r\n\r\n#### dest\r\nType: `String`  \r\nRequired: yes\r\n\r\nA folder path where instrumented files will be saved.\r\n\r\n#### Options\r\n##### autoBind\r\nType: `Boolean`  \r\nRequired: no  \r\nDefault: `true`  \r\n\r\nIf `autoBind` option is set then the task will automatically adds a handler for `qunit.coverage` event via `qunit` task's options (see `eventHandlers` option). Also the task will define `coverageFile` option for `coverageReport` task (coverage file will be placed into `dest` folder). So by default you can leave your `qunit` task untouched and get coverage reports.\r\n\r\n##### `connect:testcoverage`\r\n\r\nIn order to be able to substitute the original sources with the instrumented sources without having to modify the test files, one should create a webserver serving static content that can server the instrumented sources as the original one.\r\n\r\nThe `grub-contrib-connect` and `serve-static` packages allow the on-the-fly creation of a local web server where the tests can be run and where the http://localhost:port/src will be associated with the instrumented local version of the sources files. The middleware functionnality of connect is exploited and a specific mountFolder function is used in order to associate the web server aliases with the local folders.  \r\n\r\n```js\r\n  var serveStatic = require('serve-static');\r\n\r\n\tgrunt.initConfig({...,\r\n\t\tconnect: {\r\n\t\t\ttestcoverage: {\r\n\t\t\t\toptions: {\r\n\t\t\t\t\t..\r\n\t\t\t\t\tmiddleware: function (connect) {\r\n\t\t\t\t\t\treturn [\r\n\t\t\t\t\t\t\t// instrumented sources first as \"regular\" sources\r\n\t\t\t\t\t\t\tserveStatic('.tmp'),\r\n\t\t\t\t\t\t\t// then test fixtures and libs\r\n\t\t\t\t\t\t\tserveStatic('tests'),\r\n\t\t\t\t\t\t\tserveStatic('libs'),\r\n\t\t\t\t\t\t];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, ...});\r\n\t}\r\n```\r\n\r\n##### generateModule\r\nType: `Object`  \r\nRequired: no  \r\n\r\nThe option allows to generade a AMD module with imports of all instrumented files. This is usefull for getting more accurate coverage reports. If an instrumeneted file wasn't loaded during tests execution then coverage report won't take it into account at all and you'll get falsy high numbers of coverage. \r\n\r\nFor getting correct numbers of code coverage you need to load all your  files during test execution. You can do it manually or allow `coverageInstrument` task to do it for you.\r\nThe task supposes that all files are AMD-modules (e.g. loaded via [RequireJS](http://requirejs.org/) or the like). In your main module for tests you can import a stub like 'all-modules'. Then tell `coverageInstrument` task to replace the stub with generated module which will contain imports of all instrumented files.  \r\n\r\nFor more info see examples below.  \r\n  \r\n`generateModule` option is an object with properties:\r\n  \r\n* `output` - path to generated module (i.e. js file path):  \r\nType: `String`  \r\nRequired: yes\r\n* `ignore` - an array of module names to ignore (they won't be included into generated module):   \r\nType: `Array`  \r\nRequired: no\r\n\r\nGenerated AMD-module will contain imports of modules which names are relative to the module folder.\r\n\r\nFor example if `generateModule.output` equals to `.tmp/all-modules.js` then all module names will relative to '.tmp' folder. It's supposed that instrumented files are put into the same folder (via `dest` option).\r\n\r\n\r\n### `coverageReport` task\r\n`coverageReport` task controls what reports to generate from coverage info. In most cases coverage info is a json file created on qunit test completion. You can use `qunit.coverage` event to manually handle coverage info and save it into a file or leave it to happen automatically if `autoBind` option was set for `coverageInstrument` task.\r\n\r\n#### coverageFile\r\nType: `String`    \r\nDefault: (none)    \r\nRequired: yes  \r\n\r\nThe file path to `coverage.json` file with coverage info saved after tests completion. To create this file you can use `qunit.coverage` event. See example below.  \r\nThis option is set automatically if `autoBind` option of `coverageInstrument` task is specified (by default). \r\n\r\n#### reports\r\nType: `Object`    \r\nRequired: no  \r\n\r\nAn object to specify what reports should be generated. The object's key can be any report name which Istanbul supports (`html`, `lcov`, `text`; see the [doc](https://github.com/gotwarlost/istanbul/#the-report-command) for details). The key's value should be a folder path  where the report will be created.\r\n\r\n\r\n### Usage example\r\n\r\nIt doesn't make much sence to run tasks `coverageInstrument` and `coverageReport` individually. Instead they are designed to be run in a pipeline with `qunit` task.\r\nBut they were designed specifically to be independent from `qunit` task to simplify re-using if you will.\r\n\r\n```js\r\n  var serveStatic = require('serve-static');\r\n\r\n\tgrunt.initConfig({\r\n\t\tqunit:{\r\n\t\t\toptions: {\r\n\t\t\t\t'phantomPath': '../../Tools/phantomjs/phantomjs.exe'\r\n\t\t\t},\r\n\t\t\ttest: {\r\n\t\t\t\toptions: {\r\n\t\t\t\t    // url which `connect` server will be serve\r\n\t\t\t\t    urls: ['http://127.0.0.1:<%= connect.testcoverage.options.port %>/tests-runner.html']\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tconnect: {\r\n\t\t\ttestcoverage: {\r\n\t\t\t\toptions: {\r\n\t\t\t\t\tport: 9002,\r\n\t\t\t\t\thostname: '127.0.0.1',\r\n\t\t\t\t\tmiddleware: function (connect) {\r\n\t\t\t\t\t\treturn [\r\n\t\t\t\t\t\t\t// instrumented sources first as real src through alias usage\r\n\t\t\t\t\t\t\tserveStatic('.tmp'),\r\n\t\t\t\t\t\t\t// then test fixtures and helpers\r\n\t\t\t\t\t\t\tserveStatic('tests'),\r\n\t\t\t\t\t\t\t// other libs\r\n\t\t\t\t\t\t\tserveStatic('lib')\r\n\t\t\t\t\t\t];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tcoverageInstrument: {\r\n\t\t\ttest: {\r\n\t\t\t\t// NOTE: we instrument only subset of our sources ('lib')\r\n\t\t\t\tsrc: 'lib/**/*.js',\r\n\t\t\t\texpand: true,\r\n\t\t\t\tcwd: 'src',\r\n\t\t\t\tdest: '.tmp'\r\n\t\t\t}\r\n\t\t},\r\n\t\tcoverageReport: {\r\n\t\t\ttest: {\r\n\t\t\t\toptions: {\r\n\t    \t\t\treports: {\r\n\t    \t\t\t\thtml: 'coverageReports/' \r\n\t    \t\t\t}\r\n\t    \t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\tgrunt.registerTask('testcoverage', ['coverageInstrument', 'connect:testcoverage', 'qunit:test', 'coverageReport']);\r\n```\r\n\r\nNow just run: `grunt testcoverage`\r\n\r\n\r\n#### `generateModule` option usage\r\nThe config from the previous example can be extended by adding `generateModule` option into `coverageInstrument` task:  \r\n   \r\n```js\r\n\r\n\t\tcoverageInstrument: {\r\n\t\t\ttest: {\r\n\t\t\t\toptions: {\r\n\t\t\t\t\tgenerateModule: {\r\n\t\t\t\t\t\toutput: '.tmp/all-modules.js',\r\n\t\t\t\t\t\t// put here all modules for which you have aliases in requirejs' config (paths)\r\n\t\t\t\t\t\tignore: ['lib/core', 'lib/xcss', 'lib/xhtmpl']\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t// NOTE: we instrument only subset of our sources ('lib')\r\n\t\t\t\tsrc: 'lib/**/*.js',\r\n\t\t\t\texpand: true,\r\n\t\t\t\tcwd: 'src',\r\n\t\t\t\tdest: '.tmp'\r\n\t\t\t}\r\n\t\t},\r\n```\r\n\r\ntests-runner.html file contains something like this:  \r\n \r\n```html\r\n<script type=\"text/javascript\" src=\"require.config.js\"></script>\r\n<script type=\"text/javascript\" src=\"vendor/require.js\" data-main=\"tests-main\"></script>\r\n```\r\n\r\nmain script tests-main.js:   \r\n\r\n```js\r\nrequire([\r\n\t\"all-modules\",\r\n\t\"fixtures/component1-tests\", ... all other tests\r\n], function () {\r\n\r\n\t// run all tests after their modules were loaded\r\n\tQUnit.start();\r\n});\r\n```\r\n\r\nHere all-modules.js is a stub module:\r\n\r\n```js\r\ndefine([], function () {});\r\n```\r\n\r\n## Release History\r\n * 2019-11-06\tv1.0.2  Fixed: fix cleanup for phantomjs. Make it work on node > v10   \r\n * 2018-04-09\tv1.0.1  Fixed: `coverageInstrument` task was incorrectly overriding `qunit.options.eventHandlers`\r\n * 2016-12-07\tv1.0.0  Added reporters (console/teamcity), changed events arguments (QUnit 2.0 support)\r\n * 2016-06-23\tv0.4.0\tAdded 'force' option for 'qunit' task\r\n * 2016-02-21\tv0.3.2\tSupport Grunt 1.0\r\n * 2015-09-02\tv0.3.1\tSupport multiple URLs for coverage (converage reports are merged)\r\n * 2013-10-15\tv0.3.0\tAddded generateModule option\r\n * 2013-09-07\tv0.2.1  Added sample project with Gruntfile.js to run unit tests with code coverage\r\n * 2013-09-02\tv0.2.0  Added autoBind option for coverageInstrument task to simplify using coverage tasks \r\n * 2013-08-30\tv0.1.2  Added tasks coverageInstrument/coverageReport for code coverage via Istanbul \r\n * 2013-08-30\t\t\tAdded 'qunit.coverage' event which is reported on tests completion with `window.__coverage__` object.\r\n * 2013-08-28\t\t\tAdded 'eventHandlers' option for passing phantomjs' events handlers\r\n * 2013-08-27\tv0.1.0\tForked from grunt-contrib-qunit and grunt-lib-phantomjs and modified - first working version\r\n\r\n---\r\nAuthored by [Sergei Dorogin](http://about.dorogin.com)\r\n\r\n(c) Copyright CROC Inc. 2013-2016  \r\n\r\nOriginal tasks ([grunt-contrib-qunit][] and [grunt-lib-phantomjs][]) were authored by:\r\n\r\n* [\"Cowboy\" Ben Alman](http://benalman.com/)\r\n* [Tyler Kellen](http://goingslowly.com/)\r\n\r\nContributors:\r\n\r\n* [yamikuronue](https://github.com/yamikuronue)  \r\n","maintainers":[{"name":"shrike","email":"npm@dorogin.com"}],"time":{"modified":"2022-06-18T14:46:32.395Z","created":"2013-08-28T08:38:57.394Z","0.1.0":"2013-08-28T08:39:03.371Z","0.1.1":"2013-08-28T09:09:43.670Z","0.1.2":"2013-08-30T09:58:39.622Z","0.2.0":"2013-09-03T22:17:09.341Z","0.3.0":"2013-10-28T20:41:08.960Z","0.3.1":"2015-09-02T10:49:51.790Z","0.3.2":"2016-02-21T21:51:57.969Z","0.4.0":"2016-06-23T13:06:32.460Z","1.0.0":"2016-12-07T15:58:40.817Z","1.0.1":"2018-04-09T19:46:22.292Z","1.0.2":"2019-11-07T08:04:54.142Z"},"author":{"name":"Sergei Dorogin","url":"https://github.com/evil-shrike"},"repository":{"type":"git","url":"git://github.com/CrocInc/grunt-croc-qunit.git"},"users":{"fassetar":true},"homepage":"https://github.com/CrocInc/grunt-croc-qunit","keywords":["qunit","grunt","gruntplugin","phantomjs","CROC","Istanbul","codecoverage","code coverage","testing"],"bugs":{"url":"https://github.com/CrocInc/grunt-croc-qunit/issues"},"readmeFilename":"README.md","license":"MIT"}