Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[js] Making SeleniumManager a thin wrapper #13853

Merged
merged 3 commits into from
Apr 22, 2024

Conversation

diemol
Copy link
Member

@diemol diemol commented Apr 22, 2024

User description

Thanks for contributing to Selenium!
A PR well described will help maintainers to quickly review and merge it

Before submitting your PR, please check our contributing guidelines.
Avoid large PRs, help reviewers by making them as simple and short as possible.

Description

Motivation and Context

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist

  • I have read the contributing document.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have added tests to cover my changes.
  • All new and existing tests passed.

Type

enhancement


Description

  • Refactored driver and browser path resolution across multiple browser drivers (Chromium, Firefox, IE, Safari) to use a new method getBinaryPaths.
  • Introduced a new helper function getArgs in driverFinder.js to consolidate argument preparation for binary path retrieval.
  • Enhanced error handling and messaging in driverFinder.js for better clarity when driver paths cannot be resolved.
  • Removed redundant code related to capability handling and improved the setting of browser paths and capabilities.
  • Updated all related tests to utilize the new path resolution method, ensuring consistency across the codebase.

Changes walkthrough

Relevant files
Enhancement
7 files
chromium.js
Refactor and Enhance Driver Initialization in Chromium Driver

javascript/node/selenium-webdriver/chromium.js

  • Refactored to use getBinaryPaths instead of getPath for driver and
    browser path resolution.
  • Improved handling of browser path settings and capabilities.
  • Removed deletion of BROWSER_VERSION from capabilities in multiple
    places.
  • +12/-9   
    driverFinder.js
    Refactor Driver Path Resolution and Argument Handling       

    javascript/node/selenium-webdriver/common/driverFinder.js

  • Renamed getPath to getBinaryPaths to better reflect its functionality.
  • Added getArgs function to consolidate argument preparation for binary
    path retrieval.
  • Enhanced error handling and messaging for driver path resolution.
  • +34/-4   
    seleniumManager.js
    Streamline Binary Path Resolution in Selenium Manager       

    javascript/node/selenium-webdriver/common/seleniumManager.js

  • Changed function name from driverLocation to binaryPaths.
  • Simplified argument preparation by moving it to driverFinder.js.
  • Removed unnecessary deletion of BROWSER_VERSION after path resolution.

  • +3/-34   
    firefox.js
    Update Firefox Driver Initialization with Enhanced Path Resolution

    javascript/node/selenium-webdriver/firefox.js

  • Updated to use getBinaryPaths for resolving driver and browser paths.
  • Removed redundant code and improved capability handling.
  • +5/-4     
    ie.js
    Update IE Driver Initialization and Command Line Handling

    javascript/node/selenium-webdriver/ie.js

  • Updated driver path resolution to use getBinaryPaths.
  • Improved handling of browser command line switches.
  • +8/-4     
    safari.js
    Update Safari Driver Initialization with New Path Resolution Method

    javascript/node/selenium-webdriver/safari.js

    • Updated to use getBinaryPaths for driver path resolution.
    +3/-3     
    index.js
    Enhance Browser Detection in Testing Utilities                     

    javascript/node/selenium-webdriver/testing/index.js

  • Updated browser detection to use getBinaryPaths for determining
    available browsers.
  • +6/-6     
    Tests
    2 files
    service_test.js
    Update Chrome Driver Service Tests with New Path Resolution

    javascript/node/selenium-webdriver/test/chrome/service_test.js

  • Updated test to use getBinaryPaths for setting executable paths in
    tests.
  • +2/-2     
    service_test.js
    Update Edge Driver Service Tests with Enhanced Path Resolution

    javascript/node/selenium-webdriver/test/edge/service_test.js

    • Updated Edge driver service tests to use getBinaryPaths.
    +2/-2     

    PR-Agent usage:
    Comment /help on the PR to get a list of all available PR-Agent tools and their descriptions

    Copy link
    Contributor

    PR Description updated to latest commit (477a95b)

    Copy link
    Contributor

    PR Review

    ⏱️ Estimated effort to review [1-5]

    3, because the PR involves multiple changes across various files with modifications in function names and logic. Understanding the context and ensuring compatibility requires a moderate level of effort.

    🧪 Relevant tests

    No

    🔍 Possible issues

    Possible Bug: The deletion of Capability.BROWSER_VERSION in multiple files could lead to unintended side effects if other parts of the system rely on this capability being set. This needs thorough testing to ensure it does not break existing functionality.

    Refactoring Risk: The renaming of functions and the changes in their implementations (e.g., getPath to getBinaryPaths and the restructuring of argument handling) could introduce bugs if not all references were correctly updated or if the new implementations have errors.

    🔒 Security concerns

    No


    ✨ Review tool usage guide:

    Overview:
    The review tool scans the PR code changes, and generates a PR review which includes several types of feedbacks, such as possible PR issues, security threats and relevant test in the PR. More feedbacks can be added by configuring the tool.

    The tool can be triggered automatically every time a new PR is opened, or can be invoked manually by commenting on any PR.

    • When commenting, to edit configurations related to the review tool (pr_reviewer section), use the following template:
    /review --pr_reviewer.some_config1=... --pr_reviewer.some_config2=...
    
    [pr_reviewer]
    some_config1=...
    some_config2=...
    

    See the review usage page for a comprehensive guide on using this tool.

    Copy link
    Contributor

    PR Code Suggestions

    CategorySuggestions                                                                                                                                                       
    Enhancement
    Add error handling for module imports to increase robustness.

    Consider adding error handling for the require statement to gracefully handle cases where
    the module might not be found or loaded correctly.

    javascript/node/selenium-webdriver/common/driverFinder.js [24]

    -const { binaryPaths } = require('./seleniumManager')
    +let binaryPaths;
    +try {
    +  binaryPaths = require('./seleniumManager').binaryPaths;
    +} catch (error) {
    +  console.error('Failed to load seleniumManager:', error);
    +  // Handle error appropriately
    +}
     
    Maintainability
    Refactor proxy configuration into a separate function to improve code organization.

    Refactor the function getArgs to separate concerns by moving the proxy configuration logic
    to a dedicated function. This improves readability and maintainability.

    javascript/node/selenium-webdriver/common/driverFinder.js [57-68]

     const proxyOptions = options.getProxy();
    -if (proxyOptions && Object.keys(proxyOptions).length > 0) {
    -  const httpProxy = proxyOptions['httpProxy'];
    -  const sslProxy = proxyOptions['sslProxy'];
    -  if (httpProxy !== undefined) {
    -    args.push('--proxy', httpProxy);
    -  } else if (sslProxy !== undefined) {
    -    args.push('--proxy', sslProxy);
    +addProxyArgs(args, proxyOptions);
    +
    +function addProxyArgs(args, proxyOptions) {
    +  if (proxyOptions && Object.keys(proxyOptions).length > 0) {
    +    const httpProxy = proxyOptions['httpProxy'];
    +    const sslProxy = proxyOptions['sslProxy'];
    +    if (httpProxy !== undefined) {
    +      args.push('--proxy', httpProxy);
    +    } else if (sslProxy !== undefined) {
    +      args.push('--proxy', sslProxy);
    +    }
       }
     }
     
    Refactor capability updates into a separate function for clarity and reuse.

    Use destructuring to simplify the handling of multiple return values from getBinaryPaths
    in the Driver class.

    javascript/node/selenium-webdriver/common/driverFinder.js [625-636]

     const { driverPath, browserPath } = getBinaryPaths(caps)
     service.setExecutable(driverPath)
     if (browserPath) {
    -  const vendorOptions = caps.get(vendorCapabilityKey)
    -  if (vendorOptions) {
    -    vendorOptions['binary'] = browserPath
    -    caps.set(vendorCapabilityKey, vendorOptions)
    -  } else {
    -    caps.set(vendorCapabilityKey, { binary: browserPath })
    -  }
    -  caps.delete(Capability.BROWSER_VERSION)
    +  updateCapabilities(caps, vendorCapabilityKey, browserPath);
     }
     
    +function updateCapabilities(caps, key, path) {
    +  const options = caps.get(key) || {};
    +  options['binary'] = path;
    +  caps.set(key, options);
    +  caps.delete(Capability.BROWSER_VERSION);
    +}
    +
    Best practice
    Use template literals for constructing array elements to enhance readability.

    Replace the manual string concatenation with template literals for better readability and
    maintainability in the getArgs function.

    javascript/node/selenium-webdriver/common/driverFinder.js [45]

    -let args = ['--browser', options.getBrowserName(), '--language-binding', 'javascript', '--output', 'json']
    +let args = [`--browser`, options.getBrowserName(), `--language-binding`, `javascript`, `--output`, `json`]
     
    Reliability
    Add error handling for system calls to improve reliability.

    Implement error handling for the spawnSync call within the binaryPaths function to manage
    potential execution failures or errors more gracefully.

    javascript/node/selenium-webdriver/common/driverFinder.js [73]

    -const spawnResult = spawnSync(smBinary, args)
    +const spawnResult = spawnSync(smBinary, args);
    +if (spawnResult.error) {
    +  throw new Error(`Failed to execute spawnSync: ${spawnResult.error}`);
    +}
     

    ✨ Improve tool usage guide:

    Overview:
    The improve tool scans the PR code changes, and automatically generates suggestions for improving the PR code. The tool can be triggered automatically every time a new PR is opened, or can be invoked manually by commenting on a PR.

    • When commenting, to edit configurations related to the improve tool (pr_code_suggestions section), use the following template:
    /improve --pr_code_suggestions.some_config1=... --pr_code_suggestions.some_config2=...
    
    [pr_code_suggestions]
    some_config1=...
    some_config2=...
    

    See the improve usage page for a comprehensive guide on using this tool.

    Copy link
    Contributor

    CI Failure Feedback

    Action: JavaScript / Browser Tests (firefox) / Browser Tests (firefox)

    Failed stage: Run Bazel [❌]

    Failed test name: //javascript/node/selenium-webdriver:firefox-browser-tests

    Failure summary:

    The action failed due to multiple issues:

  • A critical package aspnetcore-targeting-pack-6.0 could not be fetched as the server returned a 404
    Not Found error. This indicates that the package is either moved or deleted from the repository.
  • There were syntax errors in various menu configuration files, which could indicate corrupted files
    or misconfigurations.
  • The build process was aborted because a necessary toolchain
    aspect_bazel_lib~~toolchains~copy_directory_linux_amd64 could not be fetched due to a connection
    timeout. This prevented the successful download of a required component from GitHub.

  • Relevant error logs:
    1:  Job defined at: SeleniumHQ/selenium/.github/workflows/bazel.yml@refs/pull/13853/merge
    2:  Reusable workflow chain:
    ...
    
    311:  Need to get 3045 kB of archives.
    312:  After this operation, 1617 MB disk space will be freed.
    313:  Get:1 file:/etc/apt/apt-mirrors.txt Mirrorlist [142 B]
    314:  Ign:2 http://azure.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 aspnetcore-targeting-pack-6.0 amd64 6.0.128-0ubuntu1~22.04.2
    315:  Get:3 http://azure.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 aspnetcore-targeting-pack-7.0 amd64 7.0.117-0ubuntu1~22.04.2 [1588 kB]
    316:  Ign:2 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 aspnetcore-targeting-pack-6.0 amd64 6.0.128-0ubuntu1~22.04.2
    317:  Err:2 http://security.ubuntu.com/ubuntu jammy-updates/universe amd64 aspnetcore-targeting-pack-6.0 amd64 6.0.128-0ubuntu1~22.04.2
    318:  404  Not Found [IP: 52.147.219.192 80]
    319:  E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/universe/d/dotnet6/aspnetcore-targeting-pack-6.0_6.0.128-0ubuntu1%7e22.04.2_amd64.deb  404  Not Found [IP: 52.147.219.192 80]
    ...
    
    842:  Package 'php-symfony-debug-bundle' is not installed, so not removed
    843:  Package 'php-symfony-dependency-injection' is not installed, so not removed
    844:  Package 'php-symfony-deprecation-contracts' is not installed, so not removed
    845:  Package 'php-symfony-discord-notifier' is not installed, so not removed
    846:  Package 'php-symfony-doctrine-bridge' is not installed, so not removed
    847:  Package 'php-symfony-doctrine-messenger' is not installed, so not removed
    848:  Package 'php-symfony-dom-crawler' is not installed, so not removed
    849:  Package 'php-symfony-dotenv' is not installed, so not removed
    850:  Package 'php-symfony-error-handler' is not installed, so not removed
    ...
    
    1814:  Setting up fonts-terminus-otb (4.48-3.1) ...
    1815:  Processing triggers for install-info (6.8-4build1) ...
    1816:  Processing triggers for mailcap (3.70+nmu1ubuntu1) ...
    1817:  Processing triggers for fontconfig (2.13.1-4.2ubuntu5) ...
    1818:  Processing triggers for hicolor-icon-theme (0.17-2) ...
    1819:  Processing triggers for libc-bin (2.35-0ubuntu3.6) ...
    1820:  Processing triggers for man-db (2.10.2-1) ...
    1821:  Processing triggers for menu (2.1.47ubuntu4) ...
    1822:  /usr/share/menu/procps: 1: Syntax error: word unexpected (expecting ")")
    1823:  /usr/share/menu/psmisc: 1: Syntax error: word unexpected (expecting ")")
    1824:  /usr/share/menu/monodoc-http: 1: Syntax error: word unexpected (expecting ")")
    1825:  /usr/share/menu/bc: 1: Syntax error: word unexpected (expecting ")")
    1826:  /usr/share/menu/microsoft-edge.menu: 1: Syntax error: word unexpected (expecting ")")
    1827:  /usr/share/menu/dash: 1: Syntax error: word unexpected (expecting ")")
    1828:  /usr/share/menu/bash: 1: Syntax error: word unexpected (expecting ")")
    1829:  /usr/share/menu/telnet: 1: Syntax error: word unexpected (expecting ")")
    1830:  /usr/share/menu/tcl8.6: 1: Syntax error: word unexpected (expecting ")")
    1831:  /usr/share/menu/google-chrome.menu: 1: Syntax error: word unexpected (expecting ")")
    1832:  /usr/share/menu/tk8.6: 1: Syntax error: word unexpected (expecting ")")
    1833:  NEEDRESTART-VER: 3.5
    1834:  NEEDRESTART-KCUR: 6.5.0-1018-azure
    1835:  NEEDRESTART-KEXP: 6.5.0-1018-azure
    1836:  NEEDRESTART-KSTA: 1
    1837:  Warning: Failed to open file(/usr/share/fluxbox/nls/C.UTF-8/fluxbox.cat)
    1838:  for translation, using default messages.
    1839:  Failed to read: session.ignoreBorder
    1840:  Setting default value
    1841:  Failed to read: session.forcePseudoTransparency
    1842:  Setting default value
    1843:  Failed to read: session.colorsPerChannel
    1844:  Setting default value
    1845:  Failed to read: session.doubleClickInterval
    1846:  Setting default value
    1847:  Failed to read: session.tabPadding
    1848:  Setting default value
    1849:  Failed to read: session.styleOverlay
    1850:  Setting default value
    1851:  Failed to read: session.slitlistFile
    1852:  Setting default value
    1853:  Failed to read: session.appsFile
    1854:  Setting default value
    1855:  Failed to read: session.tabsAttachArea
    1856:  Setting default value
    1857:  Failed to read: session.cacheLife
    1858:  Setting default value
    1859:  Failed to read: session.cacheMax
    1860:  Setting default value
    1861:  Failed to read: session.autoRaiseDelay
    1862:  Setting default value
    1863:  Failed to read: session.ignoreBorder
    1864:  Setting default value
    1865:  Failed to read: session.forcePseudoTransparency
    1866:  Setting default value
    1867:  Failed to read: session.colorsPerChannel
    1868:  Setting default value
    1869:  Failed to read: session.doubleClickInterval
    1870:  Setting default value
    1871:  Failed to read: session.tabPadding
    1872:  Setting default value
    1873:  Failed to read: session.styleOverlay
    1874:  Setting default value
    1875:  Failed to read: session.slitlistFile
    1876:  Setting default value
    1877:  Failed to read: session.appsFile
    1878:  Setting default value
    1879:  Failed to read: session.tabsAttachArea
    1880:  Setting default value
    1881:  Failed to read: session.cacheLife
    1882:  Setting default value
    1883:  Failed to read: session.cacheMax
    1884:  Setting default value
    1885:  Failed to read: session.autoRaiseDelay
    1886:  Setting default value
    1887:  Failed to read: session.screen0.opaqueMove
    1888:  Setting default value
    1889:  Failed to read: session.screen0.fullMaximization
    1890:  Setting default value
    1891:  Failed to read: session.screen0.maxIgnoreIncrement
    1892:  Setting default value
    1893:  Failed to read: session.screen0.maxDisableMove
    1894:  Setting default value
    1895:  Failed to read: session.screen0.maxDisableResize
    1896:  Setting default value
    1897:  Failed to read: session.screen0.workspacewarping
    1898:  Setting default value
    1899:  Failed to read: session.screen0.showwindowposition
    1900:  Setting default value
    1901:  Failed to read: session.screen0.autoRaise
    1902:  Setting default value
    1903:  Failed to read: session.screen0.clickRaises
    1904:  Setting default value
    1905:  Failed to read: session.screen0.defaultDeco
    1906:  Setting default value
    1907:  Failed to read: session.screen0.tab.placement
    1908:  Setting default value
    1909:  Failed to read: session.screen0.windowMenu
    1910:  Setting default value
    1911:  Failed to read: session.screen0.noFocusWhileTypingDelay
    1912:  Setting default value
    1913:  Failed to read: session.screen0.workspaces
    1914:  Setting default value
    1915:  Failed to read: session.screen0.edgeSnapThreshold
    1916:  Setting default value
    1917:  Failed to read: session.screen0.window.focus.alpha
    1918:  Setting default value
    1919:  Failed to read: session.screen0.window.unfocus.alpha
    1920:  Setting default value
    1921:  Failed to read: session.screen0.menu.alpha
    1922:  Setting default value
    1923:  Failed to read: session.screen0.menuDelay
    1924:  Setting default value
    1925:  Failed to read: session.screen0.tab.width
    1926:  Setting default value
    1927:  Failed to read: session.screen0.tooltipDelay
    1928:  Setting default value
    1929:  Failed to read: session.screen0.allowRemoteActions
    1930:  Setting default value
    1931:  Failed to read: session.screen0.clientMenu.usePixmap
    1932:  Setting default value
    1933:  Failed to read: session.screen0.tabs.usePixmap
    1934:  Setting default value
    1935:  Failed to read: session.screen0.tabs.maxOver
    1936:  Setting default value
    1937:  Failed to read: session.screen0.tabs.intitlebar
    1938:  Setting default value
    1939:  Failed to read: session.screen0.focusModel
    1940:  Setting default value
    1941:  Failed to read: session.screen0.tabFocusModel
    1942:  Setting default value
    1943:  Failed to read: session.screen0.focusNewWindows
    1944:  Setting default value
    1945:  Failed to read: session.screen0.focusSameHead
    1946:  Setting default value
    1947:  Failed to read: session.screen0.rowPlacementDirection
    1948:  Setting default value
    1949:  Failed to read: session.screen0.colPlacementDirection
    1950:  Setting default value
    1951:  Failed to read: session.screen0.windowPlacement
    1952:  Setting default value
    1953:  Failed to read: session.ignoreBorder
    1954:  Setting default value
    1955:  Failed to read: session.forcePseudoTransparency
    1956:  Setting default value
    1957:  Failed to read: session.colorsPerChannel
    1958:  Setting default value
    1959:  Failed to read: session.doubleClickInterval
    1960:  Setting default value
    1961:  Failed to read: session.tabPadding
    1962:  Setting default value
    1963:  Failed to read: session.styleOverlay
    1964:  Setting default value
    1965:  Failed to read: session.slitlistFile
    1966:  Setting default value
    1967:  Failed to read: session.appsFile
    1968:  Setting default value
    1969:  Failed to read: session.tabsAttachArea
    1970:  Setting default value
    1971:  Failed to read: session.cacheLife
    1972:  Setting default value
    1973:  Failed to read: session.cacheMax
    1974:  Setting default value
    1975:  Failed to read: session.autoRaiseDelay
    1976:  Setting default value
    1977:  Failed to read: session.screen0.opaqueMove
    1978:  Setting default value
    1979:  Failed to read: session.screen0.fullMaximization
    1980:  Setting default value
    1981:  Failed to read: session.screen0.maxIgnoreIncrement
    1982:  Setting default value
    1983:  Failed to read: session.screen0.maxDisableMove
    1984:  Setting default value
    1985:  Failed to read: session.screen0.maxDisableResize
    1986:  Setting default value
    1987:  Failed to read: session.screen0.workspacewarping
    1988:  Setting default value
    1989:  Failed to read: session.screen0.showwindowposition
    1990:  Setting default value
    1991:  Failed to read: session.screen0.autoRaise
    1992:  Setting default value
    1993:  Failed to read: session.screen0.clickRaises
    1994:  Setting default value
    1995:  Failed to read: session.screen0.defaultDeco
    1996:  Setting default value
    1997:  Failed to read: session.screen0.tab.placement
    1998:  Setting default value
    1999:  Failed to read: session.screen0.windowMenu
    2000:  Setting default value
    2001:  Failed to read: session.screen0.noFocusWhileTypingDelay
    2002:  Setting default value
    2003:  Failed to read: session.screen0.workspaces
    2004:  Setting default value
    2005:  Failed to read: session.screen0.edgeSnapThreshold
    2006:  Setting default value
    2007:  Failed to read: session.screen0.window.focus.alpha
    2008:  Setting default value
    2009:  Failed to read: session.screen0.window.unfocus.alpha
    2010:  Setting default value
    2011:  Failed to read: session.screen0.menu.alpha
    2012:  Setting default value
    2013:  Failed to read: session.screen0.menuDelay
    2014:  Setting default value
    2015:  Failed to read: session.screen0.tab.width
    2016:  Setting default value
    2017:  Failed to read: session.screen0.tooltipDelay
    2018:  Setting default value
    2019:  Failed to read: session.screen0.allowRemoteActions
    2020:  Setting default value
    2021:  Failed to read: session.screen0.clientMenu.usePixmap
    2022:  Setting default value
    2023:  Failed to read: session.screen0.tabs.usePixmap
    2024:  Setting default value
    2025:  Failed to read: session.screen0.tabs.maxOver
    2026:  Setting default value
    2027:  Failed to read: session.screen0.tabs.intitlebar
    2028:  Setting default value
    2029:  Failed to read: session.screen0.focusModel
    2030:  Setting default value
    2031:  Failed to read: session.screen0.tabFocusModel
    2032:  Setting default value
    2033:  Failed to read: session.screen0.focusNewWindows
    2034:  Setting default value
    2035:  Failed to read: session.screen0.focusSameHead
    2036:  Setting default value
    2037:  Failed to read: session.screen0.rowPlacementDirection
    2038:  Setting default value
    2039:  Failed to read: session.screen0.colPlacementDirection
    2040:  Setting default value
    2041:  Failed to read: session.screen0.windowPlacement
    2042:  Setting default value
    2043:  Failed to read: session.screen0.slit.acceptKdeDockapps
    2044:  Setting default value
    2045:  Failed to read: session.screen0.slit.autoHide
    2046:  Setting default value
    2047:  Failed to read: session.screen0.slit.maxOver
    2048:  Setting default value
    2049:  Failed to read: session.screen0.slit.placement
    2050:  Setting default value
    2051:  Failed to read: session.screen0.slit.alpha
    2052:  Setting default value
    2053:  Failed to read: session.screen0.slit.onhead
    2054:  Setting default value
    2055:  Failed to read: session.screen0.slit.layer
    2056:  Setting default value
    2057:  Failed to read: session.screen0.toolbar.autoHide
    2058:  Setting default value
    2059:  Failed to read: session.screen0.toolbar.maxOver
    2060:  Setting default value
    2061:  Failed to read: session.screen0.toolbar.visible
    2062:  Setting default value
    2063:  Failed to read: session.screen0.toolbar.alpha
    2064:  Setting default value
    2065:  Failed to read: session.screen0.toolbar.layer
    2066:  Setting default value
    2067:  Failed to read: session.screen0.toolbar.onhead
    2068:  Setting default value
    2069:  Failed to read: session.screen0.toolbar.placement
    2070:  Setting default value
    2071:  Failed to read: session.screen0.toolbar.height
    2072:  Setting default value
    2073:  Failed to read: session.screen0.iconbar.mode
    2074:  Setting default value
    2075:  Failed to read: session.screen0.iconbar.alignment
    2076:  Setting default value
    2077:  Failed to read: session.screen0.iconbar.iconWidth
    2078:  Setting default value
    2079:  Failed to read: session.screen0.iconbar.iconTextPadding
    2080:  Setting default value
    2081:  Failed to read: session.screen0.iconbar.usePixmap
    ...
    
    2168:  �[32mAnalyzing:�[0m target //javascript/node/selenium-webdriver:firefox-browser-tests (489 packages loaded, 12454 targets configured)
    2169:  �[32m[1 / 1]�[0m checking cached actions
    2170:  �[32mAnalyzing:�[0m target //javascript/node/selenium-webdriver:firefox-browser-tests (489 packages loaded, 12454 targets configured)
    2171:  �[32m[1 / 1]�[0m checking cached actions
    2172:  �[32mAnalyzing:�[0m target //javascript/node/selenium-webdriver:firefox-browser-tests (489 packages loaded, 12454 targets configured)
    2173:  �[32m[1 / 1]�[0m checking cached actions
    2174:  �[32mAnalyzing:�[0m target //javascript/node/selenium-webdriver:firefox-browser-tests (489 packages loaded, 12454 targets configured)
    2175:  �[32m[1 / 1]�[0m checking cached actions
    2176:  �[35mWARNING: �[0mDownload from https://github.com/aspect-build/bazel-lib/releases/download/v2.5.3/copy_directory-linux_amd64 failed: class java.io.IOException Connect timed out
    2177:  �[32mINFO: �[0mRepository aspect_bazel_lib~~toolchains~copy_directory_linux_amd64 instantiated at:
    2178:  <builtin>: in <toplevel>
    2179:  Repository rule copy_directory_platform_repo defined at:
    2180:  /home/runner/.bazel/external/aspect_bazel_lib~/lib/private/copy_directory_toolchain.bzl:182:47: in <toplevel>
    2181:  �[31m�[1mERROR: �[0mAn error occurred during the fetch of repository 'aspect_bazel_lib~~toolchains~copy_directory_linux_amd64':
    2182:  Traceback (most recent call last):
    2183:  File "/home/runner/.bazel/external/aspect_bazel_lib~/lib/private/copy_directory_toolchain.bzl", line 167, column 18, in _copy_directory_platform_repo_impl
    2184:  rctx.download(
    2185:  Error in download: java.io.IOException: Error downloading [https://github.com/aspect-build/bazel-lib/releases/download/v2.5.3/copy_directory-linux_amd64] to /home/runner/.bazel/external/aspect_bazel_lib~~toolchains~copy_directory_linux_amd64/copy_directory: Connect timed out
    2186:  �[31m�[1mERROR: �[0m<builtin>: fetching copy_directory_platform_repo rule //:aspect_bazel_lib~~toolchains~copy_directory_linux_amd64: Traceback (most recent call last):
    2187:  File "/home/runner/.bazel/external/aspect_bazel_lib~/lib/private/copy_directory_toolchain.bzl", line 167, column 18, in _copy_directory_platform_repo_impl
    2188:  rctx.download(
    2189:  Error in download: java.io.IOException: Error downloading [https://github.com/aspect-build/bazel-lib/releases/download/v2.5.3/copy_directory-linux_amd64] to /home/runner/.bazel/external/aspect_bazel_lib~~toolchains~copy_directory_linux_amd64/copy_directory: Connect timed out
    2190:  �[31m�[1mERROR: �[0mno such package '@@aspect_bazel_lib~~toolchains~copy_directory_linux_amd64//': java.io.IOException: Error downloading [https://github.com/aspect-build/bazel-lib/releases/download/v2.5.3/copy_directory-linux_amd64] to /home/runner/.bazel/external/aspect_bazel_lib~~toolchains~copy_directory_linux_amd64/copy_directory: Connect timed out
    2191:  �[31m�[1mERROR: �[0m/home/runner/work/selenium/selenium/BUILD.bazel:65:17: //:.aspect_rules_js/node_modules/selenium-webdriver depends on @@aspect_bazel_lib~~toolchains~copy_directory_linux_amd64//:copy_directory_toolchain in repository @@aspect_bazel_lib~~toolchains~copy_directory_linux_amd64 which failed to fetch. no such package '@@aspect_bazel_lib~~toolchains~copy_directory_linux_amd64//': java.io.IOException: Error downloading [https://github.com/aspect-build/bazel-lib/releases/download/v2.5.3/copy_directory-linux_amd64] to /home/runner/.bazel/external/aspect_bazel_lib~~toolchains~copy_directory_linux_amd64/copy_directory: Connect timed out
    2192:  �[31m�[1mERROR: �[0mAnalysis of target '//javascript/node/selenium-webdriver:firefox-browser-tests' failed; build aborted: Analysis failed
    2193:  �[32mINFO: �[0mElapsed time: 68.964s, Critical Path: 1.31s
    2194:  �[32mINFO: �[0m1 process: 1 internal.
    2195:  �[31m�[1mERROR: �[0mBuild did NOT complete successfully
    2196:  �[31m�[1mERROR: �[0mNo test targets were found, yet testing was requested
    2197:  �[0m
    2198:  ##[error]Process completed with exit code 1.
    

    ✨ CI feedback usage guide:

    The CI feedback tool (/checks) automatically triggers when a PR has a failed check.
    The tool analyzes the failed checks and provides several feedbacks:

    • Failed stage
    • Failed test name
    • Failure summary
    • Relevant error logs

    In addition to being automatically triggered, the tool can also be invoked manually by commenting on a PR:

    /checks "https://github.com/{repo_name}/actions/runs/{run_number}/job/{job_number}"
    

    where {repo_name} is the name of the repository, {run_number} is the run number of the failed check, and {job_number} is the job number of the failed check.

    Configuration options

    • enable_auto_checks_feedback - if set to true, the tool will automatically provide feedback when a check is failed. Default is true.
    • excluded_checks_list - a list of checks to exclude from the feedback, for example: ["check1", "check2"]. Default is an empty list.
    • enable_help_text - if set to true, the tool will provide a help message with the feedback. Default is true.
    • persistent_comment - if set to true, the tool will overwrite a previous checks comment with the new feedback. Default is true.
    • final_update_message - if persistent_comment is true and updating a previous checks message, the tool will also create a new message: "Persistent checks updated to latest commit". Default is true.

    See more information about the checks tool in the docs.

    @diemol diemol merged commit ec54309 into trunk Apr 22, 2024
    14 of 15 checks passed
    @diemol diemol deleted the selenium_manager_thin_wrapper_js branch April 22, 2024 11:24
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    1 participant