forked from mirrors/gecko-dev
		
	 68a39b4271
			
		
	
	
		68a39b4271
		
	
	
	
	
		
			
			Removes the labeling of individual languages as being in beta or not, from the UI components of translations. Differential Revision: https://phabricator.services.mozilla.com/D184177
		
			
				
	
	
		
			91 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* Any copyright is dedicated to the Public Domain.
 | |
|    http://creativecommons.org/publicdomain/zero/1.0/ */
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| /**
 | |
|  * Test the debounce behavior.
 | |
|  */
 | |
| add_task(async function test_about_translations_debounce() {
 | |
|   await openAboutTranslations({
 | |
|     languagePairs: [
 | |
|       { fromLang: "en", toLang: "fr" },
 | |
|       { fromLang: "fr", toLang: "en" },
 | |
|     ],
 | |
|     runInPage: async ({ selectors }) => {
 | |
|       const { document, window } = content;
 | |
|       // Do not allow the debounce to come to completion.
 | |
|       Cu.waiveXrays(window).DEBOUNCE_DELAY = 5;
 | |
| 
 | |
|       await ContentTaskUtils.waitForCondition(
 | |
|         () => {
 | |
|           return document.body.hasAttribute("ready");
 | |
|         },
 | |
|         "Waiting for the document to be ready.",
 | |
|         100,
 | |
|         200
 | |
|       );
 | |
| 
 | |
|       /** @type {HTMLSelectElement} */
 | |
|       const fromSelect = document.querySelector(selectors.fromLanguageSelect);
 | |
|       /** @type {HTMLSelectElement} */
 | |
|       const toSelect = document.querySelector(selectors.toLanguageSelect);
 | |
|       /** @type {HTMLTextAreaElement} */
 | |
|       const translationTextarea = document.querySelector(
 | |
|         selectors.translationTextarea
 | |
|       );
 | |
|       /** @type {HTMLDivElement} */
 | |
|       const translationResult = document.querySelector(
 | |
|         selectors.translationResult
 | |
|       );
 | |
| 
 | |
|       async function assertTranslationResult(translation) {
 | |
|         try {
 | |
|           await ContentTaskUtils.waitForCondition(
 | |
|             () => translation === translationResult.innerText,
 | |
|             `Waiting for: "${translation}"`,
 | |
|             100,
 | |
|             200
 | |
|           );
 | |
|         } catch (error) {
 | |
|           // The result wasn't found, but the assertion below will report the error.
 | |
|           console.error(error);
 | |
|         }
 | |
| 
 | |
|         is(
 | |
|           translation,
 | |
|           translationResult.innerText,
 | |
|           "The text runs through the mocked translations engine."
 | |
|         );
 | |
|       }
 | |
| 
 | |
|       function setInput(element, value) {
 | |
|         element.value = value;
 | |
|         element.dispatchEvent(new Event("input"));
 | |
|       }
 | |
|       setInput(fromSelect, "en");
 | |
|       setInput(toSelect, "fr");
 | |
|       setInput(translationTextarea, "T");
 | |
| 
 | |
|       info("Get the translations into a stable translationed state");
 | |
|       await assertTranslationResult("T [en to fr]");
 | |
| 
 | |
|       info("Reset and pause the debounce state.");
 | |
|       Cu.waiveXrays(window).DEBOUNCE_DELAY = 1_000_000_000;
 | |
|       Cu.waiveXrays(window).DEBOUNCE_RUN_COUNT = 0;
 | |
| 
 | |
|       info("Input text which will be debounced.");
 | |
|       setInput(translationTextarea, "T");
 | |
|       setInput(translationTextarea, "Te");
 | |
|       setInput(translationTextarea, "Tex");
 | |
|       is(Cu.waiveXrays(window).DEBOUNCE_RUN_COUNT, 0, "Debounce has not run.");
 | |
| 
 | |
|       info("Allow the debounce to actually come to completion.");
 | |
|       Cu.waiveXrays(window).DEBOUNCE_DELAY = 5;
 | |
|       setInput(translationTextarea, "Text");
 | |
| 
 | |
|       await assertTranslationResult("TEXT [en to fr]");
 | |
|       is(Cu.waiveXrays(window).DEBOUNCE_RUN_COUNT, 1, "Debounce ran once.");
 | |
|     },
 | |
|   });
 | |
| });
 |