Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
slapos slapos
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Labels
    • Labels
  • Merge requests 122
    • Merge requests 122
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Environments
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Jobs
  • Commits
Collapse sidebar
  • nexedi
  • slaposslapos
  • Merge requests
  • !420

Merged
Created Oct 04, 2018 by Jérome Perrin@jeromeOwner

Selenium Server

  • Overview 14
  • Commits 61
  • Pipelines 1
  • Changes 23

New software release, selenium server, which expose a http server to which clients can connect using webdriver.Remote and then use standard webdriver API to control the browser.

The server is made of :

  • the "hub" to which webdriver connects
  • a Xvfb server
  • some nodes, for different browsers:
    • Firefox 52
    • Firefox 60
    • Chrome 69
  • an IPv6 https frontend, exposing the admin interface and the hub. Note that python's webdriver binding before 3.14.0 refuse to connect to a hub with a non verified SSL certificate, so for now clients must either use the published backend-url (which is IPv4) or use a version of selenium eggs >= 3.14. In the future we'll see how caucase can solve this. Also, this behavior might also change with future version of selenium, because it's wrong that it does not verify SSL certificates.
  • a ssh server, to which you can connect to establish a ssh tunnel with port forward and register more nodes to the hub. This can be used to connect a browser running on your desktop and see the test running, run unsupported browsers, maybe also appium to run tests on mobile. This is a kind of "extra feature" that seems working, but I'm not sure we can support it.

To achieve this, we had to :

  • update Xorg components and build gtk with a X11 gdk backend to be able to run firefox 60. Updating xorg/gdk also fixed a bug in firefox 52, before this, firefox 52 was not able to get the screen size and window.screen.width was 0. Now firefox 52 can get the screen size properly but resizing window does not work.
  • update chrome 69 and fix a few missing $LD_LIBRARY_PATH in the wrapper.

Everything seems working, including taking screenshots, uploading files and resizing window - except resizing window does not work on firefox 52.

See the included test suite for some example usage. Basically it's same as what we're doing today, but instead of:

driver = webdriver.Firefox(path_to_firefox)

we use:

driver = webdriver.Remote(
   command_executor='http://127.0.0.1:4444/wd/hub', # the url or backend-url parameter published by the instance.
   desired_capabilities={
      'browserName': 'firefox', # or chrome
      'version': '60', # or don't set a version if you want any version (browserName, on the other hand, is required)
   })
Assignee
Assign to
Reviewer
Request review from
None
Milestone
None
Assign milestone
Time tracking
Source branch: feat/selenium-server
GitLab Nexedi Edition | About GitLab | About Nexedi | 沪ICP备2021021310号-2 | 沪ICP备2021021310号-7