{"_id":"react-drill","_rev":"34-a7ebae3c663dcb43f5e437a6b2d2a25c","name":"react-drill","description":"React DOM test utils.","dist-tags":{"latest":"4.0.1","next":"3.0.0-rc.8"},"versions":{"1.0.0":{"name":"react-drill","version":"1.0.0","description":"React DOM test utils.","main":"index.js","scripts":{"build":"./node_modules/webpack/bin/webpack.js -p","lint":"eslint .","test":"./node_modules/karma/bin/karma start --single-run","prepublish":"npm run-script test && npm run-script build"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","dependencies":{"jquery":"","react":""},"devDependencies":{"babel-loader":"^5.3.2","chai":"^3.3.0","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-webpack":"^1.7.0","mocha":"","webpack":"^1.12.2"},"gitHead":"ed708ddeac6924ecd49932c05e4a738313030916","_id":"react-drill@1.0.0","_shasum":"ace7574f7609e5cb9aae52a213d9a157d264e26b","_from":".","_npmVersion":"2.14.3","_nodeVersion":"0.12.7","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"ace7574f7609e5cb9aae52a213d9a157d264e26b","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-1.0.0.tgz","integrity":"sha512-PMkW6aJ8f3hL5KBrxVTwEHK0r4MRDp5W2jKF4HTC/MUqZL2Hpghvsgl4sqFBNf5yjhwgNjaEDq0QkQBmrL168w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAtDcx3bXP2nOWTo2P5y36ppc3J8gaB5WRaRupNzq/cfAiEAi/87cf4kIR8x4fxV+Ft4p0LE4tZ11jbsN/+QLKfz6Y8="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{}},"1.0.1":{"name":"react-drill","version":"1.0.1","description":"React DOM test utils.","main":"index.js","scripts":{"build":"./node_modules/webpack/bin/webpack.js -p","lint":"eslint .","test":"./node_modules/karma/bin/karma start --single-run","prepublish":"npm run-script test && npm run-script build"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","dependencies":{"jquery":"","react":""},"devDependencies":{"babel-loader":"^5.3.2","chai":"^3.3.0","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-webpack":"^1.7.0","mocha":"","webpack":"^1.12.2"},"gitHead":"722c9a555f5a1ecdb05e076a393126b31f1d0e98","_id":"react-drill@1.0.1","_shasum":"109e79553cfc8b685a50fd38f14948fa4d1da7af","_from":".","_npmVersion":"2.14.3","_nodeVersion":"0.12.7","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"109e79553cfc8b685a50fd38f14948fa4d1da7af","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-1.0.1.tgz","integrity":"sha512-plEgjTEfswGGUdKwD624Cqn2PW38f2wLZzYLaa3afsnSk5tBRfN2a5rR+gcK/TISyHwCX/jLiuwp2HFUOjOeNg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3IHt8warqL7SMcFWRyZFAJgtphWuIJc7yNfeUNrq3JgIgP1dBwfAFrqp77ZRU4bAXnzQKhMwRGuwmECD+FT4BaIg="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{}},"1.0.2":{"name":"react-drill","version":"1.0.2","description":"React DOM test utils.","main":"index.js","scripts":{"build":"./node_modules/webpack/bin/webpack.js -p","lint":"eslint .","test":"./node_modules/karma/bin/karma start --single-run","prepublish":"npm run-script test && npm run-script build"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"jquery":"","react":"","babel-loader":"^5.3.2","chai":"^3.3.0","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-webpack":"^1.7.0","mocha":"","webpack":"^1.12.2"},"gitHead":"1bbf7c8e007a75d2d10be21bf57e152e34160050","_id":"react-drill@1.0.2","_shasum":"bbbe3b7c9a89170e2152df17453206dbec041392","_from":".","_npmVersion":"2.14.3","_nodeVersion":"0.12.7","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"bbbe3b7c9a89170e2152df17453206dbec041392","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-1.0.2.tgz","integrity":"sha512-FP3fqdCS2yztYYnLWVvY7cHQLG3QHKqyhNQUPqrUg+K1bPpLcsfWgf28RnH4reODtvHjDRxuwDKC9dvXQ75e/Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmKuP6AQN/JD/fRtzsi1j3UocCHn3lsri9Y8svs4VrzQIge4zKRPRyONsJAkE8ot4ZbQIaHJ5BUGpIMs3NZCvJ1Ao="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{}},"1.0.3":{"name":"react-drill","version":"1.0.3","description":"React DOM test utils.","main":"index.js","scripts":{"build":"./node_modules/webpack/bin/webpack.js -p","lint":"eslint .","test":"./node_modules/karma/bin/karma start --single-run","prepublish":"npm run-script test && npm run-script build"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"jquery":"","react":"","babel-loader":"^5.3.2","chai":"^3.3.0","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-webpack":"^1.7.0","mocha":"","webpack":"^1.12.2"},"dependencies":{"assertion-error":"^1.0.1"},"gitHead":"ca032c302a758a65921b7ee697167e9c5b974658","_id":"react-drill@1.0.3","_shasum":"0c885db4a3c2b36e385b88aeabc042616f145e7a","_from":".","_npmVersion":"2.14.3","_nodeVersion":"0.12.7","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"0c885db4a3c2b36e385b88aeabc042616f145e7a","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-1.0.3.tgz","integrity":"sha512-LgcZqmwDJuXQmSdvcXlQgut8piFGHrHG2WxwEE8UPXd3aIxvnuVUUDP9GJN1QONp8gkCbgcfsxCHEAsYZ5xZyg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCr5f3Vbl3x3JROF9I2TJ5E8dwUIs6T2+UX+coHXl9Y1QIhAJUsfrZdWHGwZ9UkVYJWxrYzfZZgyq//gzhp3pTvv0Au"}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{}},"1.0.4":{"name":"react-drill","version":"1.0.4","description":"React DOM test utils.","main":"index.js","scripts":{"build":"./node_modules/webpack/bin/webpack.js -p","lint":"eslint .","test":"./node_modules/karma/bin/karma start --single-run","prepublish":"npm run-script test && npm run-script build"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"jquery":"","react":"","babel-loader":"^5.3.2","chai":"^3.3.0","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-webpack":"^1.7.0","mocha":"","webpack":"^1.12.2","tinydoc":"3.0.4"},"dependencies":{"assertion-error":"^1.0.1"},"gitHead":"30fee1728ae0ff73a63bbcceb515d803ae95c85c","_id":"react-drill@1.0.4","_shasum":"74c9d06f80946d66c898966e4e1bf08a35fc76b4","_from":".","_npmVersion":"2.14.3","_nodeVersion":"0.12.7","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"74c9d06f80946d66c898966e4e1bf08a35fc76b4","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-1.0.4.tgz","integrity":"sha512-tsbxrWD3Zo7RAB1EbJBOXIVJnWceelNtftV6rA+S95LJuuJT6C8mcZMUvpWaFZAV4K91zhwMY3psfOTSPS+q1Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGEfGl9p1XXDEnIShx89YrHerWLk2Bb6gRYnHAiMgr3rAiEArqGZn8zmXIroGoHaThDMklzqsRVQPX4KLY5jSwvS0Lk="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{}},"1.0.5":{"name":"react-drill","version":"1.0.5","description":"React DOM test utils.","main":"index.js","scripts":{"build":"./node_modules/webpack/bin/webpack.js -p","lint":"eslint .","test":"./node_modules/karma/bin/karma start --single-run","prepublish":"npm run-script test && npm run-script build"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"jquery":"","react":"","babel-loader":"^5.3.2","chai":"^3.3.0","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-webpack":"^1.7.0","mocha":"","webpack":"^1.12.2","tinydoc":"3.0.4"},"dependencies":{"assertion-error":"^1.0.1"},"gitHead":"30fee1728ae0ff73a63bbcceb515d803ae95c85c","_id":"react-drill@1.0.5","_shasum":"a2259991b5ebcb9bfa13cd124c446a81eef5b487","_from":".","_npmVersion":"2.14.3","_nodeVersion":"0.12.7","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"a2259991b5ebcb9bfa13cd124c446a81eef5b487","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-1.0.5.tgz","integrity":"sha512-IfAmJAfOHT8kdz5c0gXaWfFlKwyZ7AFiCEeqNzV5xefOUP25YLbRr7pB4eljftv1lfP73+ZfkqAXXcTdOb8i6w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAfyya0BrTJ+GbL5l4+Pm9inzI8yhh6s0aUNXkUE4wFOAiEA4F++veEyXxVSNsSC9jfDdlWfZLEdaSq34UOUmP+noFA="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{}},"2.0.0":{"name":"react-drill","version":"2.0.0","description":"React DOM test utils.","main":"index.js","scripts":{"build":"./node_modules/webpack/bin/webpack.js -p","lint":"eslint .","test":"./node_modules/karma/bin/karma start --single-run","prepublish":"npm run-script test && npm run-script build"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"^5.3.2","chai":"^3.3.0","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^1.7.0","mocha":"","tinydoc":"3.2.2","webpack":"^1.12.2"},"dependencies":{"assertion-error":"^1.0.1","fbjs":"0.4.0","jquery":"","lodash":"^3.10.1","react":">=0.14.1","react-dom":">=0.14.1"},"gitHead":"f883fe903351bf59ebb7241b2557436217bf2e1c","_id":"react-drill@2.0.0","_shasum":"b9f573e09c5d98cd18e13e03acc23847aac99bc5","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.0.0","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"b9f573e09c5d98cd18e13e03acc23847aac99bc5","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-2.0.0.tgz","integrity":"sha512-VM47T35CUYiseSjdhCf5cVvHvWpDcmwu4ZYpGmOYcua8/57BPqwuXeHpDTSf/fpjyNctz5D4GtcInZP6jWRzuw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzkgDwxgOknsm5O4I7UvLihr8zLQ+T1MwqxdF13ifXzAIhAMP9QsS78ueP9L3DBO3QH6Z3rtSdgUdXTYkMGB/LcbPx"}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{}},"2.1.0":{"name":"react-drill","version":"2.1.0","description":"React DOM test utils.","main":"index.js","scripts":{"build":"./node_modules/webpack/bin/webpack.js -p","lint":"eslint .","test":"./node_modules/karma/bin/karma start --single-run","prepublish":"npm run-script test && npm run-script build"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"^5.3.2","chai":"^3.3.0","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^1.7.0","mocha":"","tinydoc":"^4.0.0","tinydoc-plugin-js":"^4.0.0","tinydoc-theme-gitbooks":"^1.0.0","webpack":"^1.12.2","blessed":"x","react-blessed":"0.x"},"optionalDependencies":{},"dependencies":{"assertion-error":"^1.0.1","fbjs":"0.4.0","jquery":"","lodash":"^3.10.1","react":">=0.14.1","react-dom":">=0.14.1"},"gitHead":"0d0d3e089d06d5c72ed4126348eba2ef66e3a2e6","_id":"react-drill@2.1.0","_shasum":"06c5f68c8f8ece6cbae0c875cab0a4e1beb8ab00","_from":".","_npmVersion":"3.5.1","_nodeVersion":"5.1.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"06c5f68c8f8ece6cbae0c875cab0a4e1beb8ab00","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-2.1.0.tgz","integrity":"sha512-8R4Dm5YbBux1jasrIHAHtmtHXpgNTbvdQD4+j02iH0Q8uJelXnq41ZahwMvTpa54hsEIj7kVdpjf7gCL/V2nDA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDxNXVS4HrciP7aF36kg1IFSNQVwwg5FldmXSUoMLAlIAiEA7McI1SsNHfUD9ukZbgGpAJlFKl5C7ui+Sacrm4wv5rk="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{}},"2.1.1":{"name":"react-drill","version":"2.1.1","description":"React DOM test utils.","main":"index.js","scripts":{"build":"./node_modules/webpack/bin/webpack.js -p","lint":"eslint .","test":"./node_modules/karma/bin/karma start --single-run","prepublish":"npm run-script test && npm run-script build"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"^5.3.2","chai":"^3.3.0","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^1.7.0","mocha":"","tinydoc":"^4.0.0","tinydoc-plugin-js":"^4.0.0","tinydoc-theme-gitbooks":"^1.0.0","webpack":"^1.12.2","blessed":"x","react-blessed":"0.x"},"optionalDependencies":{},"dependencies":{"assertion-error":"^1.0.1","fbjs":"0.4.0","jquery":"","lodash":"^3.10.1","react":">=0.14.1","react-dom":">=0.14.1"},"gitHead":"920b500c5b8c8ae53f8376588028933dfc63839e","_id":"react-drill@2.1.1","_shasum":"6e1048d46cab17e94178351e5a0e374292254b1f","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"6e1048d46cab17e94178351e5a0e374292254b1f","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-2.1.1.tgz","integrity":"sha512-SvW4Efi4WVtB/sNDvdnMrLX7qOhd5X6va3KK0O+CK3kAAgy9YK8WrIxFUFkrvYYJyZCOXZCe/xg+GQFZHDz3xg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCn37ToxcP+4sYmnjpcOdIGx1PV7vPYwkFwVowz3bYZtAIgTO0iZgt1EDuzUOAwy10Yu8aBSU2SgdTV0LuDJSUKXDk="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{}},"2.1.2":{"name":"react-drill","version":"2.1.2","description":"React DOM test utils.","main":"index.js","scripts":{"build":"./node_modules/webpack/bin/webpack.js -p","lint":"eslint .","test":"./node_modules/karma/bin/karma start --single-run","prepublish":"npm run-script test && npm run-script build"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"^5.3.2","chai":"^3.3.0","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^1.7.0","mocha":"","tinydoc":"^4.0.0","tinydoc-plugin-js":"^4.0.0","tinydoc-theme-gitbooks":"^1.0.0","webpack":"^1.12.2","blessed":"x","react-blessed":"0.x"},"optionalDependencies":{},"dependencies":{"assertion-error":"^1.0.1","fbjs":"0.4.0","jquery":"","lodash":"^3.10.1","react":">=0.14.1","react-dom":">=0.14.1"},"gitHead":"62fcdde83c5dfe1b5895b0231e3a7530621d47ab","_id":"react-drill@2.1.2","_shasum":"aeca21e4c3945cab60f238c08ece3a994b2a4b68","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.1.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"aeca21e4c3945cab60f238c08ece3a994b2a4b68","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-2.1.2.tgz","integrity":"sha512-PL9tg0AN9GM32JA44Kc56qWp/p4Zu4Rmcjr1UWoYgbmxghS1OKc0tM7cPDjixZJ0Go662ajXlzr8lYfXpEBHsA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdxhnsQ1AlelLuV5WNhetY6ecW5QNkDcQNXxPWpJqgpwIhAJC8JL/p5u4iXfiSQDQM1+QGS0xTK3AsohDosh6z0A6k"}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/react-drill-2.1.2.tgz_1464254453756_0.8813313546124846"},"directories":{}},"2.1.3":{"name":"react-drill","version":"2.1.3","description":"React DOM test utils.","main":"index.js","scripts":{"build":"./node_modules/webpack/bin/webpack.js -p","lint":"eslint .","test":"./node_modules/karma/bin/karma start --single-run","prepublish":"npm run-script test && npm run-script build"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"^5.3.2","chai":"^3.3.0","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^1.7.0","mocha":"","tinydoc":"^4.0.0","tinydoc-plugin-js":"^4.0.0","tinydoc-theme-gitbooks":"^1.0.0","webpack":"^1.12.2","blessed":"x","react-blessed":"0.x"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1","react-dom":">=0.14.1"},"dependencies":{"assertion-error":"^1.0.1","fbjs":"0.4.0","jquery":"","lodash":"^3.10.1"},"gitHead":"4e2a0da527504f4cb4a0db846339467f2319bc40","_id":"react-drill@2.1.3","_shasum":"527c691528e2fdcc7f3fbbe5a74183fb7862a586","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.1.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"527c691528e2fdcc7f3fbbe5a74183fb7862a586","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-2.1.3.tgz","integrity":"sha512-QLrV5BGIV0LSpA9kPUeUZGXXHgExknv1v5jiIrZDUe/dj5z2aFV9ktbZ5Ml7mxNxhONiM8viY3G5NN4IFPzc+w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFmssbzdej/CtRbl2bC3cxIBEVMFb1oKBSo4owhVGBQKAiB0yF2PtCFjvKRiL9u7E3TJxcAN3vu6YqEs6lg4Y6UlXw=="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/react-drill-2.1.3.tgz_1464255088309_0.06263844133354723"},"directories":{}},"2.1.4":{"name":"react-drill","version":"2.1.4","description":"React DOM test utils.","main":"index.js","scripts":{"build":"./node_modules/webpack/bin/webpack.js -p","lint":"eslint .","test":"./node_modules/karma/bin/karma start --single-run --browsers Firefox","prepublish":"npm run lint && npm run build && npm run test"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"^5.3.2","blessed":"x","chai":"^3.3.0","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^1.7.0","megadoc":"5.0.4","megadoc-plugin-js":"5.0.2","megadoc-plugin-markdown":"5.0.1","megadoc-theme-qt":"5.0.0","mocha":"","object-assign":"4.1.0","react":"15.3.2","react-blessed":"0.x","react-dom":"15.3.2","webpack":"^1.12.2"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1","react-dom":">=0.14.1"},"dependencies":{"assertion-error":"^1.0.1","fbjs":"0.4.0","jquery":""},"gitHead":"b8c3930e16ae5dd4b63150d197f3790587de6e58","_id":"react-drill@2.1.4","_shasum":"b5e3dbc16a35d13a9c26aa754859f0d7c80ca9f0","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"dist":{"shasum":"b5e3dbc16a35d13a9c26aa754859f0d7c80ca9f0","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-2.1.4.tgz","integrity":"sha512-eGuzEHzjfzUYrfY5q8N/QTCxsMXjKQY6vhnlEqho8Kl0bXVyBqtsxV8edcQJPbJ7X3t8IzWwcHNVBscWXMw0rg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICn2UDNnDpsC8sXj9OYRwIBq7CB6EQfeZyKzp4nIIFkFAiAm3AG7Z6LlIv+7i9SR3BWwgAztaesQDdK8GSvvH5hQ4w=="}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/react-drill-2.1.4.tgz_1475082125813_0.5540141239762306"},"directories":{}},"2.2.0":{"name":"react-drill","version":"2.2.0","description":"React DOM test utils.","main":"index.js","scripts":{"build":"./node_modules/webpack/bin/webpack.js -p","lint":"eslint .","test":"./node_modules/karma/bin/karma start --single-run --browsers Firefox","prepublish":"npm run lint && npm run build && npm run test"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"^5.3.2","blessed":"x","chai":"^3.3.0","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^1.7.0","megadoc":"5.0.4","megadoc-plugin-js":"5.0.2","megadoc-plugin-markdown":"5.0.1","megadoc-theme-qt":"5.0.0","mocha":"","object-assign":"4.1.0","react":"15.4.1","react-addons-test-utils":"15.4.1","react-blessed":"0.x","react-dom":"15.4.1","webpack":"^1.12.2"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 < 16","react-dom":">=0.14.1 < 16"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1","react-addons-test-utils":"^15.4.1"},"gitHead":"59e67cac78d0bd8695efb310467f0b67bd233080","_id":"react-drill@2.2.0","_shasum":"d0271b885f9952e876b09c2b0f50dfab0e28c978","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"d0271b885f9952e876b09c2b0f50dfab0e28c978","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-2.2.0.tgz","integrity":"sha512-eQhq6yx4QYxq1tOhCWuQ5vPJeYBLnH8rKxBIXINe4sNkFyHdYYJzWOs7vuMQq8UNpR6sStZ5zGCbdgmUXPRhgw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkXBqnFYawD/7nhyiy0vU68VWeRz9ITbmV5xAar4w2agIhAIT5gOHJTGfY7JyY3oSIeM0lOS3ysMgTUm6XcNDIxzqc"}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/react-drill-2.2.0.tgz_1481060606125_0.7047992602456361"},"directories":{}},"2.2.1":{"name":"react-drill","version":"2.2.1","description":"React DOM test utils.","main":"index.js","scripts":{"build":"./node_modules/webpack/bin/webpack.js -p","lint":"eslint .","test":"./node_modules/karma/bin/karma start --single-run --browsers Firefox","prepublish":"npm run lint && npm run build && npm run test"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"^5.3.2","blessed":"x","chai":"^3.3.0","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^1.7.0","megadoc":"5.0.4","megadoc-plugin-js":"5.0.2","megadoc-plugin-markdown":"5.0.1","megadoc-theme-qt":"5.0.0","mocha":"","object-assign":"4.1.0","react":"15.4.1","react-addons-test-utils":"15.4.1","react-blessed":"0.x","react-dom":"15.4.1","webpack":"^1.12.2"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 < 16","react-dom":">=0.14.1 < 16"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1","react-addons-test-utils":"^15.4.1"},"gitHead":"b3ec103024f7322af912664b5a2d01ab7baa70dd","_id":"react-drill@2.2.1","_shasum":"d5adf73a5268239764d1b33c50064c1da0944fea","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"d5adf73a5268239764d1b33c50064c1da0944fea","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-2.2.1.tgz","integrity":"sha512-Jo5N5WS3S6nwwWhgfJHvwZRM530c7ijaMV+TcyVa4ChMcaY3gPSuaAbr01I5dWooiNrMs0RxJREQNwh/5LpG7A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEF0Q3Td9v1uNH/EwiDmG19ziyiVec4Q0D+7BHcqAhBgIhAJZLadIxw30d4D3EeF3vOsv5dOG+p6V9IQpUiYNw4MVL"}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/react-drill-2.2.1.tgz_1494005452635_0.6812969690654427"},"directories":{}},"2.3.0":{"name":"react-drill","version":"2.3.0","description":"React DOM test utils.","main":"index.js","scripts":{"build":"./node_modules/webpack/bin/webpack.js -p","lint":"eslint .","test":"./node_modules/karma/bin/karma start --single-run --browsers Firefox","prepublish":"npm run lint && npm run build && npm run test"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"^5.3.2","blessed":"x","chai":"^3.3.0","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^1.7.0","megadoc":"5.0.4","megadoc-plugin-js":"5.0.2","megadoc-plugin-markdown":"5.0.1","megadoc-theme-qt":"5.0.0","mocha":"","object-assign":"4.1.0","react":"15.5.4","react-blessed":"0.x","react-dom":"15.5.4","webpack":"^1.12.2"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 < 16","react-dom":">=0.14.1 < 16"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1"},"gitHead":"ac63bbb73a38320aa04eafdaf7170f75213b9435","_id":"react-drill@2.3.0","_shasum":"17c71425dc8f3154bc03c81577c149f157785ae8","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"17c71425dc8f3154bc03c81577c149f157785ae8","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-2.3.0.tgz","integrity":"sha512-Hiv6xdt6m2IDtfCV+0JJf/R4KgC5FJ4j38MGEXUUmy8f+7+p5Szld5RuDiupM3plJiHgybe1bUqCKypZBngajA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDA+FLiLPVznfnXow6oJkxldD/Fx5KTxXHgwEUKu7tE8QIgErXGE8FZx9EiRmamMQsnc+T7H+M9d3CNMEP44D1/lFY="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-drill-2.3.0.tgz_1498067007878_0.3369766741525382"},"directories":{}},"2.4.0":{"name":"react-drill","version":"2.4.0","description":"React DOM test utils.","main":"index.js","scripts":{},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"^5.3.2","blessed":"x","chai":"^3.3.0","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^1.7.0","megadoc":"5.0.5","megadoc-plugin-js":"5.0.3","megadoc-plugin-markdown":"5.0.1","megadoc-theme-qt":"5.0.0","mocha":"","object-assign":"4.1.0","react":"15.5.4","react-blessed":"0.x","react-dom":"15.5.4","webpack":"^1.12.2"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 < 16","react-dom":">=0.14.1 < 16"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1"},"gitHead":"f99af62cb2f085d3ea6b7337c90576107c2f8752","_id":"react-drill@2.4.0","_shasum":"18df34dca753633a3ab4c7b86361caa8773b5542","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"18df34dca753633a3ab4c7b86361caa8773b5542","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-2.4.0.tgz","integrity":"sha512-qgpqVazA4QKBqfISy7MhUuCgE04pux6aK5tQ1vjqDRkLA89KUPjLwrN+IEvU1ptGP/srmFmGqA8R1s+x+BIeLA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEkt6k+a/o5Biu3KqARFGNlE8sDJlJ+WimlDCxRDku3qAiEAsb5EjfNVU6TkUDOtTGuH9gLhk1VNk2s9G8qQMUhKNk0="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-drill-2.4.0.tgz_1504105166256_0.6673307567834854"},"directories":{}},"2.5.0":{"name":"react-drill","version":"2.5.0","description":"React DOM test utils.","main":"index.js","scripts":{"build":"./node_modules/webpack/bin/webpack.js -p","lint":"eslint .","test":"./node_modules/karma/bin/karma start --single-run --browsers Firefox","prepublish":"npm run lint && npm run build && npm run test"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"^5.3.2","blessed":"x","chai":"^3.3.0","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^1.7.0","megadoc":"5.0.5","megadoc-plugin-js":"5.0.3","megadoc-plugin-markdown":"5.0.1","megadoc-theme-qt":"5.0.0","mocha":"","object-assign":"4.1.0","react":"15.5.4","react-blessed":"0.x","react-dom":"15.5.4","webpack":"^1.12.2"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 < 16","react-dom":">=0.14.1 < 16"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1"},"gitHead":"065aeafaff41499fff8ec20466f36e06d0a137a3","_id":"react-drill@2.5.0","_shasum":"88e3bc5bad39e8ba19fd81d1856305dc0becdc2d","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"88e3bc5bad39e8ba19fd81d1856305dc0becdc2d","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-2.5.0.tgz","fileCount":60,"unpackedSize":1420992,"integrity":"sha512-PXEeGoMXrJPXuYLi0GH1a5qkSAE5p2DymANKNl1M6Cq35hGRwPVWLVkNchgaKUFV/TIkpRXUgppDOl4abnu4Ug==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGPW8zcr3QHMra53w6PYXQewvoWhUMeuMRjgzaneH1ZYAiBrTotVTCCkl9NulvKamcGX4wXF8j7+I4jmAHlMzhSo/A=="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-drill_2.5.0_1519599271541_0.7626909798624955"},"_hasShrinkwrap":false},"3.0.0-rc.1":{"name":"react-drill","version":"3.0.0-rc.1","description":"React DOM test utils.","main":"lib/index.js","scripts":{"lint":"eslint 'lib/**/*.js' 'addons/**/*.js'","test":"./node_modules/karma/bin/karma start --single-run --browsers Firefox","prepublish":"npm run lint && npm run test"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"7.1.3","babel-plugin-istanbul":"4.1.5","babel-preset-react":"6.24.1","blessed":"x","chai":"^3.3.0","chai-assert-change":"file:///home/kandie/Workspace/Projects/chai-assert-change","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","istanbul":"0.4.5","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-coverage":"1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"2.0.11","megadoc-cli":"6.5.0","megadoc-compiler":"6.5.0","megadoc-preset-js":"6.5.0","megadoc-theme-minimalist":"6.0.0","mocha":"5.0.1","object-assign":"4.1.0","react":"15.5.4","react-blessed":"0.x","react-dom":"15.5.4","sinon":"4.4.2","webpack":"4.0.0"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 < 16","react-dom":">=0.14.1 < 16"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1"},"readme":"# React Drill\n\nReact Drill is a React testing library that facilitates interacting with a DOM\ntree through an expressive API similar to [Capybara's](https://github.com/teamc\napybara/capybara/blob/2.17_stable/README.md#the-dsl). The library provides a\nnumber of abstractions for locating particular UI elements using either React\ncomponent classes or DOM selectors and for interacting with them.\n\nThe name \"drill\" comes from the fact that the API allows you to \"drill down\" through a React virtual DOM tree to interact with elements in it.\n\n## Motivation\n\n- The means to easily express the _intent_ of an interaction instead of\n  fiddling around with implementation details like how to trigger the `select`\n  event on a combo box, or how to simulate typing into a text widget.\n\n  Drill does this by providing a set of uniform APIs that can abstract this\n  away:\n\n      drill(component)\n        .find(TextField)\n          .typeIn('hello world')\n\n- The possibility of not relying on CSS classes or DOM selectors to find\n  elements to interact with. Instead, one can use the source React component\n  class as a selector:\n\n      drill(component)\n        .find(Button, m.hasText('Save'))\n          .click()\n\n## Usage\n\nTo install the package you can get it from npm:\n\n```shell\nnpm install --save-dev react-drill\n```\n\nIt is recommended to go quickly over the [[concepts | README.md#concepts]]\nbefore jumping into the API.\n\n## Concepts\n\nDrill's API is driven by four concepts: the scope object, selectors, matchers,\nand actions. This section will walk you through them.\n\n### Scope\n\nA [[scope | Scope]] is an object that represents the current React component\nand a set of DOM nodes that you're able to interact with. When you [[drill]]\ninto a tree, you get a scope back.\n\nThe scope APIs are chainable in that most of them return another scope back for\nyou, unless they're [[actions | README.md#actions]] then they'd return the same\nscope back.\n\n    drill(component)    // => Scope.<component, [findDOMNode(component)]>\n      .find(Menu)       // => Scope.<Menu, [findDOMNode(Menu)]>\n        .find('button') // => Scope.<Menu, [HTMLElement.<button>]>\n          .click()      // => Scope.<Menu, [HTMLElement.<button>]>\n          .blur()       // => Scope.<Menu, [HTMLElement.<button>]>\n\n**Next**: we can create scopes but how do we refine them to represent other\ncomponents and DOM nodes down the tree?\n\n### Selectors\n\nA selector is a function that locates React components _or_ DOM nodes inside\nthe current scope matching criteria you specify. The most common selectors are\n[[Scope#find]] and [[Scope#findAll]].\n\n    drill(component)\n      .find(Menu)        // find is a selector\n        .findAll(Button) // findAll is also a selector\n\n**Next:** we're now able to create scopes and select elements, but not\nparticular ones. Can we refine our selection further?\n\n### Matchers\n\nA [[matcher | Matcher]] is a predicate function that allows you to refine your\nselection to locate a most particular element in your scope. All [[selectors |\n./README.md#selectors]] accept a matcher.\n\n    drill(component)\n      .find(Button, m.hasText('Save')) // hasText is a matcher\n\nA list of [[common matchers | Matchers]] is available for your convenience and\nyou can [[build your own | examples/custom-matchers.md]] too.\n\n**Next:** with the ability to locate particular elements using selectors and\nmatchers, we now need a way to interact with them.\n\n### Actions\n\nAn action is a function that takes a scope and interacts with its DOM node(s)\nor its component, such as by clicking, blurring, or typing in.\n\nThe [[pre-made actions | Actions]] are available directly on the stock\n[[Scope]] object.\n\n    drill(component)\n      .click() // click is an action\n\nJust like with matchers, you can [[define your own actions | examples/custom-\nactions.md]] too.\n\n## Where to go from here\n\nSee [[drill]] for creating a scope and then the [[Scope]] itself for more\npossibilities. Or if you'd prefer to see examples first, browse from the\nsidebar to the left.\n\n## FAQ\n\n### Drill isn't working with stateless components!\n\nIt cannot since they have no instance to represent them and the [[scope]] needs\none otherwise it cannot tell what's a component and what's a (virtual) DOM\nnode.\n\nYou can not use this library if you're using stateless components exclusively.\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"5de848fea5b3fa279c1ebf566f9b466fc598a734","_id":"react-drill@3.0.0-rc.1","_shasum":"f8a23f22fb0d2effd3f6e5525a63c5aa8bc4d786","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"f8a23f22fb0d2effd3f6e5525a63c5aa8bc4d786","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-3.0.0-rc.1.tgz","fileCount":94,"unpackedSize":2010204,"integrity":"sha512-DuG4HoFgmaj3rUch/JLWohcoDzMeXILDBHkgr9IvfuuWX/VGrfrYcSp9EgBVgU4Z3EG1znYPi0FLhB2GruiiIA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDNrLN7xLD+wwflJpDByb1PHYfT+GC2+K4Kdp2apOMASAiBLaScEL6qyQrFFdyM/cPBT5928w6pq3VJ0u7NNB6YPSg=="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-drill_3.0.0-rc.1_1519750428007_0.4782255019218975"},"_hasShrinkwrap":false},"3.0.0-rc.2":{"name":"react-drill","version":"3.0.0-rc.2","description":"React DOM test utils.","main":"lib/index.js","scripts":{},"files":["addons","lib","CHANGES.md","README.md","UPGRADE.md"],"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"7.1.3","babel-plugin-istanbul":"4.1.5","babel-preset-react":"6.24.1","blessed":"x","chai":"^3.3.0","chai-assert-change":"file:///home/kandie/Workspace/Projects/chai-assert-change","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","istanbul":"0.4.5","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-coverage":"1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"2.0.11","megadoc-cli":"6.5.0","megadoc-compiler":"6.5.0","megadoc-preset-js":"6.5.0","megadoc-theme-minimalist":"6.0.0","mocha":"5.0.1","object-assign":"4.1.0","react":"15.5.4","react-blessed":"0.x","react-dom":"15.5.4","sinon":"4.4.2","webpack":"4.0.0"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 < 16","react-dom":">=0.14.1 < 16"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1"},"readme":"# React Drill\n\nReact Drill is a React testing library that facilitates interacting with a DOM\ntree through an expressive API similar to [Capybara's](https://github.com/teamc\napybara/capybara/blob/2.17_stable/README.md#the-dsl). The library provides a\nnumber of abstractions for locating particular UI elements using either React\ncomponent classes or DOM selectors and for interacting with them.\n\nThe name \"drill\" comes from the fact that the API allows you to \"drill down\" through a React virtual DOM tree to interact with elements in it.\n\n## Motivation\n\n- The means to easily express the _intent_ of an interaction instead of\n  fiddling around with implementation details like how to trigger the `select`\n  event on a combo box, or how to simulate typing into a text widget.\n\n  Drill does this by providing a set of uniform APIs that can abstract this\n  away:\n\n      drill(component)\n        .find(TextField)\n          .typeIn('hello world')\n\n- The possibility of not relying on CSS classes or DOM selectors to find\n  elements to interact with. Instead, one can use the source React component\n  class as a selector:\n\n      drill(component)\n        .find(Button, m.hasText('Save'))\n          .click()\n\n## Usage\n\nTo install the package you can get it from npm:\n\n```shell\nnpm install --save-dev react-drill\n```\n\nIt is recommended to go quickly over the [[concepts | README.md#concepts]]\nbefore jumping into the API.\n\n## Concepts\n\nDrill's API is driven by four concepts: the scope object, selectors, matchers,\nand actions. This section will walk you through them.\n\n### Scope\n\nA [[scope | Scope]] is an object that represents the current React component\nand a set of DOM nodes that you're able to interact with. When you [[drill]]\ninto a tree, you get a scope back.\n\nThe scope APIs are chainable in that most of them return another scope back for\nyou, unless they're [[actions | README.md#actions]] then they'd return the same\nscope back.\n\n    drill(component)    // => Scope.<component, [findDOMNode(component)]>\n      .find(Menu)       // => Scope.<Menu, [findDOMNode(Menu)]>\n        .find('button') // => Scope.<Menu, [HTMLElement.<button>]>\n          .click()      // => Scope.<Menu, [HTMLElement.<button>]>\n          .blur()       // => Scope.<Menu, [HTMLElement.<button>]>\n\n**Next**: we can create scopes but how do we refine them to represent other\ncomponents and DOM nodes down the tree?\n\n### Selectors\n\nA selector is a function that locates React components _or_ DOM nodes inside\nthe current scope matching criteria you specify. The most common selectors are\n[[Scope#find]] and [[Scope#findAll]].\n\n    drill(component)\n      .find(Menu)        // find is a selector\n        .findAll(Button) // findAll is also a selector\n\n**Next:** we're now able to create scopes and select elements, but not\nparticular ones. Can we refine our selection further?\n\n### Matchers\n\nA [[matcher | Matcher]] is a predicate function that allows you to refine your\nselection to locate a most particular element in your scope. All [[selectors |\n./README.md#selectors]] accept a matcher.\n\n    drill(component)\n      .find(Button, m.hasText('Save')) // hasText is a matcher\n\nA list of [[common matchers | Matchers]] is available for your convenience and\nyou can [[build your own | examples/custom-matchers.md]] too.\n\n**Next:** with the ability to locate particular elements using selectors and\nmatchers, we now need a way to interact with them.\n\n### Actions\n\nAn action is a function that takes a scope and interacts with its DOM node(s)\nor its component, such as by clicking, blurring, or typing in.\n\nThe [[pre-made actions | Actions]] are available directly on the stock\n[[Scope]] object.\n\n    drill(component)\n      .click() // click is an action\n\nJust like with matchers, you can [[define your own actions | examples/custom-\nactions.md]] too.\n\n## Where to go from here\n\nSee [[drill]] for creating a scope and then the [[Scope]] itself for more\npossibilities. Or if you'd prefer to see examples first, browse from the\nsidebar to the left.\n\n## FAQ\n\n### Drill isn't working with stateless components!\n\nIt cannot since they have no instance to represent them and the [[scope]] needs\none otherwise it cannot tell what's a component and what's a (virtual) DOM\nnode.\n\nYou can not use this library if you're using stateless components exclusively.\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"1caa94b0f8ca12999a0a32b30bdf0477327a11e7","_id":"react-drill@3.0.0-rc.2","_shasum":"cc743c5b1679b754ea338790be2b1ff931886651","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"cc743c5b1679b754ea338790be2b1ff931886651","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-3.0.0-rc.2.tgz","fileCount":37,"unpackedSize":111752,"integrity":"sha512-bqUTDjp7qMmsWT+Sfk5WbmMgFRc4yuIrmSNoZWbHfCVpsgPQiKUWJaU2e3I4S+KqkbpulkAVsLwDRLWGS82nFw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmEMhJiwVEmIB1579aslINJGQAei+QhgQ6FCGsaq60OwIhAJrpSKlp4qSsFe1XiEHv1FR9PmVjJmWnHrH4/3YZU4HQ"}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-drill_3.0.0-rc.2_1519750639065_0.39231420527453587"},"_hasShrinkwrap":false},"3.0.0-rc.3":{"name":"react-drill","version":"3.0.0-rc.3","description":"React DOM test utils.","main":"lib/index.js","scripts":{"lint":"eslint 'lib/**/*.js' 'addons/**/*.js'","test":"./node_modules/karma/bin/karma start --single-run --browsers Firefox","prepublish":"npm run lint && npm run test"},"files":["addons","lib","CHANGES.md","README.md","UPGRADE.md"],"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"7.1.3","babel-plugin-istanbul":"4.1.5","babel-preset-react":"6.24.1","blessed":"x","chai":"^3.3.0","chai-assert-change":"file:///home/kandie/Workspace/Projects/chai-assert-change","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","istanbul":"0.4.5","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-coverage":"1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"2.0.11","megadoc-cli":"6.5.0","megadoc-compiler":"6.5.0","megadoc-preset-js":"6.5.0","megadoc-theme-minimalist":"6.0.0","mocha":"5.0.1","object-assign":"4.1.0","react":"15.5.4","react-blessed":"0.x","react-dom":"15.5.4","sinon":"4.4.2","webpack":"4.0.0"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 < 16","react-dom":">=0.14.1 < 16"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1"},"readme":"# React Drill\n\nReact Drill is a React testing library that facilitates interacting with a DOM\ntree through an expressive API similar to [Capybara's](https://github.com/teamc\napybara/capybara/blob/2.17_stable/README.md#the-dsl). The library provides a\nnumber of abstractions for locating particular UI elements using either React\ncomponent classes or DOM selectors and for interacting with them.\n\nThe name \"drill\" comes from the fact that the API allows you to \"drill down\" through a React virtual DOM tree to interact with elements in it.\n\n## Motivation\n\n- The means to easily express the _intent_ of an interaction instead of\n  fiddling around with implementation details like how to trigger the `select`\n  event on a combo box, or how to simulate typing into a text widget.\n\n  Drill does this by providing a set of uniform APIs that can abstract this\n  away:\n\n      drill(component)\n        .find(TextField)\n          .typeIn('hello world')\n\n- The possibility of not relying on CSS classes or DOM selectors to find\n  elements to interact with. Instead, one can use the source React component\n  class as a selector:\n\n      drill(component)\n        .find(Button, m.hasText('Save'))\n          .click()\n\n## Usage\n\nTo install the package you can get it from npm:\n\n```shell\nnpm install --save-dev react-drill\n```\n\nIt is recommended to go quickly over the [[concepts | README.md#concepts]]\nbefore jumping into the API.\n\n## Concepts\n\nDrill's API is driven by four concepts: the scope object, selectors, matchers,\nand actions. This section will walk you through them.\n\n### Scope\n\nA [[scope | Scope]] is an object that represents the current React component\nand a set of DOM nodes that you're able to interact with. When you [[drill]]\ninto a tree, you get a scope back.\n\nThe scope APIs are chainable in that most of them return another scope back for\nyou, unless they're [[actions | README.md#actions]] then they'd return the same\nscope back.\n\n    drill(component)    // => Scope.<component, [findDOMNode(component)]>\n      .find(Menu)       // => Scope.<Menu, [findDOMNode(Menu)]>\n        .find('button') // => Scope.<Menu, [HTMLElement.<button>]>\n          .click()      // => Scope.<Menu, [HTMLElement.<button>]>\n          .blur()       // => Scope.<Menu, [HTMLElement.<button>]>\n\n**Next**: we can create scopes but how do we refine them to represent other\ncomponents and DOM nodes down the tree?\n\n### Selectors\n\nA selector is a function that locates React components _or_ DOM nodes inside\nthe current scope matching criteria you specify. The most common selectors are\n[[Scope#find]] and [[Scope#findAll]].\n\n    drill(component)\n      .find(Menu)        // find is a selector\n        .findAll(Button) // findAll is also a selector\n\n**Next:** we're now able to create scopes and select elements, but not\nparticular ones. Can we refine our selection further?\n\n### Matchers\n\nA [[matcher | Matcher]] is a predicate function that allows you to refine your\nselection to locate a most particular element in your scope. All [[selectors |\n./README.md#selectors]] accept a matcher.\n\n    drill(component)\n      .find(Button, m.hasText('Save')) // hasText is a matcher\n\nA list of [[common matchers | Matchers]] is available for your convenience and\nyou can [[build your own | examples/custom-matchers.md]] too.\n\n**Next:** with the ability to locate particular elements using selectors and\nmatchers, we now need a way to interact with them.\n\n### Actions\n\nAn action is a function that takes a scope and interacts with its DOM node(s)\nor its component, such as by clicking, blurring, or typing in.\n\nThe [[pre-made actions | Actions]] are available directly on the stock\n[[Scope]] object.\n\n    drill(component)\n      .click() // click is an action\n\nJust like with matchers, you can [[define your own actions | examples/custom-\nactions.md]] too.\n\n## Where to go from here\n\nSee [[drill]] for creating a scope and then the [[Scope]] itself for more\npossibilities. Or if you'd prefer to see examples first, browse from the\nsidebar to the left.\n\n## FAQ\n\n### Drill isn't working with stateless components!\n\nIt cannot since they have no instance to represent them and the [[scope]] needs\none otherwise it cannot tell what's a component and what's a (virtual) DOM\nnode.\n\nYou can not use this library if you're using stateless components exclusively.\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"620a5a35fd344d858b6e18ee413704cc89851df6","_id":"react-drill@3.0.0-rc.3","_shasum":"9fc12c95236bae496806cdd9ec766dbdd05f4085","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"9fc12c95236bae496806cdd9ec766dbdd05f4085","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-3.0.0-rc.3.tgz","fileCount":37,"unpackedSize":114493,"integrity":"sha512-wXLa47igz3ajkKehVsHEeYR1t1uLCjWFN70r+zoMNuhH3pN6vXJ9IKq8DtmS4M66IO8wlvGn2xjeYpIS9/0gRA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFs1Y90YF3RqjRxNNipBMQW5HLaOX+ur8+ou/wVEVmKWAiEAoxA8+67E14x2/BK7t3QiyT7yTBZu8i2w7VdAeePdR8M="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-drill_3.0.0-rc.3_1519755374846_0.2784397590046028"},"_hasShrinkwrap":false},"3.0.0-rc.4":{"name":"react-drill","version":"3.0.0-rc.4","description":"React DOM test utils.","main":"lib/index.js","scripts":{"lint":"eslint 'lib/**/*.js' 'addons/**/*.js'","test":"./node_modules/karma/bin/karma start --single-run --browsers Firefox","prepublish":"npm run lint && npm run test"},"files":["addons","lib","CHANGES.md","README.md","UPGRADE.md"],"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"7.1.3","babel-plugin-istanbul":"4.1.5","babel-preset-react":"6.24.1","blessed":"x","chai":"^3.3.0","chai-assert-change":"file:///home/kandie/Workspace/Projects/chai-assert-change","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","istanbul":"0.4.5","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-coverage":"1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"2.0.11","megadoc-cli":"6.5.0","megadoc-compiler":"6.5.0","megadoc-preset-js":"6.5.0","megadoc-theme-minimalist":"6.0.0","mocha":"5.0.1","object-assign":"4.1.0","pikaday":"1.7.0","react":"15.5.4","react-blessed":"0.x","react-dom":"15.5.4","sinon":"4.4.2","webpack":"4.0.0"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 < 16","react-dom":">=0.14.1 < 16"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1"},"readme":"# React Drill\n\nReact Drill is a React testing library that facilitates interacting with a DOM\ntree through an expressive API similar to [Capybara's](https://github.com/teamc\napybara/capybara/blob/2.17_stable/README.md#the-dsl). The library provides a\nnumber of abstractions for locating particular UI elements using either React\ncomponent classes or DOM selectors and for interacting with them.\n\nThe name \"drill\" comes from the fact that the API allows you to \"drill down\" through a React virtual DOM tree to interact with elements in it.\n\n## Motivation\n\n- The means to easily express the _intent_ of an interaction instead of\n  fiddling around with implementation details like how to trigger the `select`\n  event on a combo box, or how to simulate typing into a text widget.\n\n  Drill does this by providing a set of uniform APIs that can abstract this\n  away:\n\n      drill(component)\n        .find(TextField)\n          .typeIn('hello world')\n\n- The possibility of not relying on CSS classes or DOM selectors to find\n  elements to interact with. Instead, one can use the source React component\n  class as a selector:\n\n      drill(component)\n        .find(Button, m.hasText('Save'))\n          .click()\n\n## Usage\n\nTo install the package you can get it from npm:\n\n```shell\nnpm install --save-dev react-drill\n```\n\nIt is recommended to go quickly over the [[concepts | README.md#concepts]]\nbefore jumping into the API.\n\n## Concepts\n\nDrill's API is driven by four concepts: the scope object, selectors, matchers,\nand actions. This section will walk you through them.\n\n### Scope\n\nA [[scope | Scope]] is an object that represents the current React component\nand a set of DOM nodes that you're able to interact with. When you [[drill]]\ninto a tree, you get a scope back.\n\nThe scope APIs are chainable in that most of them return another scope back for\nyou, unless they're [[actions | README.md#actions]] then they'd return the same\nscope back.\n\n    drill(component)    // => Scope.<component, [findDOMNode(component)]>\n      .find(Menu)       // => Scope.<Menu, [findDOMNode(Menu)]>\n        .find('button') // => Scope.<Menu, [HTMLElement.<button>]>\n          .click()      // => Scope.<Menu, [HTMLElement.<button>]>\n          .blur()       // => Scope.<Menu, [HTMLElement.<button>]>\n\n**Next**: we can create scopes but how do we refine them to represent other\ncomponents and DOM nodes down the tree?\n\n### Selectors\n\nA selector is a function that locates React components _or_ DOM nodes inside\nthe current scope matching criteria you specify. The most common selectors are\n[[Scope#find]] and [[Scope#findAll]].\n\n    drill(component)\n      .find(Menu)        // find is a selector\n        .findAll(Button) // findAll is also a selector\n\n**Next:** we're now able to create scopes and select elements, but not\nparticular ones. Can we refine our selection further?\n\n### Matchers\n\nA [[matcher | Matcher]] is a predicate function that allows you to refine your\nselection to locate a most particular element in your scope. All [[selectors |\n./README.md#selectors]] accept a matcher.\n\n    drill(component)\n      .find(Button, m.hasText('Save')) // hasText is a matcher\n\nA list of [[common matchers | Matchers]] is available for your convenience and\nyou can [[build your own | examples/custom-matchers.md]] too.\n\n**Next:** with the ability to locate particular elements using selectors and\nmatchers, we now need a way to interact with them.\n\n### Actions\n\nAn action is a function that takes a scope and interacts with its DOM node(s)\nor its component, such as by clicking, blurring, or typing in.\n\nThe [[pre-made actions | Actions]] are available directly on the stock\n[[Scope]] object.\n\n    drill(component)\n      .click() // click is an action\n\nJust like with matchers, you can [[define your own actions | examples/custom-\nactions.md]] too.\n\n## Where to go from here\n\nSee [[drill]] for creating a scope and then the [[Scope]] itself for more\npossibilities. Or if you'd prefer to see examples first, browse from the\nsidebar to the left.\n\n## FAQ\n\n### Drill isn't working with stateless components!\n\nIt cannot since they have no instance to represent them and the [[scope]] needs\none otherwise it cannot tell what's a component and what's a (virtual) DOM\nnode.\n\nYou can not use this library if you're using stateless components exclusively.\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"cb860128283de3e052ac67694a7c6d72664c836b","_id":"react-drill@3.0.0-rc.4","_shasum":"b213e74608f5dc7b5cd9a406fdcef34ea86ea433","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"b213e74608f5dc7b5cd9a406fdcef34ea86ea433","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-3.0.0-rc.4.tgz","fileCount":38,"unpackedSize":119260,"integrity":"sha512-regRYBAzxxNM72ZB+V8MqBR2RGGVxJFgtmsNoE6BDTOdMP0LbzgUBftak9CYnAOH3DEwuNAiMOx/j8FQePz3Zg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfuqEwvbfwMmNSj97AkYQnMx4oLZpm/mixD0H4vWTiZQIgHJXgLDojE0dJJjyu4vleSLtxbesebl/+JhhYE1pIaqc="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-drill_3.0.0-rc.4_1519772152987_0.5038574762589922"},"_hasShrinkwrap":false},"3.0.0-rc.5":{"name":"react-drill","version":"3.0.0-rc.5","description":"React DOM test utils.","main":"lib/index.js","scripts":{},"files":["addons","lib","CHANGES.md","README.md","UPGRADE.md"],"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"7.1.3","babel-plugin-istanbul":"4.1.5","babel-preset-react":"6.24.1","blessed":"x","chai":"^3.3.0","chai-assert-change":"file:///home/kandie/Workspace/Projects/chai-assert-change","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","istanbul":"0.4.5","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-coverage":"1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"2.0.11","megadoc-cli":"6.5.0","megadoc-compiler":"6.5.0","megadoc-preset-js":"6.5.0","megadoc-theme-minimalist":"6.0.0","mocha":"5.0.1","object-assign":"4.1.0","pikaday":"1.7.0","react":"15.5.4","react-blessed":"0.x","react-dom":"15.5.4","sinon":"4.4.2","webpack":"4.0.0"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 < 16","react-dom":">=0.14.1 < 16"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1"},"readme":"# React Drill\n\nReact Drill is a React testing library that facilitates interacting with a DOM\ntree through an expressive API similar to [Capybara's](https://github.com/teamc\napybara/capybara/blob/2.17_stable/README.md#the-dsl). The library provides a\nnumber of abstractions for locating particular UI elements using either React\ncomponent classes or DOM selectors and for interacting with them.\n\nThe name \"drill\" comes from the fact that the API allows you to \"drill down\" through a React virtual DOM tree to interact with elements in it.\n\n## Motivation\n\n- The means to easily express the _intent_ of an interaction instead of\n  fiddling around with implementation details like how to trigger the `select`\n  event on a combo box, or how to simulate typing into a text widget.\n\n  Drill does this by providing a set of uniform APIs that can abstract this\n  away:\n\n      drill(component)\n        .find(TextField)\n          .typeIn('hello world')\n\n- The possibility of not relying on CSS classes or DOM selectors to find\n  elements to interact with. Instead, one can use the source React component\n  class as a selector:\n\n      drill(component)\n        .find(Button, m.hasText('Save'))\n          .click()\n\n## Usage\n\nTo install the package you can get it from npm:\n\n```shell\nnpm install --save-dev react-drill\n```\n\nIt is recommended to go quickly over the [[concepts | README.md#concepts]]\nbefore jumping into the API.\n\n## Concepts\n\nDrill's API is driven by four concepts: the scope object, selectors, matchers,\nand actions. This section will walk you through them.\n\n### Scope\n\nA [[scope | Scope]] is an object that represents the current React component\nand a set of DOM nodes that you're able to interact with. When you [[drill]]\ninto a tree, you get a scope back.\n\nThe scope APIs are chainable in that most of them return another scope back for\nyou, unless they're [[actions | README.md#actions]] then they'd return the same\nscope back.\n\n    drill(component)    // => Scope.<component, [findDOMNode(component)]>\n      .find(Menu)       // => Scope.<Menu, [findDOMNode(Menu)]>\n        .find('button') // => Scope.<Menu, [HTMLElement.<button>]>\n          .click()      // => Scope.<Menu, [HTMLElement.<button>]>\n          .blur()       // => Scope.<Menu, [HTMLElement.<button>]>\n\n**Next**: we can create scopes but how do we refine them to represent other\ncomponents and DOM nodes down the tree?\n\n### Selectors\n\nA selector is a function that locates React components _or_ DOM nodes inside\nthe current scope matching criteria you specify. The most common selectors are\n[[Scope#find]] and [[Scope#findAll]].\n\n    drill(component)\n      .find(Menu)        // find is a selector\n        .findAll(Button) // findAll is also a selector\n\n**Next:** we're now able to create scopes and select elements, but not\nparticular ones. Can we refine our selection further?\n\n### Matchers\n\nA [[matcher | Matcher]] is a predicate function that allows you to refine your\nselection to locate a most particular element in your scope. All [[selectors |\n./README.md#selectors]] accept a matcher.\n\n    drill(component)\n      .find(Button, m.hasText('Save')) // hasText is a matcher\n\nA list of [[common matchers | Matchers]] is available for your convenience and\nyou can [[build your own | examples/custom-matchers.md]] too.\n\n**Next:** with the ability to locate particular elements using selectors and\nmatchers, we now need a way to interact with them.\n\n### Actions\n\nAn action is a function that takes a scope and interacts with its DOM node(s)\nor its component, such as by clicking, blurring, or typing in.\n\nThe [[pre-made actions | Actions]] are available directly on the stock\n[[Scope]] object.\n\n    drill(component)\n      .click() // click is an action\n\nJust like with matchers, you can [[define your own actions | examples/custom-\nactions.md]] too.\n\n## Where to go from here\n\nSee [[drill]] for creating a scope and then the [[Scope]] itself for more\npossibilities. Or if you'd prefer to see examples first, browse from the\nsidebar to the left.\n\n## FAQ\n\n### Drill isn't working with stateless components!\n\nIt cannot since they have no instance to represent them and the [[scope]] needs\none otherwise it cannot tell what's a component and what's a (virtual) DOM\nnode.\n\nYou can not use this library if you're using stateless components exclusively.\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"cb860128283de3e052ac67694a7c6d72664c836b","_id":"react-drill@3.0.0-rc.5","_shasum":"729157149976dfe976b336b2e8737494f3b69458","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"729157149976dfe976b336b2e8737494f3b69458","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-3.0.0-rc.5.tgz","fileCount":38,"unpackedSize":119769,"integrity":"sha512-kBJNCheYx61HAo2mo/5RgUWIWDPgb5J5dppI9tThyHJREz5+ZJJkJabvoXh3NFTUwUR81iHFNneCupz5f3iThw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHhcPTwg02okZB/5FB0wVhVm1ah3AfIgsMH7IBDoqneUAiBJ7Kd8g9XLcLD1cfPkxzoigPhaZXTukZe4WQdJ1fPVxQ=="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-drill_3.0.0-rc.5_1519772540811_0.5703643385665744"},"_hasShrinkwrap":false},"3.0.0-rc.6":{"name":"react-drill","version":"3.0.0-rc.6","description":"React DOM test utils.","main":"lib/index.js","scripts":{"lint":"eslint 'lib/**/*.js' 'addons/**/*.js'","test":"./node_modules/karma/bin/karma start --single-run --browsers Firefox","prepublish":"npm run lint && npm run test"},"files":["addons","lib","CHANGES.md","README.md","UPGRADE.md"],"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"7.1.3","babel-plugin-istanbul":"4.1.5","babel-preset-react":"6.24.1","blessed":"x","chai":"^3.3.0","chai-assert-change":"1.0.0","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","istanbul":"0.4.5","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-coverage":"1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"2.0.11","megadoc-cli":"6.5.0","megadoc-compiler":"6.5.0","megadoc-preset-js":"6.5.0","megadoc-theme-minimalist":"6.0.0","mocha":"5.0.1","object-assign":"4.1.0","pikaday":"1.7.0","react":"15.5.4","react-blessed":"0.x","react-dom":"15.5.4","sinon":"4.4.2","webpack":"4.0.0"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 < 16","react-dom":">=0.14.1 < 16"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1"},"readme":"# React Drill\n\nReact Drill is a React testing library that facilitates interacting with a DOM\ntree through an expressive API similar to [Capybara's](https://github.com/teamc\napybara/capybara/blob/2.17_stable/README.md#the-dsl). The library provides a\nnumber of abstractions for locating particular UI elements using either React\ncomponent classes or DOM selectors and for interacting with them.\n\nThe name \"drill\" comes from the fact that the API allows you to \"drill down\" through a React virtual DOM tree to interact with elements in it.\n\n## Motivation\n\n- The means to easily express the _intent_ of an interaction instead of\n  fiddling around with implementation details like how to trigger the `select`\n  event on a combo box, or how to simulate typing into a text widget.\n\n  Drill does this by providing a set of uniform APIs that can abstract this\n  away:\n\n      drill(component)\n        .find(TextField)\n          .typeIn('hello world')\n\n- The possibility of not relying on CSS classes or DOM selectors to find\n  elements to interact with. Instead, one can use the source React component\n  class as a selector:\n\n      drill(component)\n        .find(Button, m.hasText('Save'))\n          .click()\n\n## Usage\n\nTo install the package you can get it from npm:\n\n```shell\nnpm install --save-dev react-drill\n```\n\nIt is recommended to go quickly over the [[concepts | README.md#concepts]]\nbefore jumping into the API.\n\n## Concepts\n\nDrill's API is driven by four concepts: the scope object, selectors, matchers,\nand actions. This section will walk you through them.\n\n### Scope\n\nA [[scope | Scope]] is an object that represents the current React component\nand a set of DOM nodes that you're able to interact with. When you [[drill]]\ninto a tree, you get a scope back.\n\nThe scope APIs are chainable in that most of them return another scope back for\nyou, unless they're [[actions | README.md#actions]] then they'd return the same\nscope back.\n\n    drill(component)    // => Scope.<component, [findDOMNode(component)]>\n      .find(Menu)       // => Scope.<Menu, [findDOMNode(Menu)]>\n        .find('button') // => Scope.<Menu, [HTMLElement.<button>]>\n          .click()      // => Scope.<Menu, [HTMLElement.<button>]>\n          .blur()       // => Scope.<Menu, [HTMLElement.<button>]>\n\n**Next**: we can create scopes but how do we refine them to represent other\ncomponents and DOM nodes down the tree?\n\n### Selectors\n\nA selector is a function that locates React components _or_ DOM nodes inside\nthe current scope matching criteria you specify. The most common selectors are\n[[Scope#find]] and [[Scope#findAll]].\n\n    drill(component)\n      .find(Menu)        // find is a selector\n        .findAll(Button) // findAll is also a selector\n\n**Next:** we're now able to create scopes and select elements, but not\nparticular ones. Can we refine our selection further?\n\n### Matchers\n\nA [[matcher | Matcher]] is a predicate function that allows you to refine your\nselection to locate a most particular element in your scope. All [[selectors |\n./README.md#selectors]] accept a matcher.\n\n    drill(component)\n      .find(Button, m.hasText('Save')) // hasText is a matcher\n\nA list of [[common matchers | Matchers]] is available for your convenience and\nyou can [[build your own | examples/custom-matchers.md]] too.\n\n**Next:** with the ability to locate particular elements using selectors and\nmatchers, we now need a way to interact with them.\n\n### Actions\n\nAn action is a function that takes a scope and interacts with its DOM node(s)\nor its component, such as by clicking, blurring, or typing in.\n\nThe [[pre-made actions | Actions]] are available directly on the stock\n[[Scope]] object.\n\n    drill(component)\n      .click() // click is an action\n\nJust like with matchers, you can [[define your own actions | examples/custom-\nactions.md]] too.\n\n## Where to go from here\n\nSee [[drill]] for creating a scope and then the [[Scope]] itself for more\npossibilities. Or if you'd prefer to see examples first, browse from the\nsidebar to the left.\n\n## FAQ\n\n### Drill isn't working with stateless components!\n\nIt cannot since they have no instance to represent them and the [[scope]] needs\none otherwise it cannot tell what's a component and what's a (virtual) DOM\nnode.\n\nYou can not use this library if you're using stateless components exclusively.\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"2ab737d2e5303bc84f022eab1bffde3a9a294912","_id":"react-drill@3.0.0-rc.6","_shasum":"8f5ddf4e055db17def099fc58916bd63d844655c","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"8f5ddf4e055db17def099fc58916bd63d844655c","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-3.0.0-rc.6.tgz","fileCount":36,"unpackedSize":104576,"integrity":"sha512-SRZx8ftspc6LKTLDGmUm5pgkMmdTCpv0OLy+FNIOc3XF1Nj3aI4boUINpk0o1rhn5Ffg8lKeSUDpLeesQZGZOg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChtF2kVn75M1Mcpj4f982nNwoAuO5dUnfCpWj4fKUHeQIgSndSQNQbJ1M8koIZgIL16NK3Mp8mWCzpZPW7blYT/rY="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-drill_3.0.0-rc.6_1519806254581_0.520069042805472"},"_hasShrinkwrap":false},"3.0.0-rc.7":{"name":"react-drill","version":"3.0.0-rc.7","description":"React DOM test utils.","main":"lib/index.js","scripts":{"lint":"eslint 'lib/**/*.js' 'addons/**/*.js'","test":"./node_modules/karma/bin/karma start --single-run --browsers Firefox","prepublish":"npm run lint && npm run test"},"files":["addons","lib","CHANGES.md","README.md","UPGRADE.md"],"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"7.1.3","babel-plugin-istanbul":"4.1.5","babel-preset-react":"6.24.1","blessed":"x","chai":"^3.3.0","chai-assert-change":"1.0.0","cheerio":"1.0.0-rc.2","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","istanbul":"0.4.5","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-coverage":"1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"2.0.11","megadoc-cli":"6.5.0","megadoc-compiler":"6.5.0","megadoc-preset-js":"6.5.0","megadoc-theme-minimalist":"6.0.0","mocha":"5.0.1","object-assign":"4.1.0","pikaday":"1.7.0","react":"15.5.4","react-blessed":"0.x","react-dom":"15.5.4","sinon":"4.4.2","webpack":"3.11.0"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 < 16","react-dom":">=0.14.1 < 16"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1"},"readme":"# React Drill\n\nReact Drill is a React testing library that facilitates interacting with a DOM\ntree through an expressive API similar to [Capybara's](https://github.com/teamc\napybara/capybara/blob/2.17_stable/README.md#the-dsl). The library provides a\nnumber of abstractions for locating particular UI elements using either React\ncomponent classes or DOM selectors and for interacting with them.\n\nThe name \"drill\" comes from the fact that the API allows you to \"drill down\" through a React virtual DOM tree to interact with elements in it.\n\n## Motivation\n\n- The means to easily express the _intent_ of an interaction instead of\n  fiddling around with implementation details like how to trigger the `select`\n  event on a combo box, or how to simulate typing into a text widget.\n\n  Drill does this by providing a set of uniform APIs that can abstract this\n  away:\n\n      drill(component)\n        .find(TextField)\n          .typeIn('hello world')\n\n- The possibility of not relying on CSS classes or DOM selectors to find\n  elements to interact with. Instead, one can use the source React component\n  class as a selector:\n\n      drill(component)\n        .find(Button, m.hasText('Save'))\n          .click()\n\n## Usage\n\nTo install the package you can get it from npm:\n\n```shell\nnpm install --save-dev react-drill\n```\n\nIt is recommended to go quickly over the [[concepts | README.md#concepts]]\nbefore jumping into the API.\n\n## Concepts\n\nDrill's API is driven by four concepts: the scope object, selectors, matchers,\nand actions. This section will walk you through them.\n\n### Scope\n\nA [[scope | Scope]] is an object that represents the current React component\nand a set of DOM nodes that you're able to interact with. When you [[drill]]\ninto a tree, you get a scope back.\n\nThe scope APIs are chainable in that most of them return another scope back for\nyou, unless they're [[actions | README.md#actions]] then they'd return the same\nscope back.\n\n    drill(component)    // => Scope.<component, [findDOMNode(component)]>\n      .find(Menu)       // => Scope.<Menu, [findDOMNode(Menu)]>\n        .find('button') // => Scope.<Menu, [HTMLElement.<button>]>\n          .click()      // => Scope.<Menu, [HTMLElement.<button>]>\n          .blur()       // => Scope.<Menu, [HTMLElement.<button>]>\n\n**Next**: we can create scopes but how do we refine them to represent other\ncomponents and DOM nodes down the tree?\n\n### Selectors\n\nA selector is a function that locates React components _or_ DOM nodes inside\nthe current scope matching criteria you specify. The most common selectors are\n[[Scope#find]] and [[Scope#findAll]].\n\n    drill(component)\n      .find(Menu)        // find is a selector\n        .findAll(Button) // findAll is also a selector\n\n**Next:** we're now able to create scopes and select elements, but not\nparticular ones. Can we refine our selection further?\n\n### Matchers\n\nA [[matcher | Matcher]] is a predicate function that allows you to refine your\nselection to locate a most particular element in your scope. All [[selectors |\n./README.md#selectors]] accept a matcher.\n\n    drill(component)\n      .find(Button, m.hasText('Save')) // hasText is a matcher\n\nA list of [[common matchers | Matchers]] is available for your convenience and\nyou can [[build your own | examples/custom-matchers.md]] too.\n\n**Next:** with the ability to locate particular elements using selectors and\nmatchers, we now need a way to interact with them.\n\n### Actions\n\nAn action is a function that takes a scope and interacts with its DOM node(s)\nor its component, such as by clicking, blurring, or typing in.\n\nThe [[pre-made actions | Actions]] are available directly on the stock\n[[Scope]] object.\n\n    drill(component)\n      .click() // click is an action\n\nJust like with matchers, you can [[define your own actions | examples/custom-\nactions.md]] too.\n\n## Where to go from here\n\nSee [[drill]] for creating a scope and then the [[Scope]] itself for more\npossibilities. Or if you'd prefer to see examples first, browse from the\nsidebar to the left.\n\n## FAQ\n\n### Drill isn't working with stateless components!\n\nIt cannot since they have no instance to represent them and the [[scope]] needs\none otherwise it cannot tell what's a component and what's a (virtual) DOM\nnode.\n\nYou can not use this library if you're using stateless components exclusively.\n\n### Can't find the \"react test utils\" package\n\nIf you're using a version of React lower than 15.5.4 then you need to inject\ndrill with the ReactTestUtils object which can be found from the following\nfiles in different versions:\n\nVersion  | File\n-------- | ----\n> 15.5.4 | `react-dom/test-utils`\n> 15.4.1 | `react-addons-test-utils` (NPM package)\n< 15.4.1 | `react/lib/ReactTestUtils.js`\n\nThe following script shows how to provide drill with your own version of the\ntest utils package. **Make sure you call this before requiring the drill\nitself!**\n\n```javascript\nrequire('react-drill/lib/dependencies/ReactTestUtils')(\n  require('react-addons-test-utils')\n)\n\n// now you can use react-drill\nconst { drill } = require('react-drill')\n```\n\n### Can it be used without React or a DOM?\n\nMaybe. See [[./examples/using-without-react.md]] or\n[[./addons/react-blessed/README.md]].\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"0e75edd5598c7cb9f8a83df80d0acda105482028","_id":"react-drill@3.0.0-rc.7","_shasum":"0d0ca8ed09dba265c35c07fddfc372907676d8ed","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"0d0ca8ed09dba265c35c07fddfc372907676d8ed","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-3.0.0-rc.7.tgz","fileCount":38,"unpackedSize":113161,"integrity":"sha512-RK9svm469dCyiz3oJMjNO/ZKcRxJqPGVSR8poQHfUVLhMOFTSV6k7REIPDB+O3pgbIOfZj6rV9aBrC0U5i/WyA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB7h86yrU5SEDiviEzw6IZ3Hu+hQOWj5djHmlTAKWwFYAiEAiw8tuajNRt81WsfiXHUwJfom1NT+yKkf2Y3wObHrEgk="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-drill_3.0.0-rc.7_1530028995541_0.7311887807580428"},"_hasShrinkwrap":false},"3.0.0-rc.8":{"name":"react-drill","version":"3.0.0-rc.8","description":"React DOM test utils.","main":"lib/index.js","scripts":{"lint":"eslint 'lib/**/*.js' 'addons/**/*.js'","test":"./node_modules/karma/bin/karma start --single-run --browsers Firefox","prepublish":"npm run lint && npm run test"},"files":["addons","lib","CHANGES.md","README.md","UPGRADE.md"],"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"7.1.3","babel-plugin-istanbul":"4.1.5","babel-preset-react":"6.24.1","blessed":"x","chai":"^3.3.0","chai-assert-change":"1.0.0","cheerio":"1.0.0-rc.2","create-react-class":"15.6.3","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","istanbul":"0.4.5","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-coverage":"1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"2.0.11","megadoc-cli":"6.5.0","megadoc-compiler":"6.5.0","megadoc-preset-js":"6.5.0","megadoc-theme-minimalist":"6.0.0","mocha":"5.0.1","object-assign":"4.1.0","pikaday":"1.7.0","prop-types":"15.6.1","react":"16.4.0","react-blessed":"0.x","react-dom":"16.4.0","sinon":"4.4.2","webpack":"3.11.0"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 <=16.4","react-dom":">=0.14.1 <=16.4"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1"},"readme":"# React Drill\n\nReact Drill is a React testing library that facilitates interacting with a DOM\ntree through an expressive API similar to [Capybara's](https://github.com/teamc\napybara/capybara/blob/2.17_stable/README.md#the-dsl). The library provides a\nnumber of abstractions for locating particular UI elements using either React\ncomponent classes or DOM selectors and for interacting with them.\n\nThe name \"drill\" comes from the fact that the API allows you to \"drill down\" through a React virtual DOM tree to interact with elements in it.\n\n## Motivation\n\n- The means to easily express the _intent_ of an interaction instead of\n  fiddling around with implementation details like how to trigger the `select`\n  event on a combo box, or how to simulate typing into a text widget.\n\n  Drill does this by providing a set of uniform APIs that can abstract this\n  away:\n\n      drill(component)\n        .find(TextField)\n          .typeIn('hello world')\n\n- The possibility of not relying on CSS classes or DOM selectors to find\n  elements to interact with. Instead, one can use the source React component\n  class as a selector:\n\n      drill(component)\n        .find(Button, m.hasText('Save'))\n          .click()\n\n## Usage\n\nTo install the package you can get it from npm:\n\n```shell\nnpm install --save-dev react-drill\n```\n\nIt is recommended to go quickly over the [[concepts | README.md#concepts]]\nbefore jumping into the API.\n\n## Concepts\n\nDrill's API is driven by four concepts: the scope object, selectors, matchers,\nand actions. This section will walk you through them.\n\n### Scope\n\nA [[scope | Scope]] is an object that represents the current React component\nand a set of DOM nodes that you're able to interact with. When you [[drill]]\ninto a tree, you get a scope back.\n\nThe scope APIs are chainable in that most of them return another scope back for\nyou, unless they're [[actions | README.md#actions]] then they'd return the same\nscope back.\n\n    drill(component)    // => Scope.<component, [findDOMNode(component)]>\n      .find(Menu)       // => Scope.<Menu, [findDOMNode(Menu)]>\n        .find('button') // => Scope.<Menu, [HTMLElement.<button>]>\n          .click()      // => Scope.<Menu, [HTMLElement.<button>]>\n          .blur()       // => Scope.<Menu, [HTMLElement.<button>]>\n\n**Next**: we can create scopes but how do we refine them to represent other\ncomponents and DOM nodes down the tree?\n\n### Selectors\n\nA selector is a function that locates React components _or_ DOM nodes inside\nthe current scope matching criteria you specify. The most common selectors are\n[[Scope#find]] and [[Scope#findAll]].\n\n    drill(component)\n      .find(Menu)        // find is a selector\n        .findAll(Button) // findAll is also a selector\n\n**Next:** we're now able to create scopes and select elements, but not\nparticular ones. Can we refine our selection further?\n\n### Matchers\n\nA [[matcher | Matcher]] is a predicate function that allows you to refine your\nselection to locate a most particular element in your scope. All [[selectors |\n./README.md#selectors]] accept a matcher.\n\n    drill(component)\n      .find(Button, m.hasText('Save')) // hasText is a matcher\n\nA list of [[common matchers | Matchers]] is available for your convenience and\nyou can [[build your own | examples/custom-matchers.md]] too.\n\n**Next:** with the ability to locate particular elements using selectors and\nmatchers, we now need a way to interact with them.\n\n### Actions\n\nAn action is a function that takes a scope and interacts with its DOM node(s)\nor its component, such as by clicking, blurring, or typing in.\n\nThe [[pre-made actions | Actions]] are available directly on the stock\n[[Scope]] object.\n\n    drill(component)\n      .click() // click is an action\n\nJust like with matchers, you can [[define your own actions | examples/custom-\nactions.md]] too.\n\n## Where to go from here\n\nSee [[drill]] for creating a scope and then the [[Scope]] itself for more\npossibilities. Or if you'd prefer to see examples first, browse from the\nsidebar to the left.\n\n## FAQ\n\n### Drill isn't working with stateless components!\n\nIt cannot since they have no instance to represent them and the [[scope]] needs\none otherwise it cannot tell what's a component and what's a (virtual) DOM\nnode.\n\nYou can not use this library if you're using stateless components exclusively.\n\n### Can't find the \"react test utils\" package\n\nIf you're using a version of React lower than 15.5.4 then you need to inject\ndrill with the ReactTestUtils object which can be found from the following\nfiles in different versions:\n\nVersion  | File\n-------- | ----\n> 15.5.4 | `react-dom/test-utils`\n> 15.4.1 | `react-addons-test-utils` (NPM package)\n< 15.4.1 | `react/lib/ReactTestUtils.js`\n\nThe following script shows how to provide drill with your own version of the\ntest utils package. **Make sure you call this before requiring the drill\nitself!**\n\n```javascript\nrequire('react-drill/lib/dependencies/ReactTestUtils')(\n  require('react-addons-test-utils')\n)\n\n// now you can use react-drill\nconst { drill } = require('react-drill')\n```\n\n### Can it be used without React or a DOM?\n\nMaybe. See [[./examples/using-without-react.md]] or\n[[./addons/react-blessed/README.md]].\n\n### My tests are failing when drilling into an  `unknown` component\n\nDrill will output the tag `<<unknown>>` if it can't find the displayName for a\ncomponent. If you are using ES6 classes for your React components, make sure\nyou're assigning a name rather than using anonymous classes. If you're using\n`createReactClass()` from the `create-react-class` package, Drill should\nautomatically infer the component name, but you can always add a `displayName:\n\"MyComponent\"` property to your createReactClass call.\n\nThe displayName is useful for debugging and tracing component hierarchies, so\nyour Drill experience will be easier if you keep the above in mind.\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"7b132d39492c8a3ef2aeae9485a348bbc758fe48","_id":"react-drill@3.0.0-rc.8","_shasum":"f67e0315a4c09bdb4a97a170141f3b5bd149dec8","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"f67e0315a4c09bdb4a97a170141f3b5bd149dec8","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-3.0.0-rc.8.tgz","fileCount":38,"unpackedSize":115882,"integrity":"sha512-JIcACM/8TNm+Yr3OaUwiqDye7898614ofAfMcHBIZrZN/HlvHFccP7ojkbEPqJ3xbarVuOUd9p6PxA1vEd0McA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDlbHookyXmPfrgMFjaWSEACdbpTzALW5Zr/N7VTLY8qAiBXrxZVEQJA6w6VzFMA2KOajk6OAVXwi0l4QxonAquy/g=="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-drill_3.0.0-rc.8_1530039130301_0.050828590017660824"},"_hasShrinkwrap":false},"3.0.0":{"name":"react-drill","version":"3.0.0","description":"React DOM test utils.","main":"lib/index.js","scripts":{"lint":"eslint 'lib/**/*.js' 'addons/**/*.js'","test":"./node_modules/karma/bin/karma start --single-run --browsers Firefox","prepublish":"npm run lint && npm run test"},"files":["addons","lib","CHANGES.md","README.md","UPGRADE.md"],"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"7.1.3","babel-plugin-istanbul":"4.1.5","babel-preset-react":"6.24.1","blessed":"x","chai":"^3.3.0","chai-assert-change":"1.0.0","cheerio":"1.0.0-rc.2","create-react-class":"15.6.3","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","istanbul":"0.4.5","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-coverage":"1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"2.0.11","megadoc-cli":"6.5.0","megadoc-compiler":"6.5.0","megadoc-preset-js":"6.5.0","megadoc-theme-minimalist":"6.0.0","mocha":"5.0.1","object-assign":"4.1.0","pikaday":"1.7.0","prop-types":"15.6.1","react":"16.4.0","react-blessed":"0.x","react-dom":"16.4.0","sinon":"4.4.2","webpack":"3.11.0"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 <=16.4","react-dom":">=0.14.1 <=16.4"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1"},"gitHead":"3c7e25f0f1deef94e73a4524d68133310d74141f","_id":"react-drill@3.0.0","_shasum":"7ab657a0b83ca3171d55f23ce9a8cf3b8c9ad257","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"7ab657a0b83ca3171d55f23ce9a8cf3b8c9ad257","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-3.0.0.tgz","fileCount":20,"unpackedSize":73292,"integrity":"sha512-0vL96E1YBfhbjytElUuGtCMEQKqXQ6wCuM2CPoLjaUuDfK2CdEVxqhFvgp0mf2dqBxWNvKZOJ1twyvWiWL13eA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjXK9Dbsr6GoN/s6fX1+gVd8cf0Ls2z5iIwWrl1yX8EAIgWpG64vycPBSfrfLwIBhJD43vcD+4IHX9XtfuA5VlN8Q="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-drill_3.0.0_1530040819018_0.7411466365745485"},"_hasShrinkwrap":false},"3.0.1":{"name":"react-drill","version":"3.0.1","description":"React DOM test utils.","main":"lib/index.js","scripts":{"lint":"eslint 'lib/**/*.js' 'addons/**/*.js'","test":"./node_modules/karma/bin/karma start --single-run --browsers Firefox","prepublish":"npm run lint && npm run test"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"7.1.3","babel-plugin-istanbul":"4.1.5","babel-preset-react":"6.24.1","blessed":"x","chai":"^3.3.0","chai-assert-change":"1.0.0","cheerio":"1.0.0-rc.2","create-react-class":"15.6.3","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","istanbul":"0.4.5","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-coverage":"1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"2.0.11","megadoc-cli":"6.5.0","megadoc-compiler":"6.5.0","megadoc-preset-js":"6.5.0","megadoc-theme-minimalist":"6.0.0","mocha":"5.0.1","object-assign":"4.1.0","pikaday":"1.7.0","prop-types":"15.6.1","react":"16.4.0","react-blessed":"0.x","react-dom":"16.4.0","sinon":"4.4.2","webpack":"3.11.0"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 <=16.4","react-dom":">=0.14.1 <=16.4"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1"},"gitHead":"940e2145571a8149b50feba673a0e8a307c30da5","_id":"react-drill@3.0.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"integrity":"sha512-qm7QOwqa7WJ5rtP8fxtf4DZkgwD4lhGwEgTbgyUeZHL+OmmXcL/HpEnoQBUcmkmCIiCYkYdoyxl2Jy+A3NiBuw==","shasum":"11e531d4ad85269ba300b0d9c732764b5d7af006","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-3.0.1.tgz","fileCount":20,"unpackedSize":73413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb808/CRA9TVsSAnZWagAAM4UP/j3aBIqiP96ZsEaBzr3u\nc7eSTrxBrwvNMa3KA00186u435OObuTBNDMBOGJJ3Lzryx7gVU36/zBlTQ+r\ntaJZG68vI/BFetIBczfLV9H/yA4hCDu3DJ7vJzw1UIwpcZB862y3CUfgdE2n\n7dXzONYIYxt9Ryzva5+vkclJ/RtD7TTlwCLwLxKEMsdUYUeTMyg+pcVTazbo\nEIB5WUHL2cLrQY9lk+xnfy0AgDIpOrNQSTVm67neY0xzHo3Nxd2L0kIiguiA\nTvbugn1rQf7ip+Wk/zFnM9s3BgWd6UkgzC71M4igtSZavAkruF1BCe+wmVdN\npBsazb1G+GBw1xgpZPmmjSfTV4FPQ3RuTiOPlNQBC7792fwIyyqWk112AGYl\nNWEgFCPsdKERe2/cEEpUeRzc88NSykGFOf9ooo4PaD9/OZF/YMtQQkMTgzOL\nUwDz1iNEwRHYfMyF6Rq9q+jtPOefWEN/MnPYiUYPd16huUooXxBnXR47WrvG\nsCKI9UJpqtrnlKQYTwmKShJ7VZnhPcG2Jd7+4nsHUXCGQbzkUZKvmgShDEHv\nhcIjhBPaLvHER6d4zrcKsRDYbqdohH4tSckU5g9pHlw446TC6zDqxbc6nRjX\nmgfpMS6+FD0nNX+81wK0SE0PPedhcuWVM2jAGY/Y/ZexKJyg3xQiYkIqVW2/\nLMhz\r\n=A3pY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGHbTrY6/VqLmBOcaxwi1fxbgPeJb6dBJJaTaXl8TcktAiEA6pted929BuWP3lynmRszjjOzM0sZndHo6IhlFY/BGwY="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-drill_3.0.1_1542672190964_0.001402997661311911"},"_hasShrinkwrap":false},"3.1.0":{"name":"react-drill","version":"3.1.0","description":"React DOM test utils.","main":"lib/index.js","scripts":{"lint":"eslint 'lib/**/*.js' 'addons/**/*.js'","test":"./node_modules/karma/bin/karma start --single-run --browsers Firefox","prepublish":"npm run lint && npm run test"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"7.1.3","babel-plugin-istanbul":"4.1.5","babel-preset-react":"6.24.1","blessed":"x","chai":"^3.3.0","chai-assert-change":"1.0.0","cheerio":"1.0.0-rc.2","create-react-class":"15.6.3","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","istanbul":"0.4.5","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-coverage":"1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"2.0.11","megadoc-cli":"6.5.0","megadoc-compiler":"6.5.0","megadoc-preset-js":"6.5.0","megadoc-theme-minimalist":"6.0.0","mocha":"5.0.1","object-assign":"4.1.0","pikaday":"1.7.0","prop-types":"15.6.1","react":"16.7.0","react-blessed":"0.x","react-dom":"16.7.0","sinon":"4.4.2","webpack":"3.11.0"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 <=16.7.0","react-dom":">=0.14.1 <=16.7.0"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1"},"gitHead":"7a71fb2c588ff8a997be4713fdff3ae4767d5eed","_id":"react-drill@3.1.0","_shasum":"2a790eddb44f3174dbd498c29bc995b41dd1edf6","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.16.0","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"shasum":"2a790eddb44f3174dbd498c29bc995b41dd1edf6","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-3.1.0.tgz","integrity":"sha512-IRlSTpxMo+WueM68OOeTsHj63NVqfryypccXwSvpQxQc7eDgozpfFI2yrDR+wayqt85Q73Xb3t9TZ106Wj7XFg==","fileCount":20,"unpackedSize":73600,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOQGRCRA9TVsSAnZWagAAP04QAI5877nB0c/clf67LOf+\n52Xiv+WeygLH6OXlTXJ2ooDuDkWX/03ShPUw/qx4PTUwrR0ZVtqk8SNZebSe\nXh3o3Xi8SLlP1rkP8HfelwBouHE/0q5V13aUKP7e9O0PffWlgSCoBuZ0Sjyy\nDe33eGYWeu+GNMRX92ODuJA2qS7DjJGCZY4ISbA1TaNmi9c3hUfecEgkimw8\nL8lU+Xn0TghubNJfsCh5c3j5GLXsq//fE3K6ttnhwCqrVn5X2uuCOvag1gO6\nCSLTOREEmo6KKQpkJ/NUx9r2a5IsofQTM8y+JjERTbm/pX/sNOwm80gZMado\nZhvxXzAN9Pt1d+AJAsKz6mTPv5ecjXOysA/rzJJwPapAnkVehRSS76eBXYkC\n4g7+TM/VVtCGqO67y3r6mOwSWj5n5NIWDqJdJFu1gaiZm8243Wj0rxIXoWdC\n8T2ARiwcuHlNjvmMdEr1KG9fPxmo/+njrospbcJQvTZ5rOjo0FDCjgLzFhLe\niVNM7RjC98zGBMLpuBMFo71VB14PWMrPEqqyiUy1FFvCEcX9EZiFFgToBjA1\n5qnbfYU1C9dfwr9l0CXY90SQRYina8uFwr+5XC+o694hZ5KcxCqgHWt15WwK\n/qHCxq8p6ZXD+RwEXNnsG+v2ti8nrA8QjzkrQGL9NevNG6xKbSZTQpvwqUD4\nv+Li\r\n=ohPE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDx9lq+yixSSQywxG/hlYpmUiOJqbfbxFuwYOWEFyLlDwIhAIEQ/x74H6rCNoJlzOzDE1WXjMFmKKov1WbIVoI3nQjb"}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-drill_3.1.0_1547239824656_0.4871963111707649"},"_hasShrinkwrap":false},"4.0.0-rc.1":{"name":"react-drill","version":"4.0.0-rc.1","description":"React DOM test utils.","main":"lib/index.js","scripts":{"lint":"eslint 'lib/**/*.js' 'addons/**/*.js'","test":"./node_modules/karma/bin/karma start --single-run --browsers Firefox","prepublish":"npm run lint && npm run test"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"7.1.3","babel-plugin-istanbul":"4.1.5","babel-preset-react":"6.24.1","blessed":"x","chai":"^3.3.0","chai-assert-change":"1.0.0","cheerio":"1.0.0-rc.2","create-react-class":"15.6.3","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","istanbul":"0.4.5","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-coverage":"1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"2.0.11","megadoc-cli":"6.5.0","megadoc-compiler":"6.5.0","megadoc-preset-js":"6.5.0","megadoc-theme-minimalist":"6.0.0","mocha":"5.0.1","object-assign":"4.1.0","pikaday":"1.7.0","prop-types":"15.6.1","react":"16.7.0","react-blessed":"0.x","react-dom":"16.7.0","sinon":"4.4.2","webpack":"3.11.0"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 <=16.7.0","react-dom":">=0.14.1 <=16.7.0"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1"},"gitHead":"7a71fb2c588ff8a997be4713fdff3ae4767d5eed","_id":"react-drill@4.0.0-rc.1","_nodeVersion":"8.11.1","_npmVersion":"6.12.1","_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"dist":{"integrity":"sha512-6Fpvch/tCMahem9mBk+FOh438VDXRnrhmIJZkHtu/w6fg/rcwCW8cd25y1Y7byFdOtCtwheCYyiBGeKT9xoefA==","shasum":"5fe1d54f5cdc87c29175694f11de8f2b88226e2b","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-4.0.0-rc.1.tgz","fileCount":20,"unpackedSize":73939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdwzamCRA9TVsSAnZWagAAxg8QAJ2BvYWsv9JDmGFzrdTK\nOWU8mRZ41+WJXUTbBxS4SkLFeV3M6TKqkmheiSEG25HxpzK3M4nxpY0m65h5\nyRjz87FpjnIbQcGruHv/ien0uYlOqVng+T8/eWL3nSmXLS2cu0GuudRsKDu6\nNrXHsCwKCTb38hZ9kP6Mg+pkupFHGTqME7hjsyRuCV1+nEHfNISl++E6I9Wb\n7JfzaPjDMs5nmrygNKMA32q4XvxwZXXEJ+0mqbtwuyEbSwE3IQyvrjEYGk15\niHpwGuVqDuAh8J5zJH50Mj48i75bTjlROSHIHmNh1f3JP5Zr3SEQz+lvraPX\n3IQ3+HGnuhghmrrHqk97jTrO/O4vMHCwL8EqFoWQWOSlzFrh+HI6BXzaxRpC\nFECMJDPllv5qR0KSBuEz6HTzyYoDBbMlw3aFhAj5EElgXZq+cSoWnYBiT2Ob\nlU50L6cD8ALPV1rLNDCzWZywEdkBO8Sxm9fDVs4T9LO+cYOrLMVXpU2S9hWB\nzPCABrovA+puwe2yRjj0wbX3Q/J3b4M+II+MIQF1bF32J6W4A1qoNw2CJKXo\nNzuz94u7+bnFS3xiJ6ZF3oBbKkIEb88FhVQlL8lpCtL/hQngS+iwBtwYfx1Q\nWHIo51hGbnD+9j/Byadzo99L8+1PHQLRDsv1PE8febIftp/qKi9qA01aPNPC\n3QPJ\r\n=OSQX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVUfGZtz5tFiN3mVGo+VNa6b5bKasBD5cti1LjxJgS4QIgZAxYFr71t50FTCHR85fhckIZUfsWr7mtCqJu3ZdoeHA="}]},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-drill_4.0.0-rc.1_1573074598164_0.21888759917872425"},"_hasShrinkwrap":false},"4.0.0":{"name":"react-drill","version":"4.0.0","description":"React DOM test utils.","main":"lib/index.js","scripts":{"lint":"eslint 'lib/**/*.js' 'addons/**/*.js'","test":"./node_modules/karma/bin/karma start --single-run --browsers Firefox","prepublish":"npm run lint && npm run test"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"7.1.3","babel-plugin-istanbul":"4.1.5","babel-preset-react":"6.24.1","blessed":"x","chai":"^3.3.0","chai-assert-change":"1.0.0","cheerio":"1.0.0-rc.2","create-react-class":"15.6.3","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","istanbul":"0.4.5","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-coverage":"1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"2.0.11","megadoc-cli":"6.5.0","megadoc-compiler":"6.5.0","megadoc-preset-js":"6.5.0","megadoc-theme-minimalist":"6.0.0","mocha":"5.0.1","object-assign":"4.1.0","pikaday":"1.7.0","prop-types":"15.6.1","react":"16.14.0","react-blessed":"0.x","react-dom":"16.7.0","sinon":"4.4.2","webpack":"3.11.0"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 <=16.7.0","react-dom":">=0.14.1 <=16.7.0"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1"},"gitHead":"f5a1b0456637d9af95cf951c648923c8f776e4b9","_id":"react-drill@4.0.0","_nodeVersion":"16.14.2","_npmVersion":"8.6.0","dist":{"integrity":"sha512-SrWdWfFJPm9+J/0Oa3fXDO/9QYCq1cCBC5NNF771ZuZO3iWZ7BUzlDTSO2YwV9hrfhxdqvggrfEVWgA0u7a6hw==","shasum":"c991968de3329fa6c3b0a276e4ab3f01c20aa147","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-4.0.0.tgz","fileCount":18,"unpackedSize":73733,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEQO1U5jdE7Hj1KMZuexnv2BV/aNo01eO9HlAMyfagnAAiBMP4Zhgv8OJZknRDr+sBZ+UQa/R5EB1uOLbfZuZzfgWQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVRt4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrMbQ/+IxRX4QYl/U20OQdXZ7W7x42QJ1m2AXhcs3sliGbgW444Ux+5\r\n0+OcN412otvSTZ5eBnjmeSzNeVhUQmZEDkfRqBybk+ery46vGPvuudRTZH6Y\r\nDOT7yps3oPTj5VSLy+z3S3QmCDjz986SzYYza9aCIpSpcFjCzF1SuIG28E7K\r\nHpPFSqjMwtJMO9L1FHJw1DDKVLBC8DOIYZCAa3Mkm7lA6Isvo0Imn9F2nGb3\r\nwcgZ6VkOULfT2v/sTZxlFr/dGpyfxa9k0NNOvPd62Og599qXJ0/IDKHOFiR+\r\n0pSrNd+daqp+N7mNXWmSaYnwjS/fSk6aNZTBB+hNcPHWxOIGacLhPIkwisT9\r\nKgVG53lkdTIXcK8LFnUfMoUgBearKV8rwK7shhFZ7DaGmP/pIzeWKxycO+eI\r\nPiZvGOsivNBa00e5+O4UZ3FOKnbfcWZMVPYGoTzPlWCzc+GhQVpyl5NP/QEF\r\nYvognLf4izu74nTKXwQ0ptxm0ak0v515opq65YnSmINzcir28ElgWFVp5C+2\r\nFSe4+7q1yKrh1UWelKgZLLuq4l8XUG4VvWR0GACZx1osTlDPjKJo1IPrxs27\r\n4W5J4fmMNw0H3cua+/CatTzGiohlXKOe63nMPfkUiUaXCeVOLKzw8CInRAry\r\nPHx1mP4urDteGvPBoN69DftLwzNUt/vH+Y4=\r\n=AT07\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"directories":{},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-drill_4.0.0_1649744760700_0.14007700130681222"},"_hasShrinkwrap":false},"4.0.1":{"name":"react-drill","version":"4.0.1","description":"React DOM test utils.","main":"lib/index.js","scripts":{"lint":"eslint 'lib/**/*.js' 'addons/**/*.js'","test":"./node_modules/karma/bin/karma start --single-run --browsers Firefox","prepublish":"npm run lint && npm run test"},"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"keywords":["react","test","utils","dom"],"author":{"name":"Ahmad Amireh"},"license":"MIT","bugs":{"url":"https://github.com/amireh/react-drill/issues"},"homepage":"https://github.com/amireh/react-drill#readme","devDependencies":{"babel-loader":"7.1.3","babel-plugin-istanbul":"4.1.5","babel-preset-react":"6.24.1","blessed":"x","chai":"^3.3.0","chai-assert-change":"1.0.0","cheerio":"1.0.0-rc.2","create-react-class":"15.6.3","eslint":"^1.6.0","eslint-plugin-react":"^3.5.1","istanbul":"0.4.5","karma":"^0.13.10","karma-chrome-launcher":"^0.2.0","karma-coverage":"1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"0.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"2.0.11","megadoc-cli":"6.5.0","megadoc-compiler":"6.5.0","megadoc-preset-js":"6.5.0","megadoc-theme-minimalist":"6.0.0","mocha":"5.0.1","object-assign":"4.1.0","pikaday":"1.7.0","prop-types":"15.6.1","react":"16.14.0","react-blessed":"0.x","react-dom":"16.7.0","sinon":"4.4.2","webpack":"3.11.0"},"optionalDependencies":{},"peerDependencies":{"react":">=0.14.1 <=16.14.0","react-dom":">=0.14.1 <=16.14.0"},"dependencies":{"assertion-error":"^1.0.1","invariant":"^2.2.2","jquery":"^3.1.1"},"gitHead":"f5a1b0456637d9af95cf951c648923c8f776e4b9","_id":"react-drill@4.0.1","_nodeVersion":"16.14.2","_npmVersion":"8.6.0","dist":{"integrity":"sha512-iv5pqMZQhzzHCBBdI2xtQJR4O4AkEcbJhz9jVc+rQEeH9CoeqSKLKh5t9vS7w5idU47eYuttiCuOzVKhiyXHOQ==","shasum":"8af0ca8e45046d337c2c91b056fb55afa7b93e02","tarball":"https://registry.npmjs.org/react-drill/-/react-drill-4.0.1.tgz","fileCount":18,"unpackedSize":73735,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKQv2HzQAB8pL/fViqxxCSa99pBbdqhIgkjbiIpAT/dQIhAP+wLZ0O4T5Nx4LN1lzLvWFvQR/8D1XQsqdxZfROjVqv"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVRukACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp/ZA/9F+9WMPQ5Wq2Z9F3D//vMZBO2w/e4fXH7AifLi++mRCwVGvhd\r\nU6+OejaNOSWH64fqK64bAUksqGoJy8S8vW+oNnZg0QRpqS9UGS+WV/F4ZtLc\r\nHNXMg/opQ2T5mAeE3HXjN1rRGZyOtkQg7tcQifdNzp+9ur3Oh9yy7fTgJisD\r\nCa1g3DD9al5DtyAr3hJOU/zsYZiHI5fMFuamfak96Dd99Rp5zfA5VCQzJBSw\r\n1x/rcaxwdfw/8UXVGSsk3CipuVqDFHDfrrhn6wlYrPt/Rpeay3YvyGVXWyx1\r\nSpdLoYImsll7aDCtSZeeoO/AE2IIFFGnJTBKfASyi9vuDPMlHULf+361lu9l\r\nKqv8nXcqzFqa6QkX7XgEcGftvkb7gkVFwYhe0Skd9CYIMbZFoCS/Hrm5M7LZ\r\n5RQZsp3u6Dx66m/D3FbkzAvWtsw5BKfLsZqAkI605Ye83NJdaXekBdk8ANHG\r\nK3+3T3M8Wod+ZZ8f7pnq5yNSrLFc3qA6jNlln54qnVbCos/Y2QJ6M5R+Wq1f\r\nWklzWjcRIup/s8DetogvRXnI7B6bWExwV+eMBq92MvALvNplpC0muBjQbTFu\r\nuOXRnWJV4u0xTWWlE4WTEegGozOb5gKtifyT0maxn54U2bIWw9fuCMRn0bGe\r\nvenjl7jTd8DaD0Ad9A8ej0uZl1KUpGWOxX0=\r\n=0vUG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"amireh","email":"ahmad@amireh.net"},"directories":{},"maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-drill_4.0.1_1649744804159_0.05803311651638032"},"_hasShrinkwrap":false}},"readme":"# React Drill\n\nReact Drill is a React testing library that facilitates interacting with a DOM\ntree through an expressive API similar to [Capybara's](https://github.com/teamc\napybara/capybara/blob/2.17_stable/README.md#the-dsl). The library provides a\nnumber of abstractions for locating particular UI elements using either React\ncomponent classes or DOM selectors and for interacting with them.\n\nThe name \"drill\" comes from the fact that the API allows you to \"drill down\" through a React virtual DOM tree to interact with elements in it.\n\n## Motivation\n\n- The means to easily express the _intent_ of an interaction instead of\n  fiddling around with implementation details like how to trigger the `select`\n  event on a combo box, or how to simulate typing into a text widget.\n\n  Drill does this by providing a set of uniform APIs that can abstract this\n  away:\n\n      drill(component)\n        .find(TextField)\n          .typeIn('hello world')\n\n- The possibility of not relying on CSS classes or DOM selectors to find\n  elements to interact with. Instead, one can use the source React component\n  class as a selector:\n\n      drill(component)\n        .find(Button, m.hasText('Save'))\n          .click()\n\n## Usage\n\nTo install the package you can get it from npm:\n\n```shell\nnpm install --save-dev react-drill\n```\n\nIt is recommended to go quickly over the [[concepts | README.md#concepts]]\nbefore jumping into the API.\n\n## Concepts\n\nDrill's API is driven by four concepts: the scope object, selectors, matchers,\nand actions. This section will walk you through them.\n\n### Scope\n\nA [[scope | Scope]] is an object that represents the current React component\nand a set of DOM nodes that you're able to interact with. When you [[drill]]\ninto a tree, you get a scope back.\n\nThe scope APIs are chainable in that most of them return another scope back for\nyou, unless they're [[actions | README.md#actions]] then they'd return the same\nscope back.\n\n    drill(component)    // => Scope.<component, [findDOMNode(component)]>\n      .find(Menu)       // => Scope.<Menu, [findDOMNode(Menu)]>\n        .find('button') // => Scope.<Menu, [HTMLElement.<button>]>\n          .click()      // => Scope.<Menu, [HTMLElement.<button>]>\n          .blur()       // => Scope.<Menu, [HTMLElement.<button>]>\n\n**Next**: we can create scopes but how do we refine them to represent other\ncomponents and DOM nodes down the tree?\n\n### Selectors\n\nA selector is a function that locates React components _or_ DOM nodes inside\nthe current scope matching criteria you specify. The most common selectors are\n[[Scope#find]] and [[Scope#findAll]].\n\n    drill(component)\n      .find(Menu)        // find is a selector\n        .findAll(Button) // findAll is also a selector\n\n**Next:** we're now able to create scopes and select elements, but not\nparticular ones. Can we refine our selection further?\n\n### Matchers\n\nA [[matcher | Matcher]] is a predicate function that allows you to refine your\nselection to locate a most particular element in your scope. All [[selectors |\n./README.md#selectors]] accept a matcher.\n\n    drill(component)\n      .find(Button, m.hasText('Save')) // hasText is a matcher\n\nA list of [[common matchers | Matchers]] is available for your convenience and\nyou can [[build your own | examples/custom-matchers.md]] too.\n\n**Next:** with the ability to locate particular elements using selectors and\nmatchers, we now need a way to interact with them.\n\n### Actions\n\nAn action is a function that takes a scope and interacts with its DOM node(s)\nor its component, such as by clicking, blurring, or typing in.\n\nThe [[pre-made actions | Actions]] are available directly on the stock\n[[Scope]] object.\n\n    drill(component)\n      .click() // click is an action\n\nJust like with matchers, you can [[define your own actions | examples/custom-\nactions.md]] too.\n\n## Where to go from here\n\nSee [[drill]] for creating a scope and then the [[Scope]] itself for more\npossibilities. Or if you'd prefer to see examples first, browse from the\nsidebar to the left.\n\n## FAQ\n\n### Drill isn't working with stateless components!\n\nIt cannot since they have no instance to represent them and the [[scope]] needs\none otherwise it cannot tell what's a component and what's a (virtual) DOM\nnode.\n\nYou can not use this library if you're using stateless components exclusively.\n\n### Can't find the \"react test utils\" package\n\nIf you're using a version of React lower than 15.5.4 then you need to inject\ndrill with the ReactTestUtils object which can be found from the following\nfiles in different versions:\n\nVersion  | File\n-------- | ----\n> 15.5.4 | `react-dom/test-utils`\n> 15.4.1 | `react-addons-test-utils` (NPM package)\n< 15.4.1 | `react/lib/ReactTestUtils.js`\n\nThe following script shows how to provide drill with your own version of the\ntest utils package. **Make sure you call this before requiring the drill\nitself!**\n\n```javascript\nrequire('react-drill/lib/dependencies/ReactTestUtils')(\n  require('react-addons-test-utils')\n)\n\n// now you can use react-drill\nconst { drill } = require('react-drill')\n```\n\n### Can it be used without React or a DOM?\n\nMaybe. See [[./examples/using-without-react.md]] or\n[[./addons/react-blessed/README.md]].\n\n### My tests are failing when drilling into an  `unknown` component\n\nDrill will output the tag `<<unknown>>` if it can't find the displayName for a\ncomponent. If you are using ES6 classes for your React components, make sure\nyou're assigning a name rather than using anonymous classes. If you're using\n`createReactClass()` from the `create-react-class` package, Drill should\nautomatically infer the component name, but you can always add a `displayName:\n\"MyComponent\"` property to your createReactClass call.\n\nThe displayName is useful for debugging and tracing component hierarchies, so\nyour Drill experience will be easier if you keep the above in mind.\n\n## License\n\nMIT\n","maintainers":[{"name":"amireh","email":"ahmad@amireh.net"}],"time":{"modified":"2022-06-25T20:34:08.589Z","created":"2015-10-06T21:39:17.994Z","1.0.0":"2015-10-06T21:39:17.994Z","1.0.1":"2015-10-07T13:56:18.445Z","1.0.2":"2015-10-07T15:17:07.925Z","1.0.3":"2015-10-08T11:48:32.308Z","1.0.4":"2015-10-28T14:50:04.846Z","1.0.5":"2015-10-28T14:59:33.367Z","2.0.0":"2015-11-13T19:07:50.043Z","2.1.0":"2015-12-20T08:20:59.451Z","2.1.1":"2015-12-28T16:12:52.571Z","2.1.2":"2016-05-26T09:20:56.207Z","2.1.3":"2016-05-26T09:31:29.843Z","2.1.4":"2016-09-28T17:02:06.369Z","2.2.0":"2016-12-06T21:43:28.503Z","2.2.1":"2017-05-05T17:30:55.063Z","2.3.0":"2017-06-21T17:43:29.484Z","2.4.0":"2017-08-30T14:59:27.525Z","2.5.0":"2018-02-25T22:54:31.868Z","3.0.0-rc.1":"2018-02-27T16:53:48.207Z","3.0.0-rc.2":"2018-02-27T16:57:19.146Z","3.0.0-rc.3":"2018-02-27T18:16:14.952Z","3.0.0-rc.4":"2018-02-27T22:55:53.045Z","3.0.0-rc.5":"2018-02-27T23:02:20.943Z","3.0.0-rc.6":"2018-02-28T08:24:14.723Z","3.0.0-rc.7":"2018-06-26T16:03:15.606Z","3.0.0-rc.8":"2018-06-26T18:52:10.398Z","3.0.0":"2018-06-26T19:20:19.120Z","3.0.1":"2018-11-20T00:03:11.170Z","3.1.0":"2019-01-11T20:50:24.758Z","4.0.0-rc.1":"2019-11-06T21:09:58.262Z","4.0.0":"2022-04-12T06:26:00.913Z","4.0.1":"2022-04-12T06:26:44.318Z"},"homepage":"https://github.com/amireh/react-drill#readme","keywords":["react","test","utils","dom"],"repository":{"type":"git","url":"git+ssh://git@github.com/amireh/react-drill.git"},"author":{"name":"Ahmad Amireh"},"bugs":{"url":"https://github.com/amireh/react-drill/issues"},"license":"MIT","readmeFilename":"README.md"}