diff --git a/.github/workflows/js-examples.yml b/.github/workflows/js-examples.yml index 2003ee2a4ab6..cc8109316edf 100644 --- a/.github/workflows/js-examples.yml +++ b/.github/workflows/js-examples.yml @@ -119,7 +119,7 @@ jobs: uses: nick-invision/retry@v3.0.2 with: timeout_minutes: 20 - max_attempts: 3 + max_attempts: 2 command: | cd examples/javascript npm test diff --git a/.github/workflows/ruby-examples.yml b/.github/workflows/ruby-examples.yml index b0717816e088..71857ffa68c6 100644 --- a/.github/workflows/ruby-examples.yml +++ b/.github/workflows/ruby-examples.yml @@ -51,7 +51,7 @@ jobs: - name: Set up Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: 3.1 + ruby-version: 3.2 bundler-cache: true - name: Install Gems Nightly non-Windows if: matrix.release == 'nightly' && matrix.os != 'windows' @@ -119,7 +119,7 @@ jobs: - name: Set up Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: 3.1 + ruby-version: 3.2 bundler-cache: true - name: Install dependencies working-directory: ./examples/ruby diff --git a/examples/javascript/package-lock.json b/examples/javascript/package-lock.json index b068602c0bfd..d587a1a90691 100644 --- a/examples/javascript/package-lock.json +++ b/examples/javascript/package-lock.json @@ -10,7 +10,7 @@ "license": "Apache-2.0", "dependencies": { "assert": "2.1.0", - "selenium-webdriver": "4.32.0" + "selenium-webdriver": "4.33.0" }, "devDependencies": { "mocha": "11.2.2" @@ -1083,9 +1083,9 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/selenium-webdriver": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.32.0.tgz", - "integrity": "sha512-dG48JJnB96Aea1iVaZOKGmd6yT6aemeI1heWI/i8DtfD3pDX7uIlwpDBoGauNhtXAaFaamP+U4hIab8zZkg3Ag==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.33.0.tgz", + "integrity": "sha512-5vRhk4iI0B9nYbEitfnCjPDXBfG6o9DNhj5DG2355eQo8idETknhj1tigqqlkHsGephSZwLZqEm/d+3e1stGUA==", "funding": [ { "type": "github", @@ -1096,7 +1096,6 @@ "url": "https://opencollective.com/selenium" } ], - "license": "Apache-2.0", "dependencies": { "@bazel/runfiles": "^6.3.1", "jszip": "^3.10.1", @@ -2200,9 +2199,9 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "selenium-webdriver": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.32.0.tgz", - "integrity": "sha512-dG48JJnB96Aea1iVaZOKGmd6yT6aemeI1heWI/i8DtfD3pDX7uIlwpDBoGauNhtXAaFaamP+U4hIab8zZkg3Ag==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.33.0.tgz", + "integrity": "sha512-5vRhk4iI0B9nYbEitfnCjPDXBfG6o9DNhj5DG2355eQo8idETknhj1tigqqlkHsGephSZwLZqEm/d+3e1stGUA==", "requires": { "@bazel/runfiles": "^6.3.1", "jszip": "^3.10.1", diff --git a/examples/javascript/package.json b/examples/javascript/package.json index dc76bb8d3cd5..ab0c20dce7d3 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.32.0" + "selenium-webdriver": "4.33.0" }, "devDependencies": { "mocha": "11.2.2" diff --git a/examples/javascript/test/actionsApi/mouse/moveByOffset.spec.js b/examples/javascript/test/actionsApi/mouse/moveByOffset.spec.js index f73986e81ec2..949fef61bc99 100644 --- a/examples/javascript/test/actionsApi/mouse/moveByOffset.spec.js +++ b/examples/javascript/test/actionsApi/mouse/moveByOffset.spec.js @@ -1,4 +1,4 @@ -const {By, Origin, Builder} = require('selenium-webdriver'); +const {By, Origin, Builder, until } = require('selenium-webdriver'); const assert = require('assert'); describe('Mouse move by offset', function () { @@ -16,7 +16,7 @@ describe('Mouse move by offset', function () { const actions = driver.actions({async: true}); await actions.move({x: 8, y: 0, origin: mouseTracker}).perform(); - await driver.sleep(500); + await driver.wait(until.elementTextContains(await driver.findElement(By.id('relative-location')), ","), 2000); let result = await driver.findElement(By.id('relative-location')).getText(); result = result.split(', '); assert.deepStrictEqual((Math.abs(parseInt(result[0]) - 100 - 8) < 2), true) diff --git a/examples/javascript/test/bidirectional/browsingContextInspector.spec.js b/examples/javascript/test/bidirectional/browsingContextInspector.spec.js index 045b464eb054..e7f7e9f4cab8 100644 --- a/examples/javascript/test/bidirectional/browsingContextInspector.spec.js +++ b/examples/javascript/test/bidirectional/browsingContextInspector.spec.js @@ -114,7 +114,7 @@ describe('Browsing Context Inspector', function () { assert.equal(contextInfo.id, windowHandle) assert.equal(contextInfo.url, 'about:blank') - assert.equal(contextInfo.children, null) + assert.equal(contextInfo.children.length, 0) assert.equal(contextInfo.parentBrowsingContext, null) }) }) diff --git a/examples/javascript/test/bidirectional/input.spec.js b/examples/javascript/test/bidirectional/input.spec.js index 40573bd15648..9dd2ca5a45f7 100644 --- a/examples/javascript/test/bidirectional/input.spec.js +++ b/examples/javascript/test/bidirectional/input.spec.js @@ -33,7 +33,7 @@ describe('Input module', function () { let resultElement = await driver.findElement(By.id('result')) await resultElement.getText().then(function (text) { - assert(text.includes('oquefort parmigiano cheddar')) + assert(text.includes('oquefort parmigiano cheddar'), `text is: ${text}`) }) }) diff --git a/examples/javascript/test/bidirectional/network_events.spec.js b/examples/javascript/test/bidirectional/network_events.spec.js index 931a5f2e7087..f6141bfbaf23 100644 --- a/examples/javascript/test/bidirectional/network_events.spec.js +++ b/examples/javascript/test/bidirectional/network_events.spec.js @@ -20,17 +20,17 @@ describe('Network events', function () { }) it('can listen to event before request is sent', async function () { - let beforeRequestEvent = null + let beforeRequestEvent = [] const network = await Network(driver) await network.beforeRequestSent(function (event) { - beforeRequestEvent = event + beforeRequestEvent.push(event) }) await driver.get('https://www.selenium.dev/selenium/web/blank.html') - assert.equal(beforeRequestEvent.request.method, 'GET') - const url = beforeRequestEvent.request.url - assert.equal(url, await driver.getCurrentUrl()) + const currentUrl = await driver.getCurrentUrl() + const currentUrlFound = beforeRequestEvent.some(event => event.request.url.includes(currentUrl)) + assert(currentUrlFound, `${currentUrl} was not requested`) }) it('can request cookies', async function () { @@ -50,8 +50,6 @@ describe('Network events', function () { assert.equal(beforeRequestEvent.request.method, 'GET') assert.equal(beforeRequestEvent.request.cookies[0].name, 'north') assert.equal(beforeRequestEvent.request.cookies[0].value.value, 'biryani') - const url = beforeRequestEvent.request.url - assert.equal(url, await driver.getCurrentUrl()) await driver.manage().addCookie({ name: 'south', @@ -70,13 +68,14 @@ describe('Network events', function () { beforeRequestEvent.push(event) }) - await driver.get('http://www.selenium.dev/selenium/web/bidi/redirected_http_equiv.html') + await driver.get('https://www.selenium.dev/selenium/web/bidi/redirected_http_equiv.html') await driver.wait(until.urlContains('redirected.html'), 1000) assert.equal(beforeRequestEvent[0].request.method, 'GET') - assert(beforeRequestEvent[0].request.url.includes('redirected_http_equiv.html')) - assert.equal(beforeRequestEvent[2].request.method, 'GET') - assert(beforeRequestEvent[3].request.url.includes('redirected.html')) + let redirectedFound = beforeRequestEvent.some(event => event.request.url.includes('redirected.html')) + assert(redirectedFound, 'redirected.html was not requested') + redirectedFound = beforeRequestEvent.some(event => event.request.url.includes('redirected_http_equiv.html')) + assert(redirectedFound, 'redirected_http_equiv.html was not requested') }) it('can subscribe to response started', async function () { diff --git a/examples/javascript/test/drivers/service.spec.js b/examples/javascript/test/drivers/service.spec.js index f0772239eb68..fdfdb127971e 100644 --- a/examples/javascript/test/drivers/service.spec.js +++ b/examples/javascript/test/drivers/service.spec.js @@ -27,7 +27,7 @@ describe('Service Test', function () { options.setChromeBinaryPath(browserPath) - let service = new Chrome.ServiceBuilder().setPath(driverPath) + let service = new Chrome.ServiceBuilder(driverPath) let driver = new Builder() .forBrowser(Browser.CHROME) @@ -50,4 +50,4 @@ describe('Service Test', function () { await driver.get('https://www.selenium.dev/selenium/web/blank.html'); await driver.quit(); }); -}); \ No newline at end of file +}); diff --git a/examples/javascript/test/interactions/cookies.spec.js b/examples/javascript/test/interactions/cookies.spec.js index a954f39310c5..b16bb99ec756 100644 --- a/examples/javascript/test/interactions/cookies.spec.js +++ b/examples/javascript/test/interactions/cookies.spec.js @@ -1,5 +1,6 @@ const {Browser, Builder} = require("selenium-webdriver"); +const assert = require('assert') describe('Cookies', function() { @@ -36,7 +37,7 @@ describe('Cookies', function() { // Get cookie details with named cookie 'foo' await driver.manage().getCookie('foo').then(function(cookie) { - console.log('cookie details => ', cookie); + assert.equal(cookie.value, 'bar'); }); }); @@ -49,7 +50,7 @@ describe('Cookies', function() { // Get all Available cookies await driver.manage().getCookies().then(function(cookies) { - console.log('cookie details => ', cookies); + assert.equal(cookies.filter(cookie => cookie.name.startsWith('test')).length, 2); }); }); @@ -65,7 +66,7 @@ describe('Cookies', function() { // Get all Available cookies await driver.manage().getCookies().then(function(cookies) { - console.log('cookie details => ', cookies); + assert.equal(cookies.filter(cookie => cookie.name.startsWith('test')).length, 1); }); }); @@ -79,4 +80,4 @@ describe('Cookies', function() { // Delete all cookies await driver.manage().deleteAllCookies(); }); -}); \ No newline at end of file +}); diff --git a/examples/ruby/Gemfile b/examples/ruby/Gemfile index f4987c1f9889..71cc39396bce 100644 --- a/examples/ruby/Gemfile +++ b/examples/ruby/Gemfile @@ -8,4 +8,4 @@ gem 'rspec', '~> 3.0' gem 'rubocop', '~> 1.35' gem 'rubocop-rspec', '~> 3.0' gem 'selenium-devtools', '= 0.136.0' -gem 'selenium-webdriver', '= 4.32.0' +gem 'selenium-webdriver', '= 4.33.0' diff --git a/examples/ruby/Gemfile.lock b/examples/ruby/Gemfile.lock index b1fb4f3da842..794508911dd4 100644 --- a/examples/ruby/Gemfile.lock +++ b/examples/ruby/Gemfile.lock @@ -50,7 +50,7 @@ GEM rubyzip (2.4.1) selenium-devtools (0.136.0) selenium-webdriver (~> 4.2) - selenium-webdriver (4.32.0) + selenium-webdriver (4.33.0) base64 (~> 0.2) logger (~> 1.4) rexml (~> 3.2, >= 3.2.5) @@ -76,7 +76,7 @@ DEPENDENCIES rubocop (~> 1.35) rubocop-rspec (~> 3.0) selenium-devtools (= 0.136.0) - selenium-webdriver (= 4.32.0) + selenium-webdriver (= 4.33.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 cc517c421330..f603ec77d0fb 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.get(:latest, + Selenium::Server.new(File.expand_path(File.join('..', '..', '..', 'selenium-server-4.33.0.jar'), __dir__), background: true, args: %w[--selenium-manager true --enable-managed-downloads true]) end @@ -35,8 +35,8 @@ file_input.send_keys(upload_file) driver.find_element(id: 'file-submit').click - file_name = driver.find_element(id: 'uploaded-files') - expect(file_name.text).to eq 'selenium-snapshot.png' + wait.until { driver.find_element(id: 'uploaded-files') } + expect(driver.find_element(id: 'uploaded-files').text).to eq 'selenium-snapshot.png' end it 'downloads' do diff --git a/examples/selenium-server-4.32.0.jar b/examples/selenium-server-4.33.0.jar similarity index 89% rename from examples/selenium-server-4.32.0.jar rename to examples/selenium-server-4.33.0.jar index 1faf9005d530..24fd30a3f4a4 100644 Binary files a/examples/selenium-server-4.32.0.jar and b/examples/selenium-server-4.33.0.jar differ diff --git a/website_and_docs/content/documentation/webdriver/bidi/w3c/network.en.md b/website_and_docs/content/documentation/webdriver/bidi/w3c/network.en.md index 9436128ed9d5..b4310a46c3d1 100644 --- a/website_and_docs/content/documentation/webdriver/bidi/w3c/network.en.md +++ b/website_and_docs/content/documentation/webdriver/bidi/w3c/network.en.md @@ -158,7 +158,7 @@ This section contains the APIs related to network events. {{< /tab >}} {{< tab header="JavaScript" >}} {{< badge-version version="4.18" >}} -{{< gh-codeblock path="/examples/javascript/test/bidirectional/network_events.spec.js#L83-L89" >}} +{{< gh-codeblock path="/examples/javascript/test/bidirectional/network_events.spec.js#L82-L88" >}} {{< /tab >}} {{< tab header="Kotlin" >}} {{< badge-code >}} @@ -177,7 +177,7 @@ This section contains the APIs related to network events. {{< /tab >}} {{< tab header="JavaScript" >}} {{< badge-version version="4.18" >}} -{{< gh-codeblock path="/examples/javascript/test/bidirectional/network_events.spec.js#L97-L103" >}} +{{< gh-codeblock path="/examples/javascript/test/bidirectional/network_events.spec.js#L96-L102" >}} {{< /tab >}} {{< tab header="Kotlin" >}} {{< badge-code >}} diff --git a/website_and_docs/content/documentation/webdriver/bidi/w3c/network.ja.md b/website_and_docs/content/documentation/webdriver/bidi/w3c/network.ja.md index da763f879083..b8b76a827b99 100644 --- a/website_and_docs/content/documentation/webdriver/bidi/w3c/network.ja.md +++ b/website_and_docs/content/documentation/webdriver/bidi/w3c/network.ja.md @@ -168,7 +168,7 @@ This section contains the APIs related to network events. {{< /tab >}} {{< tab header="JavaScript" >}} {{< badge-version version="4.18" >}} -{{< gh-codeblock path="/examples/javascript/test/bidirectional/network_events.spec.js#L83-L89" >}} +{{< gh-codeblock path="/examples/javascript/test/bidirectional/network_events.spec.js#L82-L88" >}} {{< /tab >}} {{< tab header="Kotlin" >}} {{< badge-code >}} @@ -187,7 +187,7 @@ This section contains the APIs related to network events. {{< /tab >}} {{< tab header="JavaScript" >}} {{< badge-version version="4.18" >}} -{{< gh-codeblock path="/examples/javascript/test/bidirectional/network_events.spec.js#L97-L103" >}} +{{< gh-codeblock path="/examples/javascript/test/bidirectional/network_events.spec.js#L96-L102" >}} {{< /tab >}} {{< tab header="Kotlin" >}} {{< badge-code >}} diff --git a/website_and_docs/content/documentation/webdriver/bidi/w3c/network.pt-br.md b/website_and_docs/content/documentation/webdriver/bidi/w3c/network.pt-br.md index 87dfd0a4c669..ce3f5d5508e5 100644 --- a/website_and_docs/content/documentation/webdriver/bidi/w3c/network.pt-br.md +++ b/website_and_docs/content/documentation/webdriver/bidi/w3c/network.pt-br.md @@ -168,7 +168,7 @@ This section contains the APIs related to network events. {{< /tab >}} {{< tab header="JavaScript" >}} {{< badge-version version="4.18" >}} -{{< gh-codeblock path="/examples/javascript/test/bidirectional/network_events.spec.js#L83-L89" >}} +{{< gh-codeblock path="/examples/javascript/test/bidirectional/network_events.spec.js#L82-L88" >}} {{< /tab >}} {{< tab header="Kotlin" >}} {{< badge-code >}} @@ -187,7 +187,7 @@ This section contains the APIs related to network events. {{< /tab >}} {{< tab header="JavaScript" >}} {{< badge-version version="4.18" >}} -{{< gh-codeblock path="/examples/javascript/test/bidirectional/network_events.spec.js#L97-L103" >}} +{{< gh-codeblock path="/examples/javascript/test/bidirectional/network_events.spec.js#L96-L102" >}} {{< /tab >}} {{< tab header="Kotlin" >}} {{< badge-code >}} diff --git a/website_and_docs/content/documentation/webdriver/bidi/w3c/network.zh-cn.md b/website_and_docs/content/documentation/webdriver/bidi/w3c/network.zh-cn.md index 5c8e6c670e6d..7788c2d76396 100644 --- a/website_and_docs/content/documentation/webdriver/bidi/w3c/network.zh-cn.md +++ b/website_and_docs/content/documentation/webdriver/bidi/w3c/network.zh-cn.md @@ -168,7 +168,7 @@ This section contains the APIs related to network events. {{< /tab >}} {{< tab header="JavaScript" >}} {{< badge-version version="4.18" >}} -{{< gh-codeblock path="/examples/javascript/test/bidirectional/network_events.spec.js#L83-L89" >}} +{{< gh-codeblock path="/examples/javascript/test/bidirectional/network_events.spec.js#L82-L88" >}} {{< /tab >}} {{< tab header="Kotlin" >}} {{< badge-code >}} @@ -187,7 +187,7 @@ This section contains the APIs related to network events. {{< /tab >}} {{< tab header="JavaScript" >}} {{< badge-version version="4.18" >}} -{{< gh-codeblock path="/examples/javascript/test/bidirectional/network_events.spec.js#L97-L103" >}} +{{< gh-codeblock path="/examples/javascript/test/bidirectional/network_events.spec.js#L96-L102" >}} {{< /tab >}} {{< tab header="Kotlin" >}} {{< badge-code >}} @@ -210,4 +210,4 @@ This section contains the APIs related to network events. {{< tab header="Kotlin" >}} {{< badge-code >}} {{< /tab >}} -{{< /tabpane >}} \ No newline at end of file +{{< /tabpane >}}