|
|
(10 intermediate revisions by one other user not shown) |
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 data-center:
| |
| * '''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 [http://msysgit.github.io msysgit] 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 37.0 -d firefox.dmg
| |
| mozinstall -d /tmp firefox.dmg
| |
| mv /tmp/Firefox.app/ "/Applications/Firefox 37.app/"
| |
| rm firefox.dmg
| |
| | |
| === Windows ===
| |
| From a command prompt:
| |
| | |
| mozdownload -v 37.0 -p win32 -d firefox.exe
| |
| mozinstall -d %TMP% firefox.exe
| |
| move %TMP%\firefox\core "\Program Files (x86)\Mozilla Firefox 37"
| |
| del firefox.exe
| |
| | |
| == Setting hostname on Mac OS X ==
| |
| Shamelessly copied from http://budporter.net/?p=47
| |
| | |
| If you are running a version of OSX prior to 10.5, then look in '''/etc/hostconfig''' for the '''HOSTNAME=''' parameter and set it to be the FQDN (Fully Qualified Domain Name) that you want to use. So, for host ''foo'' located in the domain ''bar.com'', the entry would be as follows:
| |
| | |
| HOSTNAME=foo.bar.com
| |
| | |
| For OSX 10.5, '''/etc/hostconfig''' is being deprecated. There are a couple of preferred methods to do this in 10.5:
| |
| | |
| sudo hostname -s foo.bar.com
| |
| | |
| or:
| |
| | |
| sudo scutil –set HostName foo.bar.com
| |
| | |
| You can verify the change by issuing the following command:
| |
| | |
| hostname
| |
| | |
| The output will display the FQDN of the computer.
| |
| | |
| == 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.52/selenium-server-standalone-2.52.0.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-hub1.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 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
| |
| # 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.52/selenium-server-standalone-2.52.0.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 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
| |
| # 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]
| |