QA/Execution/Web Testing/Automation/Selenium Grid: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Replaced content with "Since November 2016, we are no longer actively using or maintaining a Selenium Grid instance.")
 
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]

Latest revision as of 15:10, 1 November 2016

Since November 2016, we are no longer actively using or maintaining a Selenium Grid instance.