{"id":22360349,"url":"https://github.com/sergueik/selenium-fluxbox","last_synced_at":"2025-07-30T13:31:46.818Z","repository":{"id":27805999,"uuid":"76997304","full_name":"sergueik/selenium-fluxbox","owner":"sergueik","description":"Selenium toolchain in Ubuntu virtualbox  with fluxbox and tmux and selected past build of browser","archived":false,"fork":false,"pushed_at":"2025-07-27T04:05:19.000Z","size":915,"stargazers_count":5,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-27T06:26:00.400Z","etag":null,"topics":["chromedriver","geckodriver","selenium","vagrant","vagrantbox"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sergueik.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-12-20T22:45:46.000Z","updated_at":"2025-07-27T04:05:23.000Z","dependencies_parsed_at":"2024-03-29T03:34:44.352Z","dependency_job_id":"3cd5a9ca-c4be-43d4-9c9e-8613968f372c","html_url":"https://github.com/sergueik/selenium-fluxbox","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sergueik/selenium-fluxbox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergueik%2Fselenium-fluxbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergueik%2Fselenium-fluxbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergueik%2Fselenium-fluxbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergueik%2Fselenium-fluxbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sergueik","download_url":"https://codeload.github.com/sergueik/selenium-fluxbox/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergueik%2Fselenium-fluxbox/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267875487,"owners_count":24158780,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chromedriver","geckodriver","selenium","vagrant","vagrantbox"],"created_at":"2024-12-04T16:15:48.303Z","updated_at":"2025-07-30T13:31:46.460Z","avatar_url":"https://github.com/sergueik.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"### Info\r\n\r\nThis project offers a standalone Ubuntu Vagrant box instance containing\r\n\r\n * [Fluxbox](https://wiki.debian.org/FluxBox)\r\n * [tmux](https://github.com/tmux/tmux) autologin\r\n * Pinned User-specified version of Selenium ( __4.*__, __3.x__ or legacy __2.53__ )\r\n * Chrome with Chrome Driver\r\n * Firefox with Gecko Driver\r\n * Katalon IDE (experimental)\r\n\r\nIt is not uncommon that the 'bleeding edge' versions of the drivers don't work well together, e.g. throwing errors like:\r\n`org.openqa.selenium.WebDriverException: unknown error: Chrome version must be \u003e= 52.0.2743.0 ...` (this has been observed quie often during early Selenium __3.x__, and then again with __4.0.alpha__ releases).\r\nLikewise the Selenium hub error on the screenshot\r\n![box](https://github.com/sergueik/selenium-fluxbox/blob/master/screenshots/session_error.png)\r\n\r\nillustrates a likely versions mismatch between Selenium, Geckodriver and Firefox, or Selenium, ChromeDriver and Chrome.\r\n\r\n\r\nOne often wishes to enforce specific past versions of Selenium-based toolchain.\r\nVagrant makes this easy.\r\n![box](https://github.com/sergueik/selenium-fluxbox/blob/master/screenshots/box.png)\r\n\r\nNote: Docker makes this easy too, but there is no native Docker port for Windows 8.x and earlier and\r\nthis could be one's reason to stay with Vagrant.\r\n  \r\nThis project contains __Trusty___ __14.04__ __LTS__ `Vagrantfile` that is loosely based on [anomen/vagrant-selenium](https://github.com/Anomen/vagrant-selenium/blob/master/script.sh)\r\nThere is also an  Ubuntu __Xenial__ __16.04__  __LTS__ `Vagrantfile.xenial`: there are differences in openjdk/Oracle JDK release-specific repo availability between  __Xenial__ and __Trusty__. \r\nSupport of Ubuntu __Bionic__ __18.04__ and __Focal__ __20.04__ releases is planned - no strong depenency between the browser and OS release exits for Linux.\r\n\r\n### Usage\r\n\r\nDownload the vagrant box images of\r\nTrusty [trusty-server-amd64-vagrant-selenium.box](https://atlas.hashicorp.com/ubuntu/boxes/trusty64)\r\n or Xenial [vagrant-selenium](https://app.vagrantup.com/Th33x1l3/boxes/vagrant-selenium/versions/0.2.1/providers/virtualbox.box)\r\nlocally, name it `trusty-server-amd64-vagrant-selenium.box` and\r\n`xenial-server-amd64-vagrant-selenium.box` respectively and store in the `Downloads` directory of the user.\r\n\r\nThen run\r\n```bash\r\nexport PROVISION_SELENIUM=true\r\nvagrant up\r\n```\r\nor on Windows\r\n```cmd\r\nset PROVISION_SELENIUM=true\r\nvagrant up\r\n```\r\n\r\nFor downloading box for the very first time into `Downloads` directory add the following setting (note: this setting is experimental):\r\n```\r\nexport BOX_DOWNLOAD=true\r\nexport PROVISION_SELENIUM=true\r\nvagrant up\r\n```\r\nSpecific versions of Selenium Server, Firefox, Gecko Driver, Chrome, Chrome Driver can be set through the environment variables\r\n`SELENIUM_VERSION`, `FIREFOX_VERSION`, `GECKODRIVER_VERSION`, `CHROME_VERSION`, `CHROMEDRIVER_VERSION`.\r\n\r\nif a specific version of the Selenium Jar or browser is needed, set it via\r\n\r\n```sh\r\nexport SELENIUM_VERSION=3.141.59\r\nexport CHROME_VERSION=75.0.3770.80\r\nexport FIREFOX_VERSION=45.0.1\r\n```\r\nor\r\n\r\n```cmd\r\nset SELENIUM_VERSION=3.5.3\r\nset SELENIUM_VERSION=3.141.59\r\nset CHROME_VERSION=75.0.3770.80\r\n```\r\n\r\nAlso the `USE_ORACLE_JAVA` setting is recognized to use oracle JDK on Trusty.\r\n\r\n```bash\r\nexport PROVISION_SELENIUM=true\r\nexport SELENIUM_VERSION=3.14.0\r\nexport USE_ORACLE_JAVA=true\r\nexport CHOME_VERSION=48.0.2564.109\r\nexport CHROMEDRIVER_VERSION=2.30\r\nvagrant up\r\n```\r\n\r\nFor the list or recognized chrome versions, inspect the `Vagrantfile`.  Another option to lookup the available choices of Chrome browser specific release e.g. __48__, is to run\r\n```sh\r\nruby get_chrome_versions.rb -r 48\r\n```\r\nthis will print:\r\n```Ruby\r\n[\"48.0.2564.109\",\r\n \"http://www.slimjetbrowser.com/chrome/lnx/chrome64_48.0.2564.109.deb\"]\r\n```\r\ntherefore one must set the `CHROMEDRIVER_VERSION` to `48.0.2564.109` if a release 48 is intended.\r\n\r\nFew supported combinations of legacy browser and driver versions are listed below.\r\nNote: this list is provided as an example, and is not maintained.\r\n\r\n|                      |              |\r\n|----------------------|--------------|\r\n| SELENIUM_VERSION     | 3.2.0        |\r\n| FIREFOX_VERSION      | 54.0b13      |\r\n| GECKODRIVER_VERSION  | 0.17.0       |\r\n| CHROME_VERSION       | 59.0.3071.86 |\r\n| CHROMEDRIVER_VERSION | 2.30         |\r\n\r\n|                      |              |\r\n|----------------------|--------------|\r\n| SELENIUM_VERSION     | 2.53         |\r\n| FIREFOX_VERSION      | 45.0.1       |\r\n| CHROME_VERSION       | 54.0.2840.71 |\r\n| CHROMEDRIVER_VERSION | 2.24         |\r\n\r\n|                      |              |\r\n|----------------------|--------------|\r\n| SELENIUM_VERSION     | 2.47         |\r\n| FIREFOX_VERSION      | 40.0.3       |\r\n| CHROME_VERSION       | 50.0.2661.75 |\r\n| CHROMEDRIVER_VERSION | 2.16         |\r\n\r\nWith Chrome, `stable`, `unstable` or `beta` are valid versions, appropriate `.deb` package from the\r\n[google repository](https://www.google.com/linuxrepositories/) will be installed.\r\n\r\nThe `Vagrantfile` automates the download  of specific old build of from\r\n[https://www.slimjet.com/chrome/google-chrome-old-version.php](https://www.slimjet.com/chrome/google-chrome-old-version.php). Note, there are no old Chrome builds __87.x__, __88.x__, or __89.x__ and __91__through __101__ there \r\nCheck if desired version is available. There is also were few relatively recent 32-bit Chrome builds there.\r\nNote the Chrome browser is often re-released over time with the same major and minor version like\r\ne.g. __69.0.3497.100__ vs. __69.0.3497.92__\r\nbuilds __72.0.3626.68__  vs. __72.0.3626.96__ vs. __72.0.3626.109__ vs. __72.0.3626.119__ and so on,\r\nwith major version number bumps relatively unfrequent.\r\nThe build one can find on slimjet is not always the very latest one of those -\r\ntherefore it is not recommended to use Slimjet with the very recent past builds.\r\n\r\nInternaly the chromedriver communicates with Chrome browser via [WebSockets DevTools debugging interface](https://stackoverflow.com/questions/44244505/how-chromedriver-is-communicating-internally-with-the-browser?utm_medium=organic\u0026utm_source=google_rich_qa\u0026utm_campaign=google_rich_qa).\r\n\r\nNote that the actual download directory `http://www.slimjetbrowser.com/chrome/lnx/` is not directly browsable.\r\nAlternatively a handful of *really* old Chrome browser debian packages can be  manually downloaded from [https://google-chrome.en.uptodown.com/ubuntu/old](https://google-chrome.en.uptodown.com/ubuntu/old).\r\n\r\nNote: the runtime error `Unsupported major.minor version 52.0` is a manifestation of a Java version mismatch between the Selenium.jar and the environment.\r\nFor Ubuntu Trusty, one can switch to JDK 8 by setting the `USE_ORACLE_JAVA` environment to `true` and re-provision the box.\r\n\r\n### Limitations\r\n  * The hub is available on `http://127.0.0.1:4444/wd/hub/static/resource/hub.html` with some delay after the Virtual Box reboot - currently there is no visual cue on when the box is ready.\r\n\r\n  * If the screen size is too low, run the following command on the host\r\n```bash\r\nvboxmanage controlvm \"Selenium Fluxbox\" setvideomodehint 1280 900 32\r\n```\r\nthis currently works with trusty but not always with xenial base box in Virtual Box.\r\n\r\n### Note Latest old Chrome builds\r\n\r\nThe Chrome Build 70 had multiple releases:\r\n  - `70.0.3538.110`\r\n  - `70.0.3538.102`\r\n  - `70.0.3538.77`\r\n  - `70.0.3538.67`\r\n\r\nNot every build is available in slimjet.\r\n\r\n###  Usage with Java projects\r\n\r\nA minimal example Java TestNG parallel run Selenium test project is provided in the `example` direcrory:\r\n\r\n![box](https://github.com/sergueik/selenium-fluxbox/blob/master/screenshots/parallel-run-capture.png)\r\n\r\nIt will further benefit from inegrating with [vagrant-maven-plugin](https://github.com/nicoulaj/vagrant-maven-plugin)\r\nplugin and [simple-ssh](https://github.com/RationaleEmotions/SimpleSSH) jar e.g. to manage browsers and browser\r\ndrivers in the Virtualbox after the test completion\r\nthru ssh using Vagrant-generated keys - this is work in progress.\r\n\r\none can find the key file location from Vagrant by running the command\r\n\r\n```cmd\r\nC:\\HashiCorp\\Vagrant\\bin\\vagrant.exe ssh-config\r\n```\r\nIt would print something like\r\n```sh\r\nHost default\r\n  HostName 127.0.0.1\r\n  User vagrant\r\n  Port 2222\r\n  UserKnownHostsFile /dev/null\r\n  StrictHostKeyChecking no\r\n  PasswordAuthentication no\r\n\t\r\n  IdentitiesOnly yes\r\n  LogLevel FATAL\t\r\n```\r\nbut only if the Virtual Box VM was started by vagrant. \r\nVagrant will refuse to give this information when VM was launched through Virtual Box UI directly.\r\n\r\n\r\n### Latest Chrome for Testing\r\n\r\nTo automatically download the stable chromedriver for Chrome testing from [Chrome for Testing availability](https://googlechromelabs.github.io/chrome-for-testing/) page\r\n\r\n![chrome-for-testing](https://github.com/sergueik/selenium-fluxbox/blob/master/screenshots/capture-chrome-for-testing.png)\r\n\r\none can use this command (currntly it is quite long):\r\n\r\n```sh\r\nxmllint --htmlout --html --xpath \"//section[@id='stable']/div[@class='table-wrapper']/table/tbody/tr/th[code='chromedriver']/../th[code = 'linux64']/../td[code='200']/../td[1]/code/text()\" chrome-for-testing.html 2\u003e/dev/null\r\n```\r\n\r\nthis will print:\r\n```text\r\nhttps://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/119.0.6045.105/linux64/chromedriver-linux64.zip\r\n```\r\n\r\n* NOTE: the \"and\" in the condition also appears to work:\r\n\r\n```sh\r\n\r\nxmllint --htmlout --html --xpath \"//section[@id='stable']/div[@class='table-wrapper']/table/tbody/tr[th/code='chromedriver' and td/code='200' and th/code='linux64']/td[1]/code/text()\" chrome-for-testing.html 2\u003e/dev/null\r\n```\r\n```text\r\nhttps://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/119.0.6045.105/linux64/chromedriver-linux64.zip\r\n```\r\nand so is the following two step extraction:\r\n```sh\r\nxmllint --htmlout --html --xpath \"//div[@class='table-wrapper summary']/table/tbody/tr[th/a/text()='Stable']/td[1]/code/text()\" chrome-for-testing.html 2\u003e/dev/null\r\n\r\n```\r\n```text\r\n119.0.6045.105\r\n```\r\n```sh\r\n\r\nxmllint --htmlout --html --xpath \"//code[contains(text(),'/119.0.6045.105/') and contains(text(),'chromedriver-linux64')]/text()\" chrome-for-testing.html 2\u003e/dev/null\r\n```\r\n```text\r\nhttps://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/119.0.6045.105/linux64/chromedriver-linux64.zip\r\n```\r\n### Work in Progress\r\n\r\n  * Probe [http://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/](http://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/) and /or [https://google-chrome.en.uptodown.com/ubuntu/old](https://google-chrome.en.uptodown.com/ubuntu/old) for a valid past Chrome build is a\r\n  * Enable [gecko driver](https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver)\r\n  * Dockerfile - see e.g. [docker](https://github.com/elgalu/docker-selenium), [docker-selenium-firefox-chrome-beta](https://github.com/vvo/docker-selenium-firefox-chrome-beta), [lucidworks/browser-tester](https://github.com/lucidworks/browser-tester), [Docker image based on Ununtu with JDK and maven for Java](https://github.com/markhobson/docker-maven-chrome)\r\n  * Support downloads from [chromium dev channel](http://www.chromium.org/getting-involved/dev-channel). More about using headless Chrome see\r\n  * [Getting Started with Headless Chrome](https://developers.google.com/web/updates/2017/04/headless-chrome) and [](https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md).\r\n  * [xvfb customizations, video recording](https://github.com/aimmac23/selenium-video-node)\r\n  * desktop shortcut generation e.g. [example](https://github.com/regaur/puppeteer/blob/master/puppeteer.install) for ArchLinux, chromium puppeteer\r\n  * [ruby gem for authoring and managing tmux sessions easily](https://github.com/tmuxinator/tmuxinator)\r\n  * [constructing expression for XPath with multiple conditions in xmllint](https://stackoverflow.com/questions/10247978/xpath-with-multiple-conditions)\r\n### See also:\r\n\r\n  * [Google Chrome Old Versions - for Windows only](https://google_chrome.en.downloadastro.com/old_versions/)\r\n  * [Selected old versions](https://google-chrome.en.uptodown.com/ubuntu/old)\r\n  * [chromium old builds for Ubuntu](https://www.ubuntuupdates.org/pm/google-chrome-stable)\r\n  * [table](http://chromedriver.chromium.org/downloads) of matching Chromedriver and Chrome browser versions\r\n  * [bonigarcia/webdrivermanager](https://github.com/bonigarcia/webdrivermanager) allows the Java test suite to specify the browser driver verson for all standard browsers.\r\n  * [abhishek8908/selenium-drivers-download-plugin](https://github.com/abhishek8908/selenium-drivers-download-plugin) maven plugin which downloads specific versions of chromedriver, iedriverServer, edge or geckodriver by executing a specific custom goal `generateDrivers` during maven life cycle.\r\n  * [how to disable Chrome Browser auto update](https://stackoverflow.com/questions/18483087/how-to-disable-google-chrome-auto-update)\r\n  * [xvfb headless selenium box blog](https://altarmoss.wordpress.com/2017/05/22/how-to-create-a-headless-selenium-server-vagrant-box/)\r\n  * [examples and documentation](https://www.codota.com/code/java/classes/de.saumya.mojo.ruby.script.ScriptFactory)\r\n  * [parallel testing testng framerowk](https://github.com/CybertekSchool/parallel-multi-browser-testng-framework) - note utility code redundant across various projects of that author.\r\n  * [the Chromium Projects](https://www.chromium.org/getting-involved/download-chromium)\r\n  * Chromium [Puppeteer](https://github.com/GoogleChrome/puppeteer) - headless [Dockerfile](https://github.com/landaida/puppeteer/blob/master/Dockerfile) for Debian-based box.\r\n  * [Puppeteer](https://github.com/GoogleChrome/puppeteer) visual [recorder](https://github.com/euprogramador/puppeteer-screen-recorder) with Xvfb, standalone\r\n  * [Puppeteer](https://github.com/GoogleChrome/puppeteer) example [tests](https://github.com/checkly/puppeteer-examples)\r\n  * Puppeteer web scraping [tutorial](https://github.com/emadehsan/thal)\r\n  * [sdkman](https://sdkman.io/) - parallel version manager (in particular, of JDK).\r\n  * [oracle logins](http://bugmenot.com/view/oracle.com) for downloading Java SE 8 and earlier from oracle technet [Java Archive Downloads](https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html) page.\r\n  *  shell script to [install chrome latest RPM](https://intoli.com/install-google-chrome.sh) via `curl $URL | bash - ` from JDK11 + chrome [Dockerfile](https://hub.docker.com/r/bigtincan/jdk11-chrome/dockerfile)\r\n  * [xserver-xorg-video-dummy driver](https://techoverflow.net/2019/02/23/how-to-run-x-server-using-xserver-xorg-video-dummy-driver-on-ubuntu/)\r\n  * an old instruction for headless debian [setup](http://cosmolinux.no-ip.org/raconetlinux2/dummy_radeon_nvidia.html) (via dumy X driver)\r\n  * chromium snapshots release directories\r\n     + [windows](https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Win/)\r\n     + [linux](https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/)\r\n\r\n### License\r\nThis project is licensed under the terms of the MIT license.\r\n\r\n### Author\r\n[Serguei Kouzmine](kouzmine_serguei@yahoo.com)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsergueik%2Fselenium-fluxbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsergueik%2Fselenium-fluxbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsergueik%2Fselenium-fluxbox/lists"}