{"_id":"bas","_rev":"79-4710e866e90847a0509349940243a8c1","name":"bas","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for client-side integration testing and quality assurance.","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.1":{"name":"bas","version":"0.0.1","description":"Behaviour Assertion Sheets: Stylesheet-like syntax for required behaviour.","main":"lib/index.js","scripts":{"test":"mocha -R spec"},"repository":"","keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0"},"dependencies":{"commander":"~1.1.1","simplecrawler":"~0.1.6","csstree":"0.0.1","request":"~2.16.6","yoyaku":"0.0.12","cheerio":"~0.10.8","colors":"~0.6.0-1"},"_id":"bas@0.0.1","dist":{"shasum":"8e959bb4b24716b99ec6dadbd4f6b99b93ceaf38","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.1.tgz","integrity":"sha512-uSCa27k+5VAln7xY4EXPnK6XqpkxzAYnATE1K5AgbcK5gXNT9IApiwU6Mmx6yzYf8+8uuEivjxuUjv3BxYeoJg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE3KonNxdV49pZWsU4f19/RkAMPXuSx59JYCNQHNhV2rAiBdwdAL1fmYYniVY2jEEIBVo6H0BsA2KNwchTSZjtT0rw=="}]},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.2":{"name":"bas","version":"0.0.2","description":"Behaviour Assertion Sheets: Stylesheet-like syntax for required behaviour.","main":"lib/index.js","scripts":{"test":"mocha -R spec"},"bin":{"bas":"lib/cli.js"},"repository":"","keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0"},"dependencies":{"commander":"~1.1.1","simplecrawler":"~0.1.6","csstree":"0.0.1","request":"~2.16.6","yoyaku":"0.0.12","cheerio":"~0.10.8","colors":"~0.6.0-1"},"_id":"bas@0.0.2","dist":{"shasum":"160749a685d191d692dce0372619e43c41235c3d","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.2.tgz","integrity":"sha512-8clY4cTHb193E+8xF4M7eqKSKI2CFuxc8LXjR6XPD9rgFg8iO6edvT+y0zb/T/CkEhtlzLixcE1SCaHRE42SRw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0Q62TwupJ9dVBLBWeDuJEmEZnxzPr31iJUEntiU6hagIgJrFUlXuA5ADGUwJkU55IW2G/y5sfqj0huFc/Utl9ATA="}]},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.3":{"name":"bas","version":"0.0.3","description":"Behaviour Assertion Sheets: Stylesheet-like syntax for required behaviour.","main":"lib/index.js","scripts":{"test":"mocha -R spec"},"bin":{"bas":"lib/cli.js"},"repository":"","keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0"},"dependencies":{"commander":"~1.1.1","simplecrawler":"~0.1.6","csstree":"0.0.1","request":"~2.16.6","yoyaku":"0.0.12","cheerio":"~0.10.8","colors":"~0.6.0-1","async":"~0.2.7"},"_id":"bas@0.0.3","dist":{"shasum":"dfc35bc173428eeb765195d9d537c005e21d8d04","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.3.tgz","integrity":"sha512-rhVNgcEGyjt3n4K+YBWHN6BVL1jFI07ny8MSA5a1yCP2lbIM5/MC7MtRWEsg8mWreGYJDCeU5eWhwguym7O3VQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEYjA+XklFNrT1ab3cIWwra7xn8o6Xn6FK13UCld7WeCAiEAlqqP4206gRMrjZVER50QtpmrGPw4wipXG29UGdkvKdM="}]},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.4":{"name":"bas","version":"0.0.4","description":"Behaviour Assertion Sheets: Stylesheet-like syntax for required behaviour.","main":"lib/index.js","scripts":{"test":"mocha -R spec"},"bin":{"bas":"lib/cli.js"},"repository":"","keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0"},"dependencies":{"commander":"~1.1.1","simplecrawler":"~0.1.6","csstree":"0.0.1","request":"~2.16.6","yoyaku":"0.0.12","cheerio":"~0.10.8","colors":"~0.6.0-1","async":"~0.2.7"},"_id":"bas@0.0.4","dist":{"shasum":"5353ab332c8f077149ca8e6d570f2da8d1f651c0","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.4.tgz","integrity":"sha512-IsL7C1kma1IJhr7E+IFQhVy4EEefp374CicXQ/ILHBbP94zmNykynhyVUftW/LoKwD/GP0aVLEOyAa8F776gFA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqB/8oyUZdO6FvIT21sGFwR81UO9HBLqGRpTO2362LiQIhAIsA9HypdVFy5hxSbkfcZXk5tBInz3O3s1LI3uCDxP+C"}]},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.6":{"name":"bas","version":"0.0.6","description":"Behaviour Assertion Sheets: Stylesheet-like syntax for required behaviour.","main":"lib/index.js","scripts":{"test":"mocha -R spec"},"bin":{"bas":"lib/cli.js"},"repository":"","keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0"},"dependencies":{"commander":"~1.1.1","simplecrawler":"~0.2.0","csstree":"0.0.1","request":"~2.16.6","yoyaku":"0.0.12","cheerio":"~0.10.8","colors":"~0.6.0-1","async":"~0.2.7"},"_id":"bas@0.0.6","dist":{"shasum":"971ef87542937d31ad75df67e5e701c1b42d4add","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.6.tgz","integrity":"sha512-OcVUbp0hB+Oshr5sxzx0nUsLW78+kI6v4CEWjoWMtshn6dgHvTnzIOWHWJZzFSWEO2boYqmbkgHacmTSIzs5PQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdN6XSSTTbY1INgLq18Jz9nEVoS1Wyb5TYoxLmhzDMnwIhALgKUNC4nLMYM0K9fbRhDqiTwZnkWVSyNvJ1kyEt17Lg"}]},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.7":{"name":"bas","version":"0.0.7","description":"Behaviour Assertion Sheets: Stylesheet-like syntax for required behaviour.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000"},"bin":{"bas":"lib/cli.js"},"repository":"","keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0"},"dependencies":{"commander":"~1.1.1","simplecrawler":"~0.2.0","csstree":"0.0.1","request":"~2.16.6","yoyaku":"0.0.12","cheerio":"~0.10.8","colors":"~0.6.0-1","async":"~0.2.7","text-statistics":"~0.1.0"},"_id":"bas@0.0.7","dist":{"shasum":"b2de38a8cb9dc5352293b91beb74c00161185dbb","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.7.tgz","integrity":"sha512-ygzBiEI9ck8Q4VTRiu9ZDmi+RnOqITekqUQ1LON7W9nwEDYOREulY5f/MQc930KXbPjM+mKDKTQqR+Z9p8Jn4Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGiEfbmSWYKMJ/jmg+nj7K4EkPrPeMciSHWp8DEyk6VfAiBsgg3a2kWztigKHg+2J9dOFYQUlILpjv4MOrNaUjDwOA=="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.8":{"name":"bas","version":"0.0.8","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for required behaviour.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000"},"bin":{"bas":"lib/cli.js"},"repository":"","keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0"},"dependencies":{"commander":"~1.1.1","simplecrawler":"~0.2.0","csstree":"0.0.1","request":"~2.16.6","yoyaku":"0.0.12","cheerio":"~0.10.8","colors":"~0.6.0-1","async":"~0.2.7","text-statistics":"~0.1.0"},"_id":"bas@0.0.8","dist":{"shasum":"50bb59a747608f7d4456090534210e5e15475645","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.8.tgz","integrity":"sha512-v6Tu9m3mMTotFcHkANlgPQR14pruMHs+6t9td/H7qO1+XGdO0MRTVu4k0o1eKx+ulmV3fyP+jQY/syk/wFALww==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICAbqlYb6nzDyF9g+j25hZXtjs0v8jlbcPcvGLWBUvD8AiAl5Rp0Bm66qbwv1Phxo7a0xtLCuB97PBIiZEjo4/Iflw=="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.9":{"name":"bas","version":"0.0.9","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for required behaviour.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000"},"bin":{"bas":"lib/cli.js"},"repository":"","keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0"},"dependencies":{"commander":"~1.1.1","simplecrawler":"~0.2.2","csstree":"0.0.1","request":"~2.21.0","yoyaku":"0.0.12","cheerio":"~0.11.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"_id":"bas@0.0.9","dist":{"shasum":"d6293d217ddef84b6f66c30d37ce627f3670a3a1","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.9.tgz","integrity":"sha512-ahx9ECS0Ra95HtSfb4ck9tUejh0vL8WVPcZXFeiq8MojAXl1FLw3xQL8aiBf2fHTSys4FC5hPB5fsrsk1P7CHQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAfiHz5FY0gmrxwbexDmPdm+DoneleTBqH6DkFOwTT+jAiACpHLeZMcKe4eBD9Cv4PM1bNA0qvCxYcNhUEyAhg3Bng=="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.10":{"name":"bas","version":"0.0.10","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for required behaviour.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000"},"bin":{"bas":"lib/cli.js"},"repository":"","keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0"},"dependencies":{"commander":"~1.1.1","simplecrawler":"~0.2.6","csstree":"0.0.1","request":"~2.21.0","yoyaku":"0.0.12","cheerio":"~0.11.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"_id":"bas@0.0.10","dist":{"shasum":"dabf7bb53ec23d80502a48581a3d5b8df829cdc0","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.10.tgz","integrity":"sha512-spYG7wegUWTOeZKezs8/60OQI3JClEb+rlLAX5KcOwCCNvLxsIH5h2iOuhImCW2U5r6aKeb2XoSEJ+oVQo23YA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFiktX9txUgAaxozJ+M1DRR4/LPU0yM1VhZMVt5cV1dQIgCBgmP1ZIiw1vi/lQxUBqb0CdJsDLExlqinxGr2/QWkg="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.11":{"name":"bas","version":"0.0.11","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for required behaviour.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000"},"bin":{"bas":"lib/cli.js"},"repository":"","keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0","jshint":"~2.0.1"},"dependencies":{"commander":"~1.1.1","simplecrawler":"~0.2.6","csstree":"0.0.1","request":"~2.21.0","yoyaku":"0.0.12","cheerio":"~0.11.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"_id":"bas@0.0.11","dist":{"shasum":"265e2bda8c5b0d8752b1dd3a10715a8c11898258","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.11.tgz","integrity":"sha512-p8nzq4+rS2BMuJ62hKIGCGN6d+6LH7UwVKgSuVN/cJYbf0XkDysGX1sgVjZb2gplACwcUAFD49cnzGSPdxleYA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfz/p9S6heT1CV3YZ379Cb83DhlRKfXOg/9nQpIqxAVQIgLdQhd6KAG5aGClI2j48K9bBhrIf5yse9dia1r3oKNPs="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.12":{"name":"bas","version":"0.0.12","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for required behaviour.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000"},"bin":{"bas":"lib/cli.js"},"repository":"","keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0","jshint":"~2.0.1"},"dependencies":{"commander":"~1.1.1","simplecrawler":"~0.2.6","csstree":"0.0.1","request":"~2.21.0","yoyaku":"0.0.12","cheerio":"~0.11.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"_id":"bas@0.0.12","dist":{"shasum":"0f684938dc2e508b0a449bfb579eddd9c9c7a0a6","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.12.tgz","integrity":"sha512-GVtYNIEDPgSmgNIoP4bD8Zo/mk1rfK/ZVZN4AVfmCJz9cyKGOjWDOJStrYjazgCqFWA/MGreDRrNygSA9a8zjw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF0Av/+7ARYikgY4JOoMnDKTny0Os7sY8J91iVQGHydGAiEAoaWBp/M4oyFk0wz5s7NYO5eUsGRCn6Skur9LnXyasZ0="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.13":{"name":"bas","version":"0.0.13","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for required behaviour.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000"},"bin":{"bas":"lib/cli.js"},"repository":"","keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0","jshint":"~2.0.1"},"dependencies":{"commander":"~1.1.1","simplecrawler":"~0.2.6","csstree":"0.0.1","request":"~2.21.0","yoyaku":"0.0.12","cheerio":"~0.11.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"_id":"bas@0.0.13","dist":{"shasum":"f38805bdddd06092785c35febeb6b02fc613ed9a","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.13.tgz","integrity":"sha512-EpqucoCmqHCtO/4SEmEWXg0jgbyFwIbVGKCbAWPqgfU2Xmng/sF2ur/v3kuHfrSWBHzerpUvArjGJzhXH1tS2A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5XXh65FpkDYqgMQmii+kABKPR7kQIDzEws0sKA1AhnQIgbUvfd+zWAAc3QDZon6WXIFhwXiemuY1HW/mcbbXN6OU="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.14":{"name":"bas","version":"0.0.14","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for required behaviour.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000"},"bin":{"bas":"lib/cli.js"},"repository":"","keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0","jshint":"~2.0.1"},"dependencies":{"commander":"~1.1.1","simplecrawler":"~0.2.6","csstree":"0.0.1","request":"~2.21.0","yoyaku":"0.0.12","cheerio":"~0.11.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"_id":"bas@0.0.14","dist":{"shasum":"122a1161141956b463726f22579ee7066ad7c589","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.14.tgz","integrity":"sha512-YKhBiakE2k74XD90fL0MavRefnGJ2D5+o0jGd0mbO2hWlPOBnj/o7c9xOTCCXWoO3CIXrgqobLgP7sdhL69Xtg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHfZOvIyRHUvnXGs32I53zDphc53dGfXAdKM4iVmTNTSAiBUvBWegYCiEZW8z5+CV40DJNIXi5rkaVRcZNc3VkprIA=="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.15":{"name":"bas","version":"0.0.15","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for required behaviour.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0","jshint":"~2.0.1"},"dependencies":{"commander":"~1.1.1","simplecrawler":"~0.2.6","csstree":"0.0.1","request":"~2.21.0","yoyaku":"0.0.12","cheerio":"~0.11.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"_id":"bas@0.0.15","dist":{"shasum":"2b48a2a58cefd72f0a2b6ba08f17a68af031c602","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.15.tgz","integrity":"sha512-MqsP8OF+43VblsW6xChcqINFPRlnVfK3S8kAJxGRNRyyYDpaIZqo4dox+G2NLuZbP5WmBvqPyjzWBox1PIozrg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDE7bKM86y5EGv44HKvtNgdjKSGk0lk0bUmrKdshcXjnQIhAM9kESqw3cGoiq9NuBrubIxJm0xKsQa47j9usZc0XaIN"}]},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.16":{"name":"bas","version":"0.0.16","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for required behaviour.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0","jshint":"~2.0.1"},"dependencies":{"commander":"~1.1.1","simplecrawler":"~0.2.6","csstree":"git://github.com/cgiffard/CSSTree.git#master","request":"~2.21.0","yoyaku":"0.0.12","cheerio":"~0.11.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"_id":"bas@0.0.16","dist":{"shasum":"d19504fe085acd0ce089389e72973dc3eacd54c6","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.16.tgz","integrity":"sha512-TGBiX910DVRgBw1ujczrYsLIEeDko/sr3W/z49uvNYGdG+JTGtB9RDrtq3UgR6in1awZf7ZYwW/jSojG3NHuKQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAvEdFdfw1KM/XPuAKCYvj2OwuYEMd7glAs2pvUtfDIjAiEA3X5PQJF8m/P81SwD/kulHcej6uqy5auqKSoGareOaq0="}]},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.17":{"name":"bas","version":"0.0.17","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for required behaviour.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0","jshint":"~2.0.1"},"dependencies":{"commander":"~1.2.0","simplecrawler":"~0.2.6","csstree":"git://github.com/cgiffard/CSSTree.git#master","request":"~2.21.0","yoyaku":"0.0.12","cheerio":"~0.12.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"_id":"bas@0.0.17","dist":{"shasum":"5a88c28afefeeb26d43a92d6de23a0fec21d5d3a","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.17.tgz","integrity":"sha512-Bx6EG1sxCUz6C2UioiwpCnvYGW0bgVRiihEJOmxkreYzqpFv31VK9mJwOh+wYfM0Bj0tMWDVYVWXCKp0aWb9zQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGWnabNwiQP2+zzF05EIDGw1Ywafqr6Uyfdo+7H3kR1MAiAPdavX3NFqBhYOdo4lVFe070c41K1/3vToNdFNDrAlKg=="}]},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.18":{"name":"bas","version":"0.0.18","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for required behaviour.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000","coverage":"test/coverage.sh"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0","jshint":"~2.0.1","mocha-istanbul":"~0.2.0","istanbul":"~0.1.37"},"dependencies":{"commander":"~1.2.0","simplecrawler":"~0.2.6","csstree":"git+https://github.com/cgiffard/CSSTree.git#inline-comments","request":"~2.21.0","yoyaku":"0.0.12","cheerio":"~0.12.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"_id":"bas@0.0.18","dist":{"shasum":"de9554e5fbe87a8e00321fe48103c04b0e553c24","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.18.tgz","integrity":"sha512-FwQPPgaSrK4LgELpQdhmgdT8DrH9lEcofph+K0gsScVJKxGWXk+lzA7FyYt0in8BHpNtOjoC4D0DgNqiwwdjDw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGsSASWupT2p/Y5cPSWwo6NslbHRHtG5Z26Wb5SE8iY+AiEAwfW3pbEuS1izoqGhabh+cvTQSKODSNNuH52GY25ltLE="}]},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.19":{"name":"bas","version":"0.0.19","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for required behaviour.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000","coverage":"test/coverage.sh"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0","jshint":"~2.0.1","mocha-istanbul":"~0.2.0","istanbul":"~0.1.37"},"dependencies":{"commander":"~1.2.0","simplecrawler":"~0.2.6","csstree":"git+https://github.com/cgiffard/CSSTree.git#inline-comments","request":"~2.21.0","yoyaku":"0.0.12","cheerio":"~0.12.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"_id":"bas@0.0.19","dist":{"shasum":"5f7993df0ddedaddcec00cb336491f0bfc6af70b","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.19.tgz","integrity":"sha512-pZZ0Fhw2rBtvpyzdWKD5065nonQXbU8if6TcYZrefdCl46AQGVk9CEJ+IorkI4PcTVaRhF5e1E9ilfCqXvRJ0w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHxbkPFCsINM3o72lR5uC6JwtcWZeZwQPUAsKwH7y/QsAiEA9QBc2bOfCeFaAiv20ZiEtIYBP/MxojzSw3rNi4CWD00="}]},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.20":{"name":"bas","version":"0.0.20","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for client-side integration testing and quality assurance.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000","coverage":"test/coverage.sh"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.5.0","mocha":"~1.9.0","jshint":"~2.0.1","mocha-istanbul":"~0.2.0","istanbul":"~0.1.37"},"dependencies":{"commander":"~1.2.0","simplecrawler":"~0.2.6","csstree":"git+https://github.com/cgiffard/CSSTree.git#inline-comments","request":"~2.21.0","yoyaku":"0.0.12","cheerio":"~0.12.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"_id":"bas@0.0.20","dist":{"shasum":"2e63e39286093f40f71022285f5b0b6c677a07e7","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.20.tgz","integrity":"sha512-M5JAT7qLsr+EAbAlpvsDado3ScU45SnZ0i3W8p32dnVRXzRixDynh9mo4q0oOtzck8c8pJbsJLzYi0FhNNaVQw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB8vjxV4pJVD9rZ5euV61TyXnVFaqYBgiWA6zkf+VsF4AiEA5Iq2upfY1O09NQYzQ+vzJbfvX5qNsmlRFJZ9u0k1RIE="}]},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"directories":{}},"0.0.21":{"name":"bas","version":"0.0.21","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for client-side integration testing and quality assurance.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000","coverage":"test/coverage.sh"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.8.0","mocha":"~1.13.0","jshint":"~2.1.11","mocha-istanbul":"~0.2.0","istanbul":"~0.1.37"},"dependencies":{"commander":"~2.0.0","simplecrawler":"~0.3.4","csstree":"git+https://github.com/cgiffard/CSSTree.git#inline-comments","request":"~2.27.0","yoyaku":"0.0.12","cheerio":"~0.12.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"_id":"bas@0.0.21","dist":{"shasum":"9fd1fbee0ba95f9a10dec284e183e11b083ec9f7","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.21.tgz","integrity":"sha512-gLk77kqo+a1OzZIDRH9jXHIyCEdHGG0RKrP9tg/Gb7RWZaldmco5je93CtPZTEB8Gv2ocJ7rzoN36YLAoclkLQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDGAeGC1L0SgsjTaHMb7td5M2QIj3DO9PF1cwd4WZGXiAiEA1vLTGjg2t7m4rfnxKzK07BrKz0V5QOM6N77bM0yK6GQ="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.0.22":{"name":"bas","version":"0.0.22","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for client-side integration testing and quality assurance.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000","coverage":"test/coverage.sh"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion","sheets","bas"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.8.0","mocha":"~1.13.0","jshint":"~2.1.11","mocha-istanbul":"~0.2.0","istanbul":"~0.1.37"},"dependencies":{"commander":"~2.0.0","simplecrawler":"~0.3.4","csstree":"git+https://github.com/cgiffard/CSSTree.git#inline-comments","request":"~2.27.0","yoyaku":"0.0.12","cheerio":"~0.12.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"_id":"bas@0.0.22","dist":{"shasum":"21054db1b28db836ad240509a1f5b08892ed1af1","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.22.tgz","integrity":"sha512-U3yiSJK48pPutt11cfqfALa992snAn2Ng79FolFWgQTi7cdMRj59PCOrpoZhsBaE4oUfFJV1sKutxiHO87C77Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyU1eY/YX7+lmTywe0qH7f5N/GEzxd2bpjNHjjsvw8BgIhAPIEwEX3JBI60HQKNzaPZDPkYGip9xjz7Z6JOv1L/0VI"}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.0.23":{"name":"bas","version":"0.0.23","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for client-side integration testing and quality assurance.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000","coverage":"test/coverage.sh"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion","sheets","bas"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.8.0","mocha":"~1.13.0","jshint":"~2.1.11","mocha-istanbul":"~0.2.0","istanbul":"~0.1.37"},"dependencies":{"commander":"~2.0.0","simplecrawler":"~0.3.4","csstree":"git+https://github.com/cgiffard/CSSTree.git#inline-comments","request":"~2.27.0","yoyaku":"0.0.12","cheerio":"~0.12.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"_id":"bas@0.0.23","dist":{"shasum":"e3ab015763044a9b8b14493c4ac38a96c15752f0","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.23.tgz","integrity":"sha512-ngDuZ1uCW4HHt6nsY6FkwW56gkzZ/aeN2BdrpkstD4a1jkFO6Fh0pRrs0iWllbgk+q/UAj4FhCnRzXstryE4Dw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVOA/j1TFjW63lQh0ssLCu194gHgbDxIcXsQy+qjBL8AIhAMNUMkUCop1KX/NxfKC7lYkfwtLoQVTgRPOTgMoeb5qY"}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.0.24":{"name":"bas","version":"0.0.24","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for client-side integration testing and quality assurance.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000","coverage":"test/coverage.sh"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion","sheets","bas"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.8.0","mocha":"~1.13.0","jshint":"~2.1.11","mocha-istanbul":"~0.2.0","istanbul":"~0.1.37"},"dependencies":{"commander":"~2.0.0","simplecrawler":"~0.3.4","csstree":"git+https://github.com/cgiffard/CSSTree.git#inline-comments","request":"~2.27.0","yoyaku":"0.0.12","cheerio":"~0.12.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"_id":"bas@0.0.24","dist":{"shasum":"be063c8556ad44ca83b75007b37093dd024c22c3","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.24.tgz","integrity":"sha512-lCdVRRo5IzdysfDCkgWW5qNaZP/Uuh74dQA4JtGpeYSOFS+kuXc5XN33JGGSlLsvmWNml07rD+YuKy7kNuog2w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKdQjZtTuO+LlssbjimEeXY/t2e636mBLxiHgmTLM9ngIhAIiXCstNE6FpTpIK3SIH4isL9Hq30/58SvOr45zvFTkC"}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.0.25":{"name":"bas","version":"0.0.25","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for client-side integration testing and quality assurance.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000","coverage":"test/coverage.sh"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion","sheets","bas"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.8.0","mocha":"~1.13.0","jshint":"~2.1.11","mocha-istanbul":"~0.2.0","istanbul":"~0.1.37"},"dependencies":{"commander":"~2.0.0","simplecrawler":"~0.3.4","csstree":"git+https://github.com/cgiffard/CSSTree.git#inline-comments","request":"~2.27.0","yoyaku":"0.0.12","cheerio":"~0.12.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"_id":"bas@0.0.25","dist":{"shasum":"27bea00e7b0c21fa658f5f26181802471bf68ea6","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.25.tgz","integrity":"sha512-QQUlcjbeRfAGk0ttGr+ZjxzmBKTKD0GGY2gdGuVfHJNK9FmUe2hJt1sa2WCX2UD2uzOeeTLWxFYobrLRah7REw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxmYmHb3MCD/NjaxZw/o4QFzKo19NRIndJBn+acQCC+wIgHZmB14KmZWINWUbGyIb9UnWiRdF2E6UB1kH4jMFef7Q="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.0.26":{"name":"bas","version":"0.0.26","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for client-side integration testing and quality assurance.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000","coverage":"test/coverage.sh"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion","sheets","bas"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.8.0","mocha":"~1.13.0","jshint":"~2.1.11","mocha-istanbul":"~0.2.0","istanbul":"~0.1.37"},"dependencies":{"commander":"~2.0.0","simplecrawler":"~0.3.4","csstree":"git+https://github.com/cgiffard/CSSTree.git#inline-comments","request":"~2.27.0","yoyaku":"0.0.12","cheerio":"~0.12.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"_id":"bas@0.0.26","dist":{"shasum":"a5dd6b29f5a2b5c110b90748820c0e0a7827f00f","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.26.tgz","integrity":"sha512-7kMmXX33VhXMMwF4fNuicG0gicUvVJlWnsC6juITqb1SjWqzHdo5Be/PQVvqnQAtKFGNAY2ZRvQ7Vs1MrBBPRA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPeQGhplHI9d5NtOjZ6reGkPTW/+KiyoTtGsWHzN5wewIgY82JFUcrmTwH2uDjWZCEXV+NcKmMAUcW/ip0Yb0iP9c="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.0.27":{"name":"bas","version":"0.0.27","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for client-side integration testing and quality assurance.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000","coverage":"test/coverage.sh"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion","sheets","bas"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.8.0","mocha":"~1.13.0","jshint":"~2.1.11","mocha-istanbul":"~0.2.0","istanbul":"~0.1.37"},"dependencies":{"commander":"~2.0.0","simplecrawler":"~0.3.6","csstree":"git+https://github.com/cgiffard/CSSTree.git#inline-comments","request":"~2.27.0","yoyaku":"0.0.12","cheerio":"~0.12.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"_id":"bas@0.0.27","dist":{"shasum":"60d4476ca5116ce682843a00d193d34c82296970","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.27.tgz","integrity":"sha512-5BM+uttW5mxBKX6UV39TyGgE2DJ1HKYy60EXS53TMXTq486fTlfLd3b3zRFE3eEvnH1ZAlaftzTBsvdBRL9dSw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGugwAxwfQ7M4UkO+646xPfsR+JBFYNszHGTHf33bGVAIgXK9OxhswUHg/g0qc4PBVPf/2zPiuQBLJ4gMZOEzMrIg="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.0.28":{"name":"bas","version":"0.0.28","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for client-side integration testing and quality assurance.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000","coverage":"test/coverage.sh"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion","sheets","bas"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.8.0","mocha":"~1.13.0","jshint":"~2.1.11","mocha-istanbul":"~0.2.0","istanbul":"~0.1.37"},"dependencies":{"commander":"~2.0.0","simplecrawler":"~0.3.6","csstree":"git+https://github.com/cgiffard/CSSTree.git#inline-comments","request":"~2.27.0","yoyaku":"0.0.12","cheerio":"~0.12.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1"},"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"_id":"bas@0.0.28","dist":{"shasum":"9be9217ba9b2e92563b0c42e82124077b47ddddb","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.28.tgz","integrity":"sha512-yoEUF/ZvS1osIf1RAddgzmaD0jbrHDf6w68dS69SefcpWAgKUUzPSuOIEPjk2Yk84LzuZUGbAtrcHo2tVtg+KA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDIBVCEy+3PDLtlqJBmZSfpIJJtRxaaWQ8yQftPtpZ3KwIhAJtqbFGnsGCr/pG49skMPz7tBunSojcP6aXcmckvNQm6"}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.0.29":{"name":"bas","version":"0.0.29","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for client-side integration testing and quality assurance.","main":"lib/index.js","scripts":{"test":"node_modules/.bin/mocha -R spec -t 10000","coverage":"test/coverage.sh"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion","sheets","bas"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.8.0","mocha":"~1.13.0","jshint":"~2.1.11","mocha-istanbul":"~0.2.0","istanbul":"~0.1.37"},"dependencies":{"commander":"~2.0.0","simplecrawler":"~0.3.6","csstree":"git+https://github.com/cgiffard/CSSTree.git#inline-comments","request":"~2.27.0","yoyaku":"0.0.12","cheerio":"~0.12.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1","iconv":"~2.0.7"},"optionalDependencies":{"iconv":"~2.0.7"},"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"_id":"bas@0.0.29","dist":{"shasum":"5ce3c30a6e4112369deb01a33e9df26189fb25fe","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.29.tgz","integrity":"sha512-e/hGHQwbfYRwtq02f1z89DCRbY29dyQedC+s4KxiVGMj7TFEVRJiButOUmf9u5CJChD3aUHwt4xXs7HC6f6Wrw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDa+lKiiAu9itlBHguQYUmqW7kh822DA5lJi+ZCMmNqYAIgNeN59/yHRGCyLMUHhDrO8aq5E7oD/FYhNlNnetY3MPw="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.0.30":{"name":"bas","version":"0.0.30","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for client-side integration testing and quality assurance.","main":"lib/index.js","scripts":{"test":"node_modules/.bin/mocha -R spec -t 10000","coverage":"test/coverage.sh"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion","sheets","bas"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.8.0","mocha":"~1.16.2","jshint":"~2.4.0","mocha-istanbul":"~0.2.0","istanbul":"~0.2.3"},"dependencies":{"commander":"~2.1.0","simplecrawler":"~0.3.6","csstree":"git+https://github.com/cgiffard/CSSTree.git#inline-comments","request":"~2.30.0","yoyaku":"0.0.12","cheerio":"~0.13.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1","iconv":"~2.0.7"},"optionalDependencies":{"iconv":"~2.0.7"},"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"_id":"bas@0.0.30","dist":{"shasum":"0e10c126ef8fd1e60d8291c9b4de0a0967cc32b5","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.30.tgz","integrity":"sha512-Q9ofIZUAZf4dF7XygB4yUlMSc+L18mjOOYkSHMS87JYdyXHrXpUGgQuEpp0158t6/3d1WQQ1rys9UwCNSc1v4A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA7tNRnGK+U1er7vkUXt1kV9oCjN386tq8SyQ6/oeYtWAiBzcp1zHV0ft/OZd0ZyIKw/bw47lvShcZ7s/j7h9tcTRA=="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.0.31":{"name":"bas","version":"0.0.31","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for client-side integration testing and quality assurance.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000","coverage":"test/coverage.sh"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion","sheets","bas"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.8.0","mocha":"~1.16.2","jshint":"~2.4.0","mocha-istanbul":"~0.2.0","istanbul":"~0.2.3"},"dependencies":{"commander":"~2.1.0","simplecrawler":"~0.3.7","csstree":"git+https://github.com/cgiffard/CSSTree.git#inline-comments","request":"~2.30.0","yoyaku":"0.0.12","cheerio":"~0.13.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1","iconv":"~2.0.7"},"optionalDependencies":{"iconv":"~2.0.7"},"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"homepage":"https://github.com/cgiffard/Behaviour-Assertion-Sheets","_id":"bas@0.0.31","dist":{"shasum":"d0b2bd65b66a2fa317f432371668f9f6c7700680","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.31.tgz","integrity":"sha512-G0JXpDDvnfsExGEWdmju2vQaZKRrSkm5HfmwMaIcCti8Sd6Do2z2TqgpPT1gfv1zyt1xbWZHBYBWmTN6ems2jw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFcAmnFWj8zGJyP3brrooS1gPQW3xBD2i8L6ShCr2vgxAiBAYBx4ZrhIFXvP7PdIqenB3vKVkgWh7gAvqNJHAOAOcw=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.0.32":{"name":"bas","version":"0.0.32","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for client-side integration testing and quality assurance.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000","coverage":"test/coverage.sh"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion","sheets","bas"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD","devDependencies":{"chai":"~1.8.0","mocha":"~1.16.2","jshint":"~2.4.0","mocha-istanbul":"~0.2.0","istanbul":"~0.2.3"},"dependencies":{"commander":"~2.1.0","simplecrawler":"^0.3.8","csstree":"git+https://github.com/cgiffard/CSSTree.git#inline-comments","request":"~2.30.0","yoyaku":"0.0.12","cheerio":"~0.13.0","colors":"~0.6.0-1","async":"~0.2.8","text-statistics":"~0.1.1","iconv":"~2.0.7"},"optionalDependencies":{"iconv":"~2.0.7"},"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"homepage":"https://github.com/cgiffard/Behaviour-Assertion-Sheets","_id":"bas@0.0.32","dist":{"shasum":"d3e79cbbf8af2c1e721114d9e82353698fa3343a","tarball":"https://registry.npmjs.org/bas/-/bas-0.0.32.tgz","integrity":"sha512-QKnr5bX6RRHM6RYafrrVqjTKDghL2za+2gej2CmFy2of/5N5f3lFLwyzZbPx30BQJgJm//7RjZqe8zQd5HAXgQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSY31fQOjY+m58hHoHSxTVWiLgVnyB1VbCmR90rFbm6gIhAK+sZum4f+yTRlE/IRz3foM/wzcNFx0oVyop+CMSq6EG"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.1.0":{"name":"bas","version":"0.1.0","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for client-side integration testing and quality assurance.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000","coverage":"test/coverage.sh"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"git+https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion","sheets","bas"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD-2-Clause","devDependencies":{"chai":"^3.4.1","istanbul":"^0.4.1","jshint":"^2.9.1-rc1","mocha":"^2.3.4","mocha-istanbul":"~0.2.0"},"dependencies":{"async":"^1.5.0","cheerio":"^0.19.0","colors":"^1.1.2","commander":"^2.9.0","csstree":"git+https://github.com/cgiffard/CSSTree.git#inline-comments","iconv-lite":"^0.4.13","request":"^2.67.0","simplecrawler":"^0.5.4","text-statistics":"^0.1.1","yoyaku":"0.0.12"},"gitHead":"27c613c1c7da0b68baaade0d4499c4a40b90bf86","bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"homepage":"https://github.com/cgiffard/Behaviour-Assertion-Sheets#readme","_id":"bas@0.1.0","_shasum":"d9eedbe2be47a257549318e6b2c00e18e32e0fff","_from":".","_npmVersion":"3.3.9","_nodeVersion":"5.0.0","_npmUser":{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"dist":{"shasum":"d9eedbe2be47a257549318e6b2c00e18e32e0fff","tarball":"https://registry.npmjs.org/bas/-/bas-0.1.0.tgz","integrity":"sha512-pQlZ8BQ1vEPMFcuWQaUG6MoJxCQ5viNLV6EhGBbWSgi5H7rDrxUV+XYmyXL9C7wDYRDuvz3JktoUanXP43ajnA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDaBU5zHh7RbxzX3ZKnrnwyMaUCjiRskuM7cuFV1Lg20QIhANvCrhNaAWulP4qso3dW9vkWTBCS4eQJuh3lg/1Sw+/9"}]}},"0.1.1":{"name":"bas","version":"0.1.1","description":"Behaviour Assertion Sheets: CSS-like declarative syntax for client-side integration testing and quality assurance.","main":"lib/index.js","scripts":{"test":"mocha -R spec -t 10000","coverage":"test/coverage.sh"},"bin":{"bas":"lib/cli.js"},"repository":{"type":"git","url":"git+https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion","sheets","bas"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD-2-Clause","devDependencies":{"chai":"^3.4.1","istanbul":"^0.4.1","jshint":"^2.9.1-rc1","mocha":"^2.3.4","mocha-istanbul":"~0.2.0"},"dependencies":{"async":"^1.5.0","cheerio":"^0.19.0","colors":"^1.1.2","commander":"^2.9.0","csstree":"github:cgiffard/CSSTree#inline-comments","iconv-lite":"^0.4.13","request":"^2.67.0","simplecrawler":"^0.5.4","text-statistics":"^0.1.1","yoyaku":"0.0.12"},"gitHead":"12ef47d52e6dd83719d63b74edc978afafc2e62c","bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"homepage":"https://github.com/cgiffard/Behaviour-Assertion-Sheets#readme","_id":"bas@0.1.1","_shasum":"a9f756da25cd43c2b4154fcf0f130574fa048e1d","_from":".","_npmVersion":"3.10.9","_nodeVersion":"7.2.0","_npmUser":{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"},"dist":{"shasum":"a9f756da25cd43c2b4154fcf0f130574fa048e1d","tarball":"https://registry.npmjs.org/bas/-/bas-0.1.1.tgz","integrity":"sha512-xcOd09vRmr4TBfDgO/TcoWCC9R+G73BCYy/fvWsogi4ig0AJ4x54yVjaeguTGK0lXpr4irQ/9MWKkLzWmguMlA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWxLkhAGB1TnNnUfJnXEoQ+HIof6InvS0wSORqV9pehwIhALjcnSGGJ9VSSe3EXHmp5pOcNCt3K2/25zBhaWrqOKzv"}]},"maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bas-0.1.1.tgz_1497932782800_0.3321286397986114"}}},"readme":"# Behaviour Assertion Sheets [![Build Status](https://travis-ci.org/cgiffard/Behaviour-Assertion-Sheets.png?branch=master)](https://travis-ci.org/cgiffard/Behaviour-Assertion-Sheets) [![Dependency Status](https://david-dm.org/cgiffard/Behaviour-Assertion-Sheets.png)](https://david-dm.org/cgiffard/Behaviour-Assertion-Sheets)\n\n(For a friendlier overview, see http://bas.cgiffard.com/)\n\nBehaviour Assertion Sheets (Bas, pronounced 'base') are a way to describe how a\nweb page fits together, make assertions about its structure and content, and be\nnotified when these expectations are not met. It's a bit like selenium, if you've\never used that. An easier DSL for client-side integration testing.\n\nYou could:\n\n*\tUse BAS to [monitor the Apple Developer site to tell you when WWDC tickets\n\tare on sale](http://github.com/cgiffard/WWDC-Alerts), or your local postal\n\tservice to tell you when a package has been delivered\n*\tScan your site for common accessibility pitfalls, such as missing alt tags\n\ton images, poor heading order, or even check for hard-to-read copy with the\n\tinbuilt readability tests!\n*\tMonitor for service availability and downtime\n*\tIntegration testing and integrity verification (plug Bas into jenkins or travis!)\n*\tUse BAS inside of an existing test framework like Mocha to verify output,\n\tor even as reporting middleware inside your express application\n\nAnybody who has ever used CSS can use Bas - the [syntax is easy and familiar.]\n(#sheet-syntax)\n\n## Installing\n\nThis first implementation of Bas is built with [node.js](http://nodejs.org), so\nyou'll need it and npm first. Then just use npm to install Bas:\n\n\tnpm install -g bas\n\t\nInstalling globally (`-g`) makes a [CLI tool](#bas-on-the-command-line) available\nfor working with Bas sheets. If you don't install globally you can still use Bas\nvia the [node.js API](#bas-nodejs-api).\n\n## Sheet Syntax\n\nAs mentioned earlier, the Bas syntax looks very similar to (and nearly even parses as)\nCSS. Here are the major components:\n\n![Major components of the Bas syntax, as described by the list below.](http://cgiffard.com/github/bas/bas-diagram.png)\n\n(You can work this out yourself and just want to skip to the goods?\n[Jump to syntax example.](#bas-example))\n\n#### Rulesets\n\nRulesets are the highest-level construct in Bas. Everything falls inside a ruleset.\nThere are two kinds of rulesets - page specific rulesets denoted by the tag `@page`,\nand rulesets that execute against every page unconditionally, denoted by the\ntag `@all`.\n\nSyntactically these are based on the 'at-rules' of CSS (such as `@font-face`,\n`@media`, etc.)\n\nRulesets cannot be nested.\n\nAn example rulset:\n\n\t@all {\n\t\t...\n\t}\n\n#### Annotations\n\nAnnotations are an extension of CSS comments, that are prepended with an `@` symbol.\nBas knows to associate these with rulesets and selectors that follow, and displays\nthem in assertion failure traces so you know where they came from!\n\nYou may add as many annotations as you like to a single element. Every annotation\nthat precedes a block, regardless of whether assertions or regular comments (just\nnormal CSS comments without an `@`) are interspersed within them, is associated\nwith that block.\n\nAn example annotation:\n\n\t/*@ Here's my annotation! */\n\n#### Conditions\n\nA condition is appended to a page-specific ruleset (`@page`) and determines based\non the response information, URL of the page, and other environment variables,\nwhether the current page should be evaluated against this ruleset.\n\nConditions are additive and exclusive - each has to be true for the page to be\nconsidered for testing against a given ruleset. You may add as many conditions\nas you like to a `@page` ruleset.\n\nConditions are composed of a parentheses-wrapped set of three elements, each space\nseparated. On the left-hand side, a `test` - a reference to a function which\nreturns an environment variable or extracts an aspect of the current page or\nserver response.\n\nThe middle is an operator, which defines how the comparison takes place. An example\nof an operator might be `=` or `>=` or `!=~`. A full list of operators can be\nfound in the [syntax glossary](#operators).\n\nThe rightmost component is the assertion value - a string, number, or regular\nexpression which is compared to the test according to the rules of the operator.\n\nAn example condition:\n\n\t@page (status-code = 301) { ... }\n\nMultiple conditions may be combined like so:\n\n\t@page (status-code = 301) (content-type != text/html) { ... }\n\t\nRemember that adding more conditions will make the match more *exclusive*, as\nevery single one must succeed for the ruleset to be evaluated.\n\n#### Selector\n\nA selector groups a block of assertions together, and executes them against every\nnode in a page that matches the selector string.\n\nThe selector string is formatted exactly like a regular CSS selector - tags, IDs,\nclasses, pseudoclasses, and attribute syntax are all the same.\n\nThe assertions wrapped within a selector block are only executed should the\nselector match at least one node - with one exception: the special `required`\nassertion [subject](#assertion-subject) which executes regardless of whether a\nselector matches.\n\nThere's a caveat to this too, though: should a selector containing the `required`\nassertion subject be nested inside another selector block which does not match\nany nodes, it will not be executed. This allows syntax like the following:\n\n```css\n\th2 {\n\t\th1 { required: true; }\n\t}\n```\n\nIn this case, the heading 1 is required if one or more second-level headings\nare present.\n\n##### Nesting selectors\n\nSelector blocks can be nested. If a selector block is nested within another, it\nwill only be executed should the parent selector match.\n\n##### Scoping in Selectors\n\nWhen selector blocks are nested, special scoping variables may be used.\n\n###### $this\n\nThe scoping variable `$this` maps to the parent selector block's selector string.\nTherefore, consider the following example:\n\n```css\n#content {\n\t$this b {\n\t\t/* Hey! */\n\t}\n}\n```\n\nThe inner selector `$this b` will map to `#content b`.\n\n###### $node\n\nThe `$node` scope is similar to `$this` — however it is even more restrictive,\nonly searching within the exact node (or nodes) which was/were selected.\n\n```css\n#content header {\n\t$node h3 {\n\t\n\t}\n}\n```\n\nIn the above example, `$node h3` is equivalent to a scoped search for `h3` within\neach individual element matching `#content header`.\n\n##### Value Interpolation In Selectors\n\nSelectors may contain values interpolated from test results executed in their\nparent context.\n\nFor example, lets say you want to make sure that any element with an\n`aria-describedby` attribute has a matching element ID somewhere on the page.\n\n```css\n/* ARIA attributes */\n$this [aria-describedby] {\n\t/*@ WCAG (1.3.1 A, 4.1.1 A, 4.1.2 A) There must be a tag with a matching ID\n\t\tfor the aria-describedby attribute */\n\t\n\t[id=$(attribute(aria-describedby))$] {\n\t\tcount: 1;\n\t\trequired: true;\n\t}\n}\n```\n\nThe `$(...)$` construct instructs Bas to execute the string\n`attribute(aria-describedby)` as a test, and return the result, interpolating it\ninto the selector.\n\nTherefore, the final interpolated selector might look like:\n\n```css\n[id=image-header]\n```\n\n#### Assertions\n\nAn assertion is very similar to a `declaration` in CSS. Fundamentally, it is a\nsemicolon delimited key-value pair, that unlike CSS, defines an expectation\nrather than assigning a value.\n\nThe left-hand side of the assertion is known as the [subject](#assertion-subject)\nof the assertion, and refers to a [test](#tests) - a function that returns a value\nbased on the content of the current page/request.\n\nThis value is then compared against the right-hand side of the assertion - which\ncan contain any number of match requirements, separated by commas and/or spaces.\nThese requirements are evaluated separately, and should any single one of them\nfail (return a falsy value) the assertion will be considered `failed`.\n\nMatch requirements for an assertion can be strings, numbers, regular expressions,\nnegated regular expressions (prepended with !) or [barewords](#barewords).\n\nAn example of an assertion in use:\n\n\tattribute(style): contains(\"font-family\");\n\n#### Assertion Subject\n\nThe left-hand side of every assertion is known as an `assertion subject`, and\nrefers to a test function that returns a value from the current page or response\ninformation. A list of these functions can be found in the [syntax glossary.]\n(#tests)\n\nAn example of an assertion subject in use might be:\n\n\ttitle: /github/i;\n\nIn this case, the assertion subject is `title`. It refers to a test function called\n`title` which extracts the current document title. This is returned for the regex\ncomparison on the right hand side of the assertion.\n\nSome tests take arguments. This is how an assertion with test arguments is\nrepresented:\n\n\tattribute(role): \"main\";\n\n##### Subject Transformations\n\nThe value of an assertion test function can be subsequently transformed by special\nfunctions known as [transform functions](#transform-functions).\n\nThese can be chained against the value of an assertion test using the delimiter `.`.\n\nPurely for illustrative purposes, here's an example of using transform functions\n(fictitious... for now) to rot-13 text from a node before validating the assertion:\n\n\th1 {\n\t\ttext.rot13: /* some match here... */\n\t}\n\nMultiple transforms can be applied:\n\n\th1 {\n\t\ttext.rot13.rot13: /* text is back to normal! */\n\t}\n\t\nAnd arguments can be provided to transform functions, just like to the subject test\nitself.\n\n\th1 {\n\t\ttext.rot(13): /* some match here... */\n\t\ttext.rot(13).rot(13): /* some match here... */\n\t}\n\t\nA more realistic use-case can be found in the text-statistics functions. If you\nwant to check the flesch-kincaid reading ease of a given node, you could use:\n\n\th1 {\n\t\ttext.flesch-kincaid-reading-ease: gte(80);\n\t}\n\nYou could check the reading-ease of the alt-text on an image, too:\n\n\timg {\n\t\tattribute(alt).flesch-kincaid-reading-ease: gte(80);\n\t}\n\n#### Barewords\n\nThe right-hand side of the assertion, as well as regular expression, numeric, and\nstring matches, can contain special keywords known as barewords (for their lack\nof enclosing quotation marks.)\n\nThese keywords refer to a special function that by design has no access to the\ndocument - just the value returned by the [assertion subject](#assertion-subject),\nand any optional arguments it is given.\n\nIf the result of this function is falsy, then the assertion is considered `failed`.\n\nA full list of barewords can be found in the [syntax glossary](#bareword-functions).\n\nAn example of barewords in use:\n\n\tattribute(user-id): exists, longer-than(1), gte(1);\n\n### Bas Example\n\n```css\n\t@page (title =~ /github/i) (domain = github.com) {\n\t\t\n\t\tstatus-code: 200;\n\t\t\n\t\timg[src*=\"akamai\"] {\n\t\t\trequired: true;\n\t\t\tattribute(alt): true;\n\t\t\tcount: 3;\n\t\t}\n\t\t\n\t\t/*@ Require a heading 1 to be present if there's a heading 2 */\n\t\th2 {\n\t\t\th1 {\n\t\t\t\trequired: true;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t@all {\n\t\tstatus-code: lt(500);\n\t}\n```\n\nThis example provides a fairly broad look at what Bas can do and how it works.\n\nLet's break this example down bit by bit.\n\nGiven a page from the domain `github.com`, with a document title that matches the\nregular expression `/github/i`:\n\n*\tBas will check that the status code of the page matches the asserted `200 OK`.\n*\tBas will select all images with `akamai` somewhere in the in the `src`\n\tattribute, and:\n\t*\tAssert that at least one appears on the page\n\t*\tAssert that each has an `alt` attribute\n\t*\tAssert that exactly three should appear on the page if the selector matches\n*\tBas will select every heading 2 (h2) on the page\n\t*\tIf there's at least one heading two on the page, Bas will select\n\t\tevery heading 1 (h1), and:\n\t\t\t*\tAssert that if a heading 2 is present, at least one heading 1\n\t\t\t\tshould also be present on the page.\n\nThen, on every page tested, Bas will check to see whether the status code of the\nresponse was less than 500. \n\n## Syntax Glossary\n\n### Operators\n\nOperators are used in ruleset conditions, like `(title !=~ /github/i)`.\n\nA full list follows:\n\n* `=` true if `a == b`\n* `!=` true if `a !== b`\n* `=~` true if the regular expression `a` matches `b`\n* `!=~` true if the regular expression `a` does not match `b`\n* `>` true if `a > b` where both `a` and `b` are considered floats\n* `<` true if `a < b` where both `a` and `b` are considered floats\n* `>=` true if `a >= b` where both `a` and `b` are considered floats\n* `<=` true if `a <= b` where both `a` and `b` are considered floats\n\n### Tests\n\nTests without arguments may be used in ruleset conditions, like\n`(title !=~ /github/i)`, or as assertion subjects with or without arguments, like\n`attribute(role): \"navigation\"`.\n\nTests can also be added programatically. [See the API documentation for details.]\n(#bas-nodejs-api)\n\n*\t**title**\n\tReturns the title of the document.\n*\t**url**\n\tReturns the complete URL used to request the document.\n*\t**domain**\n\tReturns the domain from the URL used to request the document.\n*\t**protocol**\n\tReturns the domain from the URL used to request the document. HTTP if\n\tunspecified.\n*\t**port**\n\tReturns the port from the URL used to request the document. 80 if unspecified.\n*\t**path**\n\tReturns the path from the URL used to request the document. (Includes\n\tquerystring)\n*\t**pathname**\n\tReturns the path name from the URL used to request the document. (Does not\n\tinclude querystring)\n*\t**query** ( [query parameter] )\n\tReturns the entire query string from the URL used to request the document if\n\tthe 'query parameter' attribute is not passed to the test. If the `query\n\tparameter` attribute is present, the individual value for the specified query\n\tparameter will be returned, or null if the parameter does not exist.\n*\t**status-code**\n\tReturns the HTTP response status code the current document was served with.\n*\t**content-length**\n\tReturns the `Content-Length` header with which the current document was served.\n*\t**content-type**\n\tReturns the `Content-Type` header with which the current document was served.\n*\t**header** (header name)\n\tReturns the value of the header specified by the argument.\n*\t**required**\n\tAlways returns true. (Use for testing whether a selector matches.)\n*\t**exists**\n\tSynonym for `required`.\n\n#### Tests which must be executed on nodes (placed in selector blocks)\n\n*\t**text**\n\tReturns the (DOM) text from a given node.\n*\t**html**\n\tReturns the raw html content of a given node.\n*\t**attribute** (attribute name)\n\tReturns the value of the specified attribute from a given node.\n*\t**has-attribute** (attribute name)\n\tReturns true if the specified attribute is present - false if not.\n*\t**tag-name**\n\tReturns the tag name of a given node.\n*\t**count**\n\tReturns the number of nodes that matched a given selector.\n\t\n#### Transform Functions\n\n##### Text related\n\n*\t**flesch-kincaid-reading-ease**\n\tReturns the readability score (according to the flesch-kincaid reading ease\n\tscale) of the input text.\n*\t**flesch-kincaid-grade-level**\n\tReturns the readability score (according to the flesch-kincaid US grade level\n\tscale) of the input text.\n*\t**gunning-fog-score**\n\tReturns the readability score (according to the gunning-fog scale) of the\n\tinput text.\n*\t**coleman-liau-index**\n\tReturns the readability score (according to the coleman-liau index) of the\n\tinput text.\n*\t**smog-index**\n\tReturns the readability score (according to the SMOG index) of the input text.\n*\t**automated-readability-index**\n\tReturns the readability score (according to the automated readability index)\n\tof the input text.\n*\t**letter-count**\n\tReturns the number of latin letters in the text.\n*\t**sentence-count**\n\tReturns the number of sentences in the text (for latin languages.)\n*\t**word-count**\n\tReturns the number of words in the input text (for latin languages.)\n*\t**average-words-per-sentence**\n\tReturns the average number of words in each sentence in the input text.\n*\t**average-syllables-per-word**\n\tReturns the average number of syllables per word in the input text.\n\n##### General Transformations\n\n*\t**length**\n\tReturns the `.length` property of the input.\n*\t**type**\n\tReturns the JS type of the input (as reported by typeof, so quirks abound.)\n\n### Bareword Functions\n\nBarewords are used in assertions to evaluate the result of a test. Barewords\ncan have arguments.\n\n*\t**true**\n\tTests whether a test result is truthy.\n*\t**false**\n\tTests whether a test result is falsy.\n*\t**exists**\n\tSynonym for true. (Can make sheets more readable.)\n*\t**required**\n\tSynonym for true. (Can make sheets more readable.)\n*\t**forbidden**\n\tSynonym for false. (Can make sheets more readable.)\n*\t**gt** (expectation)\n\tTests whether the test result is numerically greater than the expectation.\n*\t**gte** (expectation)\n\tTests whether the test result is numerically greater or equal than the\n\texpectation.\n*\t**lt** (expectation)\n\tTests whether the test result is numerically less than the expectation.\n*\t**lte** (expectation)\n\tTests whether the test result is numerically less than or equal to the\n\texpectation.\n*\t**ne** (expectation)\n\tTests whether the test result is numerically not equal to the expectation.\n*\t**Length** (expected length)\n\tReturns true if the length of a test result (cast as a string) matches the\n\texpected length.\n*\t**longer-than** (expectation)\n\tTests whether the string length of the test result is greater than the\n\texpectation.\n*\t**shorter-than** (expectation)\n\tTests whether the string length of the test result is less than the\n\texpectation.\n*\t**contains** (expectation)\n\tTests whether the test result as a string contains an exact match for the\n\texpectation.\n*\t**one-of** (expectation, [expectation...])\n\tTests whether the test result is an exact match for any one of the arguments.\n\tCoerces both the arguments and the test result to string before comparison.\n\n## Bas on the Command Line\n\nIf you [installed Bas globally](#installing), you'll have access to a `bas` CLI\nclient which (hopefully) is available in your `$PATH`.\n\nThe `bas` CLI client can request a series of URLs, or initiate a crawl using the\nprovided list of URLs as a seed.\n\nIf you want to use Bas in another, non-JS project or in some kind of automated\ncapacity from the shell, you can supply a `-j` option to get test results as raw\nJSON.\n\nHere's a very simple example of how you might use the CLI tool:\n\n\tbas -vc -s mysheet.bas http://www.mywebsite.com/\n\nIn this example, the file `mysheet.bas` would be loaded and, with verbose reporting,\na crawl of mywebsite.com initiated (the `-c` option starts a crawl.) The test\nsuite would be run against every page returned, for as many pages as are present\nand accessible from the given URL. Obviously it may make sense to limit the number\nof pages downloaded: you can do this with the `-l` option:\n\n\tbas -vc -l 10 -s mysheet.bas http://mywebsite.com/\n\nYou may specify a single numeric range using a simple interpolation:\n\t\n\tbas -vc -l 10 -s mysheet.bas http://mywebsite.com/node/%{20-500}\n\t\nIf the `-s` option isn't specified, `bas` will look for the assertion sheet on\n`STDIN`. Therefore, you can cat a file and pipe it to `bas` as well:\n\n\tcat mysheet.bas | bas -v http://mydomain.com/testfile.html\n\nOr, if you haven't piped anything, `bas` will prompt you to enter the sheet\ninformation manually:\n\t\n\t➭  bas -v http://www.regex.info\n\tWaiting for BAS input from STDIN.\n\t@all {\n\t\th1 { required; }\n\t}\n\t^D\n\tThanks, got it.\n\t\n\t<snip>\n\nHere's the full list of options supported by `bas` at this time: (you can also\nget a list of options by typing `bas -h` at the prompt.)\n\n* `-h`, `--help` Output usage information\n* `-V`, `--version` Output the version number\n* `-c`, `--crawl` Crawl from the specified URLs\n* `-s`, `--sheet [filename]` Test using the specified BAS\n* `-l`, `--limit [number]` Limit number of resources to request when crawling\n* `-d`, `--die` Die on first error\n* `-q`, `--quiet` Suppress output (prints final report/json only)\n* `-v`, `--verbose` Verbose output\n* `-j`, `--json` Output list of errors/test results as JSON\n* `--csv` Output list of errors/test results as CSV\n* `--noquery` Don't download resources with query strings\n* `-u`, `--username <username>` Username for HTTP Basic Auth (crawl)\n* `-p`, `--password <password>` Password for HTTP Basic Auth (crawl)\n\nThe exit value from the CLI is equivalent to the number of errors that occurred\nwhen the test suite was run. If no errors occurred, of course, the exit value is\nzero.\n\n## Bas Node.js API\n\n### Overview\n\nThe Bas API is extremely straightforward. To get started, simply require it:\n\n```javascript\n\tvar BAS = require(\"bas\");\n```\n\nCreate yourself a new BAS test suite like so:\n\n```javascript\n\tvar testSuite = new BAS();\n```\n\nLoad in a Bas sheet (you can also supply a buffer if you'd prefer.)\n\n```javascript\n\ttestSuite.loadSheet(\"./mysheet.bas\");\n```\n\t\nThen fetch a resource (in this case, we're using [request](http://npm.im/request))\nand run the test suite against it. You'll need to pass in a URL and response object\nas well as the page data.\n\n```javascript\n\trequest(\"http://example.com\",function(err,res,body) {\n\t\tif (err) throw err;\n\t\t\n\t\ttestSuite.run(url,res,data);\n\t});\n```\n\t\nThe test suite runs asynchronously, and [emits events](#events) so you can know\nwhen errors have occurred, assertions have been tested, or that the suite has\ncompleted.\n\nWe can listen to one of these events to be alerted to when the test suite finishes,\nand receive a list of errors (if there were any!)\n\n```javascript\n\ttestSuite.on(\"end\",function() {\n\t\tif (testSuite.errors.length) {\n\t\t\tconsole.log(\"Looks like there were some errors!\");\n\t\t\ttestSuite.errors.forEach(function(err) {\n\t\t\t\tconsole.error(err.message);\n\t\t\t});\n\t\t}\n\t});\n```\n\n### API Reference\n\n#### BAS (constructor)\n\n\tnew BAS( [options] )\n\nReturns a new Bas test suite instance. The optional `options` parameter is an\nobject, with the following possible keys:\n\n*\t`continueOnParseFail` (Defaults to `false`)\nShould Cheerio fail to parse the HTML document, should Bas continue with the\ntest suite, loading in a blank document? Or bail out?\n\nBAS is an instance of node EventEmitter and implements the `on` and `emit` methods,\nnot described here.\n\n#### `BAS.tests` *property*\n\nGetter: Returns an object map of functions corresponding to [tests](#tests.)\n\n#### `BAS.errors` *property*\n\nGetter: returns an array of assertion errors (Error instances) if any were thrown\nduring the previous test run.\n\nEach error has the following (some additional) properties:\n\t\n*\t`message` (string - the error message.)\n*\t`selector` (string - if available, the selector that triggered the current\n\tassertion.)\n*\t`nodePath` (string - a generated, unambiguous CSS selector path to the current node.)\n*\t`url` (string - the url of the page that triggered this assertion.)\n\nThe list of errors may also be cleared with `BAS.errors.clear()`.\n\n#### `BAS.rules` *property*\n\nGetter: An array of ruleset objects. (Better documentation for these coming soon!)\n\n#### `BAS.stats` *property*\n\nGetter: Returns an object containing statistics about past test runs.\n\nThis should be considered **unstable** and undocumented. It is about to change.\n\n#### `BAS.loadSheet` (buffer sheetData | string filePath)\n\nIf given a buffer, this function will not touch the filesystem - it simply parses the\ndata it receives immediately.\n\nIf given a filepath, asynchronously loads the entire file off disk, and parses\nit - adding the processed rules to the test suite object.\n\nThese rules can be accessed via [`BAS.rules`](#basrules-property).\n\nThis function returns an object with promise handlers: `yep` for success, and `nope`\nfor failure. See the [yoyaku](http://github.com/cgiffard/yoyaku) documentation for\nmore information.\n\n#### `BAS.parseSheet` (buffer sheetData | string sheetData)\n\nTakes a string or a buffer containing Bas rules, and parses it, adding the\nprocessed rules to the test suite object.\n\nThese rules can be accessed via [`BAS.rules`](#basrules-property).\n\nThis function returns an object with promise handlers: `yep` for success, and `nope`\nfor failure. See the [yoyaku](http://github.com/cgiffard/yoyaku) documentation for\nmore information.\n\n#### `BAS.registerTest`(string testName, function test)\n\nRegisters a test in the `BAS.test` object map - and makes it available to Bas\nsheets to use in conditions and assertion subjects.\n\n#### `BAS.run` (string URL, object HTTPResponse, string Data)\n\nInitiates the running of the test suite.\n\nIt is important to give this function the correct URL and response object, or the\ntests may not operate correctly.\n\n`BAS` will emit events during the execution of the tests.\n\nThis function returns an object with promise handlers: `yep` for success, and `nope`\nfor failure. See the [yoyaku](http://github.com/cgiffard/yoyaku) documentation for\nmore information.\n\n### Events\n\n*\t`loadsheet`\n\tEmitted when a new Bas sheet is successfully loaded.\n*\t`testregistered` (name, func)\n\tEmitted when a new test is registered with Bas.\n*\t`start` (url)\n\tEmitted when the test suite commences.\n*\t`parseerror` (error)\n\tEmitted when Cheerio encounters a parse error with the resource.\n*\t`assertion` (assertion, [node])\n\tEmitted when Bas begins testing an assertion. The node parameter is only\n\tsupplied when testing an assertion in a selector group.\n*\t`assertionsuccess` (assertion, [node])\n\tEmitted when Bas completes testing an assertion, and the result is truthy.\n\tThe node parameter is only supplied when testing an assertion in a selector\n\tgroup.\n*\t`assertionfailed` (assertionErr, assertion)\n\tEmitted when Bas completes testing an assertion, and the result is falsy, and\n\tthe test is considered failed. The error triggered by the assertion is supplied\n\tas the first parameter.\n*\t`selector` (selector, node)\n\tEmitted when Bas commences testing the assertions in a selector.\n*\t`startgroup` (rule)\n\tEmitted when Bas commences testing the assertions in a ruleset.\n*\t`end` (url,errors)\n\tEmitted when Bas completes the test suite. An array of errors is provided,\n\tand the URL of the page the tests were executed against.\n\n## Roadmap\n\n#### Next Version/s\n\n*\tBetter documentation for rulesets, assertions, selector objects\n*\tAsynchronous test support\n*\tComprehensive test suite (this is steadily improving!)\n*\tVery solid cleanup\n*\tLoad in HTML/XML to test against from disk using `bas` CLI tool\n*\tLots more test functions (for conditions and assertions)\n*\tSupport for assertion-specific error severity\n\n#### Further down the road\n\n*\tSupport for headless browsers and PhantomJS\n\n#### Under consideration\n\n*\tCross compilation of Bas sheets to selenium\n\n## Testing\n\nBas does not have an enormous test suite at this stage, but I'm working on filling\nit out as comprehensively as possible.\n\nTo run the test suite, use:\n\n\tnpm test\n\t\n### Test Coverage\n\nTest coverage is generated with [istanbul](http://gotwarlost.github.io/istanbul/).\n\nTo generate current statistics, run `npm run-script coverage` from the Bas directory.\n\n<table>\n\t<thead>\n\t\t<tr>\n\t\t   <th>Statements</th>\n\t\t   <th>Branches</th>\n\t\t   <th>Functions</th>\n\t\t   <th>Lines</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t<tr>\n\t\t\t<td>82.86% (551/665)</td>\n\t\t\t<td>77.51% (286/369)</td>\n\t\t\t<td>79.86% (115/144)</td>\n\t\t\t<td>82.78% (519/627)</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\n## Licence\n\nCopyright (c) 2013, Christopher Giffard.\n\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, \nare permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n* Redistributions in binary form must reproduce the above copyright notice, this\n  list of conditions and the following disclaimer in the documentation and/or\n  other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR \nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/cgiffard/behaviour-assertion-sheets/trend.png)](https://bitdeli.com/free \"Bitdeli Badge\")\n\n","maintainers":[{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"time":{"modified":"2022-06-13T04:16:29.186Z","created":"2013-04-17T02:41:27.789Z","0.0.1":"2013-04-17T02:41:31.393Z","0.0.2":"2013-04-17T02:43:20.452Z","0.0.3":"2013-04-17T03:04:24.168Z","0.0.4":"2013-04-17T14:07:16.784Z","0.0.6":"2013-04-26T11:47:25.651Z","0.0.7":"2013-05-03T13:10:10.682Z","0.0.8":"2013-05-04T13:49:09.532Z","0.0.9":"2013-05-05T00:28:31.696Z","0.0.10":"2013-05-10T08:42:26.239Z","0.0.11":"2013-05-10T13:31:33.077Z","0.0.12":"2013-05-15T01:44:38.606Z","0.0.13":"2013-05-16T06:56:00.344Z","0.0.14":"2013-05-16T09:16:51.753Z","0.0.15":"2013-06-19T07:14:58.083Z","0.0.16":"2013-06-26T00:30:32.624Z","0.0.17":"2013-06-27T01:52:03.558Z","0.0.18":"2013-07-25T05:37:28.247Z","0.0.19":"2013-07-25T07:20:36.635Z","0.0.20":"2013-07-26T02:50:13.967Z","0.0.21":"2013-10-01T02:50:32.173Z","0.0.22":"2013-10-02T03:27:39.340Z","0.0.23":"2013-10-16T03:11:32.106Z","0.0.24":"2013-11-08T04:14:17.556Z","0.0.25":"2013-11-12T09:13:27.099Z","0.0.26":"2013-11-13T01:19:47.078Z","0.0.27":"2013-11-22T03:02:59.690Z","0.0.28":"2013-11-22T06:01:58.395Z","0.0.29":"2013-11-30T11:06:28.785Z","0.0.30":"2014-01-03T02:55:03.216Z","0.0.31":"2014-04-21T05:25:23.390Z","0.0.32":"2014-06-13T06:07:56.077Z","0.1.0":"2015-11-30T06:48:26.020Z","0.1.1":"2017-06-20T04:26:24.197Z"},"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"repository":{"type":"git","url":"git+https://github.com/cgiffard/Behaviour-Assertion-Sheets.git"},"homepage":"https://github.com/cgiffard/Behaviour-Assertion-Sheets#readme","keywords":["test","css","behaviour","integration","testing","declarative","client-side","crawl","crawler","assertion","sheets","bas"],"bugs":{"url":"https://github.com/cgiffard/Behaviour-Assertion-Sheets/issues"},"license":"BSD-2-Clause","readmeFilename":"README.md","users":{"rubiadias":true,"sylvain261":true}}