Introduction
Protractor was a test framework for web applications, primarily used for performing end-to-end (E2E) testing in Angular and AngularJS applications. Although it was initially designed for Angular, developers could also use it for regular, non-Angular websites. Protractor allowed interaction with an application just like a real user would, as it ran tests using an actual web browser.
However, as of August 2023, Protractor has officially reached its end-of-life (EOL). With the evolution of JavaScript and modern testing frameworks, Protractor is no longer maintained, and its use is discouraged. In this post, we’ll cover what Protractor was, why it was widely adopted, and why developers have since transitioned to modern alternatives like Testim.
Let’s get to know protractor
Before we get to the practical part of the part, we must make sure we’re on the same page when it comes to the concepts and tools we’ll be using. That’s why we’ll cover end-to-end testing, detailing what it is and its importance in a sound QA strategy. Before that, though, we’ll venture into Protractor itself. You’ll see a definition of the tool, followed by discovering when, why and by whom it was created. We will then wrap with how Protractor works and how it relates to other testing tools in the frontend testing space.
A quick definition
Protractor is an open-source testing framework you can use to perform end-to-end testing on Angular apps. This framework acts like a combination of different solutions. It can integrate several pieces of technology, such as NodeJS, Jasmine, Selenium, Mocha, and many more. Besides end-to-end testing for Angular, it can also be used for creating regression tests for non-Angular web applications. Protractor tests an app just like a human user would because it uses an actual browser to run the tests.
Protractor was an open-source testing framework you can use to perform end-to-end testing on Angular apps.
A quicker history
Protractor was created by the Angular team in 2013 to address limitations in existing testing tools like Scenario Runner. Julie Ralph, the creator of Protractor, developed it to improve Angular’s E2E testing capabilities. Julie decided to start Protractor to test scenarios, such as dealing with popups or navigating the browser history, which Scenario Runner couldn’t handle well.
However, as JavaScript evolved, modern testing frameworks emerged with built-in asynchronous handling and improved debugging capabilities. By 2021, the Angular team announced that Protractor development would end, officially discontinuing it by August 2023, and it’s no longer recommended for new projects.
How protractor worked, In more detail
To understand how Protractor functioned, it’s essential to take a look at its architecture and dependencies.
Protractor and selenium
Protractor was a Node.js application that served as a wrapper around Selenium WebDriver. More specifically, it interacted with WebDriverJS, the JavaScript binding for the Selenium WebDriver API. Since Protractor leveraged Selenium methods, it allowed developers to create tests that interacted with real browsers, simulating user behavior.
This approach enabled end-to-end (E2E) testing, meaning tests started at the UI level and exercised all layers of an application, from frontend interactions to backend responses and database operations. While Protractor facilitated this process, modern frameworks now provide more efficient and developer-friendly alternatives.
Protractor and jasmine
And what about Jasmine? How do Protractor and Jasmine relate? Jasmine is a popular testing framework for JavaScript. Protractor is integrated with Jasmine by default. Jasmine provided the syntax for writing test cases, but developers could also choose alternatives such as Mocha or Cucumber. This flexibility allowed testers to structure their test suites according to their preferred assertion and reporting styles.
Selenium server and browser interaction
An essential component of Protractor’s architecture was the Selenium Server, which handled communication between the test scripts and the browser. While Protractor tests could be executed without a standalone Selenium server by directly controlling the browser, most setups required this additional layer.
Protractor supported multiple browsers, though Chrome was commonly used due to its robust developer tools and compatibility with automation scripts.
Key components of protractor’s architecture
- Protractor – The test framework (Node.js-based).
- WebDriverJS – JavaScript binding for Selenium WebDriver.
- Jasmine (or Mocha/Cucumber) – Test framework for writing assertions.
- Selenium Server – Middleware for browser automation.
- Browser (Chrome, Firefox, etc.) – The application under test.
Although Protractor made setting up E2E testing easier at the time, its deprecation has led teams to adopt more modern, efficient, and lightweight alternatives, which offer better debugging, faster execution, and improved support for non-Angular applications.
End-to-End testing: What it is and why it matters
End-to-end (E2E) testing is a crucial software testing technique that validates an application’s workflow from start to finish, ensuring that all integrated components function as expected. Unlike unit testing, which isolates specific parts of an application by replacing external dependencies—such as databases, APIs, or file systems—with mocks or fakes, E2E testing ensures that these integrations work in a real-world scenario.
The significance of E2E testing lies in its ability to simulate real user interactions. By testing the full application stack, E2E testing provides confidence that all components—frontend, backend, and database—work together seamlessly.
E2E testing for modern web applications
With frameworks like Angular, React, and Vue.js dominating the frontend landscape, E2E testing must cover the entire user experience, from UI interactions to backend responses. A typical modern application consists of:
- Frontend (UI layer) – Built with frameworks like Angular, React, or Vue.js.
- Backend (Business logic & API layer) – Processes requests and manages data.
- Database (Persistence layer) – Stores and retrieves application data.
An E2E test for an Angular application, for example, would simulate user interactions through the UI, verify that API requests are processed correctly by the backend, and check that data is correctly stored in the database.
Protractor is currently deprecated
In April 2021 the Protractor team announced that there were plans to end Protractor development by the end of 2022. The primary reason for this decision was that the Angular team created Protractor at a time when web development and the JavaScript language in particular were very different. More specifically, Protractor was meant to solve many problems related to asynchronous and concurrent testing. But as time progressed, JavaScript itself evolved in ways that make it easier to deal with those demands, and Protractor no longer plays nicely with the current state of JavaScript.
Project status
Is protractor still maintained?
Active development on Protractor officially ceased in December 2022. However, the project remained under Long-Term Support (LTS), receiving critical security and compatibility updates from the community until August 2023.
As of September 2023, Protractor has officially reached its End of Life (EOL) status.
What does end of life mean?
Protractor’s packages will continue to be available on GitHub, npm, Bower, and the Release archive for the foreseeable future. Additionally, the official website will remain accessible indefinitely. However, the GitHub repository has been archived, meaning no further issues, comments, or contributions will be accepted.
Support beyond august 2023
HeroDevs provided free extended support for Protractor until August 2024. Beyond that, they now offer a fully maintained version of Protractor for users who still rely on its existing test coverage.
Protractor reached end-of-life in August 2023. We discourage any new users from adopting Protractor and recommend existing users migrate to other end-to-end testing solutions.
Existing users should migrate to more modern, well-supported alternatives or AI-driven test automation solutions, such as Testim Automate, provide codeless and scripted testing capabilities, allowing teams to build robust, maintainable test suites.
Protractor: Part of the journey is its ending
Unit testing, while valuable, does not fully reflect real-world user interactions. It primarily focuses on isolated components and may fail to catch integration issues that arise in a fully functional system. End-to-end (E2E) testing, however, ensures that all layers of an application—from the user interface to the backend—work together as expected.
In this post, we covered Protractor, a once-popular tool for E2E testing in both Angular and general web applications. While Protractor was groundbreaking in its time, its active development has officially ended. The JavaScript ecosystem has significantly evolved since its introduction in 2013, and modern testing frameworks now offer better solutions to the challenges Protractor was designed to address.
For new projects, we strongly discourage adopting Protractor. Existing users should migrate to more modern, well-supported alternatives or AI-driven test automation solutions, such as Testim Automate, provide codeless and scripted testing capabilities, allowing teams to build robust, maintainable test suites. With Protractor officially deprecated, transitioning to a modern E2E testing tool will ensure continued efficiency, compatibility, and long-term maintainability in web testing strategies.
This post was written by Carlos Schults. Carlos is a .NET software developer with experience in both desktop and web development, and he’s now trying his hand at mobile. He has a passion for writing clean and concise code, and he’s interested in practices that help you improve app health, such as code review, automated testing, and continuous build.