1
0
Fork 0
firefox/accessible/tests/browser/events/browser_test_A11yUtils_announce.js
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

57 lines
2.1 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
/* import-globals-from ../../mochitest/role.js */
loadScripts({ name: "role.js", dir: MOCHITESTS_DIR });
// Check that the browser A11yUtils.announce() function works correctly.
// Note that this does not use mozilla::a11y::Accessible::Announce and a11y
// announcement events, as these aren't yet supported on desktop.
async function runTests() {
const alert = document.getElementById("a11y-announcement");
let alerted = waitForEvent(EVENT_ALERT, alert);
A11yUtils.announce({ raw: "first" });
let event = await alerted;
const alertAcc = event.accessible;
is(alertAcc.role, ROLE_ALERT);
ok(!alertAcc.name);
is(alertAcc.childCount, 1);
is(alertAcc.firstChild.name, "first");
alerted = waitForEvent(EVENT_ALERT, alertAcc);
A11yUtils.announce({ raw: "second" });
event = await alerted;
ok(!alertAcc.name);
is(alertAcc.childCount, 1);
is(alertAcc.firstChild.name, "second");
info("Testing Fluent message");
// We need a simple Fluent message here without arguments or attributes.
const fluentId = "search-one-offs-with-title";
const fluentMessage = await document.l10n.formatValue(fluentId);
alerted = waitForEvent(EVENT_ALERT, alertAcc);
A11yUtils.announce({ id: fluentId });
event = await alerted;
ok(!alertAcc.name);
is(alertAcc.childCount, 1);
is(alertAcc.firstChild.name, fluentMessage);
info("Ensuring Fluent message is cancelled if announce is re-entered");
alerted = waitForEvent(EVENT_ALERT, alertAcc);
// This call runs async.
let asyncAnnounce = A11yUtils.announce({ id: fluentId });
// Before the async call finishes, call announce again.
A11yUtils.announce({ raw: "third" });
// Wait for the async call to complete.
await asyncAnnounce;
event = await alerted;
ok(!alertAcc.name);
is(alertAcc.childCount, 1);
// The async call should have been cancelled. If it wasn't, we would get
// fluentMessage here instead of "third".
is(alertAcc.firstChild.name, "third");
}
addAccessibleTask(``, runTests);