Skip to content

refactor: drop protractor#32562

Open
hawkgs wants to merge 2 commits intoangular:mainfrom
hawkgs:drop-protractor
Open

refactor: drop protractor#32562
hawkgs wants to merge 2 commits intoangular:mainfrom
hawkgs:drop-protractor

Conversation

@hawkgs
Copy link
Member

@hawkgs hawkgs commented Feb 24, 2026

PR Checklist

Please check to confirm your PR fulfills the following requirements:

PR Type

What kind of change does this PR introduce?

  • Bugfix
  • Feature
  • Code style update (formatting, local variables)
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • CI related changes
  • Documentation content changes
  • Other... Please describe:

What is the new behavior?

Drop Protractor from the respository since it's no longer supported.

Does this PR introduce a breaking change?

  • Yes
  • No

@clydin
Copy link
Member

clydin commented Feb 24, 2026

Can you also split this into two commits?
Probably one for @schematics/angular with the schematic removal and one for @angular-devkit/build-angular with the builder/dep removal.

Protractor is no longer supported and has been deprecated since v19.
Remove Protractor since it's no longer supported and has been deprecated since v19; Remove the dependency.
@hawkgs hawkgs marked this pull request as ready for review February 25, 2026 13:17
@hawkgs hawkgs requested a review from clydin February 25, 2026 13:17
@alan-agius4 alan-agius4 added the action: review The PR is still awaiting reviews from at least one requested reviewer label Feb 25, 2026
@@ -49,11 +49,6 @@ ts_json_schema(
src = "src/builders/karma/schema.json",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

export type ServeBuilderTarget = BuilderTarget<Builders.DevServer, ServeBuilderOptions>;
export type ExtractI18nBuilderTarget = BuilderTarget<Builders.ExtractI18n, ExtractI18nOptions>;
export type E2EBuilderTarget = BuilderTarget<Builders.Protractor, E2EOptions>;
export type E2EBuilderTarget = BuilderTarget<E2eExternalBuilders, E2EOptions>;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We no longer need this, also remove E2EOptions

Suggested change
export type E2EBuilderTarget = BuilderTarget<E2eExternalBuilders, E2EOptions>;

}

export interface BuilderTarget<TBuilder extends Builders, TOptions> {
export interface BuilderTarget<TBuilder extends Builders | E2eExternalBuilders, TOptions> {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
export interface BuilderTarget<TBuilder extends Builders | E2eExternalBuilders, TOptions> {
export interface BuilderTarget<TBuilder extends Builders, TOptions> {

Comment on lines +41 to +52
/**
* An enum of E2E external builders.
* Each enum value provides the fully qualified name of the associated builder.
*/
enum E2eExternalBuilders {
Playwright = 'playwright-ng-schematics:playwright',
Cypress = '@cypress/schematic:cypress',
Nightwatch = '@nightwatch/schematics:nightwatch',
WebdriverIO = '@wdio/schematics:wdio',
Puppeteer = '@puppeteer/ng-schematics:puppeteer',
}

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/**
* An enum of E2E external builders.
* Each enum value provides the fully qualified name of the associated builder.
*/
enum E2eExternalBuilders {
Playwright = 'playwright-ng-schematics:playwright',
Cypress = '@cypress/schematic:cypress',
Nightwatch = '@nightwatch/schematics:nightwatch',
WebdriverIO = '@wdio/schematics:wdio',
Puppeteer = '@puppeteer/ng-schematics:puppeteer',
}

@alan-agius4 alan-agius4 added the target: major This PR is targeted for the next major release label Feb 25, 2026
Copy link
Collaborator

@alan-agius4 alan-agius4 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ts-node should also be removed as a dependencies in all package.json

@@ -1,93 +0,0 @@
import express from 'express';
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This tests it needs, it seems that it was not migrated yet to not use protractor.

browsers:
needs: build
runs-on: ubuntu-latest
name: Browser Compatibility Tests
env:
SAUCE_TUNNEL_IDENTIFIER: angular-cli-${{ github.workflow }}-${{ github.run_number }}
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@16c5f6e199e3e1b67ae5a62385d36366bb9a429d
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@16c5f6e199e3e1b67ae5a62385d36366bb9a429d
- name: Setup Bazel RBE
uses: angular/dev-infra/github-actions/bazel/configure-remote@16c5f6e199e3e1b67ae5a62385d36366bb9a429d
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Run E2E Browser tests
env:
SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }}
SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }}
SAUCE_LOG_FILE: /tmp/angular/sauce-connect.log
SAUCE_READY_FILE: /tmp/angular/sauce-connect-ready-file.lock
SAUCE_PID_FILE: /tmp/angular/sauce-connect-pid-file.lock
SAUCE_TUNNEL_IDENTIFIER: 'angular-${{ github.run_number }}'
SAUCE_READY_FILE_TIMEOUT: 120
run: |
./scripts/saucelabs/start-tunnel.sh &
./scripts/saucelabs/wait-for-tunnel.sh
pnpm bazel test --config=saucelabs //tests:e2e.saucelabs
./scripts/saucelabs/stop-tunnel.sh
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
if: ${{ failure() }}
with:
name: sauce-connect-log
path: ${{ env.SAUCE_CONNECT_DIR_IN_HOST }}/sauce-connect.log

//cc @clydin

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So we should update it with any of the new E2E tools or rather create new tests from scratch?

I had the impression that it's Protractor-specific.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action: review The PR is still awaiting reviews from at least one requested reviewer area: @angular-devkit/build-angular area: @schematics/angular target: major This PR is targeted for the next major release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants