Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Indeterminate Progress bars reported as "half-checked" #10644

Closed
jnurthen opened this issue Dec 19, 2019 · 10 comments · Fixed by #13428
Closed

Indeterminate Progress bars reported as "half-checked" #10644

jnurthen opened this issue Dec 19, 2019 · 10 comments · Fixed by #13428
Milestone

Comments

@jnurthen
Copy link

jnurthen commented Dec 19, 2019

Steps to reproduce:

Open https://codepen.io/jnurthen/full/qBErmdB
The page has a link followed by 2 progress bars.
The first is Labelled Loading.... and the Valuetext is set to 50%
The second is also Labelled Loading but has no valuetext (or valuenow)

Actual behavior:

NVDA reads the indeterminate progressbar as "half-checked":
Speech: progress bar half checked 0
Braille: ⣏⣸⣹ prgbar 0 frame end

Expected behavior:

A better term than half-checked should be used for an indeterminate progress bar

System configuration

NVDA installed/portable/running from source:

Installed

NVDA version:

2019.2.1

Windows version:

Windows 10 19013.1122

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

FF 71.0
Chrome 79.0.3945.88

Other information about your system:

Other questions

Does the issue still occur after restarting your PC?

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

@Adriani90
Copy link
Collaborator

@jnurthen do you mean by indeterminated that an user could only choose a value up to 50 for example although there are theoretically 100 values in the progress bar? Or what exactly should indeterminate mean for an user?

@brennanyoung
Copy link

half-checked sounds like the string that might be used to announce a "mixed state" checkbox.
Not ruling out an NVDA bug in how the valuetext attribute is interpreted, but this odd announcement might be speech synth related.

@jnurthen
Copy link
Author

@Adriani90 sorry missed your question. The 2nd one is an indeterminate progress bar. What is meant is that the user (and the application) have no idea how long the task is going to take. They are often used when making a call to another system with a success or failure result. For example when submitting payment to a remote payment system.

@marie450
Copy link

marie450 commented Jul 16, 2021

I have experiment the same problem but only in Chrome 91. NVDA in both Firefox and Chrome read the progress bar just fine until I start putting some CSS on it. progress{background:green;} will cause "half-checked" to be annouce in Chrome, still work fine in Firefox. https://codepen.io/marie-france/pen/dyWWNqp

@marie450
Copy link

The problem seem to not be in NVDA but with Chromium. JAWS give me the same result.

@feerrenrut
Copy link
Contributor

One question that still needs to be answered here, how should an indeterminate progress bar be referred to?
I have updated the description with the current behavior:

  • Speech: "progress bar half checked 0"
  • Braille: ⣏⣸⣹ prgbar 0 frame end

@feerrenrut
Copy link
Contributor

Suggested expected reporting

  • Speech: cycling progress bar (explicitly changing the role label, dropping state and value)
  • Braille: cycprgbar frame end

I'm unsure about cycling, it might be too cryptic. But it is much shorter than "indeterminate".

The exact word used can be altered later. Primarily I want to get agreement about overriding the role label in this case, and dropping state and value.

@XLTechie
Copy link
Collaborator

XLTechie commented Feb 18, 2022 via email

@feerrenrut
Copy link
Contributor

Can you (or anyone) comment on this:

Primarily I want to get agreement about overriding the role label in this case, and dropping state and value.

@feerrenrut
Copy link
Contributor

NV Access is considering "busy indicator" dropping the value and the "half checked" state.
An indeterminate progress bar with a label of "loading" will be announced as: "Loading busy indicator"

@feerrenrut feerrenrut mentioned this issue Mar 4, 2022
5 tasks
feerrenrut added a commit that referenced this issue Mar 11, 2022
Fixes #10644

Summary:
On the web, widgets with `role="progressbar"` and no `aria-valuenow` were reported by NVDA as "progress bar  half checked  zero".

These widgets are exposed by the browser with:
- IAccessible accRole `ROLE_SYSTEM_PROGRESSBAR`
- IAccessible accState `STATE_SYSTEM_MIXED, STATE_SYSTEM_INDETERMINATE`.

In chrome accValue is always "0" in this case.
Note, in firefox, if `aria-valuetext` is provided, `STATE_SYSTEM_INDETERMINATE` is not set and `accValue` has the `aria-valuetext`.

Changes:
An 'indeterminate' progress bar has no value attribute, it can not convey progress, only activity.
Rather than reporting as a progress bar it is given a new NVDA role of "busy indicator" and its value ("zero") is no longer reported.

Technical details.
- Code to convert decode the bit flags (integer) supplied by IA / IA2 into a set of NVDA States was repeated, this has been extracted to a function, centralized in IAccessibleHandler, and optimized.
- accValue was used as the text node in the virtual buffer, now for this case , " " (space) is used.
@nvaccessAuto nvaccessAuto modified the milestone: 2022.2 Mar 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants