Issue #3278418 by danflanagan8, quietone, nod_: Media Library Tests should not rely on Classy

(cherry picked from commit f384111416)
merge-requests/2622/head
Lauri Eskola 2022-08-15 15:23:39 +03:00
parent bb7750abb7
commit 64de78be76
No known key found for this signature in database
GPG Key ID: 382FC0F5B0DF53F8
13 changed files with 101 additions and 23 deletions

View File

@ -38,7 +38,7 @@ class ContentModerationTest extends WebDriverTestBase {
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected $defaultTheme = 'classy'; protected $defaultTheme = 'stark';
/** /**
* User with the 'administer media' permission. * User with the 'administer media' permission.

View File

@ -19,6 +19,19 @@ class EntityReferenceWidgetTest extends MediaLibraryTestBase {
*/ */
protected static $modules = ['field_ui']; 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. * Test media items.
* *

View File

@ -14,6 +14,11 @@ class FieldUiIntegrationTest extends MediaLibraryTestBase {
*/ */
protected static $modules = ['field_ui']; protected static $modules = ['field_ui'];
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */

View File

@ -18,7 +18,7 @@ abstract class MediaLibraryTestBase extends WebDriverTestBase {
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected $defaultTheme = 'classy'; protected $defaultTheme = 'stark';
/** /**
* Create media items. * Create media items.
@ -333,7 +333,6 @@ abstract class MediaLibraryTestBase extends WebDriverTestBase {
$assert_session->elementNotExists('css', '[data-drupal-selector$="preview"]', $fields); $assert_session->elementNotExists('css', '[data-drupal-selector$="preview"]', $fields);
$assert_session->buttonNotExists('Remove', $fields); $assert_session->buttonNotExists('Remove', $fields);
$assert_session->elementNotExists('css', '[data-drupal-selector$="filename"]', $fields); $assert_session->elementNotExists('css', '[data-drupal-selector$="filename"]', $fields);
$assert_session->elementNotExists('css', '.file-size', $fields);
} }
/** /**

View File

@ -14,6 +14,11 @@ class MediaOverviewTest extends MediaLibraryTestBase {
*/ */
protected static $modules = ['block']; protected static $modules = ['block'];
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
@ -64,7 +69,7 @@ class MediaOverviewTest extends MediaLibraryTestBase {
$assert_session->linkExists('Table'); $assert_session->linkExists('Table');
// We should see the table view and a link to add media. // 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'); $assert_session->linkExists('Add media');
// Go to the grid display for the rest of the test. // 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('Dog');
$assert_session->pageTextContains('Turtle'); $assert_session->pageTextContains('Turtle');
// Verify that the media name does not contain a link. // Verify that the media name does not contain a link. The selector is
$assert_session->elementNotExists('css', '.media-library-item__name a'); // 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. // Verify that there are links to edit and delete media items.
$assert_session->linkExists('Edit Dog'); $assert_session->linkExists('Edit Dog');
$assert_session->linkExists('Delete Turtle'); $assert_session->linkExists('Delete Turtle');

View File

@ -37,7 +37,7 @@ class TranslationsTest extends WebDriverTestBase {
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected $defaultTheme = 'classy'; protected $defaultTheme = 'stark';
/** /**
* {@inheritdoc} * {@inheritdoc}
@ -127,7 +127,7 @@ class TranslationsTest extends WebDriverTestBase {
// regardless of the interface language. // regardless of the interface language.
$this->drupalGet('nl/admin/content/media-grid'); $this->drupalGet('nl/admin/content/media-grid');
$assert_session->elementsCount('css', '.js-media-library-item', 6); $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 = []; $media_names = [];
foreach ($media_items as $media_item) { foreach ($media_items as $media_item) {
$media_names[] = $media_item->getText(); $media_names[] = $media_item->getText();
@ -138,7 +138,7 @@ class TranslationsTest extends WebDriverTestBase {
$this->drupalGet('es/admin/content/media-grid'); $this->drupalGet('es/admin/content/media-grid');
$assert_session->elementsCount('css', '.js-media-library-item', 6); $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 = []; $media_names = [];
foreach ($media_items as $media_item) { foreach ($media_items as $media_item) {
$media_names[] = $media_item->getText(); $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->elementExists('css', '.js-media-library-open-button[name^="field_media"]')->click();
$assert_session->waitForText('Add or select media'); $assert_session->waitForText('Add or select media');
$assert_session->elementsCount('css', '.js-media-library-item', 4); $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 = []; $media_names = [];
foreach ($media_items as $media_item) { foreach ($media_items as $media_item) {
$media_names[] = $media_item->getText(); $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->elementExists('css', '.js-media-library-open-button[name^="field_media"]')->click();
$assert_session->waitForText('Add or select media'); $assert_session->waitForText('Add or select media');
$assert_session->elementsCount('css', '.js-media-library-item', 4); $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 = []; $media_names = [];
foreach ($media_items as $media_item) { foreach ($media_items as $media_item) {
$media_names[] = $media_item->getText(); $media_names[] = $media_item->getText();

View File

@ -14,6 +14,11 @@ class ViewsUiIntegrationTest extends MediaLibraryTestBase {
*/ */
protected static $modules = ['views_ui']; protected static $modules = ['views_ui'];
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
@ -51,8 +56,8 @@ class ViewsUiIntegrationTest extends MediaLibraryTestBase {
$this->waitForElementsCount('css', '.js-media-library-item', 8); $this->waitForElementsCount('css', '.js-media-library-item', 8);
// Assert that filtering works in live preview. // 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')->fillField('name', 'snake');
$page->find('css', '.js-media-library-view .view-filters')->pressButton('Apply filters'); $page->find('css', '.js-media-library-view')->pressButton('Apply filters');
$this->waitForElementsCount('css', '.js-media-library-item', 1); $this->waitForElementsCount('css', '.js-media-library-item', 1);
// Test the same routine but in the view for the table widget. // 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); $this->waitForElementsCount('css', '.js-media-library-item', 8);
// Assert that filtering works in live preview. // 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')->fillField('name', 'snake');
$page->find('css', '.js-media-library-view .view-filters')->pressButton('Apply filters'); $page->find('css', '.js-media-library-view')->pressButton('Apply filters');
$this->waitForElementsCount('css', '.js-media-library-item', 1); $this->waitForElementsCount('css', '.js-media-library-item', 1);
// We cannot test clicking the 'Insert selected' button in either view // We cannot test clicking the 'Insert selected' button in either view

View File

@ -14,6 +14,11 @@ use Drupal\user\RoleInterface;
*/ */
class WidgetAccessTest extends MediaLibraryTestBase { class WidgetAccessTest extends MediaLibraryTestBase {
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/** /**
* Tests that the widget access works as expected. * Tests that the widget access works as expected.
*/ */
@ -80,11 +85,11 @@ class WidgetAccessTest extends MediaLibraryTestBase {
'view media', 'view media',
]); ]);
$this->drupalGet('admin/content/media-widget', $url_options); $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); $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); $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 // Assert the user does not have access to the media add form if the user
// does not have the 'create media' permission. // does not have the 'create media' permission.
$assert_session->fieldNotExists('files[upload][]'); $assert_session->fieldNotExists('files[upload][]');
@ -104,7 +109,7 @@ class WidgetAccessTest extends MediaLibraryTestBase {
'create media', 'create media',
]); ]);
$this->drupalGet('media-library', $url_options); $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_session->fieldExists('Add files');
// Assert the media library can not be accessed if the required state // Assert the media library can not be accessed if the required state

View File

@ -12,6 +12,11 @@ use Drupal\user\RoleInterface;
*/ */
class WidgetAnonymousTest extends MediaLibraryTestBase { class WidgetAnonymousTest extends MediaLibraryTestBase {
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */

View File

@ -20,6 +20,11 @@ class WidgetOEmbedTest extends MediaLibraryTestBase {
*/ */
protected static $modules = ['media_test_oembed']; protected static $modules = ['media_test_oembed'];
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
@ -77,6 +82,10 @@ class WidgetOEmbedTest extends MediaLibraryTestBase {
// consistently match their label's "for" attribute. // consistently match their label's "for" attribute.
$assert_session->assertWaitOnAjaxRequest(); $assert_session->assertWaitOnAjaxRequest();
$this->waitForText('The media item has been created but has not yet been saved.'); $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 the name field contains the remote video title.
$assert_session->fieldValueEquals('Name', $youtube_title); $assert_session->fieldValueEquals('Name', $youtube_title);
$this->pressSaveButton(); $this->pressSaveButton();
@ -137,7 +146,9 @@ class WidgetOEmbedTest extends MediaLibraryTestBase {
$assert_session->assertWaitOnAjaxRequest(); $assert_session->assertWaitOnAjaxRequest();
$this->waitForText('The media item has been created but has not yet been saved.'); $this->waitForText('The media item has been created but has not yet been saved.');
$page->fillField('Name', 'Custom video title'); $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(); $this->pressSaveButton();
// Load the created media item. // Load the created media item.
@ -258,6 +269,9 @@ class WidgetOEmbedTest extends MediaLibraryTestBase {
// consistently match their label's "for" attribute. // consistently match their label's "for" attribute.
$assert_session->assertWaitOnAjaxRequest(); $assert_session->assertWaitOnAjaxRequest();
$this->waitForText('The media item has been created but has not yet been saved.'); $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 the name field contains the remote video title.
$assert_session->fieldValueEquals('Name', $youtube_title); $assert_session->fieldValueEquals('Name', $youtube_title);
$this->saveAnd('select'); $this->saveAnd('select');
@ -317,6 +331,9 @@ class WidgetOEmbedTest extends MediaLibraryTestBase {
// consistently match their label's "for" attribute. // consistently match their label's "for" attribute.
$assert_session->assertWaitOnAjaxRequest(); $assert_session->assertWaitOnAjaxRequest();
$this->waitForText('The media item has been created but has not yet been saved.'); $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'); $page->fillField('Name', 'Custom video title');
$assert_session->checkboxChecked("Select $youtube_title", $this->getSelectionArea()); $assert_session->checkboxChecked("Select $youtube_title", $this->getSelectionArea());
$this->saveAnd('select'); $this->saveAnd('select');

View File

@ -17,6 +17,11 @@ class WidgetUploadTest extends MediaLibraryTestBase {
use TestFileCreationTrait; use TestFileCreationTrait;
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/** /**
* Tests that uploads in the Media library's widget works as expected. * Tests that uploads in the Media library's widget works as expected.
*/ */

View File

@ -9,6 +9,11 @@ namespace Drupal\Tests\media_library\FunctionalJavascript;
*/ */
class WidgetViewsTest extends MediaLibraryTestBase { class WidgetViewsTest extends MediaLibraryTestBase {
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
@ -79,13 +84,18 @@ class WidgetViewsTest extends MediaLibraryTestBase {
$assert_session->buttonNotExists('Apply filters', $button_pane); $assert_session->buttonNotExists('Apply filters', $button_pane);
// Assert the pager works as expected. // 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()); $this->assertCount(24, $this->getCheckboxes());
$page->clickLink('Next page'); $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()); $this->assertCount(1, $this->getCheckboxes());
$page->clickLink('Previous page'); $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->assertCount(24, $this->getCheckboxes());
$this->switchToMediaLibraryTable(); $this->switchToMediaLibraryTable();

View File

@ -17,6 +17,11 @@ class WidgetWithoutTypesTest extends MediaLibraryTestBase {
*/ */
protected static $modules = ['field_ui']; protected static $modules = ['field_ui'];
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/** /**
* Tests that the widget works as expected when media types are deleted. * Tests that the widget works as expected when media types are deleted.
*/ */