diff --git a/.github/workflows/dotnet-examples.yml b/.github/workflows/dotnet-examples.yml index 1bf2c7c49778..2b79b75cd9e3 100644 --- a/.github/workflows/dotnet-examples.yml +++ b/.github/workflows/dotnet-examples.yml @@ -61,7 +61,9 @@ jobs: if: matrix.release == 'nightly' && matrix.os != 'windows' run: | - latest_nightly=$(./scripts/latest-nightly-version.sh nuget Selenium.WebDriver) + pip install -r ./scripts/requirements.txt + latest_nightly=$(python ./scripts/latest-nightly-version.py nuget Selenium.WebDriver) + echo $latest_nightly dotnet add examples/dotnet/SeleniumDocs/SeleniumDocs.csproj package Selenium.WebDriver --version $latest_nightly dotnet add examples/dotnet/SeleniumDocs/SeleniumDocs.csproj package Selenium.Support --version $latest_nightly env: @@ -71,7 +73,8 @@ jobs: shell: pwsh run: | - $latest_nightly = ./scripts/latest-nightly-version.ps1 nuget Selenium.WebDriver + pip install -r ./scripts/requirements.txt + $latest_nightly = python ./scripts/latest-nightly-version.py nuget Selenium.WebDriver dotnet add examples/dotnet/SeleniumDocs/SeleniumDocs.csproj package Selenium.WebDriver --version $latest_nightly dotnet add examples/dotnet/SeleniumDocs/SeleniumDocs.csproj package Selenium.Support --version $latest_nightly env: diff --git a/.github/workflows/java-examples.yml b/.github/workflows/java-examples.yml index d30322714972..a13dee1e3510 100644 --- a/.github/workflows/java-examples.yml +++ b/.github/workflows/java-examples.yml @@ -48,7 +48,7 @@ jobs: uses: actions/setup-java@v4 with: distribution: 'temurin' - java-version: 11 + java-version: 17 - name: Run Tests Stable if: matrix.release == 'stable' uses: nick-invision/retry@v3.0.0 diff --git a/.github/workflows/js-examples.yml b/.github/workflows/js-examples.yml index b2cfd6964dd1..4c5e51c831b4 100644 --- a/.github/workflows/js-examples.yml +++ b/.github/workflows/js-examples.yml @@ -93,7 +93,9 @@ jobs: if: matrix.release == 'nightly' && matrix.os != 'windows' run: | - latest_nightly=$(./scripts/latest-nightly-version.sh npm selenium-webdriver) + pip install -r ./scripts/requirements.txt + latest_nightly=$(python ./scripts/latest-nightly-version.py npm selenium-webdriver) + echo $latest_nightly npm install --prefix ./examples/javascript --save selenium-webdriver@npm:@seleniumhq/selenium-webdriver@$latest_nightly env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -102,7 +104,8 @@ jobs: if: matrix.release == 'nightly' && matrix.os == 'windows' run: | - $latest_nightly = ./scripts/latest-nightly-version.ps1 npm selenium-webdriver + pip install -r ./scripts/requirements.txt + $latest_nightly = python ./scripts/latest-nightly-version.py npm selenium-webdriver npm install --prefix ./examples/javascript --save selenium-webdriver@npm:@seleniumhq/selenium-webdriver@$latest_nightly env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/python-examples.yml b/.github/workflows/python-examples.yml index 91e00fa1d8d0..5e175840e41e 100644 --- a/.github/workflows/python-examples.yml +++ b/.github/workflows/python-examples.yml @@ -48,13 +48,24 @@ jobs: uses: actions/setup-python@v5 with: python-version: 3.8 - - name: Install dependencies nightly - if: matrix.release == 'nightly' - working-directory: ./examples/python + - name: Install dependencies nightly non-Windows + if: matrix.release == 'nightly' && matrix.os != 'windows' + run: | + pip install -r ./scripts/requirements.txt + latest_nightly_python=$(python ./scripts/latest-python-nightly-version.py) + cd examples/python + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install --index-url https://test.pypi.org/simple/ selenium==$latest_nightly_python --extra-index-url https://pypi.org/simple/ --upgrade --force-reinstall --break-system-packages + - name: Install dependencies nightly Windows + if: matrix.release == 'nightly' && matrix.os == 'windows' run: | + pip install -r ./scripts/requirements.txt + $latest_nightly_python = python ./scripts/latest-python-nightly-version.py + cd examples/python python -m pip install --upgrade pip pip install -r requirements.txt - pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple --force-reinstall -v selenium + pip install --index-url https://test.pypi.org/simple/ selenium==$latest_nightly_python --extra-index-url https://pypi.org/simple/ --upgrade --force-reinstall --break-system-packages - name: Install dependencies stable if: matrix.release == 'stable' working-directory: ./examples/python diff --git a/.github/workflows/ruby-examples.yml b/.github/workflows/ruby-examples.yml index 447351266060..5a5c21aa6340 100644 --- a/.github/workflows/ruby-examples.yml +++ b/.github/workflows/ruby-examples.yml @@ -53,7 +53,9 @@ jobs: if: matrix.release == 'nightly' && matrix.os != 'windows' run: | - latest_nightly_webdriver=$(./scripts/latest-nightly-version.sh rubygems selenium-webdriver) + pip install -r ./scripts/requirements.txt + latest_nightly_webdriver=$(python ./scripts/latest-nightly-version.py rubygems selenium-webdriver) + echo $latest_nightly_webdriver cd examples/ruby bundle install bundle remove selenium-webdriver @@ -64,7 +66,8 @@ jobs: if: matrix.release == 'nightly' && matrix.os == 'windows' run: | - $latest_nightly_webdriver = ./scripts/latest-nightly-version.ps1 rubygems selenium-webdriver + pip install -r ./scripts/requirements.txt + $latest_nightly_webdriver = python ./scripts/latest-nightly-version.py rubygems selenium-webdriver cd examples/ruby bundle install bundle remove selenium-webdriver diff --git a/scripts/latest-nightly-version.ps1 b/scripts/latest-nightly-version.ps1 deleted file mode 100644 index 4db90efa291e..000000000000 --- a/scripts/latest-nightly-version.ps1 +++ /dev/null @@ -1,9 +0,0 @@ -$PACKAGE_TYPE = $args[0] -$PACKAGE_NAME = $args[1] - -$PATH_PACKAGES_API = "orgs/seleniumhq/packages/$PACKAGE_TYPE/$PACKAGE_NAME/versions" -$ACCEPT_HEADER = "Accept: application/vnd.github+json" -$VERSION_HEADER = "X-GitHub-Api-Version: 2022-11-28" - -$ghApiCommand = "gh api -H `"$ACCEPT_HEADER`" -H `"$VERSION_HEADER`" $PATH_PACKAGES_API | jq -r '.[0].name'" -Invoke-Expression -Command $ghApiCommand diff --git a/scripts/latest-nightly-version.py b/scripts/latest-nightly-version.py new file mode 100755 index 000000000000..cd51ba10cebf --- /dev/null +++ b/scripts/latest-nightly-version.py @@ -0,0 +1,31 @@ +import subprocess +import json +import argparse + +def get_latest_nightly_version(package_type, package_name): + path_packages_api = f"orgs/seleniumhq/packages/{package_type}/{package_name}/versions" + accept_header = "Accept: application/vnd.github+json" + version_header = "X-GitHub-Api-Version: 2022-11-28" + + gh_api_command = [ + "gh", "api", "-H", accept_header, "-H", version_header, path_packages_api + ] + + result = subprocess.run(gh_api_command, capture_output=True, text=True) + if result.returncode != 0: + raise Exception(f"Error executing gh api command: {result.stderr}") + + versions = json.loads(result.stdout) + latest_version = versions[0]['name'] + return latest_version + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Get the latest nightly version of a package.') + parser.add_argument('package_type', type=str, help='The type of the package') + parser.add_argument('package_name', type=str, help='The name of the package') + + args = parser.parse_args() + package_type = args.package_type + package_name = args.package_name + + print(get_latest_nightly_version(package_type, package_name)) \ No newline at end of file diff --git a/scripts/latest-nightly-version.sh b/scripts/latest-nightly-version.sh deleted file mode 100755 index fb538f594ecc..000000000000 --- a/scripts/latest-nightly-version.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -set -e - -PACKAGE_TYPE="$1" -PACKAGE_NAME="$2" - -PATH_PACKAGES_API="orgs/seleniumhq/packages/$PACKAGE_TYPE/$PACKAGE_NAME/versions" -ACCEPT_HEADER="Accept: application/vnd.github+json" -VERSION_HEADER="X-GitHub-Api-Version: 2022-11-28" - -gh api -H "$ACCEPT_HEADER" -H "$VERSION_HEADER" $PATH_PACKAGES_API | jq -r '.[0].name' diff --git a/scripts/latest-python-nightly-version.py b/scripts/latest-python-nightly-version.py new file mode 100755 index 000000000000..4c232f63c74e --- /dev/null +++ b/scripts/latest-python-nightly-version.py @@ -0,0 +1,12 @@ +import requests +import json +import re + +response = requests.get("https://test.pypi.org/pypi/selenium/json") +data = response.json() + +versions = data['releases'].keys() +sorted_versions = sorted(versions, key=lambda s: [int(part) if part.isdigit() else part for part in re.split(r'(\d+)', s)]) +latest_version = sorted_versions[-1] + +print(latest_version) \ No newline at end of file diff --git a/scripts/requirements.txt b/scripts/requirements.txt new file mode 100644 index 000000000000..663bd1f6a2ae --- /dev/null +++ b/scripts/requirements.txt @@ -0,0 +1 @@ +requests \ No newline at end of file