Watir (pronounced water)-Is an open-source (BSD) family of Ruby libraries for automating web browsers. It allows you to write tests that are easy to read and maintain. It is simple and flexible.
Sometimes it is difficult to capture the web elements in AngularJS applications using JUnit orSelenium WebDriver.
JS tool - Sahi (https://sahipro.com).I like using Sahi as it doesn’t require all the webdriver fuctions calls. It uses in-built API calls so in minutes your first UI tests are up and running.
Also, its more stable and hardly fails for element not found and requires no additional wait statements. It has got record-play to quickly write the tests and also provides API calls for scripting making it interesting for programmers as well.
Not a space I’m that strong in, however, I’ve paired with Mark on building some interesting things for our AiT class.
My context for these suggestions, is creating automated checks at the JS layer.
The tools we used to do this:
Enyzme - Another React tool this time created by the folk at AirBnb.
Jasmine - Built by Pivotal Labs it brings Gherkin syntax to the world of JS testing
JSDOM - It provides a virtual dom, allowing you to inject files and libraries, and test JS methods away from a browser.
Chai - Chai is an assertion library written in JS. Think of it like Hamcrest in the Java world.
Mocha - Mocha is a test framework/runner for JS. Think of it like JUnit/Nunit for JS.
Why and when do we use protractor when we already have Selenium WebDriver?
Angular JS applications have some extra HTML attributes like ng-repeater, ng-controller, ng-model…, etc. which are not included in Selenium locators. Selenium is not able to identify those web elements using Selenium code. So, Protractor on the top of Selenium can handle and controls those attributes in Web Applications.
The protractor is an end to end testing framework for Angular JS based applications. While most frameworks focus on conducting unit tests for Angular JS applications, Protractor focuses on testing the actual functionality of an application.