No matter what you build you will be faced with the question of optimizing your testing by automating its parts or the whole experience. Short Story Big enterprise project: Protractor Pet projects or small web apps: Cypress Why to write e2e tests? In simple words. You can define a to be sure your core functionality is always working as expected. contract behavior While unit tests provide us with a good feeling of what we are doing right smears, integration testing helps us to be sure the whole picture is good looking. Warning : That might not be the case if you are changing your system every week. Cypress.io new breath or new hype? Cypress Pros: You put it in your `package.json` and that’s it No dependencies. It saves tons of time Auto-reload. You can log\debug any step of the sequence while you are seeing each step in the Cypress GUI Debug. No sleeps, No waits. Get your elements and set user-friendly timeout. Cypress will make the rest. Automatic waits. cy.get(‘.async-element’, { timeout: 5000 }).click() , but you can set any reasonable timeout. By default, cy.get is waiting for element to appear in the DOM Opinion-based advantages: Clear syntax It’s easy to read. You will like it! 2. Unit-testing + E2E I am a big fan of platform-independent technologies. Once you’ve learned some you don’t want to switch to another one because your ecosystem has changed. tool Cypress is platform independent which means you can write and cover any Framework/Stack. You can even import your and and write Unit Tests for it. ES6 JSX Cypress Cons: . Nothing to say, it’s a commercial company. You never know about plans of monetization in future. Community No file upload support. No cross-browsers testing. Who knows when these things will be covered, for big projects these features are crucial. Features. It is something that has already been proven by time. Cypress supports a different approach which could be controversial. More detail on this is here: . Page Object Model. Cypress POM Protractor: Tried and Tested Protractor Pros: . Around on the . Opened/Closed issues 200/3000. Face it, the Angular community did their job. Community 7000 stars Github . Protractor gives extra advantages to test Angular apps but your app should not necessarily use it. Not only Angular While Protractor is already in the game for some time you can pick between libs to write your tests. Some popular picks are , , . Other than that there are tons of plugins and libs to extend Protractor functionality. You can choose test library. Jasmine Mocha Cucumber . It supports cross-browser testing. Even more — you can run several browsers instances simultaneously! Parallel testing through several browsers Protractor Cons: . I personally found it tricky to debug Protractor. Debug Could take some time to master all API and technics. Time-consuming. Conclusion looks very promising. But facing its current state you should think twice before invest time in it. was proven by time. It has great community and support on . Also, Protractor will be a nice addition to your CV no matter what you’re using. Cypress Protractor Gitter technologies Thanks for reading! If you want me to write more similar stories recommend this post (by clicking the ❤ button). Write your thoughts to comments and subscribe to my medium to find more stories.