Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/bazel.yml
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ jobs:
shell: pwsh
run: ./scripts/github-actions/delete-browsers-drivers.ps1
- name: Free disk space
if: inputs.os == 'ubuntu'
if: contains(inputs.os, 'ubuntu')
shell: bash
run: |
. ./scripts/github-actions/disk-status.sh
Expand Down Expand Up @@ -209,7 +209,7 @@ jobs:
shell: bash
run: . ./scripts/github-actions/disk-status.sh
- name: Setup Fluxbox and Xvfb
if: inputs.needs-display && inputs.os == 'ubuntu'
if: inputs.needs-display && contains(inputs.os, 'ubuntu')
run: |
sudo apt-get update && sudo apt-get -y install fluxbox x11-utils
Xvfb :99 &
Expand Down
10 changes: 6 additions & 4 deletions .github/workflows/ci-ruby.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,12 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu, windows, macos]
tag_filters: ["unit,os-sensitive,se-manager,skip-rbe"]
include:
- os: ubuntu
- os: windows
- os: macos
# Chrome has no linux-arm64 build before 153; Edge has none at all.
- os: ubuntu-24.04-arm
tag_filters: "unit,os-sensitive,se-manager,skip-rbe,-chrome,-edge"
with:
name: ${{ matrix.os }}
needs-display: true
Expand All @@ -78,7 +80,7 @@ jobs:
--test_env=SE_FORCE_BROWSER_DOWNLOAD=true
--test_env=SE_SKIP_DRIVER_IN_PATH=true
--test_env=SKIP_PENDING=true
--test_tag_filters=unit,os-sensitive,se-manager,skip-rbe
--test_tag_filters=${{ matrix.tag_filters }}
--target_pattern_file=bazel-targets-rb.txt

os-tests-full:
Expand Down
22 changes: 11 additions & 11 deletions .github/workflows/ci-rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,11 @@ jobs:
- arch: x86_64
runner: ubuntu-latest
target: x86_64-unknown-linux-musl
artifact: selenium-manager-linux
artifact: selenium-manager-linux-x86_64
- arch: aarch64
runner: ubuntu-24.04-arm
target: aarch64-unknown-linux-musl
artifact: selenium-manager-linux-aarch64
artifact: selenium-manager-linux-arm64
steps:
- name: "Checkout project"
uses: actions/checkout@v6
Expand Down Expand Up @@ -156,11 +156,11 @@ jobs:
- arch: x86_64
runner: ubuntu-latest
target: x86_64-unknown-linux-musl
artifact: selenium-manager-linux-debug
artifact: selenium-manager-linux-x86_64-debug
- arch: aarch64
runner: ubuntu-24.04-arm
target: aarch64-unknown-linux-musl
artifact: selenium-manager-linux-aarch64-debug
artifact: selenium-manager-linux-arm64-debug
steps:
- name: "Checkout project"
uses: actions/checkout@v6
Expand Down Expand Up @@ -308,13 +308,13 @@ jobs:
path: artifacts
- name: "Prepare and Commit"
run: |
linux_sha=$(shasum -a 256 artifacts/selenium-manager-linux/selenium-manager-linux | awk '{print $1}')
linux_aarch64_sha=$(shasum -a 256 artifacts/selenium-manager-linux-aarch64/selenium-manager-linux-aarch64 | awk '{print $1}')
linux_x86_64_sha=$(shasum -a 256 artifacts/selenium-manager-linux-x86_64/selenium-manager-linux-x86_64 | awk '{print $1}')
linux_arm64_sha=$(shasum -a 256 artifacts/selenium-manager-linux-arm64/selenium-manager-linux-arm64 | awk '{print $1}')
macos_sha=$(shasum -a 256 artifacts/selenium-manager-macos/selenium-manager-macos | awk '{print $1}')
windows_sha=$(shasum -a 256 artifacts/selenium-manager-windows/selenium-manager-windows.exe | awk '{print $1}')
sbom_sha=$(shasum -a 256 artifacts/selenium-manager-sbom/selenium-manager.cdx.json | awk '{print $1}')
notice_sha=$(shasum -a 256 artifacts/selenium-manager-sbom/selenium-manager-THIRD-PARTY-NOTICES.txt | awk '{print $1}')
echo "{\"macos\": \"$macos_sha\", \"windows\": \"$windows_sha\", \"linux\": \"$linux_sha\", \"linux-aarch64\": \"$linux_aarch64_sha\", \"sbom\": \"$sbom_sha\", \"notice\": \"$notice_sha\"}" > latest.json
echo "{\"macos\": \"$macos_sha\", \"windows\": \"$windows_sha\", \"linux-x86_64\": \"$linux_x86_64_sha\", \"linux-arm64\": \"$linux_arm64_sha\", \"sbom\": \"$sbom_sha\", \"notice\": \"$notice_sha\"}" > latest.json
git config --local user.email "selenium-ci@users.noreply.github.com"
git config --local user.name "Selenium CI Bot"
git add latest.json
Expand All @@ -332,12 +332,12 @@ jobs:
draft: false
prerelease: false
files: |
artifacts/selenium-manager-linux/selenium-manager-linux
artifacts/selenium-manager-linux-aarch64/selenium-manager-linux-aarch64
artifacts/selenium-manager-linux-x86_64/selenium-manager-linux-x86_64
artifacts/selenium-manager-linux-arm64/selenium-manager-linux-arm64
artifacts/selenium-manager-macos/selenium-manager-macos
artifacts/selenium-manager-windows/selenium-manager-windows.exe
artifacts/selenium-manager-linux-debug/selenium-manager-linux-debug.tar
artifacts/selenium-manager-linux-aarch64-debug/selenium-manager-linux-aarch64-debug.tar
artifacts/selenium-manager-linux-x86_64-debug/selenium-manager-linux-x86_64-debug.tar
artifacts/selenium-manager-linux-arm64-debug/selenium-manager-linux-arm64-debug.tar
artifacts/selenium-manager-macos-debug/selenium-manager-macos-debug.tar
artifacts/selenium-manager-windows-debug/selenium-manager-windows-debug.exe
artifacts/selenium-manager-sbom/selenium-manager.cdx.json
Expand Down
3 changes: 2 additions & 1 deletion MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -455,7 +455,8 @@ use_repo(crate, "crates")
selenium_manager_artifacts = use_extension("//common:selenium_manager.bzl", "selenium_manager_artifacts")
use_repo(
selenium_manager_artifacts,
"download_sm_linux",
"download_sm_linux_arm64",
"download_sm_linux_x86_64",
"download_sm_macos",
"download_sm_notice",
"download_sm_sbom",
Expand Down
18 changes: 18 additions & 0 deletions common/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,24 @@ config_setting(
constraint_values = ["@platforms//os:windows"],
)

[
config_setting(
name = "{}_{}".format(os, arch),
constraint_values = [
"@platforms//os:{}".format(os),
"@platforms//cpu:{}".format(arch),
],
)
for (os, arch) in [
("linux", "arm64"),
("linux", "x86_64"),
("macos", "arm64"),
("macos", "x86_64"),
("windows", "arm64"),
("windows", "x86_64"),
]
]

# Are we creating a stamped build?
config_setting(
name = "stamp",
Expand Down
14 changes: 11 additions & 3 deletions common/manager/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,18 @@ package(
)

alias(
name = "selenium-manager-linux",
name = "selenium-manager-linux-x86_64",
actual = select({
"//common:use_pinned_browser": "@download_sm_linux//file",
"//conditions:default": "//rust:selenium-manager-linux",
"//common:use_pinned_browser": "@download_sm_linux_x86_64//file",
"//conditions:default": "//rust:selenium-manager-linux-x86_64",
}),
)

alias(
name = "selenium-manager-linux-arm64",
actual = select({
"//common:use_pinned_browser": "@download_sm_linux_arm64//file",
"//conditions:default": "//rust:selenium-manager-linux-arm64",
}),
)

Expand Down
29 changes: 18 additions & 11 deletions common/selenium_manager.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -5,36 +5,43 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")

def selenium_manager():
http_file(
name = "download_sm_linux",
name = "download_sm_linux_x86_64",
executable = True,
sha256 = "97df9c7b4aefd1dd1385c81e81543355ca46809f8ec49a20d55a4d0cbac71567",
url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-3f61eec/selenium-manager-linux",
sha256 = "d76852d481cd736426a0e3b3b7ec3c246b5abe6907b44341249bf51f00781901",
url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-d62f09d/selenium-manager-linux",
)

http_file(
name = "download_sm_linux_arm64",
executable = True,
sha256 = "774d08f8188b991e657ee503aa28cee2dea6c97c8f804a73d7646db5fa7d995b",
url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-d62f09d/selenium-manager-linux-aarch64",
)

http_file(
name = "download_sm_macos",
executable = True,
sha256 = "8d7e7d02944c357934540cb87e89b1ec3bac2d63f2fb3118957fa38abb7e4bcb",
url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-3f61eec/selenium-manager-macos",
sha256 = "8b228c9ff5d212a93e5895f3387efc4f22e548de75c48976c36efab23fbf3377",
url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-d62f09d/selenium-manager-macos",
)

http_file(
name = "download_sm_windows",
executable = True,
sha256 = "79ea01dba38fee92802aea868623de282c42145b32e3b97fd2ff2802e804355d",
url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-3f61eec/selenium-manager-windows.exe",
sha256 = "cb7460d2330b3d9037a6ab78c8e626cfecec97a30059fc51c46764e07e8c43ef",
url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-d62f09d/selenium-manager-windows.exe",
)

http_file(
name = "download_sm_sbom",
sha256 = "a0230dd7a0daba4e047290452288feb7ed05cdfcd890b8ba459e92b1f90ce240",
url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-3f61eec/selenium-manager.cdx.json",
sha256 = "2e5e138a6a52e6536e8689dbfdff1c19ace8ae0be64a00bb9dfd65ea83854e93",
url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-d62f09d/selenium-manager.cdx.json",
)

http_file(
name = "download_sm_notice",
sha256 = "6ffe344c4bab09c047a9b932f012f795832829b1f38fd97f351b9ea177d437b8",
url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-3f61eec/selenium-manager-THIRD-PARTY-NOTICES.txt",
sha256 = "562302c53a61f88b900c09b1ec5cc4574fd9e5bf8eae3b3a8e49d30026c95ce3",
url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-d62f09d/selenium-manager-THIRD-PARTY-NOTICES.txt",
)

def _selenium_manager_artifacts_impl(_ctx):
Expand Down
16 changes: 12 additions & 4 deletions dotnet/src/webdriver/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -150,9 +150,16 @@ copy_file(
)

copy_file(
name = "manager-linux",
src = "//common/manager:selenium-manager-linux",
out = "manager/linux/selenium-manager",
name = "manager-linux-x86_64",
src = "//common/manager:selenium-manager-linux-x86_64",
out = "manager/linux-x86_64/selenium-manager",
visibility = ["//dotnet/test/webdriver:__pkg__"],
)

copy_file(
name = "manager-linux-arm64",
src = "//common/manager:selenium-manager-linux-arm64",
out = "manager/linux-arm64/selenium-manager",
visibility = ["//dotnet/test/webdriver:__pkg__"],
)

Expand All @@ -174,7 +181,8 @@ nuget_pack(
name = "webdriver-pack",
files = {
"//common/images:selenium_logo_small.png": "icon.png",
"//common/manager:selenium-manager-linux": "manager/linux/selenium-manager",
"//common/manager:selenium-manager-linux-x86_64": "manager/linux-x86_64/selenium-manager",
"//common/manager:selenium-manager-linux-arm64": "manager/linux-arm64/selenium-manager",
"//common/manager:selenium-manager-macos": "manager/macos/selenium-manager",
"//common/manager:selenium-manager-notice": "selenium-manager-THIRD-PARTY-NOTICES.txt",
"//common/manager:selenium-manager-sbom": "selenium-manager.cdx.json",
Expand Down
12 changes: 9 additions & 3 deletions dotnet/src/webdriver/Manager/SeleniumManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,7 @@

using System.Diagnostics;
using System.Globalization;
#if !NET8_0_OR_GREATER
using System.Runtime.InteropServices;
#endif
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
Expand Down Expand Up @@ -134,7 +132,15 @@ public static partial class SeleniumManager
probingPaths.Add(Path.Combine(baseDirectory, "runtimes", "win", "native", seleniumManagerFileName));
break;
case SupportedPlatform.Linux:
probingPaths.Add(Path.Combine(baseDirectory, "runtimes", "linux", "native", seleniumManagerFileName));
// linux-musl-* resolves through these, so no generic "linux" folder is needed.
#if !NET462
var linuxRid = RuntimeInformation.ProcessArchitecture == Architecture.Arm64
? "linux-arm64"
: "linux-x64";
#else
const string linuxRid = "linux-x64";
#endif
probingPaths.Add(Path.Combine(baseDirectory, "runtimes", linuxRid, "native", seleniumManagerFileName));
break;
case SupportedPlatform.MacOS:
probingPaths.Add(Path.Combine(baseDirectory, "runtimes", "osx", "native", seleniumManagerFileName));
Expand Down
5 changes: 3 additions & 2 deletions dotnet/src/webdriver/Selenium.WebDriver.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
</ItemGroup>

<Target Name="GenerateBazelArtifacts" BeforeTargets="CoreCompile">
<Exec Command="bazel build //dotnet/src/webdriver:manager-linux //dotnet/src/webdriver:manager-windows //dotnet/src/webdriver:manager-macos //dotnet/src/webdriver:resource-utilities //dotnet/src/webdriver/DevTools/..." WorkingDirectory="../../.." />
<Exec Command="bazel build //dotnet/src/webdriver:manager-linux-x86_64 //dotnet/src/webdriver:manager-linux-arm64 //dotnet/src/webdriver:manager-windows //dotnet/src/webdriver:manager-macos //dotnet/src/webdriver:resource-utilities //dotnet/src/webdriver/DevTools/..." WorkingDirectory="../../.." />

<ItemGroup>
<Compile Include="..\..\..\bazel-bin\dotnet\src\webdriver\ResourceUtilities.g.cs" />
Expand All @@ -70,7 +70,8 @@
</Target>

<ItemGroup>
<None Include="$(BaseSeleniumManagerPath)\linux\selenium-manager" Pack="true" PackagePath="runtimes\linux\native\" Visible="false" CopyToOutputDirectory="PreserveNewest" Link="runtimes\linux\native\selenium-manager" />
<None Include="$(BaseSeleniumManagerPath)\linux-x86_64\selenium-manager" Pack="true" PackagePath="runtimes\linux-x64\native\" Visible="false" CopyToOutputDirectory="PreserveNewest" Link="runtimes\linux-x64\native\selenium-manager" />
<None Include="$(BaseSeleniumManagerPath)\linux-arm64\selenium-manager" Pack="true" PackagePath="runtimes\linux-arm64\native\" Visible="false" CopyToOutputDirectory="PreserveNewest" Link="runtimes\linux-arm64\native\selenium-manager" />
<None Include="$(BaseSeleniumManagerPath)\macos\selenium-manager" Pack="true" PackagePath="runtimes\osx\native\" Visible="false" CopyToOutputDirectory="PreserveNewest" Link="runtimes\osx\native\selenium-manager" />
<None Include="$(BaseSeleniumManagerPath)\windows\selenium-manager.exe" Pack="true" PackagePath="runtimes\win\native\" Visible="false" CopyToOutputDirectory="PreserveNewest" Link="runtimes\win\native\selenium-manager.exe" />
</ItemGroup>
Expand Down
3 changes: 2 additions & 1 deletion dotnet/src/webdriver/Selenium.WebDriver.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@
<file src="build/Selenium.WebDriver.props" target="build/Selenium.WebDriver.props"/>
<file src="buildTransitive/Selenium.WebDriver.props" target="buildTransitive/Selenium.WebDriver.props"/>

<file src="manager/linux/selenium-manager" target="runtimes/linux/native/selenium-manager" />
<file src="manager/linux-x86_64/selenium-manager" target="runtimes/linux-x64/native/selenium-manager" />
<file src="manager/linux-arm64/selenium-manager" target="runtimes/linux-arm64/native/selenium-manager" />
<file src="manager/macos/selenium-manager" target="runtimes/osx/native/selenium-manager" />
<file src="manager/windows/selenium-manager.exe" target="runtimes/win/native/selenium-manager.exe" />

Expand Down
11 changes: 9 additions & 2 deletions dotnet/src/webdriver/assets/nuget/build/Selenium.WebDriver.props
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,15 @@
<Pack>false</Pack>
</Content>

<Content Include="$(MSBuildThisFileDirectory)..\runtimes\linux\native\selenium-manager">
<Link>runtimes\linux\native\%(Filename)%(Extension)</Link>
<Content Include="$(MSBuildThisFileDirectory)..\runtimes\linux-x64\native\selenium-manager">
<Link>runtimes\linux-x64\native\%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>False</Visible>
<Pack>false</Pack>
</Content>

<Content Include="$(MSBuildThisFileDirectory)..\runtimes\linux-arm64\native\selenium-manager">
<Link>runtimes\linux-arm64\native\%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>False</Visible>
<Pack>false</Pack>
Expand Down
3 changes: 2 additions & 1 deletion dotnet/test/webdriver/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ filegroup(
"appconfig.json",
"//common/extensions",
"//common/src/web",
"//dotnet/src/webdriver:manager-linux",
"//dotnet/src/webdriver:manager-linux-arm64",
"//dotnet/src/webdriver:manager-linux-x86_64",
Comment thread
qodo-code-review[bot] marked this conversation as resolved.
"//dotnet/src/webdriver:manager-macos",
"//dotnet/src/webdriver:manager-windows",
"//javascript/atoms",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,8 @@ private EnvironmentManager()
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
managerFilePath = runfiles.Rlocation("_main/dotnet/src/webdriver/manager/linux/selenium-manager");
var linuxArch = RuntimeInformation.ProcessArchitecture == Architecture.Arm64 ? "arm64" : "x86_64";
managerFilePath = runfiles.Rlocation($"_main/dotnet/src/webdriver/manager/linux-{linuxArch}/selenium-manager");
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
Expand Down
15 changes: 11 additions & 4 deletions java/src/org/openqa/selenium/manager/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ java_export(
],
pom_template = "//java/src/org/openqa/selenium:template-pom",
resources = [
":manager-linux",
":manager-linux-arm64",
":manager-linux-x86_64",
":manager-macos",
":manager-notice",
":manager-sbom",
Expand All @@ -32,9 +33,15 @@ java_export(
)

copy_file(
name = "manager-linux",
src = "//common/manager:selenium-manager-linux",
out = "linux/selenium-manager",
name = "manager-linux-x86_64",
src = "//common/manager:selenium-manager-linux-x86_64",
out = "linux-x86_64/selenium-manager",
)

copy_file(
name = "manager-linux-arm64",
src = "//common/manager:selenium-manager-linux-arm64",
out = "linux-arm64/selenium-manager",
)

copy_file(
Expand Down
12 changes: 5 additions & 7 deletions java/src/org/openqa/selenium/manager/SeleniumManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -211,18 +211,16 @@ private synchronized Path getBinary() {
} else if (current.is(MAC)) {
folder = "macos";
} else if (current.is(LINUX)) {
if (System.getProperty("os.arch").contains("arm")
|| System.getProperty("os.arch").contains("aarch64")) {
throw new WebDriverException("Linux ARM is not supported by Selenium Manager");
} else {
folder = "linux";
}
folder =
System.getProperty("os.arch", "").toLowerCase().contains("aarch64")
? "linux-arm64"
: "linux-x86_64";
Comment thread
qodo-code-review[bot] marked this conversation as resolved.
} else if (current.is(UNIX)) {
LOG.warning(
String.format(
"Selenium Manager binary may not be compatible with %s; verify settings",
current));
folder = "linux";
folder = "linux-x86_64";
} else {
throw new WebDriverException("Unsupported platform: " + current);
}
Expand Down
Loading