|   |     | 
| Line 1: | Line 1: | 
|  | == moz-grid-config ==
 |  | Since November 2016, we are no longer actively using or maintaining a Selenium Grid instance. | 
|  | moz-grid-config is a project for managing our Selenium infrastructure. It includes the latest version of Selenium that we're using, and a mechanism for starting the hub/nodes. You can find documentation on moz-grid-config at the [https://github.com/mozilla/moz-grid-config GitHub project page].
 |  | 
|  |   |  | 
|  | == Selenium Grid Hub ==
 |  | 
|  | The Selenium Grid hub is running on a VM in our data-center. For setup and administration see our [https://mana.mozilla.org/wiki/display/QA/selenium-hub1.qa.scl3.mozilla.com internal documentation]. We also have a staging instance [https://mana.mozilla.org/wiki/display/QA/selenium-hub-staging1.qa.scl3.mozilla.com documented here].
 |  | 
|  |   |  | 
|  | == Selenium Grid Nodes ==
 |  | 
|  |   |  | 
|  | === Mac OS X Nodes ===
 |  | 
|  | The following Mac Minis arerunning on our data-center. For setup and administration see our [https://mana.mozilla.org/wiki/display/QA/selenium-mac%5Bn%5D.qa.scl3.mozilla.com internal documentation].
 |  | 
|  | * '''selenium-mac1'''.qa.scl3.mozilla.com
 |  | 
|  | * '''selenium-mac2'''.qa.scl3.mozilla.com
 |  | 
|  | * '''selenium-mac3'''.qa.scl3.mozilla.com (staging)
 |  | 
|  |   |  | 
|  | === Windows Nodes ===
 |  | 
|  | The following Windows VMs are running on our datacenter:
 |  | 
|  | * '''selenium1'''.qa.scl3.mozilla.com (10.22.73.149)
 |  | 
|  | ** Windows 7, 8 GB RAM, 2 cores, 150GB disk
 |  | 
|  | * '''selenium2'''.qa.scl3.mozilla.com (10.22.73.150)
 |  | 
|  | ** Windows 7, 8 GB RAM, 2 cores, 150GB disk
 |  | 
|  | * '''selenium3'''.qa.scl3.mozilla.com (10.22.73.151)
 |  | 
|  | ** Windows 7, 8 GB RAM, 2 cores, 150GB disk
 |  | 
|  | * '''selenium4'''.qa.scl3.mozilla.com (10.22.73.152)
 |  | 
|  | ** Windows 7, 8 GB RAM, 2 cores, 150GB disk
 |  | 
|  | * '''selenium5'''.qa.scl3.mozilla.com (10.22.73.153)
 |  | 
|  | ** Windows 7, 8 GB RAM, 2 cores, 150GB disk
 |  | 
|  | * '''selenium6'''.qa.scl3.mozilla.com (10.22.73.154)
 |  | 
|  | ** Windows 7, 8 GB RAM, 2 cores, 150GB disk
 |  | 
|  | * '''selenium-staging1'''.qa.scl3.mozilla.com (10.22.73.138)
 |  | 
|  | ** Windows 7, 8 GB RAM, 2 cores, 150GB disk
 |  | 
|  |   |  | 
|  | === Starting Mac OS X Nodes ===
 |  | 
|  | Connect to the appropriate machine, and execute the following from a terminal (you can use SSH or VNC):
 |  | 
|  |   |  | 
|  |     cd ~/moz-grid-config
 |  | 
|  |     ant -Denv=production
 |  | 
|  |   |  | 
|  | The <code>-Denv</code> value can be either <code>production</code> or <code>staging</code>, and controls which Selenium hub the node connects to. Omitting this, or any other value will assume the hub is running on localhost.
 |  | 
|  |   |  | 
|  | === Starting Windows Nodes ===
 |  | 
|  | We use the [https://git-for-windows.github.io/ Git for Windows] tool on Windows. Connect to the appropriate machine usingRemote Desktop, start the MsysGit tool on the desktop, and run the following commands:
 |  | 
|  |   |  | 
|  |     cd ~/moz-grid-config
 |  | 
|  |     ant -autoproxy -Denv=production
 |  | 
|  |   |  | 
|  | We need the <code>-autoproxy</code> helper because the these nodes run through a proxy.
 |  | 
|  |   |  | 
|  | The <code>-Denv</code> value can be either <code>production</code> or<code>staging</code>, and controls which Selenium hub the node connects to. Omitting this, or any other value will assume the hub is running on localhost.
 |  | 
|  |   |  | 
|  | === Stopping Nodes ===
 |  | 
|  | Terminate the process using Ctrl+C.
 |  | 
|  |   |  | 
|  | == Adding a Browser ==
 |  | 
|  |   |  | 
|  | === Configuration ===
 |  | 
|  | You will need to fork and clone from the [https://github.com/mozilla/moz-grid-config moz-grid-config github repository] and work on a new branch.
 |  | 
|  | # Add the browser, alias, and path to <code>grid_configuration.yml</code>.
 |  | 
|  | # Add the browser, binary and details to the JSON configuration files.
 |  | 
|  | # Submit apull request to the main GitHub repository from your branch.
 |  | 
|  |   |  | 
|  | === Hub/Nodes ===
 |  | 
|  | # Prepare Jenkins for shutdown - this will allow all currently running jobs to finish, but will not start any new jobs.
 |  | 
|  | # Once no jobs are running, stop the Selenium Gridhub
 |  | 
|  | # Pull in the latest changes from moz-grid-config
 |  | 
|  | # Start the Selenium Grid hub
 |  | 
|  | # For each node:
 |  | 
|  | ## Stop the Selenium server
 |  | 
|  | ## Pull in the latest changes from moz-grid-config
 |  | 
|  | ## Install the appropriate browser
 |  | 
|  | ## Start the Selenium server
 |  | 
|  |   |  | 
|  | == Installing Firefox ==
 |  | 
|  | * All new browsers should be installed with the version number in the path so that moz-grid-config can always find them.
 |  | 
|  | * Install [http://pypi.python.org/pypi/mozdownload mozdownload] and [http://pypi.python.org/pypi/mozinstall mozinstall] using pip to download and install the Firefox binaries.
 |  | 
|  | ** Use <code>--help</code> for both mozdownload and mozinstall to see all available options
 |  | 
|  | ** To download the latest release using mozdownload you can simply use: <code>mozdownload -v latest</code>
 |  | 
|  | ** To download the latest Firefox Nightly build using mozdownload you can use: <code>mozdownload -t daily --branch=mozilla-central</code>
 |  | 
|  | ** To download the latest Firefox Aurora build using mozdownload you can use: <code>mozdownload -t daily --branch=mozilla-aurora</code>
 |  | 
|  | ** Releases are also available to download manually [http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ here]
 |  | 
|  |   |  | 
|  | === Mac OS X ===
 |  | 
|  | From a terminal:
 |  | 
|  |   |  | 
|  |     mozdownload -v 47.0 -d firefox.dmg
 |  | 
|  |     mozinstall -d /tmp firefox.dmg
 |  | 
|  |     mv /tmp/Firefox.app/ "/Applications/Firefox 47.app/"
 |  | 
|  |     rm firefox.dmg
 |  | 
|  |   |  | 
|  | === Windows ===
 |  | 
|  | From a command prompt:
 |  | 
|  |   |  | 
|  |     mozdownload -v 47.0 -p win32 -d firefox.exe
 |  | 
|  |     mozinstall -d %TMP% firefox.exe
 |  | 
|  |     move %TMP%\firefox\core "\Program Files (x86)\Mozilla Firefox 47"
 |  | 
|  |     del firefox.exe
 |  | 
|  |   |  | 
|  | == Updating Selenium ==
 |  | 
|  | Follow these steps to upgrade the version of Selenium.
 |  | 
|  |   |  | 
|  | === Update staging instance===
 |  | 
|  | # If you're not on a Mozilla office network, connect to the [https://mana.mozilla.org/wiki/display/SD/VPN Mozilla VPN]
 |  | 
|  | # [http://webqa-ci-staging1.qa.scl3.mozilla.com:8080/login Login to Jenkins]
 |  | 
|  | # [http://webqa-ci-staging1.qa.scl3.mozilla.com:8080/quietDown Prepare Jenkins for shutdown]
 |  | 
|  | # Wait until no jobs are running
 |  | 
|  | # Connect to selenium-staging1.qa.scl3.mozilla.com using RDP
 |  | 
|  | # Stop the Selenium node by hitting Ctrl+C in the terminal window
 |  | 
|  | # Update the Selenium major and minor versions in <code>C:\Users\mozauto\moz-grid-config\default.properties</code>
 |  | 
|  | # Start the Selenium server by running <code>ant -autoproxy -Denv=staging -Dnode.host=IP</code>
 |  | 
|  | # Connect to selenium-mac3.qa.scl3.mozilla.com using VNC
 |  | 
|  | # Stop the Selenium node by hitting Ctrl+C in the terminal window
 |  | 
|  | # Update the Selenium version in /Users/webqa/moz-grid-config/default.properties
 |  | 
|  | # Start the Selenium server by running <code>ant -Denv=staging</code>
 |  | 
|  | # Connect to selenium-hub-staging1.qa.scl3.mozilla.com using SSH
 |  | 
|  | # Stop the Selenium hub by running <code>sudo initctl stop selenium</code>
 |  | 
|  | # Download the new Selenium server by running the following, replacing the version numbers as appropriate:
 |  | 
|  | #* <code>sudo wget -P /opt/selenium <nowiki>http://selenium-release.storage.googleapis.com/2.53/selenium-server-standalone-2.53.1.jar</nowiki></code>
 |  | 
|  | # Update the Selenium version in <code>/etc/init/selenium.conf</code>
 |  | 
|  | # Start the Selenium hub by running <code>sudo initctl start selenium</code>
 |  | 
|  | # [http://webqa-ci-staging1.qa.scl3.mozilla.com:8080/cancelQuietDown Cancel the Jenkins shutdown]
 |  | 
|  | # Verify the hub and node versions on the [http://selenium-hub-staging1.qa.scl3.mozilla.com:4444/grid/console Selenium hub console]
 |  | 
|  |   |  | 
|  | === Test staging instance ===
 |  | 
|  | Run tests against the staging instance. You can do this locally by pointing your tests at host selenium-hub1.qa.scl3.mozilla.com and port 4444, or you can run tests via the [http://webqa-ci-staging1.qa.scl3.mozilla.com:8080/ staging Jenkins instance]. For convenience, there is a job named [http://webqa-ci-staging1.qa.scl3.mozilla.com:8080/job/grid.sanity/ grid.sanity] that will run a variety of tests against both the Windows and OS X platforms.
 |  | 
|  |   |  | 
|  | === Update moz-grid-config ===
 |  | 
|  | Once testing is finished and we're satisfied that there are no regressions, submit a pull request for [https://github.com/mozilla/moz-grid-config moz-grid-config] that changes the version number in <code>default.properties</code>. This will need a review from a team member before it gets merged.
 |  | 
|  |   |  | 
|  | === Update production instance ===
 |  | 
|  | # [https://webqa-ci.mozilla.com/login Log in to Jenkins]
 |  | 
|  | # [https://webqa-ci.mozilla.com/quietDown Prepare Jenkins for shutdown]
 |  | 
|  | # Wait until no jobs are running
 |  | 
|  | # Connect to selenium1.qa.scl3.mozilla.com using RDP
 |  | 
|  | # Stop the Selenium node by hitting Ctrl+C in the terminal window
 |  | 
|  | # Pull down the latest moz-grid-config changes by running <code>git pull</code>
 |  | 
|  | # Start the Selenium server by running <code>ant -autoproxy -Denv=production</code>
 |  | 
|  | # Repeat steps 4-7 on selenium2, selenium3, selenium4, selenium5, and selenium6
 |  | 
|  | # Connect to selenium-mac1.qa.scl3.mozilla.com using VNC
 |  | 
|  | # Stop the Selenium node by hitting Ctrl+C in the terminal window
 |  | 
|  | # Pull down the latest moz-grid-config changes by running <code>git pull</code>
 |  | 
|  | # Start the Selenium server by running <code>ant -Denv=production</code>
 |  | 
|  | # Repeat steps 9-12 on selenium-mac2
 |  | 
|  | # Connect to selenium-hub1.qa.scl3.mozilla.com using SSH
 |  | 
|  | # Stop the Selenium hub by running <code>sudo initctl stop selenium</code>
 |  | 
|  | # Download the new Selenium server by running the following, replacing the version numbers as appropriate:
 |  | 
|  | #* <code>sudo wget -P /opt/selenium <nowiki>http://selenium-release.storage.googleapis.com/2.53/selenium-server-standalone-2.53.1.jar</nowiki></code>
 |  | 
|  | # Update the Selenium version in /etc/init/selenium.conf
 |  | 
|  | # Start the Selenium hub by running <code>sudo initctl start selenium</code>
 |  | 
|  | # Verify the hub and node versions on the [http://selenium-hub1.qa.scl3.mozilla.com:4444/grid/console Selenium hub console]
 |  | 
|  | # [https://webqa-ci.mozilla.com/cancelQuietDown Cancel the Jenkins shutdown]
 |  | 
|  |   |  | 
|  | === Housekeeping ===
 |  | 
|  | # Reset moz-grid-config on the staging nodes by running <code>git reset --hard HEAD</code>
 |  | 
|  | # Pull in the official changes by running <code>git pull</code>
 |  | 
|  |   |  | 
|  | == Updating Firefox ==
 |  | 
|  | Follow these steps to upgrade the version of Firefox used by Selenium.
 |  | 
|  |   |  | 
|  | === Update staging instance ===
 |  | 
|  | # If you're not on a Mozilla office network, connect to the [https://mana.mozilla.org/wiki/display/SD/VPN Mozilla VPN]
 |  | 
|  | # [http://webqa-ci-staging1.qa.scl3.mozilla.com:8080/login Log in to Jenkins]
 |  | 
|  | # [http://webqa-ci-staging1.qa.scl3.mozilla.com:8080/quietDown Prepare Jenkins for shutdown]
 |  | 
|  | # Wait until no jobs are running
 |  | 
|  | # Connect to selenium-staging1.qa.scl3.mozilla.com using RDP
 |  | 
|  | # Stop the Selenium node by hitting Ctrl+C in the terminal window
 |  | 
|  | # Install the new version of Firefox (see previous section above)
 |  | 
|  | # Update the Firefox versions in <code>C:\Users\mozauto\moz-grid-config\win7.json</code>
 |  | 
|  | # Start the Selenium server by running <code>ant -autoproxy -Denv=staging -Dnode.host=IP</code>
 |  | 
|  | # Connect to selenium-mac3.qa.scl3.mozilla.com using VNC
 |  | 
|  | # Stop the Selenium node by hitting Ctrl+C in the terminal window
 |  | 
|  | # Install the new version of Firefox (see previous section above)
 |  | 
|  | # Update the Firefox versions in <code>/Users/webqa/moz-grid-config/mac.json</code>
 |  | 
|  | # Start the Selenium server by running <code>ant -Denv=staging</code>
 |  | 
|  | # [http://webqa-ci-staging1.qa.scl3.mozilla.com:8080/cancelQuietDown Cancel the Jenkins shutdown]
 |  | 
|  |   |  | 
|  | === Test staging instance ===
 |  | 
|  | Run tests against the staging instance. You can do this locally by pointing your tests at host selenium-hub1.qa.scl3.mozilla.com and port 4444, or you can run tests via the [http://webqa-ci-staging1.qa.scl3.mozilla.com:8080/ staging Jenkins instance]. For convenience, there is a job named [http://webqa-ci-staging1.qa.scl3.mozilla.com:8080/job/grid.sanity/ grid.sanity] that will run a variety of tests against both the Windows and OS X platforms. Be sure to override the Firefox version to match the version you've just installed.
 |  | 
|  |   |  | 
|  | === Update moz-grid-config ===
 |  | 
|  | Once testing is finished and we're satisfied that there are no regressions, submit a pull request for [https://github.com/mozilla/moz-grid-config moz-grid-config] that changes the Firefox versions. This will need a review from a team member before it gets merged.
 |  | 
|  |   |  | 
|  | === Update production instance ===
 |  | 
|  | # [https://webqa-ci.mozilla.com/login Login to Jenkins]
 |  | 
|  | # [https://webqa-ci.mozilla.com/quietDown Prepare Jenkins for shutdown]
 |  | 
|  | # Wait until no jobs are running
 |  | 
|  | # Connect to selenium1.qa.scl3.mozilla.com using RDP
 |  | 
|  | # Stop the Selenium node by hitting Ctrl+C in the terminal window
 |  | 
|  | # Install the new version of Firefox (see previous section above)
 |  | 
|  | # Pull down the latest moz-grid-config changes by running <code>git pull</code>
 |  | 
|  | # Start the Selenium server by running <code>ant -autoproxy -Denv=production</code>
 |  | 
|  | # Repeat steps 4-8 on selenium2, selenium3, selenium4, selenium5, and selenium6
 |  | 
|  | # Connect to selenium-mac1.qa.scl3.mozilla.com using VNC
 |  | 
|  | # Stop the Selenium node by hitting Ctrl+C in the terminal window
 |  | 
|  | # Install the new version of Firefox (see previous section above)
 |  | 
|  | # Pull down the latest moz-grid-config changes by running <code>git pull</code>
 |  | 
|  | # Start the Selenium server by running <code>ant -Denv=production</code>
 |  | 
|  | # Repeat steps 10-14 on selenium-mac2
 |  | 
|  | # [https://webqa-ci.mozilla.com/cancelQuietDown Cancel the Jenkins shutdown]
 |  | 
|  | # Update the <code>DEFAULT_FIREFOX_VERSION</code> environment variable in the [https://webqa-ci.mozilla.com/configure Jenkins configuration]
 |  | 
|  |   |  | 
|  | === Housekeeping ===
 |  | 
|  | # Reset moz-grid-config on the staging nodes by running <code>git reset --hard HEAD</code>
 |  | 
|  | # Pull in the official changes by running <code>git pull</code>
 |  | 
|  | # Update the <code>DEFAULT_BROWSER_VERSION</code> environment variable in the staging [https://webqa-ci-stage1.qa.scl3.mozilla.com/configure Jenkins configuration]
 |  |