You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
662 lines
24 KiB
662 lines
24 KiB
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" |
|
"http://www.w3.org/TR/html4/strict.dtd"> |
|
<html> |
|
<head> |
|
<title>robot Menu Mouse Tests</title> |
|
|
|
<style> |
|
@import "../../../util/doh/robot/robot.css"; |
|
</style> |
|
|
|
<!-- required: dojo.js --> |
|
<script type="text/javascript" src="../../../dojo/dojo.js"></script> |
|
|
|
<script type="text/javascript"> |
|
require([ |
|
"doh/runner", "dojo/robotx", |
|
"dojo/dom", "dojo/dom-class", "dojo/dom-geometry", "dojo/keys", |
|
"dijit/tests/helpers", "dojo/domReady!" |
|
], function(doh, robot, dom, domClass, domGeom, keys, helpers){ |
|
|
|
robot.initRobot('../test_Menu.html'); |
|
|
|
doh.register(function setup(){ |
|
// get pointer to registry in the iframe |
|
registry = robot.window.require("dijit/registry"); |
|
}); |
|
|
|
doh.register("dijit.MenuBar mouse tests", [ |
|
|
|
{ |
|
name: "mouse over file MenuBarItem", |
|
timeout: 4000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
// Check initial conditions |
|
doh.f(domClass.contains("file", "dijitMenuItemHover"), "File MenuBarItem doesn't have hover effect"); |
|
doh.t(helpers.isHidden("fileMenu"), "File menu is hidden"); |
|
|
|
// Move over the File MenuBarItem |
|
robot.mouseMoveAt("file", 500, 1000); |
|
|
|
robot.sequence(d.getTestCallback(function(){ |
|
// The "File" MenuBarItem should be highlighted |
|
doh.t(domClass.contains("file", "dijitMenuItemHover"), |
|
"File MenuBarItem should have hover effect, actual class is: " + dom.byId("file").className); |
|
|
|
// However, just moving over the MenuBarItem shouldn't have opened the menu |
|
doh.t(helpers.isHidden("fileMenu"), "File menu is hidden"); |
|
}), 1000); // 1000ms == give IE time to make that background iframe |
|
|
|
return d; |
|
} |
|
}, |
|
|
|
{ |
|
name: "click on file MenuBarItem", |
|
timeout: 4000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
// click the File MenuBarItem |
|
robot.mouseMoveAt("file", 500, 1); |
|
robot.mouseClick({left: true}, 500); |
|
|
|
robot.sequence(d.getTestCallback(function(){ |
|
// The "File" MenuBarItem should have the selected class in addition to the hover |
|
// class |
|
doh.t(domClass.contains("file", "dijitMenuItemHover"), |
|
"File MenuBarItem should have hover effect, actual class is: " + dom.byId("file").className); |
|
doh.t(domClass.contains("file", "dijitMenuItemSelected"), |
|
"File MenuBarItem should have selected class, actual class is: " + dom.byId("file").className); |
|
|
|
// And the file menu should be visible |
|
doh.t(helpers.isVisible("fileMenu"), "File menu is visible"); |
|
|
|
// But the first item in the file menu should not be selected, since we opened via mouse not keyboard (#10716) |
|
doh.f(domClass.contains("new", "dijitMenuItemSelected"), |
|
"New MenuItem should not have selected class, actual class is: " + dom.byId("new").className); |
|
}), 1000); |
|
|
|
return d; |
|
} |
|
}, |
|
|
|
{ |
|
name: "hover edit menu item", |
|
timeout: 4000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
robot.mouseMoveAt("edit", 500, 500); |
|
|
|
robot.sequence(d.getTestCallback(function(){ |
|
// Since we've already activated the MenuBar by clicking "File", |
|
// hovering over "Edit" should automatically show the edit menu |
|
doh.t(helpers.isVisible("editMenu"), "Edit menu is visible"); |
|
|
|
// And also, the file menu should have disappeared |
|
doh.t(helpers.isHidden("fileMenu"), "File menu is hidden"); |
|
}), 500); |
|
|
|
return d; |
|
} |
|
}, |
|
|
|
{ |
|
name: "move to copy", |
|
timeout: 4000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
robot.mouseMoveAt("copy", 500, 500); |
|
|
|
robot.sequence(d.getTestCallback(function(){ |
|
doh.f(domClass.contains("edit", "dijitMenuItemHover"), |
|
"Edit MenuBarItem shouldn't have hover effect anymore, actual class is: " + dom.byId("edit").className); |
|
doh.t(domClass.contains("edit", "dijitMenuItemSelected"), |
|
"Edit MenuBarItem should still have selected class, actual class is: " + dom.byId("edit").className); |
|
|
|
doh.t(domClass.contains("copy", "dijitMenuItemHover"), |
|
"Copy Menu item should have hover effect, actual class is: " + dom.byId("copy").className); |
|
doh.t(domClass.contains("copy", "dijitMenuItemSelected"), |
|
"Copy Menu item should have selected effect, actual class is: " + dom.byId("copy").className); |
|
}), 500); |
|
|
|
return d; |
|
} |
|
}, |
|
|
|
{ |
|
name: "click copy", |
|
timeout: 2000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
var w = registry.byId("copy"); |
|
var orig = w.onClick; |
|
w.onClick = d.getTestCallback(function(){ |
|
w.onClick = orig; |
|
doh.t(helpers.isHidden("editMenu"), "edit menu disappeared"); |
|
doh.f(domClass.contains("edit", "dijitMenuItemSelected"), |
|
"Edit MenuBarItem should no longer have selected effect, actual class is: " + dom.byId("edit").className); |
|
}); |
|
|
|
robot.mouseClick({left: true}, 1); |
|
|
|
return d; |
|
} |
|
}, |
|
|
|
{ |
|
name: "mouse over file MenuBarItem again", |
|
timeout: 4000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
// Check initial conditions |
|
doh.f(domClass.contains("file", "dijitMenuItemHover"), "File MenuBarItem doesn't have hover effect"); |
|
doh.t(helpers.isHidden("fileMenu"), "File menu is hidden"); |
|
|
|
// Move over the File MenuBarItem |
|
robot.mouseMoveAt("file", 500, 500); |
|
|
|
robot.sequence(d.getTestCallback(function(){ |
|
// The "File" MenuBarItem should be highlighted |
|
doh.t(domClass.contains("file", "dijitMenuItemHover"), |
|
"File MenuBarItem should have hover effect, actual class is: " + dom.byId("file").className); |
|
|
|
// However, it shouldn't be "selected", and |
|
// just moving over the MenuBarItem shouldn't have opened the menu, |
|
// given that after clicking above, the MenuBar should have reverted to it's |
|
// "dormant" state so that it needs to be clicked again before menus show up automatically |
|
doh.f(domClass.contains("file", "dijitMenuItemSelected"), |
|
"File MenuBarItem shouldn't have selected effect, actual class is: " + dom.byId("file").className); |
|
doh.t(helpers.isHidden("fileMenu"), "File menu is hidden"); |
|
}), 500); |
|
|
|
return d; |
|
} |
|
} |
|
]); |
|
|
|
|
|
doh.register("Navigation menu mouse tests", [ |
|
|
|
{ |
|
name: "mouse over enabled submenu", |
|
timeout: 4000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
// Check initial conditions |
|
doh.f(domClass.contains("navMenuPopupItem1", "dijitMenuItemHover"), "navMenuPopupItem1 MenuItem doesn't have hover effect"); |
|
doh.t(helpers.isHidden("navMenuSub1"), "sub menu is hidden"); |
|
|
|
robot.mouseMoveAt("navMenuPopupItem1", 500, 500); |
|
|
|
robot.sequence(d.getTestCallback(function(){ |
|
// The "enabled submenu" MenuItem should be highlighted |
|
doh.t(domClass.contains("navMenuPopupItem1", "dijitMenuItemHover"), |
|
"'Enabled Submenu' MenuItem should have hover effect, actual class is: " + dom.byId("navMenuPopupItem1").className); |
|
|
|
// However, just moving over the MenuItem shouldn't have opened the menu |
|
doh.t(helpers.isHidden("navMenuSub1"), "sub menu is hidden"); |
|
}), 500); |
|
|
|
return d; |
|
} |
|
}, |
|
|
|
{ |
|
name: "open submenu", |
|
timeout: 4000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
robot.mouseClick({left: true}, 500); |
|
|
|
robot.sequence(d.getTestCallback(function(){ |
|
doh.t(domClass.contains("navMenuPopupItem1", "dijitMenuItemHover"), |
|
"'Enabled Submenu' MenuItem should have hover effect, actual class is: " + dom.byId("navMenuPopupItem1").className); |
|
doh.t(domClass.contains("navMenuPopupItem1", "dijitMenuItemSelected"), |
|
"'Enabled Submenu' MenuItem should have selected effect, actual class is: " + dom.byId("navMenuPopupItem1").className); |
|
|
|
// And the sub menu should be visible |
|
doh.t(helpers.isVisible("navMenuSub1"), "sub menu is visible"); |
|
|
|
// But the first item in the sub menu should be selected, since opened by mouse, see #10716 |
|
doh.f(domClass.contains("navMenuSub1_item1", "dijitMenuItemSelected"), |
|
"first item in sub menu should have selected class, actual class is: " + dom.byId("new").className); |
|
}), 1000); |
|
|
|
return d; |
|
} |
|
}, |
|
|
|
{ |
|
name: "toggle CheckedMenuItem", |
|
timeout: 3000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
doh.f(registry.byId("checked2").get('checked'), "not initially checked"); |
|
|
|
robot.mouseMoveAt("checked2", 500, 1); |
|
robot.mouseClick({left: true}, 500); |
|
|
|
robot.sequence(d.getTestCallback(function(){ |
|
doh.t(registry.byId("checked2").get('checked'), "now it's checked"); |
|
}), 500); |
|
|
|
return d; |
|
} |
|
} |
|
]); |
|
|
|
doh.register("Context menu mouse tests", [ |
|
{ |
|
name: "open global context menu (mouse)", |
|
timeout: 4000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
var menu = registry.byId("windowContextMenu"); |
|
|
|
doh.t(helpers.isHidden(menu), "menu should be initially hidden"); |
|
|
|
// click random point on screen |
|
robot.mouseMoveAt("input", 500, 500); |
|
robot.mouseClick({right: true}, 500); |
|
|
|
robot.sequence(d.getTestCallback(function(){ |
|
doh.t(helpers.isVisible(menu), "menu is now shown"); |
|
|
|
var inputCoords = domGeom.position("input"); |
|
menuCoords = domGeom.position(menu.domNode); |
|
|
|
doh.t(menuCoords.x > inputCoords.x, "to right of link left edge"); |
|
doh.t(menuCoords.x < inputCoords.x + inputCoords.w, "to left of link right edge"); |
|
doh.t(menuCoords.y > inputCoords.y, "menu (" + menuCoords.y + ") starts below top of link (" + inputCoords.y + ")"); |
|
doh.t(menuCoords.y < inputCoords.y + inputCoords.h, "menu (" + menuCoords.y + ") starts above bottom of link (" + inputCoords.y + "+" + inputCoords.h + ")"); |
|
|
|
doh.f(domClass.contains("windowContextMenuFirstChoice", "dijitMenuItemSelected"), "first choice not marked as selected"); |
|
}), 1000); |
|
|
|
return d; |
|
} |
|
}, |
|
|
|
{ |
|
name: "close global context menu (mouse)", |
|
timeout: 4000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
var menu = registry.byId("windowContextMenu"); |
|
|
|
// close menu from above test |
|
robot.mouseMove(2, 2, 100); |
|
robot.mouseClick({left: true}, 100); |
|
|
|
robot.sequence(d.getTestCallback(function(){ |
|
doh.t(helpers.isHidden(menu), "menu should be hidden again"); |
|
}), 500); |
|
|
|
return d; |
|
} |
|
}, |
|
|
|
{ |
|
name: "open context menu over form widget (mouse)", |
|
timeout: 5000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
var menu = registry.byId("windowContextMenu"); |
|
|
|
doh.t(helpers.isHidden(menu), "menu should be initially hidden"); |
|
|
|
// right-click on form widget |
|
robot.mouseMoveAt("formwidget", 500, 1); |
|
robot.mouseClick({right: true}, 500); |
|
|
|
robot.sequence(d.getTestCallback(function(){ |
|
doh.t(helpers.isVisible(menu), "menu is now shown"); |
|
|
|
var widgetCoords = domGeom.position("formwidget"); |
|
menuCoords = domGeom.position(menu.domNode); |
|
|
|
doh.t(((menuCoords.x > widgetCoords.x) && (menuCoords.x < (widgetCoords.x + widgetCoords.w))) || |
|
(((menuCoords.x + menuCoords.w) > widgetCoords.x) && ((menuCoords.x + menuCoords.w) < (widgetCoords.x + widgetCoords.w))), |
|
"begins or ends within the form widget horizontal boundaries"); |
|
doh.t(((menuCoords.y > widgetCoords.y) && (menuCoords.y < (widgetCoords.y + widgetCoords.h))) || |
|
(((menuCoords.y + menuCoords.h) > widgetCoords.y) && ((menuCoords.y + menuCoords.h) < (widgetCoords.y + widgetCoords.h))), |
|
"begins or ends within the form widget vertical boundaries"); |
|
|
|
var cm = dom.byId("windowContextMenu"); |
|
doh.is("region", cm.parentNode.getAttribute("role"), "context menu's wrapper node needs role=region"); |
|
doh.is("windowContextMenu", cm.parentNode.getAttribute("aria-label"), "menu's wrapper node needs aria-label"); |
|
}), 1000); |
|
|
|
return d; |
|
} |
|
}, |
|
|
|
{ |
|
name: "close form widget context menu (mouse)", |
|
timeout: 4000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
var menu = registry.byId("windowContextMenu"); |
|
|
|
// close menu from above test |
|
robot.mouseMove(2, 2, 100); |
|
robot.mouseClick({left: true}, 100); |
|
|
|
robot.sequence(d.getTestCallback(function(){ |
|
doh.t(helpers.isHidden(menu), "menu should be hidden again"); |
|
}), 1000); |
|
|
|
return d; |
|
} |
|
} |
|
]); |
|
|
|
doh.register("Left click menu mouse test", { |
|
name: "open left click context menu", |
|
timeout: 5000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
robot.mouseMoveAt("input2", 500, 1); |
|
robot.mouseClick({left: true}, 500); |
|
|
|
robot.sequence(d.getTestErrback(function(){ |
|
var menu = registry.byId("leftClickContextMenu"); |
|
doh.t(helpers.isVisible(menu), "menu is now shown"); |
|
|
|
// close menu |
|
robot.mouseMove(2, 2, 100); |
|
robot.mouseClick({left: true}, 100); |
|
|
|
robot.sequence(d.getTestCallback(function(){ |
|
doh.t(helpers.isHidden(menu), "menu disappeared"); |
|
}), 1000); |
|
}), 1000); |
|
|
|
return d; |
|
} |
|
}); |
|
|
|
doh.register("More MenuBar mouse tests", [ |
|
{ |
|
name: "MenuBar selection and cancellation", |
|
timeout: 15000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
robot.mouseMoveAt("file", 500, 1000); |
|
robot.mouseClick({left: true}, 500); // click File |
|
robot.sequence(d.getTestErrback(function(){ |
|
doh.t(helpers.isVisible("fileMenu"), "File menu should be visible #1"); |
|
}), 1000); |
|
|
|
robot.mouseClick({left: true}, 500); // close File menu |
|
robot.mouseMoveAt("edit", 500, 500); |
|
|
|
robot.sequence(d.getTestErrback(function(){ |
|
doh.t(helpers.isHidden("fileMenu"), "File menu is hidden #1"); |
|
doh.t(helpers.isHidden("editMenu"), "Edit menu is hidden #1"); |
|
|
|
doh.f(domClass.contains("file", "dijitMenuItemSelected"), |
|
"File MenuBarItem should not have selected class, actual class is: " + dom.byId("file").className); |
|
doh.f(domClass.contains("file", "dijitMenuItemHover"), |
|
"File MenuBarItem shouldn't have hover effect anymore, actual class is: " + dom.byId("edit").className); |
|
doh.t(domClass.contains("edit", "dijitMenuItemHover"), |
|
"Edit MenuBarItem should have hover effect, actual class is: " + dom.byId("edit").className); |
|
}), 1000); |
|
|
|
robot.mouseClick({left: true}, 500); // open edit menu |
|
robot.mouseMoveAt("paste", 1000, 1); |
|
robot.mouseClick({left: true}, 500); // click paste, closing edit menu |
|
robot.mouseMoveAt("edit", 1000, 500); |
|
|
|
robot.sequence(d.getTestErrback(function(){ |
|
doh.t(domClass.contains("edit", "dijitMenuItemHover"), |
|
"Edit MenuBarItem should still have hover effect, actual class is: " + dom.byId("edit").className); |
|
doh.t(helpers.isHidden("editMenu"), "edit menu disappeared #1"); |
|
}), 1000); |
|
|
|
robot.mouseMoveAt("file", 500, 500); |
|
robot.sequence(d.getTestErrback(function(){ |
|
doh.t(helpers.isHidden("fileMenu"), "File menu should be hidden #2"); |
|
}), 500); |
|
|
|
robot.sequence(function(){ |
|
var |
|
fileMenu = registry.byId("fileMenu"), |
|
editMenu = registry.byId("editMenu"), |
|
handler = fileMenu.on("open", function(){ |
|
handler.remove(); |
|
setTimeout(d.getTestErrback(function(){ |
|
doh.t(helpers.isVisible(fileMenu), "File menu should be visible #2"); |
|
handler = fileMenu.on("close", function(){ |
|
handler.remove(); |
|
setTimeout(d.getTestErrback(function(){ |
|
doh.t(helpers.isHidden(fileMenu), "File menu should be hidden #3"); |
|
handler = editMenu.on("open", function(){ |
|
handler.remove(); |
|
setTimeout(d.getTestErrback(function(){ |
|
doh.t(helpers.isVisible(editMenu), "Edit menu should be visible"); |
|
handler = editMenu.on("close", |
|
function(){ |
|
handler.remove(); |
|
setTimeout(d.getTestCallback(function(){ |
|
doh.t(helpers.isHidden(editMenu), "Edit menu disappeared #2"); |
|
}), 150); |
|
}); |
|
var paste = domGeom.position('paste'); |
|
robot._mouseMove(paste.x + (paste.w >> 1), paste.y + paste.h + 20, false, 1); |
|
// click point on screen under the Edit menu |
|
robot.mouseClick({left: true}, 100); |
|
}), 150); |
|
}); |
|
robot.mouseMoveAt("edit", 0, 1); |
|
}), 150); |
|
}); |
|
robot.mouseMoveAt("view", 0, 1); // #9846 |
|
}), 150); |
|
}); |
|
}, 1); |
|
robot.mouseClick({left: true}, 1); // click File that starts the event sequence above |
|
|
|
return d; |
|
} |
|
}, |
|
|
|
{ |
|
name: "MenuBar navigation with BOTH mouse and keyboard", |
|
timeout: 20000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
// click random point on screen |
|
robot.mouseMoveAt("link", 500, 500); |
|
robot.mouseClick({left: true}, 500); // click link to focus it |
|
|
|
robot.mouseMoveAt("view", 500, 500); |
|
robot.sequence(d.getTestErrback(function(){ |
|
doh.t(domClass.contains("view", "dijitMenuItemHover"), |
|
"View MenuBarItem should have hover effect, actual class is: " + dom.byId("view").className); |
|
doh.t(helpers.isHidden("viewMenu"), "View menu is hidden"); |
|
}), 500); |
|
|
|
// tab to the MenuBar... then focus should automatically shift to "File" menu, |
|
robot.keyPress(keys.TAB, 500, {}); |
|
robot.sequence(d.getTestErrback(function(){ |
|
doh.t(helpers.isHidden("fileMenu"), "File menu is hidden"); |
|
doh.t(domClass.contains("file", "dijitMenuItemSelected"), |
|
"File MenuBarItem should have selected class, actual class is: " + dom.byId("file").className); |
|
doh.f(domClass.contains("view", "dijitMenuItemHover"), |
|
"View MenuBarItem shouldn't have hover effect anymore, actual class is: " + dom.byId("view").className); |
|
}), 1000); |
|
|
|
robot.mouseMoveAt("edit", 500, 500); |
|
robot.sequence(d.getTestErrback(function(){ |
|
doh.t(domClass.contains("edit", "dijitMenuItemHover"), |
|
"Edit MenuBarItem should have hover effect, actual class is: " + dom.byId("edit").className); |
|
doh.t(helpers.isHidden("editMenu"), "View menu is hidden"); |
|
}), 500); |
|
|
|
// Move to View item with keyboard. Focus should still on "File". Previously this test |
|
// assumed that hovering "edit" would move focus there. |
|
robot.keyPress(keys.RIGHT_ARROW, 1000, {}); |
|
robot.keyPress(keys.RIGHT_ARROW, 1000, {}); |
|
robot.sequence(d.getTestCallback(function(){ |
|
doh.t(helpers.isHidden("viewMenu"), "View menu is hidden"); |
|
doh.t(domClass.contains("view", "dijitMenuItemSelected"), |
|
"View MenuBarItem should have selected class, actual class is: " + dom.byId("file").className); |
|
doh.f(domClass.contains("edit", "dijitMenuItemHover"), |
|
"Edit MenuBarItem shouldn't have hover effect anymore, actual class is: " + dom.byId("edit").className); |
|
}), 1000); |
|
|
|
return d; |
|
} |
|
} |
|
]); |
|
|
|
doh.register("Menu diagonal movement tests", [ |
|
{ |
|
name: "Menu selection via sloppy movement", |
|
timeout: 20000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
robot.mouseMoveAt("navMenuPopupItem1", 500, 500); // move to Enabled submenu |
|
robot.sequence(d.getTestErrback(function(){ |
|
doh.t(helpers.isHidden("navMenuSub1"), "Enabled submenu should be hidden"); |
|
}), 500); |
|
|
|
robot.mouseClick({left: true}, 500); // click Enabled Submenu |
|
robot.sequence(d.getTestErrback(function(){ |
|
doh.t(helpers.isVisible("navMenuSub1"), "Enabled submenu should be visible"); |
|
}), 1000); |
|
|
|
robot.mouseMoveAt("navMenuDisabledItem", 500, 500); |
|
robot.sequence(d.getTestErrback(function(){ |
|
doh.t(helpers.isHidden("navMenuSub1"), "Enabled submenu should be hidden"); |
|
}), 1000); // linger long enough for menu to close |
|
|
|
robot.mouseMoveAt("navMenuPopupItem1", 500, 500); // move back to Enabled submenu |
|
robot.sequence(d.getTestErrback(function(){ |
|
doh.t(helpers.isVisible("navMenuSub1"), "Enabled submenu should be visible"); |
|
}), 1000); // linger long enough for menu to open |
|
|
|
robot.mouseMoveAt("navMenuDisabledItem", 500, 50); // QUICKLY move to the next menu item |
|
robot.sequence(d.getTestErrback(function(){ |
|
}), 200, 50); |
|
|
|
robot.mouseMoveAt("navMenuSub1_item2", 0, 50); // QUICKLY move to the popup menu |
|
robot.sequence(d.getTestErrback(function(){ |
|
doh.t(helpers.isVisible("navMenuSub1"), "Enabled submenu 1 should be visible"); |
|
doh.t(domClass.contains("navMenuSub1_item2", "dijitMenuItemHover"), |
|
"Submenu 1, item 2 navigation MenuItem should have hover effect, actual class is: " + dom.byId("navMenuDisabledItem").className); |
|
doh.t(domClass.contains("navMenuPopupItem1", "dijitMenuItemSelected"), |
|
"'Enabled Submenu' MenuItem should have selected effect, actual class is: " + dom.byId("navMenuPopupItem1").className); |
|
var popup = domGeom.position('navMenuSub1_popup'); |
|
robot._mouseMove(popup.x + (popup.w >> 1), popup.y + popup.h + 20, false, 500); |
|
}), 500, 1000); |
|
|
|
robot.sequence(d.getTestErrback(function(){ |
|
doh.t(helpers.isVisible("navMenuSub1"), "Enabled submenu 1 menu still there"); |
|
}), 1000); |
|
|
|
// click point on screen under the menu |
|
robot.mouseClick({left: true}, 500); |
|
|
|
robot.sequence(d.getTestCallback(function(){ |
|
doh.t(helpers.isHidden("navMenuSub1"), "Enabled submenu 1 menu disappeared"); |
|
}), 1000); |
|
|
|
return d; |
|
} |
|
} |
|
]); |
|
|
|
doh.register("passivePopupDelay", [ |
|
function setup(){ |
|
registry.byId("menubar").set("passivePopupDelay", 300); |
|
}, |
|
{ |
|
name: "mouse over file MenuBarItem", |
|
timeout: 4000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
// Check initial conditions |
|
doh.f(domClass.contains("file", "dijitMenuItemHover"), "File MenuBarItem doesn't have hover effect"); |
|
doh.t(helpers.isHidden("fileMenu"), "File menu is hidden"); |
|
|
|
// Move over the File MenuBarItem |
|
robot.mouseMoveAt("file", 500, 1000); |
|
|
|
robot.sequence(d.getTestCallback(function(){ |
|
doh.t(helpers.isVisible("fileMenu"), "File menu is visible"); |
|
doh.f(domClass.contains("new", "dijitMenuItemSelected"), |
|
"New MenuItem should not have selected class, actual class is: " + dom.byId("new").className); |
|
}), 1000); |
|
|
|
return d; |
|
} |
|
}, |
|
|
|
{ |
|
name: "hover edit menu item", |
|
timeout: 4000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
robot.mouseMoveAt("edit", 500, 500); |
|
|
|
robot.sequence(d.getTestCallback(function(){ |
|
// Since we've already activated the MenuBar by clicking "File", |
|
// hovering over "Edit" should automatically show the edit menu |
|
doh.t(helpers.isVisible("editMenu"), "Edit menu is visible"); |
|
|
|
// And also, the file menu should have disappeared |
|
doh.t(helpers.isHidden("fileMenu"), "File menu is hidden"); |
|
}), 500); |
|
|
|
return d; |
|
} |
|
}, |
|
|
|
|
|
{ |
|
name: "close menu by click", |
|
timeout: 4000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
|
|
robot.mouseMoveAt("link", 500, 500); |
|
robot.mouseClick({left: true}, 500); |
|
|
|
robot.sequence(d.getTestCallback(function(){ |
|
doh.f(helpers.isVisible("editMenu"), "Edit menu is hidden"); |
|
}), 500); |
|
|
|
return d; |
|
} |
|
} |
|
|
|
]); |
|
|
|
|
|
doh.run(); |
|
}); |
|
</script> |
|
</head> |
|
</html>
|
|
|