test_fxaccounts_button.html (3222B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 Test the fxaccounts-button component 5 --> 6 <head> 7 <meta charset="utf-8"> 8 <title>Test the fxaccounts-button component</title> 9 <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 10 <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script> 11 <script type="module" src="chrome://browser/content/aboutlogins/components/fxaccounts-button.mjs"></script> 12 <script src="aboutlogins_common.js"></script> 13 14 <link rel="stylesheet" href="/tests/SimpleTest/test.css"/> 15 </head> 16 <body> 17 <p id="display"> 18 </p> 19 <div id="content" style="display: none"> 20 <iframe id="templateFrame" src="chrome://browser/content/aboutlogins/aboutLogins.html" 21 sandbox="allow-same-origin"></iframe> 22 </div> 23 <pre id="test"> 24 </pre> 25 <script> 26 /** Test the fxaccounts-button component */ 27 28 const TEST_AVATAR_URL = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="; 29 30 let gFxAccountsButton; 31 add_setup(async () => { 32 let templateFrame = document.getElementById("templateFrame"); 33 let displayEl = document.getElementById("display"); 34 await importDependencies(templateFrame, displayEl); 35 36 gFxAccountsButton = document.createElement("fxaccounts-button"); 37 displayEl.appendChild(gFxAccountsButton); 38 }); 39 40 add_task(async function test_default_state() { 41 ok(gFxAccountsButton, "FxAccountsButton exists"); 42 ok(!isHidden(gFxAccountsButton.shadowRoot.querySelector(".logged-out-view")), 43 "logged-out-view view is visible by default"); 44 ok(isHidden(gFxAccountsButton.shadowRoot.querySelector(".logged-in-view")), 45 "logged-in-view view is hidden by default"); 46 }); 47 48 add_task(async function test_logged_in_without_login_syncing() { 49 gFxAccountsButton.updateState({ 50 fxAccountsEnabled: true, 51 loggedIn: true, 52 loginSyncingEnabled: false, 53 }); 54 55 ok(isHidden(gFxAccountsButton.shadowRoot.querySelector(".logged-out-view")), 56 "logged-out-view view is hidden"); 57 ok(!isHidden(gFxAccountsButton.shadowRoot.querySelector(".logged-in-view")), 58 "logged-in-view view is visible"); 59 }); 60 61 add_task(async function test_logged_in_with_login_syncing() { 62 const TEST_EMAIL = "test@example.com"; 63 64 gFxAccountsButton.updateState({ 65 fxAccountsEnabled: true, 66 loggedIn: true, 67 loginSyncingEnabled: true, 68 email: TEST_EMAIL, 69 avatarURL: TEST_AVATAR_URL, 70 }); 71 72 ok(isHidden(gFxAccountsButton.shadowRoot.querySelector(".logged-out-view")), 73 "logged-out-view view is hidden"); 74 ok(!isHidden(gFxAccountsButton.shadowRoot.querySelector(".logged-in-view")), 75 "logged-in-view view is visible"); 76 is(gFxAccountsButton.shadowRoot.querySelector(".fxaccount-email").textContent, 77 TEST_EMAIL, 78 "email should be shown"); 79 is(gFxAccountsButton.shadowRoot.querySelector(".fxaccounts-avatar-button").style.getPropertyValue("--avatar-url"), 80 `url(${TEST_AVATAR_URL})`, 81 "--avatar-url should be set"); 82 }); 83 84 add_task(async function test_fxaccounts_disabled() { 85 gFxAccountsButton.updateState({ 86 fxAccountsEnabled: false, 87 }); 88 89 ok(isHidden(gFxAccountsButton), 90 "the whole button is hidden when fxaccounts are disabled"); 91 }); 92 93 </script> 94 95 </body> 96 </html>