test_contextual_prompts.js (2019B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 const { GenAI } = ChromeUtils.importESModule( 5 "resource:///modules/GenAI.sys.mjs" 6 ); 7 8 registerCleanupFunction(() => 9 Services.prefs.clearUserPref("browser.ml.chat.prompts.test") 10 ); 11 12 const DEFAULT_CONTEXT = { provider: "" }; 13 async function promptCount(context = DEFAULT_CONTEXT) { 14 return (await GenAI.getContextualPrompts(context)).length; 15 } 16 17 /** 18 * Check prompts from prefs are used 19 */ 20 add_task(async function test_prompt_prefs() { 21 const origPrompts = await promptCount(); 22 23 Services.prefs.setStringPref("browser.ml.chat.prompts.test", "{}"); 24 Assert.equal(await promptCount(), origPrompts + 1, "Added a prompt"); 25 26 Services.prefs.setStringPref( 27 "browser.ml.chat.prompts.test", 28 JSON.stringify({ targeting: "false" }) 29 ); 30 Assert.equal( 31 await promptCount(), 32 origPrompts, 33 "Prompt not added for targeting" 34 ); 35 }); 36 37 /** 38 * Check context is used for targeting 39 */ 40 add_task(async function test_prompt_context() { 41 Services.prefs.setStringPref( 42 "browser.ml.chat.prompts.test", 43 JSON.stringify({ targeting: "provider" }) 44 ); 45 const origPrompts = await promptCount(); 46 47 Assert.equal( 48 await promptCount({ provider: "localhost" }), 49 origPrompts + 1, 50 "Added contextual prompt" 51 ); 52 53 Assert.equal( 54 await promptCount(), 55 origPrompts, 56 "Prompt not added for contextual targeting" 57 ); 58 }); 59 60 /** 61 * Check that prompts can be localized 62 */ 63 add_task(async function test_prompt_l10n() { 64 Services.prefs.setStringPref( 65 "browser.ml.chat.prompts.test", 66 JSON.stringify({ 67 l10nId: "genai-prompts-summarize", 68 label: "bad", 69 test: true, 70 }) 71 ); 72 const custom = (await GenAI.getContextualPrompts(DEFAULT_CONTEXT)).find( 73 prompt => prompt.id == null 74 ); 75 76 Assert.ok(custom.test, "Found the custom prompt"); 77 Assert.notEqual(custom.label, "bad", "Localized label takes priority"); 78 Assert.ok(custom.value, "Got localized prompt"); 79 });