mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-26 22:32:46 +00:00
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:
parent
033e8e2dad
commit
0aa8b680c1
@ -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>
|
||||
|
@ -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')
|
||||
|
@ -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:
|
||||
|
@ -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>
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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',
|
||||
|
@ -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()
|
||||
|
@ -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 = []
|
||||
|
||||
|
@ -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]};
|
Loading…
Reference in New Issue
Block a user