TestCafe: Trying Out a QA Automation Tool

As its name suggests, end-to-end testing involves testing the flow of an application from beginning to end. Typically, we’re testing the numerous ways a user might interact with an application/website in order to ascertain that an application will work as expected.

This process of end-to-end testing is growing in popularity due to increasing complexities in developing frontend applications. Different teams contributing to the same codebase contribute to the potential for errors we must suss out before launching. Sure, we had access to testing methods such as unit testing or integration testing. However, they don’t always cover every aspect of an application.

Today, a lot of end-to-end testing is done through automation, which helps reduce testing costs and free human testers from repetitive tasks so they can focus on quality. I’ve used many different tools for QA automation over the years, and one I’ve really enjoyed working with recently is TestCafe. 

This tool differs from most other tools I have used, as it is not based on Selenium Webdriver. Simple to set up and accompanied by extensive documentation, TestCafe is perfect for those interested in learning more about and getting started with QA automation.


What is Selenium?

Selenium WebDriver refers to both the language bindings and the implementations of the individual browser controlling code. 

Selenium supports more languages than most tools, which adds to its appeal. You can code tests in Java, Ruby, C#, Python, and Javascript with Selenium.


What is TestCafe?

TestCafe is not built on Selenium but on the Node.js platform, instead. It uses a URL-rewriting proxy to work without the WebDriver,  meaning that it uses a proxy between the code you are writing/executing and the browser itself. When you run code with TestCafe, this proxy performs URL-rewriting and injects your test scripts into the browser. 

The benefits of this URL proxy approach lie in some of the features we see in TestCafe—for example, testing on mobile devices, user roles, automatic waiting, and an extensive list of API used to perform different tasks on the browser. 


Getting Started with TestCafe 

Getting started with TestCafe is simple. In most instances, the installation process consists of a single step:

As mentioned before, the core component of TestCafe is Node.js and their API are easy to use and understand, even with little to no prior knowledge of JavaScript. You can write tests in both Javascript and Typescript (syntax similar to JS).


Writing a Test

After installing TestCafe in your repo, create a file called test.js containing the following code: 

In this test, we import Selector from the TestCafe node.js library, then declare this line ‘fixture.’ 

In TestCafe, the term ‘fixture’ is used to organize your tests. You could expand on this file and add a second underneath the first, all contained in the same fixture.

Finally, we have our test section, where we can add code that executes on the proxy and runs against the browser to perform actions such as clicking, typing text, or opening a dropdown menu. In the example above, we are expecting the selector to find the image tag containing the Google image.

 Running the test is also simple, as all you need to do is open the terminal within the project and type: 

This executes your test against the Chrome browser, and outputs the results to our console:

When writing end-to-end tests with TestCafe, the possibilities are endless. From here, we could provide search parameters and navigate to another page, validating the expected results. 

With TestCafe, we can create full test scenarios similar to how a user would interact with the application/website. The long-term goal of these tests is to provide full coverage of the application’s functionality and eventually have it running in a pipeline providing direct feedback to the team.



TestCafe is compatible with an array of browsers and browser versions including mobile browsers and multiple platforms ranging from macOS, Windows to Linux. This enables you to run the same tests to ensure consistency of the application across all platforms, making it easy to build out extensive test suites even without much experience in automation.

TestCafe offers a lot of advantages over the traditional webdriver for UI automation, and with its simple syntax it’s the perfect framework to get started with QA Automation. Give it a try for optimizing true cross-browser test coverage and scaling up your existing test environments!

More Resources: