<script type="application/json" id="HeaderNotice-apollo-state-992f9e1e-c79c-43fb-96a9-089d825fa346">{}</script> <!-- glamorIds: 7 --> <script type="application/json" id="HeaderNotice-glamor-992f9e1e-c79c-43fb-96a9-089d825fa346">["1htug8r","1yodi52","iepywa","x5hg3h","u0iaox","9ilv8v","gwph6j"]</script> <style>@-webkit-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-moz-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-o-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-webkit-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-moz-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-o-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-webkit-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-moz-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-o-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-webkit-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-moz-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-o-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-webkit-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-moz-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-o-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-webkit-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@-moz-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@-o-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}.css-gwph6j,[data-css-gwph6j]{border-radius:2px;background-size:200% 100%;width:auto;height:auto;animation:20s animation_1yodi52 0s linear infinite;background:-webkit-linear-gradient(to right, #f1f1f1 0%, #fbfbfb 50%, #f1f1f1 100%); background: -moz-linear-gradient(to right, #f1f1f1 0%, #fbfbfb 50%, #f1f1f1 100%); background: linear-gradient(to right, #f1f1f1 0%, #fbfbfb 50%, #f1f1f1 100%);-webkit-animation:20s animation_1yodi52 0s linear infinite;}</style> <div id="HeaderNotice-react-component-992f9e1e-c79c-43fb-96a9-089d825fa346" data-ssr="true" ><div style="z-index:1000" class="css-gwph6j"></div></div> <script> renderComponent('HeaderNotice','HeaderNotice-react-component-992f9e1e-c79c-43fb-96a9-089d825fa346','HeaderNotice-apollo-state-992f9e1e-c79c-43fb-96a9-089d825fa346','HeaderNotice-glamor-992f9e1e-c79c-43fb-96a9-089d825fa346', 'apollo','{"mobile":false}'); </script> <script type="application/json" id="ToolAlternatives-apollo-state-99f6f76f-50d6-4b06-9b7e-73dcadb1daea">{"ROOT_QUERY":{"me":null,"tool({\"id\":\"cypress\"})":{"type":"id","generated":false,"id":"Tool:101231778053837910","typename":"Tool"},"tool({\"id\":\"101231778053837910\"})":{"type":"id","generated":false,"id":"Tool:101231778053837910","typename":"Tool"}},"Tool:101231778053837910":{"id":"101231778053837910","imageUrl":"https://img.stackshare.io/service/9231/default_66c5c1a197dcd0232e41e4ab6299d119b4e165b3.png","name":"Cypress","ampStoryEnabled":false,"description":"Cypress is a front end automated testing application created for the modern web. Cypress is built on a new architecture and runs in the same run-loop as the application being tested. As a result Cypress provides better, faster, and more reliable testing for anything that runs in a browser. Cypress works on any front-end framework or website. ","followers":{"type":"id","generated":true,"id":"$Tool:101231778053837910.followers","typename":"UserConnection"},"company":{"type":"id","generated":true,"id":"$Tool:101231778053837910.company","typename":"Company"},"path":"/cypress","slug":"cypress","following":false,"alternativeTools":{"type":"id","generated":true,"id":"$Tool:101231778053837910.alternativeTools","typename":"ToolConnection"},"function":{"type":"id","generated":true,"id":"$Tool:101231778053837910.function","typename":"Function"},"layer":{"type":"id","generated":true,"id":"$Tool:101231778053837910.layer","typename":"Layer"},"category":{"type":"id","generated":true,"id":"$Tool:101231778053837910.category","typename":"Category"},"features":"Time Travel; Debuggability; Automatic Waiting; Spies, Stubs, and Clocks; Network Traffic Control; Consistent Results; Screenshots and Videos","thumbUrl":"https://img.stackshare.io/service/9231/thumb_66c5c1a197dcd0232e41e4ab6299d119b4e165b3.png","thumbRetinaUrl":"https://img.stackshare.io/service/9231/thumb_retina_66c5c1a197dcd0232e41e4ab6299d119b4e165b3.png","verified":true,"pressUrl":"https://github.com/cypress-io/cypress","githubForksCount":2639,"githubStarsCount":41919,"title":"When testing is easy, developers build better things faster and with confidence.","twitterUsername":"Cypress_io","websiteUrl":"https://www.cypress.io/","stacks":1693,"votes":113,"privateFollowers":{"type":"id","generated":true,"id":"$Tool:101231778053837910.privateFollowers","typename":"UserConnection"},"footerAlternateTools({\"first\":5})":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerAlternateTools({\"first\":5})","typename":"ToolConnection"},"footerNewTools({\"first\":5})":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerNewTools({\"first\":5})","typename":"ToolConnection"},"footerTopTools({\"first\":5})":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerTopTools({\"first\":5})","typename":"ToolConnection"},"footerRelatedStackups({\"first\":5})":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerRelatedStackups({\"first\":5})","typename":"StackupConnection"},"__typename":"Tool","canonicalUrl":"/cypress","fans":2353,"followContext":null,"alternativeTools({\"first\":8})":{"type":"id","generated":true,"id":"$Tool:101231778053837910.alternativeTools({\"first\":8})","typename":"ToolConnection"}},"$Tool:101231778053837910.followers":{"count":1835,"__typename":"UserConnection"},"$Tool:101231778053837910.company":{"name":"Cypress.io","slug":"cypress-io","stacks":[{"type":"id","generated":false,"id":"Stack:101231825964060286","typename":"Stack"},{"type":"id","generated":false,"id":"Stack:101231825942341285","typename":"Stack"},{"type":"id","generated":false,"id":"Stack:101231825964417465","typename":"Stack"},{"type":"id","generated":false,"id":"Stack:101231825894303280","typename":"Stack"}],"__typename":"Company"},"Stack:101231825964060286":{"id":"101231825964060286","__typename":"Stack"},"Stack:101231825942341285":{"id":"101231825942341285","__typename":"Stack"},"Stack:101231825964417465":{"id":"101231825964417465","__typename":"Stack"},"Stack:101231825894303280":{"id":"101231825894303280","__typename":"Stack"},"$Tool:101231778053837910.alternativeTools":{"count":23,"__typename":"ToolConnection"},"$Tool:101231778053837910.function":{"name":"Javascript Testing Framework","slug":"javascript-testing-framework","__typename":"Function"},"$Tool:101231778053837910.layer":{"name":"DevOps","slug":"devops","__typename":"Layer"},"$Tool:101231778053837910.category":{"name":"Build, Test, Deploy","slug":"build-test-deploy","__typename":"Category"},"$Tool:101231778053837910.privateFollowers":{"count":0,"__typename":"UserConnection"},"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.0.node":{"name":"Selenium","path":"/selenium","__typename":"Tool"},"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.0":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.0.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.1.node":{"name":"TestCafe","path":"/testcafe","__typename":"Tool"},"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.1":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.1.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.2.node":{"name":"Puppeteer","path":"/puppeteer","__typename":"Tool"},"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.2":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.2.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.3.node":{"name":"WebdriverIO","path":"/webdriverio","__typename":"Tool"},"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.3":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.3.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.4.node":{"name":"Jest","path":"/jest","__typename":"Tool"},"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.4":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.4.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231778053837910.footerAlternateTools({\"first\":5})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.0","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.1","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.2","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.3","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerAlternateTools({\"first\":5}).edges.4","typename":"ToolEdge"}],"__typename":"ToolConnection"},"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.0.node":{"name":"Travis CI","path":"/travis-ci","__typename":"Tool"},"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.0":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.0.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.1.node":{"name":"Puppet Labs","path":"/puppet","__typename":"Tool"},"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.1":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.1.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.2.node":{"name":"Chef","path":"/chef","__typename":"Tool"},"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.2":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.2.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.3.node":{"name":"AWS OpsWorks","path":"/aws-opswork","__typename":"Tool"},"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.3":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.3.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.4.node":{"name":"Solano CI","path":"/solano-ci","__typename":"Tool"},"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.4":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.4.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231778053837910.footerNewTools({\"first\":5})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.0","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.1","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.2","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.3","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerNewTools({\"first\":5}).edges.4","typename":"ToolEdge"}],"__typename":"ToolConnection"},"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.0.node":{"name":"GitHub","path":"/github","__typename":"Tool"},"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.0":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.0.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.1.node":{"name":"Git","path":"/git","__typename":"Tool"},"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.1":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.1.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.2.node":{"name":"Docker","path":"/docker","__typename":"Tool"},"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.2":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.2.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.3.node":{"name":"Visual Studio Code","path":"/visual-studio-code","__typename":"Tool"},"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.3":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.3.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.4.node":{"name":"npm","path":"/npm","__typename":"Tool"},"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.4":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.4.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231778053837910.footerTopTools({\"first\":5})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.0","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.1","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.2","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.3","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerTopTools({\"first\":5}).edges.4","typename":"ToolEdge"}],"__typename":"ToolConnection"},"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.0.node":{"path":"/stackups/cypress-vs-jest-vs-mocha","title":"Cypress vs Jest vs Mocha","__typename":"Stackup"},"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.0":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.0.node","typename":"Stackup"},"__typename":"StackupEdge"},"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.1.node":{"path":"/stackups/cypress-vs-enzyme-vs-mocha","title":"Cypress vs Enzyme vs Mocha","__typename":"Stackup"},"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.1":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.1.node","typename":"Stackup"},"__typename":"StackupEdge"},"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.2.node":{"path":"/stackups/cypress-vs-jasmine","title":"Cypress vs Jasmine","__typename":"Stackup"},"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.2":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.2.node","typename":"Stackup"},"__typename":"StackupEdge"},"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.3.node":{"path":"/stackups/cypress-vs-qunit","title":"Cypress vs QUnit","__typename":"Stackup"},"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.3":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.3.node","typename":"Stackup"},"__typename":"StackupEdge"},"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.4.node":{"path":"/stackups/cypress-vs-mocha","title":"Cypress vs Mocha","__typename":"Stackup"},"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.4":{"node":{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.4.node","typename":"Stackup"},"__typename":"StackupEdge"},"$Tool:101231778053837910.footerRelatedStackups({\"first\":5})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.0","typename":"StackupEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.1","typename":"StackupEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.2","typename":"StackupEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.3","typename":"StackupEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.footerRelatedStackups({\"first\":5}).edges.4","typename":"StackupEdge"}],"__typename":"StackupConnection"},"$Tool:101231778053837910.alternativeTools({\"first\":8}).pageInfo":{"hasNextPage":true,"endCursor":"OA","__typename":"PageInfo"},"$Tool:101231778053837910.alternativeTools({\"first\":8})":{"pageInfo":{"type":"id","generated":true,"id":"$Tool:101231778053837910.alternativeTools({\"first\":8}).pageInfo","typename":"PageInfo"},"edges":[{"type":"id","generated":true,"id":"$Tool:101231778053837910.alternativeTools({\"first\":8}).edges.0","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.alternativeTools({\"first\":8}).edges.1","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.alternativeTools({\"first\":8}).edges.2","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.alternativeTools({\"first\":8}).edges.3","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.alternativeTools({\"first\":8}).edges.4","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.alternativeTools({\"first\":8}).edges.5","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.alternativeTools({\"first\":8}).edges.6","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231778053837910.alternativeTools({\"first\":8}).edges.7","typename":"ToolEdge"}],"__typename":"ToolConnection"},"Tool:101231774063724150":{"id":"101231774063724150","path":"/selenium","slug":"selenium","title":"Web Browser Automation","votes":522,"following":false,"followers":{"type":"id","generated":true,"id":"$Tool:101231774063724150.followers","typename":"UserConnection"},"stacks":13386,"githubForksCount":7289,"imageUrl":"https://img.stackshare.io/service/1517/sbUizSli_400x400.jpg","thumbRetinaUrl":"https://img.stackshare.io/service/1517/thumb_retina_sbUizSli_400x400.jpg","name":"Selenium","description":"Selenium automates browsers. That's it! What you do with that power is entirely up to you. Primarily, it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should!) also be automated as well.","contactEnabled":true,"contactButtonText":"Build Self-Maintaining Browser Tests In Datadog","contactFlow":{"type":"json","json":{"links":[{"url":"https://www.datadoghq.com/dg/apm/synthetics/ts-synthetic-monitoring/?utm_source=advertisement&utm_medium=review-site&utm_campaign=dg-stackshare-synthetics-ww-selenium-tshirt","type":"website"}],"steps":["direct_link"]}},"pros":{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231774063724150.cons","typename":"ReasonConnection"},"verified":false,"canonicalUrl":"/selenium","fans":13251,"followContext":null,"__typename":"Tool","stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231774063724150.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231774063724150.followers":{"count":10768,"__typename":"UserConnection"},"Reason:101978468438789706":{"id":"101978468438789706","upvoted":false,"upvotesCount":172,"text":"Automates browsers","__typename":"Reason"},"$Tool:101231774063724150.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978468438789706","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468438958727":{"id":"101978468438958727","upvoted":false,"upvotesCount":154,"text":"Testing","__typename":"Reason"},"$Tool:101231774063724150.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978468438958727","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468496856902":{"id":"101978468496856902","upvoted":false,"upvotesCount":101,"text":"Essential tool for running test automation","__typename":"Reason"},"$Tool:101231774063724150.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978468496856902","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468439238933":{"id":"101978468439238933","upvoted":false,"upvotesCount":24,"text":"Remote Control","__typename":"Reason"},"$Tool:101231774063724150.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:101978468439238933","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468439065067":{"id":"101978468439065067","upvoted":false,"upvotesCount":24,"text":"Record-Playback","__typename":"Reason"},"$Tool:101231774063724150.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:101978468439065067","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469171430717":{"id":"101978469171430717","upvoted":false,"upvotesCount":8,"text":"Data crawling","__typename":"Reason"},"$Tool:101231774063724150.pros.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:101978469171430717","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469359657768":{"id":"101978469359657768","upvoted":false,"upvotesCount":7,"text":"Supports end to end testing","__typename":"Reason"},"$Tool:101231774063724150.pros.edges.6":{"node":{"type":"id","generated":false,"id":"Reason:101978469359657768","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469408894906":{"id":"101978469408894906","upvoted":false,"upvotesCount":6,"text":"Functional testing","__typename":"Reason"},"$Tool:101231774063724150.pros.edges.7":{"node":{"type":"id","generated":false,"id":"Reason:101978469408894906","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469359025665":{"id":"101978469359025665","upvoted":false,"upvotesCount":6,"text":"Easy set up","__typename":"Reason"},"$Tool:101231774063724150.pros.edges.8":{"node":{"type":"id","generated":false,"id":"Reason:101978469359025665","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103420053783253612":{"id":"103420053783253612","upvoted":false,"upvotesCount":4,"text":"The Most flexible monitoring system","__typename":"Reason"},"$Tool:101231774063724150.pros.edges.9":{"node":{"type":"id","generated":false,"id":"Reason:103420053783253612","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469948261202":{"id":"101978469948261202","upvoted":false,"upvotesCount":3,"text":"End to End Testing","__typename":"Reason"},"$Tool:101231774063724150.pros.edges.10":{"node":{"type":"id","generated":false,"id":"Reason:101978469948261202","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103633673570887742":{"id":"103633673570887742","upvoted":false,"upvotesCount":3,"text":"Easy to integrate with build tools","__typename":"Reason"},"$Tool:101231774063724150.pros.edges.11":{"node":{"type":"id","generated":false,"id":"Reason:103633673570887742","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470189846737":{"id":"101978470189846737","upvoted":false,"upvotesCount":2,"text":" Comparing the performance selenium is faster than jasm","__typename":"Reason"},"$Tool:101231774063724150.pros.edges.12":{"node":{"type":"id","generated":false,"id":"Reason:101978470189846737","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103693024812630147":{"id":"103693024812630147","upvoted":false,"upvotesCount":2,"text":"Record and playback","__typename":"Reason"},"$Tool:101231774063724150.pros.edges.13":{"node":{"type":"id","generated":false,"id":"Reason:103693024812630147","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469702774079":{"id":"101978469702774079","upvoted":false,"upvotesCount":2,"text":"Compatible with Python","__typename":"Reason"},"$Tool:101231774063724150.pros.edges.14":{"node":{"type":"id","generated":false,"id":"Reason:101978469702774079","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469450425523":{"id":"101978469450425523","upvoted":false,"upvotesCount":2,"text":"Easy to scale","__typename":"Reason"},"$Tool:101231774063724150.pros.edges.15":{"node":{"type":"id","generated":false,"id":"Reason:101978469450425523","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470165950002":{"id":"101978470165950002","upvoted":false,"upvotesCount":2,"text":"Integration Tests","__typename":"Reason"},"$Tool:101231774063724150.pros.edges.16":{"node":{"type":"id","generated":false,"id":"Reason:101978470165950002","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:105391299275920845":{"id":"105391299275920845","upvoted":false,"upvotesCount":0,"text":"Integrated into Selenium-Jupiter framework","__typename":"Reason"},"$Tool:101231774063724150.pros.edges.17":{"node":{"type":"id","generated":false,"id":"Reason:105391299275920845","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231774063724150.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros.edges.5","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros.edges.6","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros.edges.7","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros.edges.8","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros.edges.9","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros.edges.10","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros.edges.11","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros.edges.12","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros.edges.13","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros.edges.14","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros.edges.15","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros.edges.16","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.pros.edges.17","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:104994421039274793":{"id":"104994421039274793","upvoted":false,"upvotesCount":8,"text":"Flaky tests","__typename":"Reason"},"$Tool:101231774063724150.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:104994421039274793","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:105430572770080008":{"id":"105430572770080008","upvoted":false,"upvotesCount":4,"text":"Slow as needs to make browser (even with no gui)","__typename":"Reason"},"$Tool:101231774063724150.cons.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:105430572770080008","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:108593959634612079":{"id":"108593959634612079","upvoted":false,"upvotesCount":1,"text":"Update browser drivers","__typename":"Reason"},"$Tool:101231774063724150.cons.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:108593959634612079","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231774063724150.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774063724150.cons.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.cons.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.cons.edges.2","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"User:101232079706377588":{"id":"101232079706377588","username":"kamilkowalski","title":"Lead Architect","companyName":"Fresha","imageUrl":"https://img.stackshare.io/user/175610/default_715c96c98f4362992833dd4e0410513ce77c3eeb.jpeg","thumbUrl":"https://img.stackshare.io/user/175610/thumb_715c96c98f4362992833dd4e0410513ce77c3eeb.jpeg","displayName":"Kamil Kowalski","__typename":"User"},"StackDecision:103356936364529702":{"user":{"type":"id","generated":false,"id":"User:101232079706377588","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:103356936364529702.company","typename":"Company"},"link":null,"publicId":"103356936364529702","publishedAt":"2019-12-23T11:48:09Z","id":"103356936364529702","htmlContent":"<p>When you think about test automation, it’s crucial to make it everyone’s responsibility (not just QA Engineers'). We started with <span class=\"tool\">Selenium</span> and <span class=\"tool\">Java</span>, but with our platform revolving around <span class=\"tool\">Ruby</span>, <span class=\"tool\">Elixir</span> and <span class=\"tool\">JavaScript</span>, QA Engineers were left alone to automate tests. <span class=\"tool\">Cypress</span> was the answer, as we could switch to JS and simply involve more people from day one. There's a downside too, as it meant testing on Chrome only, but that was \"good enough\" for us + if really needed we can always cover some specific cases in a different way.</p>","viewCount":1752942,"upvotesCount":28,"services":[{"type":"id","generated":false,"id":"Tool:101231774063724150","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773838011785","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773835511567","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774237595825","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773939333405","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231778053837910","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:103356936364529702.company":{"imageUrl":"https://img.stackshare.io/company/29444/default_f292b7432398c825a68b4fbe8ddbedc9c135b2a1.png","thumbUrl":"https://img.stackshare.io/company/29444/thumb_f292b7432398c825a68b4fbe8ddbedc9c135b2a1.png","name":"Fresha","path":"/companies/fresha","features":[],"__typename":"Company"},"Tool:101231773838011785":{"id":"101231773838011785","name":"Java","slug":"java","title":"A concurrent, class-based, object-oriented, language specifically designed to have as few implementation dependencies as possible","verified":false,"imageUrl":"https://img.stackshare.io/service/995/K85ZWV2F.png","canonicalUrl":"/java","path":"/java","votes":3670,"fans":100790,"stacks":108301,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773835511567":{"id":"101231773835511567","name":"Ruby","slug":"ruby","title":"A dynamic, interpreted, open source programming language with a focus on simplicity and productivity","verified":false,"imageUrl":"https://img.stackshare.io/service/989/ruby.png","canonicalUrl":"/ruby","path":"/ruby","votes":3922,"fans":23348,"stacks":28123,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774237595825":{"id":"101231774237595825","name":"Elixir","slug":"elixir","title":"Dynamic, functional language designed for building scalable and maintainable applications","verified":false,"imageUrl":"https://img.stackshare.io/service/1974/drop.png","canonicalUrl":"/elixir","path":"/elixir","votes":1284,"fans":3562,"stacks":2973,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773939333405":{"id":"101231773939333405","name":"JavaScript","slug":"javascript","title":"Lightweight, interpreted, object-oriented language with first-class functions","verified":false,"imageUrl":"https://img.stackshare.io/service/1209/javascript.jpeg","canonicalUrl":"/javascript","path":"/javascript","votes":7913,"fans":262222,"stacks":273654,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231774063724150.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:103356936364529702","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:102368357518682806":{"id":"102368357518682806","username":"ben-poon","title":"QA Manager - Engineering","companyName":"HBC Digital","imageUrl":"https://img.stackshare.io/user/299876/default_84756e3dfc9c3933aeda5660e234df83b580579c.png","thumbUrl":"https://img.stackshare.io/user/299876/thumb_84756e3dfc9c3933aeda5660e234df83b580579c.png","displayName":"Benjamin Poon","__typename":"User"},"StackDecision:102368529103552458":{"user":{"type":"id","generated":false,"id":"User:102368357518682806","typename":"User"},"company":null,"link":null,"publicId":"102368529103552458","publishedAt":"2019-07-01T22:23:08Z","id":"102368529103552458","htmlContent":"<p>For our digital QA organization to support a complex hybrid monolith/microservice architecture, our team took on the lofty goal of building out a commonized UI test automation framework. One of the primary requisites included a technical minimalist threshold such that an engineer or analyst with fundamental knowledge of <span class=\"tool\">JavaScript</span> could automate their tests with greater ease. Just to list a few: \n- <span class=\"tool\">Nightwatchjs</span> \n- <span class=\"tool\">Selenium</span> \n- <span class=\"tool\">Cucumber</span>\n- <span class=\"tool\">GitHub</span> \n- <span class=\"tool\">Go.CD</span> \n- <span class=\"tool\">Docker</span> \n- <span class=\"tool\">ExpressJS</span> \n- <span class=\"tool\">React</span> \n- <span class=\"tool\">PostgreSQL</span> </p>\n\n<p>With this structure, we're able to combine the automation efforts of each team member into a centralized repository while also providing new relevant metrics to business owners. </p>","viewCount":930975,"upvotesCount":8,"services":[{"type":"id","generated":false,"id":"Tool:101231775384836903","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774063724150","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773939333405","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774475140734","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773410696721","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774386883602","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773669807419","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773920953695","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773849098825","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773853533403","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"Tool:101231775384836903":{"id":"101231775384836903","name":"Nightwatchjs","slug":"nightwatchjs","title":"Automated testing and continous integration framework based on node.js and selenium webdriver","verified":true,"imageUrl":"https://img.stackshare.io/service/4125/Ihf7jKaE.png","canonicalUrl":"/nightwatchjs","path":"/nightwatchjs","votes":11,"fans":331,"stacks":112,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774475140734":{"id":"101231774475140734","name":"Cucumber","slug":"cucumber","title":"Simple, human collaboration.","verified":false,"imageUrl":"https://img.stackshare.io/service/2544/jasVAxyJ.png","canonicalUrl":"/cucumber","path":"/cucumber","votes":35,"fans":1056,"stacks":823,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773410696721":{"id":"101231773410696721","name":"GitHub","slug":"github","title":"Powerful collaboration, review, and code management for open source and private development projects","verified":true,"imageUrl":"https://img.stackshare.io/service/27/default_869c34d29acc794d60ecdd5d2b5bfc042a80a4ec.jpg","canonicalUrl":"/github","path":"/github","votes":10238,"fans":236342,"stacks":238564,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774386883602":{"id":"101231774386883602","name":"GoCD","slug":"go-cd","title":"Open source continuous delivery tool allows for advanced workflow modeling and dependencies management.","verified":true,"imageUrl":"https://img.stackshare.io/service/2349/Z5QiBr7k_400x400.jpg","canonicalUrl":"/go-cd","path":"/go-cd","votes":206,"fans":382,"stacks":200,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773669807419":{"id":"101231773669807419","name":"Docker","slug":"docker","title":"Enterprise Container Platform for High-Velocity Innovation.","verified":true,"imageUrl":"https://img.stackshare.io/service/586/n4u37v9t_400x400.png","canonicalUrl":"/docker","path":"/docker","votes":3825,"fans":136502,"stacks":139512,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773920953695":{"id":"101231773920953695","name":"ExpressJS","slug":"expressjs","title":"Sinatra inspired web development framework for node.js -- insanely fast, flexible, and simple","verified":false,"imageUrl":"https://img.stackshare.io/service/1163/hashtag.png","canonicalUrl":"/expressjs","path":"/expressjs","votes":1591,"fans":24723,"stacks":24464,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773849098825":{"id":"101231773849098825","name":"React","slug":"react","title":"A JavaScript library for building user interfaces","verified":false,"imageUrl":"https://img.stackshare.io/service/1020/OYIaJ1KK.png","canonicalUrl":"/react","path":"/react","votes":3950,"fans":136321,"stacks":140506,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773853533403":{"id":"101231773853533403","name":"PostgreSQL","slug":"postgresql","title":"A powerful, open source object-relational database system","verified":false,"imageUrl":"https://img.stackshare.io/service/1028/ASOhU5xJ.png","canonicalUrl":"/postgresql","path":"/postgresql","votes":3467,"fans":80018,"stacks":81406,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231774063724150.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:102368529103552458","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231774063724150.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774063724150.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231774063724150.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231778053837910.alternativeTools({\"first\":8}).edges.0":{"node":{"type":"id","generated":false,"id":"Tool:101231774063724150","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231777195803716":{"id":"101231777195803716","path":"/testcafe","slug":"testcafe","title":"A Node.js tool to automate end-to-end web testing","votes":20,"following":false,"followers":{"type":"id","generated":true,"id":"$Tool:101231777195803716.followers","typename":"UserConnection"},"stacks":139,"githubForksCount":664,"imageUrl":"https://img.stackshare.io/service/7532/W2FwS-Ry_400x400.jpg","thumbRetinaUrl":"https://img.stackshare.io/service/7532/thumb_retina_W2FwS-Ry_400x400.jpg","name":"TestCafe","description":"It is a pure node.js end-to-end solution for testing web apps. It takes care of all the stages: starting browsers, running tests, gathering test results and generating reports.","contactEnabled":false,"contactButtonText":"Run TestCafe tests on Sauce Labs","contactFlow":{"type":"json","json":{"links":[{"url":"https://saucelabs.com/platform/automation-tools/testcafe?utm_source=paid&utm_medium=stackshare&utm_campaign=button","type":"website"}],"steps":["direct_link"]}},"pros":{"type":"id","generated":true,"id":"$Tool:101231777195803716.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231777195803716.cons","typename":"ReasonConnection"},"verified":false,"canonicalUrl":"/testcafe","fans":304,"followContext":null,"__typename":"Tool","stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231777195803716.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231777195803716.followers":{"count":253,"__typename":"UserConnection"},"Reason:102892603754145875":{"id":"102892603754145875","upvoted":false,"upvotesCount":6,"text":"Cross-browser testing","__typename":"Reason"},"$Tool:101231777195803716.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:102892603754145875","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102892618158043443":{"id":"102892618158043443","upvoted":false,"upvotesCount":3,"text":"Open source","__typename":"Reason"},"$Tool:101231777195803716.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:102892618158043443","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103058912236143016":{"id":"103058912236143016","upvoted":false,"upvotesCount":3,"text":"Easy setup/installation","__typename":"Reason"},"$Tool:101231777195803716.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:103058912236143016","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103058917315311645":{"id":"103058917315311645","upvoted":false,"upvotesCount":3,"text":"Built in waits","__typename":"Reason"},"$Tool:101231777195803716.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:103058917315311645","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103278625003525404":{"id":"103278625003525404","upvoted":false,"upvotesCount":2,"text":"Supports Devices without extra software/package","__typename":"Reason"},"$Tool:101231777195803716.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:103278625003525404","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103058915207715174":{"id":"103058915207715174","upvoted":false,"upvotesCount":2,"text":"UI End to End testing","__typename":"Reason"},"$Tool:101231777195803716.pros.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:103058915207715174","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103278617917629623":{"id":"103278617917629623","upvoted":false,"upvotesCount":1,"text":"Both client and server side debug","__typename":"Reason"},"$Tool:101231777195803716.pros.edges.6":{"node":{"type":"id","generated":false,"id":"Reason:103278617917629623","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231777195803716.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231777195803716.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231777195803716.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231777195803716.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231777195803716.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231777195803716.pros.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231777195803716.pros.edges.5","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231777195803716.pros.edges.6","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:103443161291012183":{"id":"103443161291012183","upvoted":false,"upvotesCount":8,"text":"No longer free","__typename":"Reason"},"$Tool:101231777195803716.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:103443161291012183","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231777195803716.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231777195803716.cons.edges.0","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"User:107881572338039651":{"id":"107881572338039651","username":"mdwahidakbar","title":null,"companyName":null,"imageUrl":"https://img.stackshare.io/user/1144480/default_11ba7995365dda0327eb95b7ada3ab7a6815efcf.jpg","thumbUrl":"https://img.stackshare.io/user/1144480/thumb_11ba7995365dda0327eb95b7ada3ab7a6815efcf.jpg","displayName":"Wahid Akbar","__typename":"User"},"StackDecision:107881771660118243":{"user":{"type":"id","generated":false,"id":"User:107881572338039651","typename":"User"},"company":null,"link":null,"publicId":"107881771660118243","publishedAt":"2022-03-01T14:33:17Z","id":"107881771660118243","htmlContent":"<p>What tools will be a good fit for the <span class=\"tool\">AngularJS</span> application? I am experienced in <span class=\"tool\">Selenium</span> WebDriver with <span class=\"tool\">Java</span>. Any suggestion for Selenium or <span class=\"tool\">TestCafe</span>?</p>","viewCount":28872,"upvotesCount":2,"services":[{"type":"id","generated":false,"id":"Tool:101231777195803716","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773838011785","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774063724150","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773848354670","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"Tool:101231773848354670":{"id":"101231773848354670","name":"AngularJS","slug":"angularjs","title":"Superheroic JavaScript MVW Framework","verified":false,"imageUrl":"https://img.stackshare.io/service/1019/square.png","canonicalUrl":"/angularjs","path":"/angularjs","votes":5234,"fans":50047,"stacks":56533,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231777195803716.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:107881771660118243","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231777195803716.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231777195803716.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231778053837910.alternativeTools({\"first\":8}).edges.1":{"node":{"type":"id","generated":false,"id":"Tool:101231777195803716","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231777203892267":{"id":"101231777203892267","path":"/puppeteer","slug":"puppeteer","title":"Headless Chrome Node API","votes":25,"following":false,"followers":{"type":"id","generated":true,"id":"$Tool:101231777203892267.followers","typename":"UserConnection"},"stacks":367,"githubForksCount":null,"imageUrl":"https://img.stackshare.io/service/7553/puppeteer.png","thumbRetinaUrl":"https://img.stackshare.io/service/7553/thumb_retina_puppeteer.png","name":"Puppeteer","description":"Puppeteer is a Node library which provides a high-level API to control headless Chrome over the DevTools Protocol. It can also be configured to use full (non-headless) Chrome.","contactEnabled":true,"contactButtonText":"Run Puppeteer tests with Sauce Labs","contactFlow":{"type":"json","json":{"links":[{"url":"https://saucelabs.com/platform/automation-tools?utm_source=paid&utm_medium=stackshare&utm_campaign=button","type":"website"}],"steps":["direct_link"]}},"pros":{"type":"id","generated":true,"id":"$Tool:101231777203892267.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231777203892267.cons","typename":"ReasonConnection"},"verified":false,"canonicalUrl":"/puppeteer","fans":685,"followContext":null,"__typename":"Tool","stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231777203892267.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231777203892267.followers":{"count":538,"__typename":"UserConnection"},"Reason:101978469980103372":{"id":"101978469980103372","upvoted":false,"upvotesCount":10,"text":"Scriptable web browser","__typename":"Reason"},"$Tool:101231777203892267.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978469980103372","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469979596596":{"id":"101978469979596596","upvoted":false,"upvotesCount":9,"text":"Very well documented","__typename":"Reason"},"$Tool:101231777203892267.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978469979596596","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103819299056353541":{"id":"103819299056353541","upvoted":false,"upvotesCount":6,"text":"Promise based","__typename":"Reason"},"$Tool:101231777203892267.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:103819299056353541","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231777203892267.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231777203892267.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231777203892267.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231777203892267.pros.edges.2","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:103498871157627558":{"id":"103498871157627558","upvoted":false,"upvotesCount":10,"text":"Chrome only","__typename":"Reason"},"$Tool:101231777203892267.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:103498871157627558","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231777203892267.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231777203892267.cons.edges.0","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"User:105119979793277600":{"id":"105119979793277600","username":"razielron","title":"Automation Engineer","companyName":"Tipalti","imageUrl":"https://img.stackshare.io/user/778729/default_ff7a3cb161dc8154d7753cefe654c1df323c3f81.jpg","thumbUrl":"https://img.stackshare.io/user/778729/thumb_ff7a3cb161dc8154d7753cefe654c1df323c3f81.jpg","displayName":"Raziel Alron","__typename":"User"},"StackDecision:105355066178231010":{"user":{"type":"id","generated":false,"id":"User:105119979793277600","typename":"User"},"company":null,"link":null,"publicId":"105355066178231010","publishedAt":"2020-12-10T08:58:51Z","id":"105355066178231010","htmlContent":"<p>Currently, we are using <span class=\"tool\">Protractor</span> in our project.\nSince Protractor isn't updated anymore, we are looking for a new tool.\nThe strongest suggestions are <span class=\"tool\">WebdriverIO</span> or <span class=\"tool\">Puppeteer</span>.\nPlease help me figure out what tool would make the transition fastest and easiest.\nPlease note that Protractor uses its own locator system, and we want the switch to be as simple as possible.\nThank you!</p>","viewCount":297619,"upvotesCount":7,"services":[{"type":"id","generated":false,"id":"Tool:101231777203892267","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775417891499","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774156792433","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"Tool:101231775417891499":{"id":"101231775417891499","name":"WebdriverIO","slug":"webdriverio","title":"Webdriver/Selenium 2.0 JavaScript bindings for Node.js","verified":false,"imageUrl":"https://img.stackshare.io/service/4185/webdriver.io.png","canonicalUrl":"/webdriverio","path":"/webdriverio","votes":39,"fans":529,"stacks":227,"following":false,"followContext":null,"__typename":"Tool","followers":{"type":"id","generated":true,"id":"$Tool:101231775417891499.followers","typename":"UserConnection"},"githubForksCount":2207,"thumbRetinaUrl":"https://img.stackshare.io/service/4185/thumb_retina_webdriver.io.png","description":"WebdriverIO lets you control a browser or a mobile application with just a few lines of code. Your test code will look simple, concise and easy to read.","contactEnabled":false,"contactButtonText":null,"contactFlow":{"type":"json","json":{}},"pros":{"type":"id","generated":true,"id":"$Tool:101231775417891499.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231775417891499.cons","typename":"ReasonConnection"},"stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231775417891499.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"Tool:101231774156792433":{"id":"101231774156792433","name":"Protractor","slug":"protractor","title":"End-to-end test framework for Angular and AngularJS applications","verified":false,"imageUrl":"https://img.stackshare.io/service/1754/protractor-logo1.png","canonicalUrl":"/protractor","path":"/protractor","votes":33,"fans":660,"stacks":457,"following":false,"followContext":null,"__typename":"Tool","followers":{"type":"id","generated":true,"id":"$Tool:101231774156792433.followers","typename":"UserConnection"},"githubForksCount":2389,"thumbRetinaUrl":"https://img.stackshare.io/service/1754/thumb_retina_protractor-logo1.png","description":"Protractor is an end-to-end test framework for Angular and AngularJS applications. Protractor runs tests against your application running in a real browser, interacting with it as a user would.","contactEnabled":false,"contactButtonText":null,"contactFlow":{"type":"json","json":{}},"pros":{"type":"id","generated":true,"id":"$Tool:101231774156792433.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231774156792433.cons","typename":"ReasonConnection"},"stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231774156792433.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231777203892267.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:105355066178231010","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:104879867062453721":{"id":"104879867062453721","username":"bertocchirenata","title":null,"companyName":null,"imageUrl":"https://img.stackshare.io/user/734931/default_5f28e0751633e4a4d784122b769d6cfd0e3ab2a8.jpg","thumbUrl":"https://img.stackshare.io/user/734931/thumb_5f28e0751633e4a4d784122b769d6cfd0e3ab2a8.jpg","displayName":"Renata Bertocchi","__typename":"User"},"StackDecision:104924821082347053":{"user":{"type":"id","generated":false,"id":"User:104879867062453721","typename":"User"},"company":null,"link":null,"publicId":"104924821082347053","publishedAt":"2020-09-25T09:21:51Z","id":"104924821082347053","htmlContent":"<p>I work in a company building web apps with <span class=\"tool\">AngularJS</span>. I started using <span class=\"tool\">Selenium</span> for tests automation, as I am more familiar with <span class=\"tool\">Python</span>. However, I found some difficulties, like the impossibility of using IDs and fixed lists of classes, ending up with using xpaths most, which unfortunately could change with fixes and modifications in the code.</p>\n\n<p>So, I started using <span class=\"tool\">Puppeteer</span>, but I am still learning. It seems easier to find elements on the webpage, even if the creation and managing of arrays of elements seem to be a little bit more complicated than in Selenium, but it could be also due to my poor knowledge of <span class=\"tool\">JavaScript</span>.</p>\n\n<p>Any comments on this comparison and also on comparisons with similar tools are welcome! :)</p>","viewCount":154731,"upvotesCount":5,"services":[{"type":"id","generated":false,"id":"Tool:101231773939333405","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231777203892267","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773837179153","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774063724150","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773848354670","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"Tool:101231773837179153":{"id":"101231773837179153","name":"Python","slug":"python","title":"A clear and powerful object-oriented programming language, comparable to Perl, Ruby, Scheme, or Java.","verified":false,"imageUrl":"https://img.stackshare.io/service/993/pUBY5pVj.png","canonicalUrl":"/python","path":"/python","votes":6656,"fans":189543,"stacks":191157,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231777203892267.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:104924821082347053","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231777203892267.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231777203892267.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231777203892267.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231778053837910.alternativeTools({\"first\":8}).edges.2":{"node":{"type":"id","generated":false,"id":"Tool:101231777203892267","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231775417891499.followers":{"count":468,"__typename":"UserConnection"},"Reason:103498870715497407":{"id":"103498870715497407","upvoted":false,"upvotesCount":11,"text":"Various integrations to vendors like Sauce Labs","__typename":"Reason"},"$Tool:101231775417891499.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:103498870715497407","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103752931526514798":{"id":"103752931526514798","upvoted":false,"upvotesCount":9,"text":"Open Source","__typename":"Reason"},"$Tool:101231775417891499.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:103752931526514798","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103498868849012001":{"id":"103498868849012001","upvoted":false,"upvotesCount":8,"text":"Great community","__typename":"Reason"},"$Tool:101231775417891499.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:103498868849012001","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103498868328064782":{"id":"103498868328064782","upvoted":false,"upvotesCount":7,"text":"Easy to setup","__typename":"Reason"},"$Tool:101231775417891499.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:103498868328064782","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:105391531554160554":{"id":"105391531554160554","upvoted":false,"upvotesCount":4,"text":"Best solution for broad browser support","__typename":"Reason"},"$Tool:101231775417891499.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:105391531554160554","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231775417891499.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231775417891499.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775417891499.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775417891499.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775417891499.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775417891499.pros.edges.4","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:103996802579773196":{"id":"103996802579773196","upvoted":false,"upvotesCount":8,"text":"High maintenance","__typename":"Reason"},"$Tool:101231775417891499.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:103996802579773196","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231775417891499.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231775417891499.cons.edges.0","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"$Tool:101231775417891499.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:105355066178231010","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:102665425845725085":{"id":"102665425845725085","username":"Kignuf","title":"QA Engineer Freelance","companyName":"happn","imageUrl":"https://img.stackshare.io/user/305483/default_7513a9a73e477bd836927cebf8a080e9fdf4bd3d.jpeg","thumbUrl":"https://img.stackshare.io/user/305483/thumb_7513a9a73e477bd836927cebf8a080e9fdf4bd3d.jpeg","displayName":"Kevin Roulleau","__typename":"User"},"StackDecision:102666313666904329":{"user":{"type":"id","generated":false,"id":"User:102665425845725085","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:102666313666904329.company","typename":"Company"},"link":null,"publicId":"102666313666904329","publishedAt":"2019-08-23T12:33:43Z","id":"102666313666904329","htmlContent":"<p>I chose <span class=\"tool\">WebdriverIO</span> and <span class=\"tool\">Appium</span> to implement a E2E tests solution on a native mobile app. <span class=\"tool\">WebdriverIO</span> goes well beyond just implementing the <span class=\"tool\">Selenium</span> / <span class=\"tool\">Appium</span> protocol and allows to run tests in parallel out of the box. <span class=\"tool\">Appium</span> has the big advantage of supporting iOS and Android platforms, so the test codebase and tools are exactly the same, which greatly reduces the learning curve and implementation time.</p>","viewCount":213591,"upvotesCount":5,"services":[{"type":"id","generated":false,"id":"Tool:101231775417891499","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774630175703","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774063724150","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:102666313666904329.company":{"imageUrl":"https://img.stackshare.io/company/17805/default_d4e176ed68444d0cf1a55d487443508d68b214c1.png","thumbUrl":"https://img.stackshare.io/company/17805/thumb_d4e176ed68444d0cf1a55d487443508d68b214c1.png","name":"happn","path":"/companies/happn","features":[],"__typename":"Company"},"Tool:101231774630175703":{"id":"101231774630175703","name":"Appium","slug":"appium","title":"Automation for iOS and Android Apps","verified":true,"imageUrl":"https://img.stackshare.io/service/2855/0KVJyYNC_400x400.jpg","canonicalUrl":"/appium","path":"/appium","votes":28,"fans":624,"stacks":478,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231775417891499.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:102666313666904329","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231775417891499.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231775417891499.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231775417891499.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231778053837910.alternativeTools({\"first\":8}).edges.3":{"node":{"type":"id","generated":false,"id":"Tool:101231775417891499","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231773770920543":{"id":"101231773770920543","path":"/jest","slug":"jest","title":"Painless JavaScript Unit Testing","votes":169,"following":false,"followers":{"type":"id","generated":true,"id":"$Tool:101231773770920543.followers","typename":"UserConnection"},"stacks":3736,"githubForksCount":6161,"imageUrl":"https://img.stackshare.io/service/830/jest.png","thumbRetinaUrl":"https://img.stackshare.io/service/830/thumb_retina_jest.png","name":"Jest","description":"Jest provides you with multiple layers on top of Jasmine.","contactEnabled":true,"contactButtonText":"Check out Private StackShare for Teams","contactFlow":{"type":"json","json":{"links":[{"url":"https://stackshare.io/private","type":"website"}],"steps":["direct_link"]}},"pros":{"type":"id","generated":true,"id":"$Tool:101231773770920543.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231773770920543.cons","typename":"ReasonConnection"},"verified":false,"canonicalUrl":"/jest","fans":3998,"followContext":null,"__typename":"Tool","stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231773770920543.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231773770920543.followers":{"count":2828,"__typename":"UserConnection"},"Reason:101978468154845335":{"id":"101978468154845335","upvoted":false,"upvotesCount":35,"text":"Open source","__typename":"Reason"},"$Tool:101231773770920543.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978468154845335","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468968464781":{"id":"101978468968464781","upvoted":false,"upvotesCount":31,"text":"Mock by default makes testing much simpler","__typename":"Reason"},"$Tool:101231773770920543.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978468968464781","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469129482418":{"id":"101978469129482418","upvoted":false,"upvotesCount":22,"text":"Testing React Native Apps","__typename":"Reason"},"$Tool:101231773770920543.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978469129482418","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469723226705":{"id":"101978469723226705","upvoted":false,"upvotesCount":19,"text":"Parallel test running","__typename":"Reason"},"$Tool:101231773770920543.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:101978469723226705","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469646195800":{"id":"101978469646195800","upvoted":false,"upvotesCount":15,"text":"Fast","__typename":"Reason"},"$Tool:101231773770920543.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:101978469646195800","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469448895901":{"id":"101978469448895901","upvoted":false,"upvotesCount":13,"text":"Bundled with JSDOM to enable DOM testing","__typename":"Reason"},"$Tool:101231773770920543.pros.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:101978469448895901","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469110557960":{"id":"101978469110557960","upvoted":false,"upvotesCount":8,"text":"Mock by default screws up your classes, breaking tests","__typename":"Reason"},"$Tool:101231773770920543.pros.edges.6":{"node":{"type":"id","generated":false,"id":"Reason:101978469110557960","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469933029661":{"id":"101978469933029661","upvoted":false,"upvotesCount":7,"text":"Out of the box code coverage","__typename":"Reason"},"$Tool:101231773770920543.pros.edges.7":{"node":{"type":"id","generated":false,"id":"Reason:101978469933029661","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469646006587":{"id":"101978469646006587","upvoted":false,"upvotesCount":6,"text":"Promise support","__typename":"Reason"},"$Tool:101231773770920543.pros.edges.8":{"node":{"type":"id","generated":false,"id":"Reason:101978469646006587","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469643879964":{"id":"101978469643879964","upvoted":false,"upvotesCount":6,"text":"One stop shop for unit testing","__typename":"Reason"},"$Tool:101231773770920543.pros.edges.9":{"node":{"type":"id","generated":false,"id":"Reason:101978469643879964","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102128485926685323":{"id":"102128485926685323","upvoted":false,"upvotesCount":3,"text":"Great documentation","__typename":"Reason"},"$Tool:101231773770920543.pros.edges.10":{"node":{"type":"id","generated":false,"id":"Reason:102128485926685323","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470124952873":{"id":"101978470124952873","upvoted":false,"upvotesCount":2,"text":"Assert Library Included","__typename":"Reason"},"$Tool:101231773770920543.pros.edges.11":{"node":{"type":"id","generated":false,"id":"Reason:101978470124952873","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469974115038":{"id":"101978469974115038","upvoted":false,"upvotesCount":1,"text":"Built in watch option with interactive filtering menu","__typename":"Reason"},"$Tool:101231773770920543.pros.edges.12":{"node":{"type":"id","generated":false,"id":"Reason:101978469974115038","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:105987020881752875":{"id":"105987020881752875","upvoted":false,"upvotesCount":1,"text":"Preset support","__typename":"Reason"},"$Tool:101231773770920543.pros.edges.13":{"node":{"type":"id","generated":false,"id":"Reason:105987020881752875","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:107739687346316734":{"id":"107739687346316734","upvoted":false,"upvotesCount":0,"text":"Karma","__typename":"Reason"},"$Tool:101231773770920543.pros.edges.14":{"node":{"type":"id","generated":false,"id":"Reason:107739687346316734","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102404644542974094":{"id":"102404644542974094","upvoted":false,"upvotesCount":0,"text":"Can be used for BDD","__typename":"Reason"},"$Tool:101231773770920543.pros.edges.15":{"node":{"type":"id","generated":false,"id":"Reason:102404644542974094","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773770920543.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773770920543.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.pros.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.pros.edges.5","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.pros.edges.6","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.pros.edges.7","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.pros.edges.8","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.pros.edges.9","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.pros.edges.10","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.pros.edges.11","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.pros.edges.12","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.pros.edges.13","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.pros.edges.14","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.pros.edges.15","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:104406335274286021":{"id":"104406335274286021","upvoted":false,"upvotesCount":3,"text":"Ambiguous configuration","__typename":"Reason"},"$Tool:101231773770920543.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:104406335274286021","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104406335549925757":{"id":"104406335549925757","upvoted":false,"upvotesCount":3,"text":"Difficult","__typename":"Reason"},"$Tool:101231773770920543.cons.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:104406335549925757","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104406337808325693":{"id":"104406337808325693","upvoted":false,"upvotesCount":3,"text":"Documentation","__typename":"Reason"},"$Tool:101231773770920543.cons.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:104406337808325693","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102045057410621649":{"id":"102045057410621649","upvoted":false,"upvotesCount":2,"text":"Many bugs still not fixed months/years after reporting","__typename":"Reason"},"$Tool:101231773770920543.cons.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:102045057410621649","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102022593588248387":{"id":"102022593588248387","upvoted":false,"upvotesCount":2,"text":"Multiple error messages for same error","__typename":"Reason"},"$Tool:101231773770920543.cons.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:102022593588248387","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102022595356570254":{"id":"102022595356570254","upvoted":false,"upvotesCount":2,"text":"Difficult to run single test/describe/file","__typename":"Reason"},"$Tool:101231773770920543.cons.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:102022595356570254","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104406336023748177":{"id":"104406336023748177","upvoted":false,"upvotesCount":2,"text":"Ambiguous","__typename":"Reason"},"$Tool:101231773770920543.cons.edges.6":{"node":{"type":"id","generated":false,"id":"Reason:104406336023748177","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104406336831106256":{"id":"104406336831106256","upvoted":false,"upvotesCount":2,"text":"Bugged","__typename":"Reason"},"$Tool:101231773770920543.cons.edges.7":{"node":{"type":"id","generated":false,"id":"Reason:104406336831106256","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:108676209141131858":{"id":"108676209141131858","upvoted":false,"upvotesCount":1,"text":"Slow","__typename":"Reason"},"$Tool:101231773770920543.cons.edges.8":{"node":{"type":"id","generated":false,"id":"Reason:108676209141131858","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:106377476401714695":{"id":"106377476401714695","upvoted":false,"upvotesCount":1,"text":"Reporter is too general","__typename":"Reason"},"$Tool:101231773770920543.cons.edges.9":{"node":{"type":"id","generated":false,"id":"Reason:106377476401714695","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102045059889686606":{"id":"102045059889686606","upvoted":false,"upvotesCount":1,"text":"BeforeAll timing out makes all passing tests fail","__typename":"Reason"},"$Tool:101231773770920543.cons.edges.10":{"node":{"type":"id","generated":false,"id":"Reason:102045059889686606","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104406336601917806":{"id":"104406336601917806","upvoted":false,"upvotesCount":1,"text":"Unstable","__typename":"Reason"},"$Tool:101231773770920543.cons.edges.11":{"node":{"type":"id","generated":false,"id":"Reason:104406336601917806","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104406336260758842":{"id":"104406336260758842","upvoted":false,"upvotesCount":1,"text":"Bad docs","__typename":"Reason"},"$Tool:101231773770920543.cons.edges.12":{"node":{"type":"id","generated":false,"id":"Reason:104406336260758842","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102045056332737164":{"id":"102045056332737164","upvoted":false,"upvotesCount":1,"text":"Still does't support .mjs files natively","__typename":"Reason"},"$Tool:101231773770920543.cons.edges.13":{"node":{"type":"id","generated":false,"id":"Reason:102045056332737164","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102045058568569273":{"id":"102045058568569273","upvoted":false,"upvotesCount":1,"text":"Can't fail beforeAll to abort tests","__typename":"Reason"},"$Tool:101231773770920543.cons.edges.14":{"node":{"type":"id","generated":false,"id":"Reason:102045058568569273","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102022599093865600":{"id":"102022599093865600","upvoted":false,"upvotesCount":0,"text":"Interaction with watch mode on terminal","__typename":"Reason"},"$Tool:101231773770920543.cons.edges.15":{"node":{"type":"id","generated":false,"id":"Reason:102022599093865600","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773770920543.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773770920543.cons.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.cons.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.cons.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.cons.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.cons.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.cons.edges.5","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.cons.edges.6","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.cons.edges.7","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.cons.edges.8","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.cons.edges.9","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.cons.edges.10","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.cons.edges.11","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.cons.edges.12","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.cons.edges.13","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.cons.edges.14","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.cons.edges.15","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"User:101232095756301757":{"id":"101232095756301757","username":"z00b","title":"CTO","companyName":"CircleCI","imageUrl":"https://img.stackshare.io/user/204369/default_792143df1db9a7c7f0ab622fd2d884d160f753fc.jpeg","thumbUrl":"https://img.stackshare.io/user/204369/thumb_792143df1db9a7c7f0ab622fd2d884d160f753fc.jpeg","displayName":"Robert Zuber","__typename":"User"},"StackDecision:102493621731402213":{"user":{"type":"id","generated":false,"id":"User:101232095756301757","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:102493621731402213.company","typename":"Company"},"link":{"type":"id","generated":true,"id":"$StackDecision:102493621731402213.link","typename":"Link"},"publicId":"102493621731402213","publishedAt":"2019-07-24T00:35:51Z","id":"102493621731402213","htmlContent":"<p>We are in the process of adopting <span class=\"tool\">Next.js</span> as our <span class=\"tool\">React</span> framework and using <span class=\"tool\">Storybook</span> to help build our React components in isolation. This new part of our frontend is written in <span class=\"tool\">TypeScript</span>, and we use <span class=\"tool\">Emotion</span> for CSS/styling. For delivering data, we use <span class=\"tool\">GraphQL</span> and <span class=\"tool\">Apollo</span>. <span class=\"tool\">Jest</span>, <span class=\"tool\">Percy</span>, and <span class=\"tool\">Cypress</span> are used for testing.</p>","viewCount":1079151,"upvotesCount":17,"services":[{"type":"id","generated":false,"id":"Tool:101231776411419473","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773849098825","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231778058112934","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774098455524","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231777836785925","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775212866992","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776161934711","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773770920543","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231778220642339","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231778053837910","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:102493621731402213.company":{"imageUrl":"https://img.stackshare.io/company/59/default_1d293d3c2cd84b0d02876e299a11930bea63b22f.jpg","thumbUrl":"https://img.stackshare.io/company/59/thumb_1d293d3c2cd84b0d02876e299a11930bea63b22f.jpg","name":"CircleCI","path":"/companies/circleci","features":[],"__typename":"Company"},"$StackDecision:102493621731402213.link":{"url":"https://stackshare.io/circleci/update-how-circleci-processes-over-30-million-builds-per-month","title":"Update: How CircleCI Processes Over 30 Million Builds Per Month - CircleCI Tech Stack","__typename":"Link"},"Tool:101231776411419473":{"id":"101231776411419473","name":"Next.js","slug":"next-js","title":"A small framework for server-rendered universal JavaScript apps ","verified":false,"imageUrl":"https://img.stackshare.io/service/5936/nextjs.png","canonicalUrl":"/next-js","path":"/next-js","votes":284,"fans":4722,"stacks":3968,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231778058112934":{"id":"101231778058112934","name":"Storybook","slug":"storybook","title":"Build bulletproof UI components faster","verified":false,"imageUrl":"https://img.stackshare.io/service/9240/sOct-Txm_400x400.png","canonicalUrl":"/storybook","path":"/storybook","votes":0,"fans":847,"stacks":877,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774098455524":{"id":"101231774098455524","name":"TypeScript","slug":"typescript","title":"A superset of JavaScript that compiles to clean JavaScript output","verified":false,"imageUrl":"https://img.stackshare.io/service/1612/bynNY5dJ.jpg","canonicalUrl":"/typescript","path":"/typescript","votes":473,"fans":67049,"stacks":69492,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231777836785925":{"id":"101231777836785925","name":"Emotion","slug":"emotion","title":"The Next Generation of CSS in JS","verified":false,"imageUrl":"https://img.stackshare.io/service/8770/emotion-a76dfa0d18a0536af9e917cdb8f873b9-44576.png","canonicalUrl":"/emotion","path":"/emotion","votes":3,"fans":296,"stacks":251,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231775212866992":{"id":"101231775212866992","name":"GraphQL","slug":"graphql","title":"A data query language and runtime","verified":false,"imageUrl":"https://img.stackshare.io/service/3820/12972006.png","canonicalUrl":"/graphql","path":"/graphql","votes":299,"fans":28750,"stacks":28242,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231776161934711":{"id":"101231776161934711","name":"Apollo","slug":"apollo","title":"GraphQL server for Express, Connect, Hapi, Koa and more","verified":false,"imageUrl":"https://img.stackshare.io/service/5508/CyUH653y.png","canonicalUrl":"/apollo","path":"/apollo","votes":22,"fans":2219,"stacks":2049,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231778220642339":{"id":"101231778220642339","name":"Percy","slug":"percy","title":"Add visual reviews to your GitHub pull requests, helping your team spot UI bugs quickly and review visual changes easily","verified":true,"imageUrl":"https://img.stackshare.io/service/9635/ZLa0MjPw_400x400.jpg","canonicalUrl":"/percy","path":"/percy","votes":5,"fans":201,"stacks":100,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231773770920543.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:102493621731402213","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:103535564320167497":{"id":"103535564320167497","username":"dane-thomas","title":"","companyName":"","imageUrl":"https://img.stackshare.io/user/359043/default_8f8f63e6393b7a80315906c99d8ef3f22260b121.jpeg","thumbUrl":"https://img.stackshare.io/user/359043/thumb_8f8f63e6393b7a80315906c99d8ef3f22260b121.jpeg","displayName":"Dane Thomas","__typename":"User"},"StackDecision:103614815481131824":{"user":{"type":"id","generated":false,"id":"User:103535564320167497","typename":"User"},"company":null,"link":null,"publicId":"103614815481131824","publishedAt":"2020-02-07T00:50:12Z","id":"103614815481131824","htmlContent":"<p>As we all know testing is an important part of any application. To assist with our testing we are going to use both <span class=\"tool\">Cypress</span> and <span class=\"tool\">Jest</span>. We feel these tools complement each other and will help us get good coverage of our code. We will use Cypress for our end to end testing as we've found it quite user friendly. Jest will be used for our unit tests because we've seen how many larger companies use it with great success. </p>","viewCount":501882,"upvotesCount":7,"services":[{"type":"id","generated":false,"id":"Tool:101231778053837910","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773770920543","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$Tool:101231773770920543.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:103614815481131824","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231773770920543.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773770920543.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231773770920543.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231778053837910.alternativeTools({\"first\":8}).edges.4":{"node":{"type":"id","generated":false,"id":"Tool:101231773770920543","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231774156792433.followers":{"count":526,"__typename":"UserConnection"},"Reason:101978469716917815":{"id":"101978469716917815","upvoted":false,"upvotesCount":9,"text":"Easy setup","__typename":"Reason"},"$Tool:101231774156792433.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978469716917815","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469717136133":{"id":"101978469717136133","upvoted":false,"upvotesCount":8,"text":"Quick tests implementation","__typename":"Reason"},"$Tool:101231774156792433.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978469717136133","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103748303675942394":{"id":"103748303675942394","upvoted":false,"upvotesCount":6,"text":"Flexible","__typename":"Reason"},"$Tool:101231774156792433.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:103748303675942394","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103748302046994515":{"id":"103748302046994515","upvoted":false,"upvotesCount":5,"text":"Open source","__typename":"Reason"},"$Tool:101231774156792433.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:103748302046994515","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103748302735878440":{"id":"103748302735878440","upvoted":false,"upvotesCount":5,"text":"Promise support","__typename":"Reason"},"$Tool:101231774156792433.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:103748302735878440","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231774156792433.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774156792433.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774156792433.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774156792433.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774156792433.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774156792433.pros.edges.4","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:105435837942914736":{"id":"105435837942914736","upvoted":false,"upvotesCount":4,"text":"Limited","__typename":"Reason"},"$Tool:101231774156792433.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:105435837942914736","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231774156792433.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774156792433.cons.edges.0","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"$Tool:101231774156792433.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:105355066178231010","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:103679945939036463":{"id":"103679945939036463","username":"chaymankala","title":"Tech Lead","companyName":"KIOT Innovations","imageUrl":"https://img.stackshare.io/user/390456/default_3d72e68d4210254ee3c1331f76c2cbe1b76739cc.jpeg","thumbUrl":"https://img.stackshare.io/user/390456/thumb_3d72e68d4210254ee3c1331f76c2cbe1b76739cc.jpeg","displayName":"Sai Chaitanya Mankala","__typename":"User"},"StackDecision:106624151876943844":{"user":{"type":"id","generated":false,"id":"User:103679945939036463","typename":"User"},"company":null,"link":null,"publicId":"106624151876943844","publishedAt":"2021-07-22T12:04:01Z","id":"106624151876943844","htmlContent":"<p><span class=\"tool\">Protractor</span> or <span class=\"tool\">Cypress</span> for <span class=\"tool\">ionic-angular</span>?</p>\n\n<p>We have a huge ionic-angular app with almost 100 pages and 10+ injectables. There are no tests written yet. Before we start, we need some suggestions about the framework.\nWould you suggest Cypress or Angular's Protractor with <span class=\"tool\">Jasmine</span> / <span class=\"tool\">Karma</span> for a heavy ionic app with Angular?</p>","viewCount":167785,"upvotesCount":6,"services":[{"type":"id","generated":false,"id":"Tool:101231774019104895","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773771560699","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:104666480431148580","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231778053837910","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774156792433","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"Tool:101231774019104895":{"id":"101231774019104895","name":"Karma","slug":"karma-runner","title":"Spectacular Test Runner for JavaScript","verified":false,"imageUrl":"https://img.stackshare.io/service/1420/TidYGd6a.png","canonicalUrl":"/karma-runner","path":"/karma-runner","votes":181,"fans":833,"stacks":824,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773771560699":{"id":"101231773771560699","name":"Jasmine","slug":"jasmine","title":"DOM-less simple JavaScript testing framework","verified":false,"imageUrl":"https://img.stackshare.io/service/831/7c0b595409af531b9cdeb07f8c513e8b.png","canonicalUrl":"/jasmine","path":"/jasmine","votes":186,"fans":1751,"stacks":1195,"following":false,"followContext":null,"__typename":"Tool"},"Tool:104666480431148580":{"id":"104666480431148580","name":"ionic-angular","slug":"npm-ionic-angular","title":"A powerful framework for building mobile and progressive web apps with JavaScript and Angular","verified":false,"imageUrl":"https://img.stackshare.io/package/17096/default_1dbf402c11ef653fcaedc84e608a244e30ebfb87.png","canonicalUrl":"/npm-ionic-angular","path":"/npm-ionic-angular","votes":0,"fans":12,"stacks":27,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231774156792433.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:106624151876943844","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231774156792433.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774156792433.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231774156792433.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231778053837910.alternativeTools({\"first\":8}).edges.5":{"node":{"type":"id","generated":false,"id":"Tool:101231774156792433","typename":"Tool"},"__typename":"ToolEdge"},"Tool:103990683823211085":{"id":"103990683823211085","path":"/juniper","slug":"juniper","title":"High-performance networking & cybersecurity solutions","votes":0,"following":false,"followers":{"type":"id","generated":true,"id":"$Tool:103990683823211085.followers","typename":"UserConnection"},"stacks":17,"githubForksCount":null,"imageUrl":"https://img.stackshare.io/service/12039/BQQfs9aH_400x400.jpg","thumbRetinaUrl":"https://img.stackshare.io/service/12039/thumb_retina_BQQfs9aH_400x400.jpg","name":"Juniper","description":"It provides high-performance networking & cybersecurity solutions to service providers, enterprise companies & public sector organizations.","contactEnabled":false,"contactButtonText":null,"contactFlow":{"type":"json","json":{}},"pros":{"type":"id","generated":true,"id":"$Tool:103990683823211085.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:103990683823211085.cons","typename":"ReasonConnection"},"stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:103990683823211085.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"},"__typename":"Tool"},"$Tool:103990683823211085.followers":{"count":15,"__typename":"UserConnection"},"$Tool:103990683823211085.pros":{"edges":[],"__typename":"ReasonConnection"},"$Tool:103990683823211085.cons":{"edges":[],"__typename":"ReasonConnection"},"$Tool:103990683823211085.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[],"__typename":"StackDecisionConnection"},"$Tool:101231778053837910.alternativeTools({\"first\":8}).edges.6":{"node":{"type":"id","generated":false,"id":"Tool:103990683823211085","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231773772085321":{"id":"101231773772085321","path":"/mocha","slug":"mocha","title":"Simple, flexible, fun javascript test framework for node.js & the browser","votes":430,"following":false,"followers":{"type":"id","generated":true,"id":"$Tool:101231773772085321.followers","typename":"UserConnection"},"stacks":3331,"githubForksCount":null,"imageUrl":"https://img.stackshare.io/service/832/mocha.png","thumbRetinaUrl":"https://img.stackshare.io/service/832/thumb_retina_mocha.png","name":"Mocha","description":"Mocha is a feature-rich JavaScript test framework running on node.js and the browser, making asynchronous testing simple and fun. Mocha tests run serially, allowing for flexible and accurate reporting, while mapping uncaught exceptions to the correct test cases. ","contactEnabled":false,"contactButtonText":null,"contactFlow":{"type":"json","json":{}},"pros":{"type":"id","generated":true,"id":"$Tool:101231773772085321.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231773772085321.cons","typename":"ReasonConnection"},"verified":false,"canonicalUrl":"/mocha","fans":3430,"followContext":null,"__typename":"Tool","stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231773772085321.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231773772085321.followers":{"count":2691,"__typename":"UserConnection"},"Reason:101978468154538899":{"id":"101978468154538899","upvoted":false,"upvotesCount":137,"text":"Open source","__typename":"Reason"},"$Tool:101231773772085321.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978468154538899","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468718175173":{"id":"101978468718175173","upvoted":false,"upvotesCount":102,"text":"Simple","__typename":"Reason"},"$Tool:101231773772085321.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978468718175173","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468154969143":{"id":"101978468154969143","upvoted":false,"upvotesCount":81,"text":"Promise support","__typename":"Reason"},"$Tool:101231773772085321.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978468154969143","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468961192048":{"id":"101978468961192048","upvoted":false,"upvotesCount":48,"text":"Flexible","__typename":"Reason"},"$Tool:101231773772085321.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:101978468961192048","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468155077008":{"id":"101978468155077008","upvoted":false,"upvotesCount":29,"text":" Easy to add support for Generators","__typename":"Reason"},"$Tool:101231773772085321.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:101978468155077008","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468973647594":{"id":"101978468973647594","upvoted":false,"upvotesCount":12,"text":"For browser and server testing","__typename":"Reason"},"$Tool:101231773772085321.pros.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:101978468973647594","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469800017848":{"id":"101978469800017848","upvoted":false,"upvotesCount":7,"text":"Curstom assertion libraries","__typename":"Reason"},"$Tool:101231773772085321.pros.edges.6":{"node":{"type":"id","generated":false,"id":"Reason:101978469800017848","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102429488290056135":{"id":"102429488290056135","upvoted":false,"upvotesCount":5,"text":"Works with Karma","__typename":"Reason"},"$Tool:101231773772085321.pros.edges.7":{"node":{"type":"id","generated":false,"id":"Reason:102429488290056135","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469434831219":{"id":"101978469434831219","upvoted":false,"upvotesCount":3,"text":"No other better tools","__typename":"Reason"},"$Tool:101231773772085321.pros.edges.8":{"node":{"type":"id","generated":false,"id":"Reason:101978469434831219","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104406331824811790":{"id":"104406331824811790","upvoted":false,"upvotesCount":1,"text":"Simple setup","__typename":"Reason"},"$Tool:101231773772085321.pros.edges.9":{"node":{"type":"id","generated":false,"id":"Reason:104406331824811790","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104207074724337439":{"id":"104207074724337439","upvoted":false,"upvotesCount":1,"text":"Works with saucelabs","__typename":"Reason"},"$Tool:101231773772085321.pros.edges.10":{"node":{"type":"id","generated":false,"id":"Reason:104207074724337439","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102429491854183488":{"id":"102429491854183488","upvoted":false,"upvotesCount":1,"text":"Lots of tutorials and help online","__typename":"Reason"},"$Tool:101231773772085321.pros.edges.11":{"node":{"type":"id","generated":false,"id":"Reason:102429491854183488","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:106377467575263230":{"id":"106377467575263230","upvoted":false,"upvotesCount":1,"text":"Default reporter is nice, clean, and itemized","__typename":"Reason"},"$Tool:101231773772085321.pros.edges.12":{"node":{"type":"id","generated":false,"id":"Reason:106377467575263230","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102429494000296504":{"id":"102429494000296504","upvoted":false,"upvotesCount":1,"text":"Works with BrowserStack","__typename":"Reason"},"$Tool:101231773772085321.pros.edges.13":{"node":{"type":"id","generated":false,"id":"Reason:102429494000296504","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104406332811036198":{"id":"104406332811036198","upvoted":false,"upvotesCount":1,"text":"Simple integration testing","__typename":"Reason"},"$Tool:101231773772085321.pros.edges.14":{"node":{"type":"id","generated":false,"id":"Reason:104406332811036198","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773772085321.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773772085321.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773772085321.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773772085321.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773772085321.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773772085321.pros.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773772085321.pros.edges.5","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773772085321.pros.edges.6","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773772085321.pros.edges.7","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773772085321.pros.edges.8","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773772085321.pros.edges.9","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773772085321.pros.edges.10","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773772085321.pros.edges.11","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773772085321.pros.edges.12","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773772085321.pros.edges.13","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773772085321.pros.edges.14","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:103492302072055923":{"id":"103492302072055923","upvoted":false,"upvotesCount":3,"text":"Cannot test a promisified functions without assertion","__typename":"Reason"},"$Tool:101231773772085321.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:103492302072055923","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104775215653534716":{"id":"104775215653534716","upvoted":false,"upvotesCount":2,"text":"No assertion count in results","__typename":"Reason"},"$Tool:101231773772085321.cons.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:104775215653534716","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:106377479442363225":{"id":"106377479442363225","upvoted":false,"upvotesCount":1,"text":"Not as many reporter options as Jest","__typename":"Reason"},"$Tool:101231773772085321.cons.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:106377479442363225","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773772085321.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773772085321.cons.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773772085321.cons.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773772085321.cons.edges.2","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"User:101232087493042818":{"id":"101232087493042818","username":"dschinkel","title":null,"companyName":null,"imageUrl":"https://img.stackshare.io/user/189559/default_202bedffe76a8829edab8cf71221f92f9da827c3.jpeg","thumbUrl":"https://img.stackshare.io/user/189559/thumb_202bedffe76a8829edab8cf71221f92f9da827c3.jpeg","displayName":"Dschinkel Schinkel","__typename":"User"},"StackDecision:101161951193130478":{"user":{"type":"id","generated":false,"id":"User:101232087493042818","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:101161951193130478.company","typename":"Company"},"link":null,"publicId":"101161951193130478","publishedAt":"2018-11-30T20:14:33Z","id":"101161951193130478","htmlContent":"<p>I use both mocha and Jest because:</p>\n\n<ul>\n<li><p>I don't care whether teams use Jest or Mocha. But jest is way too overhyped. Most devs are writing integration tests and think that it's so much better but frankly I don't write integration tests as the way to get both design feedback and confidence when I code. I adhere to the test pyramid, not ice cream cone or the dumb \"trophy\"</p></li>\n<li><p>I TDD, so I only ever use the \"API\" of test frameworks. I don't do a lot of integration tests for TDD and all the bells and whistles Jest provides you from the command-line I just don't need. And I certainly do not care about or touch Jest Snapshots, I despise them</p></li>\n<li><p>My tests are fast enough because I write isolated tests with TDD, so I don't run into performance issues. Example: I write my tests in a way that I can run 300 tests in literally 1 second with mocha. So the Jest ability to pinpoint and only run those tests which are affected by code changes. I want to run all of them every time when I TDD. It's a different mindset when you TDD</p></li>\n<li><p>I also mainly code in IntelliJ or WebStorm because I feel the tools in that IDE far surpass VSCode and I also love running the test UI runner in it vs. lousy command-line</p></li>\n<li><p>I feel both mocha and Jest read just fine in terms of code readability. Jest might have shorter assertion syntax but I don't really care. I just care that I can read the damn test and my tests are written well and my test descriptions, as well as the code itself including constants represent business language, not technical. I care most about BDD, clean code, 4 rules of simple design, and SOLID</p></li>\n<li><p>I don't like using mock frameworks so no I don't use Jest's Mocking framework. I don't have to mock a lot in my tests due to the nature of how I strive to code...I keep my design simple and modular using principals such as clean code and 4 rules of simple design. If I must mock, I create very simple custom mocks with JS</p></li>\n<li><p>On the contrary to the belief that integration tests and mount are the way to go (this belief drives me absolutely crazy, especially Dodd's promoting that), I TDD with shallow &amp; enzyme. My tests are simple. My design is driven by my tests and my tests give me quick and useful feedback. I have a course I'm working on coming out soon on TDD with React to show you how to truly test the FE and why the ice cream cone and trophy suck (you're being scammed people). Watch for that here: <a href=\"https://twitter.com/DaveSchinkel/status/1062267649235791873\" rel=\"nofollow noopener\" target=\"_blank\">https://twitter.com/DaveSchinkel/status/1062267649235791873</a></p></li>\n</ul>\n\n<p>Don't forget to upvote this post!</p>\n\n<p><span class=\"tool\">Mocha</span> <span class=\"tool\">Jest</span> <span class=\"tool\">JavaScript</span> <span class=\"tool\">React</span> @jsdom <span class=\"tool\">Enzyme</span> #<span class=\"topic\">tdd</span> #<span class=\"topic\">bdd</span> #<span class=\"topic\">testdrivendevelopment</span></p>","viewCount":261347,"upvotesCount":6,"services":[{"type":"id","generated":false,"id":"Tool:101231773772085321","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773770920543","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773939333405","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773849098825","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775583623097","typename":"Tool"}],"topics":[{"type":"id","generated":false,"id":"Topic:101231988892761974","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988893560279","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988893947148","typename":"Topic"}],"__typename":"StackDecision"},"$StackDecision:101161951193130478.company":{"imageUrl":"https://img.stackshare.io/company/25342/default_10052910c5d783a1787246e061f5283e3f423b5e.jpg","thumbUrl":"https://img.stackshare.io/company/25342/thumb_10052910c5d783a1787246e061f5283e3f423b5e.jpg","name":"WeDoTDD.com","path":"/companies/wedotdd-com","features":[],"__typename":"Company"},"Tool:101231775583623097":{"id":"101231775583623097","name":"Enzyme","slug":"enzyme","title":"JavaScript Testing utilities for React, by Airbnb","verified":false,"imageUrl":"https://img.stackshare.io/service/4488/default_87e6ca3fa146a959af95ccf3df1ec550eb434129.png","canonicalUrl":"/enzyme","path":"/enzyme","votes":0,"fans":514,"stacks":420,"following":false,"followContext":null,"__typename":"Tool"},"Topic:101231988892761974":{"name":"Tdd","id":"101231988892761974","__typename":"Topic"},"Topic:101231988893560279":{"name":"Bdd","id":"101231988893560279","__typename":"Topic"},"Topic:101231988893947148":{"name":"Testdrivendevelopment","id":"101231988893947148","__typename":"Topic"},"$Tool:101231773772085321.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:101161951193130478","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:101232122445942926":{"id":"101232122445942926","username":"jackgraves","title":"Head of Product Development","companyName":"Automation Consultants","imageUrl":"https://img.stackshare.io/user/256410/default_426224e1c9557a5fad93d05df5ca399c106022b5.jpeg","thumbUrl":"https://img.stackshare.io/user/256410/thumb_426224e1c9557a5fad93d05df5ca399c106022b5.jpeg","displayName":"Jack Graves","__typename":"User"},"StackDecision:102418130280092546":{"user":{"type":"id","generated":false,"id":"User:101232122445942926","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:102418130280092546.company","typename":"Company"},"link":null,"publicId":"102418130280092546","publishedAt":"2019-07-10T16:37:25Z","id":"102418130280092546","htmlContent":"<p>We use <span class=\"tool\">JUnit</span> and <span class=\"tool\">Jest</span> to perform the bulk of our automated test scenarios, with additional work with <span class=\"tool\">Apache JMeter</span> for performance testing - for example, the Atlassian Data Center compliance testing is performed with JMeter.\nJest provides testing for the React interfaces, which make up the backend of our App offerings. JUnit is used for Unit Testing our Server-based Apps. <span class=\"tool\">Mocha</span> is another tool we use. </p>","viewCount":158727,"upvotesCount":4,"services":[{"type":"id","generated":false,"id":"Tool:101231774255233876","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773770920543","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776359313445","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773772085321","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:102418130280092546.company":{"imageUrl":"https://img.stackshare.io/company/29899/default_73cb541017b5fea4148e46a609f6b1caedea0187.png","thumbUrl":"https://img.stackshare.io/company/29899/thumb_73cb541017b5fea4148e46a609f6b1caedea0187.png","name":"Automation Consultants","path":"/companies/automation-consultants","features":[],"__typename":"Company"},"Tool:101231774255233876":{"id":"101231774255233876","name":"JUnit","slug":"junit","title":"A programmer-oriented testing framework for Java","verified":false,"imageUrl":"https://img.stackshare.io/service/2020/874086.png","canonicalUrl":"/junit","path":"/junit","votes":0,"fans":932,"stacks":1150,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231776359313445":{"id":"101231776359313445","name":"Apache JMeter","slug":"jmeter-tool","title":"An open source load testing tool","verified":false,"imageUrl":"https://img.stackshare.io/service/5839/8mAJQD05_400x400.jpg","canonicalUrl":"/jmeter-tool","path":"/jmeter-tool","votes":10,"fans":394,"stacks":379,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231773772085321.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:102418130280092546","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231773772085321.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773772085321.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231773772085321.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231778053837910.alternativeTools({\"first\":8}).edges.7":{"node":{"type":"id","generated":false,"id":"Tool:101231773772085321","typename":"Tool"},"__typename":"ToolEdge"}}</script> <!-- glamorIds: 137 --> <script type="application/json" id="ToolAlternatives-glamor-99f6f76f-50d6-4b06-9b7e-73dcadb1daea">["1htug8r","1yodi52","iepywa","x5hg3h","u0iaox","9ilv8v","f3khu","1ag7ge9","ld8qhm","11b98zt","12i35kv","1mjw833","a5x1lt","1m5j888","4bpmfq","1pvkxrw","1cylxxa","6pc9xu","1g92dqh","1cs0rzs","1j0qgmo","kxs423","eemya1","3dgua6","1guve57","z9c3fl","i52n91","13sfqhu","bjhznw","1mlbi0l","1cda8k4","2an9kq","5x5cr6","rsz8c","12llqor","81jah4","69zjs9","8a04gk","1m38k02","162qu2y","p797gu","jyk0kg","4hck59","1drwozb","gbti5j","1ahj942","1an0suy","1dgfc7p","14pk3xx","1o4togz","12257h","np1rfd","1iqua1m","uw1ldh","4gnhqq","xkasvz","atv6j6","1m8tyev","1vf0ygt","utnqcw","ds0hbm","dg4ww9","z9ms26","6uh2e7","1pwtf47","t68yd0","1rz3855","i6njnm","1dp4k20","ztg526","1srb7t4","n746ki","1j2w1cg","1b2ktnx","1v4wqws","7c9av6","16s8o6z","6nrkpz","12alag6","1ob9em9","1mpii3w","1wr1kub","1nxoxgf","mtutfo","1x2bey4","1krun48","z63j1n","19r489t","1puyxnn","13u3lpy","em9idi","guqgrw","41bx4t","83t7xw","m7giud","1to1q1s","zwwro1","1ps7r35","1w2c3xd","13hey0t","ua0sjh","8qpfeu","kb8or3","1d3wilq","ljm4wn","mwikcm","1jltg37","1489hth","8wh4b7","pltn6z","1hhgtx3","rpzmwi","5f7045","3k44bn","1qckosq","1a4uubp","q4ncy","1mj0hbk","1dnnpo5","ubpjqb","1erkkk4","a55l86","usifiy","6t66tf","1x4ysa3","1bn5mmw","1dnwvu3","1v4bhi8","6wyd29","19dpmz","v6oua5","16r6zz5","f2odf3","1m02by6","gpa5xw","13nf4of","xd3exe"]</script> <style>@-webkit-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-moz-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-o-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-webkit-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-moz-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-o-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-webkit-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-moz-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-o-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-webkit-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-moz-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-o-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-webkit-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-moz-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-o-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-webkit-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@-moz-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@-o-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}.css-f3khu,[data-css-f3khu]{margin:10px 0;}.css-1ag7ge9,[data-css-1ag7ge9]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-wrap:wrap;-webkit-box-lines:multiple;-webkit-flex-wrap:wrap;}@media only screen and (max-width: 812px){.css-1ag7ge9 > a,[data-css-1ag7ge9] > a{text-align:center;}}.css-ld8qhm,[data-css-ld8qhm]{text-decoration:none;cursor:pointer;color:#c2c2c2;}.css-ld8qhm:hover,[data-css-ld8qhm]:hover{color:#068dfe;}.css-11b98zt,[data-css-11b98zt]{color:#c2c2c2;margin:0 5px 0 5px;}.css-11b98zt::after,[data-css-11b98zt]::after{content:"/";}.css-12i35kv,[data-css-12i35kv]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;margin:10px 0 10px 0;-webkit-box-pack:justify;-webkit-justify-content:space-between;}@media only screen and (max-width: 480px){.css-12i35kv,[data-css-12i35kv]{align-items:center;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}}.css-1mjw833,[data-css-1mjw833]{max-width:100%;}.css-a5x1lt,[data-css-a5x1lt]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;-webkit-box-align:center;-webkit-align-items:center;}@media only screen and (max-width: 480px){.css-a5x1lt,[data-css-a5x1lt]{flex-direction:column;margin-bottom:15px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}}.css-1m5j888,[data-css-1m5j888]{height:110px;width:110px;margin-right:25px;margin-bottom:10px;border-radius:4px;border:1px solid #e1e1e1;}@media only screen and (max-width: 480px){.css-1m5j888,[data-css-1m5j888]{margin-right:0;height:70px;width:70px;}}.css-4bpmfq,[data-css-4bpmfq]{width:100%;max-width:500px;}@media only screen and (max-width: 480px){.css-4bpmfq,[data-css-4bpmfq]{text-align:center;}}.css-1pvkxrw,[data-css-1pvkxrw]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;-webkit-box-align:center;-webkit-align-items:center;}.css-1pvkxrw .fork,[data-css-1pvkxrw] .fork{margin-top:5px;}@media only screen and (max-width: 480px){.css-1pvkxrw,[data-css-1pvkxrw]{justify-content:center;-webkit-box-pack:center;-webkit-justify-content:center;}}.css-1cylxxa,[data-css-1cylxxa]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:25px;line-height:1;letter-spacing:normal;-webkit-font-smoothing:antialiased;padding:0;margin:0;color:#333;}.css-6pc9xu,[data-css-6pc9xu]{margin-left:5px;width:15px;height:15px;}.css-1g92dqh,[data-css-1g92dqh]{color:#707070;padding:5px 0;}.css-1cs0rzs,[data-css-1cs0rzs]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:flex-start;width:450px;-webkit-box-align:start;-webkit-align-items:flex-start;}@media only screen and (max-width: 480px){.css-1cs0rzs,[data-css-1cs0rzs]{width:100%;}}.css-1j0qgmo,[data-css-1j0qgmo]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:flex-start;width:100%;justify-content:space-between;-webkit-box-align:start;-webkit-align-items:flex-start;-webkit-box-pack:justify;-webkit-justify-content:space-between;}@media only screen and (max-width: 480px){.css-1j0qgmo,[data-css-1j0qgmo]{flex-wrap:wrap;width:100%;justify-content:center;margin:0 auto;-webkit-box-lines:multiple;-webkit-flex-wrap:wrap;-webkit-box-pack:center;-webkit-justify-content:center;}}.css-kxs423,[data-css-kxs423]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:flex-start;padding:0 8px 0 24px;margin:5px 8px 0 0;flex-direction:column;border-left:1px solid #e1e1e1;gap:9px;-webkit-box-align:start;-webkit-align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-kxs423 a,[data-css-kxs423] a, .css-kxs423 span, [data-css-kxs423] span{padding-right:8px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-wrap:nowrap;flex:2;align-items:center;-webkit-box-lines:nowrap;-webkit-flex-wrap:nowrap;-webkit-flex:2;-webkit-box-align:center;-webkit-align-items:center;}.css-kxs423 a div,[data-css-kxs423] a div, .css-kxs423 span div, [data-css-kxs423] span div{text-align:initial;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.css-kxs423 div > span,[data-css-kxs423] div > span{width:90px;}.css-kxs423 a,[data-css-kxs423] a{text-decoration:none;}.css-kxs423 svg,[data-css-kxs423] svg{margin-right:8px;position:relative;top:2px;width:14px;height:14px;}.css-kxs423 a:first-child > svg,[data-css-kxs423] a:first-child > svg{margin-left:0;}.css-kxs423 a:nth-last-child(2),[data-css-kxs423] a:nth-last-child(2), .css-kxs423 span:nth-last-child(2), [data-css-kxs423] span:nth-last-child(2){padding-right:0;}@media only screen and (max-width: 480px){.css-kxs423,[data-css-kxs423]{width:100%;padding-right:0;display:grid;grid-template-columns:48% 48%;grid-gap:11px;-ms-grid-template-columns:48% 48%;-ms-grid-gap:11px;}.css-kxs423 a,[data-css-kxs423] a, .css-kxs423 span, [data-css-kxs423] span{padding-right:0;}.css-kxs423 a,[data-css-kxs423] a{height:40px;border:1px solid #dedede;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;}.css-kxs423 svg,[data-css-kxs423] svg{margin-left:0;}.css-kxs423 a:nth-last-child(2),[data-css-kxs423] a:nth-last-child(2), .css-kxs423 span:nth-last-child(2), [data-css-kxs423] span:nth-last-child(2){padding-right:0;}.css-kxs423 a:nth-last-child(2),[data-css-kxs423] a:nth-last-child(2){border-right:1px solid #dedede;}}.css-eemya1,[data-css-eemya1]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:12px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#008FF9;}.css-eemya1 a,[data-css-eemya1] a, .css-eemya1 a:hover, [data-css-eemya1] a:hover, .css-eemya1 a:visited, [data-css-eemya1] a:visited{color:#707070;text-decoration:none;}.css-3dgua6,[data-css-3dgua6]{display:none;}@media only screen and (max-width: 480px){.css-3dgua6,[data-css-3dgua6]{display:block;}}.css-1guve57,[data-css-1guve57]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;}@media only screen and (max-width: 480px){.css-1guve57,[data-css-1guve57]{display:none;}}.css-z9c3fl,[data-css-z9c3fl]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;position:relative;}.css-i52n91,[data-css-i52n91]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:18px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#333;margin:0;}.css-13sfqhu,[data-css-13sfqhu]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.69;letter-spacing:normal;-webkit-font-smoothing:antialiased;margin-top:8px;color:#707070;}.css-bjhznw,[data-css-bjhznw]{color:#333;}.css-bjhznw:hover,[data-css-bjhznw]:hover{color:#068dfe;text-decoration:underline;}.css-1mlbi0l,[data-css-1mlbi0l]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;margin-bottom:15px;flex-shrink:0;cursor:default;-webkit-box-align:center;-webkit-align-items:center;-webkit-flex-shrink:0;}.css-1mlbi0l > div:first-of-type,[data-css-1mlbi0l] > div:first-of-type{width:40px;flex-shrink:0;-webkit-flex-shrink:0;}.css-1cda8k4,[data-css-1cda8k4]{display:inline-block;border-radius:2px;cursor:pointer;background-color:#fff;border:1px solid #c2c2c2;color:#4a4a4a;}.css-2an9kq,[data-css-2an9kq]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;justify-content:center;align-items:center;padding-top:5px;padding-left:8px;padding-right:8px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;}.css-5x5cr6,[data-css-5x5cr6]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-size:12px;font-weight:600;line-height:1.83;letter-spacing:0.5px;}.css-rsz8c,[data-css-rsz8c]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;margin-left:10px;text-decoration:none;color:#000;}.css-12llqor,[data-css-12llqor]{width:260px;margin-left:20px;margin-bottom:25px;}.css-81jah4,[data-css-81jah4]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;margin:50px 0;-webkit-box-pack:center;-webkit-justify-content:center;}.css-69zjs9,[data-css-69zjs9]{background:#f7f7f7;width:100%;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;padding-top:68px;padding-bottom:68px;-webkit-box-pack:center;-webkit-justify-content:center;}@media only screen and (max-width: 812px){.css-69zjs9,[data-css-69zjs9]{padding-top:30px;padding-bottom:50px;}}.css-8a04gk,[data-css-8a04gk]{width:1140px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;padding-left:20px;padding-right:20px;-webkit-box-pack:justify;-webkit-justify-content:space-between;}@media only screen and (max-width: 812px){.css-8a04gk,[data-css-8a04gk]{flex-direction:column;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;}}.css-1m38k02,[data-css-1m38k02]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#333;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}@media only screen and (max-width: 812px){.css-1m38k02,[data-css-1m38k02]{text-align:center;}}.css-162qu2y,[data-css-162qu2y]{font-size:20px;font-weight:600;letter-spacing:0.4px;}.css-p797gu,[data-css-p797gu]{font-size:13px;line-height:2.07;letter-spacing:0.3px;text-decoration:none;color:#333;}.css-p797gu:hover,[data-css-p797gu]:hover{color:#068dfe;}@media only screen and (max-width: 768px){.css-p797gu,[data-css-p797gu]{font-size:14px;}}.css-jyk0kg,[data-css-jyk0kg]{position:relative;width:260px;height:100%;padding-top:30px;}.css-jyk0kg > div,[data-css-jyk0kg] > div{position:absolute;bottom:0;right:0;width:100%;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-flow:column nowrap;justify-content:flex-end;align-items:stretch;margin-bottom:20px;-webkit-flex-flow:column nowrap;-webkit-box-pack:end;-webkit-justify-content:flex-end;-webkit-box-align:stretch;-webkit-align-items:stretch;}.css-jyk0kg > div > div:last-of-type > div ,[data-css-jyk0kg] > div > div:last-of-type > div {margin:0;max-width:100%;}.css-jyk0kg > div a,[data-css-jyk0kg] > div a{max-width:100%;}.css-jyk0kg > div > * + *,[data-css-jyk0kg] > div > * + *{margin-top:10px;}@media only screen and (max-width: 768px){.css-jyk0kg,[data-css-jyk0kg]{width:100%;margin:20px 0 0 0;padding:0;}}.css-4hck59,[data-css-4hck59]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;}.css-1drwozb,[data-css-1drwozb]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;width:80%;justify-content:space-between;align-items:center;order:4;-webkit-box-pack:justify;-webkit-justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-webkit-order:4;}@media only screen and (max-width: 480px){.css-1drwozb,[data-css-1drwozb]{margin-bottom:20px;}}.css-gbti5j,[data-css-gbti5j]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;align-items:center;position:relative;color:#707070;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}.css-gbti5j>:first-child,[data-css-gbti5j]>:first-child{margin-bottom:5px;}.css-gbti5j>span,[data-css-gbti5j]>span{color:#333;line-height:1.22;letter-spacing:0.8px;font-weight:600;font-size:18px;}.css-1ahj942,[data-css-1ahj942]{border-left:1px solid #e1e1e1;width:1px;height:36px;}.css-1an0suy,[data-css-1an0suy]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;align-items:center;position:relative;color:#707070;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;transition:color 0.6s ease-in-out;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;-webkit-transition:color 0.6s ease-in-out;-moz-transition:color 0.6s ease-in-out;}.css-1an0suy>:first-child,[data-css-1an0suy]>:first-child{margin-bottom:5px;}.css-1an0suy>span,[data-css-1an0suy]>span{color:#333;line-height:1.22;letter-spacing:0.8px;font-weight:600;font-size:18px;}.css-1an0suy div,[data-css-1an0suy] div{position:absolute;top:-15px;right:0;left:0;text-align:center;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#45C57C;opacity:0;animation:none;-webkit-animation:none;}.css-1dgfc7p,[data-css-1dgfc7p]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;-webkit-box-pack:justify;-webkit-justify-content:space-between;}.css-1dgfc7p > button,[data-css-1dgfc7p] > button{width:48%;margin-right:10px;}.css-1dgfc7p > button:last-child,[data-css-1dgfc7p] > button:last-child{margin:0;}.css-14pk3xx,[data-css-14pk3xx]{height:32px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;align-items:center;border-radius:2px;border:1px solid #068dfe;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-size:13px;font-weight:400;letter-spacing:0.8px;background-color:#068dfe;color:#fff;text-decoration:none;cursor:pointer;-webkit-font-smoothing:antialiased;padding-top:0;padding-bottom:0;padding-left:8px;padding-right:8px;width:98px;outline:none;flex-grow:0;flex-shrink:0;margin-right:10px;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-webkit-flex-grow:0;-webkit-flex-shrink:0;}.css-14pk3xx:hover,[data-css-14pk3xx]:hover{background-color:rgba(6,141,254,0.8);border-color:rgba(6,141,254,0.79);color:#fff;}.css-1o4togz,[data-css-1o4togz]{height:32px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;align-items:center;border-radius:2px;border:1px solid #068dfe;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-size:13px;font-weight:400;letter-spacing:0.8px;background-color:#068dfe;color:#fff;text-decoration:none;cursor:pointer;-webkit-font-smoothing:antialiased;padding-top:0;padding-bottom:0;padding-left:16px;padding-right:16px;width:auto;outline:none;flex-grow:0;flex-shrink:0;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-webkit-flex-grow:0;-webkit-flex-shrink:0;}.css-1o4togz:hover,[data-css-1o4togz]:hover{background-color:rgba(6,141,254,0.8);border-color:rgba(6,141,254,0.79);color:#fff;}.css-12257h,[data-css-12257h]{margin:25px 0;}.css-np1rfd,[data-css-np1rfd]{width:70px;height:70px;border:1px solid #e1e1e1;border-radius:4px;}@media only screen and (max-width: 480px){.css-np1rfd,[data-css-np1rfd]{width:60px;height:60px;}}.css-1iqua1m,[data-css-1iqua1m]{height:32px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;align-items:center;border-radius:2px;border:1px solid #068dfe;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-size:13px;font-weight:400;letter-spacing:0.8px;background-color:#068dfe;color:#fff;text-decoration:none;cursor:pointer;-webkit-font-smoothing:antialiased;padding-top:0;padding-bottom:0;padding-left:16px;padding-right:16px;width:auto;outline:none;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;}.css-1iqua1m:hover,[data-css-1iqua1m]:hover{background-color:rgba(6,141,254,0.8);border-color:rgba(6,141,254,0.79);color:#fff;}.css-uw1ldh,[data-css-uw1ldh]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:0.2px;-webkit-font-smoothing:antialiased;border-bottom:1px solid;border-color:#e1e1e1;padding:10px 0 20px 0;width:100%;}.css-4gnhqq,[data-css-4gnhqq]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;}.css-xkasvz,[data-css-xkasvz]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;padding:20px 0;width:100%;}.css-atv6j6,[data-css-atv6j6]{margin-top:5px;}.css-1m8tyev,[data-css-1m8tyev]{position:relative;}.css-1m8tyev a,[data-css-1m8tyev] a{display:inline-block;}.css-1m8tyev img,[data-css-1m8tyev] img{width:31px;height:31px;border-radius:50%;}.css-1m8tyev> svg,[data-css-1m8tyev]> svg{width:31px;height:31px;}.css-1vf0ygt,[data-css-1vf0ygt]{margin-left:15px;width:100%;}.css-1vf0ygt a,[data-css-1vf0ygt] a{color:#333;}.css-1vf0ygt a:hover,[data-css-1vf0ygt] a:hover{color:#068dfe;}.css-utnqcw,[data-css-utnqcw]{font-weight:bold;font-size:14px;width:100%;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;-webkit-box-pack:justify;-webkit-justify-content:space-between;}.css-ds0hbm,[data-css-ds0hbm]{color:#4a4a4a;}.css-dg4ww9,[data-css-dg4ww9]{width:100%;margin-top:0;margin-bottom:18px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-webkit-box-lines:multiple;-webkit-flex-wrap:wrap;}.css-dg4ww9 > svg:first-of-type,[data-css-dg4ww9] > svg:first-of-type{margin-right:7px;}.css-dg4ww9 > a,[data-css-dg4ww9] > a{text-decoration:none;margin-right:7px;}.css-dg4ww9 > a:last-of-type,[data-css-dg4ww9] > a:last-of-type{text-decoration:none;margin-right:0;}.css-dg4ww9 > *,[data-css-dg4ww9] > *{margin-bottom:13px;}.css-dg4ww9 > a > span:last-of-type,[data-css-dg4ww9] > a > span:last-of-type{font-size:14px;}.css-z9ms26,[data-css-z9ms26]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:14px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#2d2d2d;margin-right:7px;}.css-6uh2e7,[data-css-6uh2e7]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:14px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#939393;margin-right:7px;}.css-1pwtf47,[data-css-1pwtf47]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:row;align-items:center;text-decoration:none;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;}.css-t68yd0,[data-css-t68yd0]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;position:relative;justify-content:center;align-items:center;width:22px;min-width:22px;height:22px;min-height:22px;background-color:#fff;border-radius:3.1px;border:0;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;}.css-t68yd0:hover,[data-css-t68yd0]:hover{background-color:#fff;}.css-1rz3855,[data-css-1rz3855]{border:solid 1px #c2c2c2;border-radius:3.1px;height:22px;width:22px;}.css-i6njnm,[data-css-i6njnm]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;margin-left:7px;color:#000;}.css-1dp4k20,[data-css-1dp4k20]{height:75px;position:relative;overflow:hidden;}.css-1dp4k20:after,[data-css-1dp4k20]:after{content:" ";position:absolute;bottom:0;left:0;width:100%;height:30px;background:-webkit-linear-gradient(to bottom, rgba(255,255,255,0), #fff 80%); background: -moz-linear-gradient(to bottom, rgba(255,255,255,0), #fff 80%); background: linear-gradient(to bottom, rgba(255,255,255,0), #fff 80%);}.css-ztg526 .topic,[data-css-ztg526] .topic,.css-ztg526 .tool,[data-css-ztg526] .tool{font-weight:normal;background:rgba(6,141,254,0.15);padding:0px 2px;}.css-ztg526 a,[data-css-ztg526] a,.css-ztg526 a:visited,[data-css-ztg526] a:visited{color:#068dfe;text-decoration:underline;cursor:pointer;}.css-ztg526 a:hover,[data-css-ztg526] a:hover,.css-ztg526 a:visited:hover,[data-css-ztg526] a:visited:hover{text-decoration:underline;}.css-ztg526 pre,[data-css-ztg526] pre{white-space:pre-wrap;word-wrap:break-word;background:#fafafa;color:#333;margin:15px 0;font-family:monospace;padding:10px;border-radius:0;}.css-ztg526 code,[data-css-ztg526] code{border-radius:0;background:#fafafa;color:#333;}.css-1srb7t4,[data-css-1srb7t4]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.6666666666666667;letter-spacing:normal;-webkit-font-smoothing:antialiased;width:100%;text-align:center;text-decoration:underline;cursor:pointer;color:#333;}.css-1srb7t4:hover,[data-css-1srb7t4]:hover{color:#333;text-decoration:none;}.css-n746ki,[data-css-n746ki]{margin-top:30px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;z-index:1;-webkit-box-pack:center;-webkit-justify-content:center;}.css-1j2w1cg,[data-css-1j2w1cg]{cursor:pointer;text-decoration:none;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;margin-right:0;-webkit-box-align:center;-webkit-align-items:center;}.css-1j2w1cg > div:last-of-type,[data-css-1j2w1cg] > div:last-of-type{margin-right:0;}.css-1b2ktnx,[data-css-1b2ktnx]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:14px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#2d2d2d;margin-right:7px;margin-left:7px;}.css-1v4wqws,[data-css-1v4wqws]{display:block;flex-direction:none;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:none;}.css-7c9av6,[data-css-7c9av6]{margin:0;padding:0;}.css-16s8o6z,[data-css-16s8o6z]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;height:100%;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;justify-content:center;fontsize:14px;color:#c2c2c2;font-style:italic;text-align:center;-webkit-box-align:center;-webkit-align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;}.css-6nrkpz,[data-css-6nrkpz]{list-style:none;}.css-12alag6,[data-css-12alag6]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;-webkit-box-align:center;-webkit-align-items:center;}.css-1ob9em9,[data-css-1ob9em9]{max-width:225px;margin:0 auto;width:100%;}.css-1ob9em9 > button,[data-css-1ob9em9] > button{width:100%;margin:auto;padding-left:16px;padding-right:16px;}.css-1mpii3w,[data-css-1mpii3w]{height:auto;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;align-items:center;border-radius:2px;border:1px solid #f87a46;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-size:13px;font-weight:400;letter-spacing:0.8px;background-color:#f87a46;color:#fff;text-decoration:none;cursor:pointer;-webkit-font-smoothing:antialiased;padding-top:0;padding-bottom:0;padding-left:16px;padding-right:16px;width:auto;outline:none;line-height:20px;min-height:32px;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;}.css-1mpii3w:hover,[data-css-1mpii3w]:hover{background-color:rgba(248,122,70,0.8);border-color:rgba(248,122,70,0.8);color:#fff;}.css-1wr1kub,[data-css-1wr1kub]{width:100%;background:#f9f9f9;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;flex-direction:column;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}.css-1nxoxgf,[data-css-1nxoxgf]{width:100%;background:#fff;}.css-mtutfo,[data-css-mtutfo]{width:100%;height:100%;max-width:1170px;padding-left:15px;padding-right:15px;margin:0 auto;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-1x2bey4,[data-css-1x2bey4]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#707070;}.css-1krun48 path,[data-css-1krun48] path{fill:#068dfe;}.css-z63j1n,[data-css-z63j1n]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;width:100%;justify-content:flex-end;margin-top:40px;-webkit-box-pack:end;-webkit-justify-content:flex-end;}.css-19r489t,[data-css-19r489t]{border-bottom:2px solid #e1e1e1;width:100%;}.css-1puyxnn,[data-css-1puyxnn]{width:100%;height:100%;padding:20px 15px 0;max-width:1170px;min-height:100vh;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-13u3lpy,[data-css-13u3lpy]{margin-top:20px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;flex-direction:row;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;}.css-em9idi,[data-css-em9idi]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;margin-left:auto;min-width:280px;}.css-guqgrw,[data-css-guqgrw]{width:100%;}@media only screen and (max-width: 480px){.css-guqgrw,[data-css-guqgrw]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}}.css-41bx4t,[data-css-41bx4t]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#a1a1a1;text-transform:uppercase;margin-bottom:10px;}.css-83t7xw>ul>li,[data-css-83t7xw]>ul>li{width:50%;margin-bottom:30px;padding-right:30px;}@media only screen and (max-width: 480px){.css-83t7xw>ul>li,[data-css-83t7xw]>ul>li{width:100%;padding-right:0;}}.css-m7giud,[data-css-m7giud]{padding:0;max-width:860px;justify-content:space-between;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-wrap:wrap;text-align:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-webkit-box-lines:multiple;-webkit-flex-wrap:wrap;}.css-1to1q1s,[data-css-1to1q1s]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;list-style-type:none;color:#707070;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;}.css-1to1q1s:hover,[data-css-1to1q1s]:hover{color:#068dfe;}.css-zwwro1,[data-css-zwwro1]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;margin-left:18px;justify-content:center;text-align:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;}.css-1ps7r35,[data-css-1ps7r35]{font-size:12px;margin:5px 0;font-weight:600;letter-spacing:0.17px;color:#333;}.css-1w2c3xd,[data-css-1w2c3xd]{font-size:11px;overflow:hidden;margin:0;line-height:1.64;color:#707070;}.css-1w2c3xd > span,[data-css-1w2c3xd] > span{display:none;}.css-13hey0t,[data-css-13hey0t]{width:100%;padding-bottom:80px;}@media only screen and (max-width: 480px){.css-13hey0t,[data-css-13hey0t]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}}.css-ua0sjh,[data-css-ua0sjh]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:18px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#333;}@media only screen and (max-width: 768px){.css-ua0sjh,[data-css-ua0sjh]{align-self:flex-start;margin-bottom:25px;-webkit-align-self:flex-start;}}.css-8qpfeu,[data-css-8qpfeu]{width:100%;padding:25px 0;margin-bottom:20px;background:#fff;border-radius:4px;box-shadow:0 1px 0 0 #e1e1e1;border:1px solid #e1e1e1;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}@media only screen and (max-width: 480px){.css-8qpfeu,[data-css-8qpfeu]{border:solid 1px #e1e1e1;border-radius:4px;box-shadow:none;margin-bottom:20px;padding:10px;padding-top:35px;}}.css-kb8or3,[data-css-kb8or3]{width:100%;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-1d3wilq,[data-css-1d3wilq]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;flex-direction:row;align-items:center;width:100%;padding:0 20px;-webkit-box-pack:justify;-webkit-justify-content:space-between;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;}@media only screen and (max-width: 480px){.css-1d3wilq,[data-css-1d3wilq]{padding:0;flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}}.css-ljm4wn,[data-css-ljm4wn]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:row;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;}@media only screen and (max-width: 480px){.css-ljm4wn,[data-css-ljm4wn]{flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}}.css-mwikcm,[data-css-mwikcm]{width:110px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;flex-direction:row;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;}.css-1jltg37,[data-css-1jltg37]{text-decoration:none;cursor:pointer;color:#333;width:70px;height:70px;margin-right:20px;border-radius:2px;border:1px solid #e1e1e1;}.css-1jltg37:hover,[data-css-1jltg37]:hover, .css-1jltg37:focus, [data-css-1jltg37]:focus{color:#068dfe;}@media only screen and (max-width: 768px){.css-1jltg37,[data-css-1jltg37]{margin-right:initial;width:80px;height:80px;}}.css-1489hth,[data-css-1489hth]{width:68px;height:68px;}@media only screen and (max-width: 768px){.css-1489hth,[data-css-1489hth]{width:78px;height:78px;}}.css-8wh4b7,[data-css-8wh4b7]{height:100%;width:100%;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}@media only screen and (max-width: 768px){.css-8wh4b7,[data-css-8wh4b7]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}}.css-pltn6z,[data-css-pltn6z]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:18px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;margin:0;}@media only screen and (max-width: 768px){.css-pltn6z,[data-css-pltn6z]{margin:15px auto;}}.css-1hhgtx3,[data-css-1hhgtx3]{text-decoration:none;cursor:pointer;color:#333;}.css-1hhgtx3:hover,[data-css-1hhgtx3]:hover, .css-1hhgtx3:focus, [data-css-1hhgtx3]:focus{color:#068dfe;}.css-rpzmwi,[data-css-rpzmwi]{padding:5px 0;}@media only screen and (max-width: 768px){.css-rpzmwi,[data-css-rpzmwi]{display:none;}}.css-5f7045,[data-css-5f7045]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;margin-right:28px;-webkit-box-align:center;-webkit-align-items:center;}.css-3k44bn,[data-css-3k44bn]{height:23px;width:23px;}.css-1qckosq,[data-css-1qckosq]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;fonst-size:15px;color:#333;margin-left:5px;}.css-1a4uubp,[data-css-1a4uubp]{position:relative;top:3px;}.css-q4ncy,[data-css-q4ncy]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:14px;line-height:1.5;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#707070;}@media only screen and (max-width: 768px){.css-q4ncy,[data-css-q4ncy]{text-align:center;margin:20px 0;}}.css-1mj0hbk,[data-css-1mj0hbk]{display:none;}@media only screen and (max-width: 768px){.css-1mj0hbk,[data-css-1mj0hbk]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;width:100%;margin-bottom:10px;}.css-1mj0hbk > div,[data-css-1mj0hbk] > div{margin:0 auto;}}.css-1dnnpo5,[data-css-1dnnpo5]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}@media only screen and (max-width: 480px){.css-1dnnpo5,[data-css-1dnnpo5]{width:100%;}}.css-ubpjqb,[data-css-ubpjqb]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;width:100%;padding:10px 0;}.css-ubpjqb > button,[data-css-ubpjqb] > button{width:125px;}@media only screen and (max-width: 768px){.css-ubpjqb,[data-css-ubpjqb]{justify-content:space-between;-webkit-box-pack:justify;-webkit-justify-content:space-between;}.css-ubpjqb > button,[data-css-ubpjqb] > button{width:48%;margin:0;}}.css-1erkkk4,[data-css-1erkkk4]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;display:grid;grid-template-columns:33% 33% 33%;margin-top:28px;margin-right:20px;margin-left:20px;-ms-grid-template-columns:33% 33% 33%;}@media only screen and (max-width: 480px){.css-1erkkk4,[data-css-1erkkk4]{display:block;margin:0;}}.css-a55l86,[data-css-a55l86]{width:100%;padding:5px;min-height:240px;}@media only screen and (max-width: 1199px){.css-a55l86,[data-css-a55l86]{border-right:none;}}@media only screen and (max-width: 768px){.css-a55l86,[data-css-a55l86]{border:0;margin-top:30px;width:auto;}}@media only screen and (max-width: 480px){.css-a55l86,[data-css-a55l86]{padding:0;}}.css-usifiy,[data-css-usifiy]{height:42px;border-radius:4px;background-color:#f8f8f8;font-size:13px;font-weight:600;line-height:1.08;letter-spacing:0.66px;color:#707070;padding-left:20px;margin-bottom:15px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;-webkit-box-align:center;-webkit-align-items:center;}.css-6t66tf,[data-css-6t66tf]{margin-left:15px;}@media only screen and (max-width: 480px){.css-6t66tf,[data-css-6t66tf]{margin-left:0;}}.css-1x4ysa3,[data-css-1x4ysa3]{position:relative;overflow-y:scroll;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-grow:1;height:160px;max-height:auto;flex-direction:column;flex-wrap:nowrap;-webkit-flex-grow:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-lines:nowrap;-webkit-flex-wrap:nowrap;}.css-1x4ysa3::-webkit-scrollbar,[data-css-1x4ysa3]::-webkit-scrollbar{width:4px;}.css-1x4ysa3::-webkit-scrollbar-thumb,[data-css-1x4ysa3]::-webkit-scrollbar-thumb{background:#c2c2c2;border-radius:2.5px;}.css-1x4ysa3 > div,[data-css-1x4ysa3] > div{flex-basis:unset;-webkit-flex-basis:unset;}@media only screen and (max-width: 480px){.css-1x4ysa3 > div,[data-css-1x4ysa3] > div{flex-basis:unset;-webkit-flex-basis:unset;}}.css-1bn5mmw,[data-css-1bn5mmw]{text-decoration:none;min-width:300px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-1dnwvu3,[data-css-1dnwvu3]{text-decoration:none;}.css-1v4bhi8,[data-css-1v4bhi8]{width:150px;margin-right:100px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;flex-direction:row;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;}.css-6wyd29,[data-css-6wyd29]{width:50px;height:50px;border-radius:2px;border:1px solid #e1e1e1;}.css-19dpmz,[data-css-19dpmz]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:11px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#4a4a4a;height:21px;width:21px;box-sizing:content-box;flex-shrink:0;margin-right:5px;margin-left:5px;border-radius:50%;border:1px solid #e1e1e1;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;flex-direction:row;align-items:center;-webkit-flex-shrink:0;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;}.css-v6oua5,[data-css-v6oua5]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;margin-top:15px;}.css-v6oua5 div,[data-css-v6oua5] div{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:14px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#707070;}.css-16r6zz5,[data-css-16r6zz5]{height:25px;width:25px;margin-right:5px;}.css-16r6zz5 svg > g,[data-css-16r6zz5] svg > g{fill:#068dfe;stroke:#068dfe;}.css-f2odf3,[data-css-f2odf3]{width:100%;padding:20px 20px 0;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}.css-f2odf3 > div:last-child,[data-css-f2odf3] > div:last-child{border-bottom:none;}@media only screen and (max-width: 1199px){.css-f2odf3,[data-css-f2odf3]{width:95%;}}@media only screen and (max-width: 768px){.css-f2odf3,[data-css-f2odf3]{width:93%;}}@media only screen and (max-width: 480px){.css-f2odf3,[data-css-f2odf3]{width:97%;}}.css-1m02by6,[data-css-1m02by6]{width:100%;height:42px;border-radius:4px;padding-left:10px;background:#fafafa;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:flex-start;flex-direction:row;align-items:center;-webkit-box-pack:start;-webkit-justify-content:flex-start;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;}.css-1m02by6 h2,[data-css-1m02by6] h2{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:14px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#707070;margin:0;text-transform:uppercase;}.css-gpa5xw,[data-css-gpa5xw]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#707070;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;margin-left:0;margin-right:0;width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-gpa5xw strong,[data-css-gpa5xw] strong{color:#333;}.css-gpa5xw:last-child > div,[data-css-gpa5xw]:last-child > div{margin:0;max-width:260px;}@media only screen and (max-width: 480px){.css-gpa5xw,[data-css-gpa5xw]{padding:0;box-sizing:border-box;}}@media only screen and (max-width: 812px){.css-gpa5xw > div,[data-css-gpa5xw] > div{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;-webkit-box-pack:center;-webkit-justify-content:center;}}@media only screen and (max-width: 768px){.css-gpa5xw:last-child > div,[data-css-gpa5xw]:last-child > div{margin:0;max-width:100%;}}.css-13nf4of,[data-css-13nf4of]{margin:15px 0;border-top:solid 1px #e1e1e1;border-bottom:solid 1px #e1e1e1;padding:15px 0;}.css-13nf4of a,[data-css-13nf4of] a{color:#333;text-decoration:underline;}.css-xd3exe,[data-css-xd3exe]{margin-right:5px;}</style> <div id="ToolAlternatives-react-component-99f6f76f-50d6-4b06-9b7e-73dcadb1daea" data-ssr="true" ><div class="css-1wr1kub"><div class="css-1nxoxgf"><div class="css-mtutfo"><div class="css-f3khu"><div data-testid="breadcrumbs" class="css-1ag7ge9"><a href="/" class="css-ld8qhm">Home</a><div class="css-11b98zt"></div><a href="/devops" class="css-ld8qhm">DevOps</a><div class="css-11b98zt"></div><a href="/build-test-deploy" class="css-ld8qhm">Build, Test, Deploy</a><div class="css-11b98zt"></div><a href="/javascript-testing-framework" class="css-ld8qhm">Javascript Testing Framework</a></div></div><div class="css-12i35kv"><div class="css-1mjw833"><div class="css-a5x1lt"><a href="https://www.cypress.io/" target="_blank" rel="noopener noreferrer" title="Alternatives to Cypress website"><img src="https://img.stackshare.io/service/9231/default_66c5c1a197dcd0232e41e4ab6299d119b4e165b3.png" alt="Alternatives to Cypress logo" class="css-1m5j888"/></a><div class="css-4bpmfq"><div class="css-1pvkxrw"><h1 class="css-1cylxxa">Alternatives to Cypress</h1><div class="fork"><a href="https://github.com/cypress-io/cypress" target="_blank" rel="noopener noreferrer nofollow" title="Open Source Repo of Cypress"><svg class="css-6pc9xu" xmlns="http://www.w3.org/2000/svg" width="16" height="22" viewBox="0 0 16 22"><path fill-opacity=".35" d="M12.8 0c-1.776 0-3.2 1.399-3.2 3.143 0 1.147.656 2.168 1.6 2.703v2.011L8 11 4.8 7.857V5.846c.944-.535 1.6-1.54 1.6-2.703C6.4 1.399 4.976 0 3.2 0 1.424 0 0 1.399 0 3.143 0 4.29.656 5.31 1.6 5.846v2.797l4.8 4.714v2.797c-.944.535-1.6 1.54-1.6 2.703C4.8 20.601 6.224 22 8 22c1.776 0 3.2-1.399 3.2-3.143 0-1.147-.656-2.168-1.6-2.703v-2.797l4.8-4.714V5.846c.944-.535 1.6-1.54 1.6-2.703C16 1.399 14.576 0 12.8 0zM3.2 5.029c-1.056 0-1.92-.865-1.92-1.886 0-1.022.88-1.886 1.92-1.886s1.92.864 1.92 1.886c0 1.021-.88 1.886-1.92 1.886zM8 20.743c-1.056 0-1.92-.864-1.92-1.886 0-1.021.88-1.886 1.92-1.886s1.92.865 1.92 1.886c0 1.022-.88 1.886-1.92 1.886zm4.8-15.714c-1.056 0-1.92-.865-1.92-1.886 0-1.022.88-1.886 1.92-1.886s1.92.864 1.92 1.886c0 1.021-.88 1.886-1.92 1.886z"></path></svg></a></div></div><div class="css-1g92dqh"><span class="css-1x2bey4"> Selenium, TestCafe, Puppeteer, WebdriverIO, and Jest are the most popular alternatives and competitors to Cypress. </span></div></div></div></div><div class="css-1cs0rzs"><div class="css-1j0qgmo"><div class="css-kxs423"><a href="/jobs/cypress"><svg class="css-1krun48" id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g><path class="st0" d="M.7 16.8h28.6v1.8H.7v-1.8zm27.7.9l-.9.9v-1.8l.9.9z"></path><path class="st0" d="M4.6 6.1h20.7c2.2 0 3.9 1.8 3.9 3.9v13.6c0 2.2-1.8 3.9-3.9 3.9H4.6c-2.2 0-3.9-1.8-3.9-3.9V10c0-2.2 1.8-3.9 3.9-3.9zm0 1.8c-1.2 0-2.1 1-2.1 2.1v13.6c0 1.2 1 2.1 2.1 2.1h20.7c1.2 0 2.1-1 2.1-2.1V10c0-1.2-1-2.1-2.1-2.1H4.6z"></path><path class="st0" d="M10.5 16.8v4.3c0 1.1.9 2 2 2h5c1.1 0 2-.9 2-2v-4.3h-1.8v4.3c0 .1-.1.2-.2.2h-5c-.1 0-.2-.1-.2-.2v-4.3h-1.8zM8.8 7V4.5c0-1.1.9-2 2-2h8.6c1.1 0 2 .9 2 2V7h-1.8V4.5c0-.1-.1-.2-.2-.2h-8.6c-.1 0-.2.1-.2.2V7H8.8z"></path></g></svg> <div class="css-eemya1">View Jobs</div></a><a href="/cypress"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="16" viewBox="0 0 15 16"><path fill="#068DFE" fill-rule="evenodd" d="M13.564 13.523c.263-.26.407-.607.407-.976 0-.368-.144-.715-.407-.975L7.516 5.906a3.076 3.076 0 0 0-.144-.131l-.235-.197.11-.286a3.265 3.265 0 0 0-.752-3.471A3.307 3.307 0 0 0 4.162.86c-.013 0-.027 0-.04.002l1.82 1.806-.783 2.459-2.472.777L.862 4.093a3.25 3.25 0 0 0 .965 2.355c.53.528 1.22.84 1.94.927a4.44 4.44 0 0 1 1.993-.486c2.467 0 4.475 1.996 4.475 4.45 0 .222-.034.434-.066.647l1.432 1.53a1.398 1.398 0 0 0 1.963.007zM5.76 14.656a3.341 3.341 0 0 0 3.268-2.631c.047-.222.073-.451.073-.686 0-.19-.025-.375-.057-.557a3.32 3.32 0 0 0-2.478-2.65 3.299 3.299 0 0 0-.806-.11c-.4 0-.78.083-1.134.21-1.284.464-2.207 1.676-2.207 3.107 0 1.829 1.498 3.317 3.34 3.317zm8.396-3.711c.44.439.677 1.002.677 1.602a2.234 2.234 0 0 1-2.244 2.236 2.26 2.26 0 0 1-1.597-.657l-1.08-1.154A4.473 4.473 0 0 1 5.76 15.79c-2.467 0-4.475-1.997-4.475-4.451 0-1.32.59-2.493 1.512-3.31a4.154 4.154 0 0 1-1.578-.97 4.114 4.114 0 0 1-1.203-3.28.753.753 0 0 1 1.279-.468l1.63 1.618 1.548-.487.488-1.531-1.626-1.614a.751.751 0 0 1 .467-1.28 4.162 4.162 0 0 1 3.3 1.194 4.126 4.126 0 0 1 1.045 4.106l6.009 5.629zm-7.97-1.96l.218.235a.517.517 0 1 1-.991.205c0-.285.231-.516.517-.516.095 0 .18.032.255.076zm-.298 1.65c.216 0 .388.173.388.387v2.319a.385.385 0 0 1-.388.386.385.385 0 0 1-.388-.386v-2.32c0-.213.172-.386.388-.386zm6.083 1.109a.675.675 0 0 1 .95 0 .663.663 0 0 1 0 .942.675.675 0 0 1-.95 0 .663.663 0 0 1 0-.942z"></path></svg> <div class="css-eemya1">Tool Profile</div></a><a rel="nofollow" href="http://twitter.com/Cypress_io"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="12" viewBox="0 0 14 12"><path fill="none" stroke="#49A8F9" d="M11.884 3.45c.486-.344.891-.79 1.236-1.275a5.58 5.58 0 0 1-1.439.385c.527-.304.892-.79 1.074-1.378a5.216 5.216 0 0 1-1.56.608A2.449 2.449 0 0 0 9.39 1a2.473 2.473 0 0 0-2.473 2.491c0 .183.02.385.06.567A7.08 7.08 0 0 1 1.83 1.446c-.203.384-.324.81-.324 1.255 0 .871.425 1.62 1.094 2.066a2.29 2.29 0 0 1-1.115-.304v.02a2.5 2.5 0 0 0 1.987 2.451 2.274 2.274 0 0 1-.649.081c-.162 0-.324-.02-.466-.04.304.992 1.236 1.66 2.31 1.681-.85.668-1.905 1.134-3.08 1.134-.203 0-.406-.02-.588-.04 1.094.709 2.412 1.093 3.81 1.093 4.58 0 7.074-3.787 7.074-7.068V3.45z"></path></svg> <div class="css-eemya1">Cypress_io</div></a><a rel="nofollow" href="https://www.cypress.io/"><svg xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><g fill="#49A8F9" fill-rule="evenodd"><path d="M10.5 0h-4a.5.5 0 0 0 0 1h2.793L4.146 6.146a.5.5 0 1 0 .708.708L10 1.707V4.5a.5.5 0 0 0 1 0v-4a.5.5 0 0 0-.5-.5"></path><path d="M8.5 5a.5.5 0 0 0-.5.5V10H1V3h4.5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5"></path></g></svg> <div class="css-eemya1">cypress.io</div></a><div class="css-3dgua6"></div></div><div class="css-1guve57"></div></div></div></div><div class="css-z63j1n"><div class="css-jyk0kg"><div><div class="css-4hck59"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>1.7K</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>1.8K</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>113</span></div></div></div><div class="css-1dgfc7p"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div></div></div></div></div></div><div class="css-19r489t"></div><main class="css-1puyxnn"><div class="css-z9c3fl"><div class="css-nil"><div class="css-nil"><h2 class="css-i52n91">What is Cypress and what are its top alternatives?</h2><div class="css-13sfqhu">Cypress is a front end automated testing application created for the modern web. Cypress is built on a new architecture and runs in the same run-loop as the application being tested. As a result Cypress provides better, faster, and more reliable testing for anything that runs in a browser. Cypress works on any front-end framework or website. </div><div class="css-13sfqhu">Cypress<!-- --> is a tool in the <strong>Javascript Testing Framework</strong> category of a tech stack.</div><div class="css-13sfqhu">Cypress<!-- --> is an open source tool with <strong>41.9K</strong> <!-- -->GitHub stars and <strong>2.6K</strong> GitHub forks. Here’s a link to <!-- -->Cypress<!-- -->&#x27;s open source repository on<!-- --> <a href="https://github.com/cypress-io/cypress" title="Cypress&#x27;s GitHub" class="css-bjhznw">GitHub</a></div><div class="css-13sfqhu"></div></div><div class="css-12257h"><h2 class="css-41bx4t">Top Alternatives to <!-- -->Cypress</h2><div class="css-83t7xw"><ul class="css-m7giud"><li class="css-1to1q1s"><a href="/selenium"><img src="https://img.stackshare.io/service/1517/thumb_retina_sbUizSli_400x400.jpg" alt="Selenium" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/selenium" class="css-1ps7r35">Selenium</a><p class="css-1w2c3xd">Selenium automates browsers. That&#x27;s it! What you do with that power is entirely <span>up to you. Primarily, it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should!) also be automated as well. </span>...</p></div></li><li class="css-1to1q1s"><a href="/testcafe"><img src="https://img.stackshare.io/service/7532/thumb_retina_W2FwS-Ry_400x400.jpg" alt="TestCafe" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/testcafe" class="css-1ps7r35">TestCafe</a><p class="css-1w2c3xd">It is a pure node.js end-to-end solution for testing web apps. It takes care <span>of all the stages: starting browsers, running tests, gathering test results and generating reports. </span>...</p></div></li><li class="css-1to1q1s"><a href="/puppeteer"><img src="https://img.stackshare.io/service/7553/thumb_retina_puppeteer.png" alt="Puppeteer" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/puppeteer" class="css-1ps7r35">Puppeteer</a><p class="css-1w2c3xd">Puppeteer is a Node library which provides a high-level API to control headless <span>Chrome over the DevTools Protocol. It can also be configured to use full (non-headless) Chrome. </span>...</p></div></li><li class="css-1to1q1s"><a href="/webdriverio"><img src="https://img.stackshare.io/service/4185/thumb_retina_webdriver.io.png" alt="WebdriverIO" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/webdriverio" class="css-1ps7r35">WebdriverIO</a><p class="css-1w2c3xd">WebdriverIO lets you control a browser or a mobile application with just a few <span>lines of code. Your test code will look simple, concise and easy to read. </span>...</p></div></li><li class="css-1to1q1s"><a href="/jest"><img src="https://img.stackshare.io/service/830/thumb_retina_jest.png" alt="Jest" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/jest" class="css-1ps7r35">Jest</a><p class="css-1w2c3xd">Jest provides you with multiple layers on top of Jasmine.</p></div></li><li class="css-1to1q1s"><a href="/protractor"><img src="https://img.stackshare.io/service/1754/thumb_retina_protractor-logo1.png" alt="Protractor" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/protractor" class="css-1ps7r35">Protractor</a><p class="css-1w2c3xd">Protractor is an end-to-end test framework for Angular and AngularJS applications. <span>Protractor runs tests against your application running in a real browser, interacting with it as a user would. </span>...</p></div></li><li class="css-1to1q1s"><a href="/juniper"><img src="https://img.stackshare.io/service/12039/thumb_retina_BQQfs9aH_400x400.jpg" alt="Juniper" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/juniper" class="css-1ps7r35">Juniper</a><p class="css-1w2c3xd">It provides high-performance networking &amp; cybersecurity solutions to service <span>providers, enterprise companies &amp; public sector organizations. </span>...</p></div></li><li class="css-1to1q1s"><a href="/mocha"><img src="https://img.stackshare.io/service/832/thumb_retina_mocha.png" alt="Mocha" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/mocha" class="css-1ps7r35">Mocha</a><p class="css-1w2c3xd">Mocha is a feature-rich JavaScript test framework running on node.js and the <span>browser, making asynchronous testing simple and fun. Mocha tests run serially, allowing for flexible and accurate reporting, while mapping uncaught exceptions to the correct test cases. </span>...</p></div></li></ul><div class="css-n746ki"></div></div><div class="css-13u3lpy"><button class="css-1iqua1m">Sign up to see more</button></div></div></div><aside class="css-em9idi"><div class="css-12llqor"><div class="css-81jah4"></div></div></aside></div><div class="css-guqgrw"><div class="css-13hey0t"><h3 class="css-ua0sjh">Cypress alternatives &amp; related posts</h3><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/selenium" class="css-1jltg37"><img src="https://img.stackshare.io/service/1517/thumb_retina_sbUizSli_400x400.jpg" alt="Selenium logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/selenium" class="css-1hhgtx3">Selenium</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">13.4K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">10.8K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">522</div></div></div></div><div class="css-q4ncy">Web Browser Automation</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>13.4K</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>10.8K</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>522</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div><div class="css-gpa5xw"><div class="css-1ob9em9"><button class="css-1mpii3w">Build Self-Maintaining Browser Tests In Datadog</button></div></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->SELENIUM</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">172</span></div></div><span class="css-rsz8c">Automates browsers</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">154</span></div></div><span class="css-rsz8c">Testing</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">101</span></div></div><span class="css-rsz8c">Essential tool for running test automation</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">24</span></div></div><span class="css-rsz8c">Remote Control</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">24</span></div></div><span class="css-rsz8c">Record-Playback</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">Data crawling</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">7</span></div></div><span class="css-rsz8c">Supports end to end testing</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Functional testing</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Easy set up</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">The Most flexible monitoring system</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">End to End Testing</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Easy to integrate with build tools</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c"> Comparing the performance selenium is faster than jasm</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Record and playback</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Compatible with Python</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Easy to scale</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Integration Tests</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">0</span></div></div><span class="css-rsz8c">Integrated into Selenium-Jupiter framework</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->SELENIUM</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">Flaky tests</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Slow as needs to make browser (even with no gui)</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Update browser drivers</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/selenium-vs-cypress" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/1517/thumb_retina_sbUizSli_400x400.jpg" alt="Selenium logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/9231/thumb_retina_66c5c1a197dcd0232e41e4ab6299d119b4e165b3.png" alt="Cypress logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare Selenium vs Cypress</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related Selenium posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Kamil Kowalski</div></div><div class="css-ds0hbm">Lead Architect<!-- --> at Fresha<!-- --> · <a href="/kamilkowalski/decisions/103356936364529702" class="css-nil"><time>Dec 23, 2019</time> <!-- -->| 28 upvotes · 1.8M views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/selenium" class="css-1pwtf47"><span title="Selenium" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1517/sbUizSli_400x400.jpg" alt="Selenium" class="css-1rz3855"/></span><span class="css-i6njnm">Selenium</span></a><a href="/java" class="css-1pwtf47"><span title="Java" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/995/K85ZWV2F.png" alt="Java" class="css-1rz3855"/></span><span class="css-i6njnm">Java</span></a><a href="/ruby" class="css-1pwtf47"><span title="Ruby" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/989/ruby.png" alt="Ruby" class="css-1rz3855"/></span><span class="css-i6njnm">Ruby</span></a><a href="/elixir" class="css-1pwtf47"><span title="Elixir" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1974/drop.png" alt="Elixir" class="css-1rz3855"/></span><span class="css-i6njnm">Elixir</span></a><a href="/javascript" class="css-1pwtf47"><span title="JavaScript" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1209/javascript.jpeg" alt="JavaScript" class="css-1rz3855"/></span><span class="css-i6njnm">JavaScript</span></a><a href="/cypress" class="css-1pwtf47"><span title="Cypress" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/9231/default_66c5c1a197dcd0232e41e4ab6299d119b4e165b3.png" alt="Cypress" class="css-1rz3855"/></span><span class="css-i6njnm">Cypress</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/fresha" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">Fresha</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>When you think about test automation, it’s crucial to make it everyone’s responsibility (not just QA Engineers'). We started with <span class="tool">Selenium</span> and <span class="tool">Java</span>, but with our platform revolving around <span class="tool">Ruby</span>, <span class="tool">Elixir</span> and <span class="tool">JavaScript</span>, QA Engineers were left alone to automate tests. <span class="tool">Cypress</span> was the answer, as we could switch to JS and simply involve more people from day one. There's a downside too, as it meant testing on Chrome only, but that was "good enough" for us + if really needed we can always cover some specific cases in a different way.</p></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Benjamin Poon</div></div><div class="css-ds0hbm">QA Manager - Engineering<!-- --> at HBC Digital<!-- --> · <a href="/ben-poon/decisions/102368529103552458" class="css-nil"><time>Jul 1, 2019</time> <!-- -->| 8 upvotes · 931K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/nightwatchjs" class="css-1pwtf47"><span title="Nightwatchjs" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/4125/Ihf7jKaE.png" alt="Nightwatchjs" class="css-1rz3855"/></span><span class="css-i6njnm">Nightwatchjs</span></a><a href="/selenium" class="css-1pwtf47"><span title="Selenium" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1517/sbUizSli_400x400.jpg" alt="Selenium" class="css-1rz3855"/></span><span class="css-i6njnm">Selenium</span></a><a href="/javascript" class="css-1pwtf47"><span title="JavaScript" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1209/javascript.jpeg" alt="JavaScript" class="css-1rz3855"/></span><span class="css-i6njnm">JavaScript</span></a><a href="/cucumber" class="css-1pwtf47"><span title="Cucumber" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/2544/jasVAxyJ.png" alt="Cucumber" class="css-1rz3855"/></span><span class="css-i6njnm">Cucumber</span></a><a href="/github" class="css-1pwtf47"><span title="GitHub" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/27/default_869c34d29acc794d60ecdd5d2b5bfc042a80a4ec.jpg" alt="GitHub" class="css-1rz3855"/></span><span class="css-i6njnm">GitHub</span></a><a href="/go-cd" class="css-1pwtf47"><span title="GoCD" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/2349/Z5QiBr7k_400x400.jpg" alt="GoCD" class="css-1rz3855"/></span><span class="css-i6njnm">GoCD</span></a><a href="/docker" class="css-1pwtf47"><span title="Docker" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/586/n4u37v9t_400x400.png" alt="Docker" class="css-1rz3855"/></span><span class="css-i6njnm">Docker</span></a><a href="/expressjs" class="css-1pwtf47"><span title="ExpressJS" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1163/hashtag.png" alt="ExpressJS" class="css-1rz3855"/></span><span class="css-i6njnm">ExpressJS</span></a><a href="/react" class="css-1pwtf47"><span title="React" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1020/OYIaJ1KK.png" alt="React" class="css-1rz3855"/></span><span class="css-i6njnm">React</span></a><a href="/postgresql" class="css-1pwtf47"><span title="PostgreSQL" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1028/ASOhU5xJ.png" alt="PostgreSQL" class="css-1rz3855"/></span><span class="css-i6njnm">PostgreSQL</span></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>For our digital QA organization to support a complex hybrid monolith/microservice architecture, our team took on the lofty goal of building out a commonized UI test automation framework. One of the primary requisites included a technical minimalist threshold such that an engineer or analyst with fundamental knowledge of <span class="tool">JavaScript</span> could automate their tests with greater ease. Just to list a few: - <span class="tool">Nightwatchjs</span> - <span class="tool">Selenium</span> - <span class="tool">Cucumber</span> - <span class="tool">GitHub</span> - <span class="tool">Go.CD</span> - <span class="tool">Docker</span> - <span class="tool">ExpressJS</span> - <span class="tool">React</span> - <span class="tool">PostgreSQL</span> </p> <p>With this structure, we're able to combine the automation efforts of each team member into a centralized repository while also providing new relevant metrics to business owners. </p></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/testcafe" class="css-1jltg37"><img src="https://img.stackshare.io/service/7532/thumb_retina_W2FwS-Ry_400x400.jpg" alt="TestCafe logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/testcafe" class="css-1hhgtx3">TestCafe</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">139</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">253</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">20</div></div></div></div><div class="css-q4ncy">A Node.js tool to automate end-to-end web testing</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>139</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>253</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>20</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->TESTCAFE</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Cross-browser testing</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Open source</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Easy setup/installation</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Built in waits</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Supports Devices without extra software/package</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">UI End to End testing</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Both client and server side debug</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->TESTCAFE</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">No longer free</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/testcafe-vs-cypress" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/7532/thumb_retina_W2FwS-Ry_400x400.jpg" alt="TestCafe logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/9231/thumb_retina_66c5c1a197dcd0232e41e4ab6299d119b4e165b3.png" alt="Cypress logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare TestCafe vs Cypress</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related TestCafe posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Wahid Akbar</div></div><div class="css-ds0hbm"><a href="/mdwahidakbar/decisions/107881771660118243" class="css-nil"><time>Mar 1, 2022</time> <!-- -->| 2 upvotes · 28.9K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/testcafe" class="css-1pwtf47"><span title="TestCafe" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/7532/W2FwS-Ry_400x400.jpg" alt="TestCafe" class="css-1rz3855"/></span><span class="css-i6njnm">TestCafe</span></a><a href="/java" class="css-1pwtf47"><span title="Java" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/995/K85ZWV2F.png" alt="Java" class="css-1rz3855"/></span><span class="css-i6njnm">Java</span></a><a href="/selenium" class="css-1pwtf47"><span title="Selenium" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1517/sbUizSli_400x400.jpg" alt="Selenium" class="css-1rz3855"/></span><span class="css-i6njnm">Selenium</span></a><a href="/angularjs" class="css-1pwtf47"><span title="AngularJS" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1019/square.png" alt="AngularJS" class="css-1rz3855"/></span><span class="css-i6njnm">AngularJS</span></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>What tools will be a good fit for the <span class="tool">AngularJS</span> application? I am experienced in <span class="tool">Selenium</span> WebDriver with <span class="tool">Java</span>. Any suggestion for Selenium or <span class="tool">TestCafe</span>?</p></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/puppeteer" class="css-1jltg37"><img src="https://img.stackshare.io/service/7553/thumb_retina_puppeteer.png" alt="Puppeteer logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/puppeteer" class="css-1hhgtx3">Puppeteer</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">367</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">538</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">25</div></div></div></div><div class="css-q4ncy">Headless Chrome Node API</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>367</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>538</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>25</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div><div class="css-gpa5xw"><div class="css-1ob9em9"><button class="css-1mpii3w">Run Puppeteer tests with Sauce Labs</button></div></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->PUPPETEER</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">10</span></div></div><span class="css-rsz8c">Scriptable web browser</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">9</span></div></div><span class="css-rsz8c">Very well documented</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Promise based</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->PUPPETEER</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">10</span></div></div><span class="css-rsz8c">Chrome only</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/puppeteer-vs-cypress" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/7553/thumb_retina_puppeteer.png" alt="Puppeteer logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/9231/thumb_retina_66c5c1a197dcd0232e41e4ab6299d119b4e165b3.png" alt="Cypress logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare Puppeteer vs Cypress</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related Puppeteer posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Raziel Alron</div></div><div class="css-ds0hbm">Automation Engineer<!-- --> at Tipalti<!-- --> · <a href="/razielron/decisions/105355066178231010" class="css-nil"><time>Dec 10, 2020</time> <!-- -->| 7 upvotes · 297.6K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/puppeteer" class="css-1pwtf47"><span title="Puppeteer" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/7553/puppeteer.png" alt="Puppeteer" class="css-1rz3855"/></span><span class="css-i6njnm">Puppeteer</span></a><a href="/webdriverio" class="css-1pwtf47"><span title="WebdriverIO" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/4185/webdriver.io.png" alt="WebdriverIO" class="css-1rz3855"/></span><span class="css-i6njnm">WebdriverIO</span></a><a href="/protractor" class="css-1pwtf47"><span title="Protractor" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1754/protractor-logo1.png" alt="Protractor" class="css-1rz3855"/></span><span class="css-i6njnm">Protractor</span></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>Currently, we are using <span class="tool">Protractor</span> in our project. Since Protractor isn't updated anymore, we are looking for a new tool. The strongest suggestions are <span class="tool">WebdriverIO</span> or <span class="tool">Puppeteer</span>. Please help me figure out what tool would make the transition fastest and easiest. Please note that Protractor uses its own locator system, and we want the switch to be as simple as possible. Thank you!</p></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Renata Bertocchi</div></div><div class="css-ds0hbm"><a href="/bertocchirenata/decisions/104924821082347053" class="css-nil"><time>Sep 25, 2020</time> <!-- -->| 5 upvotes · 154.7K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/javascript" class="css-1pwtf47"><span title="JavaScript" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1209/javascript.jpeg" alt="JavaScript" class="css-1rz3855"/></span><span class="css-i6njnm">JavaScript</span></a><a href="/puppeteer" class="css-1pwtf47"><span title="Puppeteer" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/7553/puppeteer.png" alt="Puppeteer" class="css-1rz3855"/></span><span class="css-i6njnm">Puppeteer</span></a><a href="/python" class="css-1pwtf47"><span title="Python" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/993/pUBY5pVj.png" alt="Python" class="css-1rz3855"/></span><span class="css-i6njnm">Python</span></a><a href="/selenium" class="css-1pwtf47"><span title="Selenium" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1517/sbUizSli_400x400.jpg" alt="Selenium" class="css-1rz3855"/></span><span class="css-i6njnm">Selenium</span></a><a href="/angularjs" class="css-1pwtf47"><span title="AngularJS" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1019/square.png" alt="AngularJS" class="css-1rz3855"/></span><span class="css-i6njnm">AngularJS</span></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>I work in a company building web apps with <span class="tool">AngularJS</span>. I started using <span class="tool">Selenium</span> for tests automation, as I am more familiar with <span class="tool">Python</span>. However, I found some difficulties, like the impossibility of using IDs and fixed lists of classes, ending up with using xpaths most, which unfortunately could change with fixes and modifications in the code.</p> <p>So, I started using <span class="tool">Puppeteer</span>, but I am still learning. It seems easier to find elements on the webpage, even if the creation and managing of arrays of elements seem to be a little bit more complicated than in Selenium, but it could be also due to my poor knowledge of <span class="tool">JavaScript</span>.</p> <p>Any comments on this comparison and also on comparisons with similar tools are welcome! :)</p></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/webdriverio" class="css-1jltg37"><img src="https://img.stackshare.io/service/4185/thumb_retina_webdriver.io.png" alt="WebdriverIO logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/webdriverio" class="css-1hhgtx3">WebdriverIO</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">227</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">468</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">39</div></div></div></div><div class="css-q4ncy">Webdriver/Selenium 2.0 JavaScript bindings for Node.js</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>227</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>468</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>39</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->WEBDRIVERIO</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">11</span></div></div><span class="css-rsz8c">Various integrations to vendors like Sauce Labs</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">9</span></div></div><span class="css-rsz8c">Open Source</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">Great community</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">7</span></div></div><span class="css-rsz8c">Easy to setup</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Best solution for broad browser support</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->WEBDRIVERIO</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">High maintenance</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/webdriverio-vs-cypress" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/4185/thumb_retina_webdriver.io.png" alt="WebdriverIO logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/9231/thumb_retina_66c5c1a197dcd0232e41e4ab6299d119b4e165b3.png" alt="Cypress logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare WebdriverIO vs Cypress</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related WebdriverIO posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Raziel Alron</div></div><div class="css-ds0hbm">Automation Engineer<!-- --> at Tipalti<!-- --> · <a href="/razielron/decisions/105355066178231010" class="css-nil"><time>Dec 10, 2020</time> <!-- -->| 7 upvotes · 297.6K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/puppeteer" class="css-1pwtf47"><span title="Puppeteer" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/7553/puppeteer.png" alt="Puppeteer" class="css-1rz3855"/></span><span class="css-i6njnm">Puppeteer</span></a><a href="/webdriverio" class="css-1pwtf47"><span title="WebdriverIO" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/4185/webdriver.io.png" alt="WebdriverIO" class="css-1rz3855"/></span><span class="css-i6njnm">WebdriverIO</span></a><a href="/protractor" class="css-1pwtf47"><span title="Protractor" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1754/protractor-logo1.png" alt="Protractor" class="css-1rz3855"/></span><span class="css-i6njnm">Protractor</span></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>Currently, we are using <span class="tool">Protractor</span> in our project. Since Protractor isn't updated anymore, we are looking for a new tool. The strongest suggestions are <span class="tool">WebdriverIO</span> or <span class="tool">Puppeteer</span>. Please help me figure out what tool would make the transition fastest and easiest. Please note that Protractor uses its own locator system, and we want the switch to be as simple as possible. Thank you!</p></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Kevin Roulleau</div></div><div class="css-ds0hbm">QA Engineer Freelance<!-- --> at happn<!-- --> · <a href="/Kignuf/decisions/102666313666904329" class="css-nil"><time>Aug 23, 2019</time> <!-- -->| 5 upvotes · 213.6K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/webdriverio" class="css-1pwtf47"><span title="WebdriverIO" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/4185/webdriver.io.png" alt="WebdriverIO" class="css-1rz3855"/></span><span class="css-i6njnm">WebdriverIO</span></a><a href="/appium" class="css-1pwtf47"><span title="Appium" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/2855/0KVJyYNC_400x400.jpg" alt="Appium" class="css-1rz3855"/></span><span class="css-i6njnm">Appium</span></a><a href="/selenium" class="css-1pwtf47"><span title="Selenium" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1517/sbUizSli_400x400.jpg" alt="Selenium" class="css-1rz3855"/></span><span class="css-i6njnm">Selenium</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/happn" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">happn</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>I chose <span class="tool">WebdriverIO</span> and <span class="tool">Appium</span> to implement a E2E tests solution on a native mobile app. <span class="tool">WebdriverIO</span> goes well beyond just implementing the <span class="tool">Selenium</span> / <span class="tool">Appium</span> protocol and allows to run tests in parallel out of the box. <span class="tool">Appium</span> has the big advantage of supporting iOS and Android platforms, so the test codebase and tools are exactly the same, which greatly reduces the learning curve and implementation time.</p></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/jest" class="css-1jltg37"><img src="https://img.stackshare.io/service/830/thumb_retina_jest.png" alt="Jest logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/jest" class="css-1hhgtx3">Jest</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">3.7K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">2.8K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">169</div></div></div></div><div class="css-q4ncy">Painless JavaScript Unit Testing</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>3.7K</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>2.8K</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>169</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div><div class="css-gpa5xw"><div class="css-1ob9em9"><button class="css-1mpii3w">Check out Private StackShare for Teams</button></div></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->JEST</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">35</span></div></div><span class="css-rsz8c">Open source</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">31</span></div></div><span class="css-rsz8c">Mock by default makes testing much simpler</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">22</span></div></div><span class="css-rsz8c">Testing React Native Apps</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">19</span></div></div><span class="css-rsz8c">Parallel test running</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">15</span></div></div><span class="css-rsz8c">Fast</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">13</span></div></div><span class="css-rsz8c">Bundled with JSDOM to enable DOM testing</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">Mock by default screws up your classes, breaking tests</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">7</span></div></div><span class="css-rsz8c">Out of the box code coverage</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Promise support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">One stop shop for unit testing</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Great documentation</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Assert Library Included</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Built in watch option with interactive filtering menu</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Preset support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">0</span></div></div><span class="css-rsz8c">Karma</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">0</span></div></div><span class="css-rsz8c">Can be used for BDD</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->JEST</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Ambiguous configuration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Difficult</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Documentation</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Many bugs still not fixed months/years after reporting</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Multiple error messages for same error</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Difficult to run single test/describe/file</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Ambiguous</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Bugged</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Slow</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Reporter is too general</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">BeforeAll timing out makes all passing tests fail</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Unstable</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Bad docs</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Still does&#x27;t support .mjs files natively</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Can&#x27;t fail beforeAll to abort tests</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">0</span></div></div><span class="css-rsz8c">Interaction with watch mode on terminal</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/jest-vs-cypress" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/830/thumb_retina_jest.png" alt="Jest logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/9231/thumb_retina_66c5c1a197dcd0232e41e4ab6299d119b4e165b3.png" alt="Cypress logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare Jest vs Cypress</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related Jest posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Robert Zuber</div></div><div class="css-ds0hbm">CTO<!-- --> at CircleCI<!-- --> · <a href="/z00b/decisions/102493621731402213" class="css-nil"><time>Jul 24, 2019</time> <!-- -->| 17 upvotes · 1.1M views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/next-js" class="css-1pwtf47"><span title="Next.js" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/5936/nextjs.png" alt="Next.js" class="css-1rz3855"/></span><span class="css-i6njnm">Next.js</span></a><a href="/react" class="css-1pwtf47"><span title="React" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1020/OYIaJ1KK.png" alt="React" class="css-1rz3855"/></span><span class="css-i6njnm">React</span></a><a href="/storybook" class="css-1pwtf47"><span title="Storybook" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/9240/sOct-Txm_400x400.png" alt="Storybook" class="css-1rz3855"/></span><span class="css-i6njnm">Storybook</span></a><a href="/typescript" class="css-1pwtf47"><span title="TypeScript" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1612/bynNY5dJ.jpg" alt="TypeScript" class="css-1rz3855"/></span><span class="css-i6njnm">TypeScript</span></a><a href="/emotion" class="css-1pwtf47"><span title="Emotion" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/8770/emotion-a76dfa0d18a0536af9e917cdb8f873b9-44576.png" alt="Emotion" class="css-1rz3855"/></span><span class="css-i6njnm">Emotion</span></a><a href="/graphql" class="css-1pwtf47"><span title="GraphQL" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/3820/12972006.png" alt="GraphQL" class="css-1rz3855"/></span><span class="css-i6njnm">GraphQL</span></a><a href="/apollo" class="css-1pwtf47"><span title="Apollo" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/5508/CyUH653y.png" alt="Apollo" class="css-1rz3855"/></span><span class="css-i6njnm">Apollo</span></a><a href="/jest" class="css-1pwtf47"><span title="Jest" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/830/jest.png" alt="Jest" class="css-1rz3855"/></span><span class="css-i6njnm">Jest</span></a><a href="/percy" class="css-1pwtf47"><span title="Percy" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/9635/ZLa0MjPw_400x400.jpg" alt="Percy" class="css-1rz3855"/></span><span class="css-i6njnm">Percy</span></a><a href="/cypress" class="css-1pwtf47"><span title="Cypress" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/9231/default_66c5c1a197dcd0232e41e4ab6299d119b4e165b3.png" alt="Cypress" class="css-1rz3855"/></span><span class="css-i6njnm">Cypress</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/circleci" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">CircleCI</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>We are in the process of adopting <span class="tool">Next.js</span> as our <span class="tool">React</span> framework and using <span class="tool">Storybook</span> to help build our React components in isolation. This new part of our frontend is written in <span class="tool">TypeScript</span>, and we use <span class="tool">Emotion</span> for CSS/styling. For delivering data, we use <span class="tool">GraphQL</span> and <span class="tool">Apollo</span>. <span class="tool">Jest</span>, <span class="tool">Percy</span>, and <span class="tool">Cypress</span> are used for testing.</p></div><div class="css-13nf4of"><svg class="css-xd3exe" xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><g fill="#49A8F9" fill-rule="evenodd"><path d="M10.5 0h-4a.5.5 0 0 0 0 1h2.793L4.146 6.146a.5.5 0 1 0 .708.708L10 1.707V4.5a.5.5 0 0 0 1 0v-4a.5.5 0 0 0-.5-.5"></path><path d="M8.5 5a.5.5 0 0 0-.5.5V10H1V3h4.5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5"></path></g></svg><a href="https://stackshare.io/circleci/update-how-circleci-processes-over-30-million-builds-per-month" title="Update: How CircleCI Processes Over 30 Million Builds Per Month - CircleCI Tech Stack" class="css-nil">Update: How CircleCI Processes Over 30 Million Builds Per Month - CircleCI Tech Stack</a></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Dane Thomas</div></div><div class="css-ds0hbm"><a href="/dane-thomas/decisions/103614815481131824" class="css-nil"><time>Feb 7, 2020</time> <!-- -->| 7 upvotes · 501.9K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/cypress" class="css-1pwtf47"><span title="Cypress" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/9231/default_66c5c1a197dcd0232e41e4ab6299d119b4e165b3.png" alt="Cypress" class="css-1rz3855"/></span><span class="css-i6njnm">Cypress</span></a><a href="/jest" class="css-1pwtf47"><span title="Jest" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/830/jest.png" alt="Jest" class="css-1rz3855"/></span><span class="css-i6njnm">Jest</span></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>As we all know testing is an important part of any application. To assist with our testing we are going to use both <span class="tool">Cypress</span> and <span class="tool">Jest</span>. We feel these tools complement each other and will help us get good coverage of our code. We will use Cypress for our end to end testing as we've found it quite user friendly. Jest will be used for our unit tests because we've seen how many larger companies use it with great success. </p></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/protractor" class="css-1jltg37"><img src="https://img.stackshare.io/service/1754/thumb_retina_protractor-logo1.png" alt="Protractor logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/protractor" class="css-1hhgtx3">Protractor</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">457</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">526</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">33</div></div></div></div><div class="css-q4ncy">End-to-end test framework for Angular and AngularJS applications</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>457</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>526</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>33</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->PROTRACTOR</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">9</span></div></div><span class="css-rsz8c">Easy setup</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">Quick tests implementation</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Flexible</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">5</span></div></div><span class="css-rsz8c">Open source</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">5</span></div></div><span class="css-rsz8c">Promise support</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->PROTRACTOR</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Limited</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/protractor-vs-cypress" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/1754/thumb_retina_protractor-logo1.png" alt="Protractor logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/9231/thumb_retina_66c5c1a197dcd0232e41e4ab6299d119b4e165b3.png" alt="Cypress logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare Protractor vs Cypress</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related Protractor posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Raziel Alron</div></div><div class="css-ds0hbm">Automation Engineer<!-- --> at Tipalti<!-- --> · <a href="/razielron/decisions/105355066178231010" class="css-nil"><time>Dec 10, 2020</time> <!-- -->| 7 upvotes · 297.6K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/puppeteer" class="css-1pwtf47"><span title="Puppeteer" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/7553/puppeteer.png" alt="Puppeteer" class="css-1rz3855"/></span><span class="css-i6njnm">Puppeteer</span></a><a href="/webdriverio" class="css-1pwtf47"><span title="WebdriverIO" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/4185/webdriver.io.png" alt="WebdriverIO" class="css-1rz3855"/></span><span class="css-i6njnm">WebdriverIO</span></a><a href="/protractor" class="css-1pwtf47"><span title="Protractor" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1754/protractor-logo1.png" alt="Protractor" class="css-1rz3855"/></span><span class="css-i6njnm">Protractor</span></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>Currently, we are using <span class="tool">Protractor</span> in our project. Since Protractor isn't updated anymore, we are looking for a new tool. The strongest suggestions are <span class="tool">WebdriverIO</span> or <span class="tool">Puppeteer</span>. Please help me figure out what tool would make the transition fastest and easiest. Please note that Protractor uses its own locator system, and we want the switch to be as simple as possible. Thank you!</p></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Sai Chaitanya Mankala</div></div><div class="css-ds0hbm">Tech Lead<!-- --> at KIOT Innovations<!-- --> · <a href="/chaymankala/decisions/106624151876943844" class="css-nil"><time>Jul 22, 2021</time> <!-- -->| 6 upvotes · 167.8K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/karma-runner" class="css-1pwtf47"><span title="Karma" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1420/TidYGd6a.png" alt="Karma" class="css-1rz3855"/></span><span class="css-i6njnm">Karma</span></a><a href="/jasmine" class="css-1pwtf47"><span title="Jasmine" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/831/7c0b595409af531b9cdeb07f8c513e8b.png" alt="Jasmine" class="css-1rz3855"/></span><span class="css-i6njnm">Jasmine</span></a><a href="/npm-ionic-angular" class="css-1pwtf47"><span title="ionic-angular" class="css-t68yd0 service"><img src="https://img.stackshare.io/package/17096/default_1dbf402c11ef653fcaedc84e608a244e30ebfb87.png" alt="ionic-angular" class="css-1rz3855"/></span><span class="css-i6njnm">ionic-angular</span></a><a href="/cypress" class="css-1pwtf47"><span title="Cypress" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/9231/default_66c5c1a197dcd0232e41e4ab6299d119b4e165b3.png" alt="Cypress" class="css-1rz3855"/></span><span class="css-i6njnm">Cypress</span></a><a href="/protractor" class="css-1pwtf47"><span title="Protractor" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1754/protractor-logo1.png" alt="Protractor" class="css-1rz3855"/></span><span class="css-i6njnm">Protractor</span></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p><span class="tool">Protractor</span> or <span class="tool">Cypress</span> for <span class="tool">ionic-angular</span>?</p> <p>We have a huge ionic-angular app with almost 100 pages and 10+ injectables. There are no tests written yet. Before we start, we need some suggestions about the framework. Would you suggest Cypress or Angular's Protractor with <span class="tool">Jasmine</span> / <span class="tool">Karma</span> for a heavy ionic app with Angular?</p></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/juniper" class="css-1jltg37"><img src="https://img.stackshare.io/service/12039/thumb_retina_BQQfs9aH_400x400.jpg" alt="Juniper logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/juniper" class="css-1hhgtx3">Juniper</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">17</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">15</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">0</div></div></div></div><div class="css-q4ncy">High-performance networking &amp; cybersecurity solutions</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>17</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>15</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>0</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->JUNIPER</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"></ul><div class="css-16s8o6z">Be the first to leave a pro</div></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->JUNIPER</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"></ul><div class="css-16s8o6z">Be the first to leave a con</div></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/juniper-vs-cypress" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/12039/thumb_retina_BQQfs9aH_400x400.jpg" alt="Juniper logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/9231/thumb_retina_66c5c1a197dcd0232e41e4ab6299d119b4e165b3.png" alt="Cypress logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare Juniper vs Cypress</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related Juniper posts</h2></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/mocha" class="css-1jltg37"><img src="https://img.stackshare.io/service/832/thumb_retina_mocha.png" alt="Mocha logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/mocha" class="css-1hhgtx3">Mocha</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">3.3K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">2.7K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">430</div></div></div></div><div class="css-q4ncy">Simple, flexible, fun javascript test framework for node.js &amp; the browser</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>3.3K</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>2.7K</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>430</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->MOCHA</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">137</span></div></div><span class="css-rsz8c">Open source</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">102</span></div></div><span class="css-rsz8c">Simple</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">81</span></div></div><span class="css-rsz8c">Promise support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">48</span></div></div><span class="css-rsz8c">Flexible</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">29</span></div></div><span class="css-rsz8c"> Easy to add support for Generators</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">12</span></div></div><span class="css-rsz8c">For browser and server testing</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">7</span></div></div><span class="css-rsz8c">Curstom assertion libraries</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">5</span></div></div><span class="css-rsz8c">Works with Karma</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">No other better tools</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Simple setup</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Works with saucelabs</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Lots of tutorials and help online</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Default reporter is nice, clean, and itemized</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Works with BrowserStack</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Simple integration testing</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->MOCHA</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Cannot test a promisified functions without assertion</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">No assertion count in results</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Not as many reporter options as Jest</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/mocha-vs-cypress" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/832/thumb_retina_mocha.png" alt="Mocha logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/9231/thumb_retina_66c5c1a197dcd0232e41e4ab6299d119b4e165b3.png" alt="Cypress logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare Mocha vs Cypress</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related Mocha posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Dschinkel Schinkel</div></div><div class="css-ds0hbm"><a href="/dschinkel/decisions/101161951193130478" class="css-nil"><time>Nov 30, 2018</time> <!-- -->| 6 upvotes · 261.3K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/mocha" class="css-1pwtf47"><span title="Mocha" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/832/mocha.png" alt="Mocha" class="css-1rz3855"/></span><span class="css-i6njnm">Mocha</span></a><a href="/jest" class="css-1pwtf47"><span title="Jest" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/830/jest.png" alt="Jest" class="css-1rz3855"/></span><span class="css-i6njnm">Jest</span></a><a href="/javascript" class="css-1pwtf47"><span title="JavaScript" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1209/javascript.jpeg" alt="JavaScript" class="css-1rz3855"/></span><span class="css-i6njnm">JavaScript</span></a><a href="/react" class="css-1pwtf47"><span title="React" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1020/OYIaJ1KK.png" alt="React" class="css-1rz3855"/></span><span class="css-i6njnm">React</span></a><a href="/enzyme" class="css-1pwtf47"><span title="Enzyme" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/4488/default_87e6ca3fa146a959af95ccf3df1ec550eb434129.png" alt="Enzyme" class="css-1rz3855"/></span><span class="css-i6njnm">Enzyme</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/wedotdd-com" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">WeDoTDD.com</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>I use both mocha and Jest because:</p> <ul> <li><p>I don't care whether teams use Jest or Mocha. But jest is way too overhyped. Most devs are writing integration tests and think that it's so much better but frankly I don't write integration tests as the way to get both design feedback and confidence when I code. I adhere to the test pyramid, not ice cream cone or the dumb "trophy"</p></li> <li><p>I TDD, so I only ever use the "API" of test frameworks. I don't do a lot of integration tests for TDD and all the bells and whistles Jest provides you from the command-line I just don't need. And I certainly do not care about or touch Jest Snapshots, I despise them</p></li> <li><p>My tests are fast enough because I write isolated tests with TDD, so I don't run into performance issues. Example: I write my tests in a way that I can run 300 tests in literally 1 second with mocha. So the Jest ability to pinpoint and only run those tests which are affected by code changes. I want to run all of them every time when I TDD. It's a different mindset when you TDD</p></li> <li><p>I also mainly code in IntelliJ or WebStorm because I feel the tools in that IDE far surpass VSCode and I also love running the test UI runner in it vs. lousy command-line</p></li> <li><p>I feel both mocha and Jest read just fine in terms of code readability. Jest might have shorter assertion syntax but I don't really care. I just care that I can read the damn test and my tests are written well and my test descriptions, as well as the code itself including constants represent business language, not technical. I care most about BDD, clean code, 4 rules of simple design, and SOLID</p></li> <li><p>I don't like using mock frameworks so no I don't use Jest's Mocking framework. I don't have to mock a lot in my tests due to the nature of how I strive to code...I keep my design simple and modular using principals such as clean code and 4 rules of simple design. If I must mock, I create very simple custom mocks with JS</p></li> <li><p>On the contrary to the belief that integration tests and mount are the way to go (this belief drives me absolutely crazy, especially Dodd's promoting that), I TDD with shallow &amp; enzyme. My tests are simple. My design is driven by my tests and my tests give me quick and useful feedback. I have a course I'm working on coming out soon on TDD with React to show you how to truly test the FE and why the ice cream cone and trophy suck (you're being scammed people). Watch for that here: <a href="https://twitter.com/DaveSchinkel/status/1062267649235791873" rel="nofollow noopener" target="_blank">https://twitter.com/DaveSchinkel/status/1062267649235791873</a></p></li> </ul> <p>Don't forget to upvote this post!</p> <p><span class="tool">Mocha</span> <span class="tool">Jest</span> <span class="tool">JavaScript</span> <span class="tool">React</span> @jsdom <span class="tool">Enzyme</span> #<span class="topic">tdd</span> #<span class="topic">bdd</span> #<span class="topic">testdrivendevelopment</span></p></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Jack Graves</div></div><div class="css-ds0hbm">Head of Product Development<!-- --> at Automation Consultants<!-- --> · <a href="/jackgraves/decisions/102418130280092546" class="css-nil"><time>Jul 10, 2019</time> <!-- -->| 4 upvotes · 158.7K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/junit" class="css-1pwtf47"><span title="JUnit" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/2020/874086.png" alt="JUnit" class="css-1rz3855"/></span><span class="css-i6njnm">JUnit</span></a><a href="/jest" class="css-1pwtf47"><span title="Jest" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/830/jest.png" alt="Jest" class="css-1rz3855"/></span><span class="css-i6njnm">Jest</span></a><a href="/jmeter-tool" class="css-1pwtf47"><span title="Apache JMeter" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/5839/8mAJQD05_400x400.jpg" alt="Apache JMeter" class="css-1rz3855"/></span><span class="css-i6njnm">Apache JMeter</span></a><a href="/mocha" class="css-1pwtf47"><span title="Mocha" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/832/mocha.png" alt="Mocha" class="css-1rz3855"/></span><span class="css-i6njnm">Mocha</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/automation-consultants" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">Automation Consultants</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>We use <span class="tool">JUnit</span> and <span class="tool">Jest</span> to perform the bulk of our automated test scenarios, with additional work with <span class="tool">Apache JMeter</span> for performance testing - for example, the Atlassian Data Center compliance testing is performed with JMeter. Jest provides testing for the React interfaces, which make up the backend of our App offerings. JUnit is used for Unit Testing our Server-based Apps. <span class="tool">Mocha</span> is another tool we use. </p></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-13u3lpy"><button class="css-1iqua1m">Sign up to see more</button></div></div></div></main><div class="css-69zjs9"><div class="css-8a04gk"><div class="css-1m38k02"><h2 class="css-162qu2y">Similar Tools</h2><a href="/selenium/alternatives" title="Selenium Alternatives" class="css-p797gu">Selenium Alternatives</a><a href="/testcafe/alternatives" title="TestCafe Alternatives" class="css-p797gu">TestCafe Alternatives</a><a href="/puppeteer/alternatives" title="Puppeteer Alternatives" class="css-p797gu">Puppeteer Alternatives</a><a href="/webdriverio/alternatives" title="WebdriverIO Alternatives" class="css-p797gu">WebdriverIO Alternatives</a><a href="/jest/alternatives" title="Jest Alternatives" class="css-p797gu">Jest Alternatives</a></div><div class="css-1m38k02"><h2 class="css-162qu2y">New Tools</h2><a href="/travis-ci/alternatives" title="Travis CI Alternatives" class="css-p797gu">Travis CI Alternatives</a><a href="/puppet/alternatives" title="Puppet Labs Alternatives" class="css-p797gu">Puppet Labs Alternatives</a><a href="/chef/alternatives" title="Chef Alternatives" class="css-p797gu">Chef Alternatives</a><a href="/aws-opswork/alternatives" title="AWS OpsWorks Alternatives" class="css-p797gu">AWS OpsWorks Alternatives</a><a href="/solano-ci/alternatives" title="Solano CI Alternatives" class="css-p797gu">Solano CI Alternatives</a></div><div class="css-1m38k02"><h2 class="css-162qu2y">Top Tools</h2><a href="/github/alternatives" title="GitHub Alternatives" class="css-p797gu">GitHub Alternatives</a><a href="/git/alternatives" title="Git Alternatives" class="css-p797gu">Git Alternatives</a><a href="/docker/alternatives" title="Docker Alternatives" class="css-p797gu">Docker Alternatives</a><a href="/visual-studio-code/alternatives" title="Visual Studio Code Alternatives" class="css-p797gu">Visual Studio Code Alternatives</a><a href="/npm/alternatives" title="npm Alternatives" class="css-p797gu">npm Alternatives</a></div><div class="css-1m38k02"><h2 class="css-162qu2y">Trending Comparisons</h2><a href="/stackups/cypress-vs-jest-vs-mocha" title="Cypress vs Jest vs Mocha" class="css-p797gu">Cypress vs Jest vs Mocha</a><a href="/stackups/cypress-vs-enzyme-vs-mocha" title="Cypress vs Enzyme vs Mocha" class="css-p797gu">Cypress vs Enzyme vs Mocha</a><a href="/stackups/cypress-vs-jasmine" title="Cypress vs Jasmine" class="css-p797gu">Cypress vs Jasmine</a><a href="/stackups/cypress-vs-qunit" title="Cypress vs QUnit" class="css-p797gu">Cypress vs QUnit</a><a href="/stackups/cypress-vs-mocha" title="Cypress vs Mocha" class="css-p797gu">Cypress vs Mocha</a></div></div></div></div></div> <script> renderComponent('ToolAlternatives','ToolAlternatives-react-component-99f6f76f-50d6-4b06-9b7e-73dcadb1daea','ToolAlternatives-apollo-state-99f6f76f-50d6-4b06-9b7e-73dcadb1daea','ToolAlternatives-glamor-99f6f76f-50d6-4b06-9b7e-73dcadb1daea', 'apollo','{"route":"/cypress/alternatives","userId":null,"description":" Selenium, TestCafe, Puppeteer, WebdriverIO, and Jest are the most popular alternatives and competitors to Cypress. ","title":"Alternatives to Cypress","featureFlags":{}}'); </script>
<script type="application/json" id="Footer-apollo-state-b887cc69-1029-4251-be72-f428c4a31686">{}</script> <!-- glamorIds: 21 --> <script type="application/json" id="Footer-glamor-b887cc69-1029-4251-be72-f428c4a31686">["1htug8r","1yodi52","iepywa","x5hg3h","u0iaox","9ilv8v","ts0y2j","cs546h","1fco1ts","11a2nsi","1npm75a","1gn11bn","1y302zr","11gxadc","1iqd2ec","lneilx","de1dx1","1h53588","12k57td","j1o656","zr18wh"]</script> <style>@-webkit-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-moz-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-o-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-webkit-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-moz-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-o-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-webkit-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-moz-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-o-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-webkit-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-moz-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-o-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-webkit-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-moz-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-o-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-webkit-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@-moz-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@-o-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}.css-ts0y2j,[data-css-ts0y2j]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.4;letter-spacing:normal;-webkit-font-smoothing:antialiased;background:#333;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;align-items:center;padding:50px 0 80px;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;}@media only screen and (max-width: 768px){.css-ts0y2j,[data-css-ts0y2j]{padding:0 0 40px;}}.css-cs546h,[data-css-cs546h]{max-width:1220px;}@media only screen and (max-width: 992px){.css-cs546h,[data-css-cs546h]{width:700px;}}@media only screen and (min-width: 993px){.css-cs546h,[data-css-cs546h]{width:955px;}}@media only screen and (min-width: 1200px){.css-cs546h,[data-css-cs546h]{width:1220px;}}.css-1fco1ts,[data-css-1fco1ts]{display:grid;grid-template-columns:repeat(4, 1fr);justify-items:center;column-gap:3%;-ms-grid-template-columns:repeat(4, 1fr);-webkit-column-gap:3%;-moz-column-gap:3%;}@media only screen and (max-width: 768px){.css-1fco1ts,[data-css-1fco1ts]{grid-template-columns:1fr;text-align:center;-ms-grid-template-columns:1fr;}}.css-11a2nsi,[data-css-11a2nsi]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;align-items:center;text-align:left;width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}.css-1npm75a,[data-css-1npm75a]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;color:#fff;font-size:14px;line-height:1.7;letter-spacing:0.3px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-1npm75a a,[data-css-1npm75a] a{color:#fff;text-decoration:none;}.css-1npm75a a:visited,[data-css-1npm75a] a:visited{color:#fff;}.css-1npm75a a:hover,[data-css-1npm75a] a:hover{color:#068dfe;}.css-1npm75a a:hover span,[data-css-1npm75a] a:hover span{color:#fff;}.css-1npm75a a:active span,[data-css-1npm75a] a:active span{color:#fff;}@media only screen and (max-width: 768px){.css-1npm75a,[data-css-1npm75a]{align-items:center;width:95%;font-size:16px;line-height:2;-webkit-box-align:center;-webkit-align-items:center;}}.css-1gn11bn,[data-css-1gn11bn]{color:#fff;font-weight:600;font-size:20px;letter-spacing:0.38px;}@media only screen and (max-width: 768px){.css-1gn11bn,[data-css-1gn11bn]{margin-top:36px;margin-bottom:24px;}}.css-1y302zr,[data-css-1y302zr]{position:relative;}@media only screen and (min-width: 769px){.css-1y302zr,[data-css-1y302zr]{margin-right:auto;}}.css-11gxadc,[data-css-11gxadc]{padding:0;margin:8px 0;}.css-11gxadc li,[data-css-11gxadc] li{display:inline-block;margin:0 5px;}@media only screen and (min-width: 769px){.css-11gxadc li:first-child,[data-css-11gxadc] li:first-child{margin-left:0;}}@media only screen and (max-width: 768px){.css-11gxadc,[data-css-11gxadc]{margin:0 0 80px;}}.css-1iqd2ec svg:hover path,[data-css-1iqd2ec] svg:hover path{fill:#939393;}.css-lneilx,[data-css-lneilx]{margin-top:15px;line-height:100%;}.css-lneilx svg,[data-css-lneilx] svg{max-width:135px;}.css-lneilx svg g,[data-css-lneilx] svg g{fill:#fff;}@media only screen and (max-width: 768px){.css-lneilx,[data-css-lneilx]{margin-top:0;}}@media only screen and (max-width: 480px){.css-lneilx,[data-css-lneilx]{margin-top:0;}}.css-de1dx1,[data-css-de1dx1]{color:#fff;}.css-de1dx1 a,[data-css-de1dx1] a, .css-de1dx1 span, [data-css-de1dx1] span{display:inline-block;margin-right:8px;font-size:13px;letter-spacing:0.24px;}.css-de1dx1 a:last-child,[data-css-de1dx1] a:last-child{margin-right:0;}@media only screen and (max-width: 768px){.css-de1dx1,[data-css-de1dx1]{line-height:1.5;margin-top:14px;margin-bottom:11px;}}.css-1h53588,[data-css-1h53588]{margin:18px 0;}@media only screen and (max-width: 992px){.css-1h53588,[data-css-1h53588]{text-align:center;}}@media only screen and (max-width: 480px){.css-1h53588,[data-css-1h53588]{text-align:center;}}.css-12k57td,[data-css-12k57td]{font-family:Cerebri Sans Pro;margin-top:0;font-style:normal;font-weight:400;font-size:14px;line-height:25px;letter-spacing:0.375px;color:#fff;}.css-j1o656,[data-css-j1o656]{width:53px;height:53px;}.css-zr18wh,[data-css-zr18wh]{color:#c2c2c2;font-size:10px;margin-top:5px;}.css-zr18wh div,[data-css-zr18wh] div{white-space:nowrap;}@media only screen and (max-width: 768px){.css-zr18wh,[data-css-zr18wh]{font-size:13px;line-height:1.5;text-align:center;}}</style> <div id="Footer-react-component-b887cc69-1029-4251-be72-f428c4a31686" data-ssr="true" ><footer class="css-ts0y2j"><div class="css-cs546h"><div class="css-1fco1ts"><div class="css-11a2nsi"><div class="css-1npm75a"><h3 class="css-1gn11bn">Tools &amp; Services</h3><a href="/stackups/trending" title="Compare Tools">Compare Tools</a><a href="/search" title="Search Tools &amp; Services">Search</a><a href="/alternatives" title="Browse Tools &amp; Services">Browse Tool Alternatives</a><a href="/categories" title="Technology Tools &amp; Services">Browse Tool Categories</a><a href="/submit" title="Submit a Tool">Submit A Tool</a><a href="/admin/approval-tool" title="Approve Tools">Approve Tools</a></div></div><div class="css-11a2nsi"><div class="css-1npm75a"><h3 class="css-1gn11bn">Company</h3><a href="/featured-posts" title="Featured Posts">Blog</a><a href="/api" title="API">API</a><a href="/jobs" title="Jobs">Job Search</a><a href="/careers" title="Careers at StackShare" class="css-1y302zr">Careers</a><a href="/stackshare" title="Our Stack">Our Stack</a><a href="/vendors" title="Advertise With Us">Advertise With Us</a><a href="mailto:team@stackshare.io" title="Contact Us">Contact Us</a></div></div><div class="css-11a2nsi"><div class="css-1npm75a"><h3 class="css-1gn11bn">Follow Us</h3><ul class="css-11gxadc"><li><a href="https://twitter.com/stackshareio" target="_blank" rel="noreferrer noopener nofollow" class="css-1iqd2ec"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#FFF" fill-rule="evenodd" d="M3.6 0h16.8A3.6 3.6 0 0 1 24 3.6v16.8a3.6 3.6 0 0 1-3.6 3.6H3.6A3.6 3.6 0 0 1 0 20.4V3.6A3.6 3.6 0 0 1 3.6 0zm14.29 9.964c.548-.389 1.005-.891 1.393-1.44a6.285 6.285 0 0 1-1.621.435c.594-.343 1.005-.891 1.21-1.553a5.867 5.867 0 0 1-1.758.685A2.759 2.759 0 0 0 15.08 7.2a2.788 2.788 0 0 0-2.787 2.81c0 .205.023.433.069.639A7.976 7.976 0 0 1 6.56 7.702a3.037 3.037 0 0 0-.365 1.417c0 .982.48 1.827 1.233 2.33-.456 0-.89-.138-1.256-.343v.022c0 1.37.96 2.49 2.238 2.764-.228.069-.48.092-.73.092-.183 0-.366-.023-.526-.046.343 1.119 1.394 1.873 2.604 1.896-.96.753-2.147 1.279-3.472 1.279a6 6 0 0 1-.662-.046c1.233.8 2.718 1.233 4.294 1.233 5.162 0 7.971-4.27 7.971-7.97v-.366z"></path></svg></a></li><li><a href="https://facebook.com/stackshareio" target="_blank" rel="noreferrer noopener nofollow" class="css-1iqd2ec"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#FFF" fill-rule="evenodd" d="M16.478 24v-8h2.896l.201-3.069h-3.097v-2.237c0-.86.172-1.405 1.262-1.405h1.692l.143-2.925s-.86-.172-2.351-.172c-3.04 0-4.36 1.835-4.36 3.9v2.81H10.8V16h2.065v8H3.6A3.6 3.6 0 0 1 0 20.4V3.6A3.6 3.6 0 0 1 3.6 0h16.8A3.6 3.6 0 0 1 24 3.6v16.8a3.6 3.6 0 0 1-3.6 3.6h-3.922z"></path></svg></a></li><li><a href="https://www.linkedin.com/company/stackshare" target="_blank" rel="noreferrer noopener nofollow" class="css-1iqd2ec"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#FFF" fill-rule="evenodd" d="M3.6 0h16.8A3.6 3.6 0 0 1 24 3.6v16.8a3.6 3.6 0 0 1-3.6 3.6H3.6A3.6 3.6 0 0 1 0 20.4V3.6A3.6 3.6 0 0 1 3.6 0zm5.521 17.16V9.378H6.374v7.782h2.747zM7.748 8.43c1.119 0 1.83-.807 1.83-1.815C9.554 5.578 8.868 4.8 7.749 4.8c-1.094 0-1.831.778-1.831 1.815 0 1.008.712 1.815 1.805 1.815h.026zm11.444 8.73v-4.12c0-2.518-1.246-4.12-3.205-4.12-1.119 0-1.932.661-2.288 1.653l-.102-1.195h-2.721c.025.305.076 1.83.076 1.83v5.952h2.747v-4.12c0-1.12.508-1.831 1.347-1.831.84 0 1.4.432 1.4 1.83v4.12h2.746z"></path></svg></a></li><li><a href="https://angel.co/stackshare" target="_blank" rel="noreferrer noopener nofollow" class="css-1iqd2ec"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#FFF" fill-rule="evenodd" d="M3.6 0h16.8A3.6 3.6 0 0 1 24 3.6v16.8a3.6 3.6 0 0 1-3.6 3.6H3.6A3.6 3.6 0 0 1 0 20.4V3.6A3.6 3.6 0 0 1 3.6 0zm4.684 14.42c.365.493.708.877 1.029 1.153.322.276.579.413.769.413.14 0 .268-.064.385-.194a.624.624 0 0 0 .173-.42c0-.16-.114-.528-.341-1.11-.227-.58-.512-1.15-.849-1.71-.249-.418-.492-.733-.732-.947-.24-.214-.466-.319-.68-.319-.174 0-.366.111-.577.33-.212.223-.317.43-.317.622 0 .2.102.501.309.903.207.4.484.827.83 1.28zm6.062-4.06a89.757 89.757 0 0 0 1.296-3.767c.31-.99.465-1.598.465-1.824 0-.242-.053-.43-.155-.563h-.001a.51.51 0 0 0-.429-.2c-.23 0-.468.194-.707.582-.24.389-.505 1.014-.793 1.875l-1.238 3.622 1.562.275zm-4.45-.445a.982.982 0 0 1 .371-.058c.05 0 .149.005.298.013.147.01.392.03.73.063L9.958 6.022c-.347-.993-.615-1.644-.806-1.949-.19-.303-.397-.456-.619-.456a.513.513 0 0 0-.422.2c-.107.133-.16.313-.16.54 0 .384.144 1.052.433 2.004.29.953.724 2.202 1.303 3.749a.41.41 0 0 1 .21-.195zm6.22 2.129a1.006 1.006 0 0 0-.245-.293c-.338-.285-.998-.54-1.979-.765a13.608 13.608 0 0 0-3.068-.338c-.296 0-.508.05-.632.15-.124.1-.186.272-.186.516 0 .567.314.98.943 1.233.627.255 1.643.382 3.049.382h.508c.116 0 .21.044.279.133.07.088.118.219.142.394-.14.134-.43.287-.866.456-.438.172-.774.341-1.005.508a4.53 4.53 0 0 0-1.196 1.31 3.99 3.99 0 0 0-.198.374c-.04.09-.07.176-.102.263-.012.034-.029.067-.04.1-.018.063-.03.125-.044.188-.013.056-.032.11-.04.166-.006.039-.006.076-.01.114-.008.076-.019.154-.019.228v.001c0 .277.063.609.192.997.128.388.192.629.192.72v.086l-.025.112c-.364-.023-.65-.239-.863-.644-.21-.406-.315-.947-.315-1.622v-.112a.719.719 0 0 1-.192.125.553.553 0 0 1-.205.037c-.074 0-.144-.006-.212-.019a2.132 2.132 0 0 1-.222-.058v.001c.024.094.043.182.056.27a1.05 1.05 0 0 1-.34 1.003 1.22 1.22 0 0 1-.856.331c-.52 0-1.05-.256-1.587-.77-.537-.515-.806-1.017-.806-1.51 0-.091.01-.172.032-.243a.406.406 0 0 1 .104-.182c.115.142.278.35.483.627.545.76 1.05 1.14 1.512 1.14.157 0 .297-.05.422-.149.123-.1.185-.206.185-.313v-.001c0-.127-.083-.334-.248-.629a8.366 8.366 0 0 0-.681-.99c-.33-.425-.606-.736-.826-.933-.217-.196-.394-.295-.525-.295-.29 0-.557.157-.8.47a1.756 1.756 0 0 0-.366 1.11c0 .344.086.725.254 1.147.168.422.416.846.738 1.271a4.937 4.937 0 0 0 1.816 1.524c.723.355 1.522.532 2.4.532 1.611 0 2.96-.607 4.046-1.823 1.088-1.216 1.632-2.739 1.632-4.568 0-.56-.04-1.005-.124-1.337a1.67 1.67 0 0 0-.162-.425zm-4.733 2.915a6.14 6.14 0 0 1 .626-.682c.218-.206.449-.386.689-.545a8.167 8.167 0 0 1-1.01-.113 5.067 5.067 0 0 1-.912-.252c.133.268.25.535.354.802.103.268.188.532.253.79z"></path></svg></a></li></ul></div></div><div class="css-11a2nsi"><div class="css-1npm75a"><a href="/" class="css-lneilx"><svg width="203" height="31" viewBox="0 0 812 124" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><g id="Layer1" fill-rule="nonzero"><path d="M221.086 85.794c0 7.342-2.55 12.933-7.651 16.775-5.101 3.842-12.731 5.762-22.889 5.762-5.208 0-9.647-.352-13.318-1.056-3.671-.704-7.107-1.739-10.308-3.105V88.035c3.628 1.707 7.715 3.137 12.261 4.29 4.546 1.152 8.547 1.728 12.005 1.728 7.085 0 10.628-2.048 10.628-6.146 0-1.537-.469-2.785-1.408-3.746-.939-.96-2.561-2.048-4.866-3.265-2.305-1.216-5.379-2.636-9.22-4.258-5.506-2.305-9.551-4.439-12.133-6.402-2.583-1.964-4.461-4.215-5.635-6.755-1.173-2.54-1.76-5.666-1.76-9.38 0-6.36 2.465-11.279 7.395-14.758 4.93-3.479 11.919-5.218 20.968-5.218 8.623 0 17.01 1.878 25.163 5.634l-5.891 14.086c-3.585-1.537-6.936-2.796-10.052-3.778a31.589 31.589 0 0 0-9.54-1.472c-5.762 0-8.643 1.558-8.643 4.674 0 1.75.928 3.265 2.785 4.546 1.857 1.28 5.922 3.18 12.197 5.698 5.591 2.262 9.689 4.375 12.293 6.339 2.604 1.963 4.524 4.225 5.762 6.786 1.238 2.561 1.857 5.613 1.857 9.156zM259.924 92.773c3.415 0 7.513-.747 12.293-2.241v14.534c-4.866 2.177-10.841 3.265-17.927 3.265-7.811 0-13.499-1.974-17.063-5.922-3.564-3.948-5.346-9.871-5.346-17.767V50.131h-9.348v-8.259l10.756-6.531 5.635-15.11h12.485v15.238h20.04v14.662h-20.04v34.511c0 2.774.779 4.823 2.337 6.146 1.558 1.323 3.617 1.985 6.178 1.985zM325.59 107.051l-3.778-9.732h-.512c-3.287 4.14-6.669 7.011-10.148 8.611-3.479 1.601-8.014 2.401-13.606 2.401-6.872 0-12.282-1.963-16.23-5.89-3.949-3.927-5.923-9.519-5.923-16.775 0-7.598 2.657-13.2 7.971-16.807 5.315-3.607 13.329-5.602 24.042-5.986l12.421-.384v-3.138c0-7.256-3.713-10.884-11.14-10.884-5.72 0-12.443 1.728-20.168 5.186l-6.467-13.19c8.238-4.311 17.372-6.466 27.403-6.466 9.604 0 16.967 2.091 22.089 6.274s7.683 10.543 7.683 19.08v47.7H325.59zm-5.763-33.166l-7.555.256c-5.677.171-9.902 1.195-12.677 3.074-2.774 1.878-4.162 4.738-4.162 8.579 0 5.506 3.159 8.259 9.476 8.259 4.525 0 8.142-1.301 10.853-3.905 2.71-2.604 4.065-6.061 4.065-10.372v-5.891zM381.843 108.331c-22.281 0-33.421-12.229-33.421-36.687 0-12.165 3.03-21.459 9.091-27.883 6.061-6.424 14.748-9.636 26.059-9.636 8.281 0 15.708 1.622 22.281 4.866l-5.762 15.11c-3.074-1.238-5.933-2.251-8.58-3.041-2.646-.79-5.293-1.185-7.939-1.185-10.159 0-15.238 7.214-15.238 21.641 0 14.001 5.079 21.001 15.238 21.001 3.756 0 7.235-.502 10.436-1.505 3.202-1.003 6.403-2.571 9.604-4.706v16.711c-3.158 2.006-6.349 3.394-9.572 4.162-3.222.768-7.288 1.152-12.197 1.152zM432.398 68.123l8.516-10.885 20.04-21.769h22.025l-28.428 31.053 30.157 40.529h-22.537l-20.617-29.004-8.387 6.723v22.281h-19.528V7.426h19.528V51.86l-1.025 16.263h.256z"></path><path d="M538.336 85.794c0 7.342-2.55 12.933-7.651 16.775-5.101 3.842-12.73 5.762-22.889 5.762-5.208 0-9.647-.352-13.318-1.056-3.671-.704-7.107-1.739-10.308-3.105V88.035c3.628 1.707 7.715 3.137 12.261 4.29 4.546 1.152 8.548 1.728 12.005 1.728 7.086 0 10.628-2.048 10.628-6.146 0-1.537-.469-2.785-1.408-3.746-.939-.96-2.561-2.048-4.866-3.265-2.305-1.216-5.378-2.636-9.22-4.258-5.506-2.305-9.551-4.439-12.133-6.402-2.582-1.964-4.46-4.215-5.634-6.755-1.174-2.54-1.761-5.666-1.761-9.38 0-6.36 2.465-11.279 7.395-14.758 4.93-3.479 11.92-5.218 20.969-5.218 8.622 0 17.009 1.878 25.162 5.634l-5.89 14.086c-3.586-1.537-6.937-2.796-10.053-3.778a31.589 31.589 0 0 0-9.54-1.472c-5.762 0-8.643 1.558-8.643 4.674 0 1.75.928 3.265 2.785 4.546 1.857 1.28 5.923 3.18 12.197 5.698 5.592 2.262 9.689 4.375 12.293 6.339 2.604 1.963 4.525 4.225 5.763 6.786 1.237 2.561 1.856 5.613 1.856 9.156zM613.093 107.051h-19.528V65.242c0-10.33-3.841-15.495-11.524-15.495-5.464 0-9.412 1.857-11.845 5.571-2.433 3.713-3.65 9.732-3.65 18.055v33.678h-19.528V7.426h19.528v20.296c0 1.58-.149 5.293-.448 11.141l-.448 5.762h1.024c4.354-7 11.269-10.5 20.745-10.5 8.409 0 14.79 2.262 19.144 6.787 4.353 4.524 6.53 11.012 6.53 19.464v46.675zM672.1 107.051l-3.778-9.732h-.512c-3.286 4.14-6.669 7.011-10.148 8.611-3.479 1.601-8.014 2.401-13.606 2.401-6.872 0-12.282-1.963-16.23-5.89-3.948-3.927-5.923-9.519-5.923-16.775 0-7.598 2.657-13.2 7.972-16.807 5.314-3.607 13.328-5.602 24.042-5.986l12.421-.384v-3.138c0-7.256-3.714-10.884-11.141-10.884-5.72 0-12.442 1.728-20.168 5.186l-6.467-13.19c8.238-4.311 17.373-6.466 27.403-6.466 9.604 0 16.967 2.091 22.089 6.274 5.123 4.183 7.684 10.543 7.684 19.08v47.7H672.1zm-5.762-33.166l-7.555.256c-5.677.171-9.903 1.195-12.678 3.074-2.774 1.878-4.161 4.738-4.161 8.579 0 5.506 3.158 8.259 9.475 8.259 4.525 0 8.142-1.301 10.853-3.905 2.71-2.604 4.066-6.061 4.066-10.372v-5.891zM739.238 34.125c2.646 0 4.845.192 6.595.576l-1.473 18.312c-1.579-.427-3.5-.641-5.762-.641-6.232 0-11.088 1.601-14.566 4.802-3.479 3.202-5.218 7.684-5.218 13.446v36.431h-19.528V35.469h14.79l2.881 12.037h.96c2.22-4.012 5.218-7.245 8.996-9.7 3.777-2.454 7.886-3.681 12.325-3.681zM779.293 48.019c-4.141 0-7.385 1.312-9.732 3.937-2.348 2.625-3.692 6.349-4.034 11.173h27.403c-.085-4.824-1.344-8.548-3.777-11.173s-5.72-3.937-9.86-3.937zm2.753 60.312c-11.525 0-20.531-3.18-27.019-9.54-6.488-6.36-9.732-15.366-9.732-27.019 0-11.994 2.998-21.267 8.996-27.819 5.997-6.552 14.288-9.828 24.874-9.828 10.116 0 17.991 2.881 23.625 8.643 5.635 5.763 8.452 13.723 8.452 23.882v9.476h-46.163c.213 5.549 1.857 9.882 4.93 12.997 3.073 3.116 7.384 4.674 12.933 4.674 4.311 0 8.388-.448 12.229-1.344 3.842-.897 7.854-2.326 12.037-4.29v15.11c-3.414 1.708-7.064 2.978-10.948 3.81-3.885.832-8.622 1.248-14.214 1.248z"></path></g><g fill="#008ff9"><path d="M101.98 83c-3.9 0-7.157 2.792-7.886 6.482-.212 1.564 0 3.123 0 3.123.73 3.687 3.986 6.477 7.885 6.477 4.434 0 8.042-3.605 8.042-8.04 0-4.434-3.608-8.042-8.042-8.042M32.041 54C27.607 54 24 57.606 24 62.041c0 4.433 3.607 8.041 8.041 8.041 4.435 0 8.042-3.608 8.042-8.041 0-4.435-3.607-8.041-8.042-8.041m69.924-12.918c4.435 0 8.042-3.608 8.042-8.041 0-4.435-3.607-8.041-8.042-8.041-3.898 0-7.155 2.791-7.885 6.48v.049s-.18 1.654 0 3.073c.73 3.689 3.987 6.48 7.885 6.48"></path><path d="M101.965 105.961c-6.965 0-12.841-4.655-14.692-11.022H73.376l-.076.043-16.575-28.517H46.592c-1.852 6.367-7.727 11.023-14.694 11.023-8.451 0-15.303-6.852-15.303-15.303 0-8.452 6.852-15.305 15.303-15.305 6.967 0 12.842 4.656 14.694 11.025h9.905l.128-.217L73.3 28.999l.141.083h13.768c1.852-6.369 7.727-11.025 14.692-11.025 8.453 0 15.305 6.853 15.305 15.305 0 8.451-6.852 15.304-15.305 15.304-6.965 0-12.84-4.656-14.692-11.025h-9.03l-14.14 24.326-.006.023.005.022L78.2 86.378h9.073c1.851-6.369 7.727-11.026 14.692-11.026 8.453 0 15.305 6.853 15.305 15.305s-6.852 15.304-15.305 15.304zM124.996 0H8.004C3.584 0 0 3.561 0 7.953v108.094C0 120.44 3.584 124 8.004 124h116.992c4.421 0 8.004-3.56 8.004-7.953V7.953C133 3.561 129.417 0 124.996 0z"></path></g></svg></a><div class="css-de1dx1"><a href="/terms">Terms</a><span>·</span><a href="/privacy">Privacy</a></div><div class="css-1h53588"><h3 class="css-12k57td">SOC 2 Type 2 Certified</h3><a href="http://www.aicpa.org/soc4so" rel="nofollow noreferrer noopener" target="_blank" title="SOC2 badge"><img src="https://img.stackshare.io/fe/SOC2.png" class="css-j1o656"/></a></div><div class="css-zr18wh"><div>Copyright © <!-- -->2022<!-- --> StackShare, Inc. </div><div>All rights reserved.</div></div><div class="css-de1dx1"><a href="/html-sitemaps/stackups/main.html">Sitemap</a></div></div></div></div></div></footer></div> <script> renderComponent('Footer','Footer-react-component-b887cc69-1029-4251-be72-f428c4a31686','Footer-apollo-state-b887cc69-1029-4251-be72-f428c4a31686','Footer-glamor-b887cc69-1029-4251-be72-f428c4a31686', 'apollo','{"isAdmin":null}'); </script>