nvda icon indicating copy to clipboard operation
nvda copied to clipboard

NVDA repeats button button twice when on youtube.

Open audiogamer22 opened this issue 1 year ago • 2 comments

nvda.log

Steps to reproduce:

Go to youtube.com on either the latest version of firefox or microsoft edge and press b until you hear guide button button, keep pressing b and you'll hear what I mean.

Actual behavior:

NVDA says button button on both browsers.

Expected behavior:

NVDA should just say button, once, the same with the word menu.

NVDA logs, crash dumps and other attachments:

System configuration

NVDA installed/portable/running from source:

Installed

NVDA version:

version 24.4.2

Windows version:

windows version 24.h2

Name and version of other software in use when reproducing the issue:

Firefox version 135.0 (64-bit)

Microsoft edge Version 133.0.3065.59 (Official build) (64-bit)

Other information about your system:

Other questions

Does the issue still occur after restarting your computer?

Yes.

Have you tried any other versions of NVDA? If so, please report their behaviors.

No.

If NVDA add-ons are disabled, is your problem still occurring?

Yes.

Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?

Yes.

audiogamer22 avatar Feb 12 '25 03:02 audiogamer22

I'm just wondering if any NVDA devs have seen this issue? When I've posted before i got help on what I've done wrong and I hope i've made it clear this time what's happening with NVDA.

I spoke to google from BeMyEyes and they told me that it's an NVDA issue as other screen readers don't do this.

audiogamer22 avatar Feb 16 '25 15:02 audiogamer22

I can reproduce this only with links, it seems Google puts role="link" on a with a href atribute which is wrong because it is redundant. NVDA speaks "link link mein Youtube" Removing the role="link" from the with href atribute solves the issue, and NVDA speaks "Link mein Youtube" as expected. So this needs to be fixed by the Youtube team. Here is the code snippet for a single link on Youtube homepage, but this impacts almost all links on Youtube website.

<a id="endpoint" class="yt-simple-endpoint style-scope ytd-guide-entry-renderer" tabindex="-1" role="link" href="/feed/you" title="Mein YouTube">
  <tp-yt-paper-item role="link" class="style-scope ytd-guide-entry-renderer" style-target="host" tabindex="0" aria-disabled="false"><!--css-build:shady--><!--css_build_scope:tp-yt-paper-item--><!--css_build_styles:video.youtube.src.web.polymer.shared.ui.styles.yt_base_styles.yt.base.styles.css.js,third_party.javascript.youtube_components.tp_yt_paper_item.tp.yt.paper.item.css.js-->
    <yt-icon class="guide-icon style-scope ytd-guide-entry-renderer"><!--css-build:shady--><!--css_build_scope:yt-icon--><!--css_build_styles:video.youtube.src.web.polymer.shared.ui.styles.yt_base_styles.yt.base.styles.css.js,video.youtube.src.web.polymer.shared.core.yt_icon.yt.icon.css.js--><span class="yt-icon-shape style-scope yt-icon yt-spec-icon-shape"><div style="width: 100%; height: 100%; display: block; fill: currentcolor;"><svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="24" viewBox="0 0 24 24" width="24" focusable="false" aria-hidden="true" style="pointer-events: none; display: inherit; width: 100%; height: 100%;"><path clip-rule="evenodd" d="M12 20.5c1.894 0 3.643-.62 5.055-1.666a5.5 5.5 0 00-10.064-.105.755.755 0 01-.054.099A8.462 8.462 0 0012 20.5Zm4.079-5.189a7 7 0 012.142 2.48 8.5 8.5 0 10-12.443 0 7 7 0 0110.3-2.48ZM12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10Zm2-12.5a2 2 0 11-4 0 2 2 0 014 0Zm1.5 0a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0Z" fill-rule="evenodd"></path></svg></div></span></yt-icon>
    <yt-img-shadow height="24" width="24" class="style-scope ytd-guide-entry-renderer no-transition" hidden=""><!--css-build:shady--><!--css_build_scope:yt-img-shadow--><!--css_build_styles:video.youtube.src.web.polymer.shared.ui.styles.yt_base_styles.yt.base.styles.css.js,video.youtube.src.web.polymer.shared.ui.yt_img_shadow.yt.img.shadow.css.js--><img id="img" draggable="false" class="style-scope yt-img-shadow" alt="" height="24" width="24"></yt-img-shadow>
    <yt-formatted-string class="title style-scope ytd-guide-entry-renderer">Mein YouTube</yt-formatted-string>
    <yt-icon class="arrow-icon style-scope ytd-guide-entry-renderer" icon="chevron_right" size="16"><!--css-build:shady--><!--css_build_scope:yt-icon--><!--css_build_styles:video.youtube.src.web.polymer.shared.ui.styles.yt_base_styles.yt.base.styles.css.js,video.youtube.src.web.polymer.shared.core.yt_icon.yt.icon.css.js--><span class="yt-icon-shape style-scope yt-icon yt-spec-icon-shape"><div style="width: 100%; height: 100%; display: block; fill: currentcolor;"><svg xmlns="http://www.w3.org/2000/svg" height="16" viewBox="0 0 16 16" width="16" focusable="false" aria-hidden="true" style="pointer-events: none; display: inherit; width: 100%; height: 100%;"><path d="M4.97 12.65 9.62 8 4.97 3.35l.71-.71L11.03 8l-5.35 5.35-.71-.7z"></path></svg></div></span></yt-icon>
    <span class="guide-entry-count style-scope ytd-guide-entry-renderer">  </span>
    <yt-icon class="guide-entry-badge style-scope ytd-guide-entry-renderer" size="16" disable-upgrade="">
    </yt-icon>
    <div id="newness-dot" class="style-scope ytd-guide-entry-renderer"></div>
  
</tp-yt-paper-item>
</a>

cc: @aleventhal could you please forward this to the Youtube team?

Narator speaks the link double as well. Jaws works as expected, but it has its own heuristics to detect when the role is redundant and ignores the aria role in that case.

Adriani90 avatar Jun 13 '25 01:06 Adriani90