Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Unified Diff: chrome/test/data/webui/settings/languages_page_browsertest.js

Issue 2675453002: Language settings: Fix unnecessarily shown move buttons (Closed)
Patch Set: nit Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/resources/settings/languages_page/languages_page.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/data/webui/settings/languages_page_browsertest.js
diff --git a/chrome/test/data/webui/settings/languages_page_browsertest.js b/chrome/test/data/webui/settings/languages_page_browsertest.js
index a7dfa66ecde7e990de8150e0e9e51cefe12c1632..abed7bc973ff1efcbfdbd1cca19a175059065656 100644
--- a/chrome/test/data/webui/settings/languages_page_browsertest.js
+++ b/chrome/test/data/webui/settings/languages_page_browsertest.js
@@ -73,9 +73,9 @@ TEST_F('SettingsLanguagesPageBrowserTest', 'MAYBE_LanguagesPage', function() {
});
}
- // Returns a supported language that is not enabled, for testing.
- function getAvailableLanguage() {
- return languagesPage.languages.supported.find(function(language) {
+ // Returns supported languages that are not enabled.
+ function getAvailableLanguages() {
+ return languagesPage.languages.supported.filter(function(language) {
return !languageHelper.isLanguageEnabled(language.code);
});
}
@@ -202,6 +202,33 @@ TEST_F('SettingsLanguagesPageBrowserTest', 'MAYBE_LanguagesPage', function() {
suite('language menu', function() {
var origTranslateEnabled;
+ /**
+ * Finds, asserts and returns the menu item for the given i18n key.
+ * @param {string} i18nKey Name of the i18n string for the item's text.
+ * @return {!HTMLElement} Menu item.
+ */
+ function getMenuItem(i18nKey) {
+ var i18nString = assert(loadTimeData.getString(i18nKey));
+ var menuItems = actionMenu.querySelectorAll('.dropdown-item');
+ var menuItem = Array.from(menuItems).find(
+ item => item.textContent.trim() == i18nString);
+ return assert(menuItem, 'Menu item "' + i18nKey + '" not found');
+ }
+
+ /**
+ * Checks the visibility of each expected menu item button.
+ * param {!Object<boolean>} Dictionary from i18n keys to expected
+ * visibility of those menu items.
+ */
+ function assertMenuItemButtonsVisible(buttonVisibility) {
+ assertTrue(actionMenu.open);
+ for (var buttonKey of Object.keys(buttonVisibility)) {
+ var buttonItem = getMenuItem(buttonKey);
+ assertEquals(!buttonVisibility[buttonKey], buttonItem.hidden,
+ 'Menu item "' + buttonKey + '" hidden');
+ }
+ }
+
suiteSetup(function() {
// Cache the value of Translate to avoid side effects.
origTranslateEnabled = languageHelper.prefs.translate.enabled.value;
@@ -265,8 +292,7 @@ TEST_F('SettingsLanguagesPageBrowserTest', 'MAYBE_LanguagesPage', function() {
assertTrue(actionMenu.open);
// Toggle the translate option.
- var translateOption = actionMenu.querySelector('#offerTranslations');
- assertTrue(!!translateOption);
+ var translateOption = getMenuItem('offerToTranslateInThisLanguage');
assertFalse(translateOption.disabled);
MockInteractions.tap(translateOption);
@@ -302,7 +328,7 @@ TEST_F('SettingsLanguagesPageBrowserTest', 'MAYBE_LanguagesPage', function() {
var numEnabled = languagesPage.languages.enabled.length;
// Enabled a language which we can then disable.
- var newLanguage = getAvailableLanguage();
+ var newLanguage = assert(getAvailableLanguages()[0]);
languageHelper.enableLanguage(newLanguage.code);
// Wait for the language to be enabled.
@@ -323,8 +349,7 @@ TEST_F('SettingsLanguagesPageBrowserTest', 'MAYBE_LanguagesPage', function() {
MockInteractions.tap(item.querySelector('paper-icon-button'));
assertTrue(actionMenu.open);
- var removeMenuItem = assert(actionMenu.querySelector(
- '.dropdown-item:last-child'));
+ var removeMenuItem = getMenuItem('removeLanguage');
assertFalse(removeMenuItem.disabled);
MockInteractions.tap(removeMenuItem);
assertFalse(actionMenu.open);
@@ -335,6 +360,50 @@ TEST_F('SettingsLanguagesPageBrowserTest', 'MAYBE_LanguagesPage', function() {
assertFalse(languageHelper.isLanguageEnabled(newLanguage.code));
});
});
+
+ test('move up/down buttons', function() {
+ // Add several languages.
+ var numEnabled = languagesPage.languages.enabled.length;
+ var available = getAvailableLanguages();
+ for (var i = 0; i < 4; i++)
+ languageHelper.enableLanguage(assert(available[i]).code);
+
+ return whenNumEnabledLanguagesBecomes(numEnabled + 4).then(function() {
+ Polymer.dom.flush();
+
+ var menuButtons =
+ languagesCollapse.querySelectorAll(
+ '.list-item paper-icon-button[icon="cr:more-vert"]');
+
+ // First language should not have "Move up" or "Move to top".
+ MockInteractions.tap(menuButtons[0]);
+ assertMenuItemButtonsVisible({
+ moveToTop: false, moveUp: false, moveDown: true,
+ });
+ actionMenu.close();
+
+ // Second language should not have "Move up".
+ MockInteractions.tap(menuButtons[1]);
+ assertMenuItemButtonsVisible({
+ moveToTop: true, moveUp: false, moveDown: true,
+ });
+ actionMenu.close();
+
+ // Middle languages should have all buttons.
+ MockInteractions.tap(menuButtons[2]);
+ assertMenuItemButtonsVisible({
+ moveToTop: true, moveUp: true, moveDown: true,
+ });
+ actionMenu.close();
+
+ // Last language should not have "Move down".
+ MockInteractions.tap(menuButtons[menuButtons.length - 1]);
+ assertMenuItemButtonsVisible({
+ moveToTop: true, moveUp: true, moveDown: false,
+ });
+ actionMenu.close();
+ });
+ });
});
test('manage input methods', function() {
« no previous file with comments | « chrome/browser/resources/settings/languages_page/languages_page.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698