From 22576037d7afc0b5e90323c9c364bc825d9b8eab Mon Sep 17 00:00:00 2001 From: Lauri Eskola Date: Wed, 27 Sep 2023 20:19:52 +0300 Subject: [PATCH] Issue #3264940 by star-szr, jungle, smustgrave, lauriii: Add optional parameter to Nightwatch drupalInstallModule command to enable module dependencies --- .../Tests/ckEditor5EditorHeightTest.js | 17 ++++------- .../src/Nightwatch/Tests/toolbarApiTest.js | 3 +- .../tests/src/Nightwatch/Tests/toolbarTest.js | 3 +- .../Commands/drupalInstallModule.js | 23 +++++++++++---- .../Tests/ajaxExecutionOrderTest.js | 15 +--------- .../Nightwatch/Tests/claroAutocompleteTest.js | 28 ++++++------------- .../Tests/jQueryUIPositionShimTest.js | 12 +------- .../Nightwatch/Tests/jsDeprecationTest.js | 12 +------- .../Drupal/Nightwatch/Tests/jsOnceTest.js | 12 +------- .../Drupal/Nightwatch/Tests/statesTest.js | 10 +------ .../Nightwatch/Tests/tabbableShimTest.js | 12 +------- .../Nightwatch/Tests/tabbingManagerTest.js | 12 +------- 12 files changed, 40 insertions(+), 119 deletions(-) diff --git a/core/modules/ckeditor5/tests/src/Nightwatch/Tests/ckEditor5EditorHeightTest.js b/core/modules/ckeditor5/tests/src/Nightwatch/Tests/ckEditor5EditorHeightTest.js index 2d1f001d2e9..b5bf5f41ecc 100644 --- a/core/modules/ckeditor5/tests/src/Nightwatch/Tests/ckEditor5EditorHeightTest.js +++ b/core/modules/ckeditor5/tests/src/Nightwatch/Tests/ckEditor5EditorHeightTest.js @@ -1,7 +1,11 @@ module.exports = { '@tags': ['core', 'ckeditor5'], before(browser) { - browser.drupalInstall({ installProfile: 'minimal' }); + browser + .drupalInstall({ installProfile: 'minimal' }) + .drupalInstallModule('ckeditor5', true) + .drupalInstallModule('field_ui'); + // Set fixed (desktop-ish) size to ensure a maximum viewport. browser.resizeWindow(1920, 1080); }, @@ -11,17 +15,6 @@ module.exports = { 'Ensure CKEditor respects field widget row value': (browser) => { browser.drupalLoginAsAdmin(() => { browser - // Enable required modules. - .drupalRelativeURL('/admin/modules') - .click('[name="modules[ckeditor5][enable]"]') - .click('[name="modules[field_ui][enable]"]') - .submitForm('input[type="submit"]') // Submit module form. - .waitForElementVisible( - '.system-modules-confirm-form input[value="Continue"]', - ) - .submitForm('input[value="Continue"]') // Confirm installation of dependencies. - .waitForElementVisible('.system-modules', 10000) - // Create new input format. .drupalRelativeURL('/admin/config/content/formats/add') .waitForElementVisible('[data-drupal-selector="edit-name"]') diff --git a/core/modules/toolbar/tests/src/Nightwatch/Tests/toolbarApiTest.js b/core/modules/toolbar/tests/src/Nightwatch/Tests/toolbarApiTest.js index a013010a107..8e10c135a01 100644 --- a/core/modules/toolbar/tests/src/Nightwatch/Tests/toolbarApiTest.js +++ b/core/modules/toolbar/tests/src/Nightwatch/Tests/toolbarApiTest.js @@ -8,8 +8,7 @@ module.exports = { before(browser) { browser .drupalInstall() - .drupalInstallModule('breakpoint') - .drupalInstallModule('toolbar') + .drupalInstallModule('toolbar', true) .drupalCreateUser({ name: 'user', password: '123', diff --git a/core/modules/toolbar/tests/src/Nightwatch/Tests/toolbarTest.js b/core/modules/toolbar/tests/src/Nightwatch/Tests/toolbarTest.js index 91773a7dac9..a87b3982780 100644 --- a/core/modules/toolbar/tests/src/Nightwatch/Tests/toolbarTest.js +++ b/core/modules/toolbar/tests/src/Nightwatch/Tests/toolbarTest.js @@ -15,8 +15,7 @@ module.exports = { before(browser) { browser .drupalInstall() - .drupalInstallModule('breakpoint') - .drupalInstallModule('toolbar') + .drupalInstallModule('toolbar', true) .drupalCreateUser({ name: 'user', password: '123', diff --git a/core/tests/Drupal/Nightwatch/Commands/drupalInstallModule.js b/core/tests/Drupal/Nightwatch/Commands/drupalInstallModule.js index c791774974e..be8b1aa0b02 100644 --- a/core/tests/Drupal/Nightwatch/Commands/drupalInstallModule.js +++ b/core/tests/Drupal/Nightwatch/Commands/drupalInstallModule.js @@ -3,12 +3,14 @@ * * @param {string} module * The module machine name to enable. + * @param {boolean} force + * Force to install dependencies if applicable. * @param {function} callback * A callback which will be called, when the module has been enabled. * @return {object} * The drupalInstallModule command. */ -exports.command = function drupalInstallModule(module, callback) { +exports.command = function drupalInstallModule(module, force, callback) { const self = this; this.drupalLoginAsAdmin(() => { this.drupalRelativeURL('/admin/modules') @@ -22,13 +24,22 @@ exports.command = function drupalInstallModule(module, callback) { 10000, ) .click(`form.system-modules [name="modules[${module}][enable]"]`) - .submitForm('form.system-modules') - // Wait for the checkbox for the module to be disabled as a sign that the - // module has been enabled. - .waitForElementPresent( - `form.system-modules [name="modules[${module}][enable]"]:disabled`, + .submitForm('form.system-modules'); + if (force) { + // Click `Continue` if applicable. + this.waitForElementPresent( + '#system-modules-confirm-form', 10000, + false, + () => self.click('input[value=Continue]'), ); + } + // Wait for the checkbox for the module to be disabled as a sign that the + // module has been enabled. + this.waitForElementPresent( + `form.system-modules [name="modules[${module}][enable]"]:disabled`, + 10000, + ); }).perform(() => { if (typeof callback === 'function') { callback.call(self); diff --git a/core/tests/Drupal/Nightwatch/Tests/ajaxExecutionOrderTest.js b/core/tests/Drupal/Nightwatch/Tests/ajaxExecutionOrderTest.js index da54f6015a6..6284e990542 100644 --- a/core/tests/Drupal/Nightwatch/Tests/ajaxExecutionOrderTest.js +++ b/core/tests/Drupal/Nightwatch/Tests/ajaxExecutionOrderTest.js @@ -1,20 +1,7 @@ module.exports = { '@tags': ['core', 'ajax'], before(browser) { - browser.drupalInstall().drupalLoginAsAdmin(() => { - browser - .drupalRelativeURL('/admin/modules') - .setValue('input[type="search"]', 'Ajax test') - .waitForElementVisible('input[name="modules[ajax_test][enable]"]', 1000) - .click('input[name="modules[ajax_test][enable]"]') - .submitForm('input[type="submit"]') // Submit module form. - .waitForElementVisible( - '.system-modules-confirm-form input[value="Continue"]', - 2000, - ) - .submitForm('input[value="Continue"]') // Confirm installation of dependencies. - .waitForElementVisible('.system-modules', 10000); - }); + browser.drupalInstall().drupalInstallModule('ajax_test', true); }, after(browser) { browser.drupalUninstall(); diff --git a/core/tests/Drupal/Nightwatch/Tests/claroAutocompleteTest.js b/core/tests/Drupal/Nightwatch/Tests/claroAutocompleteTest.js index 054f40ab793..446b52665d8 100644 --- a/core/tests/Drupal/Nightwatch/Tests/claroAutocompleteTest.js +++ b/core/tests/Drupal/Nightwatch/Tests/claroAutocompleteTest.js @@ -2,25 +2,15 @@ module.exports = { '@tags': ['core'], before(browser) { - browser.drupalInstall().drupalLoginAsAdmin(() => { - browser - .drupalRelativeURL('/admin/modules') - .setValue('input[type="search"]', 'FormAPI Test') - .waitForElementVisible('input[name="modules[form_test][enable]"]', 1000) - .click('input[name="modules[form_test][enable]"]') - .submitForm('input[type="submit"]') // Submit module form. - .waitForElementVisible( - '.system-modules-confirm-form input[value="Continue"]', - 2000, - ) - .submitForm('input[value="Continue"]') // Confirm installation of dependencies. - .waitForElementVisible('.system-modules', 10000); - - browser - .drupalRelativeURL('/admin/appearance') - .click('[title="Install Claro as default theme"]') - .waitForElementVisible('.system-themes-list', 10000); // Confirm installation. - }); + browser + .drupalInstall() + .drupalInstallModule('form_test', true) + .drupalLoginAsAdmin(() => { + browser + .drupalRelativeURL('/admin/appearance') + .click('[title="Install Claro as default theme"]') + .waitForElementVisible('.system-themes-list', 10000); // Confirm installation. + }); }, after(browser) { browser.drupalUninstall(); diff --git a/core/tests/Drupal/Nightwatch/Tests/jQueryUIPositionShimTest.js b/core/tests/Drupal/Nightwatch/Tests/jQueryUIPositionShimTest.js index 7c82cc83c6b..0cbcf586878 100644 --- a/core/tests/Drupal/Nightwatch/Tests/jQueryUIPositionShimTest.js +++ b/core/tests/Drupal/Nightwatch/Tests/jQueryUIPositionShimTest.js @@ -758,17 +758,7 @@ testScenarios.element = testScenarios.selector; module.exports = { '@tags': ['core'], before(browser) { - browser.drupalInstall().drupalLoginAsAdmin(() => { - browser - .drupalRelativeURL('/admin/modules') - .setValue('input[type="search"]', 'position Shim Test') - .waitForElementVisible( - 'input[name="modules[position_shim_test][enable]"]', - 1000, - ) - .click('input[name="modules[position_shim_test][enable]"]') - .click('input[type="submit"]'); - }); + browser.drupalInstall().drupalInstallModule('position_shim_test'); }, after(browser) { browser.drupalUninstall(); diff --git a/core/tests/Drupal/Nightwatch/Tests/jsDeprecationTest.js b/core/tests/Drupal/Nightwatch/Tests/jsDeprecationTest.js index c3cb9643065..b146cd290c4 100644 --- a/core/tests/Drupal/Nightwatch/Tests/jsDeprecationTest.js +++ b/core/tests/Drupal/Nightwatch/Tests/jsDeprecationTest.js @@ -1,17 +1,7 @@ module.exports = { '@tags': ['core'], before(browser) { - browser.drupalInstall().drupalLoginAsAdmin(() => { - browser - .drupalRelativeURL('/admin/modules') - .setValue('input[type="search"]', 'JS Deprecation test') - .waitForElementVisible( - 'input[name="modules[js_deprecation_test][enable]"]', - 1000, - ) - .click('input[name="modules[js_deprecation_test][enable]"]') - .click('input[type="submit"]'); // Submit module form. - }); + browser.drupalInstall().drupalInstallModule('js_deprecation_test'); }, after(browser) { browser.drupalUninstall(); diff --git a/core/tests/Drupal/Nightwatch/Tests/jsOnceTest.js b/core/tests/Drupal/Nightwatch/Tests/jsOnceTest.js index 9e8a7476f30..3a340785204 100644 --- a/core/tests/Drupal/Nightwatch/Tests/jsOnceTest.js +++ b/core/tests/Drupal/Nightwatch/Tests/jsOnceTest.js @@ -1,17 +1,7 @@ module.exports = { '@tags': ['core'], before(browser) { - browser.drupalInstall().drupalLoginAsAdmin(() => { - browser - .drupalRelativeURL('/admin/modules') - .setValue('input[type="search"]', 'JS Once Test') - .waitForElementVisible( - 'input[name="modules[js_once_test][enable]"]', - 1000, - ) - .click('input[name="modules[js_once_test][enable]"]') - .click('input[type="submit"]'); // Submit module form. - }); + browser.drupalInstall().drupalInstallModule('js_once_test'); }, after(browser) { browser.drupalUninstall(); diff --git a/core/tests/Drupal/Nightwatch/Tests/statesTest.js b/core/tests/Drupal/Nightwatch/Tests/statesTest.js index 4d48d8d3aac..8c037e53ecc 100644 --- a/core/tests/Drupal/Nightwatch/Tests/statesTest.js +++ b/core/tests/Drupal/Nightwatch/Tests/statesTest.js @@ -1,15 +1,7 @@ module.exports = { '@tags': ['core'], before(browser) { - browser.drupalInstall().drupalLoginAsAdmin(() => { - browser - .drupalRelativeURL('/admin/modules') - .setValue('input[type="search"]', 'FormAPI') - .waitForElementVisible('input[name="modules[form_test][enable]"]', 1000) - .click('input[name="modules[form_test][enable]"]') - .click('input[type="submit"]') // Submit module form. - .click('input[type="submit"]'); // Confirm installation of dependencies. - }); + browser.drupalInstall().drupalInstallModule('form_test', true); }, after(browser) { browser.drupalUninstall(); diff --git a/core/tests/Drupal/Nightwatch/Tests/tabbableShimTest.js b/core/tests/Drupal/Nightwatch/Tests/tabbableShimTest.js index f1a87ad09c5..c76026d6ff8 100644 --- a/core/tests/Drupal/Nightwatch/Tests/tabbableShimTest.js +++ b/core/tests/Drupal/Nightwatch/Tests/tabbableShimTest.js @@ -258,17 +258,7 @@ const dialogIntegrationTestScenarios = [ module.exports = { '@tags': ['core'], before(browser) { - browser.drupalInstall().drupalLoginAsAdmin(() => { - browser - .drupalRelativeURL('/admin/modules') - .setValue('input[type="search"]', 'Tabbable Shim Test') - .waitForElementVisible( - 'input[name="modules[tabbable_shim_test][enable]"]', - 1000, - ) - .click('input[name="modules[tabbable_shim_test][enable]"]') - .click('input[type="submit"]'); - }); + browser.drupalInstall().drupalInstallModule('tabbable_shim_test'); }, after(browser) { browser.drupalUninstall(); diff --git a/core/tests/Drupal/Nightwatch/Tests/tabbingManagerTest.js b/core/tests/Drupal/Nightwatch/Tests/tabbingManagerTest.js index bee2da6f0c9..a90cd7bf9f8 100644 --- a/core/tests/Drupal/Nightwatch/Tests/tabbingManagerTest.js +++ b/core/tests/Drupal/Nightwatch/Tests/tabbingManagerTest.js @@ -1,17 +1,7 @@ module.exports = { '@tags': ['core'], before(browser) { - browser.drupalInstall().drupalLoginAsAdmin(() => { - browser - .drupalRelativeURL('/admin/modules') - .setValue('input[type="search"]', 'Tabbing Manager Test') - .waitForElementVisible( - 'input[name="modules[tabbingmanager_test][enable]"]', - 1000, - ) - .click('input[name="modules[tabbingmanager_test][enable]"]') - .click('input[type="submit"]'); - }); + browser.drupalInstall().drupalInstallModule('tabbingmanager_test'); }, after(browser) { browser.drupalUninstall();