diff --git a/tests/src/Nightwatch/Tests/dropbuttonTets.js b/tests/src/Nightwatch/Tests/dropbuttonTets.js new file mode 100644 index 0000000000000000000000000000000000000000..562103a659877590010a98388cd47a5915fa92bc --- /dev/null +++ b/tests/src/Nightwatch/Tests/dropbuttonTets.js @@ -0,0 +1,150 @@ +const delayInMilliseconds = 100; +const dropButtonSelector = 'button.dropbutton__toggle'; +const dropButtonItemSelector = 'ul.dropbutton li.secondary-action a'; + +module.exports = { + '@tags': ['project_browser'], + before(browser) { + browser.drupalInstall().drupalInstallModule('project_browser_test', true); + }, + after(browser) { + browser.drupalUninstall(); + }, + 'Project browser dropbutton test': (browser) => { + const assertFocus = (selector, message) => { + browser.execute( + // eslint-disable-next-line func-names, prefer-arrow-callback, no-shadow + function (selector) { + return document.activeElement.matches(selector); + }, + [selector], + (result) => { + browser.assert.ok(result.value, message); + }, + ); + }; + function sendTabKey() { + return this.actions().sendKeys(browser.Keys.TAB); + } + function sendSpaceKey() { + return this.actions().sendKeys(browser.Keys.SPACE); + } + function sendEscapeKey() { + return this.actions().sendKeys(browser.Keys.ESCAPE); + } + browser.drupalLoginAsAdmin(() => { + // We are enabling some modules in order to test the follow-up + // actions for some already installed modules in drupal core. + browser + .drupalRelativeURL('/admin/modules') + .click('[name="modules[package_manager][enable]"]') + .click('[name="modules[contact][enable]"]') + .click('[name="modules[help][enable]"]') + .submitForm('input[type="submit"]') + .waitForElementVisible( + '.system-modules-confirm-form input[value="Continue"]', + ) + .submitForm('input[value="Continue"]') + .waitForElementVisible('.system-modules', 10000); + browser + .drupalRelativeURL('/admin/config/development/project_browser') + .waitForElementVisible( + '[data-drupal-selector="edit-allow-ui-install"]', + delayInMilliseconds, + ) + .click('[data-drupal-selector="edit-allow-ui-install"]') + + // Wait for the select element and enable it + .waitForElementVisible( + '[data-drupal-selector="edit-enabled-sources-drupal-core-status"]', + delayInMilliseconds, + ) + .execute( + (selector) => { + document.querySelector(selector).removeAttribute('disabled'); + }, + ['[data-drupal-selector="edit-enabled-sources-drupal-core-status"]'], + ) + + .click( + '[data-drupal-selector="edit-enabled-sources-drupal-core-status"]', + ) + .click( + '[data-drupal-selector="edit-enabled-sources-drupal-core-status"] option[value="enabled"]', + ) + + // Click the Save Configuration button + .waitForElementVisible( + '[data-drupal-selector="edit-submit"]', + delayInMilliseconds, + ) + .click('[data-drupal-selector="edit-submit"]'); + browser + .drupalRelativeURL('/admin/modules/browse/drupal_core') + .waitForElementVisible('h1', delayInMilliseconds) + .assert.textContains('h1', 'Browse projects') + .waitForElementVisible('#aaa_update_test_title'); + + browser + .setValue('#pb-text', 'contact') + .waitForElementVisible('button.search__search-submit', 5000) + .execute(() => + document.querySelector('button.search__search-submit').click(), + ) + .pause(1000) + .waitForElementVisible('#contact_title', 1000); + + // Directly focus on the security icon. + browser + .waitForElementVisible('.pb-project__status-icon-btn', 1000) + .execute( + (selector) => { + const el = document.querySelector(selector); + if (el) { + el.focus(); + } + }, + ['.pb-project__status-icon-btn'], + ); + // Navigate to maintenance icon. + browser.perform(sendTabKey).pause(1000); + // Navigate to installed button. + browser.perform(sendTabKey).pause(1000); + // Navigate to Installed button. + browser.perform(sendTabKey).pause(1000); + // Navigate to dropdown button. + browser.perform(sendTabKey).pause(1000); + assertFocus(dropButtonSelector, 'Assert dropbutton has focus.'); + + // Press space to open the dropbutton menu. + browser.perform(sendSpaceKey).pause(1000); + browser.assert.visible( + dropButtonItemSelector, + 'Assert dropbutton menu is visible.', + ); + + // Navigate to first dropbutton item using keyboard. + browser.perform(sendTabKey).pause(delayInMilliseconds); + assertFocus( + 'ul.dropbutton li.secondary-action a', + 'Assert first dropbutton item has focus.', + ); + // Navigate to second dropbutton item using keyboard. + browser.perform(sendTabKey).pause(delayInMilliseconds); + assertFocus( + 'ul.dropbutton li.secondary-action a', + 'Assert second dropbutton item has focus.', + ); + + // Press escape to close the dropbutton menu. + browser.perform(sendEscapeKey).pause(1000); + assertFocus( + dropButtonSelector, + 'Assert focus returns to dropbutton after closing.', + ); + + // Close out test. + browser.drupalLogAndEnd({ onlyOnError: false }); + }); + }, +}; diff --git a/tests/src/Nightwatch/Tests/keyboardTest.js b/tests/src/Nightwatch/Tests/keyboardTest.js index ad2daa59b2ea3ea2b017aaa4c58d923ff9bc9f46..b8d83d0c3a78391dd4cc4554b63c53523d51e721 100644 --- a/tests/src/Nightwatch/Tests/keyboardTest.js +++ b/tests/src/Nightwatch/Tests/keyboardTest.js @@ -1,8 +1,6 @@ const delayInMilliseconds = 100; const filterKeywordSearch = '#pb-text'; const filterDropdownSelector = '.pb-filter__multi-dropdown'; -const dropButtonSelector = 'button.dropbutton__toggle'; -const dropButtonItemSelector = 'ul.dropbutton li.secondary-action a'; module.exports = { '@tags': ['project_browser'], @@ -38,52 +36,6 @@ module.exports = { return this.actions().sendKeys(browser.Keys.ESCAPE); } browser.drupalLoginAsAdmin(() => { - // We are enabling some modules in order to test the follow-up - // actions for some already installed modules in drupal core. - browser - .drupalRelativeURL('/admin/modules') - .click('[name="modules[package_manager][enable]"]') - .click('[name="modules[contact][enable]"]') - .click('[name="modules[help][enable]"]') - .submitForm('input[type="submit"]') - .waitForElementVisible( - '.system-modules-confirm-form input[value="Continue"]', - ) - .submitForm('input[value="Continue"]') - .waitForElementVisible('.system-modules', 10000); - browser - .drupalRelativeURL('/admin/config/development/project_browser') - .waitForElementVisible( - '[data-drupal-selector="edit-allow-ui-install"]', - delayInMilliseconds, - ) - .click('[data-drupal-selector="edit-allow-ui-install"]') - - // Wait for the select element and enable it - .waitForElementVisible( - '[data-drupal-selector="edit-enabled-sources-drupal-core-status"]', - delayInMilliseconds, - ) - .execute( - (selector) => { - document.querySelector(selector).removeAttribute('disabled'); - }, - ['[data-drupal-selector="edit-enabled-sources-drupal-core-status"]'], - ) - - .click( - '[data-drupal-selector="edit-enabled-sources-drupal-core-status"]', - ) - .click( - '[data-drupal-selector="edit-enabled-sources-drupal-core-status"] option[value="enabled"]', - ) - - // Click the Save Configuration button - .waitForElementVisible( - '[data-drupal-selector="edit-submit"]', - delayInMilliseconds, - ) - .click('[data-drupal-selector="edit-submit"]'); // Open project browser. browser .drupalRelativeURL('/admin/modules/browse/project_browser_test_mock') @@ -217,70 +169,6 @@ module.exports = { 'Assert that no filter lozenge is shown.', ); - browser - .drupalRelativeURL('/admin/modules/browse/drupal_core') - .waitForElementVisible('h1', delayInMilliseconds) - .assert.textContains('h1', 'Browse projects') - .waitForElementVisible('#aaa_update_test_title'); - - browser - .setValue('#pb-text', 'contact') - .waitForElementVisible('button.search__search-submit', 5000) - .execute(() => - document.querySelector('button.search__search-submit').click(), - ) - .pause(1000) - .waitForElementVisible('#contact_title', 1000); - - // Directly focus on the security icon. - browser - .waitForElementVisible('.pb-project__status-icon-btn', 1000) - .execute( - (selector) => { - const el = document.querySelector(selector); - if (el) { - el.focus(); - } - }, - ['.pb-project__status-icon-btn'], - ); - // Navigate to maintenance icon. - browser.perform(sendTabKey).pause(1000); - // Navigate to installed button. - browser.perform(sendTabKey).pause(1000); - // Navigate to Installed button. - browser.perform(sendTabKey).pause(1000); - // Navigate to dropdown button. - browser.perform(sendTabKey).pause(1000); - assertFocus(dropButtonSelector, 'Assert dropbutton has focus.'); - - // Press space to open the dropbutton menu. - browser.perform(sendSpaceKey).pause(1000); - browser.assert.visible( - dropButtonItemSelector, - 'Assert dropbutton menu is visible.', - ); - - // Navigate to first dropbutton item using keyboard. - browser.perform(sendTabKey).pause(delayInMilliseconds); - assertFocus( - 'ul.dropbutton li.secondary-action a', - 'Assert first dropbutton item has focus.', - ); - // Navigate to second dropbutton item using keyboard. - browser.perform(sendTabKey).pause(delayInMilliseconds); - assertFocus( - 'ul.dropbutton li.secondary-action a', - 'Assert second dropbutton item has focus.', - ); - - // Press escape to close the dropbutton menu. - browser.perform(sendEscapeKey).pause(1000); - assertFocus( - dropButtonSelector, - 'Assert focus returns to dropbutton after closing.', - ); - // Close out test. browser.drupalLogAndEnd({ onlyOnError: false }); });