Bug 608393 Update Mozmill on mozilla central to 1.5.1 rc2 r=jhammel a=NPOTB

--HG--
extra : rebase_source : c1d58027a8f218457efcf77a6ae3c09c7f9a4d30
This commit is contained in:
Clint Talbert 2010-11-01 14:52:08 -07:00
parent 033e8e2dad
commit 0aa8b680c1
10 changed files with 48 additions and 202 deletions

View File

@ -4,7 +4,7 @@
<Description about="urn:mozilla:install-manifest">
<em:id>jsbridge@mozilla.com</em:id>
<em:name>jsbridge</em:name>
<em:version>2.4.1</em:version>
<em:version>2.4.1rc2</em:version>
<em:creator>Mikeal Rogers</em:creator>
<em:description>Python to JavaScript bridge</em:description>
<em:targetApplication>

View File

@ -42,9 +42,9 @@ desc = """Python to JavaScript bridge interface."""
summ = """A powerful and extensible Python to JavaScript bridge interface."""
PACKAGE_NAME = "jsbridge"
PACKAGE_VERSION = "2.4.1"
PACKAGE_VERSION = "2.4.1rc2"
requires = ['mozrunner == 2.5.2']
requires = ['mozrunner == 2.5.2rc2']
if not sys.version.startswith('2.6'):
requires.append('simplejson')

View File

@ -769,11 +769,12 @@ class CLI(jsbridge.CLI):
self.mozmill.report_disconnect()
print 'TEST-UNEXPECTED-FAIL | Disconnect Error: Application unexpectedly closed'
# shutdown the test harness
self.mozmill.stop(fatal=disconnected)
# print statistics and send the JSON report
self.mozmill.report(self.options.report)
# shutdown the test harness
self.mozmill.stop(fatal=disconnected)
if self.mozmill.fails or disconnected:
sys.exit(1)
else:

View File

@ -4,7 +4,7 @@
<Description about="urn:mozilla:install-manifest">
<em:id>mozmill@mozilla.com</em:id>
<em:name>MozMill</em:name>
<em:version>1.5.1</em:version>
<em:version>1.5.1rc2</em:version>
<em:creator>Adam Christian</em:creator>
<em:description>A testing extension based on the Windmill Testing Framework client source</em:description>
<em:targetApplication>

View File

@ -94,14 +94,20 @@ function initialize() {
var observerService = Cc["@mozilla.org/observer-service;1"].
getService(Ci.nsIObserverService);
observerService.addObserver(windowObserver, "toplevel-window-ready", false);
// Attach event listeners to all open windows
var enumerator = Cc["@mozilla.org/appshell/window-mediator;1"].
getService(Ci.nsIWindowMediator).getEnumerator("");
while (enumerator.hasMoreElements()) {
attachEventListeners(enumerator.getNext());
var win = enumerator.getNext();
attachEventListeners(win);
// For windows or dialogs already open we have to explicitly set the property
// otherwise windows which load really quick never gets the property set and
// we fail to create the controller
win.documentLoaded = true;
};
}
initialize();

View File

@ -368,15 +368,21 @@ function setPreference(aName, aValue) {
/**
* Sleep for the given amount of milliseconds
*
* @param {number} milliseconds
* Sleeps the given number of milliseconds
*/
function sleep(milliseconds) {
var self = {init: false};
// We basically just call this once after the specified number of milliseconds
var timeup = false;
function wait() { timeup = true; }
hwindow.setTimeout(wait, milliseconds);
waitFor(function() {
var init = self.init;
self.init = !init;
return init;
}, "The sleep call should never fail", (milliseconds + 1000), milliseconds);
var thread = Components.classes["@mozilla.org/thread-manager;1"].
getService().currentThread;
while(!timeup) {
thread.processNextEvent(true);
}
}
/**

View File

@ -41,7 +41,7 @@ desc = """UI Automation tool for Mozilla applications."""
summ = """A tool for full UI automation of Mozilla applications."""
PACKAGE_NAME = "mozmill"
PACKAGE_VERSION = "1.5.1"
PACKAGE_VERSION = "1.5.1rc2"
setup(name=PACKAGE_NAME,
version=PACKAGE_VERSION,
@ -61,7 +61,7 @@ setup(name=PACKAGE_NAME,
mozmill-restart = mozmill:restart_cli
""",
platforms =['Any'],
install_requires = ['jsbridge == 2.4.1', 'mozrunner == 2.5.2'],
install_requires = ['jsbridge == 2.4.1rc2', 'mozrunner == 2.5.2rc2'],
classifiers=['Development Status :: 4 - Beta',
'Environment :: Console',
'Intended Audience :: Developers',

View File

@ -236,18 +236,23 @@ GetCurrentProcess = GetCurrentProcessProto(
GetCurrentProcess.errcheck = ErrCheckHandle
# IsProcessInJob()
IsProcessInJobProto = WINFUNCTYPE(BOOL, # Return type
HANDLE, # Process Handle
HANDLE, # Job Handle
LPBOOL # Result
)
IsProcessInJobFlags = ((1, "ProcessHandle"),
(1, "JobHandle", HANDLE(0)),
(2, "Result"))
IsProcessInJob = IsProcessInJobProto(
("IsProcessInJob", windll.kernel32),
IsProcessInJobFlags)
IsProcessInJob.errcheck = ErrCheckBool
try:
IsProcessInJobProto = WINFUNCTYPE(BOOL, # Return type
HANDLE, # Process Handle
HANDLE, # Job Handle
LPBOOL # Result
)
IsProcessInJobFlags = ((1, "ProcessHandle"),
(1, "JobHandle", HANDLE(0)),
(2, "Result"))
IsProcessInJob = IsProcessInJobProto(
("IsProcessInJob", windll.kernel32),
IsProcessInJobFlags)
IsProcessInJob.errcheck = ErrCheckBool
except AttributeError:
# windows 2k doesn't have this API
def IsProcessInJob(process):
return False
# ResumeThread()

View File

@ -42,7 +42,7 @@ desc = """Reliable start/stop/configuration of Mozilla Applications (Firefox, Th
summ = """Reliable start/stop/configuration of Mozilla Applications (Firefox, Thunderbird, etc.)"""
PACKAGE_NAME = "mozrunner"
PACKAGE_VERSION = "2.5.2"
PACKAGE_VERSION = "2.5.2rc2"
deps = []

View File

@ -1,172 +0,0 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is MozMill Test code.
*
* The Initial Developer of the Original Code is Mozilla Foundation.
* Portions created by the Initial Developer are Copyright (C) 2009
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Henrik Skupin <hskupin@mozilla.com>
* Aaron Train <atrain@mozilla.com>
* Anthony Hughes <ahughes@mozilla.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
// Include necessary modules
const RELATIVE_ROOT = '../../shared-modules';
const MODULE_REQUIRES = ['PrivateBrowsingAPI', 'TabbedBrowsingAPI', 'UtilsAPI'];
const TIMEOUT = 5000;
const LOCAL_TEST_FOLDER = collector.addHttpResource('../test-files/');
const LOCAL_TEST_PAGES = [
{url: LOCAL_TEST_FOLDER + 'layout/mozilla.html', id: 'community'},
{url: 'about:', id: 'aboutPageList'}
];
var setupModule = function() {
controller = mozmill.getBrowserController();
modifier = controller.window.document.documentElement.
getAttribute("titlemodifier_privatebrowsing");
// Create Private Browsing instance and set handler
pb = new PrivateBrowsingAPI.privateBrowsing(controller);
pb.handler = pbStartHandler;
TabbedBrowsingAPI.closeAllTabs(controller);
}
var teardownModule = function() {
pb.reset();
}
/**
* Enable Private Browsing Mode
*/
var testEnablePrivateBrowsingMode = function() {
// Make sure we are not in PB mode and show a prompt
pb.enabled = false;
pb.showPrompt = true;
// Open websites in separate tabs
var newTab = new elementslib.Elem(controller.menus['file-menu'].menu_newNavigatorTab);
for each (var page in LOCAL_TEST_PAGES) {
controller.open(page.url);
controller.waitForPageLoad();
controller.click(newTab);
}
// Start the Private Browsing mode
pb.start();
// Check that only one tab is open
controller.assertJS("subject.isOnlyOneTab == true",
{isOnlyOneTab: controller.tabs.length == 1});
// Title modifier should have been set
controller.assertJS("subject.hasTitleModifier == true",
{hasTitleModifier: controller.window.document.
title.indexOf(modifier) != -1});
// Check descriptions on the about:privatebrowsing page
var description = UtilsAPI.getEntity(pb.getDtds(), "privatebrowsingpage.description");
var learnMore = UtilsAPI.getEntity(pb.getDtds(), "privatebrowsingpage.learnMore");
var longDescElem = new elementslib.ID(controller.tabs.activeTab, "errorLongDescText");
var moreInfoElem = new elementslib.ID(controller.tabs.activeTab, "moreInfoLink");
controller.waitForElement(longDescElem, TIMEOUT);
controller.assertText(longDescElem, description);
controller.assertText(moreInfoElem, learnMore);
}
/**
* Stop the Private Browsing mode
*/
var testStopPrivateBrowsingMode = function() {
// Force enable Private Browsing mode
pb.enabled = true;
// Stop Private Browsing mode
pb.stop();
// All tabs should be restored
controller.assertJS("subject.allTabsRestored == true",
{allTabsRestored: controller.tabs.length == LOCAL_TEST_PAGES.length + 1});
for (var i = 0; i < LOCAL_TEST_PAGES.length; i++) {
controller.waitForPageLoad(controller.tabs.getTab(i));
var elem = new elementslib.ID(controller.tabs.getTab(i), LOCAL_TEST_PAGES[i].id);
controller.assertNode(elem);
}
// No title modifier should have been set
controller.assertJS("subject.noTitleModifier == true",
{noTitleModifier: controller.window.document.
title.indexOf(modifier) == -1});
}
/**
* Verify Ctrl/Cmd+Shift+P keyboard shortcut for Private Browsing mode
*/
var testKeyboardShortcut = function() {
// Make sure we are not in PB mode and show a prompt
pb.enabled = false;
pb.showPrompt = true;
// Start the Private Browsing mode via the keyboard shortcut
pb.start(true);
// Stop the Private Browsing mode via the keyboard shortcut
pb.stop(true);
}
/**
* Handle the modal dialog to enter the Private Browsing mode
*
* @param {MozMillController} controller
* MozMillController of the window to operate on
*/
var pbStartHandler = function(controller) {
// Check to not ask anymore for entering Private Browsing mode
var checkbox = new elementslib.ID(controller.window.document, 'checkbox');
controller.waitThenClick(checkbox, TIMEOUT);
var okButton = new elementslib.Lookup(controller.window.document,
'/id("commonDialog")' +
'/anon({"anonid":"buttons"})' +
'/{"dlgtype":"accept"}');
controller.click(okButton);
}
/**
* Map test functions to litmus tests
*/
// testEnablePrivateBrowsingMode.meta = {litmusids : [9154]};
// testStopPrivateBrowsingMode.meta = {litmusids : [9155]};
// testKeyboardShortcut.meta = {litmusids : [9186]};