The goal here was really to make sure that a click in, for instance, Chrome was the same as a click in Firefox. And so, the people there started an effort to draft a standard with the requirements in mind that people had at this point in time when it comes to browse automation. This created a lot of confidence and traction in the ecosystem, where a lot of new projects started to flourish and started to be created. We see the WebDriver IO release in 2011, and we see other projects like Appium that bring the same principle into the mobile space.
What then happened was quite interesting. The web kind of changes a lot, and also the way how web applications are built. What happened before was kind of a static server that was delivering static web size, has now become a more and more dynamic JavaScript-heavy web application that uses frameworks like React, Vue, Angular, or Swelt. That drastically has changed a lot of requirements that people had when they test applications. Suddenly, front-end and back-end became more decoupled, and people really wanted to start focusing, testing only the front-end application, rather than deploying the whole stack. With the continuous development of more web APIs that became available in the browser, people had more and more use cases to test. A lot of these use cases were not really in focus when WebDriver or SitAnywhere developed. Luckily, during those times, we had companies like Cypress who stepped in and filled the needs for developers in a really extraordinary way. They tried to close the gaps, as well as a lot of other tools that started to pop up in the ecosystem.
During all these developments, the standard that was supposed to solve these problems was finalized and became a so-called recommended standard. However, while it allowed you to run automation across all browsers, its original design was already behind, and it was clear that it wouldn't solve the problems that developers have building modern web applications today. So almost at the same time, a new effort was started to develop a new protocol with experiences and learnings that made creating the first one and new requirements that developers have building modern web apps today. So if we look into the ecosystem, we can pretty much group tools into kind of two buckets. We have, on the one side, the more conventional tools like Selenium or web.io, and we have, on the other side, the so-called non-standard tools. And both groups have some interesting characteristics. Starting with the conventional ones, they are, as you might expect, all using the WebDriver protocol and therefore allow you to truly do cross-browser automation. Everyone, every command you can run in WebDriver is tested in every browser like any other standard that you have in the web. However, given the way some front-end frameworks are built, it can still create some incompatibilities when testing web apps. So as a design of this protocol, which was originally do everything a user would be able to do, it's not very suited for developers that like to introspect all areas of the application. These tools aren't really that popular among devs and more used by QA folks. However, many of them are open governed, open-source projects with a long history and a large community with ReptiveIO that is for instance part of the OpenJS Foundation alongside NodeJS, Mocha, and WebPack and we have Selenium which is the project of the Software Freedom Conservancy. Now on the other side we have the I call them non-standard tools which all have their own ways to automate the browser and their own set of advantages and disadvantages over each other. These custom approaches usually are based on some sort of JavaScript emulation or through the use of browser APIs that makes them however all limited to a certain browser and provides them however with the capabilities that you would not have with WebDriver and therefore is much more interesting for developers that like to introspect web apps they like to introspect the network and the dome things like that. What is interesting that all these projects are paid by companies and multiple people are working on these projects full-time Looking at all these projects together we see that we have tools like Cypress and Taskerfee that taking the approach of using web APIs for automation, we have Puppeteer and Playwise that rely on native browser APIs and lastly we have Selenium, WebDriver.io and many other tools that rely on the WebDriver protocol. What's worth pointing out here that some tools like Cypress or WebDriver.io actually use a mixture of two approaches. For some automation capabilities Cypress needs to use browser APIs for example to take screenshots of the browser.
Comments