Firefox Updates Testing

This page needs a technical review from the Mozilla QA Team in Q4 2014. (Assigned to Marc Schifer.) This article has been created from this page from QMO: Firefox Updates Testing

This document is meant to explain how we test updates and how you can set up your test environment to test updates.

Update Channels

Update Channels are used to tell Firefox where to check for updates. We use four different channels at different stages of update testing and for different types of testers.

beta

This is the default channel used by "beta" versions of Firefox

nightly

This is the default channel used by "nightly" versions of Firefox

release

This is the default channel used by Firefox releases and release candidates

beta-cdntest

This is the channel used by QA to test updates before they are pushed live to the beta channel

release-cdntest

This is the channel used by QA to test updates before they are pushed live to the release channel

To change which channel you want Firefox to use, look for a file called channel-prefs.js and open it with a text editor. You can find this file in one of the following locations (depending on your operating system):

Windows

{location of Firefox}\defaults\pref\channel-prefs.js

Mac

{location of Firefox}/Firefox.app/Contents/Resources/defaults/pref/channel-prefs.js

Linux

{location of Firefox}/defaults/pref/channel-prefs.js

The file will contain the line pref("app.update.channel", "release"); Change "release" to the channel you want to test.

Update Types

There are two types of updates which can be performed.

major

This type of update is from a previous major release of Firefox to the next major release of Firefox. For example, Firefox 33.0 to Firefox 33.1.

minor

This type of update is to a minor release of Firefox from the same major release. For example, Firefox 33.1 to Firefox 34.

 

Patch Types

There are two different types of update patches which you will hear about while update testing.

partial

This type of update patch only contains the changes between the old version of Firefox and the new version of Firefox. Partial update patches are usually only created for minor updates between the current minor release and the next minor release (e.g. Firefox 3.5.6 to Firefox 3.5.7). Partial update patches are smaller than complete update patches (see below).

complete

This type of update patch contains all of the files of the new version of Firefox. Complete update patches are typically only used when updating to a new major release of Firefox (e.g. Firefox 3.0.11 to Firefox 3.5.7) or when updating from a minor release which is not the previous minor release. (e.g. Firefox 3.5.5 to Firefox 3.5.7). Complete update patches are similar in size to the full download of Firefox.

Forcing Update Failure

There are times when we may want to test that update paths still work even in the face of a failure (also known as a fallbackupdate). We typically check that all updates work with a failure. For example, we will often test partial+fallback and complete+fallback for every release. This ensures that even users who experience a failed update will still be offered an update. In the case of a partial+fallback, a complete update should be offered upon failure. To instigate a failure use the following steps:

1. Click Help menu > Check for Updates 2. Click "Update Firefox" 3. When you see the "Update Ready to Install" dialog, click "Restart Later" 4. Close Firefox 5. Open update.status in a text editor and change "pending" to "failed: 6", make sure you insert a new line (press ENTER) after changing the value (see Locations of update.status below) 6. Save the file, close the text editor, close the Explorer window and open Firefox

NOTE: update.status, text editor, and any Explorer windows must be closed on Windows prior to updating Firefox. Failure to do so may result in the file being locked by Windows.

7. At this point you should be presented with an "Update Failed" dialog. Click "Continue" to get the complete update and restart Firefox. 8. When Firefox restarts, type "about:" into the location bar and press ENTER. Use this page to confirm the version was updated.

Locations of update.status

Windows

{location of Firefox}\updates\0\update.status

Mac

{location of Firefox}/Firefox.app/Contents/MacOS/updates/0/update.status

Linux

{location of Firefox}/updates/0/updates.status

Complete Update

The following is the steps required to do a complete and successful update.

1. Click Help menu > Check for Updates 2. Click "Update Firefox" 3. When you see the "Update Ready to Install" dialog, click "Restart Now" 4. When Firefox restarts, type "about:" into the location bar and press ENTER. Use this page to confirm the version was updated.

 

Automated update tests

Automated tests for many platforms and locales are run using Jenkins and Mozmill. The reports from these tests are accessible on the Mozilla Daily Results Dashboard.  Bugs in Mozmill tests can be reported in Bugzilla under Mozilla QA::Mozmill Tests. If you have questions about the automated update tests, or any update failures you notice in the daily results, please ask on irc in #automation.

Debugging Software Update

There are times when you may want to enable software update debugging. For example, when you are checking for an update which should exist but Firefox cannot seem to find the update. To enable debugging, do the following:

1. Type "about:config" in the location bar and press ENTER

2. Click "I'll be careful, I promise!"

3. Right click in the list of preferences and select New > Boolean

4. Type "app.update.log.all" as the preference name and give it a value of "true"

Note: Use "app.update.log" in Firefox 3.6 or newer

5. Type "app.update.log" in the Filter textbox to verify the pref has been added

Note: Use "app.update.log" in Firefox 3.6 or newer

Whenever you check for updates, an entry should appear in the Browser Console (Developer menu > Browser Console). If the value is "<update></update>" it means no update was found. If an update should have been found, file a bug.

Original document information

  • Author(s): Aakash Desai
  • Date last modified: June 20, 2014 at 8:50 am PST

 

Document Tags and Contributors

 Contributors to this page: lizhenry, mwargers, pragmatic
 Last updated by: lizhenry,