From b1278378b501917e7d8b45cf71422d569db51384 Mon Sep 17 00:00:00 2001
From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com>
Date: Sun, 26 Oct 2025 16:50:15 -0400
Subject: [PATCH 01/11] Upgrade tests to use 4.38 and Python 3.14
---
.github/workflows/python-examples.yml | 10 +++++-----
examples/dotnet/SeleniumDocs/SeleniumDocs.csproj | 4 ++--
examples/java/build.gradle | 2 +-
examples/java/pom.xml | 2 +-
examples/kotlin/pom.xml | 2 +-
examples/python/requirements.txt | 10 +++++-----
examples/python/tox.ini | 4 ++--
examples/ruby/Gemfile | 4 ++--
examples/ruby/Gemfile.lock | 12 ++++++------
examples/ruby/spec/drivers/remote_webdriver_spec.rb | 2 +-
10 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/.github/workflows/python-examples.yml b/.github/workflows/python-examples.yml
index 60fc47bc2feb..996798294969 100644
--- a/.github/workflows/python-examples.yml
+++ b/.github/workflows/python-examples.yml
@@ -28,22 +28,22 @@ jobs:
include:
- os: ubuntu
release: stable
- python: '3.9'
+ python: '3.10'
- os: ubuntu
release: nightly
- python: '3.11'
+ python: '3.14'
- os: windows
release: stable
- python: '3.9'
+ python: '3.10'
- os: windows
release: nightly
- python: '3.12'
+ python: '3.14'
- os: macos
release: stable
python: '3.10'
- os: macos
release: nightly
- python: '3.13'
+ python: '3.14'
runs-on: ${{ format('{0}-latest', matrix.os) }}
steps:
- name: Checkout GitHub repo
diff --git a/examples/dotnet/SeleniumDocs/SeleniumDocs.csproj b/examples/dotnet/SeleniumDocs/SeleniumDocs.csproj
index 688c6fe598b6..08582d0ea2b0 100644
--- a/examples/dotnet/SeleniumDocs/SeleniumDocs.csproj
+++ b/examples/dotnet/SeleniumDocs/SeleniumDocs.csproj
@@ -10,8 +10,8 @@
-
-
+
+
diff --git a/examples/java/build.gradle b/examples/java/build.gradle
index ba3a2a0af90b..38a69565da1a 100644
--- a/examples/java/build.gradle
+++ b/examples/java/build.gradle
@@ -10,7 +10,7 @@ repositories {
}
dependencies {
- testImplementation 'org.seleniumhq.selenium:selenium-java:4.35.0'
+ testImplementation 'org.seleniumhq.selenium:selenium-java:4.38.0'
testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.13.4'
}
diff --git a/examples/java/pom.xml b/examples/java/pom.xml
index 716651c36fcd..d5f8c184b8e0 100644
--- a/examples/java/pom.xml
+++ b/examples/java/pom.xml
@@ -13,7 +13,7 @@
17
17
UTF-8
- 4.35.0
+ 4.38.0
diff --git a/examples/kotlin/pom.xml b/examples/kotlin/pom.xml
index 6a581f45258c..8ecdbd8a4980 100644
--- a/examples/kotlin/pom.xml
+++ b/examples/kotlin/pom.xml
@@ -19,7 +19,7 @@
3.5.3
11
- 4.35.0
+ 4.38.0
${java.version}
${java.version}
diff --git a/examples/python/requirements.txt b/examples/python/requirements.txt
index a73ed85c8f66..f17042570c0a 100644
--- a/examples/python/requirements.txt
+++ b/examples/python/requirements.txt
@@ -1,9 +1,9 @@
-selenium==4.35.0
-pytest==8.4.1
-trio==0.30.0
+selenium==4.38.0
+pytest==8.4.2
+trio==0.31.0
pytest-trio==0.8.0
-pytest-rerunfailures==15.1
+pytest-rerunfailures==16.1
flake8==7.3.0
requests==2.32.5
-tox==4.28.4
+tox==4.32.0
pytest-xdist==3.8.0
diff --git a/examples/python/tox.ini b/examples/python/tox.ini
index 49c6f636bb75..9438f9eb3999 100644
--- a/examples/python/tox.ini
+++ b/examples/python/tox.ini
@@ -2,7 +2,7 @@
# virtualenvs. This configuration file will run the test suite on all
# supported python versions. To use it, run "tox" from this directory.
#
-# For a specific environment, run: "tox -e " (i.e.: "tox -e py313")
+# For a specific environment, run: "tox -e " (i.e.: "tox -e py314")
#
# This tox configuration will skip any Python interpreters that can't be found.
# To manage multiple Python interpreters for covering all versions, you can use
@@ -11,11 +11,11 @@
[tox]
env_list =
- py39
py310
py311
py312
py313
+ py314
skip_missing_interpreters = True
[testenv]
diff --git a/examples/ruby/Gemfile b/examples/ruby/Gemfile
index 7bc7e7bf0d5b..0c14907e08c9 100644
--- a/examples/ruby/Gemfile
+++ b/examples/ruby/Gemfile
@@ -7,5 +7,5 @@ gem 'rake', '~> 13.0'
gem 'rspec', '~> 3.0'
gem 'rubocop', '~> 1.35'
gem 'rubocop-rspec', '~> 3.0'
-gem 'selenium-devtools', '= 0.139.0'
-gem 'selenium-webdriver', '= 4.35.0'
+gem 'selenium-devtools', '= 0.142.0'
+gem 'selenium-webdriver', '= 4.38.0'
diff --git a/examples/ruby/Gemfile.lock b/examples/ruby/Gemfile.lock
index 237489957a7c..6a30f9dfc322 100644
--- a/examples/ruby/Gemfile.lock
+++ b/examples/ruby/Gemfile.lock
@@ -17,7 +17,7 @@ GEM
rainbow (3.1.1)
rake (13.3.0)
regexp_parser (2.11.2)
- rexml (3.4.1)
+ rexml (3.4.4)
rspec (3.13.1)
rspec-core (~> 3.13.0)
rspec-expectations (~> 3.13.0)
@@ -49,10 +49,10 @@ GEM
lint_roller (~> 1.1)
rubocop (~> 1.72, >= 1.72.1)
ruby-progressbar (1.13.0)
- rubyzip (2.4.1)
- selenium-devtools (0.139.0)
+ rubyzip (3.2.1)
+ selenium-devtools (0.142.0)
selenium-webdriver (~> 4.2)
- selenium-webdriver (4.35.0)
+ selenium-webdriver (4.38.0)
base64 (~> 0.2)
logger (~> 1.4)
rexml (~> 3.2, >= 3.2.5)
@@ -77,8 +77,8 @@ DEPENDENCIES
rspec (~> 3.0)
rubocop (~> 1.35)
rubocop-rspec (~> 3.0)
- selenium-devtools (= 0.139.0)
- selenium-webdriver (= 4.35.0)
+ selenium-devtools (= 0.142.0)
+ selenium-webdriver (= 4.38.0)
BUNDLED WITH
2.5.6
diff --git a/examples/ruby/spec/drivers/remote_webdriver_spec.rb b/examples/ruby/spec/drivers/remote_webdriver_spec.rb
index d2d9c43e73d7..322f493425af 100644
--- a/examples/ruby/spec/drivers/remote_webdriver_spec.rb
+++ b/examples/ruby/spec/drivers/remote_webdriver_spec.rb
@@ -7,7 +7,7 @@
let(:target_directory) { File.join(Dir.tmpdir, SecureRandom.uuid) }
let(:wait) { Selenium::WebDriver::Wait.new(timeout: 2) }
let(:server) do
- Selenium::Server.new(File.expand_path(File.join('..', '..', '..', 'selenium-server-4.35.0.jar'), __dir__),
+ Selenium::Server.new(File.expand_path(File.join('..', '..', '..', 'selenium-server-4.38.0.jar'), __dir__),
background: true,
args: %w[--selenium-manager true --enable-managed-downloads true])
end
From 5897e34703e37c7cbeb8309f48c12f1f5815647c Mon Sep 17 00:00:00 2001
From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com>
Date: Sun, 26 Oct 2025 17:02:58 -0400
Subject: [PATCH 02/11] Upgrade devtools versions in tests
---
.../dotnet/SeleniumDocs/BiDi/CDP/NetworkTest.cs | 14 +++++++-------
.../java/dev/selenium/bidi/cdp/CdpApiTest.java | 8 ++++----
.../java/dev/selenium/bidi/cdp/NetworkTest.java | 8 ++++----
examples/python/tests/bidi/cdp/test_network.py | 2 +-
4 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/examples/dotnet/SeleniumDocs/BiDi/CDP/NetworkTest.cs b/examples/dotnet/SeleniumDocs/BiDi/CDP/NetworkTest.cs
index 325092813e06..2bec43fe39bd 100644
--- a/examples/dotnet/SeleniumDocs/BiDi/CDP/NetworkTest.cs
+++ b/examples/dotnet/SeleniumDocs/BiDi/CDP/NetworkTest.cs
@@ -4,8 +4,8 @@
using OpenQA.Selenium;
using OpenQA.Selenium.DevTools;
using System.Linq;
-using OpenQA.Selenium.DevTools.V137.Network;
-using OpenQA.Selenium.DevTools.V137.Performance;
+using OpenQA.Selenium.DevTools.V142.Network;
+using OpenQA.Selenium.DevTools.V142.Performance;
namespace SeleniumDocs.BiDi.CDP
@@ -16,7 +16,7 @@ public class NetworkTest : BaseTest
[TestInitialize]
public void Startup()
{
- StartDriver("137");
+ StartDriver("142");
}
[TestMethod]
@@ -109,9 +109,9 @@ public async Task PerformanceMetrics()
driver.Url = "https://www.selenium.dev/selenium/web/frameset.html";
var session = ((IDevTools)driver).GetDevToolsSession();
- var domains = session.GetVersionSpecificDomains();
+ var domains = session.GetVersionSpecificDomains();
- await domains.Performance.Enable(new OpenQA.Selenium.DevTools.V137.Performance.EnableCommandSettings());
+ await domains.Performance.Enable(new OpenQA.Selenium.DevTools.V142.Performance.EnableCommandSettings());
var metricsResponse =
await session.SendCommand(
new GetMetricsCommandSettings()
@@ -130,8 +130,8 @@ await session.SendCommand(
public async Task SetCookie()
{
var session = ((IDevTools)driver).GetDevToolsSession();
- var domains = session.GetVersionSpecificDomains();
- await domains.Network.Enable(new OpenQA.Selenium.DevTools.V137.Network.EnableCommandSettings());
+ var domains = session.GetVersionSpecificDomains();
+ await domains.Network.Enable(new OpenQA.Selenium.DevTools.V142.Network.EnableCommandSettings());
var cookieCommandSettings = new SetCookieCommandSettings
{
diff --git a/examples/java/src/test/java/dev/selenium/bidi/cdp/CdpApiTest.java b/examples/java/src/test/java/dev/selenium/bidi/cdp/CdpApiTest.java
index 72f9a7032f3a..ae96c6a6c478 100644
--- a/examples/java/src/test/java/dev/selenium/bidi/cdp/CdpApiTest.java
+++ b/examples/java/src/test/java/dev/selenium/bidi/cdp/CdpApiTest.java
@@ -16,9 +16,9 @@
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.HasDevTools;
-import org.openqa.selenium.devtools.v137.browser.Browser;
-import org.openqa.selenium.devtools.v137.network.Network;
-import org.openqa.selenium.devtools.v137.network.model.Headers;
+import org.openqa.selenium.devtools.v142.browser.Browser;
+import org.openqa.selenium.devtools.v142.network.Network;
+import org.openqa.selenium.devtools.v142.network.model.Headers;
import org.openqa.selenium.support.ui.WebDriverWait;
public class CdpApiTest extends BaseTest {
@@ -27,7 +27,7 @@ public class CdpApiTest extends BaseTest {
@BeforeEach
public void createSession() {
ChromeOptions options = getDefaultChromeOptions();
- options.setBrowserVersion("139");
+ options.setBrowserVersion("142");
driver = new ChromeDriver(options);
wait = new WebDriverWait(driver, Duration.ofSeconds(10));
}
diff --git a/examples/java/src/test/java/dev/selenium/bidi/cdp/NetworkTest.java b/examples/java/src/test/java/dev/selenium/bidi/cdp/NetworkTest.java
index 68e0cdcc15b6..4805c3063eea 100644
--- a/examples/java/src/test/java/dev/selenium/bidi/cdp/NetworkTest.java
+++ b/examples/java/src/test/java/dev/selenium/bidi/cdp/NetworkTest.java
@@ -21,10 +21,10 @@
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.HasDevTools;
import org.openqa.selenium.devtools.NetworkInterceptor;
-import org.openqa.selenium.devtools.v137.browser.Browser;
-import org.openqa.selenium.devtools.v137.network.Network;
-import org.openqa.selenium.devtools.v137.performance.Performance;
-import org.openqa.selenium.devtools.v137.performance.model.Metric;
+import org.openqa.selenium.devtools.v142.browser.Browser;
+import org.openqa.selenium.devtools.v142.network.Network;
+import org.openqa.selenium.devtools.v142.performance.Performance;
+import org.openqa.selenium.devtools.v142.performance.model.Metric;
import org.openqa.selenium.remote.http.*;
import org.openqa.selenium.support.ui.WebDriverWait;
diff --git a/examples/python/tests/bidi/cdp/test_network.py b/examples/python/tests/bidi/cdp/test_network.py
index 7cddde13be21..026e6a07b865 100644
--- a/examples/python/tests/bidi/cdp/test_network.py
+++ b/examples/python/tests/bidi/cdp/test_network.py
@@ -2,7 +2,7 @@
import pytest
from selenium.webdriver.common.by import By
-from selenium.webdriver.common.devtools.v137.network import Headers
+from selenium.webdriver.common.devtools.v142.network import Headers
@pytest.mark.trio
From a3718c43053d58228fdb6cb527141a6bd08be048 Mon Sep 17 00:00:00 2001
From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com>
Date: Mon, 27 Oct 2025 08:45:12 -0400
Subject: [PATCH 03/11] Fix tests for updated Edge starting message
---
examples/python/tests/browsers/test_chrome.py | 3 +++
examples/python/tests/browsers/test_edge.py | 8 ++++++--
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/examples/python/tests/browsers/test_chrome.py b/examples/python/tests/browsers/test_chrome.py
index 05ed61e44d3d..ef781aade424 100644
--- a/examples/python/tests/browsers/test_chrome.py
+++ b/examples/python/tests/browsers/test_chrome.py
@@ -1,10 +1,12 @@
import os
import re
import subprocess
+
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
+
def test_basic_options():
options = get_default_chrome_options()
driver = webdriver.Chrome(options=options)
@@ -189,6 +191,7 @@ def test_get_browser_logs():
assert any("I am console error" in log['message'] for log in logs), "No matching log message found."
driver.quit()
+
def get_default_chrome_options():
options = webdriver.ChromeOptions()
options.add_argument("--no-sandbox")
diff --git a/examples/python/tests/browsers/test_edge.py b/examples/python/tests/browsers/test_edge.py
index 457742ca4163..9b34504e0286 100644
--- a/examples/python/tests/browsers/test_edge.py
+++ b/examples/python/tests/browsers/test_edge.py
@@ -1,12 +1,15 @@
import os
import re
import subprocess
+
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
+
def test_basic_options():
options = get_default_edge_options()
+
driver = webdriver.Edge(options=options)
driver.quit()
@@ -73,7 +76,7 @@ def test_log_to_file(log_path):
driver = webdriver.Edge(service=service)
with open(log_path, 'r') as fp:
- assert "Starting Microsoft Edge WebDriver" in fp.readline()
+ assert "Starting" in fp.readline()
driver.quit()
@@ -84,7 +87,7 @@ def test_log_to_stdout(capfd):
driver = webdriver.Edge(service=service)
out, err = capfd.readouterr()
- assert "Starting Microsoft Edge WebDriver" in out
+ assert "Starting" in out
driver.quit()
@@ -189,6 +192,7 @@ def test_get_browser_logs():
assert any("I am console error" in log['message'] for log in logs), "No matching log message found."
driver.quit()
+
def get_default_edge_options():
options = webdriver.EdgeOptions()
options.add_argument("--no-sandbox")
From 601e65c3aace01591b5922be958b9d3a16ad29c9 Mon Sep 17 00:00:00 2001
From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com>
Date: Mon, 27 Oct 2025 09:22:24 -0400
Subject: [PATCH 04/11] Fix Ruby test to accomodate updated Edge start message
---
examples/ruby/spec/browsers/edge_spec.rb | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/examples/ruby/spec/browsers/edge_spec.rb b/examples/ruby/spec/browsers/edge_spec.rb
index 5820fab3e799..7508856f22b2 100644
--- a/examples/ruby/spec/browsers/edge_spec.rb
+++ b/examples/ruby/spec/browsers/edge_spec.rb
@@ -67,7 +67,7 @@
service.log = file_name
@driver = Selenium::WebDriver.for :edge, service: service
- expect(File.readlines(file_name).first).to include('Starting Microsoft Edge WebDriver')
+ expect(File.readlines(file_name).first).to include('Starting')
end
it 'logs to console' do
@@ -77,7 +77,7 @@
expect {
@driver = Selenium::WebDriver.for :edge, service: service
- }.to output(/Starting Microsoft Edge WebDriver/).to_stdout_from_any_process
+ }.to output(/Starting/).to_stdout_from_any_process
end
it 'sets log level' do
From 68152fbd14d31bbd2f959ccc20467bcb2330bbe1 Mon Sep 17 00:00:00 2001
From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com>
Date: Mon, 27 Oct 2025 09:42:32 -0400
Subject: [PATCH 05/11] Update tox.ini
---
examples/python/tox.ini | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/examples/python/tox.ini b/examples/python/tox.ini
index 9438f9eb3999..49f01f030d6f 100644
--- a/examples/python/tox.ini
+++ b/examples/python/tox.ini
@@ -25,6 +25,4 @@ deps =
-r requirements.txt
commands =
# "-vv" means extra verbose
- # "-r fEsxXp" means show extra test summary info as specified by:
- # (f)ailed, (E)rror, (s)kipped, (x)failed, (X)passed, (p)assed
- pytest -vv -r fEsxXp {posargs:.}
+ pytest -vv -n auto {posargs:.}
From e4fed89369470aeba673820ad7f19e974e153b86 Mon Sep 17 00:00:00 2001
From: Sri Harsha <12621691+harsha509@users.noreply.github.com>
Date: Mon, 27 Oct 2025 11:41:15 -0400
Subject: [PATCH 06/11] Update Network.enable to include additional
parametersFix test for v142
---
.../java/src/test/java/dev/selenium/bidi/cdp/CdpApiTest.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/examples/java/src/test/java/dev/selenium/bidi/cdp/CdpApiTest.java b/examples/java/src/test/java/dev/selenium/bidi/cdp/CdpApiTest.java
index ae96c6a6c478..9a9ff7d927cd 100644
--- a/examples/java/src/test/java/dev/selenium/bidi/cdp/CdpApiTest.java
+++ b/examples/java/src/test/java/dev/selenium/bidi/cdp/CdpApiTest.java
@@ -36,7 +36,7 @@ public void createSession() {
public void basicAuth() {
devTools = ((HasDevTools) driver).getDevTools();
devTools.createSession();
- devTools.send(Network.enable(Optional.of(100000), Optional.of(100000), Optional.of(100000)));
+ devTools.send(Network.enable(Optional.of(100000), Optional.of(100000), Optional.of(100000), Optional.of(false), Optional.empty()));
String encodedAuth = Base64.getEncoder().encodeToString("admin:admin".getBytes());
Map headers = ImmutableMap.of("Authorization", "Basic " + encodedAuth);
From 36f81bb1dabbf7afe5b7d7d504946518f467d031 Mon Sep 17 00:00:00 2001
From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com>
Date: Mon, 27 Oct 2025 15:05:07 -0400
Subject: [PATCH 07/11] Update package.json
---
examples/javascript/package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/examples/javascript/package.json b/examples/javascript/package.json
index c35252cec788..7607dc3f945c 100644
--- a/examples/javascript/package.json
+++ b/examples/javascript/package.json
@@ -8,7 +8,7 @@
"license": "Apache-2.0",
"dependencies": {
"assert": "2.1.0",
- "selenium-webdriver": "4.36.0"
+ "selenium-webdriver": "4.38.0"
},
"devDependencies": {
"mocha": "11.7.4"
From c1a3c95a8d939086b8272ca2042be70e514543e6 Mon Sep 17 00:00:00 2001
From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com>
Date: Mon, 27 Oct 2025 15:54:08 -0400
Subject: [PATCH 08/11] Force Firefox tests to use XWayland on Linux to
workaround Firefox issue
---
examples/python/tests/conftest.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/examples/python/tests/conftest.py b/examples/python/tests/conftest.py
index b394cfc6be81..402b271ccc08 100644
--- a/examples/python/tests/conftest.py
+++ b/examples/python/tests/conftest.py
@@ -30,6 +30,7 @@ def driver(request):
options.enable_bidi = True
driver = webdriver.Chrome(options=options)
elif driver_type == "firefox":
+ os.environ["MOZ_ENABLE_WAYLAND"] = "0"
driver = webdriver.Firefox()
else:
driver = webdriver.Chrome()
From 10e6148c9c09180bcc2377507ad8b44fdc5626bd Mon Sep 17 00:00:00 2001
From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com>
Date: Mon, 27 Oct 2025 15:57:26 -0400
Subject: [PATCH 09/11] Revert newline changes so line numbers in examples
aren't screwed up
---
examples/python/tests/browsers/test_chrome.py | 2 --
examples/python/tests/browsers/test_edge.py | 2 --
2 files changed, 4 deletions(-)
diff --git a/examples/python/tests/browsers/test_chrome.py b/examples/python/tests/browsers/test_chrome.py
index ef781aade424..d813e8aca815 100644
--- a/examples/python/tests/browsers/test_chrome.py
+++ b/examples/python/tests/browsers/test_chrome.py
@@ -1,12 +1,10 @@
import os
import re
import subprocess
-
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
-
def test_basic_options():
options = get_default_chrome_options()
driver = webdriver.Chrome(options=options)
diff --git a/examples/python/tests/browsers/test_edge.py b/examples/python/tests/browsers/test_edge.py
index 9b34504e0286..f4114b84087a 100644
--- a/examples/python/tests/browsers/test_edge.py
+++ b/examples/python/tests/browsers/test_edge.py
@@ -1,12 +1,10 @@
import os
import re
import subprocess
-
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
-
def test_basic_options():
options = get_default_edge_options()
From 53177dc14d61f7589b2f621438f0d86980e4c2ae Mon Sep 17 00:00:00 2001
From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com>
Date: Mon, 27 Oct 2025 16:32:12 -0400
Subject: [PATCH 10/11] Trigger CI
From b6f5cce26e56e85ff560097f99b31d863a6dd44d Mon Sep 17 00:00:00 2001
From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com>
Date: Wed, 29 Oct 2025 11:36:05 -0400
Subject: [PATCH 11/11] Trigger CI