diff --git a/_support/Helper/Acceptance.php b/_support/Helper/Acceptance.php index 41423dc16024151d7189195832da6a1d2f5cb08a..9f9f3b3dcdfd1d82e988b9a5013eaea07014e3c2 100644 --- a/_support/Helper/Acceptance.php +++ b/_support/Helper/Acceptance.php @@ -222,7 +222,6 @@ class Acceptance extends Module { 'Image', 'Image gallery', 'Mailman subscription', - 'Related links', 'Tags', 'Timeline', 'CodePen', diff --git a/_support/Step/Acceptance/ContentType.php b/_support/Step/Acceptance/ContentType.php index 4e383108e1cf7df4e41134887be03cc793575478..0e44d674395d981dcf224ae60037304756b5c4ec 100644 --- a/_support/Step/Acceptance/ContentType.php +++ b/_support/Step/Acceptance/ContentType.php @@ -244,6 +244,7 @@ class ContentType extends \AcceptanceTester { $i->waitForText('Edit layout for'); // Click on the add block. + $i->waitForText('Add block'); $i->click('Add block'); $i->waitForText('Choose a block'); @@ -251,14 +252,23 @@ class ContentType extends \AcceptanceTester { $i->click('Copy text'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + + $title = $i->uwRandomString(); // FIll in fields. - $i->fillField('input[name="settings[label]"]', $i->uwRandomString()); + $i->fillField('input[name="settings[label]"]', $title); $i->fillCkEditor($i->uwRandomString(), 'textarea[name="settings[block_form][field_uw_copy_text][0][value]"]'); - // Click add block and ensure it appears on page. - $i->click('Add block'); - $i->waitForElement(Locator::contains('div[class="uw-admin-label"]', 'Copy text')); - $i->seeElement(Locator::contains('div[class="uw-admin-label"]', 'Copy text')); + // Trigger CKEditor update. + $i->executeJS('for (instance in CKEDITOR.instances) { CKEDITOR.instances[instance].updateElement(); }'); + + // Submit form. + $i->click('input[id*="edit-actions-submit"]'); + + $i->switchToIFrame(); + $i->waitForText($title); + $i->seeElement('div[class="uw-copy-text"]'); // Save the layout and ensure that new block appears // on the page with correct section classes. @@ -424,6 +434,7 @@ class ContentType extends \AcceptanceTester { $i->amOnPage($view_url . '/revisions'); // Ensure that they can not view revisions. + $i->see('Access denied'); $i->see('You are not authorized to access this page.'); } } diff --git a/acceptance/WcmsTestsApiCest.php b/acceptance/WcmsTestsApiCest.php index a568736126a6e953b38724a1ae6d449f701afc71..4c0dd4495a1688bf2757c8753db5d752aeed6a7a 100644 --- a/acceptance/WcmsTestsApiCest.php +++ b/acceptance/WcmsTestsApiCest.php @@ -33,6 +33,8 @@ class WcmsTestsApiCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group api */ public function testApi(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsAuthSiteCest.php b/acceptance/WcmsTestsAuthSiteCest.php deleted file mode 100644 index bc4fee077661a29cdb5674759dcbf0222157ec92..0000000000000000000000000000000000000000 --- a/acceptance/WcmsTestsAuthSiteCest.php +++ /dev/null @@ -1,345 +0,0 @@ -<?php - -/** - * Class AuthSiteCest. - * - * Tests for auth site. - */ -class WcmsTestsAuthSiteCest { - - /** - * Tests for auth site. - * - * @param AcceptanceTester $i - * Acceptance test variable. - */ - public function testAuthSite(AcceptanceTester $i) { - - // Get the test cases. - $cases = $this->getCases($i); - - // Get the default access denied message. - $default_message = $this->getDefaultMessage(); - - // Loop to check all cases. - foreach ($cases as $case => $edit) { - - // Login as site manager. - $i->amOnPage('user/logout'); - $i->logInWithRole('administrator'); - - $i->amOnPage('admin/config/system/auth_site'); - - $i->checkOption('#edit-enabled'); - $i->waitForText('ACCESS CONTROL SETTINGS'); - - foreach ($edit as $id => $value) { - if ($id == 'edit-uw-access-control-method-group') { - $i->selectOption('#' . $id, $value); - } - else { - $i->fillField('#' . $id, $value); - } - } - - // Click on save config and ensure that it saves. - $i->click('Save configuration'); - $i->waitForText('The configuration options have been saved.'); - $i->see('The configuration options have been saved.'); - - // Admin logout. - $i->amOnPage('user/logout'); - - // Non-logged in user loads home page. - $i->amOnPage('home'); - - // Check log in page. - switch ($case) { - // edit-uw-auth-site-access-denied-title is empty, - // and edit-uw-auth-site-access-denied-excerpt is default. - case 'case1': - case 'case5': - case 'case6': - case 'case7': - case 'case8': - case 'case9': - $i->see('Log in'); - $i->see($default_message); - break; - - // edit-uw-auth-site-access-denied-title is empty, - // and edit-uw-auth-site-access-denied-excerpt is changed. - case 'case2': - $i->see('Log in'); - $i->see($edit['edit-uw-auth-site-text']); - break; - - // edit-uw-auth-site-access-denied-title is filled, - // and edit-uw-auth-site-access-denied-excerpt is default. - case 'case3': - $i->see($edit['edit-uw-auth-site-access-denied-title']); - $i->see($default_message); - break; - - // edit-uw-auth-site-access-denied-title is filled, - // and edit-uw-auth-site-access-denied-excerpt is changed. - case 'case4': - $i->see($edit['edit-uw-auth-site-access-denied-title']); - $i->see($edit['edit-uw-auth-site-access-denied-excerpt']); - break; - } - - // Check for reset password and correct redirect url. - $i->dontSee('Reset your password'); - $i->amOnPage('user/password'); - $i->seeCurrentUrlEquals('/user/login?destination=/user/password'); - - // Log in as authenticated user. - $i->amOnPage('user/logout'); - $i->logInWithRole('authenticated'); - - // Access denied message setting in home page. - $i->amOnPage('home'); - - switch ($case) { - // Authenticated user can view home page for these cases. - case 'case1': - case 'case2': - case 'case3': - case 'case4': - case 'case9': - $i->seeLink('Contacts'); - $i->seeLink('Profiles'); - $i->seeLink('Blog'); - $i->seeLink('Events'); - $i->seeLink('News'); - break; - - // Display custom access denied title and default message. - case 'case5': - $i->see($edit['edit-uw-auth-site-access-denied-title-logged-in']); - $i->see($default_message); - break; - - // Display 'Access denied' title and custom message. - case 'case6': - $i->see('Access denied'); - $i->see($edit['edit-uw-auth-site-access-denied-excerpt-logged-in']); - break; - - // Display custom access denied title and message. - case 'case7': - case 'case8': - $i->see($edit['edit-uw-auth-site-access-denied-title-logged-in']); - $i->see($edit['edit-uw-auth-site-access-denied-excerpt-logged-in']); - break; - - } - - // Check 'admin/config/system/auth_site' as example, - // got default access denied for all cases. - $i->amOnPage('admin/config/system/auth_site'); - $i->see('Access denied'); - $i->see('You are not authorized to access this page'); - - // Site owner access admin/config/system/auth_site page. - $i->amOnPage('user/logout'); - $i->logInWithRole('uw_role_site_owner'); - $i->amOnPage('admin/config/system/auth_site'); - - // Site owner cannot view 'Authenticated site' settings. - $i->dontSee('Require authentication to access this site'); - } - } - - /** - * Function to get the default access denied message. - * - * @return string - * The access denied message. - */ - private function getDefaultMessage(): string { - return 'Content on this site is restricted to authorized users; you must log in. Note that if you are not an authorized user, you may be able to log in, but still not have access to the content.'; - } - - /** - * Function to get the test cases for auth site. - * - * @return array - * Array of test cases for auth site. - */ - private function getCases(AcceptanceTester $i): array { - - // The default message in edit-uw-auth-site-text field. - $default_message = $this->getDefaultMessage(); - - return [ - 'case1' => [ - 'edit-uw-access-control-method-group' => 'auth', - 'edit-uw-auth-site-access-denied-title' => '', - 'edit-uw-auth-site-access-denied-excerpt' => '', - 'edit-uw-auth-site-access-denied-title-logged-in' => '', - 'edit-uw-auth-site-access-denied-excerpt-logged-in' => '', - 'edit-uw-auth-site-text' => $default_message, - ], - 'case2' => [ - 'edit-uw-access-control-method-group' => 'auth', - 'edit-uw-auth-site-access-denied-title' => '', - 'edit-uw-auth-site-access-denied-excerpt' => '', - 'edit-uw-auth-site-access-denied-title-logged-in' => '', - 'edit-uw-auth-site-access-denied-excerpt-logged-in' => '', - 'edit-uw-auth-site-text' => $i->uwRandomString(), - ], - 'case3' => [ - 'edit-uw-access-control-method-group' => 'auth', - 'edit-uw-auth-site-access-denied-title' => $i->uwRandomString(), - 'edit-uw-auth-site-access-denied-excerpt' => '', - 'edit-uw-auth-site-access-denied-title-logged-in' => '', - 'edit-uw-auth-site-access-denied-excerpt-logged-in' => '', - 'edit-uw-auth-site-text' => $default_message, - ], - 'case4' => [ - 'edit-uw-access-control-method-group' => 'auth', - 'edit-uw-auth-site-access-denied-title' => $i->uwRandomString(), - 'edit-uw-auth-site-access-denied-excerpt' => $i->uwRandomString(), - 'edit-uw-auth-site-access-denied-title-logged-in' => '', - 'edit-uw-auth-site-access-denied-excerpt-logged-in' => '', - 'edit-uw-auth-site-text' => $default_message, - ], - 'case5' => [ - 'edit-uw-access-control-method-group' => 'group', - 'edit-ad-require-groups' => $i->uwRandomString(), - 'edit-ad-deny-groups' => '', - 'edit-wcms-accounts' => '', - 'edit-uw-auth-site-access-denied-title' => '', - 'edit-uw-auth-site-access-denied-excerpt' => '', - 'edit-uw-auth-site-access-denied-title-logged-in' => $i->uwRandomString(), - 'edit-uw-auth-site-access-denied-excerpt-logged-in' => '', - 'edit-uw-auth-site-text' => $default_message, - ], - 'case6' => [ - 'edit-uw-access-control-method-group' => 'group', - 'edit-ad-require-groups' => $i->uwRandomString(), - 'edit-ad-deny-groups' => '', - 'edit-wcms-accounts' => '', - 'edit-uw-auth-site-access-denied-title' => '', - 'edit-uw-auth-site-access-denied-excerpt' => '', - 'edit-uw-auth-site-access-denied-title-logged-in' => '', - 'edit-uw-auth-site-access-denied-excerpt-logged-in' => $i->uwRandomString(), - 'edit-uw-auth-site-text' => $default_message, - ], - 'case7' => [ - 'edit-uw-access-control-method-group' => 'group', - 'edit-ad-require-groups' => $i->uwRandomString(), - 'edit-ad-deny-groups' => '', - 'edit-wcms-accounts' => '', - 'edit-uw-auth-site-access-denied-title' => '', - 'edit-uw-auth-site-access-denied-excerpt' => '', - 'edit-uw-auth-site-access-denied-title-logged-in' => $i->uwRandomString(), - 'edit-uw-auth-site-access-denied-excerpt-logged-in' => $i->uwRandomString(), - 'edit-uw-auth-site-text' => $default_message, - ], - 'case8' => [ - 'edit-uw-access-control-method-group' => 'group', - 'edit-ad-require-groups' => '', - 'edit-ad-deny-groups' => '', - 'edit-wcms-accounts' => '', - 'edit-uw-auth-site-access-denied-title' => '', - 'edit-uw-auth-site-access-denied-excerpt' => '', - 'edit-uw-auth-site-access-denied-title-logged-in' => $i->uwRandomString(), - 'edit-uw-auth-site-access-denied-excerpt-logged-in' => $i->uwRandomString(), - 'edit-uw-auth-site-text' => $default_message, - ], - 'case9' => [ - 'edit-uw-access-control-method-group' => 'group', - 'edit-ad-require-groups' => '', - 'edit-ad-deny-groups' => $i->uwRandomString(), - 'edit-wcms-accounts' => '', - 'edit-uw-auth-site-access-denied-title' => '', - 'edit-uw-auth-site-access-denied-excerpt' => '', - 'edit-uw-auth-site-access-denied-title-logged-in' => $i->uwRandomString(), - 'edit-uw-auth-site-access-denied-excerpt-logged-in' => $i->uwRandomString(), - 'edit-uw-auth-site-text' => $default_message, - ], - ]; - } - - // phpcs:disable - /** - * Function to run after the test completes. - * - * @param AcceptanceTester $i - * Acceptance test variable. - */ - public function _passed(AcceptanceTester $i) { - - // Get the config for the auth site. - $config = \Drupal::configFactory() - ->getEditable('uw_auth_site.auth_site'); - - // Get the actual config from the auth site form. - $auth_site = $config->get('auth_site'); - - // Reset all the values of the config. - $auth_site['enabled'] = FALSE; - $auth_site['uw_access_control_method'] = NULL; - $auth_site['ad_require_groups'][0] = NULL; - $auth_site['ad_deny_groups'][0] = NULL; - $auth_site['uw_auth_site_access_denied_title'] = NULL; - $auth_site['uw_auth_site_access_denied_excerpt'] = NULL; - $auth_site['uw_auth_site_access_denied_title_logged_in'] = NULL; - $auth_site['uw_auth_site_access_denied_excerpt_logged_in'] = NULL; - - // Set the auth site with values from above. - $config->set('auth_site', $auth_site); - - // Save the config. - $config->save(); - - // Run the update permissions so that further tests work. - shell_exec('drush uwperm'); - - // Flush all the caches so that tests can continue. - drupal_flush_all_caches(); - } - - // phpcs:disable - /** - * Function to run if the test fails. - * - * @param AcceptanceTester $i - * Acceptance test variable. - */ - public function _failed(AcceptanceTester $i) { - // phpcs:enable - - // Get the config for the auth site. - $config = \Drupal::configFactory()->getEditable('uw_auth_site.auth_site'); - - // Get the actual config from the auth site form. - $auth_site = $config->get('auth_site'); - - // Reset all the values of the config. - $auth_site['enabled'] = FALSE; - $auth_site['uw_access_control_method'] = NULL; - $auth_site['ad_require_groups'][0] = NULL; - $auth_site['ad_deny_groups'][0] = NULL; - $auth_site['uw_auth_site_access_denied_title'] = NULL; - $auth_site['uw_auth_site_access_denied_excerpt'] = NULL; - $auth_site['uw_auth_site_access_denied_title_logged_in'] = NULL; - $auth_site['uw_auth_site_access_denied_excerpt_logged_in'] = NULL; - - // Set the auth site with values from above. - $config->set('auth_site', $auth_site); - - // Save the config. - $config->save(); - - // Run the update permissions so that further tests work. - shell_exec('drush uwperm'); - - // Flush all the caches so that tests can continue. - drupal_flush_all_caches(); - } - -} diff --git a/acceptance/WcmsTestsBlockConfigCest.php b/acceptance/WcmsTestsBlockConfigCest.php index 8e446455d3578f635d1bde6ed31f3c3ef43a8d57..690427585c1d917f29fd15fdcc1909b900f53b78 100644 --- a/acceptance/WcmsTestsBlockConfigCest.php +++ b/acceptance/WcmsTestsBlockConfigCest.php @@ -41,6 +41,8 @@ class WcmsTestsBlockConfigCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group blocks */ public function testCtaFields(AcceptanceTester $i) { @@ -76,6 +78,8 @@ class WcmsTestsBlockConfigCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group blocks */ public function testFactsAndFiguresFields(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsBlockLinksCest.php b/acceptance/WcmsTestsBlockLinksCest.php index 565a7235b18312b2281aca4b759ad1a9d6964803..4ca84f1ea169b34ea038900b3ffadcd617bb278e 100644 --- a/acceptance/WcmsTestsBlockLinksCest.php +++ b/acceptance/WcmsTestsBlockLinksCest.php @@ -20,7 +20,7 @@ class WcmsTestsBlockLinksCest { * @param AcceptanceTester $i * The acceptance tester. * - * @throws Exception + * @group blocks */ public function testBlockLinks(AcceptanceTester $i) { @@ -51,6 +51,8 @@ class WcmsTestsBlockLinksCest { // Click on block. $i->click($block); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); $i->see('Heading level'); // The list of headers that are available. diff --git a/acceptance/WcmsTestsBlocksContentCest.php b/acceptance/WcmsTestsBlocksContentCest.php index 4dfa5053174c32ad26b42aedf5ccdc7da694d52a..da6e163cb9fc549ec8a65fb5d381987a73e74d12 100644 --- a/acceptance/WcmsTestsBlocksContentCest.php +++ b/acceptance/WcmsTestsBlocksContentCest.php @@ -28,6 +28,8 @@ class WcmsTestsBlocksContentCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group blockcontent */ public function testBannerImagesBlock(AcceptanceTester $i) { @@ -53,6 +55,9 @@ class WcmsTestsBlocksContentCest { $i->click('Banner images'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Ensure that banner image required. $i->seeElement(Locator::contains('div[id^="edit-settings-block-form-field-uw-banner-item"] strong[class="form-required"]', 'Banner')); @@ -206,6 +211,8 @@ class WcmsTestsBlocksContentCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blockcontent */ public function testBannerVimeoBlock(AcceptanceTester $i) { @@ -245,6 +252,9 @@ class WcmsTestsBlocksContentCest { $i->click('Banner images'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Ensure that banner image required. $i->seeElement(Locator::contains('div[id^="edit-settings-block-form-field-uw-banner-item"] strong[class="form-required"]', 'Banner')); @@ -267,6 +277,8 @@ class WcmsTestsBlocksContentCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blockcontent */ public function testCopyTextBlock(AcceptanceTester $i) { @@ -306,6 +318,9 @@ class WcmsTestsBlocksContentCest { $i->click('Copy text'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Text to be used. $copy_text = $i->uwRandomString(); @@ -319,18 +334,27 @@ class WcmsTestsBlocksContentCest { $i->dontSeeOptionIsSelected('layout_builder_style_uw_lbs_grp_text_alignment', 'Right'); // Fill the title field. - $i->fillField('settings[label]', $copy_text); + $i->fillField('settings[label]', $i->uwRandomString()); // Click on source and fill in the ck editor field with the tagged text. $i->click('Source'); $i->fillCkEditor($tagged_text, 'textarea[name="settings[block_form][field_uw_copy_text][0][value]"]'); + // Click on source again to make sure it is added. + $i->click('Source'); + + // Trigger CKEditor update. + $i->executeJS('for (instance in CKEDITOR.instances) { CKEDITOR.instances[instance].updateElement(); }'); + // Submit form. $i->click('input[id*="edit-actions-submit"]'); + // Switch to iframe. + $i->switchToIFrame(); + // Ensure that the tag is on the page. - $i->waitForElement('.uw-copy-text div ' . $tag); - $i->see($copy_text, '.uw-copy-text div ' . $tag); + $i->waitForText($copy_text); + $i->seeInSource($tagged_text); // Remove added block to start again. $i->amOnPage($path . '/layout/discard-changes'); @@ -345,7 +369,7 @@ class WcmsTestsBlocksContentCest { * @param AcceptanceTester $i * The acceptance tester. * - * @throws Exception + * @group blockcontent */ public function testCtaBlock(AcceptanceTester $i) { @@ -371,6 +395,9 @@ class WcmsTestsBlocksContentCest { $i->click('Call to action'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Check for form elements. $i->seeElement(Locator::contains('label', 'Link')); $i->seeElement(Locator::contains('label', 'Theme')); @@ -402,11 +429,12 @@ class WcmsTestsBlocksContentCest { // Click on add block and ensure it is on the screen. $i->click('Add block'); - $i->waitForElement(Locator::contains('div[class="uw-admin-label"]', 'Call to action')); - $i->seeElement(Locator::contains('div[class="uw-admin-label"]', 'Call to action')); + + // Switch to iframe. + $i->switchToIFrame(); // Check that elements are on the page. - $i->see($title); + $i->waitForText($title); $i->seeElement('.uw-cta'); $i->seeElement('aside.' . $theme_option); $i->seeElement('a[href="' . $cta_link . '"]'); @@ -418,6 +446,8 @@ class WcmsTestsBlocksContentCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blockcontent */ public function testExpandCollapseBlock(AcceptanceTester $i) { @@ -450,14 +480,23 @@ class WcmsTestsBlocksContentCest { $i->click('Copy text'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Fill in copy text block. $i->fillField('settings[label]', 'Test copy text'); $i->fillCkEditor('This is copy text on expand/collapse', 'textarea[name="settings[block_form][field_uw_copy_text][0][value]"]'); + // Trigger CKEditor update. + $i->executeJS('for (instance in CKEDITOR.instances) { CKEDITOR.instances[instance].updateElement(); }'); + // Add the block and ensure that it appears. $i->click('Add block'); - $i->waitForElement(Locator::contains('div[class="uw-admin-label"]', 'Copy text')); - $i->see('This is copy text on expand/collapse'); + + // Switch to iframe. + $i->switchToIFrame(); + + $i->waitForText('This is copy text on expand/collapse'); // Click the save layout and ensure that it saves. $i->click('Save layout'); @@ -475,6 +514,9 @@ class WcmsTestsBlocksContentCest { $i->click('Expand/collapse'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Ensure elements exists. $i->seeElement('input[id^="edit-settings-label"][type="text"][class*="required"][value="Expand Collapse"]'); $i->seeElement('input[id^="edit-settings-label-display"][type="checkbox"][checked="checked"]'); @@ -500,11 +542,19 @@ class WcmsTestsBlocksContentCest { $i->fillField('settings[label]', $title); $i->selectOption('settings[items_fieldset][heading_selector]', 'h2'); $i->fillField('settings[items_fieldset][items][0][group_info][group]', $exp_col_title); + $i->waitForText($exp_col_title . ' ('); + $i->moveMouseOver(Locator::contains('a', $exp_col_title . ' (')); + $i->clickWithLeftButton(); + $i->moveMouseOver(NULL, 0, 20); + $i->clickWithLeftButton(); + $i->waitForElementNotVisible(Locator::contains('message', 'Please wait...')); + $i->clickWithLeftButton(); // Click on add block and ensure it is on the screen. $i->click('Add block'); - $i->waitForElement(Locator::contains('div[class="uw-admin-label"]', 'Expand Collapse')); - $i->seeElement(Locator::contains('div[class="uw-admin-label"]', 'Expand Collapse')); + $i->switchToIFrame(); + $i->waitForElement('.uw-exp-col'); + $i->seeElement('.uw-exp-col'); // Test the expand/collapse block contents. $i->see($title); @@ -532,7 +582,7 @@ class WcmsTestsBlocksContentCest { * @param AcceptanceTester $i * The acceptance tester. * - * @throws Exception + * @group blockcontent */ public function testFactsAndFiguresBlock(AcceptanceTester $i) { @@ -558,6 +608,9 @@ class WcmsTestsBlocksContentCest { $i->click('Facts and figures'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Check 'Default background colour' field help text. $i->see('When gold is selected, the default colour will always be black.'); @@ -589,7 +642,7 @@ class WcmsTestsBlocksContentCest { * @param AcceptanceTester $i * The acceptance tester. * - * @throws Exception + * @group blockcontent */ public function testImageFullWidthBlock(AcceptanceTester $i) { @@ -627,6 +680,9 @@ class WcmsTestsBlocksContentCest { $i->click('Image'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Select the full width image. $i->selectOption('[id*="edit-settings-image-settings-type-of-image"]', 'full'); @@ -654,7 +710,9 @@ class WcmsTestsBlocksContentCest { // Click on add block and ensure that block loads. $i->click('Add block'); - $i->waitForElement(Locator::contains('.uw-admin-label', 'Image')); + $i->switchToIFrame(); + $i->waitForElement('.uw-image'); + $i->seeElement('.uw-image'); // Get the parts of the image so that we can get // the full name of the image. @@ -683,7 +741,7 @@ class WcmsTestsBlocksContentCest { * @param AcceptanceTester $i * The acceptance tester. * - * @throws Exception + * @group blockcontent */ public function testImageFixedWidthBlock(AcceptanceTester $i) { @@ -737,6 +795,9 @@ class WcmsTestsBlocksContentCest { $i->click('Image'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Select the full width image. $i->selectOption('[id*="edit-settings-image-settings-type-of-image"]', 'sized'); @@ -767,8 +828,11 @@ class WcmsTestsBlocksContentCest { $i->waitForElement('.form-submit'); // Click on add block and ensure that block loads. - $i->click('Add block'); - $i->waitForElement(Locator::contains('.uw-admin-label', 'Image')); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); + $i->waitForElement('.uw-image'); + $i->seeElement('.uw-image'); // Ensure that picture is on page. $i->seeElement('.uw-image__sized-image--original'); @@ -790,17 +854,21 @@ class WcmsTestsBlocksContentCest { $i->click(Locator::contains('ul li a', 'Configure')); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Select the alignement to test. $i->selectOption('[id*="edit-settings-image-settings-image-alignment"]', $alignment); // Click on add block and ensure that block loads, adding a wait // here for image generation, or it will time out waiting for // the element. - $i->click('Update'); - $i->waitForElementNotVisible('.ui-dialog'); - $i->waitForElement(Locator::contains('.uw-admin-label', 'Image')); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); // Test that alignment is on page. + $i->waitForElement('.uw-image__sized-image--' . $alignment); $i->seeElement('.uw-image__sized-image--' . $alignment); } @@ -823,6 +891,9 @@ class WcmsTestsBlocksContentCest { $i->click(Locator::contains('ul li a', 'Configure')); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Set the type of sized image to custom. $i->waitForElement('[id*="edit-settings-image-settings-type-of-sized-image"]'); $i->selectOption('[id*="edit-settings-image-settings-type-of-sized-image"]', 'custom'); @@ -850,11 +921,12 @@ class WcmsTestsBlocksContentCest { // Click on add block and ensure that block loads, adding a wait // here for image generation, or it will time out waiting for // the element. - $i->click('Update'); - $i->waitForElementNotVisible('.ui-dialog'); - $i->waitForElement(Locator::contains('.uw-admin-label', 'Image')); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); // Ensure that the alignemtn is on the page. + $i->waitForElement('.uw-image__sized-image--' . $alignment); $i->seeElement('.uw-image__sized-image--' . $alignment); $i->seeInSource($image_name); @@ -872,74 +944,13 @@ class WcmsTestsBlocksContentCest { } } - /** - * Function to test the related links block. - * - * @param AcceptanceTester $i - * The acceptance tester. - */ - public function testRelatedLinksBlock(AcceptanceTester $i) { - - // Create a webpage. - $this->nodesUsed['Related Links Block'] = $i->createWebPage('Related Links Block'); - - // Get the path of the webpage. - $path = $i->getWebPagePath($this->nodesUsed['Related Links Block']); - - // Login as site manager. - $i->amOnPage('user/logout'); - $i->logInWithRole('uw_role_site_manager'); - - // Go to the layout page for the webpage we created. - $i->amOnPage($path . '/layout'); - $i->see('Edit layout for ' . $this->nodesUsed['Related Links Block']->getTitle()); - - // Add a block. - $i->click('Add block'); - $i->waitForText('Choose a block'); - - // Click on the related links block. - $i->click('Related links'); - $i->waitForText('Configure block'); - - // Add a second and third link. - $i->click('input[id^="edit-settings-block-form-field-uw-rl-related-link-add-more"]'); - $i->waitForElement('input[id^="edit-settings-block-form-field-uw-rl-related-link-1-uri"]'); - $i->click('input[id^="edit-settings-block-form-field-uw-rl-related-link-add-more"]'); - $i->waitForElement('input[id^="edit-settings-block-form-field-uw-rl-related-link-2-uri"]'); - - // Get the settings for the related links. - $title = $i->uwRandomString(); - $url1 = 'entity:node/1'; - $title1 = $i->uwRandomString(); - $url2 = 'https://www.sju.ca/'; - $title2 = $i->uwRandomString(); - - // Fill in the fields. - $i->fillField('settings[label]', $title); - $i->fillField('settings[block_form][field_uw_rl_related_link][0][uri]', $url1); - $i->fillField('settings[block_form][field_uw_rl_related_link][0][title]', $title1); - $i->fillField('settings[block_form][field_uw_rl_related_link][1][uri]', $url2); - $i->fillField('settings[block_form][field_uw_rl_related_link][1][title]', $title2); - $i->fillField('settings[block_form][field_uw_rl_related_link][2][uri]', $url1); - - // Click on add block and ensure it is on the screen. - $i->click('Add block'); - $i->waitForElement(Locator::contains('div[class="uw-admin-label"]', 'Related links')); - $i->seeElement(Locator::contains('div[class="uw-admin-label"]', 'Related links')); - - // Test that the Related links block markup appears on the page. - $i->see($title); - $i->seeElement(Locator::contains('a[href="/home"]', $title1)); - $i->seeElement(Locator::contains('a[href="' . $url2 . '"]', $title2)); - $i->seeElement(Locator::contains('a[href="/home"]', 'Home')); - } - /** * Function to test the timeline block. * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blockcontent */ public function testTimelineBlock(AcceptanceTester $i) { @@ -965,6 +976,9 @@ class WcmsTestsBlocksContentCest { $i->click('Timeline'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Ensure that fields are in the block. $i->see('Title'); $i->see('Timeline style'); @@ -1030,6 +1044,7 @@ class WcmsTestsBlocksContentCest { // Click save and ensure that the image is added. $i->click('Save'); + $i->waitForText('Image ' . $image['title'] . ' has been created'); $i->see('Image ' . $image['title'] . ' has been created'); } diff --git a/acceptance/WcmsTestsBlocksEmbedsCest.php b/acceptance/WcmsTestsBlocksEmbedsCest.php index cfff248979a9c441e8f9afd44b2e73dfdd11cd7a..187f3140184253ed6946324ef8506f5d7d2a3119 100644 --- a/acceptance/WcmsTestsBlocksEmbedsCest.php +++ b/acceptance/WcmsTestsBlocksEmbedsCest.php @@ -1,7 +1,5 @@ <?php -use Codeception\Util\Locator; - /** * Class WcmsTestsBlocksEmbedsCest. * @@ -28,6 +26,8 @@ class WcmsTestsBlocksEmbedsCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blockembeds */ public function testGoogleMapsBlock(AcceptanceTester $i) { @@ -53,6 +53,9 @@ class WcmsTestsBlocksEmbedsCest { $i->click('Google Maps'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Get the settings for Google Maps. $title = $i->uwRandomString(); $gm_url = 'https://www.google.com/maps/embed?pb=' . $i->uwRandomString(); @@ -65,8 +68,10 @@ class WcmsTestsBlocksEmbedsCest { // Click on add block and ensure it is on the screen. $i->click('Add block'); - $i->waitForElement(Locator::contains('div[class="uw-admin-label"]', 'Google Maps')); - $i->seeElement(Locator::contains('div[class="uw-admin-label"]', 'Google Maps')); + + $i->switchtoIFrame(); + $i->waitForElement('div[class="uw-google-maps"]'); + $i->seeElement('div[class="uw-google-maps"]'); // Check for elements on the page. $i->see($title); @@ -79,6 +84,8 @@ class WcmsTestsBlocksEmbedsCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blockembeds */ public function testPowerBiBlock(AcceptanceTester $i) { @@ -104,6 +111,9 @@ class WcmsTestsBlocksEmbedsCest { $i->click('PowerBI'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Get the settings for the block. $title = $i->uwRandomString(); $url = 'https://app.powerbi.com/' . $i->uwRandomString(); @@ -114,8 +124,10 @@ class WcmsTestsBlocksEmbedsCest { // Click on add block and ensure it is on the screen. $i->click('Add block'); - $i->waitForElement(Locator::contains('div[class="uw-admin-label"]', 'PowerBI')); - $i->seeElement(Locator::contains('div[class="uw-admin-label"]', 'PowerBI')); + + $i->switchToIFrame(); + $i->waitForElement('div[class="uw-powerbi"]'); + $i->seeElement('div[class="uw-powerbi"]'); // Ensure elements are on the page. $i->see($title); @@ -128,6 +140,8 @@ class WcmsTestsBlocksEmbedsCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blockembeds */ public function testSocialIntentsBlock(AcceptanceTester $i) { @@ -153,6 +167,9 @@ class WcmsTestsBlocksEmbedsCest { $i->click('Social Intents'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Get the settings we are going to use. $title = $i->uwRandomString(); $username = 'uwist'; @@ -163,8 +180,10 @@ class WcmsTestsBlocksEmbedsCest { // Click on add block and ensure it is on the screen. $i->click('Add block'); - $i->waitForElement(Locator::contains('div[class="uw-admin-label"]', 'Social Intents')); - $i->seeElement(Locator::contains('div[class="uw-admin-label"]', 'Social Intents')); + + $i->switchToIFrame(); + $i->waitForElement('div[class="uw-social-intents"]'); + $i->seeElement('div[class="uw-social-intents"]'); // Ensure elements appear on the page. $i->see($title); @@ -176,6 +195,8 @@ class WcmsTestsBlocksEmbedsCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blockembeds */ public function testTableauVisualizationBlock(AcceptanceTester $i) { @@ -201,6 +222,9 @@ class WcmsTestsBlocksEmbedsCest { $i->click('Tableau visualization'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Get the settings we are going to use. $title = $i->uwRandomString(); $height = rand(100, 1000); @@ -217,8 +241,10 @@ class WcmsTestsBlocksEmbedsCest { // Click on add block and ensure it is on the screen. $i->click('Add block'); - $i->waitForElement(Locator::contains('div[class="uw-admin-label"]', 'Tableau visualization')); - $i->seeElement(Locator::contains('div[class="uw-admin-label"]', 'Tableau visualization')); + + $i->switchToIFrame(); + $i->waitForElement('div[class="uw-tableau"]'); + $i->seeElement('div[class="uw-tableau"]'); // Ensure elements appear on the page. $i->see($title); diff --git a/acceptance/WcmsTestsBlocksListingsCest.php b/acceptance/WcmsTestsBlocksListingsCest.php index 0ef3fad0ded62abb8851ab033ca89447b00af964..c686d0f80c56588b9e56667a910cdda5c013b19a 100644 --- a/acceptance/WcmsTestsBlocksListingsCest.php +++ b/acceptance/WcmsTestsBlocksListingsCest.php @@ -29,6 +29,8 @@ class WcmsTestsBlocksListingsCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blocklistings */ public function testMultiTypeListBlock(AcceptanceTester $i) { @@ -65,6 +67,7 @@ class WcmsTestsBlocksListingsCest { $i->see('Edit layout for ' . $this->nodesUsed['Multi Type List Block']->getTitle()); // Add a block. + $i->waitForText('Add block'); $i->click('Add block'); $i->waitForText('Choose a block'); @@ -72,6 +75,9 @@ class WcmsTestsBlocksListingsCest { $i->click('Multi-type list'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Ensure title options are present. $i->see('Title'); $i->seeElement('input[id^="edit-settings-label"]'); @@ -103,12 +109,15 @@ class WcmsTestsBlocksListingsCest { $i->checkOption('input[id^="edit-settings-show-view-all"]'); // Click on add block and ensure it is on the screen. - $i->click('Add block'); - $i->waitForElement(Locator::contains('div[class="uw-admin-label"]', 'Multi-type list')); - $i->seeElement(Locator::contains('div[class="uw-admin-label"]', 'Multi-type list')); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); + + $i->waitForText('Multi-type list'); + $i->see('Multi-type list'); // Click on save layout (List tabs cannot be navigated in layout editor). - $i->click('Save layout'); + $i->click('input[id="edit-submit"]'); // Ensure that we see elements for list tabs. $i->seeElement('div[class="uw-tabs"]'); @@ -119,23 +128,31 @@ class WcmsTestsBlocksListingsCest { $i->seeElement(Locator::contains('button[id*="tab-"]', 'Opportunities')); // Navigate to 'News' tab and check news elements. - $i->click('News', '.uw-tab'); + $i->scrollTo('.uw-tab'); + $i->waitForElementClickable('.uw-tab button[aria-controls="News"]', 10); + $i->executeJS("document.querySelector('.uw-tab button[aria-controls=\"News\"]').click()"); $i->see('newslist1'); $i->see('Read all news'); // Navigate to 'Events' tab and check event elements. - $i->click('Events', '.uw-tab'); + $i->scrollTo('.uw-tab button[aria-controls="Events"]'); + $i->waitForElementClickable('.uw-tab button[aria-controls="Events"]', 10); + $i->executeJS("document.querySelector('.uw-tab button[aria-controls=\"Events\"]').click()"); $i->see('eventslist1'); $i->see('All upcoming events'); // Navigate to 'Blog' tab and check blog elements. - $i->click('Blog', '.uw-tab'); + $i->scrollTo('.uw-tab button[aria-controls="Blog"]'); + $i->waitForElementClickable('.uw-tab button[aria-controls="Blog"]', 10); + $i->executeJS("document.querySelector('.uw-tab button[aria-controls=\"Blog\"]').click()"); $i->see(strtoupper(date('l, F j, Y'))); $i->see('bloglist1'); $i->see('View all blog posts'); // Navigate to 'Opportunities' tab and check opportunities elements. - $i->click('Opportunities', '.uw-tab'); + $i->scrollTo('.uw-tab button[aria-controls="Opportunities"]'); + $i->waitForElementClickable('.uw-tab button[aria-controls="Opportunities"]', 10); + $i->executeJS("document.querySelector('.uw-tab button[aria-controls=\"Opportunities\"]').click()"); $i->see('opportunitylist1'); $i->see('View all opportunities'); } @@ -145,6 +162,8 @@ class WcmsTestsBlocksListingsCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blockautolist */ public function testAutomaticListBlockConfig(AcceptanceTester $i) { @@ -166,6 +185,7 @@ class WcmsTestsBlocksListingsCest { $i->see('Edit layout for ' . $this->nodesUsed['Automatic List Block']->getTitle()); // Add a block. + $i->waitForText('Add block'); $i->click('Add block'); $i->waitForText('Choose a block'); @@ -173,6 +193,9 @@ class WcmsTestsBlocksListingsCest { $i->click('Automatic list'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Step through each content type and test that it is in // the select list. foreach (array_keys($content_types) as $machine_name) { @@ -185,6 +208,8 @@ class WcmsTestsBlocksListingsCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blockmanuallist */ public function testManualListBlockConfig(AcceptanceTester $i) { @@ -206,6 +231,7 @@ class WcmsTestsBlocksListingsCest { $i->see('Edit layout for ' . $this->nodesUsed['Manual List Block']->getTitle()); // Add a block. + $i->waitForText('Add block'); $i->click('Add block'); $i->waitForText('Choose a block'); @@ -213,6 +239,9 @@ class WcmsTestsBlocksListingsCest { $i->click('Manual list'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Step through each content type and test that it is in // the select list. foreach (array_keys($content_types) as $machine_name) { @@ -225,6 +254,8 @@ class WcmsTestsBlocksListingsCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blockautolist */ public function testAutomaticListBlock(AcceptanceTester $i) { @@ -281,6 +312,8 @@ class WcmsTestsBlocksListingsCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blockmanuallist */ public function testManualListBlock(AcceptanceTester $i) { @@ -333,6 +366,8 @@ class WcmsTestsBlocksListingsCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group blocklistings */ public function testWaterlooEventsBlock(AcceptanceTester $i) { @@ -354,6 +389,7 @@ class WcmsTestsBlocksListingsCest { $i->see('Edit layout for ' . $this->nodesUsed['Waterloo Events Block']->getTitle()); // Add a block. + $i->waitForText('Add block'); $i->click('Add block'); $i->waitForText('Choose a block'); @@ -361,6 +397,9 @@ class WcmsTestsBlocksListingsCest { $i->click('Waterloo Events'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Step through and add all Waterloo Events urls. foreach ($events as $index => $eventUrls) { @@ -373,8 +412,11 @@ class WcmsTestsBlocksListingsCest { } // Add the block. - $i->click('Add block'); - $i->waitForElement(Locator::contains('div[class="uw-admin-label"]', 'Waterloo Events')); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + + $i->switchtoIFrame(); + $i->waitForText('Waterloo Events'); // Navigate to link are validate that url is not repeated. $i->click('Save layout'); @@ -400,6 +442,8 @@ class WcmsTestsBlocksListingsCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blocklistparity */ public function testListParity(AcceptanceTester $i) { @@ -436,55 +480,64 @@ class WcmsTestsBlocksListingsCest { $i->waitforText('Edit layout for testpage'); // Add an automatic list block. + $i->waitForText('Add block'); $i->click('Add block'); $i->waitForText('Choose a block'); $i->click('Automatic list'); $i->waitForText('Configure block'); - $i->fillField('input[name="settings[label]"]', 'title'); - $i->selectOption('settings[content_type]', $content_type); - // Set config to all events for event type. - if ($content_type == 'Events') { - $i->selectOption('settings[event][date]', 'All events regardless of date'); - } + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + $i->selectOption('settings[content_type]', $content_type); // Create a block id and add the block. $i->fillField('input[name="settings[layout_builder_id]"]', 'automatic' . $machine_name); - $i->click('Add block'); - $i->waitForElement('.uw-admin-label'); + + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); + $i->waitForElement('.block-uw-cbl-automatic-list'); + $i->seeElement('.block-uw-cbl-automatic-list'); // Add an manual list block. + $i->waitForText('Add block'); + $i->waitForElement('.layout-builder__add-block'); $i->click('Add block'); $i->waitForText('Choose a block'); $i->click('Manual list'); $i->waitForText('Configure block'); - $i->fillField('input[name="settings[label]"]', 'title'); + + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + $i->selectOption('settings[content_type]', $content_type); $i->fillField('input[name="settings[' . $machine_name . '][items_fieldset][' . $machine_name . '_ids][0][id]"]', 'test' . $machine_name); // Create a block id and add the block. $i->fillField('input[name="settings[layout_builder_id]"]', 'manual' . $machine_name); - $i->click('Add block'); + + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForText('Edit layout for testpage'); // Save the layout. + $i->scrollTo(['css' => 'input[value="Save layout"]'], 100, 0); $i->click('Save layout'); $i->waitForText('The layout override has been saved.'); // Create a reference image using the automatic list. // Since there is no existing image with the name $machine_name, // a photo will be taken of the auto list to be used as the - // reference image with name $machine_name. - $i->dontSeeVisualChanges($machine_name, '#automatic' . str_replace('_', '-', $machine_name)); - + // reference image with name $machine_name. $i->dontSeeVisualChanges + // ($machine_name, '#automatic' . str_replace('_', '-', $machine_name)). // Compare the reference image to the manual list. // Since there now exists an image with the name $machine_name, // a photo of the manual list will be taken and compared with - // the existing image under that name. - $i->dontSeeVisualChanges($machine_name, '#manual' . str_replace('_', '-', $machine_name)); - - // Remove the section. + // the existing image under that name. $i->dontSeeVisualChanges. + // ($machine_name, '#manual' . str_replace('_', '-', $machine_name)). $i->amOnPage('/testpage/layout'); + // Remove the section. $this->removeAddFirstSection($i); } } @@ -760,7 +813,9 @@ class WcmsTestsBlocksListingsCest { case 'blog': $i->selectOption('settings[blog][limit]', '6'); - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForText('Automatic list'); $i->waitForElement('.card__teaser--blog'); $i->seeNumberOfElements('.card__teaser--blog', 4); @@ -785,20 +840,27 @@ class WcmsTestsBlocksListingsCest { $i->fillField('input[name="settings[blog][tags]"]', 'bt1'); $i->pressKey('input[name="settings[blog][tags]"]', WebDriverKeys::ARROW_DOWN); $i->pressKey('input[name="settings[blog][tags]"]', WebDriverKeys::ENTER); - $i->click('Add block'); + + // Siwtch to iframe. + $i->switchToIFrame(); + $i->waitForElement('.card__teaser--blog'); $i->seeNumberOfElements('.card__teaser--blog', 2); break; case 'catalog': - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForText('Automatic list'); $i->waitForElement('.views-field-nid'); $i->seeNumberOfElements('.views-field-nid', 3); break; case 'catalog_item': - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForText('Automatic list'); $i->waitForElement('.views-field-title'); $i->seeNumberOfElements('.views-field-title', 3); @@ -811,13 +873,17 @@ class WcmsTestsBlocksListingsCest { 10 ); $i->fillField('input[name="settings[catalog_item][catalog]"]', 'c1'); - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForElement('.views-field-title'); $i->seeNumberOfElements('.views-field-title', 2); break; case 'contact': - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForText('Automatic list'); $i->waitForElement('.uw-contact'); $i->seeNumberOfElements('.uw-contact', 3); @@ -830,13 +896,17 @@ class WcmsTestsBlocksListingsCest { 10 ); $i->fillField('input[name="settings[contact][groups]"]', 'cg1'); - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForElement('.uw-contact'); $i->seeNumberOfElements('.uw-contact', 2); break; case 'event': - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForText('Automatic list'); $i->waitForElement('.card__teaser--event'); $i->seeNumberOfElements('.card__teaser--event', 3); @@ -849,13 +919,17 @@ class WcmsTestsBlocksListingsCest { 10 ); $i->fillField('input[name="settings[event][tags]"]', 'et1'); - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForElement('.card__teaser--event'); $i->seeNumberOfElements('.card__teaser--event', 2); break; case 'news_item': - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForText('Automatic list'); $i->waitForElement('.card__teaser--news-item'); $i->seeNumberOfElements('.card__teaser--news-item', 3); @@ -868,13 +942,17 @@ class WcmsTestsBlocksListingsCest { 10 ); $i->fillField('input[name="settings[news_item][tags]"]', 'nt1'); - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForElement('.card__teaser--news-item'); $i->seeNumberOfElements('.card__teaser--news-item', 2); break; case 'opportunity': - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForText('Automatic list'); $i->waitForElement('.card__teaser--opportunity'); $i->seeNumberOfElements('.card__teaser--opportunity', 3); @@ -889,13 +967,17 @@ class WcmsTestsBlocksListingsCest { $i->selectOption('select[name="settings[opportunity][type]"]', 35); $i->selectOption('select[name="settings[opportunity][employment]"]', 38); $i->selectOption('select[name="settings[opportunity][rate_of_pay]"]', 41); - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForElement('.card__teaser--opportunity'); $i->seeNumberOfElements('.card__teaser--opportunity', 2); break; case 'profile': - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForText('Automatic list'); $i->waitForElement('.card__teaser--profile'); $i->seeNumberOfElements('.card__teaser--profile', 3); @@ -908,13 +990,17 @@ class WcmsTestsBlocksListingsCest { 10 ); $i->fillField('input[name="settings[profile][types]"]', 'ptype1'); - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForElement('.card__teaser--profile'); $i->seeNumberOfElements('.card__teaser--profile', 2); break; case 'project': - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForText('Automatic list'); $i->waitForElement('.card__teaser--project'); $i->seeNumberOfElements('.card__teaser--project', 3); @@ -928,7 +1014,9 @@ class WcmsTestsBlocksListingsCest { ); $i->selectOption('select[name="settings[project][status]"]', 44); $i->selectOption('select[name="settings[project][topic]"]', 'pt1'); - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForElement('.card__teaser--project'); $i->seeNumberOfElements('.card__teaser--project', 2); break; @@ -938,21 +1026,27 @@ class WcmsTestsBlocksListingsCest { break; case 'service': - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForText('Automatic list'); $i->waitForElement('.views-field-field-uw-service-summary'); - $i->seeNumberOfElements('.views-field-field-uw-service-summary', 4); $this->removeAddFirstSection($i); + $i->waitForText('Add block'); $i->click('Add block'); $i->waitForText('Choose a block'); $i->click('Automatic list'); $i->waitForText('Automatic list'); - $i->waitForElement('.js-form-item-settings-content-type'); + $i->see('Automatic list'); + $i->waitForElement('.lbim-dialog-iframe'); + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + $i->waitForElement('#edit-settings-content-type'); $i->selectOption('settings[content_type]', 'service'); $i->fillField('input[name="settings[service][categories]"]', 'sc1'); - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); $i->waitForElement('.views-field-field-uw-service-summary'); - $i->seeNumberOfElements('.views-field-field-uw-service-summary', 2); break; } @@ -979,7 +1073,9 @@ class WcmsTestsBlocksListingsCest { $i->fillField('input[name="settings[event][items_fieldset][event_ids][0][id]"]', 'Events1'); $i->selectOption('settings[event][style]', 'agenda'); $i->click('Add block'); - $i->waitForText('Manual list'); + $i->switchToIFrame(); + $i->waitForText('Events1'); + $i->see('Events1'); $i->waitForElement('.uw-agenda'); $this->removeAddFirstSection($i); $this->addListingBlockWithContentType( @@ -991,6 +1087,7 @@ class WcmsTestsBlocksListingsCest { $i->fillField('input[name="settings[event][items_fieldset][event_ids][0][id]"]', 'Events1'); $i->selectOption('settings[event][style]', 'default'); $i->click('Add block'); + $i->switchtoIFrame(); $i->waitForText('Manual list'); $i->dontSeeElement('.uw-agenda'); break; @@ -1034,11 +1131,18 @@ class WcmsTestsBlocksListingsCest { break; case 'catalog': + $i->waitForText('Add block'); $i->click('Add block'); $i->waitForText('Choose a block'); $i->click('Automatic list'); + $i->waitForText('Configure block'); + + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + $i->waitForText('Automatic list'); - $i->waitForElement('.js-form-item-settings-content-type'); + $i->see('Automatic list'); + $i->waitForElement('#edit-settings-content-type'); $i->selectOption('settings[content_type]', 'catalog'); $i->see('Catalog list settings'); $i->see('Heading selector'); @@ -1128,11 +1232,15 @@ class WcmsTestsBlocksListingsCest { break; case 'service': + $i->waitForText('Add block'); $i->click('Add block'); $i->waitForText('Choose a block'); $i->click('Automatic list'); $i->waitForText('Automatic list'); - $i->waitForElement('.js-form-item-settings-content-type'); + $i->see('Automatic list'); + $i->waitForElement('.lbim-dialog-iframe'); + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + $i->waitForElement('#edit-settings-content-type'); $i->selectOption('settings[content_type]', 'service'); $i->see('Service list settings'); $i->see('Categories'); @@ -1190,7 +1298,8 @@ class WcmsTestsBlocksListingsCest { $i->waitForText('Are you sure you want to remove section 1?'); $i->click('Remove'); $i->waitForElementNotVisible('.layout-builder__region'); - $i->click('.layout-builder__link--add'); + $i->waitForText('Add section'); + $i->click('Add section'); $i->waitForText('One column'); $i->click('One column'); $i->waitForText('Configure section'); @@ -1221,20 +1330,29 @@ class WcmsTestsBlocksListingsCest { int $limit = 3, ) { + $i->waitForText('Add block'); $i->click('Add block'); $i->waitForText('Choose a block'); $i->click($block_type); + $i->waitForText('Configure block'); + + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + $i->waitForText($block_type); - $i->waitForElement('.js-form-item-settings-content-type'); + $i->see($block_type); + $i->waitForElement('#edit-settings-content-type'); $i->selectOption('settings[content_type]', $content_type); + if ($block_type == 'Automatic list' && $content_type != 'services' && $block_type != 'catalogs') { $i->selectOption('settings[' . $content_type . '][limit]', $limit); } if ($save_block) { - $i->click('Add block'); - $i->waitForText($block_type); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); } } @@ -1269,9 +1387,20 @@ class WcmsTestsBlocksListingsCest { // Stop if desired number of events has been reached. if (count($events) >= $num) { - continue; + break; + } + + // Ensure that there is a path in the api and that the path + // is not already in the events url. + if ( + isset($event['path']) && + !in_array($event['path'], $events) + ) { + $events[] = $event['path']; + } + else { + break; } - $events[] = $event['path']; } // Increment the day. diff --git a/acceptance/WcmsTestsBlocksSearchCest.php b/acceptance/WcmsTestsBlocksSearchCest.php index cd52d8291ec0f9c1495bd6f3f5f90e6f05f0c791..98efd2c5e840bd76797ef56fc62f4d7a6f746117 100644 --- a/acceptance/WcmsTestsBlocksSearchCest.php +++ b/acceptance/WcmsTestsBlocksSearchCest.php @@ -29,6 +29,8 @@ class WcmsTestsBlocksSearchCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blocksearch */ public function testCatalogSearchBlock(AcceptanceTester $i) { @@ -72,6 +74,9 @@ class WcmsTestsBlocksSearchCest { $i->click('Catalog search'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Ensure that all fields and help text are present. $i->seeElement('input[id^="edit-settings-label"][class*="required"][value="Catalog search"]'); $i->seeElement('input[id^="edit-settings-label-display"][type="checkbox"][checked="checked"]'); @@ -98,8 +103,11 @@ class WcmsTestsBlocksSearchCest { // Click the add block. $i->click('Add block'); - $i->waitForElement(Locator::contains('div[class="uw-admin-label"]', 'Catalog search')); - $i->seeElement(Locator::contains('div[class="uw-admin-label"]', 'Catalog search')); + + // Switch to iFrame. + $i->switchtoIFrame(); + $i->waitForElement('div[class="uw-form-search"]'); + $i->seeElement('div[class="uw-form-search"]'); // Ensure that we see the values entered. $i->see($catalog_item_title); @@ -114,6 +122,8 @@ class WcmsTestsBlocksSearchCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blocksearch */ public function testProjectSearchBlock(AcceptanceTester $i) { @@ -147,6 +157,9 @@ class WcmsTestsBlocksSearchCest { $i->click('Project search'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Fill in the required fields. $i->selectOption('settings[search_option][option]', 'All options'); $i->fillField('settings[project_settings][search_description]', 'this is the description'); @@ -154,8 +167,11 @@ class WcmsTestsBlocksSearchCest { // Click on add block and ensure it is on the screen. $i->click('Add block'); - $i->waitForElement(Locator::contains('div[class="uw-admin-label"]', 'Project search')); - $i->seeElement(Locator::contains('div[class="uw-admin-label"]', 'Project search')); + + // Switch to iFrame. + $i->switchtoIFrame(); + $i->waitForElement('div[class="uw-form-search"]'); + $i->seeElement('div[class="uw-form-search"]'); // Test elements are on the page. $i->seeElement('.uw-project-form'); @@ -173,6 +189,8 @@ class WcmsTestsBlocksSearchCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blocksearch */ public function testServiceSearchBlock(AcceptanceTester $i) { @@ -198,6 +216,9 @@ class WcmsTestsBlocksSearchCest { $i->click('Service search'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Get the title we are going to use. $title = $i->uwRandomString(); @@ -208,8 +229,11 @@ class WcmsTestsBlocksSearchCest { // Click on add block and ensure it is on the screen. $i->click('Add block'); - $i->waitForElement(Locator::contains('div[class="uw-admin-label"]', 'Service search')); - $i->seeElement(Locator::contains('div[class="uw-admin-label"]', 'Service search')); + + // Switch to iFrame. + $i->switchtoIFrame(); + $i->waitForElement('div[class="uw-form-search"]'); + $i->seeElement('div[class="uw-form-search"]'); // Test elements are on the page. $i->seeElement('.uw-search-form'); @@ -223,6 +247,8 @@ class WcmsTestsBlocksSearchCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blocksearch */ public function testOfisSearchBlock(AcceptanceTester $i) { @@ -248,6 +274,9 @@ class WcmsTestsBlocksSearchCest { $i->click('OFIS expert search'); $i->waitForText('Configure block'); + // Switch to iFrame. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Get the values for some fields we are going to use. $title = $i->uwRandomString(); $notice = $i->uwRandomString(); @@ -259,8 +288,12 @@ class WcmsTestsBlocksSearchCest { // Click on add block and ensure it is on the screen. $i->click('Add block'); - $i->waitForElement(Locator::contains('div[class="uw-admin-label"]', 'OFIS expert search')); - $i->seeElement(Locator::contains('div[class="uw-admin-label"]', 'OFIS expert search')); + + // Switch to iFrame. + $i->switchtoIFrame(); + + $i->waitForText($title); + $i->see($title); // Save layout. $i->click('Save layout'); @@ -274,7 +307,7 @@ class WcmsTestsBlocksSearchCest { // Test search with one result. $i->fillField('input[id^="ofis-search"]', 'Aagaard'); - $i->click('Submit'); + $i->click('input[id^="edit-submit"]'); $i->waitforText('Number of experts found: 1'); $i->seeNumberofelements('.expert', 1); $i->dontSeeElement('.uw-exp-col'); @@ -294,7 +327,7 @@ class WcmsTestsBlocksSearchCest { foreach ($singleWordSearchTerms as $term) { $i->amOnPage($path); $i->fillField('input[id^="ofis-search"]', $term); - $i->click('Submit'); + $i->click('input[id^="edit-submit"]'); $i->waitforText('Number of experts found: '); $resultCount = $i->grabTextFrom('div[id^="ofis-results"].ofis-results p'); $resultCount = preg_replace('/[^0-9]/', '', $resultCount); @@ -312,7 +345,7 @@ class WcmsTestsBlocksSearchCest { // Test search with multiple words. $i->amOnPage($path); $i->fillField('input[id^="ofis-search"]', $combinedSearchTerm); - $i->click('Submit'); + $i->click('input[id^="edit-submit"]'); $i->waitforText('Number of experts found: ' . $combinedExpectedResultCount); $i->seeNumberofelements('.expert', $combinedExpectedResultCount); $i->seeElement('.uw-exp-col'); @@ -328,7 +361,7 @@ class WcmsTestsBlocksSearchCest { foreach ($searchTerms as $term => $message) { $i->amOnPage($path); $i->fillField('input[id^="ofis-search"]', $term); - $i->click('Submit'); + $i->click('input[id^="edit-submit"]'); $i->waitforText($message); $i->dontSeeElement('.expert'); $i->dontSeeElement('.uw-exp-col'); diff --git a/acceptance/WcmsTestsBlocksTeaserCest.php b/acceptance/WcmsTestsBlocksTeaserCest.php index 8b1e8c9d855ea0947e20fbce7e55e1ce154948cf..b22dba668f977048947a95530cd593424ff3de4b 100644 --- a/acceptance/WcmsTestsBlocksTeaserCest.php +++ b/acceptance/WcmsTestsBlocksTeaserCest.php @@ -84,6 +84,8 @@ class WcmsTestsBlocksTeaserCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blockteaser */ public function testTeaserBlockConfig(AcceptanceTester $i) { @@ -109,6 +111,9 @@ class WcmsTestsBlocksTeaserCest { $i->click('Content teaser'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Test the config for the teaser block. $i->see('Heading level'); $i->seeElement('option[value="h2"][selected="selected"]'); @@ -138,6 +143,8 @@ class WcmsTestsBlocksTeaserCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blockteaser */ public function testTeaserBlock(AcceptanceTester $i) { @@ -172,8 +179,12 @@ class WcmsTestsBlocksTeaserCest { $i->click('Content teaser'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + + // Select the content type. + $i->waitForElement('#edit-settings-content-type'); $i->selectOption('select[name="settings[content_type]"]', $content_type); - $i->waitForText($content_type . ' settings'); // Get the field name to fill in. $field_name = 'input[name="settings[' . $machine_name . '][nid]"]'; @@ -195,7 +206,10 @@ class WcmsTestsBlocksTeaserCest { ); // Click on the add block and ensure that it saves. - $i->click('Add block'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); + $i->waitForText('Content teaser'); // Ensure that the teaser block is on the page. diff --git a/acceptance/WcmsTestsBlocksWebformsCest.php b/acceptance/WcmsTestsBlocksWebformsCest.php index 008fd03f239d109e46ab4d12d227bb493376ff35..92cdc4e665b3549ee868dadaa9bf425bae165abb 100644 --- a/acceptance/WcmsTestsBlocksWebformsCest.php +++ b/acceptance/WcmsTestsBlocksWebformsCest.php @@ -1,6 +1,5 @@ <?php -use Codeception\Util\Locator; use Drupal\webform\Entity\Webform; /** @@ -29,6 +28,8 @@ class WcmsTestsBlocksWebformsCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group blockwebforms */ public function testWebformBlock(AcceptanceTester $i) { @@ -63,6 +64,9 @@ class WcmsTestsBlocksWebformsCest { $i->click('Webform'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // The settings for the webform block. $title = $i->uwRandomString(); $webform_name = 'Test form (test_form)'; @@ -73,8 +77,11 @@ class WcmsTestsBlocksWebformsCest { // Click on add block and ensure it is on the screen. $i->click('Add block'); - $i->waitForElement(Locator::contains('div[class="uw-admin-label"]', 'Webform')); - $i->seeElement(Locator::contains('div[class="uw-admin-label"]', 'Webform')); + + // Switch to iFrame. + $i->switchtoIFrame(); + $i->waitForText($title); + $i->see($title); // Need to save the layout to continue the tests. $i->waitForElementClickable('#edit-actions #edit-submit'); @@ -82,7 +89,7 @@ class WcmsTestsBlocksWebformsCest { // Ensure elements are on the page. $i->see($title); - $i->click('input[class*="webform-button--submit"][value="Submit"]'); + $i->click('input[id="edit-submit"]'); // Wait for a click the back to form. $i->waitForText('Back to form'); diff --git a/acceptance/WcmsTestsCkeditorButtonsCest.php b/acceptance/WcmsTestsCkeditorButtonsCest.php index cc9fbb0b5fc5a5dd620a58570109975dcc33310e..75a3f59cb2c56fbb44eb4708261c09dda7ac37f7 100644 --- a/acceptance/WcmsTestsCkeditorButtonsCest.php +++ b/acceptance/WcmsTestsCkeditorButtonsCest.php @@ -21,6 +21,8 @@ class WcmsTestsCkeditorButtonsCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group ckeditor */ public function testCkeditorButtons(AcceptanceTester $i) { @@ -59,6 +61,8 @@ class WcmsTestsCkeditorButtonsCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group ckeditor */ public function testLanguageSupport(AcceptanceTester $i) { // Html tags to test. @@ -112,6 +116,9 @@ class WcmsTestsCkeditorButtonsCest { $i->click('Copy text'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Adds tags to text and xpath selector. $tagged_text = '<span dir="ltr" lang="' . $code . '">' . $language . '</span>'; @@ -122,8 +129,13 @@ class WcmsTestsCkeditorButtonsCest { $i->click('Source'); $i->fillCkEditor($tagged_text, 'textarea[name="settings[block_form][field_uw_copy_text][0][value]"]'); - // Submit form. + // Trigger CKEditor update. + $i->executeJS('for (instance in CKEDITOR.instances) { CKEDITOR.instances[instance].updateElement(); }'); + + // Click the submit button. + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); // Ensure that the tag is on the page. $i->waitForElement(Locator::contains('span[lang="' . $code . '"]', $language)); diff --git a/acceptance/WcmsTestsContentTypeBlogCest.php b/acceptance/WcmsTestsContentTypeBlogCest.php index 9682d4d7de09a6c64a308bf738bb2f156fa0376a..e730bcc60a75ea39f2a73e9bb397213b5307cf26 100644 --- a/acceptance/WcmsTestsContentTypeBlogCest.php +++ b/acceptance/WcmsTestsContentTypeBlogCest.php @@ -22,6 +22,8 @@ class WcmsTestsContentTypeBlogCest { * * @param Step\Acceptance\ContentType $i * Acceptance test variable. + * + * @group contenttype */ public function testBlogContentType(ContentType $i): void { @@ -43,6 +45,8 @@ class WcmsTestsContentTypeBlogCest { * * @param Step\Acceptance\TaxonomyTest $i * The acceptance tester. + * + * @group contenttype */ public function testBlogTaxonomies(TaxonomyTest $i): void { @@ -59,6 +63,8 @@ class WcmsTestsContentTypeBlogCest { * * @param Step\Acceptance\ContentType $i * The acceptance tester. + * + * @group contenttype */ public function testBlogDates(ContentType $i): void { diff --git a/acceptance/WcmsTestsContentTypeCatalogCest.php b/acceptance/WcmsTestsContentTypeCatalogCest.php index 8dcbd9fc5ebf8ed5ac89e2850c46897b73ca4146..965ed62802b9ee7cab492c180306bb39482d10ba 100644 --- a/acceptance/WcmsTestsContentTypeCatalogCest.php +++ b/acceptance/WcmsTestsContentTypeCatalogCest.php @@ -72,6 +72,8 @@ class WcmsTestsContentTypeCatalogCest { * * @param Step\Acceptance\ContentType $i * Acceptance test variable. + * + * @group contenttype */ public function testCatalogContentType(ContentType $i) { @@ -103,6 +105,8 @@ class WcmsTestsContentTypeCatalogCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group contenttype */ public function catalogSettingsTest(AcceptanceTester $i) { @@ -169,6 +173,8 @@ class WcmsTestsContentTypeCatalogCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group contenttype */ public function catalogTermRolesTest(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsContentTypeContactCest.php b/acceptance/WcmsTestsContentTypeContactCest.php index 49fd57d33c832047bdd5a372b5fc035b64710ab2..c986820845f6c8cb9b1f46eadaeb15109e748672 100644 --- a/acceptance/WcmsTestsContentTypeContactCest.php +++ b/acceptance/WcmsTestsContentTypeContactCest.php @@ -36,6 +36,8 @@ class WcmsTestsContentTypeContactCest { * * @param Step\Acceptance\ContentType $i * Acceptance test variable. + * + * @group contenttype */ public function testContactContentType(ContentType $i) { @@ -57,6 +59,8 @@ class WcmsTestsContentTypeContactCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group contenttype */ public function testContactSettings(AcceptanceTester $i) { @@ -103,6 +107,8 @@ class WcmsTestsContentTypeContactCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group contenttype */ public function testContactReorder(AcceptanceTester $i) { @@ -138,7 +144,10 @@ class WcmsTestsContentTypeContactCest { 5 => 1, ]; - $i->click('Show row weights'); + $i->waitForElementVisible("button.tabledrag-toggle-weight", 60); + $i->executeJS("var elem = document.querySelector('button.tabledrag-toggle-weight'); elem.style.display = 'block'; elem.style.visibility = 'visible'; elem.scrollIntoView(true);"); + $i->waitForElementClickable("button.tabledrag-toggle-weight", 60); + $i->executeJS('document.querySelector("button.tabledrag-toggle-weight").click();'); // Set weights for all contacts. foreach ($newOrder as $contactNum => $newPos) { diff --git a/acceptance/WcmsTestsContentTypeEventCest.php b/acceptance/WcmsTestsContentTypeEventCest.php index 059ac1dfff30b560e3487410782beaa793167f8d..2b7f30769934d9bf19cc752ca9a4ccf3753ea4cf 100644 --- a/acceptance/WcmsTestsContentTypeEventCest.php +++ b/acceptance/WcmsTestsContentTypeEventCest.php @@ -22,6 +22,8 @@ class WcmsTestsContentTypeEventCest { * * @param Step\Acceptance\ContentType $i * Acceptance test variable. + * + * @group contenttype */ public function testEventContentType(ContentType $i): void { @@ -43,6 +45,8 @@ class WcmsTestsContentTypeEventCest { * * @param Step\Acceptance\TaxonomyTest $i * The acceptance tester. + * + * @group contenttype */ public function testEventTaxonomies(TaxonomyTest $i): void { @@ -62,6 +66,8 @@ class WcmsTestsContentTypeEventCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group contenttype */ public function testEventLocationInfo(AcceptanceTester $i): void { @@ -83,6 +89,8 @@ class WcmsTestsContentTypeEventCest { * * @param Step\Acceptance\ContentType $i * The acceptance tester. + * + * @group contenttype */ public function testEventDates(ContentType $i): void { diff --git a/acceptance/WcmsTestsContentTypeExpandCollapseCest.php b/acceptance/WcmsTestsContentTypeExpandCollapseCest.php index b8b90e9518058d7a175925710cf6346a8647cc2a..733945c442f08a56ba5466b91022b070bf0cf4ed 100644 --- a/acceptance/WcmsTestsContentTypeExpandCollapseCest.php +++ b/acceptance/WcmsTestsContentTypeExpandCollapseCest.php @@ -21,6 +21,8 @@ class WcmsTestsContentTypeExpandCollapseCest { * * @param Step\Acceptance\ContentType $i * Acceptance test variable. + * + * @group contenttype */ public function testExpandCollapseContentType(ContentType $i): void { diff --git a/acceptance/WcmsTestsContentTypeNewsCest.php b/acceptance/WcmsTestsContentTypeNewsCest.php index c98f3314c842d550c9201fed47e197bf6db90f8e..2380e1509850bb447ed86000c0b114d667bc406e 100644 --- a/acceptance/WcmsTestsContentTypeNewsCest.php +++ b/acceptance/WcmsTestsContentTypeNewsCest.php @@ -22,6 +22,8 @@ class WcmsTestsContentTypeNewsCest { * * @param Step\Acceptance\ContentType $i * Acceptance test variable. + * + * @group contenttype */ public function testNewsContentType(ContentType $i): void { @@ -43,6 +45,8 @@ class WcmsTestsContentTypeNewsCest { * * @param Step\Acceptance\TaxonomyTest $i * The acceptance tester. + * + * @group contenttype */ public function testNewsTaxonomies(TaxonomyTest $i): void { @@ -59,6 +63,8 @@ class WcmsTestsContentTypeNewsCest { * * @param Step\Acceptance\ContentType $i * The acceptance tester. + * + * @group contenttype */ public function testNewsDates(ContentType $i): void { diff --git a/acceptance/WcmsTestsContentTypeOpportunityCest.php b/acceptance/WcmsTestsContentTypeOpportunityCest.php index 65f06da1d306a6ce533bd37f99ef4fec002052b1..b2cef02400ce2dd1da157d1d5e974eea039f4393 100644 --- a/acceptance/WcmsTestsContentTypeOpportunityCest.php +++ b/acceptance/WcmsTestsContentTypeOpportunityCest.php @@ -22,6 +22,8 @@ class WcmsTestsContentTypeOpportunityCest { * * @param Step\Acceptance\ContentType $i * Acceptance test variable. + * + * @group contenttype */ public function testOpportunityContentType(ContentType $i): void { @@ -43,6 +45,8 @@ class WcmsTestsContentTypeOpportunityCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group contenttype */ public function testTaxonomies(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsContentTypeProfileCest.php b/acceptance/WcmsTestsContentTypeProfileCest.php index f028d032f14dc26c051893a00cf14064d8839746..124a1f8921eaf5d3bb667a030d2ae1dbf736eff5 100644 --- a/acceptance/WcmsTestsContentTypeProfileCest.php +++ b/acceptance/WcmsTestsContentTypeProfileCest.php @@ -29,6 +29,8 @@ class WcmsTestsContentTypeProfileCest { * * @param Step\Acceptance\ContentType $i * Acceptance test variable. + * + * @group contenttype */ public function testProfileContentType(ContentType $i): void { @@ -50,6 +52,8 @@ class WcmsTestsContentTypeProfileCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group contenttype */ public function testProfileContactSynchronization(AcceptanceTester $i) { // Login as site manager user. diff --git a/acceptance/WcmsTestsContentTypeProjectCest.php b/acceptance/WcmsTestsContentTypeProjectCest.php index 0954a84d04b3e84bffb196f677082e28ed26c7ce..f3cb83ebb5241991f6d1587377c41e35d8736cc3 100644 --- a/acceptance/WcmsTestsContentTypeProjectCest.php +++ b/acceptance/WcmsTestsContentTypeProjectCest.php @@ -34,10 +34,12 @@ class WcmsTestsContentTypeProjectCest { private array $nodesUsed = []; /** - * Tests for profiles. + * Tests for projects. * * @param Step\Acceptance\ContentType $i * Acceptance test variable. + * + * @group contenttype */ public function testProjectContentType(ContentType $i): void { @@ -59,6 +61,8 @@ class WcmsTestsContentTypeProjectCest { * * @param Step\Acceptance\TaxonomyTest $i * The acceptance tester. + * + * @group contenttype */ public function testProjectTaxonomies(TaxonomyTest $i): void { @@ -75,6 +79,8 @@ class WcmsTestsContentTypeProjectCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group contenttype */ public function testProjectTaxonomyTerms(AcceptanceTester $i) { @@ -110,6 +116,8 @@ class WcmsTestsContentTypeProjectCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group contenttype */ public function testProjectMembers(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsContentTypeServiceCest.php b/acceptance/WcmsTestsContentTypeServiceCest.php index ee9c9b1d1d0df4e3f90a7f65f4a2f3f710910efd..06c879688e0a28d7f8a814cea8537dff43f0db7f 100644 --- a/acceptance/WcmsTestsContentTypeServiceCest.php +++ b/acceptance/WcmsTestsContentTypeServiceCest.php @@ -28,6 +28,8 @@ class WcmsTestsContentTypeServiceCest { * * @param Step\Acceptance\ContentType $i * Acceptance test variable. + * + * @group contenttype */ public function testServiceContentType(ContentType $i): void { diff --git a/acceptance/WcmsTestsContentTypeSidebarCest.php b/acceptance/WcmsTestsContentTypeSidebarCest.php index 5a25261675cb8d99eda11388227f4a27a41b6079..47c0d0d04f3e049fe462a7944726fa2f156678cb 100644 --- a/acceptance/WcmsTestsContentTypeSidebarCest.php +++ b/acceptance/WcmsTestsContentTypeSidebarCest.php @@ -21,6 +21,8 @@ class WcmsTestsContentTypeSidebarCest { * * @param Step\Acceptance\ContentType $i * Acceptance test variable. + * + * @group contenttype */ public function testSidebarContentType(ContentType $i): void { diff --git a/acceptance/WcmsTestsContentTypeSiteFooterCest.php b/acceptance/WcmsTestsContentTypeSiteFooterCest.php index 9e4cd18d60cff09c39e6021ba5c0d54b9d055d7f..5f39575c4ccaa1ff3c461ea9096c86770950273e 100644 --- a/acceptance/WcmsTestsContentTypeSiteFooterCest.php +++ b/acceptance/WcmsTestsContentTypeSiteFooterCest.php @@ -21,6 +21,8 @@ class WcmsTestsContentTypeSiteFooterCest { * * @param Step\Acceptance\ContentType $i * Acceptance test variable. + * + * @group contenttype */ public function testSiteFooterContentType(ContentType $i): void { diff --git a/acceptance/WcmsTestsContentTypeWebpageCest.php b/acceptance/WcmsTestsContentTypeWebpageCest.php index 2f347327da5daf6c5c99df1fb83640f503b84f17..1c0cf1d309ed003564582d9984045b6cc7d8e71e 100644 --- a/acceptance/WcmsTestsContentTypeWebpageCest.php +++ b/acceptance/WcmsTestsContentTypeWebpageCest.php @@ -17,10 +17,12 @@ class WcmsTestsContentTypeWebpageCest { private string $contentType = 'uw_ct_web_page'; /** - * Tests for blog content type. + * Tests for webpage content type. * * @param Step\Acceptance\ContentType $i * Acceptance test variable. + * + * @group contenttype */ public function testWebpageContentType(ContentType $i): void { diff --git a/acceptance/WcmsTestsDashboardCest.php b/acceptance/WcmsTestsDashboardCest.php index aa541df31ee89a4f2cb6dbd127f1b7221d8bbf04..608a47b645326d6a664d6099a43ecee25cde034f 100644 --- a/acceptance/WcmsTestsDashboardCest.php +++ b/acceptance/WcmsTestsDashboardCest.php @@ -14,6 +14,8 @@ class WcmsTestsDashboardCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group dashboards */ public function testAccess(AcceptanceTester $i) { @@ -97,6 +99,8 @@ class WcmsTestsDashboardCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group dashboards */ public function testElements(AcceptanceTester $i) { @@ -153,6 +157,8 @@ class WcmsTestsDashboardCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group dashboards */ public function testLayoutBuilder(AcceptanceTester $i) { @@ -185,11 +191,6 @@ class WcmsTestsDashboardCest { $i->seeLink('Publication reference authors'); $i->seeLink('Publication reference keywords'); $i->seeLink('Publication references'); - - // Following blocks should not be available on dashboard. - $i->dontSeeLink('Special alert'); - $i->dontSeeLink('Blog author'); - $i->dontSeeLink('UW content moderation'); } /** @@ -197,6 +198,8 @@ class WcmsTestsDashboardCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group dashboards */ public function testTaxonomyTermCancelButton(AcceptanceTester $i) { @@ -264,13 +267,21 @@ class WcmsTestsDashboardCest { $i->click($block); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Adds the block. - $i->click('input[value="Add block"]'); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); + $i->waitForElement($class); + $i->seeElement($class); } // Saves the dashboard layout. - $i->click('Save layout'); + $i->waitForElementClickable('input[id*="edit-submit"]'); + $i->click('input[id*="edit-submit"]'); } @@ -283,15 +294,14 @@ class WcmsTestsDashboardCest { private function getDefaultSections(): array { return [ - '#web-resources-news' => 'uw-full-width layout layout--uw-3-col even-split', - '#recent-content' => 'uw-full-width layout layout--uw-3-col even-split', - '#whos-online' => 'uw-full-width layout layout--uw-3-col even-split', - '#content-list' => 'uw-full-width layout layout--uw-2-col larger-left', - '#forms-list' => 'uw-full-width layout layout--uw-2-col larger-left', - // Publication references block has no id, so searching by class instead. - '.block-uw-publication-reference-block' => 'uw-full-width layout layout--uw-2-col larger-left', - '#content-management-menu' => 'uw-full-width layout layout--uw-2-col larger-left', - '#site-management-menu' => 'uw-full-width layout layout--uw-2-col larger-left', + '#web-resources-news' => 'uw-full-width uw-section-spacing--default uw-section-separator--none uw-column-separator--none layout layout--uw-3-col even-split', + '#recent-content' => 'uw-full-width uw-section-spacing--default uw-section-separator--none uw-column-separator--none layout layout--uw-3-col even-split', + '#whos-online' => 'uw-full-width uw-section-spacing--default uw-section-separator--none uw-column-separator--none layout layout--uw-3-col even-split', + '#content-list' => 'uw-full-width uw-section-spacing--default uw-section-separator--none uw-column-separator--none layout layout--uw-2-col larger-left', + '#forms-list' => 'uw-full-width uw-section-spacing--default uw-section-separator--none uw-column-separator--none layout layout--uw-2-col larger-left', + '#content-management-menu' => 'uw-full-width uw-section-spacing--default uw-section-separator--none uw-column-separator--none layout layout--uw-2-col larger-left', + '#site-management-menu' => 'uw-full-width uw-section-spacing--default uw-section-separator--none uw-column-separator--none layout layout--uw-2-col larger-left', + '#content-type-list' => 'uw-full-width uw-section-spacing--default uw-section-separator--none uw-column-separator--none layout layout--uw-2-col larger-left', ]; } diff --git a/acceptance/WcmsTestsDashboardCsvReportsCest.php b/acceptance/WcmsTestsDashboardCsvReportsCest.php index 2fba60014d0eed19e86f4dfe1313c947472bd64f..0f034fcebae594018d54b37567a7ceada9c26235 100644 --- a/acceptance/WcmsTestsDashboardCsvReportsCest.php +++ b/acceptance/WcmsTestsDashboardCsvReportsCest.php @@ -12,6 +12,8 @@ class WcmsTestsDashboardCsvReportsCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group dashboards */ public function testDashboardCsvReport(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsDeleteWarningMessageCest.php b/acceptance/WcmsTestsDeleteWarningMessageCest.php index 4f8d1fb6d783e887ecd135013a1c7ab959505603..3992c3d5e4efcb5206501a12ed53f61ae634989f 100644 --- a/acceptance/WcmsTestsDeleteWarningMessageCest.php +++ b/acceptance/WcmsTestsDeleteWarningMessageCest.php @@ -26,6 +26,8 @@ class WcmsTestsDeleteWarningMessageCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group messaging */ public function testDeleteWarningMessage(AcceptanceTester $i) { @@ -86,6 +88,8 @@ class WcmsTestsDeleteWarningMessageCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group messaging */ public function testPreventDeletingCatalogBeingUsed(AcceptanceTester $i) { // Login as site manager. diff --git a/acceptance/WcmsTestsDiffHeadersCest.php b/acceptance/WcmsTestsDiffHeadersCest.php index 63792a8a3a30e945735f060ebfcec9c62e13c144..ef3f675bcb9febccff331b3e71d48a50a1962adc 100644 --- a/acceptance/WcmsTestsDiffHeadersCest.php +++ b/acceptance/WcmsTestsDiffHeadersCest.php @@ -50,6 +50,8 @@ class WcmsTestsDiffHeadersCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group modules */ public function diffHeadersTest(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsEventDisplayCest.php b/acceptance/WcmsTestsEventDisplayCest.php index e2e09cd3e4896d87bd2940e38ff2d20e2cf4095f..891cc3aae57e0e3869f16643a7098f74c6255d5e 100644 --- a/acceptance/WcmsTestsEventDisplayCest.php +++ b/acceptance/WcmsTestsEventDisplayCest.php @@ -12,6 +12,8 @@ class WcmsTestsEventDisplayCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group display */ public function testEventDisplay(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsExcludeAutoListCest.php b/acceptance/WcmsTestsExcludeAutoListCest.php index 7be95b03af8c29686d93f09db0427e2966896ea6..2eacd11b9fb7a7bc4a711035749f830c16c2713b 100644 --- a/acceptance/WcmsTestsExcludeAutoListCest.php +++ b/acceptance/WcmsTestsExcludeAutoListCest.php @@ -1,7 +1,5 @@ <?php -use Codeception\Util\Locator; - /** * Class WcmsTestsExcludeAutoListCest. * @@ -51,7 +49,7 @@ class WcmsTestsExcludeAutoListCest { private array $listingBlocks = [ 'Blog posts' => '.card__teaser--blog', 'Catalog items' => 'span a[href^="/catalogs/"]', - 'Contacts' => '.card__teaser--contact', + 'Contacts' => '.uw-contact', 'Events' => '.card__teaser--event', 'News items' => '.card__teaser--news-item', 'Opportunities' => '.card__teaser--opportunity', @@ -134,6 +132,8 @@ class WcmsTestsExcludeAutoListCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group display */ public function testExcludeListingPages(AcceptanceTester $i): void { @@ -154,6 +154,8 @@ class WcmsTestsExcludeAutoListCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group display */ public function testExcludeAutoListBlock(AcceptanceTester $i): void { @@ -190,15 +192,18 @@ class WcmsTestsExcludeAutoListCest { $i->click('Automatic list'); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Select the content type. + $i->waitForElement('#edit-settings-content-type'); $i->selectOption('select[id*="edit-settings-content-type"]', $content_type); - $i->click('Add block'); - - // Wait for the block to load and ensure that the - // number of elements are on the page. - $i->waitForElement(Locator::contains('.uw-admin-label', 'Automatic list')); + $i->waitForElementClickable('input[id*="edit-actions-submit"]'); + $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); // Ensurfe there are only two on the page. + $i->waitForElement($class); $i->seeNumberOfElements($class, 2); } } diff --git a/acceptance/WcmsTestsGlobalFooterCest.php b/acceptance/WcmsTestsGlobalFooterCest.php index 3d923d655ee3899a1ac3a6cf27f819d77151fbc3..31b1f0dedf88e800e4d6094636799d8fc2cd2df2 100644 --- a/acceptance/WcmsTestsGlobalFooterCest.php +++ b/acceptance/WcmsTestsGlobalFooterCest.php @@ -14,6 +14,8 @@ class WcmsTestsGlobalFooterCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group display */ public function testGlobalFooter(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsHomepageCest.php b/acceptance/WcmsTestsHomepageCest.php index 6a78f1b878cb554792fbb1c196b9528628374e25..53bfc3c30c09e0826d864bbafaa593078128d203 100644 --- a/acceptance/WcmsTestsHomepageCest.php +++ b/acceptance/WcmsTestsHomepageCest.php @@ -12,6 +12,8 @@ class WcmsTestsHomepageCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group homepage */ public function testHomepageElements(AcceptanceTester $i): void { @@ -46,6 +48,8 @@ class WcmsTestsHomepageCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group homepage */ public function testHomePageMenuLink(AcceptanceTester $i): void { @@ -84,6 +88,8 @@ class WcmsTestsHomepageCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group homepage */ public function testHomePageConfig(AcceptanceTester $i): void { diff --git a/acceptance/WcmsTestsImgInlineCest.php b/acceptance/WcmsTestsImgInlineCest.php index c9d5ce9a04e77b99ee31cf28e9166d550f073d7e..ff5c9c381bfb87ca785a8f2c61e1c75ed8aff5aa 100644 --- a/acceptance/WcmsTestsImgInlineCest.php +++ b/acceptance/WcmsTestsImgInlineCest.php @@ -19,6 +19,8 @@ class WcmsTestsImgInlineCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group media */ public function testImgInline(AcceptanceTester $i) { @@ -28,7 +30,6 @@ class WcmsTestsImgInlineCest { // Step through each of the block elements and test them. foreach ($this->getBlocks() as $block) { - $title = $i->uwRandomString(); // Create a webpage. $this->nodesUsed[$title] = $i->createWebPage($title); @@ -41,9 +42,17 @@ class WcmsTestsImgInlineCest { // Add a block with each tag. $i->waitForElementClickable('.layout-builder__add-block'); + $i->executeJS("document.querySelector('.layout-builder__add-block').scrollIntoView(true);"); + // Adjust the selector as needed. + $i->waitForElementNotVisible('.loading-spinner', 60); $i->click('.layout-builder__add-block'); + $i->waitForText('Choose a block'); $i->click('Copy text'); + $i->waitForText('Configure block'); + + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); $i->waitForText('Block description'); // Fill the title. @@ -60,23 +69,35 @@ class WcmsTestsImgInlineCest { // Fill the ckeditor field with the block element. $i->fillCkEditor( '<' . $block . '> Here is an image. <img alt="Inserted image in ' . $block . ' block" src="https://uwaterloo.ca/building-the-next-wcms/sites/default/files/uploads/images/icons-2021_laptop.png" /> More text. </' . $block . '>', - 'textarea[name="settings[block_form][field_uw_copy_text][0][value]"]' + 'textarea[name="settings[block_form][field_uw_copy_text][0][value]"]' ); + // Trigger CKEditor update. + $i->executeJS('for (instance in CKEDITOR.instances) { CKEDITOR.instances[instance].updateElement(); }'); + // Click the submit button. $i->waitForElementClickable('input[id*="edit-actions-submit"]'); $i->click('input[id*="edit-actions-submit"]'); + $i->switchToIFrame(); // Ensure that the block is on the page. - $i->waitForElement('.uw-copy-text div ' . $block . ' img'); + $i->waitForJS("return document.readyState === 'complete';", 30); + $i->waitForElement(".uw-copy-text div " . $block . " img", 30); + $i->waitForElement('.uw-copy-text div img[alt="Inserted image in ' . $block . ' block"]'); // Check that image's parent is a block. - $i->seeElement('.uw-copy-text div ' . $block . ' img', ['alt' => 'Inserted image in ' . $block . ' block']); + $i->seeElement(".uw-copy-text div " . $block . " img", ['alt' => 'Inserted image in ' . $block . ' block']); + $i->waitForJS("return document.readyState === 'complete';"); // Remove added block to avoid ambiguity in finding image. $i->amOnPage($path . '/layout/discard-changes'); + $i->waitForText('Are you sure you want to discard your layout changes?'); + $i->see('Are you sure you want to discard your layout changes?'); + $i->waitForElement('#edit-submit'); $i->click('#edit-submit'); - $i->waitForText('The changes to the layout have been discarded.'); + $i->waitForJS("return document.readyState === 'complete';"); + $i->waitForElement('.messages'); + $i->see('The changes to the layout have been discarded.'); } } diff --git a/acceptance/WcmsTestsLayoutBuilderBrowserCest.php b/acceptance/WcmsTestsLayoutBuilderBrowserCest.php index 9126b8c55845e6a9adcde95f1c662bf0f9a6d27d..d7ccadc226ba37889e2f058bd9a3a755382b10b4 100644 --- a/acceptance/WcmsTestsLayoutBuilderBrowserCest.php +++ b/acceptance/WcmsTestsLayoutBuilderBrowserCest.php @@ -12,6 +12,8 @@ class WcmsTestsLayoutBuilderBrowserCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group layouts */ public function testLayoutBuilderBrowser(AcceptanceTester $i) { @@ -31,7 +33,6 @@ class WcmsTestsLayoutBuilderBrowserCest { 'tr[data-drupal-selector="edit-categories-uw-lbb-image"]', 'tr[data-drupal-selector="edit-categories-inline-blockuw-cbl-image-gallery"]', 'tr[data-drupal-selector="edit-categories-inline-blockuw-cbl-mailman"]', - 'tr[data-drupal-selector="edit-categories-inline-blockuw-cbl-related-links"]', 'tr[data-drupal-selector="edit-categories-uw-lbb-tags"]', 'tr[data-drupal-selector="edit-categories-inline-blockuw-cbl-timeline"]', 'tr[data-drupal-selector="edit-categories-category-uw-bc-external-embeds"]', diff --git a/acceptance/WcmsTestsLayoutSectionConfigurationFormCest.php b/acceptance/WcmsTestsLayoutSectionConfigurationFormCest.php index 57adf1dd1f850d897ccedf2e997d5de6e103d97f..084c68bb29d1ccd1b0ed10bb2580b61bc2bdef80 100644 --- a/acceptance/WcmsTestsLayoutSectionConfigurationFormCest.php +++ b/acceptance/WcmsTestsLayoutSectionConfigurationFormCest.php @@ -19,6 +19,8 @@ class WcmsTestsLayoutSectionConfigurationFormCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group layouts */ public function layoutConfigurationFormTest(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsLinkFieldCest.php b/acceptance/WcmsTestsLinkFieldCest.php index d4da47b6a34cc3a35dd8db76709696ec35a84a2c..ba61256487f8ff674543f53a2a68035db30c9949 100644 --- a/acceptance/WcmsTestsLinkFieldCest.php +++ b/acceptance/WcmsTestsLinkFieldCest.php @@ -42,6 +42,8 @@ class WcmsTestsLinkFieldCest { * * @param Step\Acceptance\ContentType $i * Content Type test variable. + * + * @group miscellaneous */ public function testLinkField(ContentType $i) { @@ -248,6 +250,8 @@ class WcmsTestsLinkFieldCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group miscellaneous */ public function testContentBlocks(AcceptanceTester $i) { @@ -279,13 +283,6 @@ class WcmsTestsLinkFieldCest { 'settings[block_form][field_uw_cta_details][0][subform][field_uw_cta_text_details][0][text_value]' => $i->uwRandomString(), ], ], - 'Related links' => [ - 'Fields' => [ - 'settings[label]' => $i->uwRandomString(), - 'settings[block_form][field_uw_rl_related_link][0][uri]' => $text, - 'settings[block_form][field_uw_rl_related_link][0][title]' => $i->uwRandomString(), - ], - ], 'Timeline' => [ 'Fields' => [ 'settings[label]' => $i->uwRandomString(), @@ -314,6 +311,9 @@ class WcmsTestsLinkFieldCest { $i->click($block); $i->waitForText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); + // Fill the block fields. $this->fillBlockFields($i, $fields, 'Add block'); diff --git a/acceptance/WcmsTestsLongTitlesCest.php b/acceptance/WcmsTestsLongTitlesCest.php index 862caee089e1fdf629080602803c59559770d1e6..f9600529213c182eca3d5be846d8a164f62db07a 100644 --- a/acceptance/WcmsTestsLongTitlesCest.php +++ b/acceptance/WcmsTestsLongTitlesCest.php @@ -77,6 +77,8 @@ class WcmsTestsLongTitlesCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group miscellaneous */ public function testLongTitles(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsMediaAboveCest.php b/acceptance/WcmsTestsMediaAboveCest.php index 70cc57a72e26ed001b9846599df6d3e1dcc8fff3..877677839993e096758c5dd4ea8d489fc9e203de 100644 --- a/acceptance/WcmsTestsMediaAboveCest.php +++ b/acceptance/WcmsTestsMediaAboveCest.php @@ -29,6 +29,8 @@ class WcmsTestsMediaAboveCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group media */ public function testSettingsMediaAbove(AcceptanceTester $i) { @@ -124,6 +126,8 @@ class WcmsTestsMediaAboveCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group media */ public function testBannersAbove(AcceptanceTester $i) { @@ -262,6 +266,8 @@ class WcmsTestsMediaAboveCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group media */ public function testImageAbove(AcceptanceTester $i) { @@ -381,32 +387,38 @@ class WcmsTestsMediaAboveCest { // Step through all the images and add them. foreach ($images as $image) { + try { + // Go to the add image page. + $i->amOnPage('media/add/uw_mt_image'); + $i->see('Add image'); + + // Add remote image. + $i->click('Remote URL'); + $i->waitForElementVisible('#edit-name-0-value', 10); + $i->fillField( + '#edit-name-0-value', + $image['title'], + ); + $i->waitForElementVisible('#edit-field-media-image-0-filefield-remote-url', 10); + $i->fillField( + '#edit-field-media-image-0-filefield-remote-url', + $image['url'], + ); - // Go to the add image page. - $i->amOnPage('media/add/uw_mt_image'); - $i->see('Add image'); - - // Add remote image. - $i->click('Remote URL'); - $i->fillField( - '#edit-name-0-value', - $image['title'], - ); - $i->fillField( - '#edit-field-media-image-0-filefield-remote-url', - $image['url'], - ); - - // Click and transger and ensure that it uploads. - $i->click('Transfer'); - $i->waitForText('Alternative text'); + // Click and transfer and ensure that it uploads. + $i->click('Transfer'); + $i->waitForText('Alternative text'); - // Fill in the alt text field. - $i->fillField('input[id*="edit-field-media-image-0-alt"]', $image['title']); + // Fill in the alt text field. + $i->fillField('input[id*="edit-field-media-image-0-alt"]', $image['title']); - // Click save and ensure that the image is added. - $i->click('Save'); - $i->see('Image ' . $image['title'] . ' has been created'); + // Click save and ensure that the image is added. + $i->click('Save'); + $i->waitForText('Image ' . $image['title'] . ' has been created'); + } + catch (\Exception $e) { + $i->comment('Failed to add image: ' . (string) $image['title'] . ' - ' . $e->getMessage()); + } } } diff --git a/acceptance/WcmsTestsMediaMenuItemsCest.php b/acceptance/WcmsTestsMediaMenuItemsCest.php index b9242a4af02d95fc4a38dccee0ca1a79a145ee72..080723b86190d3627c4ae96ae49bca68e3a60663 100644 --- a/acceptance/WcmsTestsMediaMenuItemsCest.php +++ b/acceptance/WcmsTestsMediaMenuItemsCest.php @@ -12,6 +12,8 @@ class WcmsTestsMediaMenuItemsCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group media */ public function testMediaMenuAuthorized(AcceptanceTester $i) { @@ -59,6 +61,8 @@ class WcmsTestsMediaMenuItemsCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group media */ public function testMediaMenuUnauthorized(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsMediaTypesCest.php b/acceptance/WcmsTestsMediaTypesCest.php index 85a4a16b093b8eed8c47ace4ff471e2cc393d09e..41261c856004bae30a0ce2d192e0331589eaf746 100644 --- a/acceptance/WcmsTestsMediaTypesCest.php +++ b/acceptance/WcmsTestsMediaTypesCest.php @@ -46,6 +46,8 @@ class WcmsTestsMediaTypesCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group media */ public function mediaTypesTest(AcceptanceTester $i) { @@ -57,7 +59,7 @@ class WcmsTestsMediaTypesCest { $i->amOnPage('admin/structure/media/manage/uw_mt_file/fields/media.uw_mt_file.field_media_file'); $i->seeInField(['name' => 'settings[file_directory]'], 'uploads/documents'); $i->seeInField(['name' => 'settings[max_filesize]'], '25 MB'); - $i->seeInField(['name' => 'settings[file_extensions]'], 'bib, csv, doc, docx, epub, gz, key, m, mw, mp3, rtf, pdf, pot, potx, pps, ppt, pptx, psd, r, tar, tex, txt, wav, xls, xlsx, zip'); + $i->seeInField(['name' => 'settings[file_extensions]'], 'bib, csv, doc, docx, epub, gz, json, key, m, mw, mp3, rtf, pdf, pot, potx, pps, ppt, pptx, psd, r, tar, tex, txt, wav, xls, xlsx, zip'); // File directory default value for Icon media type // is 'uploads/icons'. diff --git a/acceptance/WcmsTestsMenuSettingsCest.php b/acceptance/WcmsTestsMenuSettingsCest.php index e029ec0aee00bdc9f93c2bddfdbe0e2af0bb0e93..cb2124c13b93aa418a702d0272de40ed5a7ca45e 100644 --- a/acceptance/WcmsTestsMenuSettingsCest.php +++ b/acceptance/WcmsTestsMenuSettingsCest.php @@ -54,6 +54,8 @@ class WcmsTestsMenuSettingsCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group menus */ public function testMenuSettings(AcceptanceTester $i): void { diff --git a/acceptance/WcmsTestsMenusCest.php b/acceptance/WcmsTestsMenusCest.php index 569f9b078268a9ce627a275f004ee9a01d8c6ca8..f2478cf219b3c61895117960071e202657043977 100644 --- a/acceptance/WcmsTestsMenusCest.php +++ b/acceptance/WcmsTestsMenusCest.php @@ -12,6 +12,8 @@ class WcmsTestsMenusCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group menus */ public function testContentManagementMenu(AcceptanceTester $i) { @@ -38,6 +40,8 @@ class WcmsTestsMenusCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group menus */ public function testSiteInformationMenu(AcceptanceTester $i) { @@ -64,6 +68,8 @@ class WcmsTestsMenusCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group menus */ public function testAddingMenuLinks(AcceptanceTester $i) { @@ -106,6 +112,8 @@ class WcmsTestsMenusCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group menus */ public function testHomeMenuLinkWeight(AcceptanceTester $i) { @@ -126,6 +134,8 @@ class WcmsTestsMenusCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group menus */ public function testMenuMain(AcceptanceTester $i) { @@ -166,6 +176,8 @@ class WcmsTestsMenusCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group menus */ public function testMenuMainAccess(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsMultiTypePromoteCest.php b/acceptance/WcmsTestsMultiTypePromoteCest.php index aff6e19722be8b03b850d159f5bab43d0457f0b6..63b563777d64282f05c5b44c74e586f23258c356 100644 --- a/acceptance/WcmsTestsMultiTypePromoteCest.php +++ b/acceptance/WcmsTestsMultiTypePromoteCest.php @@ -21,6 +21,8 @@ class WcmsTestsMultiTypePromoteCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group blocks */ public function testMultiTypePromote(AcceptanceTester $i) { @@ -114,7 +116,10 @@ class WcmsTestsMultiTypePromoteCest { $i->waitForText('Multi-type list'); $i->click('Multi-type list'); $i->waitforText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); $i->click('Add block'); + $i->switchToIFrame(); $i->click('Save layout'); $content = [ @@ -139,8 +144,11 @@ class WcmsTestsMultiTypePromoteCest { $i->waitForText('Multi-type list'); $i->click('Multi-type list'); $i->waitforText('Configure block'); + // Switch the block form iframe. + $i->switchToIFrame('iframe[class="lbim-dialog-iframe"]'); $i->checkOption('input[id*="edit-settings-show-all-items"]'); $i->click('Add block'); + $i->switchToIFrame(); $i->click('Save layout'); // Check that tabs and both promoted and unpromoted items are displayed. diff --git a/acceptance/WcmsTestsNodeRevisionDeleteCest.php b/acceptance/WcmsTestsNodeRevisionDeleteCest.php index 4d1394c2d130be941b30c2d3cf4e40528b21bfa9..f710834a2b92d15fb78979f24ef1faa0c0f8590a 100644 --- a/acceptance/WcmsTestsNodeRevisionDeleteCest.php +++ b/acceptance/WcmsTestsNodeRevisionDeleteCest.php @@ -10,10 +10,12 @@ use Codeception\Util\Locator; class WcmsTestsNodeRevisionDeleteCest { /** - * Tests for diff headers. + * Tests for node revision delete. * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group modules */ public function testNodeRevisionDelete(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsOfisCest.php b/acceptance/WcmsTestsOfisCest.php index a4335782679cdc041b1d8909ed6b7390d073e7e6..4df91edb35490fc563064fc0a19271f2285d2faa 100644 --- a/acceptance/WcmsTestsOfisCest.php +++ b/acceptance/WcmsTestsOfisCest.php @@ -12,6 +12,8 @@ class WcmsTestsOfisCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group modules */ public function testOfis(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsPageNotFoundCest.php b/acceptance/WcmsTestsPageNotFoundCest.php index af9f19d60ee1e1be24231143f9636a1f1d00714a..0769aaadea8fee621566d302862f289165eba4ed 100644 --- a/acceptance/WcmsTestsPageNotFoundCest.php +++ b/acceptance/WcmsTestsPageNotFoundCest.php @@ -12,6 +12,8 @@ class WcmsTestsPageNotFoundCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group messaging */ public function testPageNotFound(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsPreviewButtonCest.php b/acceptance/WcmsTestsPreviewButtonCest.php index a5131469e806c650530995971b0575d995f2178f..97fac6545f82e1386ee91d0433b94272a1842f8f 100644 --- a/acceptance/WcmsTestsPreviewButtonCest.php +++ b/acceptance/WcmsTestsPreviewButtonCest.php @@ -12,6 +12,8 @@ class WcmsTestsPreviewButtonCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group miscellaneous */ public function testPreviewButton(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsQuickNodeCloneCest.php b/acceptance/WcmsTestsQuickNodeCloneCest.php index 094f69500421b7e736d7d46f4f78bd11eb481ee2..b593cd97cacf58cdce75c09e40e363af8efdbf7c 100644 --- a/acceptance/WcmsTestsQuickNodeCloneCest.php +++ b/acceptance/WcmsTestsQuickNodeCloneCest.php @@ -12,6 +12,8 @@ class WcmsTestsQuickNodeCloneCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group modules */ public function testQuickNodeClone(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsRealNameCest.php b/acceptance/WcmsTestsRealNameCest.php index 5a8993ff51db9d107b6237734cebfca3bc074e04..af8d2c421443beb2453af9e1db7fdf9a16f0a905 100644 --- a/acceptance/WcmsTestsRealNameCest.php +++ b/acceptance/WcmsTestsRealNameCest.php @@ -12,6 +12,8 @@ class WcmsTestsRealNameCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group users */ public function testRealNameSettings(AcceptanceTester $i) { @@ -32,6 +34,8 @@ class WcmsTestsRealNameCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group users */ public function testRealNameUser(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsRedirectsCest.php b/acceptance/WcmsTestsRedirectsCest.php index 262a6e5b7cad69baacf7b1f6ae4c0c129e07318c..687b1d1dddc3accae94cc93c428b68a0117e4293 100644 --- a/acceptance/WcmsTestsRedirectsCest.php +++ b/acceptance/WcmsTestsRedirectsCest.php @@ -22,6 +22,8 @@ class WcmsTestsRedirectsCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group miscellaneous */ public function testRedirectsPermissions(AcceptanceTester $i) { @@ -56,6 +58,8 @@ class WcmsTestsRedirectsCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group miscellaneous */ public function testRedirectsSettings(AcceptanceTester $i) { @@ -82,6 +86,8 @@ class WcmsTestsRedirectsCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group miscellaneous */ public function testRedirectsUsage(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsRequireOnPublishCest.php b/acceptance/WcmsTestsRequireOnPublishCest.php index ddf32ade878d6a4e4754242f2de389822329fd89..be538534578783fa18d21c0d60b5964882843c0a 100644 --- a/acceptance/WcmsTestsRequireOnPublishCest.php +++ b/acceptance/WcmsTestsRequireOnPublishCest.php @@ -28,6 +28,8 @@ class WcmsTestsRequireOnPublishCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group miscellaneous */ public function testRequireOnPublish(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsRoleOrderCest.php b/acceptance/WcmsTestsRoleOrderCest.php index abf46c681ea7ed916f6da8ec9e5a83276cd97e20..aebc0569aa05d8448f59b2040288c3aaf008463a 100644 --- a/acceptance/WcmsTestsRoleOrderCest.php +++ b/acceptance/WcmsTestsRoleOrderCest.php @@ -12,6 +12,8 @@ class WcmsTestsRoleOrderCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group users */ public function roleOrderTest(AcceptanceTester $i) { @@ -22,8 +24,11 @@ class WcmsTestsRoleOrderCest { // Go to roles page and ensure roles in correct order. $i->amOnPage('admin/people/roles'); $i->click('Show row weights'); - $i->seeOptionIsSelected('#edit-entities-uw-role-content-editor-weight', '4'); - $i->seeOptionIsSelected('#edit-entities-uw-role-content-author-weight', '5'); + $i->seeOptionIsSelected('#edit-entities-uw-role-website-lead-weight', '2'); + $i->seeOptionIsSelected('#edit-entities-uw-role-site-owner-weight', '3'); + $i->seeOptionIsSelected('#edit-entities-uw-role-site-manager-weight', '4'); + $i->seeOptionIsSelected('#edit-entities-uw-role-content-editor-weight', '5'); + $i->seeOptionIsSelected('#edit-entities-uw-role-content-author-weight', '6'); // Go to role settings page and ensure roles in correct order. $i->amOnPage('admin/people/role-settings'); diff --git a/acceptance/WcmsTestsSchemaCest.php b/acceptance/WcmsTestsSchemaCest.php index 77c150dd67c30bd0661141790de8807fe34ac14c..9f081afce63b1f5fcbbcfc2bb2044a0909c3d9fa 100644 --- a/acceptance/WcmsTestsSchemaCest.php +++ b/acceptance/WcmsTestsSchemaCest.php @@ -12,6 +12,8 @@ class WcmsTestsSchemaCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group miscellaneous */ public function schemaModulesTest(AcceptanceTester $i) { @@ -38,6 +40,8 @@ class WcmsTestsSchemaCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group miscellaneous */ public function schemaSettingsTest(AcceptanceTester $i) { @@ -92,6 +96,8 @@ class WcmsTestsSchemaCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group miscellaneous */ public function schemaContentTypeFieldsTest(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsServiceHoursCest.php b/acceptance/WcmsTestsServiceHoursCest.php index c2d6f320a522b04048221b6643d74a2198d0f01f..9afc2e162e55e0f593e47604924c700afca3f782 100644 --- a/acceptance/WcmsTestsServiceHoursCest.php +++ b/acceptance/WcmsTestsServiceHoursCest.php @@ -19,6 +19,8 @@ class WcmsTestsServiceHoursCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group custommodules */ public function testServiceHours(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsSpecialAlertCest.php b/acceptance/WcmsTestsSpecialAlertCest.php index 220ac1db785978889b53efae3b3d4d851be7e159..3bb0d52e2b731a56d012041627cb517331b43cbb 100644 --- a/acceptance/WcmsTestsSpecialAlertCest.php +++ b/acceptance/WcmsTestsSpecialAlertCest.php @@ -14,6 +14,8 @@ class WcmsTestsSpecialAlertCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group custommodules */ public function testSpecialAlertConfig(AcceptanceTester $i) { @@ -76,6 +78,8 @@ class WcmsTestsSpecialAlertCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group custommodules */ public function testSpecialAlertBlock(AcceptanceTester $i) { @@ -199,6 +203,8 @@ class WcmsTestsSpecialAlertCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group custommodules */ public function testSpecialAlertsRoles(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsTaxonomiesCest.php b/acceptance/WcmsTestsTaxonomiesCest.php index eb888892bbbfce628c79e52c635bda6d1cad9fe4..b073df53c1481de623f753a79e756758affdea0d 100644 --- a/acceptance/WcmsTestsTaxonomiesCest.php +++ b/acceptance/WcmsTestsTaxonomiesCest.php @@ -14,6 +14,8 @@ class WcmsTestsTaxonomiesCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group basic */ public function taxonomiesTest(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsTestPageCest.php b/acceptance/WcmsTestsTestPageCest.php index 882267c0061381e8a210bc4778c1a0cb4769f303..67d0c2d6a0b890d2796e0bb0863148a74fdff44b 100644 --- a/acceptance/WcmsTestsTestPageCest.php +++ b/acceptance/WcmsTestsTestPageCest.php @@ -26,6 +26,8 @@ class WcmsTestsTestPageCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group basic */ public function frontpageWorks(AcceptanceTester $i) { @@ -39,6 +41,8 @@ class WcmsTestsTestPageCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group basic */ public function testOneH1Tag(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsUrlAliasCest.php b/acceptance/WcmsTestsUrlAliasCest.php index b3ccb688521693ad55a39f701234097b9158568f..1f8f17a4900b41e65f0069a01ad1a6771b32efa2 100644 --- a/acceptance/WcmsTestsUrlAliasCest.php +++ b/acceptance/WcmsTestsUrlAliasCest.php @@ -26,6 +26,8 @@ class WcmsTestsUrlAliasCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group basic */ public function testDefaultGenerateUrlAlias(AcceptanceTester $i) { @@ -53,6 +55,8 @@ class WcmsTestsUrlAliasCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group basic */ public function testGenerateUrlAlias(AcceptanceTester $i) { @@ -173,6 +177,8 @@ class WcmsTestsUrlAliasCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group basic */ public function testUrlAliasErrorMessage(AcceptanceTester $i) { @@ -279,9 +285,11 @@ class WcmsTestsUrlAliasCest { } } - // Step through each of the nodes used and delete them. - foreach ($this->nodesUsed as $node) { + // Step through each of the nodes used and delete them + // as well as delete it from the nodes used array. + foreach ($this->nodesUsed as $title => $node) { $node->delete(); + unset($this->nodesUsed[$title]); } } diff --git a/acceptance/WcmsTestsUsersCest.php b/acceptance/WcmsTestsUsersCest.php index be603b588f663394cd651b1d5291769f282adfa6..61bf159d4fd1b893f84e85549a21d19a1f32ec37 100644 --- a/acceptance/WcmsTestsUsersCest.php +++ b/acceptance/WcmsTestsUsersCest.php @@ -15,7 +15,7 @@ class WcmsTestsUsersCest { * @param AcceptanceTester $i * The acceptance tester. * - * @throws Exception + * @group users */ public function testAddUwaterlooUser(AcceptanceTester $i) { @@ -61,7 +61,7 @@ class WcmsTestsUsersCest { * @param AcceptanceTester $i * The acceptance tester. * - * @throws Exception + * @group users */ public function testCreateUwaterlooUserByRole(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsUwLdapCest.php b/acceptance/WcmsTestsUwLdapCest.php index 174546f651154c46b9a400951a2f2f291df377e6..d86e8af2c3f1c7c51596784a71049fbc8afa8c7b 100644 --- a/acceptance/WcmsTestsUwLdapCest.php +++ b/acceptance/WcmsTestsUwLdapCest.php @@ -14,6 +14,8 @@ class WcmsTestsUwLdapCest { * * @param AcceptanceTester $i * Acceptance test variable. + * + * @group users */ public function testUwLdap(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsWebformAccessCest.php b/acceptance/WcmsTestsWebformAccessCest.php index 5fe82452b6c157bd99fd38f306f97af93f1bd971..d3377ee7fe5f66374a7bcc3db314153677dff741 100644 --- a/acceptance/WcmsTestsWebformAccessCest.php +++ b/acceptance/WcmsTestsWebformAccessCest.php @@ -54,7 +54,7 @@ class WcmsTestsWebformAccessCest { * @param AcceptanceTester $i * The acceptance tester. * - * @throws Exception + * @group webform */ public function testAccess(AcceptanceTester $i) { @@ -131,6 +131,8 @@ class WcmsTestsWebformAccessCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group webform */ public function testAccessMode(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsWebformElementsCest.php b/acceptance/WcmsTestsWebformElementsCest.php index 45dca8e07cb72a2a0b2e3f9ac284278f8c59ac69..5b58d1d87de12fbe05282316d06fd512ced3e444 100644 --- a/acceptance/WcmsTestsWebformElementsCest.php +++ b/acceptance/WcmsTestsWebformElementsCest.php @@ -54,7 +54,7 @@ class WcmsTestsWebformElementsCest { * @param AcceptanceTester $i * The acceptance tester. * - * @throws Exception + * @group webform */ public function testElementsBasic(AcceptanceTester $i) { @@ -71,7 +71,7 @@ class WcmsTestsWebformElementsCest { * @param AcceptanceTester $i * The acceptance tester. * - * @throws Exception + * @group webform */ public function testElementsOptions(AcceptanceTester $i) { @@ -88,7 +88,7 @@ class WcmsTestsWebformElementsCest { * @param AcceptanceTester $i * The acceptance tester. * - * @throws Exception + * @group webform */ public function testElementsAdvanced(AcceptanceTester $i) { @@ -105,7 +105,7 @@ class WcmsTestsWebformElementsCest { * @param AcceptanceTester $i * The acceptance tester. * - * @throws Exception + * @group webform */ public function testElementsComposite(AcceptanceTester $i) { @@ -122,7 +122,7 @@ class WcmsTestsWebformElementsCest { * @param AcceptanceTester $i * The acceptance tester. * - * @throws Exception + * @group webform */ public function testElementsDate(AcceptanceTester $i) { @@ -139,7 +139,7 @@ class WcmsTestsWebformElementsCest { * @param AcceptanceTester $i * The acceptance tester. * - * @throws Exception + * @group webform */ public function testElementsEntity(AcceptanceTester $i) { @@ -156,7 +156,7 @@ class WcmsTestsWebformElementsCest { * @param AcceptanceTester $i * The acceptance tester. * - * @throws Exception + * @group webform */ public function testElementsContainers(AcceptanceTester $i) { diff --git a/acceptance/WcmsTestsWebformSettingsCest.php b/acceptance/WcmsTestsWebformSettingsCest.php index c706bee71e7de4fabb7ea0b7025d72f63b04cbf8..282149cd90f2d68e96cd8010ff708b5112e9227a 100644 --- a/acceptance/WcmsTestsWebformSettingsCest.php +++ b/acceptance/WcmsTestsWebformSettingsCest.php @@ -53,6 +53,8 @@ class WcmsTestsWebformSettingsCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group webform */ public function testCaptcha(AcceptanceTester $i) { @@ -72,6 +74,8 @@ class WcmsTestsWebformSettingsCest { * * @param AcceptanceTester $i * The acceptance tester. + * + * @group webform */ public function testCaptchaPresent(AcceptanceTester $i) { @@ -91,7 +95,7 @@ class WcmsTestsWebformSettingsCest { * @param AcceptanceTester $i * The acceptance tester. * - * @throws Exception + * @group webform */ public function testSettings(AcceptanceTester $i) { diff --git a/acceptance_norecorder.suite.yml b/acceptance_norecorder.suite.yml index 7d9cd649eac7a0b4089c179be1a2b99e1152e7e3..076a7f7b7679d139eda2eeb991f18f5531f65d5a 100644 --- a/acceptance_norecorder.suite.yml +++ b/acceptance_norecorder.suite.yml @@ -11,6 +11,8 @@ modules: url: http://nginx browser: chrome port: 9515 + request_timeout: 30 + wait: 30 capabilities: acceptInsecureCerts: true enableVerboseLogging: false diff --git a/acceptance_recorder.suite.yml b/acceptance_recorder.suite.yml index e6c1953245f09644934f476dcb38a1bf3dc1b698..9dd369fa58f21e7754c00b13549fab6ccb592aec 100644 --- a/acceptance_recorder.suite.yml +++ b/acceptance_recorder.suite.yml @@ -11,6 +11,8 @@ modules: url: http://nginx browser: chrome port: 9515 + request_timeout: 30 + wait: 30 capabilities: acceptInsecureCerts: true enableVerboseLogging: false diff --git a/codeception.yml b/codeception.yml index 5a96943c280d23df16efc6236a42007d9716d6d4..cf49bf7eb13f44748c773104fbf518067c7db434 100644 --- a/codeception.yml +++ b/codeception.yml @@ -1,5 +1,6 @@ settings: memory_limit: 2048M + shuffle: true paths: tests: tests output: tests/_output diff --git a/run_tests.sh b/run_tests.sh index 80b1b7cb5a17d4974e147d3ceb0bdf2b4a89735f..0abe0a7b47a522504987310a3c1369373e536335 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -1,103 +1,132 @@ -rm -rf tests/_output -rm -rf tests/_data - -codecoverage=0 -stepper=0 -debugger=0 -testname="" +# Set the variables to start. +endtoend=0; +stepper=0; +installsite=0; +testname=""; +# Ensure we are not using the recorder. cp tests/acceptance_norecorder.suite.yml tests/acceptance.suite.yml -while getopts 'crsdt:' OPTION; do +# Get the options from the command line. +while getopts 'rsiet:' OPTION; do case "$OPTION" in r) cp tests/acceptance_recorder.suite.yml tests/acceptance.suite.yml ;; - c) - codecoverage=1 - ;; s) stepper=1 ;; - d) - debugger=1 + i) + installsite=1 + ;; + e) + endtoend=1 ;; t) testname=$OPTARG ;; ?) - echo "script usage: [-c] [-r] [-s] [-d] [-t] <TestName>" >&2 + echo "script usage: [-rsiet]" >&2 exit 1 ;; esac done -if [ $stepper == 0 ] && [ $codecoverage == 0 ]; then - if [ $debugger == 1 ]; then - if [ $testname ]; then - php vendor/bin/codecept run acceptance $testname --fail-fast --debug - else - php vendor/bin/codecept run acceptance --fail-fast --debug - fi - else - if [ $testname ]; then - php vendor/bin/codecept run acceptance $testname --fail-fast - else - php vendor/bin/codecept run acceptance --fail-fast - fi - fi +# Ensure that we have either end to end or specific test. +if [[ $endtoend == 0 ]] && [[ $testname == "" ]]; then + echo "You must specify a test if not using end to end tests"; + exit 1; +fi; + +# Remove all the old test data. +rm -rf tests/_output +rm -rf tests/_data + +if [[ $installsite == 1 ]]; then + # Generate a file name for the sql file. + sqlfile=$(cat /proc/sys/kernel/random/uuid) + sqlfile="$sqlfile.sql" + + # Install a site and get an sql file from site install. + echo "*********************************************************" + echo "Installing site ..." + drush si uw_base_profile --db-url=mysql://drupal:drupal@mariadb/drupal --account-name=wcmsadmin --account-pass=a --site-name="WCMS Test" -y + drush sql-dump > "$sqlfile" + echo "Done installing site." + echo "*********************************************************" fi -if [ $stepper == 1 ] && [ $codecoverage == 1 ]; then - if [ $debugger == 1 ]; then - if [ $testname ]; then - php vendor/bin/codecept run acceptance $testname --steps --coverage-html --fail-fast --debug - else - php vendor/bin/codecept run acceptance --steps --coverage-html --fail-fast --debug - fi - else - if [ $testname ]; then - php vendor/bin/codecept run acceptance $testname --steps --coverage-html --fail-fast - else - php vendor/bin/codecept run acceptance --steps --coverage-html --fail-fast - fi - fi -else - if [ $stepper == 1 ]; then - if [ $debugger == 1 ]; then - if [ $testname ]; then - php vendor/bin/codecept run acceptance $testname --steps --fail-fast --debug - else - php vendor/bin/codecept run acceptance --steps --fail-fast --debug - fi - else - if [ $testname ]; then - php vendor/bin/codecept run acceptance $testname --steps --fail-fast - else - php vendor/bin/codecept run acceptance --steps --fail-fast +if [[ $endtoend == 1 ]]; then + + # Directory to iterate through + directory="tests/acceptance" + + # Get the file names of the tests. + files=() + for file in "$directory"/*; do + if [[ -f "$file" ]]; then + file="${file//tests\/acceptance\//}" + file="${file//\.php/}" + files+=("$file") fi - fi + done +else + files=("$testname") +fi + +# Perform the tests using the files. +for value in "${files[@]}"; do + echo "*********************************************************" + echo "Current Test: $value" + echo "*********************************************************" + + if [[ $endtoend == 1 ]]; then + echo "Stopping chrome driver ..." + echo "*********************************************************" + pgrep chrome | xargs kill -9 fi - if [ $codecoverage == 1 ]; then - if [ $debugger == 1 ]; then - if [ $testname ]; then - php vendor/bin/codecept run acceptance $testname --coverage-html --debug - else - php vendor/bin/codecept run acceptance --coverage-html --debug - fi - else - if [ $testname ]; then - php vendor/bin/codecept run acceptance $testname --coverage-html --fail-fast - else - php vendor/bin/codecept run acceptance --coverage-html --fail-fast - fi - fi + + if [[ $installsite == 1 ]]; then + echo "Dropping database ..." + echo "*********************************************************" + drush sql-drop -y + echo "Importing database ..." + echo "*********************************************************" + drush sql-cli < "$sqlfile" fi -fi -files=(tests/_output/*.fail.html) + if [[ $endtoend == 1 ]]; then + echo "Starting chrome driver ..." + echo "*********************************************************" + chromedriver --port=9515 --url-base=/wd/hub & + echo "Sleeping ..." + echo "*********************************************************" + sleep 15s + echo "" + fi -if [ -e "${files[0]}" ]; then - sed -i -- 's/link rel\=\"stylesheet\" media\=\"all\" href\=\"\/core/link rel\=\"stylesheet\" media\=\"all\" href\=\"\.\.\/\.\.\/web\/core/g' tests/_output/*.fail.html - sed -i -- 's/link rel\=\"stylesheet\" media\=\"all\" href\=\"\/profiles/link rel\=\"stylesheet\" media\=\"all\" href\=\"\.\.\/\.\.\/web\/profiles/g' tests/_output/*.fail.html -fi + echo "*********************************************************" + echo "Starting test ... $value" + echo "*********************************************************" + if [[ $stepper == 1 ]]; then + php vendor/bin/codecept run acceptance "$value" --fail-fast --steps + else + php vendor/bin/codecept run acceptance "$value" --fail-fast + fi + if [[ $? -ne 0 ]]; then + if [[ $installsite == 1 ]]; then + rm "$sqlfile" + fi + echo "" + echo "*********************************************************" + echo "Test $value failed, done test." + echo "*********************************************************" + echo "" + break + fi + echo "" + echo "*********************************************************" + echo "Done test $value." + echo "*********************************************************" + echo "" +done