diff options
Diffstat (limited to 'browser/components/translations/tests/browser/browser_translations_full_page_panel_engine_destroy_pending.js')
-rw-r--r-- | browser/components/translations/tests/browser/browser_translations_full_page_panel_engine_destroy_pending.js | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/browser/components/translations/tests/browser/browser_translations_full_page_panel_engine_destroy_pending.js b/browser/components/translations/tests/browser/browser_translations_full_page_panel_engine_destroy_pending.js new file mode 100644 index 0000000000..cfe1997093 --- /dev/null +++ b/browser/components/translations/tests/browser/browser_translations_full_page_panel_engine_destroy_pending.js @@ -0,0 +1,72 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +/** + * Manually destroy the engine while a page is in the background, and test that the page + * is still translated after switching back to it. + */ +add_task(async function test_translations_engine_destroy_pending() { + const { + cleanup, + resolveDownloads, + runInPage, + tab: spanishTab, + } = await loadTestPage({ + page: SPANISH_PAGE_URL, + languagePairs: LANGUAGE_PAIRS, + }); + + await FullPageTranslationsTestUtils.assertTranslationsButton( + { button: true }, + "The button is available." + ); + await FullPageTranslationsTestUtils.openPanel({ + onOpenPanel: FullPageTranslationsTestUtils.assertPanelViewDefault, + }); + + await FullPageTranslationsTestUtils.clickTranslateButton({ + downloadHandler: resolveDownloads, + }); + + await FullPageTranslationsTestUtils.assertPageIsTranslated( + "es", + "en", + runInPage + ); + + const { removeTab: removeEnglishTab } = await addTab( + ENGLISH_PAGE_URL, + "Creating a new tab for a page in English." + ); + + info("Destroy the engine process"); + await EngineProcess.destroyTranslationsEngine(); + + info("Mutate the page's content to re-trigger a translation."); + await runInPage(async TranslationsTest => { + const { getH1 } = TranslationsTest.getSelectors(); + getH1().innerText = "New text for the H1"; + }); + + info("Wait for a second to ensure the mutation takes."); + await TestUtils.waitForTick(); + + await switchTab(spanishTab, "spanish tab"); + + info("The engine downloads should be requested again."); + resolveDownloads(1); + + await runInPage(async TranslationsTest => { + const { getH1 } = TranslationsTest.getSelectors(); + await TranslationsTest.assertTranslationResult( + "The mutated content should be translated.", + getH1, + "NEW TEXT FOR THE H1 [es to en]" + ); + }); + + await removeEnglishTab(); + await cleanup(); +}); |