At my workplace, we are at a crossroads deciding how to take our e2e automation forward. We have used Protractor for over 3 years across a large number of projects, and probably have thousands of tests written in it as of current.
A great concern to us is the maintenance status of Protractor. It has been close to a year since the last major commit (working towards 6.0), and there are a lot of unmerged PRs (some being simple typo corrections) outstanding. I'm very sorry if we have missed anything, but there has been very little communication from active developers on the project as well.
Needless to say, I know and appreciate that this is an open source project which we are in no way entitled to updates to. Even so, it would be helpful to know if Google are committed to actively maintaining this project and have a roadmap for it. If not, I believe the community should be informed so that appropriate decisions can be made about the future of our own e2e stacks.
After support for legacy wire protocol is removed in Chromedriver in future, we will no longer be able to run Protractor 5+ with latest Chromedriver. Current workaround is to set w3c=false. Future of Protractor depends on version 6.
Issue 2596: Remove legacy wire protocol support
https://bugs.chromium.org/p/chromedriver/issues/detail?id=2596&sort=-id&colspec=ID%20Status%20Pri%20Owner%20Summary&q=w3c&can=2
One of the people currently working on the project gave a short and vague update on the current status in one of the issues from last week. You can see the update here. Protractor is no longer supported by google, but by angular itself. https://github.com/angular/protractor/issues/5390
Since there have been no updates, we have decided to move our future e2e testing to Cypress.
There really needs to be some information regarding this.
Since this tool ships with angular a lot of people are probably going to assume they should be using it for their tests, however if it is practically unsupported it would be of great help to people to know this up front, before they sink time into building out their test suite.
Protractor is mentioned in the Angular roadmap:
https://angular.io/guide/roadmap
"Update our e2e testing strategy
To ensure we provide a future-proof e2e testing strategy, we want to evaluate the state of Protractor, community innovations, e2e best practices, and explore novel opportunities."
Perhaps a path forward would be to recommend Cypress and maintain a set of Angular-specific plugins and commands for it, rather than an entire e2e framework?
This was one of the first things we did as part of our own migration. We have a huge React codebase, and we wrote plugins which took care of all the core behavior (authentication, core user flows etc) so that our testers could focus only on testing specific business logic. As a result we produce new tests very fast, and the existing ones are much, much smaller and cleaner after being migrated.
I think it would help the Angular community to just focus on being an awesome GUI framework. There really is no need to ship an entire e2e framework as well. Cypress is truly excellent, but there are other frameworks you could add support for in the same way.
The roadmap at https://angular.io/guide/roadmap doesn't really help unfortunately.
It gives some vague information that's effectively meaningless without something more tangible to go with it. For example, where are the github issues that people are working in in relation to this?
There are no estimated timelines in the roadmap, there's zero activity on this repository in over 4 months, seemingly nothing related to protractor or e2e in the Angular issues, no information from any maintainers in any of the issues related to this. Communication regarding the status is abysmal.
The 6 release was pulled without explanation, which in random issue comments maintainers have said will come back when there is appropriate documentation but there is nothing about it on github or npm project pages except a "Protractor 6 has been deprecated." for unknown reasons.
But there is also a 7.0.0 version on npm, which is the current npm tag. There is a tag in github for 7.0.0 but no github release for that version. There is a vague message on the github project page about 5 and 7 being for different node versions but you have to assume that they're otherwise the same as that isn't explicitly stated.
The npm page says "Protractor 5 is compatible with nodejs v6 and newer.", which conflicts with what is stated on the github page.
To add to that confusion, protractor does seem to run on node > v8 and throws no warnings, despite what is stated on the project page. Maybe it would run more smoothly on newer node versions?
It's upsetting that this is the recommended (bundled) e2e solution that more and more new Angular users will be using without realising that it's effectively unmaintained and they're in for some frustrating times.
Most helpful comment
The roadmap at https://angular.io/guide/roadmap doesn't really help unfortunately.
It gives some vague information that's effectively meaningless without something more tangible to go with it. For example, where are the github issues that people are working in in relation to this?
There are no estimated timelines in the roadmap, there's zero activity on this repository in over 4 months, seemingly nothing related to protractor or e2e in the Angular issues, no information from any maintainers in any of the issues related to this. Communication regarding the status is abysmal.
The 6 release was pulled without explanation, which in random issue comments maintainers have said will come back when there is appropriate documentation but there is nothing about it on github or npm project pages except a "Protractor 6 has been deprecated." for unknown reasons.
But there is also a 7.0.0 version on npm, which is the current npm tag. There is a tag in github for 7.0.0 but no github release for that version. There is a vague message on the github project page about 5 and 7 being for different node versions but you have to assume that they're otherwise the same as that isn't explicitly stated.
The npm page says "Protractor 5 is compatible with nodejs v6 and newer.", which conflicts with what is stated on the github page.
To add to that confusion, protractor does seem to run on node > v8 and throws no warnings, despite what is stated on the project page. Maybe it would run more smoothly on newer node versions?
It's upsetting that this is the recommended (bundled) e2e solution that more and more new Angular users will be using without realising that it's effectively unmaintained and they're in for some frustrating times.