vhost-audit/contrib/contextmenu/test/integration/sub-menus.js

69 lines
3.1 KiB
JavaScript
Raw Permalink Normal View History

2021-03-16 20:50:02 -07:00
var pwd = process.cwd();
var helper = require('../integration_test_helper.js');
var menuItem4 = '.context-menu-root li:nth-child(6)';
var submenu1 = '.context-menu-root li.context-menu-item:nth-child(6) > ul:nth-child(2)';
var submenu1Foobar = '.context-menu-root li.context-menu-item:nth-child(6) > ul:nth-child(2) > li:nth-child(1)';
var submenu1Item2 = '.context-menu-root li.context-menu-submenu:nth-child(2)';
var submenu1Subgroup2 = '.context-menu-root li.context-menu-item:nth-child(6) > ul:nth-child(2) > li:nth-child(2)';
var submenu1Subgroup2Charlie = '.context-menu-root li.context-menu-submenu:nth-child(2) > ul:nth-child(2) > li:nth-child(3)';
var returnKey = "\uE006\uE007"; // send <enter> key as well for phantomJS
var rightArrowKey = "\uE014";
var downArrowKey = "\uE015";
var selectFourthMenuItem = downArrowKey + downArrowKey + downArrowKey + downArrowKey;
var selectFirstSubmenuItem = selectFourthMenuItem + rightArrowKey;
var selectSecondSubmenuItem = selectFourthMenuItem + rightArrowKey + downArrowKey;
var selectThirdSubSubMenuItem = selectSecondSubmenuItem + rightArrowKey + downArrowKey + downArrowKey;
// this test uses custom HTML because PhantomJS
// has problems showing alert modal dialogs.
// We are testing callbacks against simple DOM
// manipulations instead.
module.exports = {
'Sub-menu is visible when parent menu item is highlighted': function (test) {
test
.open('file://' + pwd + '/test/integration/html/sub-menus_test.html')
.execute(helper.rightClick, '.context-menu-one')
.waitForElement('#context-menu-layer')
.sendKeys('body', selectFourthMenuItem)
.assert.attr(menuItem4, 'class').to.contain('hover')
.assert.visible(submenu1, 'First sub-menu is visible')
.done();
},
'Sub-menu item triggers callback when clicked': function (test) {
test
.open('file://' + pwd + '/test/integration/html/sub-menus_test.html')
.execute(helper.rightClick, '.context-menu-one')
.waitForElement('#context-menu-layer')
.sendKeys('body', selectFirstSubmenuItem)
.sendKeys('body', returnKey)
.assert.text('#msg', 'clicked: fold1-key1', '"Foo bar" sub-menu item triggers callback')
.done();
},
'Sub-sub-menu is visible when parent menu item is highlighted': function (test) {
test
.open('file://' + pwd + '/test/integration/html/sub-menus_test.html')
.execute(helper.rightClick, '.context-menu-one')
.waitForElement('#context-menu-layer')
.sendKeys('body', selectSecondSubmenuItem)
.assert.attr(submenu1Item2, 'class').to.contain('hover')
.assert.visible(submenu1Subgroup2, 'Sub-sub-menu should be open and visible')
.done();
},
'Sub-sub-menu item callback is triggered': function (test) {
test
.open('file://' + pwd + '/test/integration/html/sub-menus_test.html')
.execute(helper.rightClick, '.context-menu-one')
.waitForElement('#context-menu-layer')
.sendKeys('body', selectThirdSubSubMenuItem)
.sendKeys('body', returnKey)
.assert.text('#msg', 'clicked: fold2-key3', '"charlie" Sub-sub-menu item triggers callback')
.done();
}
};