From f276520a2f81965497188b5242ccf20a8c789ec6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Brala?= Date: Mon, 29 Aug 2016 13:12:11 +0200 Subject: [PATCH] Finish submenu acceptance test migration, add accesskeys and async-create --- test/integration/accesskeys.js | 48 ---------------------- test/integration/async-create.js | 15 ------- test/integration/sub-menus.js | 68 -------------------------------- test/specs/accesskeys.js | 45 +++++++++++++++++++++ test/specs/aync-create.js | 10 +++++ test/specs/submenu.js | 13 +++++- wdio.conf.js | 2 +- 7 files changed, 68 insertions(+), 133 deletions(-) delete mode 100644 test/integration/accesskeys.js delete mode 100644 test/integration/async-create.js delete mode 100644 test/integration/sub-menus.js create mode 100644 test/specs/accesskeys.js create mode 100644 test/specs/aync-create.js diff --git a/test/integration/accesskeys.js b/test/integration/accesskeys.js deleted file mode 100644 index 41fcee8a..00000000 --- a/test/integration/accesskeys.js +++ /dev/null @@ -1,48 +0,0 @@ -var pwd = process.cwd(); -var helper = require('../integration_test_helper.js'); - -// this test uses custom HTML because PhantomJS -// has problems showing alert modal dialogs. -// We are testing callbacks against simple DOM -// manipulations instead. -module.exports = { - 'Typing on keyboard triggers "edit" menu item callback': function (test) { - test - .open('file://' + pwd + '/test/integration/html/accesskeys_test.html') - .execute(helper.rightClick, '.context-menu-one') - .waitForElement('#context-menu-layer') - .sendKeys('body', 'e') - .assert.text('#msg', 'clicked: edit', 'Edit menu item callback is triggered by accesskey') - .done(); - }, - - 'Typing on keyboard triggers "cut" menu item callback': function (test) { - test - .open('file://' + pwd + '/test/integration/html/accesskeys_test.html') - .execute(helper.rightClick, '.context-menu-one') - .waitForElement('#context-menu-layer') - .sendKeys('body', 'c') - .assert.text('#msg', 'clicked: cut', 'Cut menu item callback is triggered by accesskey') - .done(); - }, - - 'Typing on keyboard triggers "copy" menu item callback': function (test) { - test - .open('file://' + pwd + '/test/integration/html/accesskeys_test.html') - .execute(helper.rightClick, '.context-menu-one') - .waitForElement('#context-menu-layer') - .sendKeys('body', 'o') - .assert.text('#msg', 'clicked: copy', 'Copy menu item callback is triggered by accesskey') - .done(); - }, - - 'Typing

on keyboard triggers "paste" menu item callback': function (test) { - test - .open('file://' + pwd + '/test/integration/html/accesskeys_test.html') - .execute(helper.rightClick, '.context-menu-one') - .waitForElement('#context-menu-layer') - .sendKeys('body', 'p') - .assert.text('#msg', 'clicked: paste', 'Paste menu item callback is triggered by accesskey') - .done(); - } -}; diff --git a/test/integration/async-create.js b/test/integration/async-create.js deleted file mode 100644 index f4fbc4d5..00000000 --- a/test/integration/async-create.js +++ /dev/null @@ -1,15 +0,0 @@ -var pwd = process.cwd(); -var helper = require('../integration_test_helper.js'); - -module.exports = { - 'Render async context menu': function (test) { - test - .open('file://' + pwd + '/test/integration/html/async-create.html') - .execute(helper.rightClick, '.context-menu-one', 'mouseup') - .waitForElement('#context-menu-layer') - .assert.exists('.context-menu-root', 'It opens context menu') - .assert.numberOfElements('.context-menu-root li') - .is(3, '3 context menu items are shown') - .done(); - } -}; diff --git a/test/integration/sub-menus.js b/test/integration/sub-menus.js deleted file mode 100644 index 932a7310..00000000 --- a/test/integration/sub-menus.js +++ /dev/null @@ -1,68 +0,0 @@ -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 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(); - } -}; diff --git a/test/specs/accesskeys.js b/test/specs/accesskeys.js new file mode 100644 index 00000000..c017165a --- /dev/null +++ b/test/specs/accesskeys.js @@ -0,0 +1,45 @@ +var assert = require('assert'); +var pwd = process.cwd(); +describe('Test accesskeys', function() { + it('should navigate to submenu 2 levels deep and see correct alert for charlie', function () { + browser.url('file://' + pwd + '/test/integration/html/sub-menus.html'); + browser.rightClick('.context-menu-one'); + browser.moveToObject('span=Sub group') + browser.moveToObject('span=Sub group 2') + browser.click('span=charlie') + assert.equal(browser.alertText(), 'clicked: fold2-key3'); + browser.alertAccept(); + }); + it('Typing on keyboard triggers "edit" menu item callback', function () { + browser.url('file://' + pwd + '/test/integration/html/accesskeys.html'); + browser.rightClick('.context-menu-one'); + browser.keys('e'); + assert.equal(browser.alertText(), 'clicked: edit'); + browser.alertAccept(); + }); + + it('Typing on keyboard triggers "cut" menu item callback', function () { + browser.url('file://' + pwd + '/test/integration/html/accesskeys.html'); + browser.rightClick('.context-menu-one'); + browser.keys('c'); + assert.equal(browser.alertText(), 'clicked: cut'); + browser.alertAccept(); + }); + + it('Typing on keyboard triggers "copy" menu item callback', function () { + browser.url('file://' + pwd + '/test/integration/html/accesskeys.html'); + browser.rightClick('.context-menu-one'); + browser.keys('o'); + assert.equal(browser.alertText(), 'clicked: copy'); + browser.alertAccept(); + }); + + it('Typing

on keyboard triggers "paste" menu item callback', function () { + browser.url('file://' + pwd + '/test/integration/html/accesskeys.html'); + browser.rightClick('.context-menu-one'); + browser.keys('p'); + assert.equal(browser.alertText(), 'clicked: paste'); + browser.alertAccept(); + }); + +}); diff --git a/test/specs/aync-create.js b/test/specs/aync-create.js new file mode 100644 index 00000000..f79963ff --- /dev/null +++ b/test/specs/aync-create.js @@ -0,0 +1,10 @@ +var assert = require('assert'); +var pwd = process.cwd(); +describe('Test async create', function() { + it('should render async created context menu', function () { + browser.url('file://' + pwd + '/test/integration/html/async-create.html'); + browser.rightClick('.context-menu-one'); + browser.waitForExist('#context-menu-layer'); + assert.equal(3, browser.elements('.context-menu-root li').value.length); + }); +}); diff --git a/test/specs/submenu.js b/test/specs/submenu.js index 6e08bf91..9bbd21b4 100644 --- a/test/specs/submenu.js +++ b/test/specs/submenu.js @@ -8,5 +8,16 @@ describe('Test submenus', function() { browser.moveToObject('span=Sub group 2') browser.click('span=charlie') assert.equal(browser.alertText(), 'clicked: fold2-key3'); + browser.alertAccept(); }); -}); \ No newline at end of file + + it('should navigate to submenu 2 levels deep and see first menu highlighted', function () { + browser.url('file://' + pwd + '/test/integration/html/sub-menus.html'); + browser.rightClick('.context-menu-one'); + browser.moveToObject('span=Sub group') + browser.moveToObject('span=Sub group 2'); + var elements = browser.elements('.context-menu-hover'); + assert.equal(2, elements.value.length); + }); + +}); diff --git a/wdio.conf.js b/wdio.conf.js index be75b059..3070a489 100644 --- a/wdio.conf.js +++ b/wdio.conf.js @@ -70,7 +70,7 @@ exports.config = { sync: true, // // Level of logging verbosity: silent | verbose | command | data | result | error - logLevel: 'verbose', + logLevel: 'error', // // Enables colors for log output. coloredLogs: true,