{"_id":"grunt-galenframework","_rev":"115-1d62b10d2294b29755111762a3c6f542","name":"grunt-galenframework","description":"Grunt plugin for Galen Framework","dist-tags":{"latest":"2.4.4","next":"2.4.2-develop-80"},"versions":{"0.5.5":{"name":"grunt-galenframework","version":"0.5.5","description":"Grunt plugin for Galen","files":["tasks","lib","galen-cli"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen"],"engines":{"node":">=0.10.0"},"galen":{"version":"2.1.3"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13"},"author":{"name":"mjurczyk"},"license":"MIT","dependencies":{"async":"^0.9.0","download":"^4.1.2"},"scripts":{"postinstall":"node galen-cli/galen","test":"cd test && npm install && grunt"},"gitHead":"d596df5ac8ffae7cde9c258d411524dfeae1f160","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@0.5.5","_shasum":"fcc43b2253a8f39369100852669be03f349d5d9d","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.2","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"fcc43b2253a8f39369100852669be03f349d5d9d","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-0.5.5.tgz","integrity":"sha512-CDvHVLeD54qSuKzwTU3enaNGuEooDSSoAK1WwJsv6JPQw6SFtj/OLEWwZBAISLGEmlB5sKbHwVYGWvGHwTDZhQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHHc9YcPgHJrCTv3T8rlv0vKWkrmA1XNw+bGTxetdpHgAiADu/tV23jPDn0FruQwboFBMXTXr7n8l0ho/+3IxDT6yA=="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"}],"directories":{}},"1.0.0":{"name":"grunt-galenframework","version":"1.0.0","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"engines":{"node":">=0.10.0"},"author":{"name":"Martin Reinhardt"},"license":"MIT","dependencies":{"async":"^0.9.0","download":"^4.1.2","galenframework":"2.2.0"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13"},"scripts":{"test":"cd test && npm install ../ && grunt && cd ../example && cd dynamic-input-test && npm install ../../ --save-dev && grunt"},"gitHead":"73bbe7126a614e6a1344fd2bbc1caa6cd43a1665","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@1.0.0","_shasum":"53dd6d9272560c57d024ffdb8a595a969d72ffbe","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.2","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"53dd6d9272560c57d024ffdb8a595a969d72ffbe","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-1.0.0.tgz","integrity":"sha512-qvo7pe7u0u0jnLn7S/jbHCtWDLqsWwcv930Q1tEMLSOcxfRGwz+LyTXVImB2ifK+v3YUEFq0boQQWpf/XctMbw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH1n7Yd1s+ZpbQMFMb1WjBOSozqIomiXtxgD/micjNqWAiEA4bXLQ0A32ATu+TE9ySwnnnHpoWn6cyIi1yfKBHJ/VOU="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"}],"directories":{}},"2.2.3":{"name":"grunt-galenframework","version":"2.2.3","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"engines":{"node":">=0.10.0"},"author":{"name":"Martin Reinhardt"},"license":"MIT","dependencies":{"async":"^0.9.0","download":"^4.1.2","galenframework":"2.3.0-beta.0"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13"},"scripts":{"test":"cd test && npm install && npm install ../ && grunt --debug && cd ../example && cd dynamic-input-test && npm install && npm install ../../ --save-dev && grunt --debug "},"gitHead":"9b7d1cb411eaa8b5370875725a803ce29c6b0384","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.2.3","_shasum":"0920f0c976b391c6c27377672a63742410e320eb","_from":".","_npmVersion":"2.14.12","_nodeVersion":"4.3.2","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"0920f0c976b391c6c27377672a63742410e320eb","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.2.3.tgz","integrity":"sha512-0J3dD3CuOmMVxiA7xOEqoPrM0yv0Otf+z5QW/wozPq0Zu2XbVmCIF2WS0Won0zHaqzo8L4rRvdM/PyuDIdyZLQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDPFNqam6XNBnDqkPViPTKKIBziprx69H7Mba0QR60KvAiEAptYHsgx+suYkEeb5WrzZVcxF1ZLDTNAXu1wslqkCw2E="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.2.3.tgz_1458850798827_0.8716423672158271"},"directories":{}},"2.2.4":{"name":"grunt-galenframework","version":"2.2.4","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"engines":{"node":">=0.10.0"},"author":{"name":"Martin Reinhardt"},"license":"MIT","dependencies":{"async":"^0.9.0","download":"^4.1.2","galenframework":"2.2.4"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13"},"scripts":{"test":"cd test && npm install && npm install ../ && grunt --debug && cd ../example && cd dynamic-input-test && npm install && npm install ../../ --save-dev && grunt --debug "},"gitHead":"b595cb11344ee7b5860fb7463605bc1124d9ac59","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.2.4","_shasum":"255d40d8587f59c7d916c168c6e8e2697cc68580","_from":".","_npmVersion":"2.14.12","_nodeVersion":"4.3.2","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"255d40d8587f59c7d916c168c6e8e2697cc68580","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.2.4.tgz","integrity":"sha512-2B7jju0hxmyDBtzio7fNDltREmNB8M71PzKEpicrcHzzqsyne67GnxilExiGNneLywnt+34qI6NKNqBGklMM1A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsCyG0etKua7Pqbg4zZDM0b2+/mEdsxGt4uZNYnoxMdAIgNqeejj6jtXAOB8mxFt3MHrGKRtzoZKxvCP4tKQ3w5/4="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.2.4.tgz_1459497365260_0.28180794534273446"},"directories":{}},"2.2.5":{"name":"grunt-galenframework","version":"2.2.5","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"engines":{"node":">=0.10.0"},"author":{"name":"Martin Reinhardt"},"license":"MIT","dependencies":{"async":"^0.9.0","download":"^4.1.2","galenframework":"2.2.5"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13"},"scripts":{"test":"cd test && npm install && npm install ../ && grunt --debug && cd ../example && cd dynamic-input-test && npm install && npm install ../../ --save-dev && grunt --debug "},"gitHead":"29a5cede9e442298b9089500ccf488a49092d5ca","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.2.5","_shasum":"8d76d2c2d7c265c467fa5d74aaf982f12763113b","_from":".","_npmVersion":"2.14.12","_nodeVersion":"4.3.2","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"8d76d2c2d7c265c467fa5d74aaf982f12763113b","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.2.5.tgz","integrity":"sha512-9gGSvKm4ZRJiXeZF1snzl04nLurKwUaR4SqzMbKlfJot0rwgDMsbRr3HUvOn5NFXETF2Gc+tPx2xp3lIcQwloQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZGXLGJP3PflIO4wVanf04w4uDR17s3VR3SRPxeLqALQIhAM3qJYT74dExvexcJiI1rhpw5uBG3TA5OhmLHrwGF0Lb"}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.2.5.tgz_1460721234848_0.5449014897458255"},"directories":{}},"2.2.6":{"name":"grunt-galenframework","version":"2.2.6","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"engines":{"node":">=0.10.0"},"author":{"name":"Martin Reinhardt"},"license":"MIT","dependencies":{"async":"^0.9.0","download":"^4.1.2","galenframework":"2.2.6"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13"},"scripts":{"test":"cd test && npm install && npm install ../ && grunt --debug && cd ../example && cd dynamic-input-test && npm install && npm install ../../ --save-dev && grunt --debug "},"gitHead":"e7ef8699cc5fab0ea28cdde396188229b8fb5f1a","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.2.6","_shasum":"276a2d3c04b8c66029f99130fa7dd65566763a74","_from":".","_npmVersion":"3.9.5","_nodeVersion":"4.4.3","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"276a2d3c04b8c66029f99130fa7dd65566763a74","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.2.6.tgz","integrity":"sha512-8WgEKuTpHiisht0UD12GckzcTpChFsyyYAmErXe3BMGoAiZFaEX+Bc4WDSvrxk64zyw4QhgRQrp3oyaX+1Qxtw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/avrS30OM9enDfJooAsy6W9BqZS6rM0ofgabd++cc2gIhAJQwFWcYFiZz6Jmqyo0bsXWZ8TrwSpOEDZUNRr7PRrC4"}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.2.6.tgz_1468293586901_0.4886042287107557"},"directories":{}},"2.3.0":{"name":"grunt-galenframework","version":"2.3.0","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"engines":{"node":">=0.10.0"},"author":{"name":"Martin Reinhardt"},"license":"MIT","dependencies":{"async":"^0.9.0","galenframework":"2.3.0"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"1.3.3"},"scripts":{"test":"cd test && npm install && npm install ../ && grunt --debug && cd ../example && cd dynamic-input-test && npm install && npm install ../../ --save-dev && grunt --debug ","posttest":"jsdoc -c jsdoc.json && jsdoc2md tasks/galen.js | sed s/hotSpotPlugin/cordova.plugins.hotspot/g | sed s/HotSpotPlugin/cordova.plugins.hotspot/g > PLUGIN_USAGE.MD"},"gitHead":"fb92bef2d03e6a077c909be3735aa8f7416c9bc2","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.0","_shasum":"3d421ab826f46da9ed4198a7b6f399be6e6abd37","_from":".","_npmVersion":"3.10.6","_nodeVersion":"4.4.7","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"3d421ab826f46da9ed4198a7b6f399be6e6abd37","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.0.tgz","integrity":"sha512-ef7weKvjM802CMN07L1iB1qmVEVU3fDmfwsx8XH5Xa1/SPNJD8bRaqPxKJFownVVWVh/+DsfnWp4MhZdolbXsw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD68BLs9id2M3FuncDQdClI86H2ec5Wn4MHKLZIc90KmgIgbyB4Y7EZeeRxEZDseWLd6zQo/UZptP2I4WclL5c5OnM="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.0.tgz_1473050856171_0.11445567407645285"},"directories":{}},"2.3.1-6":{"name":"grunt-galenframework","version":"2.3.1-6","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"engines":{"node":">=0.10.0"},"author":{"name":"Martin Reinhardt"},"license":"MIT","dependencies":{"async":"^0.9.0","galenframework":"2.3.1"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"1.3.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","posttest":"jsdoc -c jsdoc.json && jsdoc2md tasks/galen.js | sed s/hotSpotPlugin/cordova.plugins.hotspot/g | sed s/HotSpotPlugin/cordova.plugins.hotspot/g > PLUGIN_USAGE.MD"},"gitHead":"a206aaf39a8983e92b6b1e4dff3d099c9b9cdaba","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.1-6","_shasum":"6bd0835bfcb8a2fc27f47e054380e2c63b76bf5e","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"6bd0835bfcb8a2fc27f47e054380e2c63b76bf5e","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.1-6.tgz","integrity":"sha512-kKj9r1qaAPEoeFxsmP8PJD1mqKuWBR7kcK/7HIhxmj3zLZxowVoRibDakvMjP/EZFFPVDOiHXGH55E5J5psHrQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDN10SCiVdmLBhbEy1ekOrQK2f/TdhkE6wfy0xycTvw7QIhAOEAHL3k1uSsMKFW4Rwi1RYCojCYBKBuREkzRYtfJMRJ"}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.1-6.tgz_1476468248596_0.9370667482726276"},"directories":{}},"2.3.1":{"name":"grunt-galenframework","version":"2.3.1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"engines":{"node":">=0.10.0"},"author":{"name":"Martin Reinhardt"},"license":"MIT","dependencies":{"async":"^0.9.0","galenframework":"2.3.1"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"1.3.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","posttest":"jsdoc -c jsdoc.json && jsdoc2md tasks/galen.js | sed s/hotSpotPlugin/cordova.plugins.hotspot/g | sed s/HotSpotPlugin/cordova.plugins.hotspot/g > PLUGIN_USAGE.MD"},"gitHead":"2cf0e77f5a5f10bfff16ec5432ab478ea79324da","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.1","_shasum":"7afbf7eb48ba62bacc2bc5c24555e0202ff87546","_from":".","_npmVersion":"3.10.8","_nodeVersion":"4.4.7","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"7afbf7eb48ba62bacc2bc5c24555e0202ff87546","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.1.tgz","integrity":"sha512-ua6ooF63P8ZamOL5u+bORs1x4iHf7PHHpJBAutFr/gdFi/x3jy0tvbrgjOLCAzIRuk0Bz9GFb5tzhBKJzKqWXw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGZ3M5h0wqNcBpzTDTqpDwgPXcvy8w0ZRpRIt14DPiObAiEAigbbsIFZfGellxgeCunBu/GgAznc9VaHVW7OFonjoT0="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.1.tgz_1476468411280_0.6445507681928575"},"directories":{}},"2.3.1-1":{"name":"grunt-galenframework","version":"2.3.1-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"engines":{"node":">=0.10.0"},"author":{"name":"Martin Reinhardt"},"license":"MIT","dependencies":{"async":"^0.9.0","galenframework":"2.3.1"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"1.3.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","posttest":"jsdoc -c jsdoc.json && jsdoc2md tasks/galen.js | sed s/hotSpotPlugin/cordova.plugins.hotspot/g | sed s/HotSpotPlugin/cordova.plugins.hotspot/g > PLUGIN_USAGE.MD"},"gitHead":"2cf0e77f5a5f10bfff16ec5432ab478ea79324da","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.1-1","_shasum":"d392a852f0c7e4700fed1b80f026bb66c5fd584a","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"d392a852f0c7e4700fed1b80f026bb66c5fd584a","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.1-1.tgz","integrity":"sha512-4cPIBlxGro73j8PGLbgOJ50FyLTPBnbpKyLswFX+dLNAUXZTHlkcYlf0UKiXO+5z31/puFm7fdSQ7bUVz8BaNw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHHmbfs96JCTRGsI8vxa3YTzk0HWGcJB7kFzQXGMZNZvAiEAwUL/8NRIm6ZgxGuDA+/nrYs7F0NuP2jLDcgNbWc4DcA="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.1-1.tgz_1476468544898_0.04325475008226931"},"directories":{}},"2.3.2-dev-7":{"name":"grunt-galenframework","version":"2.3.2-dev-7","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"engines":{"node":">=0.10.0"},"author":{"name":"Martin Reinhardt"},"license":"MIT","dependencies":{"async":"^0.9.0","galenframework":"2.3.1"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"1.3.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","posttest":"jsdoc -c jsdoc.json && jsdoc2md tasks/galen.js | sed s/hotSpotPlugin/cordova.plugins.hotspot/g | sed s/HotSpotPlugin/cordova.plugins.hotspot/g > PLUGIN_USAGE.MD"},"gitHead":"cb6952a840d3d7f3197e2cdb0fa14ba8d2d71533","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.2-dev-7","_shasum":"3809074cda5f7a36308772a2624ade5df221d073","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"3809074cda5f7a36308772a2624ade5df221d073","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.2-dev-7.tgz","integrity":"sha512-3QUDQaZzkBM7iqUXIPk49XaRUoUh0QBFJI7pVGTCF/D9UGaO2UFnFjUSJgpmH0DxbZpx1OpD/Nr0/zG54OgmPA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFG+lR1N6mKIJpdhEtDOJ9k2ldB8TTO4Uf76KPF8Rr7FAiEAg9Yw6KHwo8FZyWkotsslYL8WP6VOuHmIBk9m2WZz+UQ="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.2-dev-7.tgz_1476468599592_0.22449947521090508"},"directories":{}},"2.3.1-2":{"name":"grunt-galenframework","version":"2.3.1-2","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"engines":{"node":">=0.10.0"},"author":{"name":"Martin Reinhardt"},"license":"MIT","dependencies":{"async":"^2.1.2","galenframework":"2.3.1"},"devDependencies":{"grunt":"^1.0.1","grunt-cli":"^1.2.0","jsdoc":"3.4.2","jsdoc-to-markdown":"2.0.1","jshint":"2.9.4"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","posttest":"jsdoc -c jsdoc.json && jsdoc2md tasks/galen.js | sed s/hotSpotPlugin/cordova.plugins.hotspot/g | sed s/HotSpotPlugin/cordova.plugins.hotspot/g > PLUGIN_USAGE.MD"},"gitHead":"c493d76fcd7bc26f66ea615fc490308a0a5c516a","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.1-2","_shasum":"a370ddb1ece32628813fe17ec7d3c8bd0999446e","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"a370ddb1ece32628813fe17ec7d3c8bd0999446e","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.1-2.tgz","integrity":"sha512-qpgST0TFjbV0k/Nyqjs1GyvowWX/H72umZk1ADca1yeVaRMx8/ixjqLpGgRmSlfeLBNhsi7hU2CdUE3no9rQXQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpZJJhVESy2NldkHivP9YyeE/Cih5GkH9QLNrQE+PoZgIgO/gmeVyGPTFwlwRC8NvVLRiWBusZeFRQvsxFIAy7Ik8="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.1-2.tgz_1478755594868_0.9915245962329209"},"directories":{}},"2.3.1-9":{"name":"grunt-galenframework","version":"2.3.1-9","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^0.9.0","chromedriver":"^2.27.2","galenframework":"2.3.2","geckodriver":"^1.3.0"},"devDependencies":{"conventional-changelog-cli":"1.2.0","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"1.3.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release:pre":"npm run test","release:post":"npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:minor":"npm version minor && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:patch":"npm version patch && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"b7fa251573c577942ae5e47ee21cd49e12def56d","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.1-9","_shasum":"5e91e6ec6e363d8593fb4f4ff0742ab4221a1c17","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"5e91e6ec6e363d8593fb4f4ff0742ab4221a1c17","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.1-9.tgz","integrity":"sha512-eTrWfPA10ZW7hpBn5J894HdvOFFsUAwffa6vRtp9Qfuzbv4wN8U9QnRb89FsdFTiFNiUxBjKcNLvveXo8UM8sg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE4KScbPlHZlMmH+3W5Fw5yWC/npuVplUlWL3pdn9AtdAiEAvfpwcwxwy5Kx/VGCtKk6CopiU0Ag791fA191Zrw5Jh0="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.1-9.tgz_1486640361168_0.5183756579644978"},"directories":{}},"2.3.2":{"name":"grunt-galenframework","version":"2.3.2","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^0.9.0","chromedriver":"^2.27.2","galenframework":"2.3.2","geckodriver":"^1.3.0"},"devDependencies":{"conventional-changelog-cli":"1.2.0","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"1.3.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release:pre":"npm run test","release:post":"npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:minor":"npm version minor && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:patch":"npm version patch && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"6ae82da4f3c8c23b53dda2ac14d32328422d1c4f","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.2","_shasum":"a242f1b26f813070f5f2d6e7223c3151d2e004a8","_from":".","_npmVersion":"4.0.3","_nodeVersion":"6.9.4","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"a242f1b26f813070f5f2d6e7223c3151d2e004a8","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.2.tgz","integrity":"sha512-LRzraZLiO9eAopJv+e6lEhhwh2V19I/4GGlEsnVQrjRxJ8D5N3slOeDUJ2bUBAjg1qEnpzc9L+vOAof9/WqnTA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMftaP1PkiYSW3ZpSTUjzHdOU1GzEJgkREu9bl9OqCrgIgLcN9tB2wQhfA5Z9+mIZWVTLyOMskxXPNoKVbA5mqSlg="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.2.tgz_1486640628456_0.27874937653541565"},"directories":{}},"2.3.2-5":{"name":"grunt-galenframework","version":"2.3.2-5","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^0.9.0","chromedriver":"^2.27.2","galenframework":"2.3.2","geckodriver":"^1.3.0"},"devDependencies":{"conventional-changelog-cli":"1.2.0","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"1.3.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release:pre":"npm run test","release:post":"npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:minor":"npm version minor && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:patch":"npm version patch && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"a396d02ed569996e348d07e079ba7c52a4415563","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.2-5","_shasum":"57c27dc912fcec2bf476f52ff31423c9b09041f8","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"57c27dc912fcec2bf476f52ff31423c9b09041f8","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.2-5.tgz","integrity":"sha512-dW3I9jZ+1Uf55IH8oXrpw4T+hQB7NWiwUKj3pcx00RKoucyYr3yGZ0Ey8CFxeUpDheXYIsKhipyO6ATTAp7HQw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpJf4La7FRuxmfJ1tCWortfANgdFjFeLNLSLHRTytyWAIhAJH8Tld/ERbOP2nn1izdUv84sHQK9D6x+l1IT0+m5JSE"}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.2-5.tgz_1486640691970_0.7569336493033916"},"directories":{}},"2.3.2-6":{"name":"grunt-galenframework","version":"2.3.2-6","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^0.9.0","chromedriver":"^2.27.2","galenframework":"2.3.2","geckodriver":"^1.3.0"},"devDependencies":{"conventional-changelog-cli":"1.2.0","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"1.3.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release:pre":"npm run test","release:post":"npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:minor":"npm version minor && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:patch":"npm version patch && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"6ae82da4f3c8c23b53dda2ac14d32328422d1c4f","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.2-6","_shasum":"06e5d6fcd67ccc9749501d3269f68f55355adedd","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"06e5d6fcd67ccc9749501d3269f68f55355adedd","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.2-6.tgz","integrity":"sha512-cjKTxeg6Xzc1QzzwsO0VQE4NWGj39IeAGEm4ZEAAXsE6Um3kw/lIOBnAhqO3qy/EltnG76nbCMLZBGe+u6naLA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQ/RJQ3wmPH/25r/kzfOX9UnRV4n6JzQbGjaFwS2hF6AIhAI6fiyvGbHpm4N2+p/5g7y07DSnqwAQxipzWl9sgfgoH"}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.2-6.tgz_1486640739372_0.27786167594604194"},"directories":{}},"2.3.2-1":{"name":"grunt-galenframework","version":"2.3.2-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^0.9.0","chromedriver":"^2.27.2","galenframework":"2.3.2","geckodriver":"^1.4.0"},"devDependencies":{"conventional-changelog-cli":"1.2.0","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"1.3.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release:pre":"npm run test","release:post":"npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:minor":"npm version minor && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:patch":"npm version patch && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"d5ad129917364f39f1b2c08609e595db0c08b974","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.2-1","_shasum":"ae6b38deebbded0fb1849fd602e404df5df880f8","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"ae6b38deebbded0fb1849fd602e404df5df880f8","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.2-1.tgz","integrity":"sha512-IaSZH5SxVvkKgHOFIf8ZrtgJJbcH3G3Bw8mDLEngsr4dG6G++RCQJ87Sj2/rTqaUbaDXGan8ALbMjk6ZKroL3A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3ACwLJb9RBi548sAOcIZOs3Hv61T2eLECEohbD8yIDgIhAKjUc7kfhLAxHRzRiHiuFyGk1qQZx29f2QqbIdhDei5J"}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.2-1.tgz_1486655714425_0.5062467362731695"},"directories":{}},"2.3.2-7":{"name":"grunt-galenframework","version":"2.3.2-7","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^0.9.0","chromedriver":"^2.27.2","galenframework":"2.3.2","geckodriver":"^1.4.0"},"devDependencies":{"conventional-changelog-cli":"1.2.0","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"1.3.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release:pre":"npm run test","release:post":"npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:minor":"npm version minor && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:patch":"npm version patch && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"db39def3ca161b2781c0ccec0efa1a1f1435a4c5","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.2-7","_shasum":"ee7760eef64f49f8b163b217ca0e83f18665148e","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"ee7760eef64f49f8b163b217ca0e83f18665148e","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.2-7.tgz","integrity":"sha512-pHyQuff9pNk/t70mG/KVO6l9rmvbUB1tmkTH5QVrQm9ZZS9oN7gkU1shLkKJPOF05puP0Lc4sPwKR/EUbzSzdw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBNBAWwM59//LQMEjauZCQoiWIQvWShAWY5YtI6XlzK2AiAxUkpoL505nAW+KEoO8fA9JoDOpyFwzYSwR84clPEc4g=="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.2-7.tgz_1486715181785_0.7162400798406452"},"directories":{}},"2.3.2-10":{"name":"grunt-galenframework","version":"2.3.2-10","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^0.9.0","chromedriver":"^2.27.2","galenframework":"2.3.2","geckodriver":"^1.4.0"},"devDependencies":{"conventional-changelog-cli":"1.2.0","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"1.3.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release:pre":"npm run test","release:post":"npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:minor":"npm version minor && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:patch":"npm version patch && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"4e03fc01885a65b6dfc37ced2fe3ef471ccb30e7","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.2-10","_shasum":"5480f5e7daebadb4896edfd04c84a85504b317d7","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"5480f5e7daebadb4896edfd04c84a85504b317d7","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.2-10.tgz","integrity":"sha512-UIaC9ad+aEPy5UHV1ut6ox+OMoyd/h826ugBIddijrgMEqJ9n1qaeVs6nMzd30uK/NriWFgUBJSbs8ck1dvSbA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAitzM1o/GvNyIGO8P4TqGdGFvVDIysEslwnXM884Dv6AiEAm68x225ffdVREGKszE0Z/rpwPplLFROOmzOMslVdDQM="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.2-10.tgz_1486715471434_0.8037878856994212"},"directories":{}},"2.3.2-2":{"name":"grunt-galenframework","version":"2.3.2-2","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^0.9.0","chromedriver":"^2.27.2","galenframework":"2.3.2","geckodriver":"^1.4.0"},"devDependencies":{"conventional-changelog-cli":"1.2.0","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"1.3.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release:pre":"npm run test","release:post":"npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:minor":"npm version minor && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:patch":"npm version patch && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"3c23062c62932b72cb6a9085f04676c4628c9904","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.2-2","_shasum":"1ba3b739e3d618af134192549c8c0c6c03f8c430","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"1ba3b739e3d618af134192549c8c0c6c03f8c430","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.2-2.tgz","integrity":"sha512-IjYmV9YzAvJnpW90Nikoxe94XgJ+hDBbJXXtuDC3MAMnKyzAoK8H7UXUzlToCqu9awbFZ7gCnop3sivLqpIU5w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnP3R41tm+/fMiBI2Za8M2Cjm9upk8k6TrxYpuLrmJ4gIhALz0PmQpB2MwTy3EyBiXi63Z5GyIWlXfGOP6gPmu9CpN"}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.2-2.tgz_1488167277810_0.5297485166229308"},"directories":{}},"2.3.2-3":{"name":"grunt-galenframework","version":"2.3.2-3","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^0.9.0","chromedriver":"^2.27.2","galenframework":"2.3.2","geckodriver":"^1.4.0"},"devDependencies":{"conventional-changelog-cli":"1.2.0","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"1.3.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release:pre":"npm run test","release:post":"npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:minor":"npm version minor && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:patch":"npm version patch && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"c17880611988b66decdee8167d26300bd2645666","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.2-3","_shasum":"c03f2c26a8a656d491b8a407165a3ef707ebcfb4","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"c03f2c26a8a656d491b8a407165a3ef707ebcfb4","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.2-3.tgz","integrity":"sha512-8XRFjYbPooZbHRcknXP+4BjL54JUxOjFKH9zNSoevKfW3oU84B8VfywB/sYjs4xYSxar8S5bujRQ98D+UjKMVQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDN8/e/AR/VCgM8LMa0epl371cSp6ldJafGhuydBZPWMAIgCOOF+jYwrfWVnTZT2gq8LhmO8Z8hlnza/DER1TMkzr0="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.2-3.tgz_1488168042011_0.3514573532156646"},"directories":{}},"2.3.2-4":{"name":"grunt-galenframework","version":"2.3.2-4","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^0.9.0","chromedriver":"^2.27.2","galenframework":"2.3.2","geckodriver":"^1.4.0"},"devDependencies":{"conventional-changelog-cli":"1.2.0","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"1.3.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release:pre":"npm run test","release:post":"npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:minor":"npm version minor && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:patch":"npm version patch && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"7ae4666c1975953a30199cd58552ce23fd228522","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.2-4","_shasum":"a85017303ddc4842eb4518ef04592e979da6b4ca","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"a85017303ddc4842eb4518ef04592e979da6b4ca","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.2-4.tgz","integrity":"sha512-MZTB7sheXTHpm4N3kTVxlfwMGJi5ZGdRdlkEndecj7P4UclCgtZ7RS3HLCxT/yU/hK3yU8+7no9D4Y3PlJEL5Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlXRVdU08ROQJY4lC50ZYzRAE3vRZQUk/QHrWJF6iEHQIgR1aXasxdwTlpO71PBl/H+XSGUZFgq6Lb7Y4xUkQ7KFE="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.2-4.tgz_1488180307700_0.6507693284656852"},"directories":{}},"2.3.2-develop-11":{"name":"grunt-galenframework","version":"2.3.2-develop-11","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^0.9.2","chromedriver":"^2.27.2","galenframework":"2.3.2","geckodriver":"^1.4.0"},"devDependencies":{"conventional-changelog-cli":"1.2.0","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release:pre":"npm run test","release:post":"npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:minor":"npm version minor && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:patch":"npm version patch && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"267a10f5701995ad5f0d2e00e8f0a5886e59a1bc","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.2-develop-11","_shasum":"7430bfd9932e193519ac700110fccfc6235ddbf2","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"7430bfd9932e193519ac700110fccfc6235ddbf2","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.2-develop-11.tgz","integrity":"sha512-yimKG4vYPEsjmak5uFF6yyBm2QRvLCOjfDK1ZvkK8S5PmuTkeQcAhSZVfm/pcYhNckuHNwNR+BRAT18roO3Jaw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID45mJP0Aboog5JV1g0ZDHMxpqSX4uL4FIt0So9IzyiEAiEAjHLxuwgV84g1De59HQx6WJAKNHF/4tBNhxhJJDQ/n1Y="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.2-develop-11.tgz_1488180556837_0.5297260428778827"},"directories":{}},"2.3.2-8":{"name":"grunt-galenframework","version":"2.3.2-8","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^0.9.0","chromedriver":"^2.27.2","galenframework":"2.3.2","geckodriver":"^1.4.0","resolve":"1.3.2"},"devDependencies":{"conventional-changelog-cli":"1.2.0","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"1.3.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release:pre":"npm run test","release:post":"npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:minor":"npm version minor && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:patch":"npm version patch && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"ff01fb372afb81f362c1e4d2a5f8796be4b38659","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.2-8","_shasum":"f019c8f2d41d396de4fe39980d8bf73133e2959f","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"f019c8f2d41d396de4fe39980d8bf73133e2959f","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.2-8.tgz","integrity":"sha512-vJF8AvdMui9ZZaUoNzB4HUFbUmgAISkQNSMf9ETJjBDCJroCutJlUS8RzugFuPHSphuz0J/qwzwvZhnp/5IXPA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLHl52LMQQ60xwJ2/pgEW7JX82bJ5h0t1p/liCbKNqNQIhANzwRZlEjDFa/EyFlblbCridRcpi1U7QxUB2K+2js1cQ"}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.2-8.tgz_1488183135303_0.5972729027271271"},"directories":{}},"2.3.2-9":{"name":"grunt-galenframework","version":"2.3.2-9","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^0.9.0","chromedriver":"^2.27.2","galenframework":"2.3.2","geckodriver":"^1.4.0","resolve":"1.3.2"},"devDependencies":{"conventional-changelog-cli":"1.2.0","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"1.3.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release:pre":"npm run test","release:post":"npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:minor":"npm version minor && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:patch":"npm version patch && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"895896c0645aed31300def044a84eabc9f68ea2c","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.2-9","_shasum":"f83e55eed4565fcb5ff8f2a347aec9a19987629f","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"f83e55eed4565fcb5ff8f2a347aec9a19987629f","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.2-9.tgz","integrity":"sha512-K3bGpLN5BaiZ68tn7V+vM8tI12z+jq3CWtjETydzV1vbpXK8styR4hUPh0S4iBcuKzpYaja1HIfSWsv7Qn5iJw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG9H8ZjBlzeR282R8KflQt2fqSYikIx8UhjPLSRpXTLRAiBOYbJEo4C4gi/Bo5g7rBuSZkBe/UQBz9PbfuhGFfcl7Q=="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.2-9.tgz_1488183632017_0.5355082745663822"},"directories":{}},"2.3.2-11":{"name":"grunt-galenframework","version":"2.3.2-11","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^0.9.0","chromedriver":"^2.27.3","galenframework":"2.3.2","geckodriver":"^1.4.0","resolve":"1.3.2"},"devDependencies":{"conventional-changelog-cli":"1.2.0","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"1.3.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release:pre":"npm run test","release:post":"npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:minor":"npm version minor && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:patch":"npm version patch && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"e97af1b3080c989a1657df5ff1b798705eaf5ac0","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.2-11","_shasum":"2357f3bd2fb0dbbb05eb2648301950399ffe00ef","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"2357f3bd2fb0dbbb05eb2648301950399ffe00ef","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.2-11.tgz","integrity":"sha512-HaWFLxVuJZxjW3Ues5rAfE9ZcADxqxHHkiGQerp66M8GehOh8cDDmZjGNQRuO6Fh+uWR81hH8aCy5sCNXPY+Aw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBlJEdUfiewvJZOwwKSBkG7Dmy938MGxg8u02OjX5woaAiEA8+veGs9/DWHjTwXNs2T/XrAuXCJqJAorSBGjDdu1/KE="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.2-11.tgz_1488448846450_0.10198516654781997"},"directories":{}},"2.3.2-develop-12":{"name":"grunt-galenframework","version":"2.3.2-develop-12","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^0.9.2","chromedriver":"^2.27.2","galenframework":"2.3.2","geckodriver":"^1.4.0"},"devDependencies":{"conventional-changelog-cli":"1.3.1","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release:pre":"npm run test","release:post":"npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:minor":"npm version minor && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:patch":"npm version patch && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"85e20a8875fc3865ff0fadb4db00ad6973f3e3d7","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.2-develop-12","_shasum":"8fad845594fb39d9f9a19ca0dcb9c2eb90e0e9b6","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"8fad845594fb39d9f9a19ca0dcb9c2eb90e0e9b6","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.2-develop-12.tgz","integrity":"sha512-G4kTu2d8K92ZPDWb59Ja5Z7mgMz7oI6oG3IONLTtdVn+POC9gufJag/zjcV03w8QhmjTxEjwUg9OjArq+HYYPQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF/X2RLmCFj9vJKXUweZLxdpNmFY99xABaxx+99bThKKAiAVTh8tA/l5UkH49ICACOGB3LyfqCVxyTTKUdSmU5BqYg=="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.2-develop-12.tgz_1489396021703_0.6103961882181466"},"directories":{}},"2.3.3-develop-13":{"name":"grunt-galenframework","version":"2.3.3-develop-13","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^0.9.2","chromedriver":"^2.27.2","galenframework":"2.3.2","geckodriver":"^1.4.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.1","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release:pre":"npm run test","release:post":"npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:minor":"npm version minor && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:patch":"npm version patch && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"8427f643858d4991363f79dcd8352aaa7a830e00","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.3-develop-13","_shasum":"1ee54cc990bc55cfc3055c537e18212c75c0e252","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"1ee54cc990bc55cfc3055c537e18212c75c0e252","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.3-develop-13.tgz","integrity":"sha512-Q2rZjcpQUXM/mWeBa6H2Ayvy56eOrHyG6ieSDchoZrBgMBMwttth6W2woHl9fHdJgRAl50ntT6Jd5UM35GhxWg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDp2k8YUJg8mGbhn1WMH/zrKUY2iUuSU0vvrKjWYmGmpwIhANAtib5lMdOyuv0ZjB1elMKoqH7FUcvxQp9DOcbyw1hF"}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.3-develop-13.tgz_1489396117649_0.18054184387438"},"directories":{}},"2.3.3-develop-14":{"name":"grunt-galenframework","version":"2.3.3-develop-14","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^0.9.2","chromedriver":"^2.27.2","galenframework":"2.3.2","geckodriver":"^1.4.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.1","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release:pre":"npm run test","release:post":"npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:minor":"npm version minor && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish","release:patch":"npm version patch && npm run release:pre && git push origin && git push origin --tags && npm run release:post && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"8427f643858d4991363f79dcd8352aaa7a830e00","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.3-develop-14","_shasum":"e4acbed15988b0cc8ee29a342e7e83db59614cdf","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"e4acbed15988b0cc8ee29a342e7e83db59614cdf","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.3-develop-14.tgz","integrity":"sha512-mHG6DACnTn+pg59u69GKiZQQAt/oZD6L1wUUpil3sOD8ezGsEQPkS1XlH48m/Pp6SdYal9CA754ERSQ9V0rYPw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPO+YLRocDzwOG14foisfkh1oAuJOimzhN6kNNGq1shAIgCujiiASzLBg60kZnGSRIYVNIVALS/JDPnEQMqtel2W4="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.3-develop-14.tgz_1489396354069_0.4921934041194618"},"directories":{}},"2.3.3-develop-15":{"name":"grunt-galenframework","version":"2.3.3-develop-15","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.28.0","galenframework":"2.3.3","geckodriver":"1.5.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.1","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"4912e5685665cee97077ef71d9c5385b8da81774","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.3-develop-15","_shasum":"830ad56a9d0da086bfadb31052985796b3a19cea","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"830ad56a9d0da086bfadb31052985796b3a19cea","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.3-develop-15.tgz","integrity":"sha512-zSAtNmSbCDtzQ8NSqDhMnroRyy2BEZAc5z6kEVMv7fpsdhy7/Dg0XSXinKTmkFDHEz8f5xyh/kXWl1O4lfSTHA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDt1pWeQZnMyBp0zOhuaWkZqLR5mC8Fu4ZBeZWgE4gWKwIhALjTjCFj1U/tVJlbw80Y67iF6Zn7DKda8bN+pAsDOtCI"}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.3-develop-15.tgz_1491188000226_0.5895890621468425"},"directories":{}},"2.3.3":{"name":"grunt-galenframework","version":"2.3.3","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.28.0","galenframework":"2.3.3","geckodriver":"1.5.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.1","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"9a4cc423455ac64ea401ea42c4f15f8cc4ba19b5","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.3","_shasum":"201d5b67c90289bbfc5a701e036ca4ccf49878c7","_from":".","_npmVersion":"4.0.3","_nodeVersion":"6.9.4","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"201d5b67c90289bbfc5a701e036ca4ccf49878c7","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.3.tgz","integrity":"sha512-6yeUEU1XDpI96/cfpl893HjXBLgH2lkt2ZaG3oeJuzkzVD/Jh7VIQYDwRdyEXtTIaNE4rVGtrNaT41jHRWo+Pw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICcSMqQHMMCRG8InR7E+BWi0BaHUqiX/m2JoBExnZBUoAiEAu12yk+/ounkdDltNoKtajBJJtZ6gdpn6AZ6q9kOHoQI="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.3.tgz_1491191073341_0.7181705413386226"},"directories":{}},"2.3.3-develop-16":{"name":"grunt-galenframework","version":"2.3.3-develop-16","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.28.0","galenframework":"2.3.3","geckodriver":"1.5.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.1","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"9a4cc423455ac64ea401ea42c4f15f8cc4ba19b5","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.3-develop-16","_shasum":"34139a381fd52c239389111b63f52db7e84cd98d","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"34139a381fd52c239389111b63f52db7e84cd98d","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.3-develop-16.tgz","integrity":"sha512-3t34AChKPNjVcxfCOO7HAg/zJRoblCl2GdQFcl6iLoJgGtByfLafUDLUI3np1cn6mQ1jzlYLOCHhan0bCf8nBw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBy3WE+5mwOP5hH9N9OHibIct41k5masw+nFcrrY85umAiA0PAqOL0qfJcPNyvL+McdBFeHYW14GbZ5OlGCO52Bjkw=="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.3-develop-16.tgz_1491191108430_0.21191818406805396"},"directories":{}},"2.3.3-master-9":{"name":"grunt-galenframework","version":"2.3.3-master-9","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.28.0","galenframework":"2.3.3","geckodriver":"1.5.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.1","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"9a4cc423455ac64ea401ea42c4f15f8cc4ba19b5","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.3-master-9","_shasum":"6339a6376ccfb7fe793b90abe442a7a46acf4ef8","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"6339a6376ccfb7fe793b90abe442a7a46acf4ef8","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.3-master-9.tgz","integrity":"sha512-OV7mAjRcgcCw0Ln563ZHbUsiVNtmZ+ICVf+drYBUVbIOw6GY1BSzKHpBCFfPy2b1TXmDQP88K4FArkm4Vabqzw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFN1wa0PBw2SB0X5w+BBrwr/ImIpndE8pxfr89LprkaAIgQ6UjiJErofeShptKlgkyNGXMujk3yAebffCXITKWBVs="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/grunt-galenframework-2.3.3-master-9.tgz_1491191200067_0.13526607863605022"},"directories":{}},"2.3.3-master-10":{"name":"grunt-galenframework","version":"2.3.3-master-10","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.28.0","galenframework":"2.3.3","geckodriver":"1.6.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.1","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"56ac4b803064796849bcd8b3b16050abb47ade01","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.3-master-10","_shasum":"410a5b8e5d804b507a9bc10eaa2ebbdc50e216b0","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"410a5b8e5d804b507a9bc10eaa2ebbdc50e216b0","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.3-master-10.tgz","integrity":"sha512-tpSbPGUqXvKUeWm7aH5ErQIOBPkaH5HLmOUpatqoI1Kwgceo1g1MiLfgbHgbwCt6TlfFZAVGRcEE7jXEx6tYfA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG6vlt4pwZq5nUd7J9PR7XRNw85wm2Vp4XHaShh4peToAiBL9ibhOyMclnjw08i9R62uJ6JThnJpZFGzIRP5OjBA/Q=="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.3-master-10.tgz_1500521849943_0.3390514641068876"},"directories":{}},"2.3.3-develop-17":{"name":"grunt-galenframework","version":"2.3.3-develop-17","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.28.0","galenframework":"2.3.4","geckodriver":"1.5.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.1","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"097fd7b3cde02be3b030331abc311cc487758b7f","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.3-develop-17","_shasum":"b87512b863435a1fa80ccb603e093734ef03dbcc","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"b87512b863435a1fa80ccb603e093734ef03dbcc","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.3-develop-17.tgz","integrity":"sha512-evXoV0qcRoumCQ+RE6/qQOk1YkFw6v1nkpfZcSLRUO1TAav9VEzD1rFsCHdmepJTAtsaq1xiEXClQqJWnZNcyw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFWNLuEsQ5r3UjSwkJkYXQTOUSOiiNuIw/M91s252mV+AiBH1P7DYFXLTkbTObqflmtOv/N/o4miNEFFbrG1A5wWQQ=="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.3-develop-17.tgz_1500627611945_0.7081176196224988"},"directories":{}},"2.3.3-develop-18":{"name":"grunt-galenframework","version":"2.3.3-develop-18","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.30.1","galenframework":"2.3.4","geckodriver":"1.8.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.1","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"620641efdb4703a3000fe2196c2fa429dbbfc228","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.3-develop-18","_shasum":"186c0d983a1b69d17257a5fd8a622e3fd27eb002","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"186c0d983a1b69d17257a5fd8a622e3fd27eb002","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.3-develop-18.tgz","integrity":"sha512-M3GGAK9T+gN5bqtIknoUPaSmy3nZDxfONNu/3ZLAyKzDwvMqDCovi9mVytXpCRk67pVKR9p2pnGBzSDWA3Jysw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEwS1F9gcYDJ61hikBtV41kAZpMIoFFNm4ox5Zr7XvREAiAwCYwVA4Mqi2BTQoAIhDkpZdjVtQcGt5pZZQ65KAiNiQ=="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.3-develop-18.tgz_1500630785748_0.29081516969017684"},"directories":{}},"2.3.4-develop-19":{"name":"grunt-galenframework","version":"2.3.4-develop-19","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.30.1","galenframework":"2.3.4","geckodriver":"1.8.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.1","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"b08724a161b85503496a75e31f55dc92fd5d9988","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.4-develop-19","_shasum":"959a54aac42c6581f1db912b2e75e99d0bfb220b","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"959a54aac42c6581f1db912b2e75e99d0bfb220b","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.4-develop-19.tgz","integrity":"sha512-GQr4s2wTffMlf1KNbDlWi9O79bCYOo47+DF6RI+wEtAy4pFP1dcjVf9JWWQ0O2hyRjXP79Q7/lfmE/U0phrXsA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPp8YaK6WFByHuxfoRgnk8nSOv9O690e+7HssMUU1jSwIgBBFHZiEQ0se+kEpM9zFqH0Ml4fn+dvyyWQKGqaDPoIw="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.4-develop-19.tgz_1500630927828_0.1268156508449465"},"directories":{}},"2.3.4":{"name":"grunt-galenframework","version":"2.3.4","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.30.1","galenframework":"2.3.4","geckodriver":"1.8.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.1","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"b08724a161b85503496a75e31f55dc92fd5d9988","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.4","_shasum":"fa362cf86891004cca380734c97c147a9dc2c365","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.1","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"fa362cf86891004cca380734c97c147a9dc2c365","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.4.tgz","integrity":"sha512-nZwJQM6gLGa1p1PR/hMYB9FNkhk9ccekTBizt77Q9yvA2DcsLlH2EFv1ILao3mn2x3eXSx74RTUnp0m5aPoW4A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBn2RM4uJZBCeH7OYfmGouRSuYD6WTqpxtRQkGz4w3pgIhALlsxxTpjGVB58u5Xxa2016hq7y/3Q3UTyB0Fib76mPn"}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.4.tgz_1500631121116_0.8835278525948524"},"directories":{}},"2.3.4-master-13":{"name":"grunt-galenframework","version":"2.3.4-master-13","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.30.1","galenframework":"2.3.4","geckodriver":"1.8.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.1","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"86e3228948ba2910476a5e74dffd510de930d4b9","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.4-master-13","_shasum":"41ecbbba19096c65395cb1a880c4f19fa025afff","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"41ecbbba19096c65395cb1a880c4f19fa025afff","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.4-master-13.tgz","integrity":"sha512-7pHGee8GzxpIQx4gooNCU3YtK4NrUm5avAvd8vAwoFF5l4RI3iNeSzCIoJkdGJz6C/a4om1dgclVEq2L6Qqeig==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEd24wMjNFxmRWhVH76xuieurL2Het+EeV/T3DFMhK4yAiBxtScJMbxbHwr095S9ppTivV6tBKG46VFSQJe9Yw2VfA=="}]},"maintainers":[{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},{"name":"michaseel","email":"michael.seel@nexum.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.4-master-13.tgz_1500631203009_0.607072331244126"},"directories":{}},"2.3.4-develop-20":{"name":"grunt-galenframework","version":"2.3.4-develop-20","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.31.0","galenframework":"2.3.4","geckodriver":"1.8.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.1","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"bdcd8b81da1b62c9a6940076604db3b62e76bd8b","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.4-develop-20","_shasum":"762c32dc5f541cdf3ee911a92749d16b5bfa0a75","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"762c32dc5f541cdf3ee911a92749d16b5bfa0a75","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.4-develop-20.tgz","integrity":"sha512-SsAfQbvt33gvBEaoBy7MMm2nkcsMhUHXlmGv1l8wMe1suK2G7GebJdlODxAyv9qvGY3ZWi8Irw79S9F68o0jWg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAtrmSr9FfznWZtyroEoYN8cOJ4RS1JcGee2JSw6rn4/AiA6NgEg3Wg/qpjdt1s8eVTjaSjCgXBvxQAYnng+oMN7CA=="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.4-develop-20.tgz_1501037990782_0.6809377761092037"},"directories":{}},"2.3.4-master-14":{"name":"grunt-galenframework","version":"2.3.4-master-14","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.30.1","galenframework":"2.3.4","geckodriver":"1.8.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.1","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"e2f922024b0a67fbb092b588438c5dd41c4fd964","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.4-master-14","_shasum":"0bde901f617afdc32b596a9a78c6a71a2b64865f","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"0bde901f617afdc32b596a9a78c6a71a2b64865f","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.4-master-14.tgz","integrity":"sha512-YmBzUT0KkObe3VRl3u1vXaj2/6Ff60MIUJBcOuMEUmn9G0A8s6P+KQs1BxOyvk0Rt5WKgF5omcYGSpiyjZdqDQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAZF9uVJV5U9j7k7JkcyOYH7+/1Botz2xum17BInbmSiAiACe8ItT7dgjP7dW3LYjFBNwnYJ1wHQLOmBm6i8Vt0l8Q=="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.4-master-14.tgz_1503483852017_0.23803476174362004"},"directories":{}},"2.3.4-develop-21":{"name":"grunt-galenframework","version":"2.3.4-develop-21","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.31.0","galenframework":"2.3.4","geckodriver":"1.8.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.1","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"a115c73d0337d564cd3a881ea115ac72e9e682e2","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.4-develop-21","_shasum":"90a088ee7966c0a022bc940d00c7e1742d14b563","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"90a088ee7966c0a022bc940d00c7e1742d14b563","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.4-develop-21.tgz","integrity":"sha512-i1lrZlNYdmp3TSB7yI0fw94zGrdgIANBFOxqx5PeRwG/JpQYK4swSjN22H9O/Pyd6CtUCVFbTGFSio1NcjQceA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbwRljCRB/o8O3NQQreO5CUNG1l1LSJCFc0rSziTSmiAIgX8FutUSRWxzoFuEikCfVLwVWy+fqYc61+DhsY59Jlsw="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.4-develop-21.tgz_1503483915917_0.7688451295252889"},"directories":{}},"2.3.4-develop-23":{"name":"grunt-galenframework","version":"2.3.4-develop-23","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.31.0","galenframework":"2.3.4","geckodriver":"1.8.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.3","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"21a507335cd3ef9aae12f83fec8b987ea83d313e","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.4-develop-23","_shasum":"2f8a1274e46e5c25a15ae23df75787f70e338d0f","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"2f8a1274e46e5c25a15ae23df75787f70e338d0f","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.4-develop-23.tgz","integrity":"sha512-pBOTdDuFFc59ND+Q0g6c+R94f7e3WXlINjN11xXLfwBYUAffvyYJFrsCOVUL4J07/LxjZL4NDmZDAnc1Gj74ZA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEFh47sZQsq84rPFVD+MnXbseCK/sL1y4BXL3idjXY3PAiEAy3y2wnQwY4wEH5XLKVOeJgxLWHgaKAwickLf4KTKWaU="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.4-develop-23.tgz_1504253019482_0.5469874809496105"},"directories":{}},"2.3.4-develop-24":{"name":"grunt-galenframework","version":"2.3.4-develop-24","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.31.0","galenframework":"2.3.4","geckodriver":"1.8.1","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.3","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"b4946c2eab440bb23833c1d223cdc840d43b8721","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.4-develop-24","_shasum":"9b72bc62c3c47691d66d96adf2ebe3418ea28cf0","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"9b72bc62c3c47691d66d96adf2ebe3418ea28cf0","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.4-develop-24.tgz","integrity":"sha512-mpDUVDCj3MooAjUE2zXPE8vGPDS0gBH6im7uDSi716Ml+8lRz2ChvgPYs6Xpv5N8OMk6uKw7gFPd1JV3brojhQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDx7154Zosf/94T1btj4JPa0q17D6ifMwsa3HCz26sHFgIhAIQlrL3/2HGqe9MZkO6Qbqj1kTrMzGo1HvqvRH2o4MKh"}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.4-develop-24.tgz_1504253605536_0.9282780708745122"},"directories":{}},"2.3.4-develop-25":{"name":"grunt-galenframework","version":"2.3.4-develop-25","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.32.0","galenframework":"2.3.4","geckodriver":"1.8.1","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.3","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"17ea3515b3ea25e4b4762902e35e0909dc3e68d6","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.4-develop-25","_shasum":"51caeff00cf2e872e9b909c3ca271b6e9aaf4159","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"51caeff00cf2e872e9b909c3ca271b6e9aaf4159","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.4-develop-25.tgz","integrity":"sha512-SsYT10hZgVTp3RtwMD6/st/uqp9ARy4JEtMYAF2gJJcL4/plaYU9i3vAbawS77tfRMxngZqBmN2SjyfHLh7oxw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEFmSy5PVkj5RYBZnygyCFbewZbeUgXbavfQcv72URtXAiA37JeO1p9iyN6diIDfV2SkjkYJIoc6qcqR753rnTPdIQ=="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.4-develop-25.tgz_1504253663395_0.46559431427158415"},"directories":{}},"2.3.5":{"name":"grunt-galenframework","version":"2.3.5","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.32.1","galenframework":"2.3.5","geckodriver":"1.8.1","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.3","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"657e4b903051f9fbe8ef15c96de5dcd6fcce08f4","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.5","_shasum":"bc98168a4d669b8b1d7f6c28b0fa6def3a6b2bfb","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.1","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"bc98168a4d669b8b1d7f6c28b0fa6def3a6b2bfb","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.5.tgz","integrity":"sha512-mELFNzQFsirMxjbC42diCAPgIBvfASV35XCJG5thgVpDjehYRb61cAoeIP9MDwD+7J+FE7TlEVpKA48pm4/XPQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKGwT/vRdl/+Nu1kp4kXmhonLN+IltdBl8vCI04OAbQAIgMEZL7zBbKmYwbKBWdEviA56r8QdZ09I8ZoqOAgkG/ck="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.5.tgz_1504768012199_0.08230565814301372"},"directories":{}},"2.3.5-master-15":{"name":"grunt-galenframework","version":"2.3.5-master-15","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.32.1","galenframework":"2.3.5","geckodriver":"1.8.1","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.3","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"657e4b903051f9fbe8ef15c96de5dcd6fcce08f4","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.5-master-15","_shasum":"a723e0150b85ff6bfa585cc7ba9ed896f01f39e5","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"a723e0150b85ff6bfa585cc7ba9ed896f01f39e5","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.5-master-15.tgz","integrity":"sha512-3tqj1so68mHGKM9z2kgxfy74UOfGiyBKmMHF1CnaZqfBrT00CPo7EOFhBcc0mVfrXKaFo5Sz98lFIeOL2xb46w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjMmArhW3+HLgaol/MXPnRyT/8/WwXfWory2F32qho3QIgNfgO8FbvbqxqcBjBBONkPYO04HcGRLF/gsSCAAjFkkk="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.5-master-15.tgz_1504877349957_0.007766617927700281"},"directories":{}},"2.3.5-develop-29":{"name":"grunt-galenframework","version":"2.3.5-develop-29","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.32.1","galenframework":"2.3.5","geckodriver":"1.8.1","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.3","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"657e4b903051f9fbe8ef15c96de5dcd6fcce08f4","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.5-develop-29","_shasum":"cd4979c779f67d4cb3d7170d2cfd5155a401501b","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"cd4979c779f67d4cb3d7170d2cfd5155a401501b","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.5-develop-29.tgz","integrity":"sha512-M+dy7+FOkYiKfRba9/nSr3U6lD6s2UkPgnXS4nsnZpWLq3Mn4q9p5CecAA2W0pbl6bAfxuM9PzxGLQWxl0gtdA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDPaIiKVyXfd6sK/Zkh3PUV2T76IODl/PN6/h+Bbhg06AiANw+hHVCtc0Ro1hIKUBHkqBsK93hR3iQbhtMCt0jvimg=="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.5-develop-29.tgz_1504877400897_0.9712008568458259"},"directories":{}},"2.3.5-greenkeeper-conventional-changelog-cli-1.3.5-4":{"name":"grunt-galenframework","version":"2.3.5-greenkeeper-conventional-changelog-cli-1.3.5-4","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.32.2","galenframework":"2.3.5","geckodriver":"1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"88f54510c763c5c0ceecd860522ce1b3213d6a33","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.5-greenkeeper-conventional-changelog-cli-1.3.5-4","_shasum":"664e7143207fdd9dea8816ccf997286082fdc1e6","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"664e7143207fdd9dea8816ccf997286082fdc1e6","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.5-greenkeeper-conventional-changelog-cli-1.3.5-4.tgz","integrity":"sha512-FZfRdYWUKgxrgKAahpgQ1m1lFz5o/8c4Z/2SzBH0UP9yR4I13m1RhyxGfja3WSBfeWO7lMIenbxaSKIr9MYLYw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDCgjXdxKSPskHH9L6taTxhKQ7GSQ20js1/TPNOo7JcGwIhAL+JLqvc6fbnhkInxMWQE1hQPOAAntUWkB2gaft4ufQn"}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.5-greenkeeper-conventional-changelog-cli-1.3.5-4.tgz_1510646549109_0.4906910613644868"},"directories":{}},"2.3.5-develop-40":{"name":"grunt-galenframework","version":"2.3.5-develop-40","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.32.2","galenframework":"2.3.5","geckodriver":"1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.0","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"fa944dd7d593aa550d1c4416fce5b79b7450405f","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.5-develop-40","_shasum":"a149af53f598cc6a8945e12ce00ab0777da23c85","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"a149af53f598cc6a8945e12ce00ab0777da23c85","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.5-develop-40.tgz","integrity":"sha512-eYyeRT9uqnMxtTxEif81smwDp7i/+Umz1I9FNL2WY2MuWhhewMQVfVUAOfw/Ne7nY1uJtVT0tZs9Zd2VPDro6Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA22yGafshyVnaML9HV37rVbvl+121YC/Z42nnD+D1oKAiBrHUDXZCt3yieMQ1+XqkvvakqfL7hRsS2Pmv4CO71xrQ=="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.5-develop-40.tgz_1510646990389_0.049561769468709826"},"directories":{}},"2.3.5-develop-41":{"name":"grunt-galenframework","version":"2.3.5-develop-41","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.32.2","galenframework":"2.3.5","geckodriver":"1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.1","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"fff5d0aec452f15c804b5e42d5ea56bf1eb9c3be","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.5-develop-41","_shasum":"f8ec2522505020a7e97989de9d77f3f3e06ee566","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"f8ec2522505020a7e97989de9d77f3f3e06ee566","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.5-develop-41.tgz","integrity":"sha512-lG4OPJkEtaTuXOzgt2WCn+6xgFMhQa2Fw7ryqET4GDjX5QkYJQTy73R992wPzHTFXWNbx0o2VqP5350obXOgvg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID0Avvc47Gexn10i3zx4Ic3/lV5irQWJkgEbDgZ6tz3WAiAk9bjGOdUSC9EjCFHJIgkVTQU0I0/mgPMejI7biKDX6A=="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.5-develop-41.tgz_1510647329362_0.1483827014453709"},"directories":{}},"2.3.5-greenkeeper-jsdoc-to-markdown-3.0.2-1":{"name":"grunt-galenframework","version":"2.3.5-greenkeeper-jsdoc-to-markdown-3.0.2-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.32.2","galenframework":"2.3.5","geckodriver":"1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.2","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"a6004a7a5b378ec9a91fdf313b98e40b6f8f75a8","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.5-greenkeeper-jsdoc-to-markdown-3.0.2-1","_shasum":"3fe02d84bf848a70325c476e5f7596bfe107f0cd","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"3fe02d84bf848a70325c476e5f7596bfe107f0cd","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.5-greenkeeper-jsdoc-to-markdown-3.0.2-1.tgz","integrity":"sha512-Ycoatib/EdxGiVKh2d436rbfOs5Z+7Vvd/99UVKyyJ7Iiy2scA4M0ugG3QQlHBbQhezCchl0+JcZlL51ugjFug==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDqqD3gJoi11Ljgvvr7jV9qVioze90/H9AP/4/ed/OcRAiAUb6rcDq211h9lledzl1s6n9zmo7mkxui4hPJqnMc/WA=="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.5-greenkeeper-jsdoc-to-markdown-3.0.2-1.tgz_1510658284580_0.6905030908528715"},"directories":{}},"2.3.5-develop-42":{"name":"grunt-galenframework","version":"2.3.5-develop-42","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.32.2","galenframework":"2.3.5","geckodriver":"1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.2","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"d8a28e47c1789ab84b021bb349a59d634c49e323","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.5-develop-42","_shasum":"c427f0be03ffe60caeea715140095506b26ad26a","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"c427f0be03ffe60caeea715140095506b26ad26a","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.5-develop-42.tgz","integrity":"sha512-Q1d1lZd+BoLXq/Uv+7zNpMHDH6E6A5hfQUvhwC9B1DmzwDND9bucEoC/Bmj6Wc/EUHRc80cfSYRtUkf9wrBTCA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIErQp70uT1QSa8FnCUK3uwhP+0HDeVatAET2Bimd/BMIAiAIi69P/0sVb0YamgAIQCuHjdCMD/HGhCmJzQXIcLF6/A=="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.5-develop-42.tgz_1510667000212_0.8711012196727097"},"directories":{}},"2.3.5-greenkeeper-galenframework-2.3.6-1":{"name":"grunt-galenframework","version":"2.3.5-greenkeeper-galenframework-2.3.6-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.32.2","galenframework":"2.3.6","geckodriver":"1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.2","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"bda57665064aa4fcb0fc040fd341e494536ab220","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.5-greenkeeper-galenframework-2.3.6-1","_shasum":"b09d5c2772b125a94bcb2537ea738b623df2877e","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"b09d5c2772b125a94bcb2537ea738b623df2877e","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.5-greenkeeper-galenframework-2.3.6-1.tgz","integrity":"sha512-F2Lcb7n68EQd7mlTtPQ/dcZeLRfjSjfEr/6qyJoXCYo7gKXeA2Oj7ZVUJa78C3cl5dC1Zh9sTIuBUwbSw/SmUQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDx6X3ptvLHacPhq6pZbExxCBiF/Yc6tYBrVRx/eXyFBAiEAoANz/eY21uwugxJFlhXhgVV/BjrAgWE2w/dhZQagPGo="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.5-greenkeeper-galenframework-2.3.6-1.tgz_1513374284481_0.2584790352266282"},"directories":{}},"2.3.5-develop-43":{"name":"grunt-galenframework","version":"2.3.5-develop-43","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.5","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.2","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"fc42090fa1815b7eabfdebb0aa259b2f8b304f9c","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.5-develop-43","_shasum":"7944dcc181d8c3bcdc72d87c1b873b66aaf300e7","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"7944dcc181d8c3bcdc72d87c1b873b66aaf300e7","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.5-develop-43.tgz","integrity":"sha512-JdUvFJ0P/Vja/2YXHBSJ1WKmXfjgF+mX9/MKX3TfjTahK3M5Ft+4O0L5kdHSi75RQVTQTSpxn1K9E04X1+jZjQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3oqnrbdrjC/QJpz4nWZsyEz0xLda+poTcl8wy2+QyqgIgGQpUeceEKBMKZADuv2s0gZvPNMoQn4EczB7XBr77vsU="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.5-develop-43.tgz_1513374726617_0.028464379720389843"},"directories":{}},"2.3.5-greenkeeper-galenframework-2.3.6-1-greenkeeper-galenframework-2.3.6-2":{"name":"grunt-galenframework","version":"2.3.5-greenkeeper-galenframework-2.3.6-1-greenkeeper-galenframework-2.3.6-2","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"2.32.2","galenframework":"2.3.6","geckodriver":"1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.2","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"bda57665064aa4fcb0fc040fd341e494536ab220","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.5-greenkeeper-galenframework-2.3.6-1-greenkeeper-galenframework-2.3.6-2","_shasum":"626a5a59225795b70d1398bf3a8b02f7a60f58a0","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"626a5a59225795b70d1398bf3a8b02f7a60f58a0","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.5-greenkeeper-galenframework-2.3.6-1-greenkeeper-galenframework-2.3.6-2.tgz","integrity":"sha512-tcwtf+27212vLF16hF23iTvTs5pT7nuQZfZeM8Px5Yu/YAEiaD2jm0a982VH1JpK0vk4dbz4Tji9VA/WtTy6mw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDV05wf2Fieh8GsxNPD2hW14406fV+tvkOFI/tu9n+H6QIhAI+OZ76cg3MGd6S5xBUjo7/9xzUw6nbg6Iij+lG0y3wo"}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.5-greenkeeper-galenframework-2.3.6-1-greenkeeper-galenframework-2.3.6-2.tgz_1513381809321_0.6730230620596558"},"directories":{}},"2.3.5-develop-44":{"name":"grunt-galenframework","version":"2.3.5-develop-44","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.2","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"57a61ce7c649711544f6fd9186d139fa6d36f7bf","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.5-develop-44","_shasum":"6dee65284861a14cb8887cad10408a3e0581a24e","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"6dee65284861a14cb8887cad10408a3e0581a24e","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.5-develop-44.tgz","integrity":"sha512-6wNae53UdIsUeH1HScCDNzNvMqppfA81T45q0mVPmPuC05osCd1vN5wE++aKn0VZzeUus+w93DS+9GtpPduqwg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC32pXtyhPKl51RerY3rHECimkTAIxVd0CGPTZekra+DAiBh+5nXIevW5/RIMQJSHrlKXtewaxUOXWNgcCxT7XSX0Q=="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.5-develop-44.tgz_1513381864381_0.33653420535847545"},"directories":{}},"2.3.6":{"name":"grunt-galenframework","version":"2.3.6","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.2","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"3c0294d7db221ce101b38afa9fe249441efd1721","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6","_shasum":"c9770f4866e3c9d126239676b13d0632aba9e1dc","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.1","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"c9770f4866e3c9d126239676b13d0632aba9e1dc","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6.tgz","integrity":"sha512-hTDGajvscXQSA676gwLusMHeOJ2OQvF2q096/zVjRkPyCWSPO00w18bwwiAS5CczvIQH6QldUv96K/YB2no8iw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYElsHrRHI1qs2LirR384pLmRdG18ST3cz7owtUwuVswIgU1LDl6Y2bkdk+zxiRLo4MfhDwBiO1v6O3Q2zWQQbHNw="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.6.tgz_1513412344992_0.7752024331130087"},"directories":{}},"2.3.6-develop-45":{"name":"grunt-galenframework","version":"2.3.6-develop-45","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.2","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"3c0294d7db221ce101b38afa9fe249441efd1721","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-develop-45","_shasum":"bcc7b63afe8db87c389fec23e460b5041b823162","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"bcc7b63afe8db87c389fec23e460b5041b823162","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-develop-45.tgz","integrity":"sha512-2CcBTDobtbRu60iCSQO++55k/6qA3Vxi7xL91/Y9EpUGOdZQnYvKRaq0EOWh433Qq2Bt1EEb9CQ6au21jXOnvw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkioDkT6bEB3c2doFxxTJXj7xymjMsAGbMSGIPmAjj5wIgYxodf5OVntQsHZ4Eow/tzGBrq2dQzdEIz8lJGfu8qjY="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.6-develop-45.tgz_1513414117419_0.19160441076382995"},"directories":{}},"2.3.6-master-18":{"name":"grunt-galenframework","version":"2.3.6-master-18","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.2","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"9cea99d2c020b8ce75e172ce7f111431fd390eb0","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-master-18","_shasum":"6819accee99b63cd23842c49f808419d328fc2c6","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"6819accee99b63cd23842c49f808419d328fc2c6","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-master-18.tgz","integrity":"sha512-GbqqIJMhoISzy4SMRFFAvyruPDx++A0jTiaeEG5nJDgDzieNMIlOh6JS/FjZT0uxjckhv0mbrrmQ3FcK3BfEZA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHvGdv8EStZRhdIreiaZVK4l9zLMNBI/1xUR8dYtqTUzAiBP45pTzUpx+2ujBP6KnVKZpewPzz9VFqqMu8M95QVyNQ=="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.6-master-18.tgz_1513414326208_0.8571040004026145"},"directories":{}},"2.3.6-develop-46":{"name":"grunt-galenframework","version":"2.3.6-develop-46","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.2","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"ef5188c45b8fe234a3ddb9b14e0d97d4e6902f53","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-develop-46","_shasum":"2443a66ac1b4a9faf5fee09d052e755e840a7ef7","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"2443a66ac1b4a9faf5fee09d052e755e840a7ef7","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-develop-46.tgz","integrity":"sha512-WZL0GsMwLF1qtykWnIpAlrpyJ3aALPCf+kLg/1mHGfgM1BAne0zqWBkkzthIww5UQJp3PEIl0r2DnR1AWhS9bg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwizkf0FfwZo2lvJlQKhHQ7yui3VfAIWnoZo2zizGjrwIhAIIGGfvvIda+EeGGiYOld/FPOsnZjuRWAfeZWxj3NzVA"}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.6-develop-46.tgz_1513858584310_0.4104569428600371"},"directories":{}},"2.3.6-develop-47":{"name":"grunt-galenframework","version":"2.3.6-develop-47","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.2","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"18dbc48c2f3e1df717729bd81d4ab894e63ae579","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-develop-47","_shasum":"91f385a6f06a6348cdb273669fadc6cd2b86fc7f","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"91f385a6f06a6348cdb273669fadc6cd2b86fc7f","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-develop-47.tgz","integrity":"sha512-d2Jq1reUJzQqvCXUVx8EDY7kmFyv1cRABILAk4gwTf9QTxnbMVKkvm1vq4tYTajAqegvrSarnu35fwdEBMFTbg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGZFV5YOU2oP8r00WMjyIrjPQM3Wrn3Izi9yOd62ZsamAiEAy68oZoK+GQ3Mqy2FcGvM0iIR8zAj114CEP6dBPWKfBU="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.6-develop-47.tgz_1513931519674_0.45368823944590986"},"directories":{}},"2.3.6-greenkeeper-chromedriver-2.34.1-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-chromedriver-2.34.1-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.34.1","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.2","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"2dd865fa53433cfcfa1d38d65ba663bbd3e795ad","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-chromedriver-2.34.1-1","_shasum":"4b8096ed712099c8d1ab9a8bb480885d7cff7a57","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"4b8096ed712099c8d1ab9a8bb480885d7cff7a57","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-chromedriver-2.34.1-1.tgz","integrity":"sha512-8Gjy+yfDpd+KWSnLO63HzBE9Yt+EhhfQGUTwZ48oV+cLfA7h7/EfXmImFaN5coxj9TjTn3lP4IOWSyeSGI9F/A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjsLBMictQBNgzofa81QXY++N+tm8PA9APKS+zQH6amQIhAO9vmvKt7hYVrzebnS9KKvyC69pmu/icxb5yZ5szL6Gx"}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.6-greenkeeper-chromedriver-2.34.1-1.tgz_1514934823458_0.9123338251374662"},"directories":{}},"2.3.6-develop-48":{"name":"grunt-galenframework","version":"2.3.6-develop-48","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"d9fde456462a1d5f858cad7c82297f8e43952601","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-develop-48","_shasum":"a02e91d2f929d6647b801247929fa36fae4e09f3","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"a02e91d2f929d6647b801247929fa36fae4e09f3","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-develop-48.tgz","integrity":"sha512-6Q3c3wTnsnVzA1Z0P3GMvPf78smiSztp4fY8ZQtoAIAG5e5u2/3DS8BpsQuWYIOl6SS9VO/EzbXJJyt6NuK9jg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3d9L6kyxk0Ciw45kR1HWlsDbZxPvE4ucvSgD9Dc4SkwIgY+Fzc9kSNSwxNCLG8+7DShGfU9ISYXPkIAmZZ3vHHsw="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.6-develop-48.tgz_1515077245897_0.5434975321404636"},"directories":{}},"2.3.6-develop-49":{"name":"grunt-galenframework","version":"2.3.6-develop-49","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"061df5a19882637acd1f4aeb814ab288623404c1","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-develop-49","_shasum":"f825d88727b480679665816ea4c11ecc4788ec84","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"f825d88727b480679665816ea4c11ecc4788ec84","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-develop-49.tgz","integrity":"sha512-G9O+5uJx7LPKWCNr6sZnqH0jlQ9XxU7fahNNs2iepPxnEtx9cRJ8E2TBUfa8uN8WtJvzexmcnpetn6tG77NV/Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFiQHQFBiwn53b9AI8+pMx5lBgbExa0d/eZOXlccYjLQAiEAzjaQCsD/2uDZbIROF8RIcqNOQ61Gjc4IshiRmBgMzsI="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.6-develop-49.tgz_1515077300484_0.9820391477551311"},"directories":{}},"2.3.6-develop-50":{"name":"grunt-galenframework","version":"2.3.6-develop-50","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"0.4.5","grunt-cli":"0.1.13","jsdoc":"3.4.0","jsdoc-to-markdown":"3.0.3","jshint":"2.9.3"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"49b3cc4205cc142f4263c0b2e53fb855f86be357","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-develop-50","_shasum":"5071abfee6c4be2bf09889c113103b065b94c2fb","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"5071abfee6c4be2bf09889c113103b065b94c2fb","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-develop-50.tgz","integrity":"sha512-1ps0VckOmRnYNXkL5eDuxRhprut/22ywMiji5q1ZgEMdLc0Uc7yKC9+ZFyODe0GkzPN4W8PeguSMD/rQDkQIYQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcBc8gzFK3eRGD2ygRsBGA6YQYiayYdGfjd2j/8vgpuQIhALEU1vVXrqid9i+T/WpwI062TGzoKQXY2Ws31ni+Jfjm"}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.6-develop-50.tgz_1515235903421_0.7130911941640079"},"directories":{}},"2.3.6-greenkeeper-initial-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-initial-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.3","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"23cf5c2752a7237b36ab2ebdee69a132e6212065","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-initial-1","_shasum":"685a929f4ad801cb7b21c4aefcf34727c137de54","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"685a929f4ad801cb7b21c4aefcf34727c137de54","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-initial-1.tgz","integrity":"sha512-VwRsEjjCQtmFB0T8iw7SdeiTCB/yCPNcwJHAnCODNufNDyQIG7SwwOBaCVPotRg371sPwkwPmUVkhBFwmr+z3g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzzp4JXMEYdwDK1EAq451Fafsk9h4GACPRhWvnI9b/JQIgegiu8Tq3dxjPeJVoqbTVDF+BHD0dicqUtONdETkE/NI="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.6-greenkeeper-initial-1.tgz_1515434792137_0.24095925595611334"},"directories":{}},"2.3.6-develop-51":{"name":"grunt-galenframework","version":"2.3.6-develop-51","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.3","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"ec0aac5ecd194ec4c400d81454c9ebe856aeeb32","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-develop-51","_shasum":"caa1356823c5d89ce37e9a9bde78f7c45fc4222d","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"caa1356823c5d89ce37e9a9bde78f7c45fc4222d","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-develop-51.tgz","integrity":"sha512-hvxXnJhCZgotq23HFeYU7/50E2H1AjLr7LZPIKEQyYXNyqtfqNsFU8zeK7tbiFGD5hKzx6kptYlzGIMej2N1gg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYmORz1PM+3rY181ptH9OfhVAXQ3PmtAQh1CKq/xO4xgIhAKLKvggZW237LBaWKYQrPFlN/f7Vy0A7lQggCFGCy/FU"}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.6-develop-51.tgz_1515438392017_0.6190001061186194"},"directories":{}},"2.3.6-greenkeeper-jsdoc-to-markdown-3.0.4-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-jsdoc-to-markdown-3.0.4-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"a145ee8fcf8fbb238f95066e75733155d5cb9c07","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-jsdoc-to-markdown-3.0.4-1","_shasum":"a7af17dbcb5849848c94786f77f6006748668acc","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.5","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"a7af17dbcb5849848c94786f77f6006748668acc","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-jsdoc-to-markdown-3.0.4-1.tgz","integrity":"sha512-aT4VVB2XEpcYmvTaTy3HkeoUNA8Dk783FLJKBgq+SU/R9P1Ku0nm3m+he7ZUgxxSYqZ1Ox3SMAXg9UJF+w0DBg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBIuzzicWkNoYoHeJnFCkOjIxws8rUuoaUO4EvIWaElEAiBtz/tn8ZKr/Koijdj7IfGzQ/czNblxy5i4ErPG/o3TCw=="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.6-greenkeeper-jsdoc-to-markdown-3.0.4-1.tgz_1515614763909_0.8587370566092432"},"directories":{}},"2.3.6-greenkeeper-jsdoc-to-markdown-4.0.0-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-jsdoc-to-markdown-4.0.0-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"4.0.0","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"6a26e843db10429cf5440f69ed2f94566411e763","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-jsdoc-to-markdown-4.0.0-1","_shasum":"6e8b57ba4cf6041c157fa394f0894e119d2faec5","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"6e8b57ba4cf6041c157fa394f0894e119d2faec5","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-jsdoc-to-markdown-4.0.0-1.tgz","integrity":"sha512-NZMdOiM8P0zhKHBA9jglrlKUPgqjWCZ2/Mm5SmCgdRa8FDmV2Fl7tL4RPOWlReB0sPoYcL+8NH2H/5Ny5pKhQw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPmtR2oLQZdB6eYtFLW1TpCLPqlv3V1dOb6J1LPZm0lgIhAOsHy4KrZTmba7HHi2lTTHybuok6EBu6XnC2xs3GT0/Q"}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.6-greenkeeper-jsdoc-to-markdown-4.0.0-1.tgz_1516376046984_0.7880784911103547"},"directories":{}},"2.3.6-greenkeeper-jsdoc-to-markdown-4.0.1-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-jsdoc-to-markdown-4.0.1-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"4.0.1","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"f0042cb79ddd90926193b4dee4f958918d529480","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-jsdoc-to-markdown-4.0.1-1","_shasum":"5b71239bb1c637d720efecd81d418bce4acd1abd","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"5b71239bb1c637d720efecd81d418bce4acd1abd","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-jsdoc-to-markdown-4.0.1-1.tgz","integrity":"sha512-PdQ9nfithpn9J95IdhalFz9AqRaEgZwBVPHT/dYXshBkrWun/Zx+9qDsQLOe0xS0Ur1nfvwT98eeZtnjnPFN/A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHwtW1dc8X1qGSCZBqLBxa6B5yz8N1LvzNwI62Yl87fFAiEA96fqtEsLrl5naW+VNwW4LtTUZXh6+bGKpmF0cdmextU="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.6-greenkeeper-jsdoc-to-markdown-4.0.1-1.tgz_1516647721859_0.09292008727788925"},"directories":{}},"2.3.6-greenkeeper-chromedriver-2.35.0-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-chromedriver-2.35.0-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.35.0","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.3","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"e52a2b502140ab35d04f3099c9db7443c993ca63","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-chromedriver-2.35.0-1","_shasum":"04768dbb0ae633aad0e38c6672ac9b9deaafd891","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"04768dbb0ae633aad0e38c6672ac9b9deaafd891","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-chromedriver-2.35.0-1.tgz","integrity":"sha512-t2/KNInfgbcuq9Tv08FpOeRuOkvw8EK/rx1y0I0wiIPD1Ce3mzbS+8BQC49TrrDED15h6wN9PE6Y8Ne+uHxpPA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICuMfylsK/+DIL5NLsTCfg/aACKc6MknBfQKE9C/hYLTAiB/am+XKZDNmTEQXp0fMsWAz1hsIHH+OxQn3ooDnibEAg=="}]},"maintainers":[{"email":"michael.seel@nexum.de","name":"michaseel"},{"email":"contact@martinreinhardt-online.de","name":"hypery2k"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework-2.3.6-greenkeeper-chromedriver-2.35.0-1.tgz_1516648748451_0.8374863637145609"},"directories":{}},"2.3.6-greenkeeper-conventional-changelog-cli-1.3.9-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-conventional-changelog-cli-1.3.9-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.9","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.3","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"001397d1d1069fbf499669604798b4676abc600b","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-conventional-changelog-cli-1.3.9-1","_shasum":"75253249e26b50c2861ecfa367ebe129f533bdce","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"75253249e26b50c2861ecfa367ebe129f533bdce","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-conventional-changelog-cli-1.3.9-1.tgz","fileCount":5,"unpackedSize":45612,"integrity":"sha512-m8MhkeXhNfTjI1nS83ZUOmnAwlJZvywChi9LYIkyAM75NFtViARBZy5u0jH23BtDOkqEMiJ6NajxadrY8Jnnjg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHuUayjjjAmVkBC0Uq+tdr9bmz3F01pGYcuqBuGXklV+AiBSzafqZq8+v/CdAGh5W37UFKImlAZ3r+bIILxAUbFhuw=="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-greenkeeper-conventional-changelog-cli-1.3.9-1_1518067563053_0.910795328812007"},"_hasShrinkwrap":false},"2.3.6-greenkeeper-grunt-1.0.2-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-grunt-1.0.2-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.5","grunt":"1.0.2","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.3","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"cf72e886b41326a18088b520b2b86815bf21852a","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-grunt-1.0.2-1","_shasum":"143519ef6855bd316517b9597c34e9094af79402","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"143519ef6855bd316517b9597c34e9094af79402","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-grunt-1.0.2-1.tgz","fileCount":5,"unpackedSize":45591,"integrity":"sha512-oLK+q8kG95aRyzFNVYVM6i+TmpNf/0Pbct+OohETy2zqgoeln46UgCmNE/7Cxdo3PB8U+vHFE+SyazMxuROJ6A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8B7Zi17UHNaEpN4DobN0QdUftmzPLKpVfn8PQTbZrVwIgaNYyWLKu0AH8eTDePRHD/IJj70d3H4sbLUC2eBkRiu4="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-greenkeeper-grunt-1.0.2-1_1518067960634_0.900118879427626"},"_hasShrinkwrap":false},"2.3.6-greenkeeper-conventional-changelog-cli-1.3.10-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-conventional-changelog-cli-1.3.10-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.10","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.3","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"51d77822bca0a3c131f37b7dfd080fc22a06d5ad","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-conventional-changelog-cli-1.3.10-1","_shasum":"500c558c6f315f30ce861550f2d46c9b85608b83","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"500c558c6f315f30ce861550f2d46c9b85608b83","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-conventional-changelog-cli-1.3.10-1.tgz","fileCount":5,"unpackedSize":45614,"integrity":"sha512-CfK0l4VXSE+r1LvEITy3hsyaC7OYGtaVgjz4R7j+k+6mk0aWTAW6pFO/kVWz9HkGqY17fXukF0bIq1ccpRqBiw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCLDppXnFeTUcJZ+GgXdlZq+G0elJ/xanzTAWj5DBxxQIgOnD8KsLCuXSe+Yj7nCKQSNfu7HgMkics0KtPlswNayE="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-greenkeeper-conventional-changelog-cli-1.3.10-1_1518679960044_0.5040455992903052"},"_hasShrinkwrap":false},"2.3.6-develop-52":{"name":"grunt-galenframework","version":"2.3.6-develop-52","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.8","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.3","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"3ebe994279529ab9f208289b7a5f008cea74e40b","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-develop-52","_shasum":"2b402dfe4bef62552bde5ecc0438f92343f0e97a","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"2b402dfe4bef62552bde5ecc0438f92343f0e97a","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-develop-52.tgz","fileCount":5,"unpackedSize":45576,"integrity":"sha512-LLMk2eHHBASabm4QAwXnoA/lCC09ZLTdygz0cZpaUPyBw62U/kn/QnH2ByhN8VnWlwKWZUT+4535gyvwctkqXg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFHjvNLQDZZbqm9ott34Kh5WWfcQoYcBTdMFf/uEBo3MAiAt0LRO+Wmf2Pl/ZZMVSFW9n1Y3CPOdlerYFEwGyhBKqQ=="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-develop-52_1518680804768_0.22958457198906634"},"_hasShrinkwrap":false},"2.3.6-greenkeeper-conventional-changelog-cli-1.3.12-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-conventional-changelog-cli-1.3.12-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.12","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.3","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"3d1c8a8a5da89bf3aa28126dd2a95118fa750b5d","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-conventional-changelog-cli-1.3.12-1","_shasum":"b4123d7a565aace27ab1c91ef2a99ea6072eb8d7","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"b4123d7a565aace27ab1c91ef2a99ea6072eb8d7","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-conventional-changelog-cli-1.3.12-1.tgz","fileCount":5,"unpackedSize":45614,"integrity":"sha512-F0EWCXAx9pl67MspiU9REkoB3IkVs/xPc+4AdoYoNG5FccExjvkIepkgsAc6Q65KIZXH10hiNOT8eyHi1yW6+A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0DXh6MzQQyVRVKvZYqEGm/AfPbl7LELSjjoA5oMPBcgIgTi07G4FVGInubbyHxx+jVEY2ChfQBOgeUXdBYDTiBKc="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-greenkeeper-conventional-changelog-cli-1.3.12-1_1518681903424_0.8534392623678992"},"_hasShrinkwrap":false},"2.3.6-greenkeeper-conventional-changelog-cli-1.3.13-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-conventional-changelog-cli-1.3.13-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.13","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.3","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"6816e81da160829a4a8bde10c5f35de403c9efc6","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-conventional-changelog-cli-1.3.13-1","_shasum":"01bcf70ef83037461dd8e87d5674a601ed103849","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"01bcf70ef83037461dd8e87d5674a601ed103849","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-conventional-changelog-cli-1.3.13-1.tgz","fileCount":5,"unpackedSize":45614,"integrity":"sha512-aoFVN58JGNlaIa/dz8thy8tl4uXfJRnoNB7eO8pjb+JhHtwfCYFv8G8J6YE20RLvb0VR5gFBQ3LAi4rUvwz+Sw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAQazXZ/0wGju8gJAyV8DL0+rSDXr+oq/XhmEpkaY4btAiBz41qnyLYsCSWbZNi9kGw8Y5CBRj7hTUKZDwTJa2RWHw=="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-greenkeeper-conventional-changelog-cli-1.3.13-1_1518683622569_0.1275761129675883"},"_hasShrinkwrap":false},"2.3.6-snyk-fix-adf28a69-1":{"name":"grunt-galenframework","version":"2.3.6-snyk-fix-adf28a69-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14","snyk":"^1.69.7"},"devDependencies":{"conventional-changelog-cli":"1.3.8","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.3","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"5ca9871a711e1e5aeca6e485c26336afd0fb3c52","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-snyk-fix-adf28a69-1","_shasum":"2e74a069625f139d0f2018946e980126a897d1e5","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"2e74a069625f139d0f2018946e980126a897d1e5","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-snyk-fix-adf28a69-1.tgz","fileCount":5,"unpackedSize":45702,"integrity":"sha512-CBGSyhE339BqIWzC2MK33p5/egRImQF2WvXlVjPzuMskUYODA1ubyGCDDT4l9kKmdTgnM1nHqY4fT3SPRZ/x6w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFkndXakJUu3xrETGLi0dQkKz5J8/dvWvVXxLrqunGg8AiEA87RIVgQ/ah/g96qpwBH8+lWdlzT1RG3U1FNibG/hNVA="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-snyk-fix-adf28a69-1_1518712415891_0.7095286028572816"},"_hasShrinkwrap":false},"2.3.6-greenkeeper-conventional-changelog-cli-1.3.14-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-conventional-changelog-cli-1.3.14-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.14","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.3","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"4d38e5c3047791837cd7718bc3d5b7018e3567b2","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-conventional-changelog-cli-1.3.14-1","_shasum":"c7dcfc3ad81c14b71a18cd97a3441c6a7888b01a","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"c7dcfc3ad81c14b71a18cd97a3441c6a7888b01a","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-conventional-changelog-cli-1.3.14-1.tgz","fileCount":5,"unpackedSize":45614,"integrity":"sha512-vhfSwzl3Ro/byig0UEJCS9ZioHtqq90ysyF9Lg3vIiX6WurM+AhKbQOdcoOsURL7utsN+04nh8cMTL9Z/tGDKw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMcEhX82mynNNFvz1F/B0/5pYsedg8DzqCce7qfsD2fQIgHcwYLWSiLkRoijOKVzYRwYDVzmICgP5RrnPR4baDXrs="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-greenkeeper-conventional-changelog-cli-1.3.14-1_1519102236878_0.9027852513227932"},"_hasShrinkwrap":false},"2.3.6-greenkeeper-conventional-changelog-cli-1.3.15-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-conventional-changelog-cli-1.3.15-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.15","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.3","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"f06636e4da6ddba4174f63cdba1354fa00135940","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-conventional-changelog-cli-1.3.15-1","_shasum":"5854fc8c7d6474bd4c59ad69acb7a07d6278118a","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"5854fc8c7d6474bd4c59ad69acb7a07d6278118a","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-conventional-changelog-cli-1.3.15-1.tgz","fileCount":5,"unpackedSize":45614,"integrity":"sha512-OkFWyf8esyZk/bB1x1ha8x1YU8s2KkxT5J0TtWB/CwUo6E8nbQWCAdeLS1c2IbOaN0VrG2Ni0AZvMwX7F07T8w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsZJgymwPTu+I9sKNnD7LzMAL2IN7hgQOHX0Pj3ehImgIgP3TI4rfXHWzOQTIvaX0astH66Ghx1+mQykmfrjedrek="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-greenkeeper-conventional-changelog-cli-1.3.15-1_1519512244427_0.35173595514043954"},"_hasShrinkwrap":false},"2.3.6-greenkeeper-snyk-1.70.1-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-snyk-1.70.1-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14","snyk":"^1.70.1"},"devDependencies":{"conventional-changelog-cli":"1.3.12","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"d6a8ed09db035fadef62e605996c851f362afbcd","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-snyk-1.70.1-1","_shasum":"718df1ed0e3d562e20e020027f552e7ede993f9d","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"718df1ed0e3d562e20e020027f552e7ede993f9d","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-snyk-1.70.1-1.tgz","fileCount":5,"unpackedSize":45709,"integrity":"sha512-uaU7NNLUtbvMj63YNzI5iQSFhmFSN46vohYzBBU5kz6NW35mw5kuJ6p+FvoYR8ReCQCUrU3sANAPtSyA9hzxbQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD19TAYb+SA6L6vUZ8F/hPdhPVQWaNBxXYZ604uDANDwAIhANPQZKZkrDZPmFWnJHvN/0vjN8lHOf9bAT3lWZE63j+o"}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-greenkeeper-snyk-1.70.1-1_1521524309949_0.21652784462156638"},"_hasShrinkwrap":false},"2.3.6-develop-55":{"name":"grunt-galenframework","version":"2.3.6-develop-55","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14","snyk":"^1.70.0"},"devDependencies":{"conventional-changelog-cli":"1.3.12","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"7b4cf292256cd7949e7ebfda51237e4d63cf89f2","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-develop-55","_shasum":"970c424347fab44cade281ae8a64df8dd3330d6c","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"970c424347fab44cade281ae8a64df8dd3330d6c","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-develop-55.tgz","fileCount":5,"unpackedSize":45694,"integrity":"sha512-jYtXuEi2fyEDE+6kY3n3dPeVQhLfU5yeMSVZDIV9qv0ELFLvDRl3F8X68RhUcdntdu0oIfjSmmdpPBJc1FoNjg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUeZhO+yd3sXy3W16doXgEp9wq5FCqoNA5AtNKBxPTZQIgdpaQSJ4BKHHQ7sZUd0x+bFS/XrJVyVxox9hpQEv0okg="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-develop-55_1521525135082_0.5628577158302881"},"_hasShrinkwrap":false},"2.3.6-develop-54":{"name":"grunt-galenframework","version":"2.3.6-develop-54","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14","snyk":"^1.70.0"},"devDependencies":{"conventional-changelog-cli":"1.3.12","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.3","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"433b3dded260bd110cbefcaeeadddb75f66c9552","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-develop-54","_shasum":"e354bbb0d849094a9e163877a6393e1d305f467b","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"e354bbb0d849094a9e163877a6393e1d305f467b","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-develop-54.tgz","fileCount":5,"unpackedSize":45694,"integrity":"sha512-aaFE7lgG6oib4QIaY1ltKOOOz0haYhcP9+AeQFm2RHiBTpOZXk/ue4TcWUWSXAR4Cwz1UNZ5WRYIpNoaMT37vw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQkt6nD8fXQHSwmPMTiScBcGV0sWwMaXNh0FHVwp7A8gIgcxiHtmhyT8rF1Tb4qPL6D7IaitI20I91sP5VJGakE7U="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-develop-54_1521525252183_0.7778595377247775"},"_hasShrinkwrap":false},"2.3.6-develop-53":{"name":"grunt-galenframework","version":"2.3.6-develop-53","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14","snyk":"^1.70.0"},"devDependencies":{"conventional-changelog-cli":"1.3.8","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.3","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"51f501bedeae452299a8ca6c28d642ee749bc0bd","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-develop-53","_shasum":"8cd1813d4dc876eafd7abbe013f66faee0a3a4fc","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"8cd1813d4dc876eafd7abbe013f66faee0a3a4fc","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-develop-53.tgz","fileCount":5,"unpackedSize":45693,"integrity":"sha512-LpCRPCialoZqQkA/jXMV3Ofn3SUM4ARyfXzVd8O3P+pv6dT5Zo+NFrQMqUcHvZVpub0xQtZXtekr3/5lo+pJMQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB43H3avoG2HjoX6PWwm2+qA65wzmnYZUUOvxsLECFmpAiADOwLIr5zdBsyxPGhOW0nDcjubhtws60N5Q17pHQ6lkg=="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-develop-53_1521525449497_0.8978095167976208"},"_hasShrinkwrap":false},"2.3.6-greenkeeper-chromedriver-2.36.0-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-chromedriver-2.36.0-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.36.0","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.8","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.3","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"70704164f37c6116c0d4263112ecd09c108293f2","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-chromedriver-2.36.0-1","_shasum":"d4054ae49d2d0b3966eb4098cd683448c1f4ef3e","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"d4054ae49d2d0b3966eb4098cd683448c1f4ef3e","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-chromedriver-2.36.0-1.tgz","fileCount":5,"unpackedSize":45599,"integrity":"sha512-Wa5hqo+e0OxekpKnjEUTomjNgyyuImpw7i/QI59J3giC6lCjRy16DC6gwGmnL5xVRidiRdFyPu7ggCNV/MEwCw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoJQVgVwWiALxKSAZ3XW63k9g8ZVNbWqJ6Jc6Iif262QIgEawPtZ8F7G5/0QdVDTkLXibkgNESIhg60p6Nf+ufzxM="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-greenkeeper-chromedriver-2.36.0-1_1521526088207_0.7901514185788459"},"_hasShrinkwrap":false},"2.3.6-greenkeeper-conventional-changelog-cli-1.3.16-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-conventional-changelog-cli-1.3.16-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14"},"devDependencies":{"conventional-changelog-cli":"1.3.16","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.3","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"gitHead":"7b2d4a83fd544f6ca73e0dfd98b7e71d02eaf0e2","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-conventional-changelog-cli-1.3.16-1","_shasum":"ecf3ea01af14f6be89347dc25766473c25c4c56a","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"ecf3ea01af14f6be89347dc25766473c25c4c56a","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-conventional-changelog-cli-1.3.16-1.tgz","fileCount":5,"unpackedSize":45614,"integrity":"sha512-ovhtz/ET4rJjUqacZEgb1mKY7zeGAx1AU3tigfJG0E8n4yN+I9475LG8AAEYmvSgXPt/OA9nZcw0jelrNkcNlQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBVsslEruPdZ0iWvIeV8cGQVHtiQYtbLoDUOEGDN2iS7AiAiwSAOLolNekvA4T8MAn7/lL5Myv6qJM6RwNqZa6P8gw=="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-greenkeeper-conventional-changelog-cli-1.3.16-1_1521527235123_0.4515643692980831"},"_hasShrinkwrap":false},"2.3.6-greenkeeper-snyk-1.70.2-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-snyk-1.70.2-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14","snyk":"^1.70.2"},"devDependencies":{"conventional-changelog-cli":"1.3.12","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"cf75d9bc9b4a5cceea697c44b753c34e49e73ae2","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-snyk-1.70.2-1","_shasum":"19ef17e29dfc56124c8c812718ad56757927c71a","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"19ef17e29dfc56124c8c812718ad56757927c71a","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-snyk-1.70.2-1.tgz","fileCount":5,"unpackedSize":45709,"integrity":"sha512-zjWbMZVSEXJBkCxhpT62/dvA9Bwb0x9M9Wg1eTYF9Gzuvj0A7nChViYO/XoYve+aUHlUX8y6Lbw1XJCUVCNErQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICiMxLIwJE2pTktu6Pw+G7wLJwWTucZ/f/9ntAHRFkUmAiBQbyaenjpMro9yeyZ/lwJF7qV+0AxvGxg9A+oep5MHRQ=="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-greenkeeper-snyk-1.70.2-1_1521534640319_0.4132260702383541"},"_hasShrinkwrap":false},"2.3.6-greenkeeper-geckodriver-1.11.0-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-geckodriver-1.11.0-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.11.0","phantomjs-prebuilt":"^2.1.14","snyk":"^1.70.0"},"devDependencies":{"conventional-changelog-cli":"1.3.12","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"7b59a1cacd6cfe5e682edf6592b9ff97c1b805ba","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-geckodriver-1.11.0-1","_shasum":"ae684d4793f8fbfa8429eb6fec1cd3b4737eae85","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"ae684d4793f8fbfa8429eb6fec1cd3b4737eae85","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-geckodriver-1.11.0-1.tgz","fileCount":5,"unpackedSize":45716,"integrity":"sha512-BQd6DCBBttgk+ricfEMsZd1mxsQCTHSPspziMc3ei24F53y2QpxiD60NK64jCMLPvGaBW2qFbVY5lGxiMrExSg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBea7CcomMhLPYBsa5Sk5plHA4c52+i0U/Hg0B1HDI+OAiB9UG50jXnFeBNiN3Lh8lv6vxbuOwsEKmrKNYf+8HDR8w=="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-greenkeeper-geckodriver-1.11.0-1_1521535125228_0.2505181593189225"},"_hasShrinkwrap":false},"2.3.6-greenkeeper-chromedriver-2.37.0-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-chromedriver-2.37.0-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.37.0","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14","snyk":"^1.70.0"},"devDependencies":{"conventional-changelog-cli":"1.3.12","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"15243be4a8d1ceaccc6d5656dacfcfa959a051e5","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-chromedriver-2.37.0-1","_shasum":"04cc520ad3ca1af9f7cbb2bd26034aec0beed539","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"04cc520ad3ca1af9f7cbb2bd26034aec0beed539","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-chromedriver-2.37.0-1.tgz","fileCount":5,"unpackedSize":45717,"integrity":"sha512-jOJ/OBKXwe0um6s0/fgz6R3XRjRfinUGXb2VSVXl9vR2qMI/cpiYBRva0h4HGmvBm6ml9LQRJVcHgw5IrEuR5g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID+2PO6mrU3lzPOgFe1cOwooaGTzn4y5YDlG90R21af8AiAi1VSJ02vMytaipH4eDy1c8065epoTqidIbl5NbTO2wQ=="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-greenkeeper-chromedriver-2.37.0-1_1521572337308_0.7260810204748813"},"_hasShrinkwrap":false},"2.3.6-greenkeeper-snyk-1.70.3-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-snyk-1.70.3-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14","snyk":"^1.70.3"},"devDependencies":{"conventional-changelog-cli":"1.3.17","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"750cefff2d4323736b8df545461fee0ac9fa40a7","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-snyk-1.70.3-1","_shasum":"4de5f242f74bca53a14e9d5551597b054343b0cb","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"4de5f242f74bca53a14e9d5551597b054343b0cb","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-snyk-1.70.3-1.tgz","fileCount":5,"unpackedSize":45709,"integrity":"sha512-Ir8jLhpqugdFlkCLY05wgizmGk5WY0rKEB9NnhjOsWzSVb5jqiDdLwt5LC+5bFmuufDbX0+SKhWLWZdOuTQumA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDura31o9El1VYujysJA/zkxtRdamDwgwKNqtxVR/4UQQIhALnuNAj1xb3Qnaw+pEOLv4TRL/79gL5asr2qKlGMQxzO"}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-greenkeeper-snyk-1.70.3-1_1521738326684_0.7033683520256901"},"_hasShrinkwrap":false},"2.3.6-greenkeeper-snyk-pin-1.70.2-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-snyk-pin-1.70.2-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14","snyk":"1.70.2"},"devDependencies":{"conventional-changelog-cli":"1.3.17","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"e796885da515cdd831961470272d8b84ab6abf69","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-snyk-pin-1.70.2-1","_shasum":"8bb478ac8e2ae7a518f036325651bbee0c1128e9","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"8bb478ac8e2ae7a518f036325651bbee0c1128e9","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-snyk-pin-1.70.2-1.tgz","fileCount":5,"unpackedSize":45712,"integrity":"sha512-l9K3jgO1WdEkHGiMFPtd4DnaRRsSO+JRZdDhJK2Hyd1LINCfztlbNvKS+ZRQKOsn7qrXCZaHp/+dib3Qkoo6Fg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFVFx+SJykqTOeVif1alEOxouI0Q2T44ggWJMLzAg5XWAiEA34pdDWdBPJ8zsiGUz+Tlvg7LilPwJHqxNXSgjaSk35E="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-greenkeeper-snyk-pin-1.70.2-1_1521749225729_0.45004273742754486"},"_hasShrinkwrap":false},"2.3.6-develop-57":{"name":"grunt-galenframework","version":"2.3.6-develop-57","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14","snyk":"^1.70.0"},"devDependencies":{"conventional-changelog-cli":"1.3.18","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"e65894a3782e8ccfb209c6b7bb7461b2d7e7293a","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-develop-57","_shasum":"bc6eeb52cfdf5c0ad7c4e835661998403044ce0c","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"bc6eeb52cfdf5c0ad7c4e835661998403044ce0c","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-develop-57.tgz","fileCount":5,"unpackedSize":45694,"integrity":"sha512-sy9dY/tF1UuEo4lQCNDX6j8v23YFe9UPEEHC4TX2aOGblrmcAYxVw+Dq/n8QUwwTRvRFxfsY9Z6JpVtCos35VA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDRtAhsaChp9KXL90f82lhW7wy6P3lN4T9bQncgvYWBsAiB7xvSIYwdD8Xu0UscNW1LC5ALaqDEvZyPmtWMhS9yPzA=="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-develop-57_1522166209201_0.33329622260658387"},"_hasShrinkwrap":false},"2.3.6-greenkeeper-conventional-changelog-cli-1.3.19-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-conventional-changelog-cli-1.3.19-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14","snyk":"^1.70.0"},"devDependencies":{"conventional-changelog-cli":"1.3.19","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"4653f98ca734b4eb2d9e3c9de6c823c29869ff4b","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-conventional-changelog-cli-1.3.19-1","_shasum":"cebc326a424c346e324a815456ee4ef677715cca","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"cebc326a424c346e324a815456ee4ef677715cca","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-conventional-changelog-cli-1.3.19-1.tgz","fileCount":5,"unpackedSize":45731,"integrity":"sha512-uYNt80in6A5n0MlnSTP7sswGzVNLo893pnK/+sfNh5/DQefMv/HsDDCT/LtjotHd+H03USBP9Tq3I92ACflhcQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYiDYXtgClhkAbGL/Ccv1K1tGwtnDB9DcjXPHjwdWuuQIhAOb9zzzp219SgZwW8vjK5jez2X02r0Ex74k1lYA2+MHK"}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-greenkeeper-conventional-changelog-cli-1.3.19-1_1522167286164_0.351348156767455"},"_hasShrinkwrap":false},"2.3.6-greenkeeper-conventional-changelog-cli-1.3.20-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-conventional-changelog-cli-1.3.20-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14","snyk":"^1.70.0"},"devDependencies":{"conventional-changelog-cli":"1.3.20","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"34ac6a0a54cd1e96630e9c6503732a6f60212cec","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-conventional-changelog-cli-1.3.20-1","_shasum":"37f850dd881618cafa2ccb6e948f28331cb4e62a","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"37f850dd881618cafa2ccb6e948f28331cb4e62a","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-conventional-changelog-cli-1.3.20-1.tgz","fileCount":5,"unpackedSize":45731,"integrity":"sha512-35s1pBOkz0D+97qHSKHZAxAT9nFlipMLcaEdPDhbL3KnY6O0v003U7LGQXH7Y98HbQyN4LtRokFM2u6ToVqkRg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEInrjPZmKUt1MMMMcDutTFB0UNJ1EEDuW7g1VfmfdTAIgF32oBC3yeNsbPdV/9aqHlhVv0niRCTe5+u4A1IdA2+0="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-greenkeeper-conventional-changelog-cli-1.3.20-1_1522168533210_0.7391368331971087"},"_hasShrinkwrap":false},"2.3.6-greenkeeper-conventional-changelog-cli-1.3.21-1":{"name":"grunt-galenframework","version":"2.3.6-greenkeeper-conventional-changelog-cli-1.3.21-1","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14","snyk":"^1.70.0"},"devDependencies":{"conventional-changelog-cli":"1.3.21","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"703bb5f3ae23ad842091748deddb82c62ca900b0","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-greenkeeper-conventional-changelog-cli-1.3.21-1","_shasum":"50ab27ac04f537235d10fa22ef1a45f49328ae6b","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"50ab27ac04f537235d10fa22ef1a45f49328ae6b","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-greenkeeper-conventional-changelog-cli-1.3.21-1.tgz","fileCount":5,"unpackedSize":45731,"integrity":"sha512-EsffWiGzfxPuWUghCNucmsehH33u/Xj9Cb5oJrCKznu8YvyH+QjBjNdkBHS8LVz0BHqS8wnmkPmYjNkE0+mXZw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGgf5QsporjAfTNk+2wR56u578QbtxWFGTD/V49j38QZAiAOYjfB2xHmYbdKMZPs2y1cUtcCkxZ3uFC4oUsgIZ/PWw=="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-greenkeeper-conventional-changelog-cli-1.3.21-1_1522207066506_0.6440131592537679"},"_hasShrinkwrap":false},"2.3.6-develop-58":{"name":"grunt-galenframework","version":"2.3.6-develop-58","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.6","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14","snyk":"^1.70.0"},"devDependencies":{"conventional-changelog-cli":"1.3.21","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"51ec96afc1af42676f10371837a2ee19566a2fe2","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-develop-58","_shasum":"e244073cf7ac42d6d16b88a26e89dbd53ead2ceb","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"shasum":"e244073cf7ac42d6d16b88a26e89dbd53ead2ceb","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-develop-58.tgz","fileCount":5,"unpackedSize":45694,"integrity":"sha512-nRINtaQzz1GOmZnFEWLwRRefSJtBWkD9umxYQzLYOm2GTU/8zdQSi3H3JgfKx5tmAaEJXP1gH4Ed5kJv6HUXXw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG1JFmtSvvM/WiV/Rvxa9xaXownp4bpSj9Gvttdu1ZwhAiBsMTOdZLNcHwpXF7dB7usdn5w0ZJQ+hwZN8FQVegTxUQ=="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-develop-58_1522215756007_0.10606656352678567"},"_hasShrinkwrap":false},"2.3.6-develop-64":{"name":"grunt-galenframework","version":"2.3.6-develop-64","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.7","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14","snyk":"^1.70.0"},"devDependencies":{"conventional-changelog-cli":"1.3.22","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"555849ac11cd4fb08a28753acb374e7b904746eb","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-develop-64","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"integrity":"sha512-+Vd7ZjWDYZEe9yaW8WOJ5i04hyiXu+IJMn+fZ29wzbGFg6FAhyZOp2lSg+IBit5H+oJOkIW6GmJmxV0xBV88pA==","shasum":"72583a8e07b631352a77516bf5c5ad13e328d2b7","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-develop-64.tgz","fileCount":5,"unpackedSize":45694,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbCsfpCRA9TVsSAnZWagAAHDsP/it+Br+cIGi87pZPhxT4\nP+gi7L4hvtD6x3q8vYaoqC8Mu3IUcIzSx55EkeLYgoMPLfzjKBo7ms4RcAUE\nit9CVntQHZd9EiLHvsMfuv4qp6x/PSOPz3CTgYJmNa2mIVp2sMTWqbHIDK+T\noMGFglxlpQKN0Sj5uZD/lTwm63fmI4WyNRA4KjZKIW4Vys4pLeDDEEQQbzUw\nCq6HU+zO/UTvEWyVRo8cvBAJvqF0zKBf8KJLedScU4W/VsevwkbCE1rYAbp5\nLzIZ0IU27IGLFCL8hZfYXRd74226nuYOimbsPNsXRHo87gpV3OeecXLvgb+7\nb+Ckc9OZxAcMbN5rxEbTnJu+NXxjfauQToDUZWtNmY3BqruVSGKpUuMCszhr\neMPRHnJjkM8iYYbEp+vrPwjtYvjZYnWqYdt64d+foRZQXBTTBdhYfJSU1Uq/\nPcumjfputb8L6Ft/CYUbgcEDKY00/tT/JnRMSLYz3PbmMX6KmMikHU/gWFQ4\n1AzRCtxSgavfcHuw4abORoZ5y7+jhO23XXsknCAvBPoX+Mn7ZFpp7U8Z2+Ms\nNjNQZgZBfykSBAJJYFJoso5LZnKrGSLvh3PZr/VPxxdfwHPlP391cvY+MGto\nYNCPj7742Pnz+AIl1GqaUYmnywgUs/MYID2A5cMjkNa8Y4NK1TSUahrE5VeT\nun8K\r\n=MAT5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIm3iwatA6Gq54jcam9jY+2WiUytgI4g0Nyk7UEGAJGAIhAI1Kv0p7GZeYAjvgb6cLgCHKIch7NuOnA/FQ1m3fkiPB"}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-develop-64_1527433192762_0.9051506367492945"},"_hasShrinkwrap":false},"2.3.6-develop-66":{"name":"grunt-galenframework","version":"2.3.6-develop-66","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.33.2","galenframework":"2.3.7","geckodriver":"^1.10.0","phantomjs-prebuilt":"^2.1.14","snyk":"^1.70.0"},"devDependencies":{"conventional-changelog-cli":"1.3.22","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"555849ac11cd4fb08a28753acb374e7b904746eb","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-develop-66","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"integrity":"sha512-cwRwvvwotNKTnjkUnYY49TSWGJTz9IynYWvCVabujneamp75BzUTTixWMkC1wFmDE+ikPCPCoR8ROxaba3AxIA==","shasum":"a10777ee7a1c622fe4708addd32f5d17b33443a8","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-develop-66.tgz","fileCount":5,"unpackedSize":45694,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbCsikCRA9TVsSAnZWagAAg1YQAJm7x75PKaqHTeHLRirE\nX48unM6Wn2JntBAYxkDDLwPMcRRNXIfy6xQc/+OAhu4MTGjVy9CR2eNES2pC\nSpNSpF95UZ3A+JzXIHKv2eNoYqI0ibKeWJK383fTAUJn4pizc/BLSgPj3vcf\nZgwfKY2kSPBowm2kooPLOf/VvUlijbrEofBZi1HqBvISG224eO/Dm4eyYGbr\nXPWEbu9RK9DAKzjkSnByO9dxS7yl48CC5TCIEV+jYVFt11pXdsZhLQ36DpvO\nGMSiSGSibGDbzVNinD/ojTgbtvpvq8xCGqc09irelboFPNDHBmxPXmHxGRD1\nvpCN/0GBQmauly4CL/dR9XFRR879iMyylFod6U11d/tarzbPuBSLe3Y+AguZ\nhYIEpl8x71meWxtvHcOH2S1boXqCDlHeIY2VkI1ItVS/21d0vTfCcG6F8MJX\n10b9iA9gBYYb7/ty+XlI0oG0NmfC7egVfejDhw3k2OsU2iKp1ji12b3jGnCa\ncuZs8kIFqWybjewaOnrr/T43oys8MTorZdk1y62C7hNowsAQZeYHaiKdKLix\nDg5vukNrHbh5ZHnxiNg0f4VZ2xoT9BG9cNc1Ew0H0yEHh1J22AbjoMJX/fMk\nnSYk9zSBxfEPtnU160cDUWKRh5OGUqLHTRGdmxYCB5Q0yTe3U2GstaXnn+HZ\nC69Y\r\n=hXBB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQvSt9BtgMBIqBsRIu3+jKnPF4SauL1+b2WlZ8W/AN7wIhANj1hQIiPG+fV2E0KvYEDY0Vgx/WCg1WrHdX7KTev9gu"}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-develop-66_1527433379931_0.3002311211522204"},"_hasShrinkwrap":false},"2.3.6-develop-67":{"name":"grunt-galenframework","version":"2.3.6-develop-67","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.38.3","galenframework":"^2.3.7","geckodriver":"^1.11.0","snyk":"^1.70.0"},"devDependencies":{"conventional-changelog-cli":"1.3.22","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"678674426f8e2a2759d7fb64aae9aa18c8d40858","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.6-develop-67","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"integrity":"sha512-kLe/+rjx6h/to7jXJENJ4UUauVVXAdsWojmzkTHXqmSwssF2v1JkcFYvHuZx5BhFrNfOrvktnMLrUPVK9eDunA==","shasum":"8484261e794ff4f2b2b229146eff63b25332625c","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.6-develop-67.tgz","fileCount":5,"unpackedSize":45856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbCtvpCRA9TVsSAnZWagAAL4oP/1LtSZeOAQPEd6nnwJ3W\ngGtVDo5eICn9RcBcsOJ22YPcTRX2kFiFiPgSzOEt+vsIf8CZQPie0MIiW0K4\n5S02mSfzOoiIgxuUuU1IfDunu6p5ZAVvMTS/JVg2qmSnywmb/CATCWVt2lKR\nXN3DdJNAZ2vUYcaajLEmwHs4RHV/aZPQwgZsHawoURO9vPKo40cnU760FEfw\nVBDt/69aA+qDvNWIMRwlBf43r6jkPjhTl74WuHSf0LuUWT4PBdekXlZaWkoY\n7a9J268zyYy4m7FCjKWPKFV2U60l8GtoXBopKeMS9aKNPuBINNM0xX8A2WuC\nj8tqvgKpvYeB2lmNC/XmSkaGVPTfIP1gBgk2T1yFAd/eBgE4DpDSF4lI3NQz\nnw6UJtiYE/lZRAhNCkK4jP2Ms9C+fY6FnijgmqH+tqMwa6HAwRSlmK+lj9Rz\nVRzDJeOWqyE5n2te+CDcpilFtZCC2ANNjDiVblCM9TEYY8QJhAHyjQNQOhET\nPvrEa9ubBMmuKDxslIhLFt2c/xmR6oy/+wRR4OFnsgNv4q3urk/2AXMUsWg7\nXmsAYbXZCpimmEDIxQnwrkOP3KyuwZxLB9PKm53uCEX229hnonfViMIj0gsV\n7jUjEaTDfhrAwZ4B8OfDmRHf5rksKbGhX7aVPzN9BM4CXzWhT0QDZXJV1ubN\nfvJ4\r\n=a0o2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEYwCry1CF1jcfrUsneXesElo8smvrvdLhlv4YncW/bjAiEAnsNAPdYapyRRPuF2cAu60zuJwPqOudLDjx0aqFB23j8="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.6-develop-67_1527438313393_0.09370825579506592"},"_hasShrinkwrap":false},"2.3.7":{"name":"grunt-galenframework","version":"2.3.7","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.38.3","galenframework":"^2.3.7","geckodriver":"^1.11.0","snyk":"^1.70.0"},"devDependencies":{"conventional-changelog-cli":"1.3.22","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"c4254fbfecd9f9e702265532fbcd406337365c0a","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.7","_npmVersion":"5.8.0","_nodeVersion":"8.10.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"integrity":"sha512-+s+sSMf+asWwYg4ibQtClG2Q6SoYGP2NK25T7yrE5+zJ5UJiG8y33abHYjktyF7LKN9YFGrsbgRai5dCbS+lfA==","shasum":"34bc9d98d0436698b010bc15a9795d06ce003c62","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.7.tgz","fileCount":5,"unpackedSize":46622,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbCt1iCRA9TVsSAnZWagAAVLYP/iFjsKC6THTyy386Fm0J\ncR7Ce0G8vna2UMLjPHPrYKH1/xQ2YtoYlVkBkGHUucUimkaFwHITIBpWnLuU\nOtwO+CdKDoD93rsxfmSpy8485sXnBKbMO+60ZJg7s8qrQ9FYPUtsY6mk9EoS\n/hki/esrgeBF+xBQhyRWsnbRUw2tWfEgeQGDyTIr+fYNrhTKXcoew5rL/nOI\nWfMeL6MjnLUjnC2JfPgptcIyhzKovE4QOEASXdbn0A+lmBN25qxw+S20eFKG\n+Mkm7Az5t4Gviepj53kcpNSaPBtRRLVZDa09iNGcHBo5R0Lo7keDeUvNPebR\nId2DULiJVaRCTBE1IBAv5G/bNtkhGk+SMtGv7biflAzp8+Sfcpgcai2X2Ktv\nc9V+WSum6vAnW0s6MdyoQWIV74YnClLRT5BFlZcfTCIAuA5W8FPEmf5bvAf/\nfSBIahFYGke9CZBE2cb5lYREIDqksHI+5i1oXhvwPMhs8D8mkKgJxWgsrZQx\nmKCeBs1/lyESSoVjH13OnCEinjvvZMdu+yDqwJfqheE/Ihdmj16vo0vybJv5\nP9RGxbNUF37+qRwItuKGR29/BESIjD2OtnH/gCvTYUGabJBJLXOzQSHqBqOE\nq0rY6+XQKAsrRXeQ5Sabdc63avT5EQNci35PxZTBASteG/KlfMzK95Y01VLC\n4tg7\r\n=bNA9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICLdzZU6mitYOcu/D5hfeemF5P6Yn58aE+1bCv4kdXkwAiAlP//HmpNqPckRHjGyYhvYK+5uoawF51I3qCpsgRTamA=="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.7_1527438688336_0.4640161100068978"},"_hasShrinkwrap":false},"2.3.7-develop-68":{"name":"grunt-galenframework","version":"2.3.7-develop-68","description":"Grunt plugin for Galen Framework","files":["tasks","lib"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.38.3","galenframework":"^2.3.7","geckodriver":"^1.11.0","snyk":"^1.70.0"},"devDependencies":{"conventional-changelog-cli":"1.3.22","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"c4254fbfecd9f9e702265532fbcd406337365c0a","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.7-develop-68","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"integrity":"sha512-FApsfsGw0S4KviBftELrasmMSaLd2FUlVTFibMxwrJsTX8YX3/sp1k00w1vdMdWsghvwTbO77sdHHCMnl7wUoQ==","shasum":"23968f0d577fb9f8cea8a175a4bce7ec94389ca2","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.7-develop-68.tgz","fileCount":5,"unpackedSize":46633,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbCt2WCRA9TVsSAnZWagAAFpcP/AqQ8+K2A6cKzNA4zT1w\nK+A903tQyl5AL76qJZdNStG0gT84iGsNSzsUFycsxzsiTp76VcbAL5QKC+D3\nN2lDNxO0gSetPg5w6TiCImuNyQd7m3TuCYr+W8MqGTya01ydmEWoYRxiKzGb\nz4ijuoYp3yMNCtx/S+rPJXQhLLWOZpJAbY59mvoMCmVUguKeBapyn2DT+AuM\nBfamdjxDHUMDasbzPnZete+32wghzC/IzpkijElTrN11aqMbqLn6sYUUKcm7\nSVWqNTX3vyYvS36qWICwrCz6TLRFYlZ0qgXp2rMWOZA/0vgD2Cx3IAIWadsx\nl0j0BskaUxPzOkXN4wKIvLl2MH0Cehk2dmGmSjRT/X2A4dqkT7RpyXXu9PvO\n00tldPvjFD6ccrc9NasCCfcYC2ObP8qA82Jp7EKupAS7TmAr2pC8lVghxg31\nhFYIfy1r5VjJeALMd68ovJIWKPk0bWvbEwRHt+ATw9BImXlRWg1IG5CbZ8s3\ncXuFo7ZOOoGsRzQGAPdjbBGD29EK/Eg/w5Yz2xAWmIVtsIAJsoSkK7wf7aZm\n65eUWJAeQqXOxmCjl4V3T6Ep408g3K4t9T78AnnWM5l9WDJuUajvaaOUYQR0\nWY+iT5sq3d/udUyLIWjoOCWfyqI4ie2ksceGPuuiVCJeiwvMi7RLe3Ehjmui\nceJO\r\n=3P8C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgWAk4ERaue8qkktuFDmhJ7TJrmUTpiS/Wczfq2znxFAIhAIn4UorR02q4heQT4q+JOzzoDKaIy5TK/Cd0UY0tL6xa"}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.7-develop-68_1527438741470_0.7981440811074705"},"_hasShrinkwrap":false},"2.3.7-develop-69":{"name":"grunt-galenframework","version":"2.3.7-develop-69","description":"Grunt plugin for Galen Framework","repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.38.3","galenframework":"^2.3.7","geckodriver":"^1.11.0","snyk":"^1.70.0"},"devDependencies":{"conventional-changelog-cli":"2.0.0","grunt":"1.0.1","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"2.9.5"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"825b9d1c01c0de579b28440e6c780cb160dc3329","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework) \n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework) \n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) \n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n<a name=\"donation\"></a>\n> Feel free to **donate**\n>\n> <a href='http://www.pledgie.com/campaigns/33053'><img alt='Click here to lend your support and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/33053.png?skin_name=chrome' border='0' /></a>\n> <a target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AGPGLZYNV6Y5S\">\n> <img alt=\"\" border=\"0\" src=\"https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif\"/>\n> </img></a>\n> Or donate Bitcoins: bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n>\n> [![Bitcoin](https://martinreinhardt-online.de/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n>\n> Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.3.7-develop-69","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"integrity":"sha512-S9sRmy1aUyZIiNkdScfZceYghPfMWTuE9IOnvhADb67k483wkBXSPGScSbJP/x4ZGzOiyEgxKCJ2gkBFLs5fPw==","shasum":"33b05f25316458286bd184c81975780cddeed18f","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.3.7-develop-69.tgz","fileCount":5,"unpackedSize":46632,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb2qu6CRA9TVsSAnZWagAAg/sP/AhUygxRCzjOeXzotR4S\nEsedyHjFlk0zVuEI2G1Vg1xt5WPD/N1c+LkbuTGRGY0iu3DhMaxsWzI1vmQZ\nCSlbM6RjC7/zr1nHmgKbbIO9M9mpMKtEa1Ny9kqrkq+S62SjFXYNP+jICCQZ\nGb1Z4Rcp+sR6GKLkLVq05z5/3C8ZNMjSo1aZXXeu+IxsPSA/3dRKcARSw7nK\nPTm59WC6DXr4/7XcR0aoakj7vCg9ZRioEhbfH7g7IF4lf87pztCstkn6xwuM\nIGn/Kiv6c/Y2NAWkiQkbSlS8HB411PXWWRQ7JfJ3Dbu5gcHwFuB74WtR8KYp\nshOw86MRiM8KPKPIDlksu1YqMhioG+t5ScoRHGa7Zm6BcHXfXonN1J8vMbOb\nCFoo+r29G4SHdTNVmCwUe+ns2RBNAWIwCICOtMJEMwqnJ+j8ZC5JUj3JDUKk\nccF6u2weaJMEblGD9tlhjL3t/QAyPiujZOP/fh+hqsurWhDEc6YnDNh+Mm0/\nOTIIaoVogpA+Us7qMi429w7ruNfG/ASXWovjXxjtnGNXJTiE499nuSkSDzpu\n869tm32GEmaZXLI9FcxZlejgJDp8I8zpFalFIhyDhCjEnKEZYx2h5RjHxbTT\nftSdFpOI9S55kGm126PL3VIxWfhOcEgiaBhVnAhgVDpd8pHFi4SaZ9SmRkJM\n7JHS\r\n=eXMJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHcmV++dkOkO+/Bhc1rLEwxUbNc+Gq/J6LwIsooCnw4rAiEA3mp+KdSOkhE2mZRnIvrBSbREa8z8u8xcevBMWgf9C7A="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.3.7-develop-69_1541057465325_0.2616455131968647"},"_hasShrinkwrap":false},"2.4.0":{"name":"grunt-galenframework","version":"2.4.0","description":"Grunt plugin for Galen Framework","repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.38.3","galenframework":"^2.4.0","geckodriver":"^1.12.2","snyk":"^1.70.0"},"devDependencies":{"conventional-changelog-cli":"2.0.0","grunt":"^1.0.3","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"^2.9.6"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"5aeea9e65b63aac63ad023fed92bf53e8584dad8","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.4.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"integrity":"sha512-RL+DGTw9YOhjPOrAOTmh+TsOsocoZb/ns00DoqKBNsYDz0jlZRwWU7/genyU5tCRaRcMiakZq/+toarHk/UjUw==","shasum":"c763af336add7044145c6e4f50e51e21ad8bf7ff","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.4.0.tgz","fileCount":5,"unpackedSize":47023,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3vzDCRA9TVsSAnZWagAAtKcP/RGYfJHFUBih/60YqWYM\ns0Xud4c8jOPATot6bpbnf0259WrOWk60LGSQoLyBtmGvRdC/I7FOq9CQi9lK\nq7FHNTmqOgXp5xiWpPZhoARA2/umynrmG0TsWr9B5EB7gJOx/x+igRsv8wib\nqLD47IyvgqmFj07LwJEY+/94pi/4wD61hB9rpB5fkoWY8d6lvWsJR8Qw3k7h\n60Cu4eMslfxKGYhQzWHb3ULD+z4wSJlZSusU2v8s4t8fyIVaAdTr8oCFOCkv\nT28GX6PjsallXMIFosZWTD1ivp+IkkAb+K2WQ5oVlODS6iGhejH2PhPdAyKM\nfFxrDof0GD0o6Vr0w56G1y1Y4fFDmKEkH9FTn7PdEXhOoaO0DfxMIkoKmf4+\nBF436Xs8qzhJDBOzQALTfH77YFkQfKrp9OJY36EMBBrHqButteD53kQjho+W\n/1UKVCTKuLaYTyQ3aZ5AOrC75Sppsf2ourGURhI+fsn/op9dVXHyQqtXKVqX\nxxR/7wAt3ttjlGLNiSF7mqdG/6BM07bv0/Ns377McZsrmzqLXx+Q7uP2wZ3p\nr4qB5Vb1KuFqc3jQdtIRNFKbDxfA43wv+FY+FiWdjZnhFft4Oy58zNY51onS\ns/+R+eFqaliG3YaURdAztL4WoMVxIcO9rcdEZuUbxNLnEuFQI5FtsVE9UXDH\nAjxu\r\n=WSC7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFs7CX7XRFav78C4DrO/w2DynMwdmCoPjOTma5RVuYq/AiEAlrjs5kkkAotSRjUqfRJ1p5B+4ZG8tpSAb+DAJexkjT0="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.4.0_1541340354923_0.30041501005949645"},"_hasShrinkwrap":false},"2.4.1":{"name":"grunt-galenframework","version":"2.4.1","description":"Grunt plugin for Galen Framework","repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.38.3","galenframework":"^2.4.1","geckodriver":"^1.12.2","snyk":"^1.82.0"},"devDependencies":{"conventional-changelog-cli":"2.0.0","grunt":"^1.0.3","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"^2.9.6"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"f88a1271537886e500a821c7131d3a6b8caabac6","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.4.1","_npmVersion":"6.4.1","_nodeVersion":"8.14.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"integrity":"sha512-wXzrNWBqyZ2b542BNLDSPzf05T/Kp2JWSUM82hzE3ssKCF+4mdNTvCLLEwH24WL5f12YPPDxCYlcfve55cCN0A==","shasum":"a7bd3fcd14f45f254ce9bb522fc54bee812127cf","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.4.1.tgz","fileCount":5,"unpackedSize":47411,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcH4UWCRA9TVsSAnZWagAA1LwQAJ6dpkFK+YeAA+xQ4RXE\naRDXEgm6trK6bOUYUNsug7ajUzyhr1HVgRFRNkbPPbTCM78YRX/5yMeux4SW\nkP01JQIyoAwIF7fbyhBCV3PrxVdB1kTdsAWoxvaHwC4gGC9u3IAxu43vjAzy\nuWtW69jfspEv0cwDqwo6LXO46QlwpQ4cKF3BIA/MANHqxr/arEbnRk9G1A6K\nmvyrTRjkXbfUDyR63k9FW0dpG/U5jdokiHCXsyU0xl6sowTSZhUTXUEwFlE4\nkmlLpQU+ywK1r6TBd7WQwuj4DJPauVAAUEq49YYdSNP7QjRDzFudhNp3nzDb\nGphRcYAsqpLozifGSXK/K/WTTGcSEC+LApK0ngo+q49rNNr+VOUvbVuRAUha\nS+gl2o1ekzgv3UJ4oUVymP+XUMtR7bkuWSVGjMy4ceK0pMCT5cKv/loJOaY9\nox1thsll6oOKvTk3FYlOG7albZYVvVcpGvLUJpSPrJtBJv+38EjTJ9WGcRGK\nIn+Dsuw3TJpiDJltHIYLYRxuN5EtsOyAF1a8E1NZb6bLGAol7uEDMoYfntLG\nVVy8zwD0h8a0d045AtlNodMZPRwrcLZ4cFGgTdY2wNWvxaf+lmb8tMUUPuA6\nlfwfVwtN0LIwsd6j4dFxCwZrzMkbT6fb6RUbaFjpKzboxARzlEbsWmD/+tfZ\njJM8\r\n=1e75\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDg6GfgJ9vd7IfyZ8PmeorO6UB3v+08sYRo9w4bFq4FpwIgSnA1UPHsTAikTXIcZUmdvuMB6+pui32ETVkFry7tqo8="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.4.1_1545569557573_0.6064298730638502"},"_hasShrinkwrap":false},"2.4.1-develop-79":{"name":"grunt-galenframework","version":"2.4.1-develop-79","description":"Grunt plugin for Galen Framework","repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.45.0","galenframework":"^2.4.1","geckodriver":"^1.14.1","snyk":"^1.82.0"},"devDependencies":{"conventional-changelog-cli":"2.0.0","grunt":"^1.0.3","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"^2.9.6"},"scripts":{"test":"cd test && npm install && npm install .. && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"821d4185c00b39f7c6b5d0d2fccba57ea5f6059d","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework)\n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework)\n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE)\n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n\n## Donation\n\nFeel free to [donate via Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=H8TR8246RCDJG) or [Bitcoins ](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D): bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n\n[![Bitcoin](https://martinreinhardt-online.de/assets/img/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.4.1-develop-79","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"integrity":"sha512-/j5Wh2BD9Olx5OIHWI3C2l34jAJcKCBqgARGiqY314uUnXccLpD0saEPf3VSsHlARqWe1xC3j2tiNChjL8NBnw==","shasum":"6f7227aedb0dc79470a631f2066d9f6c42a69f2d","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.4.1-develop-79.tgz","fileCount":5,"unpackedSize":47098,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLyMcCRA9TVsSAnZWagAAUZUP/1pugsTCgIE0kPBKx6wg\nynr33w93SG/I7uyjU//8lAsCp7Qy8XUMp+QhA5VSfIlmGV+qB7eaf/9HNkEB\n/RBmYLzUDqFTUFPMkfiw2iSYFwCRGOzg+VCdaWWDDp2dr7y8GMDcVYRiKLzW\n+kKiV7Om2pzTtql0lVeFqiQQE7DCNnlmDSUtB/UQ7XWJOpzunVO4+7uuaPn4\n8v9fScXka32xICvqqUmLYyjUgTDtbgf0DUHHe2Yd7xwHcRpFmEFpyv5+3Kxm\nrpbSulaQNRkFG3k38Ad4sfbMAn2dneVBUonQRG0RS7I7AIybY0Mb2GeAi93s\nLr2qIhIDZXwF4PF+RmJ59+5uK2oxzJYH5U+uDymtdq44ujqSq9B+Pf1hOSkA\ns/NouAsczk2LCLPrXmjEDclAeRxiy+HjeWFbMJJh2CFKyOkVgJcz2tCdAaIH\nLFRN6dqayy+2o9HfeXrk601F9t5hRwPaAuQ/xA1Mbm4U5pTdjSwXmlnjRRS8\n490QvKiuAlOgR1q3ystsKegCxJr6pSw3TsJf2OxxHZ7pp1fEVcxckl7sBXj9\nj4QGybPNBNqG45EhptWQ3DEzm/2reYK3CoQpofFv7+VIXNhlqZRVLJrcyIIk\nZz8TS4Liw4FB89R7th4qztBEhDYDh4nkXhaIFdxH5+I4HjUnPqZbbJghui49\ni0/7\r\n=DgNd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEzlTrzdvLCtNCE0T2MOiRC8fCiuUD1cvPLzmk4+3pLJAiBul5xmfrIsup2Mdt+pjIdCbN8SsZY5OeeAg37m4mRpRA=="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.4.1-develop-79_1546593051423_0.5283395978316265"},"_hasShrinkwrap":false},"2.4.2-develop-80":{"name":"grunt-galenframework","version":"2.4.2-develop-80","description":"Grunt plugin for Galen Framework","repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.46.0","galenframework":"^2.4.2","geckodriver":"^1.14.1","snyk":"^1.121.0"},"devDependencies":{"conventional-changelog-cli":"2.0.0","grunt":"^1.0.3","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"^2.9.6"},"scripts":{"test":"cd test && npm install && npm install .. --ignore-scripts --no-save && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"27567fa8ec409fe42bd59d34b2dd57eeb0819a31","readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework)\n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework)\n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE)\n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![npm downloads](https://img.shields.io/npm/dm/grunt-galenframework.svg)](https://www.npmjs.com/package/grunt-galenframework)\n[![npm downloads](https://img.shields.io/npm/dt/grunt-galenframework.svg)](https://www.npmjs.com/package/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n\n## Donation\n\nFeel free to [donate via Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=H8TR8246RCDJG) or [Bitcoins ](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D): bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n\n[![Bitcoin](https://martinreinhardt-online.de/assets/img/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.4.2-develop-80","_npmVersion":"6.4.1","_nodeVersion":"8.15.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"integrity":"sha512-Nm8WKy1mvCFuJNjs9gV5SfA74Kst0GxVQLoV0gls9SoiLZfSaCgx9KUhCREYxt/aPsraRBCySsa6SLirtUy11g==","shasum":"d246086bfef9c4397a9052f3a4cf09b7bf41ed82","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.4.2-develop-80.tgz","fileCount":5,"unpackedSize":47380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWQ7MCRA9TVsSAnZWagAAIOUP/2LEoNAJbedpSpSfUGqR\nKDiIoxcKNCncd+O7WfgF1QE40aa24KFpudUQQKkf5gI/XwAqX9AnXT/4khJe\nz0KV3NAr96KHFeuPnAlQIWD/lUfE9jswHG/cL5GOKl9w9Yjc8rkAnrBWKUv7\nN7w9COfQCB+VoOqNR/oDR+9AkzzsCTM/YVLbJE9/BtxHuayBWAehhXdqglp4\nIgaM4w76Cu37ADdojAANWgCLruUX9oXROKJkZFOhH5OcNTzLRvtw9MjnOVpL\nVZLDiq622Y8qrFp0/o+h7XV1RDBf9mayHnN7WcGT1wl879pW222nunRB3FKu\nTxfFXBGZY72s3bqWDDRSVuZEYpnOpwgSwdew7I0iL+/yVmKn5dYKrOAtmRnw\nKWfbx5fKN5U2NrN3A/06MiX3brg3ZfwbdcFRRoQh/Q0qH7VrNFlinr8fUCoh\nX6l1NUvThM9b1ht0Vb8jLCd+K31fE2xZCmXszCFoJBadWPyk2xVjf6LEXd/p\nOdMxEXgrKcLVK7QpH+Y3zs/df/K5WvgCawvXSCe0mIz4Rk1/D5yz3CVdqM+v\nb6ypPz0WL8/1fgnuh5OhZWmC2hmJ6sgEOIY2uUIN0npd/OpE73eQcJ7lK4f6\nmNEbLrpu6WxzaM67B5+tfBDZk+IYPGcg0uu07DgiHXtT2gkHriwVvQ90IWYv\nreuw\r\n=by/L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHyFUAlAvP3JEXqnM/DYHuzW4K2gqO8QXIDiSIAAR6OiAiEA6vOXThDMCYe1FwITL5y2ezF1bR4iBI9Di1IQETRzxQc="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.4.2-develop-80_1549340363684_0.582729251815175"},"_hasShrinkwrap":false},"2.4.2":{"name":"grunt-galenframework","version":"2.4.2","description":"Grunt plugin for Galen Framework","repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.46.0","galenframework":"^2.4.2","geckodriver":"^1.14.1","snyk":"^1.121.0"},"devDependencies":{"conventional-changelog-cli":"2.0.0","grunt":"^1.0.3","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"^2.9.6"},"scripts":{"test":"cd test && npm install && npm install .. --no-save && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"147c928ee4755b46c699c722582cfa09eeea5718","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.4.2","_npmVersion":"6.4.1","_nodeVersion":"8.14.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"integrity":"sha512-WrW2aUZo9erBePvqbfHZHgbbC+YlAID4/c45xLkS0OMi/Oem42tD5nW0VXLMA+2ybkJRth84f6xWRim2Sw483Q==","shasum":"822b2e6e315413d5cab86b529f81d80218d09eca","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.4.2.tgz","fileCount":5,"unpackedSize":48099,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWQ/0CRA9TVsSAnZWagAApigP/jKlzzt7m7Zxba9WTNKs\nAh6HCUCTmU0Ph2TyGbjZ1rJcKCOQ5Mh1nwf+maLjAqJJAMdzClVAxIPVDNb5\nXBIjCLeIMD88L7kfT3dbcIS0Qsy2tQfYUXo5pzesnh2OEwZ0StJlLPcHblPG\nMbPL3wlT61qArugQek5rFXZijJ9U7F53wmp/CE5bqJO+Q8e+2xFZLBq5We6q\n0kqlrrMlavodz03GuAmbBz9PkmwaSBpiFwE5FDGKKXPBLXpbZW54hrr/7FFP\nW3C3kcrJ45iSzSZZo5qCEUgqH/nFeyzGRLOiL3ZM21SHByG0bMBd/CLZHcMr\nY5VeXsWY4VkujYyzISjpC6Fpx4xv/8jzGdRXjRF4mA5g7+XpQkMG84R/Oj2V\nij0sgPLwQEbHJ9WTICUihlq4+xw/+q0XeangQn2lpZI8JvMnwpLezLXCfQ+x\nsCSuPUQB9upN+Gu56UvfEP5T38QtFhyMZ+6lCAtVdZU8R6rWlUE1CEuVfSd/\nfiUJuAHx6bDscIQupfAiMaV0kDHaihwPFvlm6eP13g/MMGXYCmoXu75c23R9\nR6Rxths7Iu//Ow6N3xmhykQAZioDQtnNojotpa38qMy349vEjOVWuO0EPdJJ\nRIytk7Ebcn7vJuv1kUwaj4kqAFuWGOaSiuLFDiGHEqIelXkbKFPVH/NtSOaY\n45QN\r\n=r+/O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE57dfruFd8oGgmpIBQ7cBg6+cagYH/9zDLAYxeK/yWqAiBydjgbAa9FpqhIHfoomMCTHMZwDN65Zp/nDUIqhmlivg=="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.4.2_1549340659303_0.7880714208304849"},"_hasShrinkwrap":false},"2.4.3":{"name":"grunt-galenframework","version":"2.4.3","description":"Grunt plugin for Galen Framework","repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^2.1.5","chromedriver":"^2.46.0","galenframework":"^2.4.3","geckodriver":"1.14.1","snyk":"^1.132.2"},"devDependencies":{"conventional-changelog-cli":"2.0.12","grunt":"^1.0.3","grunt-cli":"1.2.0","jsdoc":"3.5.5","jsdoc-to-markdown":"3.0.4","jshint":"^2.9.6"},"scripts":{"test":"cd test && npm install && npm install .. --no-save && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"8db42ec37a62a8a5858b748cbc8a0b0a7bf85be7","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.4.3","_npmVersion":"6.4.1","_nodeVersion":"8.14.0","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"integrity":"sha512-39szZzhY++GsuDiCbaz+wlH5bkLMOjPYeYONrCrBxZiceuL3NO0R1jn8vd64FOoBhmyQ+o1VZHGJbj9DaHS2nw==","shasum":"f839b23c882b563e288a4a0a59651830cfcbc9fb","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.4.3.tgz","fileCount":5,"unpackedSize":48292,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcamxGCRA9TVsSAnZWagAAjaQP/0n6kGVI8AtTt/OthonC\nWMGSCEtH2T6/f6k2h+IafSWtBjhd/Plrz/UHMgoJT6FFBI64j8O1qnaXUX8U\nSgMzWDQFTdxXO/bwF0UDnGsbg8zb7SQfT7VSH9xbdZ7zoz4p0qNlL0bHPc75\nlotQs0s4arQFb7n1UtPJMkMaajGQQkWOZOwtDjnU4XHYQC4R1KQcWOTlVhKT\nRhxAbttUTryNYMU7dBbTQ+R5PkO/EfnXOqTzJLavQ2In8iqt6SSZCMzPLml9\neQ2trAzNNDohHMfpXL9aAIbAEGb8NzddoP7pVMSrKdZ/FL3oZSneLEucOEqY\n72MeZa/hAbvGlRKJEHKYx7usmbQjmXhOiQmeA2hWWGHunPCwTMJX7sb7HNYR\nz0GKDeQONLDllOrHTuACJpn/4cY50jcJgyPZFV6QR42XdP+0LjS9nc6vTMCf\nwaztHaz3LC+FmHyYTBptM6d6bgaRmCJAZn9zlagOyoXslfNW47HhSz7gWB2w\nnfzJj2U1BBbr37TLicE6NB0kha1dkTxYeZzOJbKetoqDmYQJ/+gYx7gSMT4P\nZftF9CEkcr+UbCXq1GnM+X1BF4HzU7qoeQ0lI/f6G4+I3uQtmvMyINjD5qXh\n07/M819jqLzcDAuS3/b70o1ZYwTvACHRxMog7XN6tcg/an2MDOF7no0pEwa7\nV17e\r\n=rzGm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGf83G5YShep6x/+LruQ4rU23o6AiMxJnTE8Hr7jNmnMAiBkAKNYE99eTd2N8LYx2mWrgYIddYb+Ce/cffK6ukzxkQ=="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.4.3_1550478405674_0.29080238146820614"},"_hasShrinkwrap":false},"2.4.4":{"name":"grunt-galenframework","version":"2.4.4","description":"Grunt plugin for Galen Framework","repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"dependencies":{"async":"^3.0.1","galenframework":"2.4.4","geckodriver":"1.16.2","snyk":"^1.189.0"},"devDependencies":{"chromedriver":"^76.0.0","conventional-changelog-cli":"2.0.23","grunt":"^1.0.3","grunt-cli":"1.3.2","jsdoc":"3.6.3","jsdoc-to-markdown":"5.0.0","jshint":"^2.9.6"},"scripts":{"test":"cd test && npm install && npm install .. --no-save && grunt --debug","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:add":"git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md'","release":"npm run test && npm run changelog && npm run changelog:add","release:major":"npm version major && npm run release && npm run version-and-push","release:minor":"npm version minor && npm run release && npm run version-and-push","release:patch":"npm version patch && npm run release && npm run version-and-push","version-and-push":"git push origin && git push origin --tags && npm run publish-and-merge","publish-and-merge":"git checkout master && git merge develop && git push && git checkout develop && npm publish","snyk-protect":"snyk protect","prepublish":"npm run snyk-protect","prepare":"npm run snyk-protect"},"author":{"name":"Martin Reinhardt"},"license":"MIT","engines":{"node":">= 4.4","npm":">= 3"},"snyk":true,"gitHead":"76399c08b65c3aee319533e091d6752a22035cfb","bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","_id":"grunt-galenframework@2.4.4","_nodeVersion":"10.15.1","_npmVersion":"6.10.2","_npmUser":{"name":"hypery2k","email":"contact@martinreinhardt-online.de"},"dist":{"integrity":"sha512-CAtIHSqNcd2tre40LKSHl1U91SnqJY/je1aYf+zECL77LYRTEeWUG9Q+6WbB/DYQT6+iv+GKwFMVxBPdPBcmsw==","shasum":"685f18e3f72f24acc7281103dac41810aa4bd18f","tarball":"https://registry.npmjs.org/grunt-galenframework/-/grunt-galenframework-2.4.4.tgz","fileCount":5,"unpackedSize":49322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQn4cCRA9TVsSAnZWagAA4foP/jOny3boVuJTihPgYZFM\nKd1RB+pNsTX95uNL+U6O2u2jq8LFjO557nsMm8sfTG8SF1ww3600ebe7uzGR\naOf6akFwOIlK6d/n0HzHJAQWpYsFlfltwP7HIx09MOAFUvT8HTUg9Sgk32G4\nLqqV7MI0HsynVr7eDzKVa+90lAb5r3SeI0ShFDHL3COdCB2hys0Jae+V1e+K\ncxCxEYjBdd7VOixax0nnY2CCsbMSpOqjXDmK6lyGcdgHL6fbpJTWjBtsYZt1\nvo6GjQZeUYAUV2oS8B61RM1cqu5Tadmwf4d2gq3orkAo5xMy80/km1rvLadQ\nF+LCflDl4DfTEyMuu/6VLCpFc5vukOPq8q0cxRJFCjV9QulXlKXz1P46BOnj\nrZvxlPXyCULVfD5v2De1mQqb/MM9EZ5szVZCujYda/k/fcSTJbovhoER8J/I\nch3ETdhp/Ym8Wi4c+kqcMRSMjY5NAgodCWuwCe/y7mVZBcwEqDx4X8Fb5NcX\n7XNB5wY1ju06R9xqI2z8C51B28xokX+hfM8FDmLG2OpYdlxOnfstUSAjsCNu\nUPVJqAhXCscq2DPAhPudcy33QHZOm7Pp3vfj9ZYcITK89Gf1ZHayYa+9xc6X\nD11dKHTXl1g9HO97P/o8ki66UqkIeEC21pX9PuhSk8G27rT9jtW6lMRoTerg\nR4I1\r\n=nF9d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGaqDlsshNJ81KsGxpqYI/EyefRJLag5aHjvRh+/EakdAiEA2r7RARfXEO+pkRWc9oi5XjmDcpuBPVUQH8N/VvZ82i0="}]},"maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-galenframework_2.4.4_1564638747326_0.7688987238477969"},"_hasShrinkwrap":false}},"readme":"# Grunt plugin for the Galenframework\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/hypery2k/grunt-galenframework.svg)](https://greenkeeper.io/)\n\n\n[Galen](http://galenframework.com) allows automated testing of look and feel for your responsive websites.\n\n> Grunt plugin for [Galen](http://galenframework.com/) testing framework\n\nThis module downloads the GalenFramework for you\n\n*Warning* - Galen framework requires Java runtime environment to work. Java is ***not*** included in this module.\n\n[![Build Status](https://travis-ci.org/hypery2k/grunt-galenframework.svg?branch=master)](https://travis-ci.org/hypery2k/grunt-galenframework)\n[![Build status](https://ci.appveyor.com/api/projects/status/wumeagy245308lc3?svg=true)](https://ci.appveyor.com/project/hypery2k/grunt-galenframework)\n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE)\n[![npm version](https://badge.fury.io/js/grunt-galenframework.svg)](http://badge.fury.io/js/grunt-galenframework)\n[![npm downloads](https://img.shields.io/npm/dm/grunt-galenframework.svg)](https://www.npmjs.com/package/grunt-galenframework)\n[![npm downloads](https://img.shields.io/npm/dt/grunt-galenframework.svg)](https://www.npmjs.com/package/grunt-galenframework)\n[![Known Vulnerabilities](https://snyk.io/test/github/hypery2k/grunt-galenframework/badge.svg)](https://snyk.io/test/github/hypery2k/grunt-galenframework)\n\n\n## Donation\n\nFeel free to [donate via Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=H8TR8246RCDJG) or [Bitcoins ](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D): bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D\n\n[![Bitcoin](https://martinreinhardt-online.de/assets/img/bitcoin.png)](bitcoin:3NKtxw1SRYgess5ev4Ri54GekoAgkR213D)\n Also via [greenaddress](https://greenaddress.it/pay/GA3ZPfh7As3Gc2oP6pQ1njxMij88u/)\n\n\n## Getting started\nIn the project directory run:\n\n```bash\nnpm install --save-dev grunt-galenframework\n```\n\nThen add it to the Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-galenframework');\n```\n\n# Preparing the environment\nGalen testing requires three components to run through your tests:\n\n1. Project URL address. (`http://127.0.0.1/` counts, of course)\n2. Galen testing `.spec` files. ([read more](http://galenframework.com/docs/reference-galen-spec-language-guide/))\n3. Target devices / display resolutions.\n\nYou might find these articles helpful during the preparations:\n\n1. SauceLabs Device Configurator: [link](https://docs.saucelabs.com/reference/platforms-configurator/)\n2. SauceLabs Screen Resolutions: [link](https://docs.saucelabs.com/reference/test-configuration/#specifying-the-screen-resolution)\n\n# Writing Galen tests\n`grunt-galenframework` exposes a useful `gl.js` module<sup>1</sup>, so you can spend more time improving your project, rather than writing the test files.\n\nTest files' main role is to assign  `.spec` files to their target pages of the project. For example `example-test.test.js` can look like this:\n\n```js\nload ('../gl.js');\n\nforAll(config.getDevices(), function (device) {\n  // Just like unit test's `it( ... )`\n  test('Example on ' + device.deviceName, function () {\n    gl.openPage(device, config.getProjectPage());\n\n    gl.runSpecFile(device, './test/example-test.spec');\n  });\n});\n```\n\nThis test suite runs the `example-test.spec` file against the main project page.\n\nRemember that you are not bound to the `gl.js` framework and, if you are familiar with vanilla Galen API, you are welcome to use it with `grunt-galenframework`. ([more on Galen javascript API](http://galenframework.com/docs/reference-javascript-tests-guide/))\n\n<sup>1</sup> Full `gl.js` docs can be found along with task configuration reference at the bottom of this README.\n\n# Configuring your task\nExample configuration for a simple Galen task:\n\n```js\ngalen: {\n  local: {\n\n    // Check all test.js files in the test directory\n    src: ['test/**/*.test.js'],\n    options: {\n\n      // Run test on the localhost:3000\n      url: 'http://127.0.0.1:3000',\n      devices: {\n\n        // Run tests in firefox browser, scaled to basic desktop resolution\n        desktop: {\n          deviceName: 'desktop',\n          browser: 'firefox',\n          size: '1280x800'\n        },\n\n        // Also run them in firefox, but scaled to iPad screen size\n        tablet: {\n          deviceName: 'tablet',\n          browser: 'firefox',\n          size: '768x576'\n        }\n      }\n    }\n  }\n}\n```\n\nNow just run the command `grunt galen:local` and enjoy the show!\n\n# Grunt task options\n\n## options.concat\n> Combine all galen test files into one to speed up the testing process.\n\n> *Warning* - Do not enable this if you wish to know the number of passed/failed tests. If enabled, number of tests will always be *1*.\n\ndefault: ***false***\n\n## options.project\n> Object containing basic information about the project.\n\ndefault: ***undefined***\n\n## options.project.url\n> URL of the project. This URL is prioritized over options.url.\n\ndefault: ***http://127.0.0.1:80***\n\n## options.project.name\n> Name of the project. Can be used in test files via getProjectName().\n\ndefault: ***Project***\n\n## options.url\n> URL of the project.\n\n> Overriden by the options.project.url, if defined.\n\n> Project URL is not necessary, although it is passed to test files via configuration and can be easily read in every test suite via getProjectPage() and getProjectSubpage(subpage).\n\ndefault: ***http://127.0.0.1:80***\n\n## options.devices\n> Object containing device definitions for tests. Each device has to have at least three parameters defined in Galen docs: `deviceName`, `browser` and `size`. ([read more](http://galenframework.com/docs/reference-galen-javascript-api/#createDriver))\n\n> If you wish to use grunt-galen with Selenium Grid (especially SauceLabs), you may also want to define `desiredCapabilites` for each device. ([read more](https://docs.saucelabs.com/reference/test-configuration/)) ([drag-and-drop device configurator](https://docs.saucelabs.com/reference/platforms-configurator))\n\n> *Warning* - All desired capabilities ought to be strings. Therefore tags' arrays, boolean values and numbers have to be cast to strings in the Gruntfile.\n\ndefault: ***{}***\n\nrequired: ***true***\n\n## options.config\n> Set to `true`, if you want to use a config file.\n\ndefault: ***false***\n\n## options.configFile\n> Set to desired config file.\n\ndefault: ***''***\n\n## options.htmlReport\n> Set to `true`, if you wish Galen to generate HTML report for every test suite.\n\ndefault: ***false***\n\n## options.htmlReportDest\n> Set to desired HTML report directory.\n\ndefault: ***''***\n\n## options.jsonreport\n> Set to `true`, if you wish Galen to generate JSON report for every test suite.\n\ndefault: ***false***\n\n## options.jsonReportDest\n> Set to desired JSON report directory.\n\ndefault: ***''***\n\n## options.testngReport\n> Set to `true`, if you wish Galen to generate testNG report for every test suite.\n\ndefault: ***false***\n\n## options.junitreport\n> Set to `true`, if you wish Galen to generate JUnit report for every test suite.\n\ndefault: ***false***\n\n## options.junitReportDest\n> Set to desired JUnit report directory.\n\ndefault: ***''***\n\n## options.testngReportDest\n> Set to desired testNG report directory.\n\ndefault: ***''***\n\nexample: ***'report/testng.xml'***\n\n## options.seleniumGrid\n> Configuration object for a remote Selenium Grid.\n\ndefault: ***disabled***\n\n## options.seleniumGrid.url\n> URL address of your Selenium Grid.\n\n> Overrides options.seleniumGrid.username and options.seleniumGrid.accessKey. (Either is assumed to be contained in the url or not necessary to access the Selenium Grid)\n\ndefault: ***undefined***\n\n## options.seleniumGrid.username\n> ***(Only for SauceLabs)*** SauceLabs username.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.login\n> ***(Only for SauceLabs)*** SauceLabs login. This most of the time should have the very same value as `username`, unless you use separate accounts across your team.\n\ndefault: ***undefined***\n\n## options.seleniumGrid.accessKey\n> ***(Only for SauceLabs*** SauceLabs access key.\n\ndefault: ***undefined***\n\n## options.nogl\n> Set `true` to disable gl.js functionality for test suites.\n\ndefault: ***false***\n\n## options.cwd\n> Working directory. (if enabled, gl.js will be created in that directory)\n\ndefault: ***./***\n\n# GL.js Reference\n\n`gl.js` is a wrapper for some Galen JavaScript functionality, aimed on making testing easier, faster and more intuitive.\n\n## Include\nTo use `gl.js` in your test file, you have to load `gl.js` library.  `gl.js` is created on runtime in your `options.cwd` directory, so, for example, if your tests are placed under `test/` and you haven't modified the `options.cwd`, you should load `../gl.js` in your test suite.\n\n## Usage\nWhen included, `gl.js` exposes its public interface to the test file in the global scope.\n\n## Public gl.js API\n\n### gl\n> Main functional interface. Implements several useful functions to speed up your tests.\n\n### gl.openPage ([Object] device, [String] url [, [String] url, [Object] primaryFields, [Object] secondaryFields])\n> Open target page in the browser on a target device. If page times out, test will be failed.\n\n> If pageElements is defined, Galen will attemp to fetch these elements from the webpage.\n\n**device*** - a device specification\n\n***url*** - a target webpage url (see also config.getProjectPage() and config.getProjectSubpage())\n\n***primaryFields*** - a collection of selectors for elements needed in tests ([galen docs](http://galenframework.com/docs/reference-galen-spec-language-guide/#Objectdefinition))\n\n### gl.runSpecFile ([Object] device, [String] file [, [Array] tags])\n> Run a test file on the target device, on the current webpage. This is what Galen is for, after all.\n\n**device*** - a device specification\n\n***file*** - a path to the `.test.js` file\n\n***tags*** - a collection of optional Galen tags for the test\n\n### gl.quit ()\n> Terminate all devices and finish testing immediately.\n\n### gl.cleanCache ()\n> Remove all elements, fetched from the current webpage, from the cache storage.\n\n### config.getDevices ()\n> Retrieve devices list for tests. Compatible with Galen #forAll().\n\n### config.getProjectName ()\n> Retrieve project name. ('Project', if undefined)\n\n### config.getProjectPage ()\n> Return main project URL.\n\n### config.getProjectSubpage ()\n> Return main project URL with appended subpage suffix.\n\n### config.getSeleniumGrid ()\n> Get Selenium Grid configuration. Exposes two values:\n\n> `enabled` - Selenium Grid enabled flag\n\n> `url` - Selenium Grid url.\n\n# Examples\n\nExample projects are presented in the `example/` directory. It is sufficient you go into the directory and run `npm install && grunt` to test any of the examples there.\n\n# Testing [![Sauce Test Status](https://saucelabs.com/buildstatus/gruntgalen-sl)](https://saucelabs.com/u/gruntgalen-sl)\n\nGrunt galen has its testing script `npm test`, which launches an example on a current version of the script (does not load a script from NPM, uses `tasks/galen.js` instead).\nExample includes both local and remote testing.\n\nSauceLabs account for this project is [open for everyone](https://saucelabs.com/u/gruntgalen-sl) who wishes to test the module on a Selenium Grid. Account credentials are available both on SauceLabs page and here:\n\n```js\nlogin: 'gruntgalen-sl',\nusername: 'gruntgalen-sl',\naccessKey: '5fa3a9f6-a912-4294-b254-6041410702f5'\n```\n\n# License\nMIT :octocat:\n","maintainers":[{"email":"contact@martinreinhardt-online.de","name":"hypery2k"},{"email":"michael.seel@nexum.de","name":"michaseel"}],"time":{"modified":"2022-06-18T15:03:12.940Z","created":"2015-12-14T13:35:48.747Z","0.5.5":"2015-12-14T13:35:48.747Z","1.0.0":"2015-12-15T06:03:17.562Z","2.2.3":"2016-03-24T20:20:01.090Z","2.2.4":"2016-04-01T07:56:07.378Z","2.2.5":"2016-04-15T11:53:57.307Z","2.2.6":"2016-07-12T03:19:49.105Z","2.3.0":"2016-09-05T04:47:38.198Z","2.3.1-6":"2016-10-14T18:04:10.256Z","2.3.1":"2016-10-14T18:06:53.019Z","2.3.1-1":"2016-10-14T18:09:06.698Z","2.3.2-dev-7":"2016-10-14T18:10:01.254Z","2.3.1-2":"2016-11-10T05:26:36.865Z","2.3.1-9":"2017-02-09T11:39:22.878Z","2.3.2":"2017-02-09T11:43:50.428Z","2.3.2-5":"2017-02-09T11:44:54.000Z","2.3.2-6":"2017-02-09T11:45:39.971Z","2.3.2-1":"2017-02-09T15:55:15.113Z","2.3.2-7":"2017-02-10T08:26:22.434Z","2.3.2-10":"2017-02-10T08:31:13.484Z","2.3.2-2":"2017-02-27T03:47:59.789Z","2.3.2-3":"2017-02-27T04:00:42.669Z","2.3.2-4":"2017-02-27T07:25:09.593Z","2.3.2-develop-11":"2017-02-27T07:29:17.499Z","2.3.2-8":"2017-02-27T08:12:17.525Z","2.3.2-9":"2017-02-27T08:20:32.636Z","2.3.2-11":"2017-03-02T10:00:47.202Z","2.3.2-develop-12":"2017-03-13T09:07:02.346Z","2.3.3-develop-13":"2017-03-13T09:08:39.645Z","2.3.3-develop-14":"2017-03-13T09:12:34.746Z","2.3.3-develop-15":"2017-04-03T02:53:20.975Z","2.3.3":"2017-04-03T03:44:34.242Z","2.3.3-develop-16":"2017-04-03T03:45:10.466Z","2.3.3-master-9":"2017-04-03T03:46:40.964Z","2.3.3-master-10":"2017-07-20T03:37:30.989Z","2.3.3-develop-17":"2017-07-21T09:00:12.951Z","2.3.3-develop-18":"2017-07-21T09:53:06.767Z","2.3.4-develop-19":"2017-07-21T09:55:28.808Z","2.3.4":"2017-07-21T09:58:42.115Z","2.3.4-master-13":"2017-07-21T10:00:04.072Z","2.3.4-develop-20":"2017-07-26T02:59:51.854Z","2.3.4-master-14":"2017-08-23T10:24:13.046Z","2.3.4-develop-21":"2017-08-23T10:25:16.952Z","2.3.4-develop-23":"2017-09-01T08:03:40.973Z","2.3.4-develop-24":"2017-09-01T08:13:26.581Z","2.3.4-develop-25":"2017-09-01T08:14:24.486Z","2.3.5":"2017-09-07T07:06:53.434Z","2.3.5-master-15":"2017-09-08T13:29:10.925Z","2.3.5-develop-29":"2017-09-08T13:30:01.840Z","2.3.5-greenkeeper-conventional-changelog-cli-1.3.5-4":"2017-11-14T08:02:29.996Z","2.3.5-develop-40":"2017-11-14T08:09:51.338Z","2.3.5-develop-41":"2017-11-14T08:15:30.253Z","2.3.5-greenkeeper-jsdoc-to-markdown-3.0.2-1":"2017-11-14T11:18:05.512Z","2.3.5-develop-42":"2017-11-14T13:43:21.289Z","2.3.5-greenkeeper-galenframework-2.3.6-1":"2017-12-15T21:44:44.544Z","2.3.5-develop-43":"2017-12-15T21:52:07.578Z","2.3.5-greenkeeper-galenframework-2.3.6-1-greenkeeper-galenframework-2.3.6-2":"2017-12-15T23:50:10.311Z","2.3.5-develop-44":"2017-12-15T23:51:05.395Z","2.3.6":"2017-12-16T08:19:06.180Z","2.3.6-develop-45":"2017-12-16T08:48:38.625Z","2.3.6-master-18":"2017-12-16T08:52:07.386Z","2.3.6-develop-46":"2017-12-21T12:16:24.442Z","2.3.6-develop-47":"2017-12-22T08:32:00.708Z","2.3.6-greenkeeper-chromedriver-2.34.1-1":"2018-01-02T23:13:44.664Z","2.3.6-develop-48":"2018-01-04T14:47:26.896Z","2.3.6-develop-49":"2018-01-04T14:48:21.582Z","2.3.6-develop-50":"2018-01-06T10:51:44.435Z","2.3.6-greenkeeper-initial-1":"2018-01-08T18:06:33.166Z","2.3.6-develop-51":"2018-01-08T19:06:33.205Z","2.3.6-greenkeeper-jsdoc-to-markdown-3.0.4-1":"2018-01-10T20:06:05.163Z","2.3.6-greenkeeper-jsdoc-to-markdown-4.0.0-1":"2018-01-19T15:34:07.943Z","2.3.6-greenkeeper-jsdoc-to-markdown-4.0.1-1":"2018-01-22T19:02:02.008Z","2.3.6-greenkeeper-chromedriver-2.35.0-1":"2018-01-22T19:19:09.493Z","2.3.6-greenkeeper-conventional-changelog-cli-1.3.9-1":"2018-02-08T05:26:03.868Z","2.3.6-greenkeeper-grunt-1.0.2-1":"2018-02-08T05:32:41.419Z","2.3.6-greenkeeper-conventional-changelog-cli-1.3.10-1":"2018-02-15T07:32:40.781Z","2.3.6-develop-52":"2018-02-15T07:46:45.645Z","2.3.6-greenkeeper-conventional-changelog-cli-1.3.12-1":"2018-02-15T08:05:04.146Z","2.3.6-greenkeeper-conventional-changelog-cli-1.3.13-1":"2018-02-15T08:33:43.326Z","2.3.6-snyk-fix-adf28a69-1":"2018-02-15T16:33:36.573Z","2.3.6-greenkeeper-conventional-changelog-cli-1.3.14-1":"2018-02-20T04:50:36.934Z","2.3.6-greenkeeper-conventional-changelog-cli-1.3.15-1":"2018-02-24T22:44:04.559Z","2.3.6-greenkeeper-snyk-1.70.1-1":"2018-03-20T05:38:29.991Z","2.3.6-develop-55":"2018-03-20T05:52:15.143Z","2.3.6-develop-54":"2018-03-20T05:54:12.288Z","2.3.6-develop-53":"2018-03-20T05:57:29.560Z","2.3.6-greenkeeper-chromedriver-2.36.0-1":"2018-03-20T06:08:08.251Z","2.3.6-greenkeeper-conventional-changelog-cli-1.3.16-1":"2018-03-20T06:27:15.208Z","2.3.6-greenkeeper-snyk-1.70.2-1":"2018-03-20T08:30:40.410Z","2.3.6-greenkeeper-geckodriver-1.11.0-1":"2018-03-20T08:38:45.341Z","2.3.6-greenkeeper-chromedriver-2.37.0-1":"2018-03-20T18:58:57.456Z","2.3.6-greenkeeper-snyk-1.70.3-1":"2018-03-22T17:05:26.852Z","2.3.6-greenkeeper-snyk-pin-1.70.2-1":"2018-03-22T20:07:05.885Z","2.3.6-develop-57":"2018-03-27T15:56:49.307Z","2.3.6-greenkeeper-conventional-changelog-cli-1.3.19-1":"2018-03-27T16:14:46.239Z","2.3.6-greenkeeper-conventional-changelog-cli-1.3.20-1":"2018-03-27T16:35:33.369Z","2.3.6-greenkeeper-conventional-changelog-cli-1.3.21-1":"2018-03-28T03:17:46.906Z","2.3.6-develop-58":"2018-03-28T05:42:36.105Z","2.3.6-develop-64":"2018-05-27T14:59:52.846Z","2.3.6-develop-66":"2018-05-27T15:03:00.008Z","2.3.6-develop-67":"2018-05-27T16:25:13.560Z","2.3.7":"2018-05-27T16:31:28.470Z","2.3.7-develop-68":"2018-05-27T16:32:21.586Z","2.3.7-develop-69":"2018-11-01T07:31:05.517Z","2.4.0":"2018-11-04T14:05:55.068Z","2.4.1":"2018-12-23T12:52:37.716Z","2.4.1-develop-79":"2019-01-04T09:10:51.592Z","2.4.2-develop-80":"2019-02-05T04:19:23.829Z","2.4.2":"2019-02-05T04:24:19.441Z","2.4.3":"2019-02-18T08:26:45.842Z","2.4.4":"2019-08-01T05:52:27.477Z"},"homepage":"https://github.com/hypery2k/grunt-galenframework#readme","keywords":["grunt","galen","galenframework","responsive","test","testing","webdriver","selenium","TDD","BDD"],"repository":{"type":"git","url":"git+https://github.com/hypery2k/grunt-galenframework.git"},"author":{"name":"Martin Reinhardt"},"bugs":{"url":"https://github.com/hypery2k/grunt-galenframework/issues"},"license":"MIT","readmeFilename":"README.md"}