diff --git a/.bazelrc b/.bazelrc
index 1b4e7132ed04e..a0b7f912d3f75 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -4,33 +4,42 @@ build --flag_alias=pin_browsers=//common:pin_browsers
build --flag_alias=headless=//common:headless
# Set the default java toolchain
+
build --java_runtime_version=remotejdk_11
build --tool_java_language_version=11
# We target java 8 by default
+
build --javacopt="--release 8"
# Require java dependencies to be used and first-order
+
build --experimental_strict_java_deps=strict
build --explicit_java_test_deps
# Ensure builds are unpolluted by the user env
+
build --incompatible_strict_action_env
# Except for the PATH environment variable
+
build --action_env=PATH
# For build stamping
+
build --workspace_status_command=scripts/build-info.py
# Make sure we get something helpful when tests fail
+
build --verbose_failures
build --test_output=errors
# Tests need to be able to open sockets on localhost
+
build --noexperimental_sandbox_default_allow_network
# pass environment variables to the test environment
+
build --test_env=CI
build --test_env=DASHBOARD_URL
build --test_env=DISPLAY
@@ -41,6 +50,7 @@ build --test_env=MOZ_HEADLESS
build --test_env=PATH # Remove once browser pinning works
build --test_env=SELENIUM_BROWSER
build --test_env=TRAVIS
+build --test_env=PYTHON_VERSION
test --test_timeout=1800
diff --git a/.bazelversion b/.bazelversion
index fae6e3d04b2ca..ac14c3dfaa865 100644
--- a/.bazelversion
+++ b/.bazelversion
@@ -1 +1 @@
-4.2.1
+5.1.1
diff --git a/.github/actions/bazel-test/action.yml b/.github/actions/bazel-test/action.yml
index 7d1d8b767fceb..192b5ce67c046 100644
--- a/.github/actions/bazel-test/action.yml
+++ b/.github/actions/bazel-test/action.yml
@@ -1,11 +1,16 @@
name: 'Run bazel query and pass found targets to bazel test'
inputs:
- query: # id of input
+ query: # id of input
+ description: 'Query to execute and to be used when running tests'
required: true
+ attempts:
+ description: 'Test attempts before giving up'
+ required: false
+ default: 1
runs:
using: "composite"
steps:
- run: |
cp .github/.bazelrc.local .
- bazel query "${{ inputs.query }}" | xargs bazel test
+ bazel query "${{ inputs.query }}" | xargs bazel test --flaky_test_attempts=${{ inputs.attempts }}
shell: bash
diff --git a/.github/actions/bazel/action.yml b/.github/actions/bazel/action.yml
index 98ab63b913971..913080e649d73 100644
--- a/.github/actions/bazel/action.yml
+++ b/.github/actions/bazel/action.yml
@@ -1,6 +1,8 @@
name: 'Run bazel'
+description: 'Simple action to run bazel commands'
inputs:
command: # id of input
+ description: 'Bazel command to run'
required: true
runs:
using: "composite"
diff --git a/.github/actions/setup-bazelisk/action.yml b/.github/actions/setup-bazelisk/action.yml
index e51bdfb1e8af9..17a09f0cb45d6 100644
--- a/.github/actions/setup-bazelisk/action.yml
+++ b/.github/actions/setup-bazelisk/action.yml
@@ -1,12 +1,14 @@
name: 'Setup bazelisk'
+description: 'Downloads and configures bazelisk'
inputs:
- version: # id of input
+ version:
+ description: 'Bazelisk version to download'
required: false
- default: 'v1.10.1'
+ default: 'v1.11.0'
runs:
using: "composite"
steps:
- run: |
- curl -L -o bazelisk "https://github.com/bazelbuild/bazelisk/releases/download/v1.10.1/bazelisk-linux-amd64"
+ curl -L -o bazelisk "https://github.com/bazelbuild/bazelisk/releases/download/$%7B%7B%20inputs.version%20%7D%7D/bazelisk-linux-amd64"
chmod +x bazelisk && sudo mv bazelisk /usr/local/bin/bazel
shell: bash
diff --git a/.github/actions/setup-chrome/action.yml b/.github/actions/setup-chrome/action.yml
index 3ba8107fc84f6..b0d724391906f 100644
--- a/.github/actions/setup-chrome/action.yml
+++ b/.github/actions/setup-chrome/action.yml
@@ -1,4 +1,10 @@
-name: 'Setup Chrome and chromedriver'
+name: 'Setup Chrome and ChromeDriver'
+description: 'Setup Chrome and ChromeDriver'
+inputs:
+ version:
+ description: 'Chrome version'
+ required: false
+ default: 'stable'
runs:
using: "composite"
steps:
@@ -14,8 +20,5 @@ runs:
export CHROMEDRIVER_VERSION=`curl -s https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_MAJOR_VERSION%%.*}`
curl -L -O "https://chromedriver.storage.googleapis.com/$%7BCHROMEDRIVER_VERSION%7D/chromedriver_linux64.zip"
unzip chromedriver_linux64.zip && chmod +x chromedriver && sudo mv chromedriver /usr/local/bin
- export CHROMEDRIVER_VERSION=`curl -s https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_MAJOR_VERSION%%.*}`
- curl -L -O "https://chromedriver.storage.googleapis.com/$%7BCHROMEDRIVER_VERSION%7D/chromedriver_linux64.zip"
- unzip chromedriver_linux64.zip && chmod +x chromedriver && sudo mv chromedriver /usr/local/bin
- chromedriver -version
+ chromedriver --version
shell: bash
diff --git a/.github/actions/setup-edge/action.yml b/.github/actions/setup-edge/action.yml
new file mode 100644
index 0000000000000..66011875dfa56
--- /dev/null
+++ b/.github/actions/setup-edge/action.yml
@@ -0,0 +1,25 @@
+name: 'Setup Edge and EdgeDriver'
+description: 'Setup Edge and EdgeDriver'
+inputs:
+ version:
+ description: 'Edge version'
+ required: false
+ default: 'stable'
+runs:
+ using: "composite"
+ steps:
+ - run: |
+ wget -q -O - https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
+ echo "deb https://packages.microsoft.com/repos/edge stable main" | sudo tee -a /etc/apt/sources.list.d/microsoft-edge.list
+ sudo apt-get update -qqy
+ sudo apt-get -qqy install microsoft-edge-stable
+ EDGE_VERSION=$(microsoft-edge-stable --version)
+ EDGE_FULL_VERSION=${EDGE_VERSION%%.*}
+ EDGE_MAJOR_VERSION=${EDGE_FULL_VERSION//[!0-9]}
+ sudo rm /etc/apt/sources.list.d/microsoft-edge.list
+
+ export EDGE_DRIVER_VERSION=$(wget --no-verbose -O - "https://msedgedriver.azureedge.net/LATEST_RELEASE_$%7BEDGE_MAJOR_VERSION%7D_LINUX" | tr -cd "\11\12\15\40-\176" | tr -d "\r")
+ wget --no-verbose https://msedgedriver.azureedge.net/${EDGE_DRIVER_VERSION}/edgedriver_linux64.zip
+ unzip edgedriver_linux64.zip && chmod +x msedgedriver && sudo mv msedgedriver /usr/local/bin
+ msedgedriver --version
+ shell: bash
diff --git a/.github/actions/setup-firefox/action.yml b/.github/actions/setup-firefox/action.yml
index 7ca4301c5ad89..0e903f5426d64 100644
--- a/.github/actions/setup-firefox/action.yml
+++ b/.github/actions/setup-firefox/action.yml
@@ -1,13 +1,20 @@
-name: 'Setup Firefox and geckodriver'
+name: 'Setup Firefox and GeckoDriver'
+description: 'Setup Firefox and GeckoDriver via browser-actions'
+inputs:
+ version:
+ description: 'Firefox version'
+ required: false
+ default: 'latest'
runs:
using: "composite"
steps:
- - run: |
- GECKODRIVER_URL=`curl -Ls -o /dev/null -w %{url_effective} https://github.com/mozilla/geckodriver/releases/latest`
- GECKODRIVER_VERSION=`echo $GECKODRIVER_URL | sed 's#.*/##'`
- export GECKODRIVER_DOWNLOAD="https://github.com/mozilla/geckodriver/releases/download/$GECKODRIVER_VERSION/geckodriver-$GECKODRIVER_VERSION-linux64.tar.gz"
- curl -L -o geckodriver.tar.gz $GECKODRIVER_DOWNLOAD
- gunzip -c geckodriver.tar.gz | tar xopf -
- chmod +x geckodriver && sudo mv geckodriver /usr/local/bin
- geckodriver --version
+ - name: Setup Firefox
+ uses: browser-actions/setup-firefox@latest
+ with:
+ firefox-version: ${{ inputs.version }}
+ - name: Check GeckoDriver
+ run: geckodriver --version
shell: bash
+# Deactivating until https://github.com/mozilla/geckodriver/issues/2009 gets fixed
+# - name: Setup GeckoDriver
+# uses: browser-actions/setup-geckodriver@latest
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000000000..201fa59406196
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,8 @@
+version: 2
+updates:
+ - package-ecosystem: github-actions
+ directory: "/"
+ schedule:
+ interval: daily
+ time: '08:00'
+ open-pull-requests-limit: 99
diff --git a/.github/label-commenter-config.yml b/.github/label-commenter-config.yml
index c8207477b1d80..140b67edbc1af 100644
--- a/.github/label-commenter-config.yml
+++ b/.github/label-commenter-config.yml
@@ -24,8 +24,8 @@ labels:
If the issue is valid but there is no time to troubleshoot it, consider adding the help wanted label.
- If the issue requires changes or fixes from an external project (e.g., ChromeDriver, GeckoDriver, W3C),
- add the applicable G-* label, and it will provide the correct link and auto-close the
+ If the issue requires changes or fixes from an external project (e.g., ChromeDriver, GeckoDriver, MSEdgeDriver, W3C),
+ add the applicable G-* label, and it will provide the correct link and auto-close the
issue.
@@ -70,7 +70,20 @@ labels:
You can see if the feature is passing in the [Web Platform Tests](https://wpt.fyi/results/webdriver/tests).
- If it is something new, please [Create an Issue](https://github.com/mozilla/geckodriver/issues/new) with the GeckoDriver team.
+ If it is something new, please [create an Issue](https://github.com/mozilla/geckodriver/issues/new) with the GeckoDriver team.
+
+ Feel free to comment the issues that you raise back in this issue. Thank you.
+ action: close
+ - name: G-msedgedriver
+ labeled:
+ issue:
+ body: |
+ Hi, @{{ issue.user.login }}.
+ This issue has been determined to require fixes in [MSEdgeDriver](https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/).
+
+ You can see if the feature is passing in the [Web Platform Tests](https://wpt.fyi/results/webdriver/tests).
+
+ If it is something new, please [create an Issue](https://github.com/MicrosoftEdge/EdgeWebDriver/issues/new) with the MSEdgeDriver team.
Feel free to comment the issues that you raise back in this issue. Thank you.
action: close
@@ -81,7 +94,9 @@ labels:
Hi, @{{ issue.user.login }}.
Please follow the issue template, we need more information to reproduce the issue.
- Either a complete code snippet (if more than one file is needed, provide a GitHub repo and instructions to run the code), the specific versions used, or a more detailed description to help us understand the issue.
+ Either a complete code snippet and URL/HTML (if more than one file is needed, provide a GitHub repo and instructions to run the code), the specific versions used, or a more detailed description to help us understand the issue.
+
+ Note: If you cannot share your code and URL/HTML, any complete code snippet and URL/HTML that reproduces the issue is good enough.
Reply to this issue when all information is provided, thank you.
- name: I-question
diff --git a/.github/workflows/java.yml b/.github/workflows/ci-java.yml
similarity index 57%
rename from .github/workflows/java.yml
rename to .github/workflows/ci-java.yml
index 91d4acc1c3466..358083d70d0c9 100644
--- a/.github/workflows/java.yml
+++ b/.github/workflows/ci-java.yml
@@ -1,22 +1,35 @@
-name: Java workflow
+# Configuration for Java CI
+# To force the execution of this workflow, add [run java] to your commit message
+name: 'CI - Java'
on:
+ workflow_dispatch:
+
+ schedule:
+ - cron: '15 9,21 * * *'
+
push:
- branches:
- - trunk
+
pull_request:
- branches:
- - trunk
env:
- NODE_VERSION: '13.x'
+ NODE_VERSION: '16.x'
jobs:
+ check_workflow:
+ permissions:
+ contents: none
+ uses: ./.github/workflows/should-workflow-run.yml
+ with:
+ bazel-target-prefix: '//java'
+
build:
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run java]') == true }}
+ needs: check_workflow
runs-on: ubuntu-latest
steps:
- name: Checkout source tree
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
- name: Cache Bazel artifacts
uses: actions/cache@v2
with:
@@ -38,11 +51,12 @@ jobs:
command: build grid
small_tests:
- needs: build
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run java]') == true }}
+ needs: [ check_workflow, build ]
runs-on: ubuntu-latest
steps:
- name: Checkout source tree
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Cache Bazel artifacts
@@ -71,21 +85,24 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- lint:
- needs: build
+ medium_tests:
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run java]') == true }}
+ needs: [ check_workflow, small_tests ]
runs-on: ubuntu-latest
steps:
- name: Checkout source tree
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
- name: Cache Bazel artifacts
uses: actions/cache@v2
with:
path: |
~/.cache/bazel-disk
~/.cache/bazel-repo
- key: ${{ runner.os }}-bazel-lint-${{ hashFiles('**/BUILD.bazel') }}
+ key: ${{ runner.os }}-bazel-medium-tests-${{ hashFiles('**/BUILD.bazel') }}
restore-keys: |
- ${{ runner.os }}-bazel-lint-
+ ${{ runner.os }}-bazel-medium-tests-
${{ runner.os }}-bazel-build-
- name: Setup bazelisk
uses: ./.github/actions/setup-bazelisk
@@ -93,26 +110,28 @@ jobs:
uses: actions/setup-java@v1
with:
java-version: '11'
- - name: Run linter
+ - name: Run medium tests
uses: ./.github/actions/bazel-test
with:
- query: attr(tags, lint, tests(//java/...))
+ query: attr(size, medium, tests(//java/...)) except attr(tags, lint, tests(//java/...))
+ attempts: 3
- chrome_tests:
- needs: small_tests
+ lint:
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run java]') == true }}
+ needs: [ check_workflow, build ]
runs-on: ubuntu-latest
steps:
- name: Checkout source tree
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
- name: Cache Bazel artifacts
uses: actions/cache@v2
with:
path: |
~/.cache/bazel-disk
~/.cache/bazel-repo
- key: ${{ runner.os }}-bazel-chrome-tests-${{ hashFiles('**/BUILD.bazel') }}
+ key: ${{ runner.os }}-bazel-lint-${{ hashFiles('**/BUILD.bazel') }}
restore-keys: |
- ${{ runner.os }}-bazel-chrome-tests-
+ ${{ runner.os }}-bazel-lint-
${{ runner.os }}-bazel-build-
- name: Setup bazelisk
uses: ./.github/actions/setup-bazelisk
@@ -120,32 +139,35 @@ jobs:
uses: actions/setup-java@v1
with:
java-version: '11'
- - name: Setup Chrome and ChromeDriver
- uses: ./.github/actions/setup-chrome
- - name: Start XVFB
- run: Xvfb :99 &
- - name: Run browser tests in Chrome
+ - name: Run linter
uses: ./.github/actions/bazel-test
with:
- query: attr(tags, chrome, tests(//java/...)) except attr(tags, remote, tests(//java/...))
- env:
- DISPLAY: :99
+ query: attr(tags, lint, tests(//java/...))
- firefox_tests:
- needs: small_tests
+ browser_tests:
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run java]') == true }}
+ needs: [ check_workflow, small_tests ]
runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - { "browser": "firefox", "version": "latest" }
+ - { "browser": "firefox", "version": "latest-beta" }
+ - { "browser": "firefox", "version": "latest-devedition" }
+ - { "browser": "chrome", "version": "stable" }
steps:
- name: Checkout source tree
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
- name: Cache Bazel artifacts
uses: actions/cache@v2
with:
path: |
~/.cache/bazel-disk
~/.cache/bazel-repo
- key: ${{ runner.os }}-bazel-firefox-tests-${{ hashFiles('**/BUILD.bazel') }}
+ key: ${{ runner.os }}-bazel-${{ matrix.browser }}-tests-${{ hashFiles('**/BUILD.bazel') }}
restore-keys: |
- ${{ runner.os }}-bazel-firefox-tests-
+ ${{ runner.os }}-bazel-${{ matrix.browser }}-tests-
${{ runner.os }}-bazel-build-
- name: Setup bazelisk
uses: ./.github/actions/setup-bazelisk
@@ -155,33 +177,51 @@ jobs:
java-version: '11'
- name: Setup Firefox and GeckoDriver
uses: ./.github/actions/setup-firefox
+ with:
+ version: ${{ matrix.version }}
+ if: |
+ matrix.browser == 'firefox'
+ - name: Setup Chrome and ChromeDriver
+ uses: ./.github/actions/setup-chrome
+ with:
+ version: ${{ matrix.version }}
+ if: |
+ matrix.browser == 'chrome'
- name: Start XVFB
run: Xvfb :99 &
- - name: Run browser tests in Firefox
+ - name: Run browser tests in ${{ matrix.browser }}
uses: ./.github/actions/bazel-test
with:
- query: attr(tags, firefox, tests(//java/...)) except attr(tags, 'rc|remote', tests(//java/...))
+ query: attr(tags, ${{ matrix.browser }}, tests(//java/...)) except attr(tags, 'lint|rc|remote', tests(//java/...))
+ attempts: 3
env:
DISPLAY: :99
-
server_tests:
- needs: [ chrome_tests, firefox_tests ]
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run java]') == true }}
+ needs: [ check_workflow, small_tests ]
runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - { "browser": "firefox", "version": "latest" }
+ - { "browser": "firefox", "version": "latest-beta" }
+ - { "browser": "firefox", "version": "latest-devedition" }
+ - { "browser": "chrome", "version": "stable" }
steps:
- name: Checkout source tree
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
- name: Cache Bazel artifacts
uses: actions/cache@v2
with:
path: |
~/.cache/bazel-disk
~/.cache/bazel-repo
- key: ${{ runner.os }}-bazel-server-tests-${{ hashFiles('**/BUILD.bazel') }}
+ key: ${{ runner.os }}-bazel-${{ matrix.browser }}-server-tests-${{ hashFiles('**/BUILD.bazel') }}
restore-keys: |
- ${{ runner.os }}-bazel-server-tests-
- ${{ runner.os }}-bazel-chrome-tests-
- ${{ runner.os }}-bazel-firefox-tests-
+ ${{ runner.os }}-bazel-${{ matrix.browser }}-server-tests-
+ ${{ runner.os }}-bazel-${{ matrix.browser }}-tests-
${{ runner.os }}-bazel-build-
- name: Setup bazelisk
uses: ./.github/actions/setup-bazelisk
@@ -189,25 +229,35 @@ jobs:
uses: actions/setup-java@v1
with:
java-version: '11'
- - name: Setup Chrome and ChromeDriver
- uses: ./.github/actions/setup-chrome
- name: Setup Firefox and GeckoDriver
uses: ./.github/actions/setup-firefox
+ with:
+ version: ${{ matrix.version }}
+ if: |
+ matrix.browser == 'firefox'
+ - name: Setup Chrome and ChromeDriver
+ uses: ./.github/actions/setup-chrome
+ with:
+ version: ${{ matrix.version }}
+ if: |
+ matrix.browser == 'chrome'
- name: Start XVFB
run: Xvfb :99 &
- name: Run server tests
uses: ./.github/actions/bazel-test
with:
- query: tests(//java/...) except attr(tags, 'rc|lint|ie|edge|edgehtml|safari', tests(//java/...))
+ query: attr(tags, ${{ matrix.browser }}, tests(//java/...)) intersect attr(tags, 'remote', tests(//java/...))
+ attempts: 3
env:
DISPLAY: :99
rc_tests:
- needs: small_tests
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run java]') == true }}
+ needs: [ check_workflow, small_tests ]
runs-on: ubuntu-latest
steps:
- name: Checkout source tree
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
- name: Cache Bazel artifacts
uses: actions/cache@v2
with:
@@ -226,21 +276,25 @@ jobs:
java-version: '11'
- name: Setup Firefox and GeckoDriver
uses: ./.github/actions/setup-firefox
+ with:
+ version: latest
- name: Start XVFB
run: Xvfb :99 &
- name: Run browser tests in Firefox
uses: ./.github/actions/bazel-test
with:
query: attr(tags, rc, tests(//java/...))
+ attempts: 3
env:
DISPLAY: :99
javadoc:
- needs: build
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run java]') == true }}
+ needs: [ check_workflow, build ]
runs-on: ubuntu-latest
steps:
- name: Checkout source tree
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
- name: Cache Bazel artifacts
uses: actions/cache@v2
with:
diff --git a/.github/workflows/javascript.yml b/.github/workflows/ci-javascript.yml
similarity index 56%
rename from .github/workflows/javascript.yml
rename to .github/workflows/ci-javascript.yml
index 22dd20a1444c7..4ad3f705e5461 100644
--- a/.github/workflows/javascript.yml
+++ b/.github/workflows/ci-javascript.yml
@@ -1,31 +1,35 @@
-name: JavaScript workflow
+# Configuration for JavaScript CI
+# To force the execution of this workflow, add [run javascript] to your commit message
+name: 'CI - JavaScript'
on:
+ workflow_dispatch:
+
+ schedule:
+ - cron: '45 9,21 * * *'
+
push:
- branches:
- - trunk
- paths:
- - .bazel*
- - .github/actions/**
- - .github/workflows/javascript.yml
- - javascript/**
- - common/**
- - package.json
- - package-lock.json
+
pull_request:
- branches:
- - trunk
- paths:
- - .bazel*
- - .github/actions/**
- - .github/workflows/javascript.yml
- - javascript/**
- - common/**
- - package.json
- - package-lock.json
+
jobs:
+ check_workflow:
+ permissions:
+ contents: none
+ uses: ./.github/workflows/should-workflow-run.yml
+ with:
+ bazel-target-prefix: '//javascript'
+
node_tests:
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run javascript]') == true }}
+ needs: check_workflow
runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - { "browser": "firefox", "version": "latest" }
+ - { "browser": "chrome", "version": "stable" }
steps:
- name: Checkout source tree
uses: actions/checkout@v2
@@ -49,19 +53,32 @@ jobs:
java-version: 11
- name: Setup bazelisk
uses: ./.github/actions/setup-bazelisk
- - name: Setup Firefox and geckodriver
+ - name: Setup Firefox and GeckoDriver
uses: ./.github/actions/setup-firefox
+ with:
+ version: ${{ matrix.version }}
+ if: |
+ matrix.browser == 'firefox'
+ - name: Setup Chrome and ChromeDriver
+ uses: ./.github/actions/setup-chrome
+ with:
+ version: ${{ matrix.version }}
+ if: |
+ matrix.browser == 'chrome'
- name: Start XVFB
run: Xvfb :99 &
- - name: Run JavaScript tests on Firefox
- uses: ./.github/actions/bazel
+ - name: Run JavaScript tests
+ uses: ./.github/actions/bazel-test
with:
- command: test //javascript/node/selenium-webdriver:tests
+ query: //javascript/node/selenium-webdriver:tests
+ attempts: 3
env:
DISPLAY: :99
- SELENIUM_BROWSER: firefox
+ SELENIUM_BROWSER: ${{ matrix.browser }}
firefox_atom_tests:
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run javascript]') == true }}
+ needs: check_workflow
runs-on: ubuntu-latest
steps:
- name: Checkout source tree
@@ -81,8 +98,10 @@ jobs:
java-version: 11
- name: Setup bazelisk
uses: ./.github/actions/setup-bazelisk
- - name: Setup Firefox and geckodriver
+ - name: Setup Firefox and GeckoDriver
uses: ./.github/actions/setup-firefox
+ with:
+ version: ${{ matrix.version }}
- name: Start XVFB
run: Xvfb :99 &
- name: Run atom tests on Firefox
@@ -96,6 +115,8 @@ jobs:
# As soon as this gets merged https://github.com/facebook/jest/pull/9351, we should upgrade Jest and
# run bazel test javascript/grid-ui:test for these tests
grid_ui_unit_tests:
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run javascript]') == true }}
+ needs: check_workflow
runs-on: ubuntu-latest
steps:
- name: Checkout source tree
@@ -103,7 +124,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@v2
with:
- node-version: '15.x'
+ node-version: '16.x'
- name: NPM install
run: cd javascript/grid-ui && npm install
- name: Run unit tests
diff --git a/.github/workflows/python.yml b/.github/workflows/ci-python.yml
similarity index 70%
rename from .github/workflows/python.yml
rename to .github/workflows/ci-python.yml
index 29ba4d584ebe7..8a20a7a072b21 100644
--- a/.github/workflows/python.yml
+++ b/.github/workflows/ci-python.yml
@@ -1,33 +1,28 @@
-name: Python workflow
+# Configuration for Python CI
+# To force the execution of this workflow, add [run python] to your commit message
+name: 'CI - Python'
on:
+ workflow_dispatch:
+
+ schedule:
+ - cron: '05 9,21 * * *'
+
push:
- branches:
- - trunk
- paths:
- - .bazel*
- - .github/actions/**
- - .github/workflows/python.yml
- - common/**
- - javascript/atoms/**
- - javascript/cdp-support/**
- - javascript/webdriver/**
- - py/**
+
pull_request:
- branches:
- - trunk
- paths:
- - .bazel*
- - .github/actions/**
- - .github/workflows/python.yml
- - common/**
- - javascript/atoms/**
- - javascript/cdp-support/**
- - javascript/webdriver/**
- - py/**
jobs:
+ check_workflow:
+ permissions:
+ contents: none
+ uses: ./.github/workflows/should-workflow-run.yml
+ with:
+ bazel-target-prefix: '//py'
+
tox_flake8:
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run python]') == true }}
+ needs: check_workflow
runs-on: ubuntu-latest
steps:
- name: Checkout source tree
@@ -46,6 +41,8 @@ jobs:
TOXENV: flake8
tox_docs:
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run python]') == true }}
+ needs: check_workflow
runs-on: ubuntu-latest
steps:
- name: Checkout source tree
@@ -64,6 +61,8 @@ jobs:
TOXENV: docs
tox_mypy:
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run python]') == true }}
+ needs: check_workflow
runs-on: ubuntu-latest
steps:
- name: Checkout source tree
@@ -84,6 +83,8 @@ jobs:
TOXENV: mypy
unit_tests:
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run python]') == true }}
+ needs: check_workflow
runs-on: ubuntu-latest
steps:
- name: Checkout source tree
@@ -113,7 +114,8 @@ jobs:
command: test //py:unit
chrome_tests:
- needs: unit_tests
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run python]') == true }}
+ needs: [ check_workflow, unit_tests ]
runs-on: ubuntu-latest
steps:
- name: Checkout source tree
@@ -150,7 +152,8 @@ jobs:
DISPLAY: :99
firefox_tests_remote:
- needs: unit_tests
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run python]') == true }}
+ needs: [ check_workflow, unit_tests ]
runs-on: ubuntu-latest
steps:
- name: Checkout source tree
@@ -175,8 +178,10 @@ jobs:
uses: actions/setup-java@v1
with:
java-version: '11'
- - name: Setup Firefox and GeckoDriver
- uses: ./.github/actions/setup-firefox
+ - name: Setup Firefox
+ uses: browser-actions/setup-firefox@latest
+ - name: Setup GeckoDriver
+ uses: browser-actions/setup-geckodriver@latest
- name: Start XVFB
run: Xvfb :99 &
- name: Run browser tests in Firefox (Remote)
@@ -187,7 +192,8 @@ jobs:
DISPLAY: :99
firefox_tests:
- needs: unit_tests
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run python]') == true }}
+ needs: [ check_workflow, unit_tests ]
runs-on: ubuntu-latest
steps:
- name: Checkout source tree
@@ -212,8 +218,10 @@ jobs:
uses: actions/setup-java@v1
with:
java-version: '11'
- - name: Setup Firefox and GeckoDriver
- uses: ./.github/actions/setup-firefox
+ - name: Setup Firefox
+ uses: browser-actions/setup-firefox@latest
+ - name: Setup GeckoDriver
+ uses: browser-actions/setup-geckodriver@latest
- name: Start XVFB
run: Xvfb :99 &
- name: Run browser tests in Firefox
@@ -222,3 +230,4 @@ jobs:
command: test //py:test-firefox
env:
DISPLAY: :99
+
diff --git a/.github/workflows/ruby.yml b/.github/workflows/ci-ruby.yml
similarity index 65%
rename from .github/workflows/ruby.yml
rename to .github/workflows/ci-ruby.yml
index 3f45b4b38ab37..35e5f312fbc11 100644
--- a/.github/workflows/ruby.yml
+++ b/.github/workflows/ci-ruby.yml
@@ -1,20 +1,33 @@
-name: Ruby workflow
+# Configuration for Ruby CI
+# To force the execution of this workflow, add [run ruby] to your commit message
+name: 'CI - Ruby'
on:
+ workflow_dispatch:
+
+ schedule:
+ - cron: '35 9,21 * * *'
+
push:
- branches:
- - trunk
+
pull_request:
- branches:
- - trunk
jobs:
+ check_workflow:
+ permissions:
+ contents: none
+ uses: ./.github/workflows/should-workflow-run.yml
+ with:
+ bazel-target-prefix: '//rb'
+
build:
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run ruby]') == true }}
+ needs: check_workflow
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
- target: ['selenium-devtools', 'selenium-webdriver']
+ target: [ 'selenium-devtools', 'selenium-webdriver' ]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
@@ -22,7 +35,7 @@ jobs:
java-version: 11
- uses: ruby/setup-ruby@v1
with:
- ruby-version: 2.6
+ ruby-version: 2.7
- uses: actions/cache@v2
with:
path: |
@@ -37,11 +50,13 @@ jobs:
command: build //rb:${{ matrix.target }}
chrome-test:
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run ruby]') == true }}
+ needs: check_workflow
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
- target: ['chrome-test', 'remote-chrome-test']
+ target: [ 'chrome-test', 'remote-chrome-test' ]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
@@ -49,7 +64,7 @@ jobs:
java-version: 11
- uses: ruby/setup-ruby@v1
with:
- ruby-version: 2.6
+ ruby-version: 2.7
- uses: actions/cache@v2
with:
path: |
@@ -68,11 +83,13 @@ jobs:
DISPLAY: :99
firefox-test:
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run ruby]') == true }}
+ needs: check_workflow
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
- target: ['firefox-test', 'remote-firefox-test']
+ target: [ 'firefox-test', 'remote-firefox-test' ]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
@@ -80,7 +97,7 @@ jobs:
java-version: 11
- uses: ruby/setup-ruby@v1
with:
- ruby-version: 2.6
+ ruby-version: 2.7
- uses: actions/cache@v2
with:
path: |
@@ -90,7 +107,10 @@ jobs:
restore-keys: |
${{ runner.os }}-bazel-ruby-${{ matrix.target }}-
- uses: ./.github/actions/setup-bazelisk
- - uses: ./.github/actions/setup-firefox
+ - name: Setup Firefox
+ uses: browser-actions/setup-firefox@latest
+ - name: Setup GeckoDriver
+ uses: browser-actions/setup-geckodriver@latest
- run: Xvfb :99 &
- uses: ./.github/actions/bazel
with:
@@ -99,12 +119,14 @@ jobs:
DISPLAY: :99
docs:
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run ruby]') == true }}
+ needs: check_workflow
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ruby/setup-ruby@v1
with:
- ruby-version: 2.6
+ ruby-version: 2.7
- uses: actions/cache@v2
with:
path: |
@@ -119,12 +141,14 @@ jobs:
command: run //rb:docs
lint:
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run ruby]') == true }}
+ needs: check_workflow
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ruby/setup-ruby@v1
with:
- ruby-version: 2.6
+ ruby-version: 2.7
- uses: actions/cache@v2
with:
path: |
@@ -139,11 +163,13 @@ jobs:
command: run //rb:lint
unit-test:
+ if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run ruby]') == true }}
+ needs: check_workflow
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
- ruby: ['2.6', 'jruby-9.3.0.0']
+ ruby: [ '2.7', '3.1' ]
steps:
- uses: actions/checkout@v2
- uses: ruby/setup-ruby@v1
diff --git a/.github/workflows/should-workflow-run.yml b/.github/workflows/should-workflow-run.yml
new file mode 100644
index 0000000000000..f1dfa2bca6ca4
--- /dev/null
+++ b/.github/workflows/should-workflow-run.yml
@@ -0,0 +1,46 @@
+name: Should workflow run?
+
+on:
+ workflow_call:
+ inputs:
+ commit-range:
+ description: Commits considered to determine bazel targets
+ required: false
+ type: string
+ default: HEAD^..HEAD
+ bazel-target-prefix:
+ description: Bazel target prefix used to determine if the code path will be used
+ required: true
+ type: string
+
+ outputs:
+ result:
+ description: "Boolean to be used in the job to decide if the job runs or not"
+ value: ${{ jobs.check_workflow_run.outputs.result }}
+
+jobs:
+ check_workflow_run:
+ runs-on: ubuntu-latest
+ outputs:
+ result: ${{ steps.check-bazel-target-prefix.outputs.run-workflow }}
+ steps:
+ - name: Checkout source tree
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 50
+ - name: Setup bazelisk
+ uses: ./.github/actions/setup-bazelisk
+ - name: Setup Java
+ uses: actions/setup-java@v1
+ with:
+ java-version: '11'
+ - name: Copy bazelrc
+ run: cp .github/.bazelrc.local .
+ shell: bash
+ - name: Check bazel target prefix
+ id: check-bazel-target-prefix
+ run: |
+ ./scripts/github-actions/should-workflow-run.sh
+ shell: bash
+ env:
+ BAZEL_TARGET_PREFIX: ${{ inputs.bazel-target-prefix }}
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
index fe3a81d7a6318..555bc3b15a467 100644
--- a/.github/workflows/stale.yml
+++ b/.github/workflows/stale.yml
@@ -5,16 +5,21 @@ on:
schedule:
- cron: '15 10,20 * * *'
+permissions:
+ contents: read
+
jobs:
stale:
+ permissions:
+ issues: write # for actions/stale to close stale issues
+ pull-requests: write # for actions/stale to close stale PRs
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v4
with:
- stale-issue-message: 'This issue is stale because it has been open 365 days with no activity. Remove stale label or comment or this will be closed in 14 days.'
+ stale-issue-message: 'This issue is stale because it has been open 280 days with no activity. Remove stale label or comment or this will be closed in 14 days.'
close-issue-message: 'This issue was closed because it has been stalled for 14 days with no activity.'
stale-issue-label: 'I-stale'
- exempt-issue-labels: 'help wanted'
- days-before-stale: 365
+ days-before-stale: 280
days-before-close: 14
operations-per-run: 200
diff --git a/.gitignore b/.gitignore
index 50d9d74a64a4e..4f1bc99771b08 100644
--- a/.gitignore
+++ b/.gitignore
@@ -107,6 +107,7 @@ Gemfile.lock
.idea/inspectionProfiles/Project_Default.xml
.idea/misc.xml
third_party/py/googlestorage/client_secrets.json
+.venv
venv
venv3
py/.idea
diff --git a/BUILD.bazel b/BUILD.bazel
index 118da4c4286c8..064dbd86fb22e 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -11,6 +11,31 @@ filegroup(
visibility = ["//visibility:public"],
)
+load("@rules_python//python:defs.bzl", "py_runtime_pair")
+
+py_runtime(
+ name = "py3_runtime",
+ interpreter_path = select({
+ "@platforms//os:macos": "/usr/bin/python3",
+ "@platforms//os:linux": "/usr/bin/python",
+ "@platforms//os:windows": "C:\\Python310\\python",
+ }),
+ python_version = "PY3",
+ stub_shebang = "#!/usr/bin/python3",
+)
+
+py_runtime_pair(
+ name = "py_runtime_pair",
+ py2_runtime = None,
+ py3_runtime = ":py3_runtime",
+)
+
+toolchain(
+ name = "py_toolchain",
+ toolchain = ":py_runtime_pair",
+ toolchain_type = "@rules_python//python:toolchain_type",
+)
+
alias(
name = "grid",
actual = "//java/src/org/openqa/selenium/grid:executable-grid",
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 9c3bfaf1debc9..ad009486d953f 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -180,7 +180,106 @@ Use `git rebase` (not `git merge`) to sync your work from time to time.
### Step 5: Test
Bug fixes and features **should have tests**. Look at other tests to
-see how they should be structured.
+see how they should be structured. Verify that new and existing tests are
+passing locally before pushing code.
+
+#### Running tests locally
+
+Build your code for the latest changes and run tests locally.
+
+##### Python
+
+
+ Click to see How to run Python Tests.
+
+
+ It's not mandatory to run tests sequentially but running Unit tests
+ before browser testing is recommended.
+
+ Unit Tests
+ ```shell
+ % bazel test //py:unit
+ ```
+
+ Remote Tests
+ ```shell
+ % bazel test --jobs 1 //py:test-remote
+ ```
+
+ Browser Tests
+ ```shell
+ % bazel test //py:test- #eg test-chrome, test-firefox
+ ```
+
+
+##### Javascript
+
+
+ Click to see How to run JavaScript Tests.
+
+
+ Node Tests
+ ```shell
+ % bazel test //javascript/node/selenium-webdriver:tests
+ ```
+
+ Firefox Atom Tests
+ ```shell
+ % bazel test --test_tag_filters=firefox //javascript/atoms/... //javascript/selenium-atoms/... //javascript/webdriver/...
+ ```
+
+ Grid UI Unit Tests
+ ```shell
+ % cd javascript/grid-ui && npm install && npm test
+ ```
+
+
+##### Java
+
+
+ Click to see How to run Java Tests.
+
+
+ Small Tests
+ ```shell
+ % bazel test --cache_test_results=no --test_size_filters=small grid java/test/...
+ ```
+
+ Large Tests
+ ```shell
+ % bazel test --cache_test_results=no java/test/org/openqa/selenium/grid/router:large-tests
+ ```
+
+ Browser Tests
+ ```shell
+ bazel test --test_size_filters=small,medium --cache_test_results=no --test_tag_filters=-browser-test //java/...
+ ```
+
+
+##### Ruby
+
+
+ Click to see How to run Ruby Tests.
+
+
+ It's not mandatory to run tests sequentially but running Unit tests
+ before browser testing is recommended.
+
+ Unit Tests
+ ```shell
+ % bazel test rb:unit-test
+ ```
+
+ Chrome Tests
+ ```shell
+ bazel test rb:chrome-test
+ ```
+
+ Remote Tests
+ ```shell
+ % bazel test --test_output=all --test_arg="-tfocus" --test_arg="--fail-fast" rb:remote-chrome-test
+ ```
+
### Step 6: Push
diff --git a/LICENSE b/LICENSE
index 3806328d0f7bb..ff027be4de8b8 100644
--- a/LICENSE
+++ b/LICENSE
@@ -187,7 +187,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.
- Copyright 2021 Software Freedom Conservancy (SFC)
+ Copyright 2022 Software Freedom Conservancy (SFC)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/NOTICE b/NOTICE
index 20a6bb6e21521..35e36f3e053b1 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,2 +1,2 @@
-Copyright 2011-2021 Software Freedom Conservancy
+Copyright 2011-2022 Software Freedom Conservancy
Copyright 2004-2011 Selenium committers
diff --git a/README.md b/README.md
index 1ee1f17911387..adb982e074f90 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,9 @@
# Selenium
-[](https://github.com/SeleniumHQ/selenium/actions?query=workflow%3A%22Python+workflow%22)
-[](https://github.com/SeleniumHQ/selenium/actions?query=workflow%3A%22Ruby+workflow%22)
-[](https://github.com/SeleniumHQ/selenium/actions?query=workflow%3A%22JavaScript+workflow%22)
-[](https://github.com/SeleniumHQ/selenium/actions?query=workflow%3A%22Java+workflow%22)
-
+[](https://github.com/SeleniumHQ/selenium/actions/workflows/ci-ruby.yml)
+[](https://github.com/SeleniumHQ/selenium/actions/workflows/ci-python.yml)
+[](https://github.com/SeleniumHQ/selenium/actions/workflows/ci-javascript.yml)
+[](https://github.com/SeleniumHQ/selenium/actions/workflows/ci-java.yml)
@@ -44,34 +43,26 @@ before submitting your pull requests.
the version of Bazel specified in `.bazelversion` file and transparently passes through all
command-line arguments to the real Bazel binary.
* The latest version of the [Java 11 OpenJDK](https://openjdk.java.net/)
-* `java` and `jar` on the PATH (make sure you use `java` executable from JDK but not JRE).
+* `java` and `jar` on the `$PATH` (make sure you use `java` executable from JDK but not JRE).
* To test this, try running the command `javac`. This command won't exist if you only have the JRE
installed. If you're met with a list of command-line options, you're referencing the JDK properly.
-* [Python 3.7+](https://www.python.org/downloads/)
-* `python` on the PATH
+* [Python 3.7+](https://www.python.org/downloads/) and `python` on the `PATH`
+* [Ruby 3+](https://www.ruby-lang.org/en/documentation/installation/) and `ruby` on the `PATH`
* [The tox automation project](http://tox.readthedocs.org/) for Python: `pip install tox`
-* MacOS users should have the latest version of Xcode installed, including the command-line tools.
-The following command should work:
-
-```bash
-xcode-select --install
-```
-
-* Users of Apple Silicon Macs should add `build
- --host_platform=//:rosetta` to their `.bazelrc.local` file. We are working
+* macOS users:
+ * Install the latest version of Xcode including the command-line tools. This command should work `xcode-select --install`
+ * Apple Silicon Macs should add `build --host_platform=//:rosetta` to their `.bazelrc.local` file. We are working
to make sure this isn't required in the long run.
-
-* Windows users should have the latest version of Visual Studio command line tools and build tools installed
+* Windows users:
+ * Latest version of [Visual Studio](https://www.visualstudio.com/) with command line tools and build tools installed
* `BAZEL_VS` environment variable should point to the location of the build tools,
e.g. `C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools`
* `BAZEL_VC` environment variable should point to the location of the command line tools,
e.g. `C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC`
* `BAZEL_VC_FULL_VERSION` environment variable should contain the version of the installed command line tools,
e.g. `14.27.29110`
-
-### Optional Requirements
-
-* Ruby 2.0
+ * A detailed setup guide can be seen on Jim Evan's [post](http://jimevansmusic.blogspot.com/2020/04/setting-up-windows-development.html)
+ * If the Jim's blog instructions were followed, also make sure `C:\tools\msys65\usr\bin` is on the `PATH`.
### Internet Explorer Driver
@@ -127,6 +118,15 @@ medium is akin to integration tests, and large is akin to end to end tests.
The `test_tag_filters` allow us to pass in browser names and a few different tags that we can
find in the code base.
+
+To build the Grid deployment jar, run this command:
+
+```sh
+bazel build grid
+```
+
+The log will show where the output jar is located.
+
#### JavaScript
@@ -177,8 +177,15 @@ bazel test //py:test-
```
If you add `--//common:pin_browsers` it will download the browsers and drivers for you to use.
+
+To install locally run:
+
+```sh
+bazel build //py:selenium-wheel
+pip install bazel-bin/py/selenium-*.whl
+```
-To publish run
+To publish run:
```sh
bazel build //py:selenium-wheel
@@ -206,16 +213,20 @@ To build the .NET code run:
```sh
bazel build //dotnet/...
```
+
+Also
+```sh
+bazel build //dotnet/test/common:chrome
+```
+
### Build Details
-* Bazel files are called BUILD.bazel
-* [crazyfun](https://github.com/SeleniumHQ/selenium/wiki/Crazy-Fun-Build) build files are called
-*build.desc*. This is an older build system, still in use in the project for Ruby bindings mostly.
-The order the modules are built is determined by the build system. If you want to build an
-individual module (assuming all dependent modules have previously been built), try the following:
+Bazel files are called BUILD.bazel, and the order the modules are built is determined
+by the build system. If you want to build an individual module (assuming all dependent
+modules have previously been built), try the following:
```sh
bazel test javascript/atoms:test
@@ -227,8 +238,12 @@ In this case, `javascript/atoms` is the module directory,
As you see *build targets* scroll past in the log,
you may want to run them individually.
+### Build Output
+
+`bazel` makes a top-level group of directories with the `bazel-` prefix on each directory.
+
-## Common Tasks (Bazel)
+### Common Tasks (Bazel)
To build the bulk of the Selenium binaries from source, run the
following command from the root folder:
@@ -237,12 +252,6 @@ following command from the root folder:
bazel build java/... javascript/...
```
-To build the grid deployment jar, run this command:
-
-```sh
-bazel build grid
-```
-
To run tests within a particular area of the project, use the "test" command, followed
by the folder or target. Tests are tagged with "small", "medium", or "large", and can be filtered
with the `--test_size_filters` option:
@@ -260,7 +269,7 @@ To bump the versions of the pinned browsers to their latest stable versions:
bazel run scripts:pinned_browsers > temp.bzl && mv temp.bzl common/repositories.bzl
```
-## Editing Code
+### Editing Code
Most of the team use either Intellij IDEA or VS.Code for their day-to-day editing. If you're
working in IntelliJ, then we highly recommend installing the [Bazel IJ
@@ -275,9 +284,8 @@ running, and editing code :)
## Tour
The codebase is generally segmented around the languages used to
-write the component. Selenium makes extensive use of JavaScript, so
-let's start there. Working on the JavaScript is easy. First of all,
-start the development server:
+write the component. Selenium makes extensive use of JavaScript, so
+let's start there. First of all, start the development server:
```sh
bazel run debug-server
@@ -286,23 +294,13 @@ bazel run debug-server
Now, navigate to
[http://localhost:2310/javascript](http://localhost:2310/javascript).
You'll find the contents of the `javascript/` directory being shown.
-We use the [Closure
-Library](https://developers.google.com/closure/library/) for
-developing much of the JavaScript, so now navigate to
+We use the [Closure Library](https://developers.google.com/closure/library/)
+for developing much of the JavaScript, so now navigate to
[http://localhost:2310/javascript/atoms/test](http://localhost:2310/javascript/atoms/test).
The tests in this directory are normal HTML files with names ending
with `_test.html`. Click on one to load the page and run the test.
-## Maven POM files
-
-Here is the [public Selenium Maven
-repository](https://repo1.maven.org/maven2/org/seleniumhq/selenium/).
-
-## Build Output
-
-`bazel` makes a top-level group of directories with the `bazel-` prefix on each directory.
-
## Help with `go`
More general, but basic, help for `go`…
@@ -311,21 +309,21 @@ More general, but basic, help for `go`…
./go --help
```
-`go` is just a wrapper around
+`go` is a wrapper around
[Rake](http://rake.rubyforge.org/), so you can use the standard
commands such as `rake -T` to get more information about available
targets.
## Maven _per se_
-If it is not clear already, Selenium is not built with Maven. It is
-built with `bazel`, though that is invoked with `go` as outlined above,
+Selenium is not built with Maven. It is built with `bazel`,
+though that is invoked with `go` as outlined above,
so you do not have to learn too much about that.
That said, it is possible to relatively quickly build Selenium pieces
for Maven to use. You are only really going to want to do this when
you are testing the cutting-edge of Selenium development (which we
-welcome) against your application. Here is the quickest way to build
+welcome) against your application. Here is the quickest way to build
and deploy into your local maven repository (`~/.m2/repository`), while
skipping Selenium's own tests.
@@ -335,12 +333,35 @@ skipping Selenium's own tests.
The maven jars should now be in your local `~/.m2/repository`.
-## Useful Resources
+## Updating Java dependencies
+
+The coordinates (_groupId_:_artifactId_:_version_) of the Java dependencies
+are defined in the file [maven_deps.bzl](https://github.com/SeleniumHQ/selenium/blob/trunk/java/maven_deps.bzl).
+The process to modify these dependencies is the following:
-Refer to the [Build Instructions](https://github.com/SeleniumHQ/selenium/wiki/Build-Instructions)
-wiki page for the last word on building the bits and pieces of Selenium.
+1. (Optional) If we want to detect the dependencies which are not updated,
+ we can use the following command for automatic discovery:
-## Running Browser Tests on Linux
+```sh
+bazel run @maven//:outdated
+```
+
+2. Modify [maven_deps.bzl](https://github.com/SeleniumHQ/selenium/blob/trunk/java/maven_deps.bzl).
+ For instance, we can bump the version of a given artifact detected in the step before.
+
+3. Repin dependencies. This process is required to update the file [maven_install.json](https://github.com/SeleniumHQ/selenium/blob/trunk/java/maven_install.json),
+ which is used to manage the Maven dependencies tree (see [rules_jvm_external](https://github.com/bazelbuild/rules_jvm_external) for further details). The command to carry out this step is the following:
+
+```sh
+REPIN=1 bazel run @unpinned_maven//:pin
+```
+
+4. (Optional) If we use IntelliJ with the Bazel plugin, we need to synchronize
+ our project. To that aim, we click on _Bazel_ → _Sync_ → _Sync Project
+ with BUILD Files_.
+
+
+## Running browser tests on Linux
In order to run Browser tests, you first need to install the browser-specific drivers,
such as [`geckodriver`](https://github.com/mozilla/geckodriver/releases),
@@ -408,64 +429,3 @@ The first command will prompt you for a password. The second step requires you t
license, and then accept it by typing "agree".
(Thanks to [this thread](https://github.com/bazelbuild/bazel/issues/4314) for these steps)
-
-## Releasing
-
-Begin by tagging the revision you're about to release, and push that tag to GitHub.
-
-Before running a release build, you must ensure that the `--stamp` flag is used by
-the build. The easiest way to do this is:
-
-```shell
-echo build --stamp >>.bazelrc.local
-```
-
-### GitHub Release Page
-
-* Draft a new (perhaps pre-release)
-* Make sure this release is for the tag you created earlier
-* Set the title to be whatever the release is.
-* Use `git log $PREV_RELEASE..$NEW_TAG --format=format:'* [`%h`](https://github.com/seleniumhq/selenium/commit/%H) - %s :: %an' | pbcopy`
- to generate the list of changes. Make sure you've set
- `$PREV_RELEASE` and `$NEW_TAG`!
-* The release notes are:
-```
-### Changelog
-
-For each component's detailed changelog, please check:
-* [Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
-* [Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)
-* [JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/node/selenium-webdriver/CHANGES.md)
-* [Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)
-* [DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)
-* [IEDriverServer](https://github.com/SeleniumHQ/selenium/blob/trunk/cpp/iedriverserver/CHANGELOG)
-
-### Commits in this release
-
-Click to see all the commits included in this release
-
- INSERT LIST OF CHANGES HERE!
-
-
- ```
-* Now publish the release.
-
-### Java
-
-To release the Java components, make sure you have permission to push to the OSS Sonatype
-repo. You will need these credentials when pushing the maven release.
-
-Make sure that the java `CHANGELOG` is up to date, then just run:
-
-```shell
-./go release-java
-```
-
-This will do two things:
-
-1. Build the publishable artifacts and push them to a staging repo on the
- OSS Sonatype server.
-2. Create zip files to upload in `build/dist`
-
-You will need to manually release the maven artifacts, and also upload
-the artifacts from `build/dist` to the GitHub release.
diff --git a/Rakefile b/Rakefile
index b75cbb0ed407a..53ba05232fe38 100644
--- a/Rakefile
+++ b/Rakefile
@@ -51,7 +51,7 @@ $DEBUG = true if ENV['debug'] == 'true'
verbose($DEBUG)
def release_version
- '4.1'
+ '4.2'
end
def version
@@ -83,7 +83,7 @@ CrazyFun::Mappings::RakeMappings.new.add_all(crazy_fun)
# FIXME: the rules for the targets were removed and build files won't load
# crazy_fun.create_tasks(Dir['**/build.desc'])
-# If it looks like a bazel target, build it with bazel
+# If it looks like a bazel target, build it with bazel
rule /\/\/.*/ do |task|
task.out = Bazel.execute('build', %w[--workspace_status_command scripts/build-info.py], task.name)
end
@@ -96,15 +96,13 @@ task '//java/test/org/openqa/selenium/environment/webserver:webserver:uber' => [
# Java targets required for release. These should all be java_export targets.
# Generated from: bazel query 'kind(maven_publish, set(//java/... //third_party/...))' | sort
JAVA_RELEASE_TARGETS = %w[
- //java/src/com/thoughtworks/selenium/webdriven:webdriven.publish
//java/src/org/openqa/selenium/chrome:chrome.publish
//java/src/org/openqa/selenium/chromium:chromium.publish
//java/src/org/openqa/selenium/devtools/v85:v85.publish
- //java/src/org/openqa/selenium/devtools/v94:v94.publish
- //java/src/org/openqa/selenium/devtools/v95:v95.publish
- //java/src/org/openqa/selenium/devtools/v96:v96.publish
+ //java/src/org/openqa/selenium/devtools/v100:v100.publish
+ //java/src/org/openqa/selenium/devtools/v101:v101.publish
+ //java/src/org/openqa/selenium/devtools/v102:v102.publish
//java/src/org/openqa/selenium/edge:edge.publish
- //java/src/org/openqa/selenium/firefox/xpi:xpi.publish
//java/src/org/openqa/selenium/firefox:firefox.publish
//java/src/org/openqa/selenium/grid/sessionmap/jdbc:jdbc.publish
//java/src/org/openqa/selenium/grid/sessionmap/redis:redis.publish
@@ -262,8 +260,7 @@ task test_rb_remote: [
'//rb:remote-firefox-test',
('//rb:remote-firefox-nightly-test' if ENV['FIREFOX_NIGHTLY_BINARY']),
('//rb:remote-safari-test' if SeleniumRake::Checks.mac?),
- # BUG - https://github.com/SeleniumHQ/selenium/issues/6791
- # ('//rb:remote-safari-preview-test' if SeleniumRake::Checks.mac?),
+ ('//rb:remote-safari-preview-test' if SeleniumRake::Checks.mac?),
('//rb:remote-ie-test' if SeleniumRake::Checks.windows?),
('//rb:remote-edge-test' unless SeleniumRake::Checks.linux?)
].compact
@@ -363,10 +360,12 @@ task 'prep-release-zip': [
'//java/src/org/openqa/selenium:client-zip',
'//java/src/org/openqa/selenium/grid:server-zip',
'//java/src/org/openqa/selenium/grid:executable-grid',
- '//java/src/org/openqa/selenium/server/htmlrunner:selenium-runner_deploy.jar'
] do
- ["build/dist/selenium-server-#{version}.zip", "build/dist/selenium-java-#{version}.zip",
- "build/dist/selenium-server-#{version}.jar", "build/dist/selenium-html-runner-#{version}.jar"].each do |f|
+ [
+ "build/dist/selenium-server-#{version}.zip",
+ "build/dist/selenium-java-#{version}.zip",
+ "build/dist/selenium-server-#{version}.jar"
+ ].each do |f|
rm_f(f) if File.exists?(f)
end
@@ -378,8 +377,6 @@ task 'prep-release-zip': [
chmod 0666, "build/dist/selenium-java-#{version}.zip"
cp Rake::Task['//java/src/org/openqa/selenium/grid:executable-grid'].out, "build/dist/selenium-server-#{version}.jar", preserve: false
chmod 0666, "build/dist/selenium-server-#{version}.jar"
- cp Rake::Task['//java/src/org/openqa/selenium/server/htmlrunner:selenium-runner_deploy.jar'].out, "build/dist/selenium-html-runner-#{version}.jar", preserve: false
- chmod 0666, "build/dist/selenium-html-runner-#{version}.jar"
end
task 'release-java': %i[prep-release-zip publish-maven]
@@ -404,7 +401,7 @@ def read_user_pass_from_m2_settings
return [user, pass]
end
-task 'publish-maven': JAVA_RELEASE_TARGETS + %w[//java/src/org/openqa/selenium/server/htmlrunner:selenium-runner_deploy.jar] do
+task 'publish-maven': JAVA_RELEASE_TARGETS do
creds = read_user_pass_from_m2_settings
JAVA_RELEASE_TARGETS.each do |p|
Bazel::execute('run', ['--stamp', '--define', 'maven_repo=https://oss.sonatype.org/service/local/staging/deploy/maven2', '--define', "maven_user=#{creds[0]}", '--define', "maven_password=#{creds[1]}", '--define', 'gpg_sign=true'], p)
@@ -413,7 +410,7 @@ end
task :'maven-install' do
JAVA_RELEASE_TARGETS.each do |p|
- Bazel::execute('run', ['--stamp', '--define', "maven_repo=file://#{ENV['HOME']}/.m2/repository", '--define', 'gpg_sign=true'], p)
+ Bazel::execute('run', ['--stamp', '--define', "maven_repo=file://#{ENV['HOME']}/.m2/repository", '--define', 'gpg_sign=false'], p)
end
end
diff --git a/SECURITY.md b/SECURITY.md
deleted file mode 100644
index 66ebd501ab61c..0000000000000
--- a/SECURITY.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# Security Policy
-
-## Reporting a Vulnerability
-
-If you have found a security vulnerability in Selenium, or a dependency we use, please come speak to
-us on [Slack](https://selenium.dev/support).
-
-Please join the `#selenium-tlc` channel and say that you believe you have found a security issue.
-One of the [Selenium TLC members](https://www.selenium.dev/project/structure/#tlc)
-will send you a direct message to understand the problem. Once the problem is understood a newly
-created private channel will be created by the TLC Member and you will be invited to explain the
-problem further with the rest of the TLC members.
-
-Please provide a [concise reproducible test case](http://sscce.org/) and describe what results you
-are seeing and what results you expect.
-
-See [CONTRIBUTING.md](https://github.com/SeleniumHQ/selenium/blob/trunk/CONTRIBUTING.md#issue-contributions)
diff --git a/WORKSPACE b/WORKSPACE
index eaae5b8e151b3..dcc141263dfd7 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -6,6 +6,16 @@ workspace(
},
)
+load("//common/private:env.bzl", "env")
+env(
+ name = "python_version",
+ env_var=["PYTHON_VERSION"]
+)
+load("@python_version//:defs.bzl", "PYTHON_VERSION")
+
+
+register_toolchains(":py_toolchain")
+
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
@@ -50,18 +60,33 @@ bazel_skylib_workspace()
http_archive(
name = "rules_python",
- url = "https://github.com/bazelbuild/rules_python/releases/download/0.5.0/rules_python-0.5.0.tar.gz",
- sha256 = "cd6730ed53a002c56ce4e2f396ba3b3be262fd7cb68339f0377a45e8227fe332",
+ sha256 = "cdf6b84084aad8f10bf20b46b77cb48d83c319ebe6458a18e9d2cebf57807cdd",
+ strip_prefix = "rules_python-0.8.1",
+ url = "https://github.com/bazelbuild/rules_python/archive/refs/tags/0.8.1.tar.gz",
+)
+
+load("@rules_python//python:repositories.bzl", "python_register_toolchains")
+
+python_register_toolchains(
+ name = "python_toolchain",
+ python_version = PYTHON_VERSION,
)
+load("@python_toolchain//:defs.bzl", "interpreter")
+
# This one is only needed if you're using the packaging rules.
-load("@rules_python//python:pip.bzl", "pip_install")
+load("@rules_python//python:pip.bzl", "pip_parse")
-pip_install(
- name = "dev_requirements",
- requirements = "//py:requirements.txt",
+pip_parse(
+ name = "py_dev_requirements",
+ requirements_lock = "//py:requirements_lock.txt",
+ python_interpreter_target = interpreter,
)
+load("@py_dev_requirements//:requirements.bzl", "install_deps")
+
+install_deps()
+
http_archive(
name = "rules_proto",
sha256 = "9fc210a34f0f9e7cc31598d109b5d069ef44911a82f507d5a88716db171615a8",
@@ -78,6 +103,10 @@ rules_proto_dependencies()
rules_proto_toolchains()
+RULES_JVM_EXTERNAL_TAG = "4.2"
+
+RULES_JVM_EXTERNAL_SHA = "cd1a77b7b02e8e008439ca76fd34f5b07aecb8c752961f9640dea15e9e5ba1ca"
+
http_archive(
name = "rules_jvm_external",
patch_args = [
@@ -87,9 +116,9 @@ http_archive(
"//java:rules_jvm_external_javadoc.patch",
"//java:rules_jvm_external_visibility.patch",
],
- sha256 = "f36441aa876c4f6427bfb2d1f2d723b48e9d930b62662bf723ddfb8fc80f0140",
- strip_prefix = "rules_jvm_external-4.1",
- url = "https://github.com/bazelbuild/rules_jvm_external/archive/4.1.zip",
+ sha256 = RULES_JVM_EXTERNAL_SHA,
+ strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
+ url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG,
)
load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
@@ -123,18 +152,17 @@ selenium_register_dotnet()
http_archive(
name = "build_bazel_rules_nodejs",
- sha256 = "f7037c8e295fdc921f714962aee7c496110052511e2b14076bd8e2d46bc9819c",
- urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/4.4.5/rules_nodejs-4.4.5.tar.gz"],
+ sha256 = "0fad45a9bda7dc1990c47b002fd64f55041ea751fafc00cd34efb96107675778",
+ urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/5.5.0/rules_nodejs-5.5.0.tar.gz"],
)
+load("@build_bazel_rules_nodejs//:repositories.bzl", "build_bazel_rules_nodejs_dependencies")
+
+build_bazel_rules_nodejs_dependencies()
load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "npm_install")
node_repositories(
- node_version = "16.4.1",
- package_json = [
- "//:package.json",
- "//javascript/grid-ui:package.json",
- ],
+ node_version = "16.4.2",
)
npm_install(
@@ -145,6 +173,12 @@ npm_install(
http_archive(
name = "io_bazel_rules_closure",
+ patch_args = [
+ "-p1",
+ ],
+ patches = [
+ "//javascript:rules_closure_shell.patch",
+ ],
sha256 = "d66deed38a0bb20581c15664f0ab62270af5940786855c7adc3087b27168b529",
strip_prefix = "rules_closure-0.11.0",
urls = [
@@ -160,10 +194,10 @@ rules_closure_toolchains()
http_archive(
name = "rules_pkg",
- sha256 = "a89e203d3cf264e564fcb96b6e06dd70bc0557356eb48400ce4b5d97c2c3720d",
+ sha256 = "62eeb544ff1ef41d786e329e1536c1d541bb9bcad27ae984d57f18f314018e66",
urls = [
- "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.5.1/rules_pkg-0.5.1.tar.gz",
- "https://github.com/bazelbuild/rules_pkg/releases/download/0.5.1/rules_pkg-0.5.1.tar.gz",
+ "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.6.0/rules_pkg-0.6.0.tar.gz",
+ "https://github.com/bazelbuild/rules_pkg/releases/download/0.6.0/rules_pkg-0.6.0.tar.gz",
],
)
@@ -271,6 +305,7 @@ load(
)
rules_ruby_dependencies()
+
rules_ruby_select_sdk(version = "host")
load("@bazelruby_rules_ruby//ruby:defs.bzl", "ruby_bundle")
diff --git a/common/browsers.bzl b/common/browsers.bzl
index e5e3714e7cc75..ab102ccb3afdb 100644
--- a/common/browsers.bzl
+++ b/common/browsers.bzl
@@ -18,7 +18,7 @@ chrome_data = select({
})
edge_data = select({
- "@selenium//common:use_pinned_macos_chrome": [
+ "@selenium//common:use_pinned_macos_edge": [
"@mac_edgedriver//:msedgedriver",
"@mac_edge//:Edge.app",
],
diff --git a/common/devtools/chromium/v94/BUILD.bazel b/common/devtools/chromium/v100/BUILD.bazel
similarity index 100%
rename from common/devtools/chromium/v94/BUILD.bazel
rename to common/devtools/chromium/v100/BUILD.bazel
diff --git a/common/devtools/chromium/v95/browser_protocol.pdl b/common/devtools/chromium/v100/browser_protocol.pdl
similarity index 95%
rename from common/devtools/chromium/v95/browser_protocol.pdl
rename to common/devtools/chromium/v100/browser_protocol.pdl
index db55293a58010..b73927ff89c84 100644
--- a/common/devtools/chromium/v95/browser_protocol.pdl
+++ b/common/devtools/chromium/v100/browser_protocol.pdl
@@ -48,6 +48,7 @@ experimental domain Accessibility
# Enum of possible native property sources (as a subtype of a particular AXValueSourceType).
type AXValueNativeSourceType extends string
enum
+ description
figcaption
label
labelfor
@@ -175,10 +176,14 @@ experimental domain Accessibility
optional AXValue value
# All other properties
optional array of AXProperty properties
+ # ID for this node's parent.
+ optional AXNodeId parentId
# IDs for each of this node's child nodes.
optional array of AXNodeId childIds
# The backend ID for the associated DOM node, if any.
optional DOM.BackendNodeId backendDOMNodeId
+ # The frame ID for the frame associated with this nodes document.
+ optional Page.FrameId frameId
# Disables the accessibility domain.
command disable
@@ -217,6 +222,29 @@ experimental domain Accessibility
returns
array of AXNode nodes
+ # Fetches the root node.
+ # Requires `enable()` to have been called previously.
+ experimental command getRootAXNode
+ parameters
+ # The frame in whose document the node resides.
+ # If omitted, the root frame is used.
+ optional Page.FrameId frameId
+ returns
+ AXNode node
+
+ # Fetches a node and all ancestors up to and including the root.
+ # Requires `enable()` to have been called previously.
+ experimental command getAXNodeAndAncestors
+ parameters
+ # Identifier of the node to get.
+ optional DOM.NodeId nodeId
+ # Identifier of the backend node to get.
+ optional DOM.BackendNodeId backendNodeId
+ # JavaScript object id of the node wrapper to get.
+ optional Runtime.RemoteObjectId objectId
+ returns
+ array of AXNode nodes
+
# Fetches a particular accessibility node by AXNodeId.
# Requires `enable()` to have been called previously.
experimental command getChildAXNodes
@@ -250,6 +278,19 @@ experimental domain Accessibility
# including nodes that are ignored for accessibility.
array of AXNode nodes
+ # The loadComplete event mirrors the load complete event sent by the browser to assistive
+ # technology when the web page has finished loading.
+ experimental event loadComplete
+ parameters
+ # New document root node.
+ AXNode root
+
+ # The nodesUpdated event is sent every time a previously requested node has changed the in tree.
+ experimental event nodesUpdated
+ parameters
+ # Updated node data.
+ array of AXNode nodes
+
experimental domain Animation
depends on Runtime
depends on DOM
@@ -408,85 +449,6 @@ experimental domain Animation
# Animation that was started.
Animation animation
-experimental domain ApplicationCache
- depends on Page
-
- # Detailed application cache resource information.
- type ApplicationCacheResource extends object
- properties
- # Resource url.
- string url
- # Resource size.
- integer size
- # Resource type.
- string type
-
- # Detailed application cache information.
- type ApplicationCache extends object
- properties
- # Manifest URL.
- string manifestURL
- # Application cache size.
- number size
- # Application cache creation time.
- number creationTime
- # Application cache update time.
- number updateTime
- # Application cache resources.
- array of ApplicationCacheResource resources
-
- # Frame identifier - manifest URL pair.
- type FrameWithManifest extends object
- properties
- # Frame identifier.
- Page.FrameId frameId
- # Manifest URL.
- string manifestURL
- # Application cache status.
- integer status
-
- # Enables application cache domain notifications.
- command enable
-
- # Returns relevant application cache data for the document in given frame.
- command getApplicationCacheForFrame
- parameters
- # Identifier of the frame containing document whose application cache is retrieved.
- Page.FrameId frameId
- returns
- # Relevant application cache data for the document in given frame.
- ApplicationCache applicationCache
-
- # Returns array of frame identifiers with manifest urls for each frame containing a document
- # associated with some application cache.
- command getFramesWithManifests
- returns
- # Array of frame identifiers with manifest urls for each frame containing a document
- # associated with some application cache.
- array of FrameWithManifest frameIds
-
- # Returns manifest URL for document in the given frame.
- command getManifestForFrame
- parameters
- # Identifier of the frame containing document whose manifest is retrieved.
- Page.FrameId frameId
- returns
- # Manifest URL for document in the given frame.
- string manifestURL
-
- event applicationCacheStatusUpdated
- parameters
- # Identifier of the frame containing document whose application cache updated status.
- Page.FrameId frameId
- # Manifest URL.
- string manifestURL
- # Updated application cache status.
- integer status
-
- event networkStateUpdated
- parameters
- boolean isNowOnline
-
# Audits domain allows investigation of page violations and possible improvements.
experimental domain Audits
depends on Network
@@ -564,6 +526,7 @@ experimental domain Audits
type MixedContentResourceType extends string
enum
+ AttributionSrc
Audio
Beacon
CSPReport
@@ -657,6 +620,7 @@ experimental domain Audits
kURLViolation
kTrustedTypesSinkViolation
kTrustedTypesPolicyViolation
+ kWasmEvalViolation
type SourceCodeLocation extends object
properties
@@ -740,6 +704,11 @@ experimental domain Audits
AttributionUntrustworthyOrigin
AttributionTriggerDataTooLarge
AttributionEventSourceTriggerDataTooLarge
+ InvalidAttributionSourceExpiry
+ InvalidAttributionSourcePriority
+ InvalidEventSourceTriggerData
+ InvalidTriggerPriority
+ InvalidTriggerDedupKey
# Details for issues around "Attribution Reporting API" usage.
# Explainer: https://github.com/WICG/conversion-measurement-api
@@ -768,12 +737,79 @@ experimental domain Audits
string url
optional SourceCodeLocation location
- type WasmCrossOriginModuleSharingIssueDetails extends object
+ type GenericIssueErrorType extends string
+ enum
+ CrossOriginPortalPostMessageError
+
+ # Depending on the concrete errorType, different properties are set.
+ type GenericIssueDetails extends object
properties
- string wasmModuleUrl
- string sourceOrigin
- string targetOrigin
- boolean isWarning
+ # Issues with the same errorType are aggregated in the frontend.
+ GenericIssueErrorType errorType
+ optional Page.FrameId frameId
+
+ # This issue tracks information needed to print a deprecation message.
+ # The formatting is inherited from the old console.log version, see more at:
+ # https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/frame/deprecation.cc
+ # TODO(crbug.com/1264960): Re-work format to add i18n support per:
+ # https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/public/devtools_protocol/README.md
+ type DeprecationIssueDetails extends object
+ properties
+ optional AffectedFrame affectedFrame
+ SourceCodeLocation sourceCodeLocation
+ # The content of the deprecation issue (this won't be translated),
+ # e.g. "window.inefficientLegacyStorageMethod will be removed in M97,
+ # around January 2022. Please use Web Storage or Indexed Database
+ # instead. This standard was abandoned in January, 1970. See
+ # https://www.chromestatus.com/feature/5684870116278272 for more details."
+ deprecated optional string message
+ string deprecationType
+
+ type ClientHintIssueReason extends string
+ enum
+ # Items in the accept-ch meta tag allow list must be valid origins.
+ # No special values (e.g. self, none, and *) are permitted.
+ MetaTagAllowListInvalidOrigin
+ # Only accept-ch meta tags in the original HTML sent from the server
+ # are respected. Any injected via javascript (or other means) are ignored.
+ MetaTagModifiedHTML
+
+ type FederatedAuthRequestIssueDetails extends object
+ properties
+ FederatedAuthRequestIssueReason federatedAuthRequestIssueReason
+
+ # Represents the failure reason when a federated authentication reason fails.
+ # Should be updated alongside RequestIdTokenStatus in
+ # third_party/blink/public/mojom/devtools/inspector_issue.mojom to include
+ # all cases except for success.
+ type FederatedAuthRequestIssueReason extends string
+ enum
+ ApprovalDeclined
+ TooManyRequests
+ ManifestHttpNotFound
+ ManifestNoResponse
+ ManifestInvalidResponse
+ ClientMetadataHttpNotFound
+ ClientMetadataNoResponse
+ ClientMetadataInvalidResponse
+ ErrorFetchingSignin
+ InvalidSigninResponse
+ AccountsHttpNotFound
+ AccountsNoResponse
+ AccountsInvalidResponse
+ IdTokenHttpNotFound
+ IdTokenNoResponse
+ IdTokenInvalidResponse
+ IdTokenInvalidRequest
+ ErrorIdToken
+ Canceled
+
+ # This issue tracks client hints related issues. It's used to deprecate old
+ # features, encourage the use of new ones, and provide general guidance.
+ type ClientHintIssueDetails extends object
+ properties
+ SourceCodeLocation sourceCodeLocation
+ ClientHintIssueReason clientHintIssueReason
# A unique identifier for the type of issue. Each type may use one of the
# optional fields in InspectorIssueDetails to convey more specific
@@ -792,7 +828,10 @@ experimental domain Audits
AttributionReportingIssue
QuirksModeIssue
NavigatorUserAgentIssue
- WasmCrossOriginModuleSharingIssue
+ GenericIssue
+ DeprecationIssue
+ ClientHintIssue
+ FederatedAuthRequestIssue
# This struct holds a list of optional fields with additional information
# specific to the kind of issue. When adding a new issue code, please also
@@ -811,7 +850,10 @@ experimental domain Audits
optional AttributionReportingIssueDetails attributionReportingIssueDetails
optional QuirksModeIssueDetails quirksModeIssueDetails
optional NavigatorUserAgentIssueDetails navigatorUserAgentIssueDetails
- optional WasmCrossOriginModuleSharingIssueDetails wasmCrossOriginModuleSharingIssue
+ optional GenericIssueDetails genericIssueDetails
+ optional DeprecationIssueDetails deprecationIssueDetails
+ optional ClientHintIssueDetails clientHintIssueDetails
+ optional FederatedAuthRequestIssueDetails federatedAuthRequestIssueDetails
# A unique id for a DevTools inspector issue. Allows other entities (e.g.
# exceptions, CDP message, console messages, etc.) to reference an issue.
@@ -1345,6 +1387,9 @@ experimental domain CSS
# Container query list array (for rules involving container queries).
# The array enumerates container queries starting with the innermost one, going outwards.
experimental optional array of CSSContainerQuery containerQueries
+ # @supports CSS at-rule array.
+ # The array enumerates @supports at-rules starting with the innermost one, going outwards.
+ experimental optional array of CSSSupports supports
# CSS coverage information.
type RuleUsage extends object
@@ -1481,6 +1526,17 @@ experimental domain CSS
# Optional name for the container.
optional string name
+ # CSS Supports at-rule descriptor.
+ experimental type CSSSupports extends object
+ properties
+ # Supports rule text.
+ string text
+ # The associated rule header range in the enclosing stylesheet (if
+ # available).
+ optional SourceRange range
+ # Identifier of the stylesheet containing this object (if exists).
+ optional StyleSheetId styleSheetId
+
# Information about amount of glyphs that were rendered with given font.
type PlatformFontUsage extends object
properties
@@ -1737,6 +1793,16 @@ experimental domain CSS
# The resulting CSS container query rule after modification.
CSSContainerQuery containerQuery
+ # Modifies the expression of a supports at-rule.
+ experimental command setSupportsText
+ parameters
+ StyleSheetId styleSheetId
+ SourceRange range
+ string text
+ returns
+ # The resulting CSS Supports rule after modification.
+ CSSSupports supports
+
# Modifies the rule selector.
command setRuleSelector
parameters
@@ -1955,6 +2021,11 @@ experimental domain Cast
parameters
string sinkName
+ # Starts mirroring the desktop to the sink.
+ command startDesktopMirroring
+ parameters
+ string sinkName
+
# Starts mirroring the tab to the sink.
command startTabMirroring
parameters
@@ -2027,6 +2098,10 @@ domain DOM
scrollbar-corner
resizer
input-list-button
+ transition
+ transition-container
+ transition-old-content
+ transition-new-content
# Shadow root type.
type ShadowRootType extends string
@@ -2241,6 +2316,13 @@ domain DOM
# Enables DOM agent for the given page.
command enable
+ parameters
+ # Whether to include whitespaces in the children array of returned Nodes.
+ experimental optional enum includeWhitespace
+ # Strip whitespaces from child arrays (default).
+ none
+ # Return all children including block-level whitespace nodes.
+ all
# Focuses the given element.
command focus
@@ -2888,6 +2970,23 @@ domain DOMDebugger
# Resource URL substring. All XHRs having this substring in the URL will get stopped upon.
string url
+# EventBreakpoints permits setting breakpoints on particular operations and
+# events in targets that run JavaScript but do not have a DOM.
+# JavaScript execution will stop on these operations as if there was a regular
+# breakpoint set.
+experimental domain EventBreakpoints
+ # Sets breakpoint on particular native event.
+ command setInstrumentationBreakpoint
+ parameters
+ # Instrumentation name to stop on.
+ string eventName
+
+ # Removes breakpoint on particular native event.
+ command removeInstrumentationBreakpoint
+ parameters
+ # Instrumentation name to stop on.
+ string eventName
+
# This domain facilitates obtaining document snapshots with DOM, layout, and style information.
experimental domain DOMSnapshot
depends on CSS
@@ -3385,7 +3484,8 @@ domain Emulation
experimental type UserAgentMetadata extends object
properties
optional array of UserAgentBrandVersion brands
- optional string fullVersion
+ optional array of UserAgentBrandVersion fullVersionList
+ deprecated optional string fullVersion
string platform
string platformVersion
string architecture
@@ -3567,9 +3667,6 @@ domain Emulation
# If set this specifies the maximum number of tasks that can be run before virtual is forced
# forwards to prevent deadlock.
optional integer maxVirtualTimeTaskStarvationCount
- # If set the virtual time policy change should be deferred until any frame starts navigating.
- # Note any previous deferred policy change is superseded.
- optional boolean waitForNavigation
# If set, base::Time::Now will be overridden to initially return this value.
optional Network.TimeSinceEpoch initialVirtualTime
returns
@@ -4038,7 +4135,7 @@ domain Input
optional integer location
# Editing commands to send with the key event (e.g., 'selectAll') (default: []).
# These are related to but not equal the command names used in `document.execCommand` and NSStandardKeyBindingResponding.
- # See https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/core/editing/commands/editor_command_names.h for valid command names.
+ # See https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/editing/commands/editor_command_names.h for valid command names.
experimental optional array of string commands
# This method emulates inserting text that doesn't come from a key press,
@@ -4813,8 +4910,9 @@ domain Network
string logDescription
# Log ID.
string logId
- # Issuance date.
- TimeSinceEpoch timestamp
+ # Issuance date. Unlike TimeSinceEpoch, this contains the number of
+ # milliseconds since January 1, 1970, UTC, not the number of seconds.
+ number timestamp
# Hash algorithm.
string hashAlgorithm
# Signature algorithm.
@@ -4895,14 +4993,27 @@ domain Network
PreflightInvalidAllowOriginValue
PreflightAllowOriginMismatch
PreflightInvalidAllowCredentials
+ # TODO(https://crbug.com/1263483): Remove this once frontend code does
+ # not reference it anymore.
PreflightMissingAllowExternal
+ # TODO(https://crbug.com/1263483): Remove this once frontend code does
+ # not reference it anymore.
PreflightInvalidAllowExternal
+ PreflightMissingAllowPrivateNetwork
+ PreflightInvalidAllowPrivateNetwork
InvalidAllowMethodsPreflightResponse
InvalidAllowHeadersPreflightResponse
MethodDisallowedByPreflightResponse
HeaderDisallowedByPreflightResponse
RedirectContainsCredentials
+ # Request was a private network request initiated by a non-secure context.
InsecurePrivateNetwork
+ # Request carried a target IP address space property that did not match
+ # the target resource's address space.
+ InvalidPrivateNetworkAccess
+ # Request was a private network request yet did not carry a target IP
+ # address space.
+ UnexpectedPrivateNetworkAccess
NoCorsRedirectModeNotFollow
type CorsErrorStatus extends object
@@ -5097,6 +5208,11 @@ domain Network
# An unspecified port value allows protocol clients to emulate legacy cookie scope for the port.
# This is a temporary ability and it will be removed in the future.
experimental integer sourcePort
+ # Cookie partition key. The site of the top-level URL the browser was visiting at the start
+ # of the request to the endpoint that set the cookie.
+ experimental optional string partitionKey
+ # True if cookie partition key is opaque.
+ experimental optional boolean partitionKeyOpaque
# Types of reasons why a cookie may not be stored from a response.
experimental type SetCookieBlockedReason extends string
@@ -5151,6 +5267,9 @@ domain Network
# (which is required in order to use "SameParty"); or specified the "SameSite=Strict"
# attribute (which is forbidden when using "SameParty").
SamePartyConflictsWithOtherAttributes
+ # The cookie's name/value pair size exceeded the size limit defined in
+ # RFC6265bis.
+ NameValuePairExceedsMaxSize
# Types of reasons why a cookie may not be sent with a request.
experimental type CookieBlockedReason extends string
@@ -5195,6 +5314,9 @@ domain Network
SchemefulSameSiteUnspecifiedTreatedAsLax
# The cookie had the "SameParty" attribute and the request was made from a cross-party context.
SamePartyFromCrossPartyContext
+ # The cookie's name/value pair size exceeded the size limit defined in
+ # RFC6265bis.
+ NameValuePairExceedsMaxSize
# A cookie which was not stored from a response with the corresponding reason.
experimental type BlockedSetCookieWithReason extends object
@@ -5249,6 +5371,10 @@ domain Network
# An unspecified port value allows protocol clients to emulate legacy cookie scope for the port.
# This is a temporary ability and it will be removed in the future.
experimental optional integer sourcePort
+ # Cookie partition key. The site of the top-level URL the browser was visiting at the start
+ # of the request to the endpoint that set the cookie.
+ # If not set, the cookie will be set as not partitioned.
+ experimental optional string partitionKey
# Authorization challenge for HTTP status code 401 or 407.
experimental type AuthChallenge extends object
@@ -5619,6 +5745,10 @@ domain Network
# An unspecified port value allows protocol clients to emulate legacy cookie scope for the port.
# This is a temporary ability and it will be removed in the future.
experimental optional integer sourcePort
+ # Cookie partition key. The site of the top-level URL the browser was visiting at the start
+ # of the request to the endpoint that set the cookie.
+ # If not set, the cookie will be set as not partitioned.
+ experimental optional string partitionKey
returns
# Always set to true. If an error occurs, the response indicates protocol error.
deprecated boolean success
@@ -5780,6 +5910,10 @@ domain Network
TimeSinceEpoch wallTime
# Request initiator.
Initiator initiator
+ # In the case that redirectResponse is populated, this flag indicates whether
+ # requestWillBeSentExtraInfo and responseReceivedExtraInfo events will be or were emitted
+ # for the request which was just redirected.
+ experimental boolean redirectHasExtraInfo
# Redirect response data.
optional Response redirectResponse
# Type of this resource.
@@ -5820,6 +5954,9 @@ domain Network
ResourceType type
# Response data.
Response response
+ # Indicates whether requestWillBeSentExtraInfo and responseReceivedExtraInfo events will be
+ # or were emitted for this request.
+ experimental boolean hasExtraInfo
# Frame identifier.
optional Page.FrameId frameId
@@ -5926,6 +6063,8 @@ domain Network
Allow
BlockFromInsecureToMorePrivate
WarnFromInsecureToMorePrivate
+ PreflightBlock
+ PreflightWarn
experimental type IPAddressSpace extends string
enum
@@ -6069,6 +6208,7 @@ domain Network
SameOriginAllowPopups
UnsafeNone
SameOriginPlusCoep
+ SameOriginAllowPopupsPlusCoep
experimental type CrossOriginOpenerPolicyStatus extends object
properties
@@ -6156,6 +6296,19 @@ domain Network
parameters
ReportingApiReport report
+ experimental type ReportingApiEndpoint extends object
+ properties
+ # The URL of the endpoint to which reports may be delivered.
+ string url
+ # Name of the endpoint group.
+ string groupName
+
+ experimental event reportingApiEndpointsChangedForOrigin
+ parameters
+ # Origin of the document(s) which configured the endpoints.
+ string origin
+ array of ReportingApiEndpoint endpoints
+
# An object providing the result of a network resource load.
experimental type LoadNetworkResourcePageResult extends object
properties
@@ -6406,6 +6559,22 @@ experimental domain Overlay
# The style of the descendants' borders.
optional LineStyle descendantBorder
+ type IsolatedElementHighlightConfig extends object
+ properties
+ # A descriptor for the highlight appearance of an element in isolation mode.
+ IsolationModeHighlightConfig isolationModeHighlightConfig
+ # Identifier of the isolated element to highlight.
+ DOM.NodeId nodeId
+
+ type IsolationModeHighlightConfig extends object
+ properties
+ # The fill color of the resizers (default: transparent).
+ optional DOM.RGBA resizerColor
+ # The fill color for resizer handles (default: transparent).
+ optional DOM.RGBA resizerHandleColor
+ # The fill color for the mask covering non-isolated elements (default: transparent).
+ optional DOM.RGBA maskColor
+
type InspectMode extends string
enum
searchForNode
@@ -6597,8 +6766,8 @@ experimental domain Overlay
# True for showing scroll bottleneck rects
boolean show
- # Requests that backend shows hit-test borders on layers
- command setShowHitTestBorders
+ # Deprecated, no longer has any effect.
+ deprecated command setShowHitTestBorders
parameters
# True for showing hit-test borders
boolean show
@@ -6620,6 +6789,12 @@ experimental domain Overlay
# hinge data, null means hideHinge
optional HingeConfig hingeConfig
+ # Show elements in isolation mode with overlays.
+ command setShowIsolatedElements
+ parameters
+ # An array of node identifiers and descriptors for the highlight appearance.
+ array of IsolatedElementHighlightConfig isolatedElementHighlightConfigs
+
# Fired when the node should be inspected. This happens after call to `setInspectMode` or when
# user manually inspects an element.
event inspectNodeRequested
@@ -6715,7 +6890,6 @@ domain Page
ch-device-memory
ch-downlink
ch-ect
- ch-lang
ch-prefers-color-scheme
ch-rtt
ch-ua
@@ -6724,12 +6898,16 @@ domain Page
ch-ua-platform
ch-ua-model
ch-ua-mobile
+ ch-ua-full
ch-ua-full-version
+ ch-ua-full-version-list
ch-ua-platform-version
ch-ua-reduced
+ ch-ua-wow64
ch-viewport-height
ch-viewport-width
ch-width
+ ch-partitioned-cookies
clipboard-read
clipboard-write
cross-origin-isolated
@@ -6747,7 +6925,8 @@ domain Page
gyroscope
hid
idle-detection
- interest-cohort
+ join-ad-interest-group
+ keyboard-map
magnetometer
microphone
midi
@@ -6755,6 +6934,7 @@ domain Page
payment
picture-in-picture
publickey-credentials-get
+ run-ad-auction
screen-wake-lock
serial
shared-autofill
@@ -6774,6 +6954,8 @@ domain Page
Header
# Declaration in iframe attribute.
IframeAttribute
+ # Inside fenced frame.
+ InFencedFrameTree
experimental type PermissionsPolicyBlockLocator extends object
properties
@@ -6801,6 +6983,7 @@ domain Page
FeatureDisabled
TokenDisabled
FeatureDisabledForUser
+ UnknownTrial
# Status for an Origin Trial.
experimental type OriginTrialStatus extends string
@@ -7051,6 +7234,14 @@ domain Page
# The pictograph font-family.
optional string pictograph
+ # Font families collection for a script.
+ experimental type ScriptFontFamilies extends object
+ properties
+ # Name of the script which these font families are defined for.
+ string script
+ # Generic font families collection for the script.
+ FontFamilies fontFamilies
+
# Default font sizes.
experimental type FontSizes extends object
properties
@@ -7234,10 +7425,13 @@ domain Page
optional binary primaryIcon
# Returns the unique (PWA) app id.
+ # Only returns values if the feature flag 'WebAppEnableManifestId' is enabled
experimental command getAppId
returns
- # Only returns a value if the feature flag 'WebAppEnableManifestId' is enabled
+ # App id, either from manifest's id attribute or computed from start_url
optional string appId
+ # Recommendation for manifest's id attribute to match current id computed from start_url
+ optional string recommendedId
# Returns all browser cookies. Depending on the backend support, will return detailed cookie
# information in the `cookies` field.
@@ -7508,6 +7702,8 @@ domain Page
parameters
# Specifies font families to set. If a font family is not specified, it won't be changed.
FontFamilies fontFamilies
+ # Specifies font families to set for individual scripts.
+ optional array of ScriptFontFamilies forScripts
# Set default font sizes.
experimental command setFontSizes
@@ -7604,18 +7800,9 @@ domain Page
# Stops sending each frame in the `screencastFrame`.
experimental command stopScreencast
- # Forces compilation cache to be generated for every subresource script.
- # See also: `Page.produceCompilationCache`.
- experimental command setProduceCompilationCache
- parameters
- boolean enabled
-
# Requests backend to produce compilation cache for the specified scripts.
- # Unlike setProduceCompilationCache, this allows client to only produce cache
- # for specific scripts. `scripts` are appeneded to the list of scripts
- # for which the cache for would produced. Disabling compilation cache with
- # `setProduceCompilationCache` would reset all pending cache requests.
- # The list may also be reset during page navigation.
+ # `scripts` are appeneded to the list of scripts for which the cache
+ # would be produced. The list may be reset during page navigation.
# When script with a matching URL is encountered, the cache is optionally
# produced upon backend discretion, based on internal heuristics.
# See also: `Page.compilationCacheProduced`.
@@ -7634,6 +7821,15 @@ domain Page
# Clears seeded compilation cache.
experimental command clearCompilationCache
+ # Sets the Secure Payment Confirmation transaction mode.
+ # https://w3c.github.io/secure-payment-confirmation/#sctn-automation-set-spc-transaction-mode
+ experimental command setSPCTransactionMode
+ parameters
+ enum mode
+ none
+ autoaccept
+ autoreject
+
# Generates a report for testing.
experimental command generateTestReport
parameters
@@ -7829,7 +8025,7 @@ domain Page
# List of not restored reasons for back-forward cache.
experimental type BackForwardCacheNotRestoredReason extends string
enum
- NotMainFrame
+ NotPrimaryMainFrame
BackForwardCacheDisabled
RelatedActiveContentsExist
HTTPStatusNotOK
@@ -7928,6 +8124,7 @@ domain Page
InjectedStyleSheet
Dummy
# Disabled for render frame host reasons
+ # See content/browser/renderer_host/back_forward_cache_disable.h for explanations.
ContentSecurityHandler
ContentWebAuthenticationAPI
ContentFileChooser
@@ -7938,6 +8135,9 @@ domain Page
ContentWebUSB
ContentMediaSession
ContentMediaSessionService
+ ContentScreenReader
+
+ # See components/back_forward_cache/back_forward_cache_disable.h for explanations.
EmbedderPopupBlockerTabHelper
EmbedderSafeBrowsingTriggeredPopupBlocker
EmbedderSafeBrowsingThreatDetails
@@ -7968,6 +8168,15 @@ domain Page
# Not restored reason
BackForwardCacheNotRestoredReason reason
+ experimental type BackForwardCacheNotRestoredExplanationTree extends object
+ properties
+ # URL of each frame
+ string url
+ # Not restored reasons of each frame
+ array of BackForwardCacheNotRestoredExplanation explanations
+ # Array of children frame
+ array of BackForwardCacheNotRestoredExplanationTree children
+
# Fired for failed bfcache history navigations if BackForwardCache feature is enabled. Do
# not assume any ordering with the Page.frameNavigated event. This event is fired only for
# main-frame history navigation where the document changes (non-same-document navigations),
@@ -7980,6 +8189,8 @@ domain Page
FrameId frameId
# Array of reasons why the page could not be cached. This must not be empty.
array of BackForwardCacheNotRestoredExplanation notRestoredExplanations
+ # Tree structure of reasons why the page could not be cached for each frame.
+ optional BackForwardCacheNotRestoredExplanationTree notRestoredExplanationsTree
event loadEventFired
parameters
@@ -8322,20 +8533,20 @@ domain Security
# Security state information about the page.
VisibleSecurityState visibleSecurityState
- # The security state of the page changed.
- event securityStateChanged
+ # The security state of the page changed. No longer being sent.
+ deprecated event securityStateChanged
parameters
# Security state.
SecurityState securityState
# True if the page was loaded over cryptographic transport such as HTTPS.
deprecated boolean schemeIsCryptographic
- # List of explanations for the security state. If the overall security state is `insecure` or
- # `warning`, at least one corresponding explanation should be included.
- array of SecurityStateExplanation explanations
+ # Previously a list of explanations for the security state. Now always
+ # empty.
+ deprecated array of SecurityStateExplanation explanations
# Information about insecure content on the page.
deprecated InsecureContentStatus insecureContentStatus
- # Overrides user-visible description of the state.
- optional string summary
+ # Overrides user-visible description of the state. Always omitted.
+ deprecated optional string summary
experimental domain ServiceWorker
depends on Target
@@ -8472,6 +8683,7 @@ experimental domain Storage
websql
service_workers
cache_storage
+ interest_groups
all
other
@@ -8490,6 +8702,37 @@ experimental domain Storage
string issuerOrigin
number count
+ # Enum of interest group access types.
+ type InterestGroupAccessType extends string
+ enum
+ join
+ leave
+ update
+ bid
+ win
+
+ # Ad advertising element inside an interest group.
+ type InterestGroupAd extends object
+ properties
+ string renderUrl
+ optional string metadata
+
+ # The full details of an interest group.
+ type InterestGroupDetails extends object
+ properties
+ string ownerOrigin
+ string name
+ Network.TimeSinceEpoch expirationTime
+ string joiningOrigin
+ optional string biddingUrl
+ optional string biddingWasmHelperUrl
+ optional string updateUrl
+ optional string trustedBiddingSignalsUrl
+ array of string trustedBiddingSignalsKeys
+ optional string userBiddingSignals
+ array of InterestGroupAd ads
+ array of InterestGroupAd adComponents
+
# Clears storage for origin.
command clearDataForOrigin
parameters
@@ -8589,6 +8832,19 @@ experimental domain Storage
# True if any tokens were deleted, false otherwise.
boolean didDeleteTokens
+ # Gets details for a named interest group.
+ experimental command getInterestGroupDetails
+ parameters
+ string ownerOrigin
+ string name
+ returns
+ InterestGroupDetails details
+
+ # Enables/Disables issuing of interestGroupAccessed events.
+ experimental command setInterestGroupTracking
+ parameters
+ boolean enable
+
# A cache's contents have been modified.
event cacheStorageContentUpdated
parameters
@@ -8619,6 +8875,14 @@ experimental domain Storage
# Origin to update.
string origin
+ # One of the interest groups was accessed by the associated page.
+ event interestGroupAccessed
+ parameters
+ Network.TimeSinceEpoch accessTime
+ InterestGroupAccessType type
+ string ownerOrigin
+ string name
+
# The SystemInfo domain defines methods and events for querying low-level system information.
experimental domain SystemInfo
@@ -8836,6 +9100,9 @@ domain Target
optional string proxyServer
# Proxy bypass list, similar to the one passed to --proxy-bypass-list
optional string proxyBypassList
+ # An optional list of origins to grant unlimited cross-origin access to.
+ # Parts of the URL other than those constituting origin are ignored.
+ optional array of string originsWithUniversalNetworkAccess
returns
# The id of the context created.
@@ -8857,7 +9124,7 @@ domain Target
# Frame height in DIP (headless chrome only).
optional integer height
# The browser context to create the page in.
- optional Browser.BrowserContextID browserContextId
+ experimental optional Browser.BrowserContextID browserContextId
# Whether BeginFrames for this target will be controlled via DevTools (headless chrome only,
# not supported on MacOS yet, false by default).
experimental optional boolean enableBeginFrameControl
@@ -9649,6 +9916,10 @@ experimental domain WebAuthn
# https://fidoalliance.org/specs/fido-v2.1-rd-20201208/fido-client-to-authenticator-protocol-v2.1-rd-20201208.html#sctn-credBlob-extension
# Defaults to false.
optional boolean hasCredBlob
+ # If set to true, the authenticator will support the minPinLength extension.
+ # https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#sctn-minpinlength-extension
+ # Defaults to false.
+ optional boolean hasMinPinLength
# If set to true, tests of user presence will succeed immediately.
# Otherwise, they will not be resolved. Defaults to true.
optional boolean automaticPresenceSimulation
diff --git a/common/devtools/chromium/v95/js_protocol.pdl b/common/devtools/chromium/v100/js_protocol.pdl
similarity index 98%
rename from common/devtools/chromium/v95/js_protocol.pdl
rename to common/devtools/chromium/v100/js_protocol.pdl
index b34c8551ad64b..09c420e3a6361 100644
--- a/common/devtools/chromium/v95/js_protocol.pdl
+++ b/common/devtools/chromium/v100/js_protocol.pdl
@@ -104,7 +104,9 @@ domain Debugger
# Location in the source code.
Location location
# JavaScript script name or url.
- string url
+ # Deprecated in favor of using the `location.scriptId` to resolve the URL via a previously
+ # sent `Debugger.scriptParsed` event.
+ deprecated string url
# Scope chain for this call frame.
array of Scope scopeChain
# `this` object for this call frame.
@@ -1550,6 +1552,18 @@ domain Runtime
parameters
string name
+ # This method tries to lookup and populate exception details for a
+ # JavaScript Error object.
+ # Note that the stackTrace portion of the resulting exceptionDetails will
+ # only be populated if the Runtime domain was enabled at the time when the
+ # Error was thrown.
+ experimental command getExceptionDetails
+ parameters
+ # The error object for which to resolve the exception details.
+ RemoteObjectId errorObjectId
+ returns
+ optional ExceptionDetails exceptionDetails
+
# Notification is issued every time when binding is called.
experimental event bindingCalled
parameters
diff --git a/common/devtools/chromium/v95/BUILD.bazel b/common/devtools/chromium/v101/BUILD.bazel
similarity index 100%
rename from common/devtools/chromium/v95/BUILD.bazel
rename to common/devtools/chromium/v101/BUILD.bazel
diff --git a/common/devtools/chromium/v94/browser_protocol.pdl b/common/devtools/chromium/v101/browser_protocol.pdl
similarity index 93%
rename from common/devtools/chromium/v94/browser_protocol.pdl
rename to common/devtools/chromium/v101/browser_protocol.pdl
index c5c5726a4bc0c..8abe2c75451dd 100644
--- a/common/devtools/chromium/v94/browser_protocol.pdl
+++ b/common/devtools/chromium/v101/browser_protocol.pdl
@@ -48,6 +48,7 @@ experimental domain Accessibility
# Enum of possible native property sources (as a subtype of a particular AXValueSourceType).
type AXValueNativeSourceType extends string
enum
+ description
figcaption
label
labelfor
@@ -175,10 +176,14 @@ experimental domain Accessibility
optional AXValue value
# All other properties
optional array of AXProperty properties
+ # ID for this node's parent.
+ optional AXNodeId parentId
# IDs for each of this node's child nodes.
optional array of AXNodeId childIds
# The backend ID for the associated DOM node, if any.
optional DOM.BackendNodeId backendDOMNodeId
+ # The frame ID for the frame associated with this nodes document.
+ optional Page.FrameId frameId
# Disables the accessibility domain.
command disable
@@ -208,13 +213,36 @@ experimental domain Accessibility
parameters
# The maximum depth at which descendants of the root node should be retrieved.
# If omitted, the full tree is returned.
- optional integer max_depth
+ optional integer depth
# The frame for whose document the AX tree should be retrieved.
# If omited, the root frame is used.
optional Page.FrameId frameId
returns
array of AXNode nodes
+ # Fetches the root node.
+ # Requires `enable()` to have been called previously.
+ experimental command getRootAXNode
+ parameters
+ # The frame in whose document the node resides.
+ # If omitted, the root frame is used.
+ optional Page.FrameId frameId
+ returns
+ AXNode node
+
+ # Fetches a node and all ancestors up to and including the root.
+ # Requires `enable()` to have been called previously.
+ experimental command getAXNodeAndAncestors
+ parameters
+ # Identifier of the node to get.
+ optional DOM.NodeId nodeId
+ # Identifier of the backend node to get.
+ optional DOM.BackendNodeId backendNodeId
+ # JavaScript object id of the node wrapper to get.
+ optional Runtime.RemoteObjectId objectId
+ returns
+ array of AXNode nodes
+
# Fetches a particular accessibility node by AXNodeId.
# Requires `enable()` to have been called previously.
experimental command getChildAXNodes
@@ -248,6 +276,19 @@ experimental domain Accessibility
# including nodes that are ignored for accessibility.
array of AXNode nodes
+ # The loadComplete event mirrors the load complete event sent by the browser to assistive
+ # technology when the web page has finished loading.
+ experimental event loadComplete
+ parameters
+ # New document root node.
+ AXNode root
+
+ # The nodesUpdated event is sent every time a previously requested node has changed the in tree.
+ experimental event nodesUpdated
+ parameters
+ # Updated node data.
+ array of AXNode nodes
+
experimental domain Animation
depends on Runtime
depends on DOM
@@ -406,85 +447,6 @@ experimental domain Animation
# Animation that was started.
Animation animation
-experimental domain ApplicationCache
- depends on Page
-
- # Detailed application cache resource information.
- type ApplicationCacheResource extends object
- properties
- # Resource url.
- string url
- # Resource size.
- integer size
- # Resource type.
- string type
-
- # Detailed application cache information.
- type ApplicationCache extends object
- properties
- # Manifest URL.
- string manifestURL
- # Application cache size.
- number size
- # Application cache creation time.
- number creationTime
- # Application cache update time.
- number updateTime
- # Application cache resources.
- array of ApplicationCacheResource resources
-
- # Frame identifier - manifest URL pair.
- type FrameWithManifest extends object
- properties
- # Frame identifier.
- Page.FrameId frameId
- # Manifest URL.
- string manifestURL
- # Application cache status.
- integer status
-
- # Enables application cache domain notifications.
- command enable
-
- # Returns relevant application cache data for the document in given frame.
- command getApplicationCacheForFrame
- parameters
- # Identifier of the frame containing document whose application cache is retrieved.
- Page.FrameId frameId
- returns
- # Relevant application cache data for the document in given frame.
- ApplicationCache applicationCache
-
- # Returns array of frame identifiers with manifest urls for each frame containing a document
- # associated with some application cache.
- command getFramesWithManifests
- returns
- # Array of frame identifiers with manifest urls for each frame containing a document
- # associated with some application cache.
- array of FrameWithManifest frameIds
-
- # Returns manifest URL for document in the given frame.
- command getManifestForFrame
- parameters
- # Identifier of the frame containing document whose manifest is retrieved.
- Page.FrameId frameId
- returns
- # Manifest URL for document in the given frame.
- string manifestURL
-
- event applicationCacheStatusUpdated
- parameters
- # Identifier of the frame containing document whose application cache updated status.
- Page.FrameId frameId
- # Manifest URL.
- string manifestURL
- # Updated application cache status.
- integer status
-
- event networkStateUpdated
- parameters
- boolean isNowOnline
-
# Audits domain allows investigation of page violations and possible improvements.
experimental domain Audits
depends on Network
@@ -509,7 +471,7 @@ experimental domain Audits
properties
Page.FrameId frameId
- type SameSiteCookieExclusionReason extends string
+ type CookieExclusionReason extends string
enum
ExcludeSameSiteUnspecifiedTreatedAsLax
ExcludeSameSiteNoneInsecure
@@ -518,7 +480,7 @@ experimental domain Audits
ExcludeInvalidSameParty
ExcludeSamePartyCrossPartyContext
- type SameSiteCookieWarningReason extends string
+ type CookieWarningReason extends string
enum
WarnSameSiteUnspecifiedCrossSiteContext
WarnSameSiteNoneInsecure
@@ -528,8 +490,9 @@ experimental domain Audits
WarnSameSiteStrictCrossDowngradeLax
WarnSameSiteLaxCrossDowngradeStrict
WarnSameSiteLaxCrossDowngradeLax
+ WarnAttributeValueExceedsMaxSize
- type SameSiteCookieOperation extends string
+ type CookieOperation extends string
enum
SetCookie
ReadCookie
@@ -537,7 +500,7 @@ experimental domain Audits
# This information is currently necessary, as the front-end has a difficult
# time finding a specific cookie. With this, we can convey specific error
# information without the cookie.
- type SameSiteCookieIssueDetails extends object
+ type CookieIssueDetails extends object
properties
# If AffectedCookie is not set then rawCookieLine contains the raw
# Set-Cookie header string. This hints at a problem where the
@@ -545,11 +508,11 @@ experimental domain Audits
# that no valid cookie could be created.
optional AffectedCookie cookie
optional string rawCookieLine
- array of SameSiteCookieWarningReason cookieWarningReasons
- array of SameSiteCookieExclusionReason cookieExclusionReasons
+ array of CookieWarningReason cookieWarningReasons
+ array of CookieExclusionReason cookieExclusionReasons
# Optionally identifies the site-for-cookies and the cookie url, which
# may be used by the front-end as additional context.
- SameSiteCookieOperation operation
+ CookieOperation operation
optional string siteForCookies
optional string cookieUrl
optional AffectedRequest request
@@ -562,6 +525,7 @@ experimental domain Audits
type MixedContentResourceType extends string
enum
+ AttributionSrc
Audio
Beacon
CSPReport
@@ -655,6 +619,7 @@ experimental domain Audits
kURLViolation
kTrustedTypesSinkViolation
kTrustedTypesPolicyViolation
+ kWasmEvalViolation
type SourceCodeLocation extends object
properties
@@ -736,6 +701,13 @@ experimental domain Audits
InvalidAttributionData
AttributionSourceUntrustworthyOrigin
AttributionUntrustworthyOrigin
+ AttributionTriggerDataTooLarge
+ AttributionEventSourceTriggerDataTooLarge
+ InvalidAttributionSourceExpiry
+ InvalidAttributionSourcePriority
+ InvalidEventSourceTriggerData
+ InvalidTriggerPriority
+ InvalidTriggerDedupKey
# Details for issues around "Attribution Reporting API" usage.
# Explainer: https://github.com/WICG/conversion-measurement-api
@@ -764,19 +736,89 @@ experimental domain Audits
string url
optional SourceCodeLocation location
- type WasmCrossOriginModuleSharingIssueDetails extends object
+ type GenericIssueErrorType extends string
+ enum
+ CrossOriginPortalPostMessageError
+
+ # Depending on the concrete errorType, different properties are set.
+ type GenericIssueDetails extends object
properties
- string wasmModuleUrl
- string sourceOrigin
- string targetOrigin
- boolean isWarning
+ # Issues with the same errorType are aggregated in the frontend.
+ GenericIssueErrorType errorType
+ optional Page.FrameId frameId
+
+ # This issue tracks information needed to print a deprecation message.
+ # The formatting is inherited from the old console.log version, see more at:
+ # https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/frame/deprecation.cc
+ # TODO(crbug.com/1264960): Re-work format to add i18n support per:
+ # https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/public/devtools_protocol/README.md
+ type DeprecationIssueDetails extends object
+ properties
+ optional AffectedFrame affectedFrame
+ SourceCodeLocation sourceCodeLocation
+ # The content of an untranslated deprecation issue,
+ # e.g. "window.inefficientLegacyStorageMethod will be removed in M97,
+ # around January 2022. Please use Web Storage or Indexed Database
+ # instead. This standard was abandoned in January, 1970. See
+ # https://www.chromestatus.com/feature/5684870116278272 for more details."
+ deprecated optional string message
+ # The id of an untranslated deprecation issue e.g. PrefixedStorageInfo.
+ deprecated string deprecationType
+
+ type ClientHintIssueReason extends string
+ enum
+ # Items in the accept-ch meta tag allow list must be valid origins.
+ # No special values (e.g. self, none, and *) are permitted.
+ MetaTagAllowListInvalidOrigin
+ # Only accept-ch meta tags in the original HTML sent from the server
+ # are respected. Any injected via javascript (or other means) are ignored.
+ MetaTagModifiedHTML
+
+ type FederatedAuthRequestIssueDetails extends object
+ properties
+ FederatedAuthRequestIssueReason federatedAuthRequestIssueReason
+
+ # Represents the failure reason when a federated authentication reason fails.
+ # Should be updated alongside RequestIdTokenStatus in
+ # third_party/blink/public/mojom/devtools/inspector_issue.mojom to include
+ # all cases except for success.
+ type FederatedAuthRequestIssueReason extends string
+ enum
+ ApprovalDeclined
+ TooManyRequests
+ ManifestHttpNotFound
+ ManifestNoResponse
+ ManifestInvalidResponse
+ ClientMetadataHttpNotFound
+ ClientMetadataNoResponse
+ ClientMetadataInvalidResponse
+ ClientMetadataMissingPrivacyPolicyUrl
+ DisabledInSettings
+ ErrorFetchingSignin
+ InvalidSigninResponse
+ AccountsHttpNotFound
+ AccountsNoResponse
+ AccountsInvalidResponse
+ IdTokenHttpNotFound
+ IdTokenNoResponse
+ IdTokenInvalidResponse
+ IdTokenInvalidRequest
+ ErrorIdToken
+ Canceled
+
+ # This issue tracks client hints related issues. It's used to deprecate old
+ # features, encourage the use of new ones, and provide general guidance.
+ type ClientHintIssueDetails extends object
+ properties
+ SourceCodeLocation sourceCodeLocation
+ ClientHintIssueReason clientHintIssueReason
# A unique identifier for the type of issue. Each type may use one of the
# optional fields in InspectorIssueDetails to convey more specific
# information about the kind of issue.
type InspectorIssueCode extends string
enum
- SameSiteCookieIssue
+ CookieIssue
MixedContentIssue
BlockedByResponseIssue
HeavyAdIssue
@@ -788,14 +830,17 @@ experimental domain Audits
AttributionReportingIssue
QuirksModeIssue
NavigatorUserAgentIssue
- WasmCrossOriginModuleSharingIssue
+ GenericIssue
+ DeprecationIssue
+ ClientHintIssue
+ FederatedAuthRequestIssue
# This struct holds a list of optional fields with additional information
# specific to the kind of issue. When adding a new issue code, please also
# add a new optional field to this type.
type InspectorIssueDetails extends object
properties
- optional SameSiteCookieIssueDetails sameSiteCookieIssueDetails
+ optional CookieIssueDetails cookieIssueDetails
optional MixedContentIssueDetails mixedContentIssueDetails
optional BlockedByResponseIssueDetails blockedByResponseIssueDetails
optional HeavyAdIssueDetails heavyAdIssueDetails
@@ -807,7 +852,10 @@ experimental domain Audits
optional AttributionReportingIssueDetails attributionReportingIssueDetails
optional QuirksModeIssueDetails quirksModeIssueDetails
optional NavigatorUserAgentIssueDetails navigatorUserAgentIssueDetails
- optional WasmCrossOriginModuleSharingIssueDetails wasmCrossOriginModuleSharingIssue
+ optional GenericIssueDetails genericIssueDetails
+ optional DeprecationIssueDetails deprecationIssueDetails
+ optional ClientHintIssueDetails clientHintIssueDetails
+ optional FederatedAuthRequestIssueDetails federatedAuthRequestIssueDetails
# A unique id for a DevTools inspector issue. Allows other entities (e.g.
# exceptions, CDP message, console messages, etc.) to reference an issue.
@@ -1254,6 +1302,12 @@ experimental domain CSS
# Matches of CSS rules matching the ancestor node in the style inheritance chain.
array of RuleMatch matchedCSSRules
+ # Inherited pseudo element matches from pseudos of an ancestor node.
+ type InheritedPseudoElementMatches extends object
+ properties
+ # Matches of pseudo styles from the pseudos of an ancestor node.
+ array of PseudoElementMatches pseudoElements
+
# Match data for a CSS rule.
type RuleMatch extends object
properties
@@ -1341,6 +1395,12 @@ experimental domain CSS
# Container query list array (for rules involving container queries).
# The array enumerates container queries starting with the innermost one, going outwards.
experimental optional array of CSSContainerQuery containerQueries
+ # @supports CSS at-rule array.
+ # The array enumerates @supports at-rules starting with the innermost one, going outwards.
+ experimental optional array of CSSSupports supports
+ # Cascade layer array. Contains the layer hierarchy that this rule belongs to starting
+ # with the innermost layer and going outwards.
+ experimental optional array of CSSLayer layers
# CSS coverage information.
type RuleUsage extends object
@@ -1477,6 +1537,41 @@ experimental domain CSS
# Optional name for the container.
optional string name
+ # CSS Supports at-rule descriptor.
+ experimental type CSSSupports extends object
+ properties
+ # Supports rule text.
+ string text
+ # Whether the supports condition is satisfied.
+ boolean active
+ # The associated rule header range in the enclosing stylesheet (if
+ # available).
+ optional SourceRange range
+ # Identifier of the stylesheet containing this object (if exists).
+ optional StyleSheetId styleSheetId
+
+ # CSS Layer at-rule descriptor.
+ experimental type CSSLayer extends object
+ properties
+ # Layer name.
+ string text
+ # The associated rule header range in the enclosing stylesheet (if
+ # available).
+ optional SourceRange range
+ # Identifier of the stylesheet containing this object (if exists).
+ optional StyleSheetId styleSheetId
+
+ # CSS Layer data.
+ experimental type CSSLayerData extends object
+ properties
+ # Layer name.
+ string name
+ # Direct sub-layers
+ optional array of CSSLayerData subLayers
+ # Layer order. The order determines the order of the layer in the cascade order.
+ # A higher number has higher priority in the cascade order.
+ number order
+
# Information about amount of glyphs that were rendered with given font.
type PlatformFontUsage extends object
properties
@@ -1653,6 +1748,8 @@ experimental domain CSS
optional array of PseudoElementMatches pseudoElements
# A chain of inherited styles (from the immediate node parent up to the DOM tree root).
optional array of InheritedStyleEntry inherited
+ # A chain of inherited pseudo element styles (from the immediate node parent up to the DOM tree root).
+ optional array of InheritedPseudoElementMatches inheritedPseudoElements
# A list of CSS keyframed animations matching this node.
optional array of CSSKeyframesRule cssKeyframesRules
@@ -1678,6 +1775,16 @@ experimental domain CSS
# The stylesheet text.
string text
+ # Returns all layers parsed by the rendering engine for the tree scope of a node.
+ # Given a DOM element identified by nodeId, getLayersForNode returns the root
+ # layer for the nearest ancestor document or shadow root. The layer root contains
+ # the full layer tree for the tree scope and their ordering.
+ experimental command getLayersForNode
+ parameters
+ DOM.NodeId nodeId
+ returns
+ CSSLayerData rootLayer
+
# Starts tracking the given computed styles for updates. The specified array of properties
# replaces the one previously specified. Pass empty array to disable tracking.
# Use takeComputedStyleUpdates to retrieve the list of nodes that had properties modified.
@@ -1733,6 +1840,16 @@ experimental domain CSS
# The resulting CSS container query rule after modification.
CSSContainerQuery containerQuery
+ # Modifies the expression of a supports at-rule.
+ experimental command setSupportsText
+ parameters
+ StyleSheetId styleSheetId
+ SourceRange range
+ string text
+ returns
+ # The resulting CSS Supports rule after modification.
+ CSSSupports supports
+
# Modifies the rule selector.
command setRuleSelector
parameters
@@ -1951,6 +2068,11 @@ experimental domain Cast
parameters
string sinkName
+ # Starts mirroring the desktop to the sink.
+ command startDesktopMirroring
+ parameters
+ string sinkName
+
# Starts mirroring the tab to the sink.
command startTabMirroring
parameters
@@ -2023,6 +2145,11 @@ domain DOM
scrollbar-corner
resizer
input-list-button
+ page-transition
+ page-transition-container
+ page-transition-image-wrapper
+ page-transition-outgoing-image
+ page-transition-incoming-image
# Shadow root type.
type ShadowRootType extends string
@@ -2237,6 +2364,13 @@ domain DOM
# Enables DOM agent for the given page.
command enable
+ parameters
+ # Whether to include whitespaces in the children array of returned Nodes.
+ experimental optional enum includeWhitespace
+ # Strip whitespaces from child arrays (default).
+ none
+ # Return all children including block-level whitespace nodes.
+ all
# Focuses the given element.
command focus
@@ -2884,6 +3018,23 @@ domain DOMDebugger
# Resource URL substring. All XHRs having this substring in the URL will get stopped upon.
string url
+# EventBreakpoints permits setting breakpoints on particular operations and
+# events in targets that run JavaScript but do not have a DOM.
+# JavaScript execution will stop on these operations as if there was a regular
+# breakpoint set.
+experimental domain EventBreakpoints
+ # Sets breakpoint on particular native event.
+ command setInstrumentationBreakpoint
+ parameters
+ # Instrumentation name to stop on.
+ string eventName
+
+ # Removes breakpoint on particular native event.
+ command removeInstrumentationBreakpoint
+ parameters
+ # Instrumentation name to stop on.
+ string eventName
+
# This domain facilitates obtaining document snapshots with DOM, layout, and style information.
experimental domain DOMSnapshot
depends on CSS
@@ -3381,7 +3532,8 @@ domain Emulation
experimental type UserAgentMetadata extends object
properties
optional array of UserAgentBrandVersion brands
- optional string fullVersion
+ optional array of UserAgentBrandVersion fullVersionList
+ deprecated optional string fullVersion
string platform
string platformVersion
string architecture
@@ -3409,6 +3561,13 @@ domain Emulation
# Whether to enable to disable focus emulation.
boolean enabled
+ # Automatically render all web contents using a dark theme.
+ experimental command setAutoDarkModeOverride
+ parameters
+ # Whether to enable or disable automatic dark mode.
+ # If not specified, any existing override will be cleared.
+ optional boolean enabled
+
# Enables CPU throttling to emulate slow CPUs.
experimental command setCPUThrottlingRate
parameters
@@ -3556,9 +3715,6 @@ domain Emulation
# If set this specifies the maximum number of tasks that can be run before virtual is forced
# forwards to prevent deadlock.
optional integer maxVirtualTimeTaskStarvationCount
- # If set the virtual time policy change should be deferred until any frame starts navigating.
- # Note any previous deferred policy change is superseded.
- optional boolean waitForNavigation
# If set, base::Time::Now will be overridden to initially return this value.
optional Network.TimeSinceEpoch initialVirtualTime
returns
@@ -3616,6 +3772,12 @@ domain Emulation
# To be sent in Sec-CH-UA-* headers and returned in navigator.userAgentData
experimental optional UserAgentMetadata userAgentMetadata
+ # Allows overriding the automation flag.
+ experimental command setAutomationOverride
+ parameters
+ # Whether the override should be enabled.
+ boolean enabled
+
# This domain provides experimental commands only supported in headless mode.
experimental domain HeadlessExperimental
depends on Page
@@ -4027,7 +4189,7 @@ domain Input
optional integer location
# Editing commands to send with the key event (e.g., 'selectAll') (default: []).
# These are related to but not equal the command names used in `document.execCommand` and NSStandardKeyBindingResponding.
- # See https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/core/editing/commands/editor_command_names.h for valid command names.
+ # See https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/editing/commands/editor_command_names.h for valid command names.
experimental optional array of string commands
# This method emulates inserting text that doesn't come from a key press,
@@ -4448,6 +4610,8 @@ domain Log
error
# Logged text.
string text
+ optional enum category
+ cors
# Timestamp when this entry was added.
Runtime.Timestamp timestamp
# URL of the resource if known.
@@ -4800,8 +4964,9 @@ domain Network
string logDescription
# Log ID.
string logId
- # Issuance date.
- TimeSinceEpoch timestamp
+ # Issuance date. Unlike TimeSinceEpoch, this contains the number of
+ # milliseconds since January 1, 1970, UTC, not the number of seconds.
+ number timestamp
# Hash algorithm.
string hashAlgorithm
# Signature algorithm.
@@ -4882,14 +5047,27 @@ domain Network
PreflightInvalidAllowOriginValue
PreflightAllowOriginMismatch
PreflightInvalidAllowCredentials
+ # TODO(https://crbug.com/1263483): Remove this once frontend code does
+ # not reference it anymore.
PreflightMissingAllowExternal
+ # TODO(https://crbug.com/1263483): Remove this once frontend code does
+ # not reference it anymore.
PreflightInvalidAllowExternal
+ PreflightMissingAllowPrivateNetwork
+ PreflightInvalidAllowPrivateNetwork
InvalidAllowMethodsPreflightResponse
InvalidAllowHeadersPreflightResponse
MethodDisallowedByPreflightResponse
HeaderDisallowedByPreflightResponse
RedirectContainsCredentials
+ # Request was a private network request initiated by a non-secure context.
InsecurePrivateNetwork
+ # Request carried a target IP address space property that did not match
+ # the target resource's address space.
+ InvalidPrivateNetworkAccess
+ # Request was a private network request yet did not carry a target IP
+ # address space.
+ UnexpectedPrivateNetworkAccess
NoCorsRedirectModeNotFollow
type CorsErrorStatus extends object
@@ -5084,6 +5262,11 @@ domain Network
# An unspecified port value allows protocol clients to emulate legacy cookie scope for the port.
# This is a temporary ability and it will be removed in the future.
experimental integer sourcePort
+ # Cookie partition key. The site of the top-level URL the browser was visiting at the start
+ # of the request to the endpoint that set the cookie.
+ experimental optional string partitionKey
+ # True if cookie partition key is opaque.
+ experimental optional boolean partitionKeyOpaque
# Types of reasons why a cookie may not be stored from a response.
experimental type SetCookieBlockedReason extends string
@@ -5138,6 +5321,9 @@ domain Network
# (which is required in order to use "SameParty"); or specified the "SameSite=Strict"
# attribute (which is forbidden when using "SameParty").
SamePartyConflictsWithOtherAttributes
+ # The cookie's name/value pair size exceeded the size limit defined in
+ # RFC6265bis.
+ NameValuePairExceedsMaxSize
# Types of reasons why a cookie may not be sent with a request.
experimental type CookieBlockedReason extends string
@@ -5182,6 +5368,9 @@ domain Network
SchemefulSameSiteUnspecifiedTreatedAsLax
# The cookie had the "SameParty" attribute and the request was made from a cross-party context.
SamePartyFromCrossPartyContext
+ # The cookie's name/value pair size exceeded the size limit defined in
+ # RFC6265bis.
+ NameValuePairExceedsMaxSize
# A cookie which was not stored from a response with the corresponding reason.
experimental type BlockedSetCookieWithReason extends object
@@ -5236,6 +5425,10 @@ domain Network
# An unspecified port value allows protocol clients to emulate legacy cookie scope for the port.
# This is a temporary ability and it will be removed in the future.
experimental optional integer sourcePort
+ # Cookie partition key. The site of the top-level URL the browser was visiting at the start
+ # of the request to the endpoint that set the cookie.
+ # If not set, the cookie will be set as not partitioned.
+ experimental optional string partitionKey
# Authorization challenge for HTTP status code 401 or 407.
experimental type AuthChallenge extends object
@@ -5606,6 +5799,10 @@ domain Network
# An unspecified port value allows protocol clients to emulate legacy cookie scope for the port.
# This is a temporary ability and it will be removed in the future.
experimental optional integer sourcePort
+ # Cookie partition key. The site of the top-level URL the browser was visiting at the start
+ # of the request to the endpoint that set the cookie.
+ # If not set, the cookie will be set as not partitioned.
+ experimental optional string partitionKey
returns
# Always set to true. If an error occurs, the response indicates protocol error.
deprecated boolean success
@@ -5767,6 +5964,10 @@ domain Network
TimeSinceEpoch wallTime
# Request initiator.
Initiator initiator
+ # In the case that redirectResponse is populated, this flag indicates whether
+ # requestWillBeSentExtraInfo and responseReceivedExtraInfo events will be or were emitted
+ # for the request which was just redirected.
+ experimental boolean redirectHasExtraInfo
# Redirect response data.
optional Response redirectResponse
# Type of this resource.
@@ -5807,6 +6008,9 @@ domain Network
ResourceType type
# Response data.
Response response
+ # Indicates whether requestWillBeSentExtraInfo and responseReceivedExtraInfo events will be
+ # or were emitted for this request.
+ experimental boolean hasExtraInfo
# Frame identifier.
optional Page.FrameId frameId
@@ -5913,6 +6117,8 @@ domain Network
Allow
BlockFromInsecureToMorePrivate
WarnFromInsecureToMorePrivate
+ PreflightBlock
+ PreflightWarn
experimental type IPAddressSpace extends string
enum
@@ -5921,6 +6127,13 @@ domain Network
Public
Unknown
+ experimental type ConnectTiming extends object
+ properties
+ # Timing's requestTime is a baseline in seconds, while the other numbers are ticks in
+ # milliseconds relatively to this requestTime. Matches ResourceTiming's requestTime for
+ # the same request (but not for redirected requests).
+ number requestTime
+
experimental type ClientSecurityState extends object
properties
boolean initiatorIsSecureContext
@@ -5940,6 +6153,8 @@ domain Network
array of BlockedCookieWithReason associatedCookies
# Raw request headers as they will be sent over the wire.
Headers headers
+ # Connection timing information for the request.
+ experimental ConnectTiming connectTiming
# The client security state set for the request.
optional ClientSecurityState clientSecurityState
@@ -6047,6 +6262,7 @@ domain Network
SameOriginAllowPopups
UnsafeNone
SameOriginPlusCoep
+ SameOriginAllowPopupsPlusCoep
experimental type CrossOriginOpenerPolicyStatus extends object
properties
@@ -6081,6 +6297,72 @@ domain Network
returns
SecurityIsolationStatus status
+ # Enables tracking for the Reporting API, events generated by the Reporting API will now be delivered to the client.
+ # Enabling triggers 'reportingApiReportAdded' for all existing reports.
+ experimental command enableReportingApi
+ parameters
+ # Whether to enable or disable events for the Reporting API
+ boolean enable
+
+ # The status of a Reporting API report.
+ experimental type ReportStatus extends string
+ enum
+ # Report has been queued and no attempt has been made to deliver it yet,
+ # or attempted previous upload failed (impermanently).
+ Queued
+ # There is an ongoing attempt to upload this report.
+ Pending
+ # Deletion of this report was requested while it was pending, so it will
+ # be removed after possibly outstanding upload attempts complete (successful
+ # or not).
+ MarkedForRemoval
+ # Successfully uploaded and MarkedForRemoval.
+ Success
+
+ experimental type ReportId extends string
+
+ # An object representing a report generated by the Reporting API.
+ experimental type ReportingApiReport extends object
+ properties
+ ReportId id
+ # The URL of the document that triggered the report.
+ string initiatorUrl
+ # The name of the endpoint group that should be used to deliver the report.
+ string destination
+ # The type of the report (specifies the set of data that is contained in the report body).
+ string type
+ # When the report was generated.
+ Network.TimeSinceEpoch timestamp
+ # How many uploads deep the related request was.
+ integer depth
+ # The number of delivery attempts made so far, not including an active attempt.
+ integer completedAttempts
+ object body
+ ReportStatus status
+
+ # Is sent whenever a new report is added.
+ # And after 'enableReportingApi' for all existing reports.
+ experimental event reportingApiReportAdded
+ parameters
+ ReportingApiReport report
+
+ experimental event reportingApiReportUpdated
+ parameters
+ ReportingApiReport report
+
+ experimental type ReportingApiEndpoint extends object
+ properties
+ # The URL of the endpoint to which reports may be delivered.
+ string url
+ # Name of the endpoint group.
+ string groupName
+
+ experimental event reportingApiEndpointsChangedForOrigin
+ parameters
+ # Origin of the document(s) which configured the endpoints.
+ string origin
+ array of ReportingApiEndpoint endpoints
+
# An object providing the result of a network resource load.
experimental type LoadNetworkResourcePageResult extends object
properties
@@ -6272,6 +6554,7 @@ experimental domain Overlay
enum
rgb
hsl
+ hwb
hex
# Configurations for Persistent Grid Highlight
@@ -6331,6 +6614,22 @@ experimental domain Overlay
# The style of the descendants' borders.
optional LineStyle descendantBorder
+ type IsolatedElementHighlightConfig extends object
+ properties
+ # A descriptor for the highlight appearance of an element in isolation mode.
+ IsolationModeHighlightConfig isolationModeHighlightConfig
+ # Identifier of the isolated element to highlight.
+ DOM.NodeId nodeId
+
+ type IsolationModeHighlightConfig extends object
+ properties
+ # The fill color of the resizers (default: transparent).
+ optional DOM.RGBA resizerColor
+ # The fill color for resizer handles (default: transparent).
+ optional DOM.RGBA resizerHandleColor
+ # The fill color for the mask covering non-isolated elements (default: transparent).
+ optional DOM.RGBA maskColor
+
type InspectMode extends string
enum
searchForNode
@@ -6522,8 +6821,8 @@ experimental domain Overlay
# True for showing scroll bottleneck rects
boolean show
- # Requests that backend shows hit-test borders on layers
- command setShowHitTestBorders
+ # Deprecated, no longer has any effect.
+ deprecated command setShowHitTestBorders
parameters
# True for showing hit-test borders
boolean show
@@ -6545,6 +6844,12 @@ experimental domain Overlay
# hinge data, null means hideHinge
optional HingeConfig hingeConfig
+ # Show elements in isolation mode with overlays.
+ command setShowIsolatedElements
+ parameters
+ # An array of node identifiers and descriptors for the highlight appearance.
+ array of IsolatedElementHighlightConfig isolatedElementHighlightConfigs
+
# Fired when the node should be inspected. This happens after call to `setInspectMode` or when
# user manually inspects an element.
event inspectNodeRequested
@@ -6635,12 +6940,12 @@ domain Page
ambient-light-sensor
attribution-reporting
autoplay
+ browsing-topics
camera
ch-dpr
ch-device-memory
ch-downlink
ch-ect
- ch-lang
ch-prefers-color-scheme
ch-rtt
ch-ua
@@ -6649,11 +6954,16 @@ domain Page
ch-ua-platform
ch-ua-model
ch-ua-mobile
+ ch-ua-full
ch-ua-full-version
+ ch-ua-full-version-list
ch-ua-platform-version
ch-ua-reduced
+ ch-ua-wow64
+ ch-viewport-height
ch-viewport-width
ch-width
+ ch-partitioned-cookies
clipboard-read
clipboard-write
cross-origin-isolated
@@ -6672,6 +6982,8 @@ domain Page
hid
idle-detection
interest-cohort
+ join-ad-interest-group
+ keyboard-map
magnetometer
microphone
midi
@@ -6679,6 +6991,7 @@ domain Page
payment
picture-in-picture
publickey-credentials-get
+ run-ad-auction
screen-wake-lock
serial
shared-autofill
@@ -6698,6 +7011,8 @@ domain Page
Header
# Declaration in iframe attribute.
IframeAttribute
+ # Inside fenced frame.
+ InFencedFrameTree
experimental type PermissionsPolicyBlockLocator extends object
properties
@@ -6725,6 +7040,7 @@ domain Page
FeatureDisabled
TokenDisabled
FeatureDisabledForUser
+ UnknownTrial
# Status for an Origin Trial.
experimental type OriginTrialStatus extends string
@@ -6796,8 +7112,6 @@ domain Page
experimental CrossOriginIsolatedContextType crossOriginIsolatedContextType
# Indicated which gated APIs / features are available.
experimental array of GatedAPIFeatures gatedAPIFeatures
- # Frame document's origin trials with at least one token present.
- experimental optional array of OriginTrial originTrials
# Information about the Resource on the page.
experimental type FrameResource extends object
@@ -6977,6 +7291,14 @@ domain Page
# The pictograph font-family.
optional string pictograph
+ # Font families collection for a script.
+ experimental type ScriptFontFamilies extends object
+ properties
+ # Name of the script which these font families are defined for.
+ string script
+ # Generic font families collection for the script.
+ FontFamilies fontFamilies
+
# Default font sizes.
experimental type FontSizes extends object
properties
@@ -7159,6 +7481,15 @@ domain Page
returns
optional binary primaryIcon
+ # Returns the unique (PWA) app id.
+ # Only returns values if the feature flag 'WebAppEnableManifestId' is enabled
+ experimental command getAppId
+ returns
+ # App id, either from manifest's id attribute or computed from start_url
+ optional string appId
+ # Recommendation for manifest's id attribute to match current id computed from start_url
+ optional string recommendedId
+
# Returns all browser cookies. Depending on the backend support, will return detailed cookie
# information in the `cookies` field.
experimental deprecated command getCookies
@@ -7428,6 +7759,8 @@ domain Page
parameters
# Specifies font families to set. If a font family is not specified, it won't be changed.
FontFamilies fontFamilies
+ # Specifies font families to set for individual scripts.
+ optional array of ScriptFontFamilies forScripts
# Set default font sizes.
experimental command setFontSizes
@@ -7524,18 +7857,9 @@ domain Page
# Stops sending each frame in the `screencastFrame`.
experimental command stopScreencast
- # Forces compilation cache to be generated for every subresource script.
- # See also: `Page.produceCompilationCache`.
- experimental command setProduceCompilationCache
- parameters
- boolean enabled
-
# Requests backend to produce compilation cache for the specified scripts.
- # Unlike setProduceCompilationCache, this allows client to only produce cache
- # for specific scripts. `scripts` are appeneded to the list of scripts
- # for which the cache for would produced. Disabling compilation cache with
- # `setProduceCompilationCache` would reset all pending cache requests.
- # The list may also be reset during page navigation.
+ # `scripts` are appeneded to the list of scripts for which the cache
+ # would be produced. The list may be reset during page navigation.
# When script with a matching URL is encountered, the cache is optionally
# produced upon backend discretion, based on internal heuristics.
# See also: `Page.compilationCacheProduced`.
@@ -7554,6 +7878,15 @@ domain Page
# Clears seeded compilation cache.
experimental command clearCompilationCache
+ # Sets the Secure Payment Confirmation transaction mode.
+ # https://w3c.github.io/secure-payment-confirmation/#sctn-automation-set-spc-transaction-mode
+ experimental command setSPCTransactionMode
+ parameters
+ enum mode
+ none
+ autoaccept
+ autoreject
+
# Generates a report for testing.
experimental command generateTestReport
parameters
@@ -7749,7 +8082,7 @@ domain Page
# List of not restored reasons for back-forward cache.
experimental type BackForwardCacheNotRestoredReason extends string
enum
- NotMainFrame
+ NotPrimaryMainFrame
BackForwardCacheDisabled
RelatedActiveContentsExist
HTTPStatusNotOK
@@ -7793,6 +8126,7 @@ domain Page
BrowsingInstanceNotSwapped
BackForwardCacheDisabledForDelegate
OptInUnloadHeaderNotPresent
+ UnloadHandlerExistsInMainFrame
UnloadHandlerExistsInSubFrame
ServiceWorkerUnregistration
CacheControlNoStore
@@ -7801,6 +8135,7 @@ domain Page
NoResponseHead
Unknown
ActivationNavigationsDisallowedForBug1234857
+ ErrorDocument
#Blocklisted features
WebSocket
WebTransport
@@ -7829,7 +8164,6 @@ domain Page
WebShare
RequestedStorageAccessGrant
WebNfc
- WebFileSystem
OutstandingNetworkRequestFetch
OutstandingNetworkRequestXHR
AppBanner
@@ -7844,19 +8178,39 @@ domain Page
KeyboardLock
WebOTPService
OutstandingNetworkRequestDirectSocket
- IsolatedWorldScript
+ InjectedJavascript
InjectedStyleSheet
+ Dummy
# Disabled for render frame host reasons
- MediaSessionImplOnServiceCreated
- SecurityHandler
- WebAuthenticationAPI
- FileChooser
- Serial
- FileSystemAccess
- MediaDevicesDispatcherHost
- WebBluetooth
- WebUSB
- MediaSession
+ # See content/browser/renderer_host/back_forward_cache_disable.h for explanations.
+ ContentSecurityHandler
+ ContentWebAuthenticationAPI
+ ContentFileChooser
+ ContentSerial
+ ContentFileSystemAccess
+ ContentMediaDevicesDispatcherHost
+ ContentWebBluetooth
+ ContentWebUSB
+ ContentMediaSession
+ ContentMediaSessionService
+ ContentScreenReader
+
+ # See components/back_forward_cache/back_forward_cache_disable.h for explanations.
+ EmbedderPopupBlockerTabHelper
+ EmbedderSafeBrowsingTriggeredPopupBlocker
+ EmbedderSafeBrowsingThreatDetails
+ EmbedderAppBannerManager
+ EmbedderDomDistillerViewerSource
+ EmbedderDomDistillerSelfDeletingRequestDelegate
+ EmbedderOomInterventionTabHelper
+ EmbedderOfflinePage
+ EmbedderChromePasswordManagerClientBindCredentialManager
+ EmbedderPermissionRequestManager
+ EmbedderModalDialog
+ EmbedderExtensions
+ EmbedderExtensionMessaging
+ EmbedderExtensionMessagingForOpenPort
+ EmbedderExtensionSentMessageToCachedFrame
# Types of not restored reasons for back-forward cache.
experimental type BackForwardCacheNotRestoredReasonType extends string
@@ -7871,6 +8225,20 @@ domain Page
BackForwardCacheNotRestoredReasonType type
# Not restored reason
BackForwardCacheNotRestoredReason reason
+ # Context associated with the reason. The meaning of this context is
+ # dependent on the reason:
+ # - EmbedderExtensionSentMessageToCachedFrame: the extension ID.
+ #
+ optional string context
+
+ experimental type BackForwardCacheNotRestoredExplanationTree extends object
+ properties
+ # URL of each frame
+ string url
+ # Not restored reasons of each frame
+ array of BackForwardCacheNotRestoredExplanation explanations
+ # Array of children frame
+ array of BackForwardCacheNotRestoredExplanationTree children
# Fired for failed bfcache history navigations if BackForwardCache feature is enabled. Do
# not assume any ordering with the Page.frameNavigated event. This event is fired only for
@@ -7884,6 +8252,8 @@ domain Page
FrameId frameId
# Array of reasons why the page could not be cached. This must not be empty.
array of BackForwardCacheNotRestoredExplanation notRestoredExplanations
+ # Tree structure of reasons why the page could not be cached for each frame.
+ optional BackForwardCacheNotRestoredExplanationTree notRestoredExplanationsTree
event loadEventFired
parameters
@@ -8226,20 +8596,20 @@ domain Security
# Security state information about the page.
VisibleSecurityState visibleSecurityState
- # The security state of the page changed.
- event securityStateChanged
+ # The security state of the page changed. No longer being sent.
+ deprecated event securityStateChanged
parameters
# Security state.
SecurityState securityState
# True if the page was loaded over cryptographic transport such as HTTPS.
deprecated boolean schemeIsCryptographic
- # List of explanations for the security state. If the overall security state is `insecure` or
- # `warning`, at least one corresponding explanation should be included.
- array of SecurityStateExplanation explanations
+ # Previously a list of explanations for the security state. Now always
+ # empty.
+ deprecated array of SecurityStateExplanation explanations
# Information about insecure content on the page.
deprecated InsecureContentStatus insecureContentStatus
- # Overrides user-visible description of the state.
- optional string summary
+ # Overrides user-visible description of the state. Always omitted.
+ deprecated optional string summary
experimental domain ServiceWorker
depends on Target
@@ -8376,6 +8746,7 @@ experimental domain Storage
websql
service_workers
cache_storage
+ interest_groups
all
other
@@ -8394,6 +8765,37 @@ experimental domain Storage
string issuerOrigin
number count
+ # Enum of interest group access types.
+ type InterestGroupAccessType extends string
+ enum
+ join
+ leave
+ update
+ bid
+ win
+
+ # Ad advertising element inside an interest group.
+ type InterestGroupAd extends object
+ properties
+ string renderUrl
+ optional string metadata
+
+ # The full details of an interest group.
+ type InterestGroupDetails extends object
+ properties
+ string ownerOrigin
+ string name
+ Network.TimeSinceEpoch expirationTime
+ string joiningOrigin
+ optional string biddingUrl
+ optional string biddingWasmHelperUrl
+ optional string updateUrl
+ optional string trustedBiddingSignalsUrl
+ array of string trustedBiddingSignalsKeys
+ optional string userBiddingSignals
+ array of InterestGroupAd ads
+ array of InterestGroupAd adComponents
+
# Clears storage for origin.
command clearDataForOrigin
parameters
@@ -8493,6 +8895,19 @@ experimental domain Storage
# True if any tokens were deleted, false otherwise.
boolean didDeleteTokens
+ # Gets details for a named interest group.
+ experimental command getInterestGroupDetails
+ parameters
+ string ownerOrigin
+ string name
+ returns
+ InterestGroupDetails details
+
+ # Enables/Disables issuing of interestGroupAccessed events.
+ experimental command setInterestGroupTracking
+ parameters
+ boolean enable
+
# A cache's contents have been modified.
event cacheStorageContentUpdated
parameters
@@ -8523,6 +8938,14 @@ experimental domain Storage
# Origin to update.
string origin
+ # One of the interest groups was accessed by the associated page.
+ event interestGroupAccessed
+ parameters
+ Network.TimeSinceEpoch accessTime
+ InterestGroupAccessType type
+ string ownerOrigin
+ string name
+
# The SystemInfo domain defines methods and events for querying low-level system information.
experimental domain SystemInfo
@@ -8740,6 +9163,9 @@ domain Target
optional string proxyServer
# Proxy bypass list, similar to the one passed to --proxy-bypass-list
optional string proxyBypassList
+ # An optional list of origins to grant unlimited cross-origin access to.
+ # Parts of the URL other than those constituting origin are ignored.
+ optional array of string originsWithUniversalNetworkAccess
returns
# The id of the context created.
@@ -8761,7 +9187,7 @@ domain Target
# Frame height in DIP (headless chrome only).
optional integer height
# The browser context to create the page in.
- optional Browser.BrowserContextID browserContextId
+ experimental optional Browser.BrowserContextID browserContextId
# Whether BeginFrames for this target will be controlled via DevTools (headless chrome only,
# not supported on MacOS yet, false by default).
experimental optional boolean enableBeginFrameControl
@@ -8815,6 +9241,8 @@ domain Target
# Controls whether to automatically attach to new targets which are considered to be related to
# this one. When turned on, attaches to all existing related targets as well. When turned off,
# automatically detaches from all currently attached targets.
+ # This also clears all targets added by `autoAttachRelated` from the list of targets to watch
+ # for creation of related targets.
experimental command setAutoAttach
parameters
# Whether to auto-attach to related targets.
@@ -8827,6 +9255,18 @@ domain Target
# and eventually retire it. See crbug.com/991325.
optional boolean flatten
+ # Adds the specified target to the list of targets that will be monitored for any related target
+ # creation (such as child frames, child workers and new versions of service worker) and reported
+ # through `attachedToTarget`. The specified target is also auto-attached.
+ # This cancels the effect of any previous `setAutoAttach` and is also cancelled by subsequent
+ # `setAutoAttach`. Only available at the Browser target.
+ experimental command autoAttachRelated
+ parameters
+ TargetID targetId
+ # Whether to pause new targets when attaching to them. Use `Runtime.runIfWaitingForDebugger`
+ # to run paused targets.
+ boolean waitForDebuggerOnStart
+
# Controls whether to discover available targets and notify via
# `targetCreated/targetInfoChanged/targetDestroyed` events.
command setDiscoverTargets
@@ -9166,7 +9606,9 @@ domain Fetch
# need to represent some non-UTF8 values that can't be transmitted
# over the protocol as text.
optional binary binaryResponseHeaders
- # A response body.
+ # A response body. If absent, original response body will be used if
+ # the request is intercepted at the response stage and empty body
+ # will be used if the request is intercepted at the request stage.
optional binary body
# A textual representation of responseCode.
# If absent, a standard phrase matching responseCode is used.
@@ -9196,6 +9638,26 @@ domain Fetch
# Response to with an authChallenge.
AuthChallengeResponse authChallengeResponse
+ # Continues loading of the paused response, optionally modifying the
+ # response headers. If either responseCode or headers are modified, all of them
+ # must be present.
+ experimental command continueResponse
+ parameters
+ # An id the client received in requestPaused event.
+ RequestId requestId
+ # An HTTP response code. If absent, original response code will be used.
+ optional integer responseCode
+ # A textual representation of responseCode.
+ # If absent, a standard phrase matching responseCode is used.
+ optional string responsePhrase
+ # Response headers. If absent, original response headers will be used.
+ optional array of HeaderEntry responseHeaders
+ # Alternative way of specifying response headers as a \0-separated
+ # series of name: value pairs. Prefer the above method unless you
+ # need to represent some non-UTF8 values that can't be transmitted
+ # over the protocol as text.
+ optional binary binaryResponseHeaders
+
# Causes the body of the response to be received from the server and
# returned as a single string. May only be issued for a request that
# is paused in the Response stage and is mutually exclusive with
@@ -9248,6 +9710,8 @@ domain Fetch
optional Network.ErrorReason responseErrorReason
# Response code if intercepted at response stage.
optional integer responseStatusCode
+ # Response status text if intercepted at response stage.
+ optional string responseStatusText
# Response headers if intercepted at the response stage.
optional array of HeaderEntry responseHeaders
# If the intercepted request had a corresponding Network.requestWillBeSent event fired for it,
@@ -9515,6 +9979,10 @@ experimental domain WebAuthn
# https://fidoalliance.org/specs/fido-v2.1-rd-20201208/fido-client-to-authenticator-protocol-v2.1-rd-20201208.html#sctn-credBlob-extension
# Defaults to false.
optional boolean hasCredBlob
+ # If set to true, the authenticator will support the minPinLength extension.
+ # https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#sctn-minpinlength-extension
+ # Defaults to false.
+ optional boolean hasMinPinLength
# If set to true, tests of user presence will succeed immediately.
# Otherwise, they will not be resolved. Defaults to true.
optional boolean automaticPresenceSimulation
diff --git a/common/devtools/chromium/v96/js_protocol.pdl b/common/devtools/chromium/v101/js_protocol.pdl
similarity index 98%
rename from common/devtools/chromium/v96/js_protocol.pdl
rename to common/devtools/chromium/v101/js_protocol.pdl
index b34c8551ad64b..09c420e3a6361 100644
--- a/common/devtools/chromium/v96/js_protocol.pdl
+++ b/common/devtools/chromium/v101/js_protocol.pdl
@@ -104,7 +104,9 @@ domain Debugger
# Location in the source code.
Location location
# JavaScript script name or url.
- string url
+ # Deprecated in favor of using the `location.scriptId` to resolve the URL via a previously
+ # sent `Debugger.scriptParsed` event.
+ deprecated string url
# Scope chain for this call frame.
array of Scope scopeChain
# `this` object for this call frame.
@@ -1550,6 +1552,18 @@ domain Runtime
parameters
string name
+ # This method tries to lookup and populate exception details for a
+ # JavaScript Error object.
+ # Note that the stackTrace portion of the resulting exceptionDetails will
+ # only be populated if the Runtime domain was enabled at the time when the
+ # Error was thrown.
+ experimental command getExceptionDetails
+ parameters
+ # The error object for which to resolve the exception details.
+ RemoteObjectId errorObjectId
+ returns
+ optional ExceptionDetails exceptionDetails
+
# Notification is issued every time when binding is called.
experimental event bindingCalled
parameters
diff --git a/common/devtools/chromium/v96/BUILD.bazel b/common/devtools/chromium/v102/BUILD.bazel
similarity index 100%
rename from common/devtools/chromium/v96/BUILD.bazel
rename to common/devtools/chromium/v102/BUILD.bazel
diff --git a/common/devtools/chromium/v102/browser_protocol.pdl b/common/devtools/chromium/v102/browser_protocol.pdl
new file mode 100644
index 0000000000000..7bbc5c4ca3952
--- /dev/null
+++ b/common/devtools/chromium/v102/browser_protocol.pdl
@@ -0,0 +1,10196 @@
+# Copyright 2017 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# Contributing to Chrome DevTools Protocol: https://docs.google.com/document/d/1c-COD2kaK__5iMM5SEx-PzNA7HFmgttcYfOHHX0HaOM/edit?usp=sharing
+
+version
+ major 1
+ minor 3
+
+experimental domain Accessibility
+ depends on DOM
+
+ # Unique accessibility node identifier.
+ type AXNodeId extends string
+
+ # Enum of possible property types.
+ type AXValueType extends string
+ enum
+ boolean
+ tristate
+ booleanOrUndefined
+ idref
+ idrefList
+ integer
+ node
+ nodeList
+ number
+ string
+ computedString
+ token
+ tokenList
+ domRelation
+ role
+ internalRole
+ valueUndefined
+
+ # Enum of possible property sources.
+ type AXValueSourceType extends string
+ enum
+ attribute
+ implicit
+ style
+ contents
+ placeholder
+ relatedElement
+
+ # Enum of possible native property sources (as a subtype of a particular AXValueSourceType).
+ type AXValueNativeSourceType extends string
+ enum
+ description
+ figcaption
+ label
+ labelfor
+ labelwrapped
+ legend
+ rubyannotation
+ tablecaption
+ title
+ other
+
+ # A single source for a computed AX property.
+ type AXValueSource extends object
+ properties
+ # What type of source this is.
+ AXValueSourceType type
+ # The value of this property source.
+ optional AXValue value
+ # The name of the relevant attribute, if any.
+ optional string attribute
+ # The value of the relevant attribute, if any.
+ optional AXValue attributeValue
+ # Whether this source is superseded by a higher priority source.
+ optional boolean superseded
+ # The native markup source for this value, e.g. a