From 64de78be76e2b35ed8d1461411ef26f2d215805e Mon Sep 17 00:00:00 2001 From: Lauri Eskola Date: Mon, 15 Aug 2022 15:23:39 +0300 Subject: [PATCH] Issue #3278418 by danflanagan8, quietone, nod_: Media Library Tests should not rely on Classy (cherry picked from commit f384111416b1f4b44e408f47e11e87665cd97edc) --- .../ContentModerationTest.php | 2 +- .../EntityReferenceWidgetTest.php | 13 +++++++++++++ .../FieldUiIntegrationTest.php | 5 +++++ .../MediaLibraryTestBase.php | 3 +-- .../MediaOverviewTest.php | 15 ++++++++++++--- .../FunctionalJavascript/TranslationsTest.php | 10 +++++----- .../ViewsUiIntegrationTest.php | 13 +++++++++---- .../FunctionalJavascript/WidgetAccessTest.php | 13 +++++++++---- .../WidgetAnonymousTest.php | 5 +++++ .../FunctionalJavascript/WidgetOEmbedTest.php | 19 ++++++++++++++++++- .../FunctionalJavascript/WidgetUploadTest.php | 5 +++++ .../FunctionalJavascript/WidgetViewsTest.php | 16 +++++++++++++--- .../WidgetWithoutTypesTest.php | 5 +++++ 13 files changed, 101 insertions(+), 23 deletions(-) diff --git a/core/modules/media_library/tests/src/FunctionalJavascript/ContentModerationTest.php b/core/modules/media_library/tests/src/FunctionalJavascript/ContentModerationTest.php index dd21529b76e..e2e65b294d7 100644 --- a/core/modules/media_library/tests/src/FunctionalJavascript/ContentModerationTest.php +++ b/core/modules/media_library/tests/src/FunctionalJavascript/ContentModerationTest.php @@ -38,7 +38,7 @@ class ContentModerationTest extends WebDriverTestBase { /** * {@inheritdoc} */ - protected $defaultTheme = 'classy'; + protected $defaultTheme = 'stark'; /** * User with the 'administer media' permission. diff --git a/core/modules/media_library/tests/src/FunctionalJavascript/EntityReferenceWidgetTest.php b/core/modules/media_library/tests/src/FunctionalJavascript/EntityReferenceWidgetTest.php index e7d5423fd3f..10375a9c0b5 100644 --- a/core/modules/media_library/tests/src/FunctionalJavascript/EntityReferenceWidgetTest.php +++ b/core/modules/media_library/tests/src/FunctionalJavascript/EntityReferenceWidgetTest.php @@ -19,6 +19,19 @@ class EntityReferenceWidgetTest extends MediaLibraryTestBase { */ protected static $modules = ['field_ui']; + /** + * The theme to install as the default for testing. + * + * @var string + * + * @todo This test's reliance on classes in order to assert the order of + * field items makes Stark a bad fit as a base theme. Change the default + * theme to Starterkit once it is stable. + * + * @see https://www.drupal.org/project/drupal/issues/3281695 + */ + protected $defaultTheme = 'classy'; + /** * Test media items. * diff --git a/core/modules/media_library/tests/src/FunctionalJavascript/FieldUiIntegrationTest.php b/core/modules/media_library/tests/src/FunctionalJavascript/FieldUiIntegrationTest.php index 68220b48b8b..72bd066fdda 100644 --- a/core/modules/media_library/tests/src/FunctionalJavascript/FieldUiIntegrationTest.php +++ b/core/modules/media_library/tests/src/FunctionalJavascript/FieldUiIntegrationTest.php @@ -14,6 +14,11 @@ class FieldUiIntegrationTest extends MediaLibraryTestBase { */ protected static $modules = ['field_ui']; + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + /** * {@inheritdoc} */ diff --git a/core/modules/media_library/tests/src/FunctionalJavascript/MediaLibraryTestBase.php b/core/modules/media_library/tests/src/FunctionalJavascript/MediaLibraryTestBase.php index 8ec4b3b5a9c..1b63a63c74c 100644 --- a/core/modules/media_library/tests/src/FunctionalJavascript/MediaLibraryTestBase.php +++ b/core/modules/media_library/tests/src/FunctionalJavascript/MediaLibraryTestBase.php @@ -18,7 +18,7 @@ abstract class MediaLibraryTestBase extends WebDriverTestBase { /** * {@inheritdoc} */ - protected $defaultTheme = 'classy'; + protected $defaultTheme = 'stark'; /** * Create media items. @@ -333,7 +333,6 @@ abstract class MediaLibraryTestBase extends WebDriverTestBase { $assert_session->elementNotExists('css', '[data-drupal-selector$="preview"]', $fields); $assert_session->buttonNotExists('Remove', $fields); $assert_session->elementNotExists('css', '[data-drupal-selector$="filename"]', $fields); - $assert_session->elementNotExists('css', '.file-size', $fields); } /** diff --git a/core/modules/media_library/tests/src/FunctionalJavascript/MediaOverviewTest.php b/core/modules/media_library/tests/src/FunctionalJavascript/MediaOverviewTest.php index e3eaab22e18..88e6cecb18c 100644 --- a/core/modules/media_library/tests/src/FunctionalJavascript/MediaOverviewTest.php +++ b/core/modules/media_library/tests/src/FunctionalJavascript/MediaOverviewTest.php @@ -14,6 +14,11 @@ class MediaOverviewTest extends MediaLibraryTestBase { */ protected static $modules = ['block']; + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + /** * {@inheritdoc} */ @@ -64,7 +69,7 @@ class MediaOverviewTest extends MediaLibraryTestBase { $assert_session->linkExists('Table'); // We should see the table view and a link to add media. - $assert_session->elementExists('css', '.view-media .views-table'); + $assert_session->elementExists('css', '[data-drupal-selector="views-form-media-media-page-list"] table'); $assert_session->linkExists('Add media'); // Go to the grid display for the rest of the test. @@ -78,8 +83,12 @@ class MediaOverviewTest extends MediaLibraryTestBase { $assert_session->pageTextContains('Dog'); $assert_session->pageTextContains('Turtle'); - // Verify that the media name does not contain a link. - $assert_session->elementNotExists('css', '.media-library-item__name a'); + // Verify that the media name does not contain a link. The selector is + // tricky, so start by asserting ".js-media-library-item-preview + div" + // can select a div containing a media name. + $assert_session->elementExists('css', '.js-media-library-item-preview + div:contains("Dog")'); + $assert_session->elementExists('css', '.js-media-library-item-preview + div:contains("Turtle")'); + $assert_session->elementNotExists('css', '.js-media-library-item-preview + div a'); // Verify that there are links to edit and delete media items. $assert_session->linkExists('Edit Dog'); $assert_session->linkExists('Delete Turtle'); diff --git a/core/modules/media_library/tests/src/FunctionalJavascript/TranslationsTest.php b/core/modules/media_library/tests/src/FunctionalJavascript/TranslationsTest.php index 0aa581b42fe..4b14a2345f5 100644 --- a/core/modules/media_library/tests/src/FunctionalJavascript/TranslationsTest.php +++ b/core/modules/media_library/tests/src/FunctionalJavascript/TranslationsTest.php @@ -37,7 +37,7 @@ class TranslationsTest extends WebDriverTestBase { /** * {@inheritdoc} */ - protected $defaultTheme = 'classy'; + protected $defaultTheme = 'stark'; /** * {@inheritdoc} @@ -127,7 +127,7 @@ class TranslationsTest extends WebDriverTestBase { // regardless of the interface language. $this->drupalGet('nl/admin/content/media-grid'); $assert_session->elementsCount('css', '.js-media-library-item', 6); - $media_items = $page->findAll('css', '.media-library-item__name'); + $media_items = $page->findAll('css', '.js-media-library-item-preview + div'); $media_names = []; foreach ($media_items as $media_item) { $media_names[] = $media_item->getText(); @@ -138,7 +138,7 @@ class TranslationsTest extends WebDriverTestBase { $this->drupalGet('es/admin/content/media-grid'); $assert_session->elementsCount('css', '.js-media-library-item', 6); - $media_items = $page->findAll('css', '.media-library-item__name'); + $media_items = $page->findAll('css', '.js-media-library-item-preview + div'); $media_names = []; foreach ($media_items as $media_item) { $media_names[] = $media_item->getText(); @@ -153,7 +153,7 @@ class TranslationsTest extends WebDriverTestBase { $assert_session->elementExists('css', '.js-media-library-open-button[name^="field_media"]')->click(); $assert_session->waitForText('Add or select media'); $assert_session->elementsCount('css', '.js-media-library-item', 4); - $media_items = $page->findAll('css', '.media-library-item__name'); + $media_items = $page->findAll('css', '.js-media-library-item-preview + div'); $media_names = []; foreach ($media_items as $media_item) { $media_names[] = $media_item->getText(); @@ -166,7 +166,7 @@ class TranslationsTest extends WebDriverTestBase { $assert_session->elementExists('css', '.js-media-library-open-button[name^="field_media"]')->click(); $assert_session->waitForText('Add or select media'); $assert_session->elementsCount('css', '.js-media-library-item', 4); - $media_items = $page->findAll('css', '.media-library-item__name'); + $media_items = $page->findAll('css', '.js-media-library-item-preview + div'); $media_names = []; foreach ($media_items as $media_item) { $media_names[] = $media_item->getText(); diff --git a/core/modules/media_library/tests/src/FunctionalJavascript/ViewsUiIntegrationTest.php b/core/modules/media_library/tests/src/FunctionalJavascript/ViewsUiIntegrationTest.php index 0e2eab677c0..f66795fb9fb 100644 --- a/core/modules/media_library/tests/src/FunctionalJavascript/ViewsUiIntegrationTest.php +++ b/core/modules/media_library/tests/src/FunctionalJavascript/ViewsUiIntegrationTest.php @@ -14,6 +14,11 @@ class ViewsUiIntegrationTest extends MediaLibraryTestBase { */ protected static $modules = ['views_ui']; + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + /** * {@inheritdoc} */ @@ -51,8 +56,8 @@ class ViewsUiIntegrationTest extends MediaLibraryTestBase { $this->waitForElementsCount('css', '.js-media-library-item', 8); // Assert that filtering works in live preview. - $page->find('css', '.js-media-library-view .view-filters')->fillField('name', 'snake'); - $page->find('css', '.js-media-library-view .view-filters')->pressButton('Apply filters'); + $page->find('css', '.js-media-library-view')->fillField('name', 'snake'); + $page->find('css', '.js-media-library-view')->pressButton('Apply filters'); $this->waitForElementsCount('css', '.js-media-library-item', 1); // Test the same routine but in the view for the table widget. @@ -60,8 +65,8 @@ class ViewsUiIntegrationTest extends MediaLibraryTestBase { $this->waitForElementsCount('css', '.js-media-library-item', 8); // Assert that filtering works in live preview. - $page->find('css', '.js-media-library-view .view-filters')->fillField('name', 'snake'); - $page->find('css', '.js-media-library-view .view-filters')->pressButton('Apply filters'); + $page->find('css', '.js-media-library-view')->fillField('name', 'snake'); + $page->find('css', '.js-media-library-view')->pressButton('Apply filters'); $this->waitForElementsCount('css', '.js-media-library-item', 1); // We cannot test clicking the 'Insert selected' button in either view diff --git a/core/modules/media_library/tests/src/FunctionalJavascript/WidgetAccessTest.php b/core/modules/media_library/tests/src/FunctionalJavascript/WidgetAccessTest.php index 0abb57271d6..c7a96e635ba 100644 --- a/core/modules/media_library/tests/src/FunctionalJavascript/WidgetAccessTest.php +++ b/core/modules/media_library/tests/src/FunctionalJavascript/WidgetAccessTest.php @@ -14,6 +14,11 @@ use Drupal\user\RoleInterface; */ class WidgetAccessTest extends MediaLibraryTestBase { + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + /** * Tests that the widget access works as expected. */ @@ -80,11 +85,11 @@ class WidgetAccessTest extends MediaLibraryTestBase { 'view media', ]); $this->drupalGet('admin/content/media-widget', $url_options); - $assert_session->elementExists('css', '.view-media-library'); + $assert_session->elementExists('css', '.js-media-library-view'); $this->drupalGet('admin/content/media-widget-table', $url_options); - $assert_session->elementExists('css', '.view-media-library'); + $assert_session->elementExists('css', '.js-media-library-view'); $this->drupalGet('media-library', $url_options); - $assert_session->elementExists('css', '.view-media-library'); + $assert_session->elementExists('css', '.js-media-library-view'); // Assert the user does not have access to the media add form if the user // does not have the 'create media' permission. $assert_session->fieldNotExists('files[upload][]'); @@ -104,7 +109,7 @@ class WidgetAccessTest extends MediaLibraryTestBase { 'create media', ]); $this->drupalGet('media-library', $url_options); - $assert_session->elementExists('css', '.view-media-library'); + $assert_session->elementExists('css', '.js-media-library-view'); $assert_session->fieldExists('Add files'); // Assert the media library can not be accessed if the required state diff --git a/core/modules/media_library/tests/src/FunctionalJavascript/WidgetAnonymousTest.php b/core/modules/media_library/tests/src/FunctionalJavascript/WidgetAnonymousTest.php index 1a6ab1925b6..73442e0e21d 100644 --- a/core/modules/media_library/tests/src/FunctionalJavascript/WidgetAnonymousTest.php +++ b/core/modules/media_library/tests/src/FunctionalJavascript/WidgetAnonymousTest.php @@ -12,6 +12,11 @@ use Drupal\user\RoleInterface; */ class WidgetAnonymousTest extends MediaLibraryTestBase { + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + /** * {@inheritdoc} */ diff --git a/core/modules/media_library/tests/src/FunctionalJavascript/WidgetOEmbedTest.php b/core/modules/media_library/tests/src/FunctionalJavascript/WidgetOEmbedTest.php index 945b63f9ec8..5a793631988 100644 --- a/core/modules/media_library/tests/src/FunctionalJavascript/WidgetOEmbedTest.php +++ b/core/modules/media_library/tests/src/FunctionalJavascript/WidgetOEmbedTest.php @@ -20,6 +20,11 @@ class WidgetOEmbedTest extends MediaLibraryTestBase { */ protected static $modules = ['media_test_oembed']; + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + /** * {@inheritdoc} */ @@ -77,6 +82,10 @@ class WidgetOEmbedTest extends MediaLibraryTestBase { // consistently match their label's "for" attribute. $assert_session->assertWaitOnAjaxRequest(); $this->waitForText('The media item has been created but has not yet been saved.'); + // There is no other selected media and this is not the advanced ui. + // Assert that the Additional selected media element does not appear. + $assert_session->pageTextNotContains('Additional selected media'); + $assert_session->elementNotExists('css', '[data-drupal-selector="edit-selection"]'); // Assert the name field contains the remote video title. $assert_session->fieldValueEquals('Name', $youtube_title); $this->pressSaveButton(); @@ -137,7 +146,9 @@ class WidgetOEmbedTest extends MediaLibraryTestBase { $assert_session->assertWaitOnAjaxRequest(); $this->waitForText('The media item has been created but has not yet been saved.'); $page->fillField('Name', 'Custom video title'); - $assert_session->elementNotExists('css', '.media-library-add-form__selected-media'); + // The non-advanced ui should not show the Additional selected media. + $assert_session->pageTextNotContains('Additional selected media'); + $assert_session->elementNotExists('css', '[data-drupal-selector="edit-selection"]'); $this->pressSaveButton(); // Load the created media item. @@ -258,6 +269,9 @@ class WidgetOEmbedTest extends MediaLibraryTestBase { // consistently match their label's "for" attribute. $assert_session->assertWaitOnAjaxRequest(); $this->waitForText('The media item has been created but has not yet been saved.'); + // Assert that Additional selected media does not appear. + $assert_session->pageTextNotContains('Additional selected media'); + $assert_session->elementNotExists('css', '[data-drupal-selector="edit-selection"]'); // Assert the name field contains the remote video title. $assert_session->fieldValueEquals('Name', $youtube_title); $this->saveAnd('select'); @@ -317,6 +331,9 @@ class WidgetOEmbedTest extends MediaLibraryTestBase { // consistently match their label's "for" attribute. $assert_session->assertWaitOnAjaxRequest(); $this->waitForText('The media item has been created but has not yet been saved.'); + // The advanced ui should show the Additional selected media. + $assert_session->pageTextContains('Additional selected media'); + $assert_session->elementExists('css', '[data-drupal-selector="edit-selection"]'); $page->fillField('Name', 'Custom video title'); $assert_session->checkboxChecked("Select $youtube_title", $this->getSelectionArea()); $this->saveAnd('select'); diff --git a/core/modules/media_library/tests/src/FunctionalJavascript/WidgetUploadTest.php b/core/modules/media_library/tests/src/FunctionalJavascript/WidgetUploadTest.php index bb12a63ef21..bcb20e93c2a 100644 --- a/core/modules/media_library/tests/src/FunctionalJavascript/WidgetUploadTest.php +++ b/core/modules/media_library/tests/src/FunctionalJavascript/WidgetUploadTest.php @@ -17,6 +17,11 @@ class WidgetUploadTest extends MediaLibraryTestBase { use TestFileCreationTrait; + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + /** * Tests that uploads in the Media library's widget works as expected. */ diff --git a/core/modules/media_library/tests/src/FunctionalJavascript/WidgetViewsTest.php b/core/modules/media_library/tests/src/FunctionalJavascript/WidgetViewsTest.php index 838e0d33272..82bde406b2a 100644 --- a/core/modules/media_library/tests/src/FunctionalJavascript/WidgetViewsTest.php +++ b/core/modules/media_library/tests/src/FunctionalJavascript/WidgetViewsTest.php @@ -9,6 +9,11 @@ namespace Drupal\Tests\media_library\FunctionalJavascript; */ class WidgetViewsTest extends MediaLibraryTestBase { + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + /** * {@inheritdoc} */ @@ -79,13 +84,18 @@ class WidgetViewsTest extends MediaLibraryTestBase { $assert_session->buttonNotExists('Apply filters', $button_pane); // Assert the pager works as expected. - $assert_session->elementTextContains('css', '.js-media-library-view .pager__item.is-active', 'Page 1'); + // An active pager item is not linked and contains "Page #" as text. + $assert_session->elementTextContains('css', '.js-media-library-view .js-pager__items > li:nth-of-type(1)', 'Page 1'); + $assert_session->elementNotExists('css', '.js-media-library-view .js-pager__items > li:nth-of-type(1) a'); + $assert_session->elementExists('css', '.js-media-library-view .js-pager__items > li:nth-of-type(2) a'); $this->assertCount(24, $this->getCheckboxes()); $page->clickLink('Next page'); - $this->waitForElementTextContains('.js-media-library-view .pager__item.is-active', 'Page 2'); + $this->waitForElementTextContains('.js-media-library-view .js-pager__items > li:nth-of-type(2)', 'Page 2'); + $assert_session->elementExists('css', '.js-media-library-view .js-pager__items > li:nth-of-type(1) a'); + $assert_session->elementNotExists('css', '.js-media-library-view .js-pager__items > li:nth-of-type(2) a'); $this->assertCount(1, $this->getCheckboxes()); $page->clickLink('Previous page'); - $this->waitForElementTextContains('.js-media-library-view .pager__item.is-active', 'Page 1'); + $this->waitForElementTextContains('.js-media-library-view .js-pager__items > li:nth-of-type(1)', 'Page 1'); $this->assertCount(24, $this->getCheckboxes()); $this->switchToMediaLibraryTable(); diff --git a/core/modules/media_library/tests/src/FunctionalJavascript/WidgetWithoutTypesTest.php b/core/modules/media_library/tests/src/FunctionalJavascript/WidgetWithoutTypesTest.php index c43f22c7cdb..616455db03e 100644 --- a/core/modules/media_library/tests/src/FunctionalJavascript/WidgetWithoutTypesTest.php +++ b/core/modules/media_library/tests/src/FunctionalJavascript/WidgetWithoutTypesTest.php @@ -17,6 +17,11 @@ class WidgetWithoutTypesTest extends MediaLibraryTestBase { */ protected static $modules = ['field_ui']; + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + /** * Tests that the widget works as expected when media types are deleted. */