|
|
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 are running 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 using Remote 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 a pull 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 Grid hub
| |
| # 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]
| |