My testing is showing that this is working properly with NVDA/Chrome but is producing the behavior you described with NVDA/Firefox. I was able to fix this by using aria-live=assertive
instead of role=alert
. I'm assuming there is a bug in NVDA when used with Firefox that is causing it to read the link text three times in alert roles.