diff --git a/.github/workflows/dotnet-examples.yml b/.github/workflows/dotnet-examples.yml index c257d954ea81..7959146d6a01 100644 --- a/.github/workflows/dotnet-examples.yml +++ b/.github/workflows/dotnet-examples.yml @@ -56,7 +56,26 @@ jobs: dotnet-version: 6.x source-url: https://nuget.pkg.github.com/seleniumhq/index.json env: - NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} + NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} + - name: Update Nightly version non-Windows + if: matrix.release == 'nightly' && matrix.os != 'windows-latest' + run: + | + latest_nightly=$(./scripts/latest-nightly-version.sh 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: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Update Nightly version Windows + if: matrix.release == 'nightly' && matrix.os == 'windows-latest' + shell: pwsh + run: + | + $latest_nightly = ./scripts/latest-nightly-version.ps1 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: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Set up Java uses: actions/setup-java@v4 with: @@ -70,5 +89,3 @@ jobs: command: | cd examples/dotnet/SeleniumDocs dotnet test - env: - SE_RELEASE: ${{ matrix.release }} diff --git a/.github/workflows/java-examples.yml b/.github/workflows/java-examples.yml index e05dd43dfd64..e591bd244e24 100644 --- a/.github/workflows/java-examples.yml +++ b/.github/workflows/java-examples.yml @@ -26,6 +26,7 @@ jobs: fail-fast: false matrix: os: [ ubuntu-latest, windows-latest, macos-latest ] + release: [ stable, nightly ] runs-on: ${{ matrix.os }} steps: - name: Checkout GitHub repo @@ -48,7 +49,8 @@ jobs: with: distribution: 'temurin' java-version: 11 - - name: Run Tests + - name: Run Tests Stable + if: matrix.release == 'stable' uses: nick-invision/retry@v3.0.0 with: timeout_minutes: 20 @@ -56,3 +58,12 @@ jobs: command: | cd examples/java mvn -B test + - name: Run Tests Nightly + if: matrix.release == 'nightly' + uses: nick-invision/retry@v3.0.0 + with: + timeout_minutes: 20 + max_attempts: 3 + command: | + cd examples/java + mvn -B -U test -Dselenium.version=4.20.0-SNAPSHOT diff --git a/.github/workflows/js-examples.yml b/.github/workflows/js-examples.yml index d72bc473d7c3..7efd4f7bf201 100644 --- a/.github/workflows/js-examples.yml +++ b/.github/workflows/js-examples.yml @@ -91,12 +91,22 @@ jobs: registry-url: 'https://npm.pkg.github.com' - name: Use Nightly package.json in Ubuntu/macOS if: matrix.release == 'nightly' && matrix.os != 'windows-latest' - working-directory: ./examples/javascript - run: mv package.nightly.json package.json + run: + | + latest_nightly=$(./scripts/latest-nightly-version.sh npm selenium-webdriver) + npm install --prefix ./examples/javascript --save selenium-webdriver@npm:@seleniumhq/selenium-webdriver@$latest_nightly + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Use Nightly package.json in Windows if: matrix.release == 'nightly' && matrix.os == 'windows-latest' - working-directory: ./examples/javascript - run: Move-Item -Path package.nightly.json -Destination package.json -Force + run: + | + $latest_nightly = ./scripts/latest-nightly-version.ps1 npm selenium-webdriver + npm install --prefix ./examples/javascript --save selenium-webdriver@npm:@seleniumhq/selenium-webdriver@$latest_nightly + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Install Requirements working-directory: ./examples/javascript run: npm install diff --git a/.github/workflows/python-examples.yml b/.github/workflows/python-examples.yml index 3a046317f920..644c0c88dfcf 100644 --- a/.github/workflows/python-examples.yml +++ b/.github/workflows/python-examples.yml @@ -26,6 +26,7 @@ jobs: fail-fast: false matrix: os: [ ubuntu-latest, windows-latest, macos-latest ] + release: [ stable, nightly ] runs-on: ${{ matrix.os }} steps: - name: Checkout GitHub repo @@ -47,7 +48,15 @@ jobs: uses: actions/setup-python@v5 with: python-version: 3.8 - - name: Install dependencies + - name: Install dependencies nightly + if: matrix.release == 'nightly' + working-directory: ./examples/python + run: | + 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 + - name: Install dependencies stable + if: matrix.release == 'stable' working-directory: ./examples/python run: | python -m pip install --upgrade pip diff --git a/.github/workflows/ruby-examples.yml b/.github/workflows/ruby-examples.yml index 42f46b657724..7c94710fb9bd 100644 --- a/.github/workflows/ruby-examples.yml +++ b/.github/workflows/ruby-examples.yml @@ -26,6 +26,7 @@ jobs: fail-fast: false matrix: os: [ ubuntu-latest, windows-latest, macos-latest ] + release: [ stable, nightly ] runs-on: ${{ matrix.os }} steps: - name: Checkout GitHub repo @@ -48,7 +49,30 @@ jobs: with: ruby-version: 3.0 bundler-cache: true - - name: Install Gems + - name: Install Gems Nightly non-Windows + if: matrix.release == 'nightly' && matrix.os != 'windows-latest' + run: + | + latest_nightly_webdriver=$(./scripts/latest-nightly-version.sh rubygems selenium-webdriver) + cd examples/ruby + bundle install + bundle remove selenium-webdriver + bundle add selenium-webdriver --version $latest_nightly_webdriver --source "https://token:${{secrets.GITHUB_TOKEN}}@rubygems.pkg.github.com/seleniumhq" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Install Gems Nightly Windows + if: matrix.release == 'nightly' && matrix.os == 'windows-latest' + run: + | + $latest_nightly_webdriver = ./scripts/latest-nightly-version.ps1 rubygems selenium-webdriver + cd examples/ruby + bundle install + bundle remove selenium-webdriver + bundle add selenium-webdriver --version $latest_nightly_webdriver --source "https://token:${{secrets.GITHUB_TOKEN}}@rubygems.pkg.github.com/seleniumhq" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Install Gems Stable + if: matrix.release == 'stable' working-directory: ./examples/ruby run: bundle install - name: Set up Java diff --git a/examples/dotnet/SeleniumDocs/SeleniumDocs.csproj b/examples/dotnet/SeleniumDocs/SeleniumDocs.csproj index 39d4594238fb..e84da03854bb 100644 --- a/examples/dotnet/SeleniumDocs/SeleniumDocs.csproj +++ b/examples/dotnet/SeleniumDocs/SeleniumDocs.csproj @@ -10,14 +10,6 @@ - - - - - - - - diff --git a/examples/java/pom.xml b/examples/java/pom.xml index 3b98ecd71872..f3a54bcb20e0 100644 --- a/examples/java/pom.xml +++ b/examples/java/pom.xml @@ -13,6 +13,7 @@ 11 11 UTF-8 + 4.19.1 @@ -29,12 +30,12 @@ org.seleniumhq.selenium selenium-java - 4.19.1 + ${selenium.version} org.seleniumhq.selenium selenium-grid - 4.19.1 + ${selenium.version} org.junit.jupiter diff --git a/examples/javascript/package.nightly.json b/examples/javascript/package.nightly.json deleted file mode 100644 index 6759827525c0..000000000000 --- a/examples/javascript/package.nightly.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "javascript-examples", - "version": "1.0.0", - "scripts": { - "test": "npx mocha test/**/*.spec.js --timeout 60000" - }, - "author": "The Selenium project", - "license": "Apache-2.0", - "dependencies": { - "assert": "2.1.0", - "selenium-webdriver": "npm:@seleniumhq/selenium-webdriver@4.20.0-nightly202404221125" - }, - "devDependencies": { - "mocha": "10.4.0" - } -} diff --git a/examples/ruby/Gemfile b/examples/ruby/Gemfile index f550ccafce6a..c5560378155d 100644 --- a/examples/ruby/Gemfile +++ b/examples/ruby/Gemfile @@ -7,13 +7,5 @@ gem 'rake', '~> 13.0' gem 'rspec', '~> 3.0' gem 'rubocop', '~> 1.35' gem 'rubocop-rspec', '~> 2.12' -gem 'selenium-devtools', '~> 0.122' - -if ENV['SE_NIGHTLY'] - source 'https://rubygems.pkg.github.com/seleniumhq' do - selenium = 'selenium-webdriver' - gem selenium, '~> 4.19.0.nightly' - end -else - gem 'selenium-webdriver', '= 4.19.0' -end +gem 'selenium-devtools', '= 0.123' +gem 'selenium-webdriver', '= 4.19.0' \ No newline at end of file diff --git a/examples/ruby/Gemfile.lock b/examples/ruby/Gemfile.lock index 9208b5c29cd8..fb9897e2f437 100644 --- a/examples/ruby/Gemfile.lock +++ b/examples/ruby/Gemfile.lock @@ -77,7 +77,7 @@ DEPENDENCIES rspec (~> 3.0) rubocop (~> 1.35) rubocop-rspec (~> 2.12) - selenium-devtools (~> 0.122) + selenium-devtools (= 0.123) selenium-webdriver (= 4.19.0) BUNDLED WITH diff --git a/scripts/latest-nightly-version.ps1 b/scripts/latest-nightly-version.ps1 new file mode 100644 index 000000000000..4db90efa291e --- /dev/null +++ b/scripts/latest-nightly-version.ps1 @@ -0,0 +1,9 @@ +$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.sh b/scripts/latest-nightly-version.sh new file mode 100755 index 000000000000..fb538f594ecc --- /dev/null +++ b/scripts/latest-nightly-version.sh @@ -0,0 +1,12 @@ +#!/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'