View Issue Details

This bug affects 1 person(s).
 4
IDProjectCategoryView StatusLast Update
20327Bug reportsAccessibilitypublic2025-10-29 17:19
Reportertassoman Assigned To 
PrioritynoneSeveritypartial_block 
Status newResolutionopen 
Product Version6.6.x 
Summary20327: Vanilla Theme: Failing criterion 4.1.2 WCAG2 Level A - Validation modal window warning is not accessible
Description

When survey is grouped by pages, validation could not pass, leading the participant to read a modal message explaining nature of errors encountered.

Modal window is not accessible, auxiliary devices such as screen readers are skipping it and reading the whole page from scratch. Instead of blocking form submission and only reading the alert warning. More, modal buttons are skipped also because not accessible.

Questions forms should implement browser's built-in HTML5 client side Validation Form's API by avoiding to submit the page if validation is unsuccessful.
https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Forms/Form_validation#using_built-in_form_validation

Steps To Reproduce

Steps to reproduce

  1. install latest 6.x
  2. create a survey with grouped questions (pages)
  3. set mandatory or validated questions
  4. test the page's submission by using a screen reader such as: NVDA, JAWS, Voiceover Apple, Windows assistant.

Expected result

  • Page must not be reloaded if validation can't pass.
  • Modal window's body text must have role="alert" so that auxiliary screen readers are able to read the message when popping up.
  • Modal window's button must be accessible buttons, not malformed links.

Actual result

Whenever you click "NEXT" button in page, the page is reloaded also if invalid data is submitted and the screen reader restarts reading it from scratch.
Modal window message is totally skipped by the reader because is missing accessibility attributes: "role=alert" and WAI-ARIA attributes.
Modal window html source is situated at the end of html-body, can't be seen.

Additional notes

If you decide to not alter the functional logic, and keep a reloading page also while missing validation, is ok. But modal window must be removed and alert message should be put inline, >before< the form, without a modal interface but inside the page. Having accessibility attributes mentioned before.

Tagsa11y, accessibility, survey, theme, ux, validation, vanilla, view
Bug heat4
Complete LimeSurvey version number (& build)6.15.5
I will donate to the project if issue is resolvedNo
Browserany
Database type & versionany
Server OS (if known)any
Webserver software & version (if known)Apache 2.4
PHP VersionPHP 8.3

Users monitoring this issue

There are no users monitoring this issue.

Activities

DenisChenu

DenisChenu

2025-10-28 17:00

developer   ~83684

Last edited: 2025-10-28 17:04

Questions forms should implement browser's built-in HTML5 client side Validation Form's API by avoiding to submit the page if validation is unsuccessful.

  1. Not really for LimeSurvey, except for one or two questions. Because when submit : data are saved
  2. It's really another issue here : must be reported as a separate issue
  3. Must use JS heavily due to relevance etc … You can test with https://gitlab.com/SondagesPro/SurveyThemes/skelvanilla/-/blob/master/scripts/aria-live.js?ref_type=heads done for 5.X, i have to adapt it for 6.X …

I'm globally against « Page must not be reloaded if validation can't pass. » if we can not disable it.

tassoman

tassoman

2025-10-29 12:24

reporter   ~83687

Hello Denis, thanks for caring of a11y.
I guess having client-side validation not sending the form, can be an issue for intermediate-saving of responses. But, from a blind perspective, and in general UX speaking, the context must vary the less possible.

If client-side validation brings to a extremely hard work, I also agree a negotiable solution can be found.
The main problem here, is the behavior of the screen-reader to read the whole page also if nothing has changed (because validation brought back you to the same page). The risk is to have participant stuck, in a loop, for not provided reason.

The goal is to having warnings and solving suggestions read before the whole page reloaded.
In this actual situation, the modal window is set too late in the page, at bottom body and probably never get read (also is not accessible).

Modal window is a parallel layer, who extract you from reading the context. In this situation is a wrong UI/UX component.
If the page gets the whole reloaded, then role="alert" message must be inline in the context at first in the <main> area context.
So that by reloading the page, can be read at first glance. (also the <title> should be altered accordingly, i guess)

When using REACT/VUE frontend app frameworks, you have no reload of the page, although data can be saved asynchronously by API requests to backend.
This is not the situation. Page gets the whole reloaded and read from scratch.

In my opinion, the less expensive fix is to keep the reloading page and move alerts on top.
Otherwise page validation change and saving must happen asynchronous, without reloading the context just giving feedback of local-side warnings.

This is an example of accessible modal window (in italian)
https://italia.github.io/bootstrap-italia/docs/componenti/modale/#scroll-di-contenuti-allinterno-della-modale

DenisChenu

DenisChenu

2025-10-29 12:55

developer   ~83691

But, from a blind perspective, and in general UX speaking, the context must vary the less possible.

Yes, i know, it's the reason why i add it in skelvanilla :)

The main problem here, is the behavior of the screen-reader to read the whole page also if nothing has changed (because validation brought back you to the same page). The risk is to have participant stuck, in a loop, for not provided reason.

I'm totally OK here :)

  1. Title must be updated and add Error infprmation (you have an error when submit
  2. Best is to have a list of link to error, but can be complex
  3. Minimal : show "There are error " in page (option in skelvanilla)
  4. If show a modal dialog box : it must be accessible

This is an example of accessible modal window (in italian)

Minimal (really minimal) update :
We must follow https://www.w3.org/WAI/ARIA/apg/patterns/alertdialog/examples/alertdialog/ and set the focus to the dialog box when come back to this page.

tassoman

tassoman

2025-10-29 16:48

reporter   ~83692

I just found "vanilla" theme options have room for "inline" (at-page) warnings. This makes disappear the anti a11y modal window.

immagine.png (8,342 bytes)   
immagine.png (8,342 bytes)   
DenisChenu

DenisChenu

2025-10-29 16:59

developer   ~83693

I just found "vanilla" theme options have room for "inline" (at-page) warnings. This makes disappear the anti a11y modal window.

It's OK ? It work ?

DenisChenu

DenisChenu

2025-10-29 17:19

developer   ~83695

PS : still : the dialog A11Y bug must be foxed in vanilla and twentythree :)

Issue History

Date Modified Username Field Change
2025-10-28 16:15 tassoman New Issue
2025-10-28 16:18 tassoman Tag Attached: a11y
2025-10-28 16:18 tassoman Tag Attached: accessibility
2025-10-28 16:18 tassoman Tag Attached: view
2025-10-28 16:18 tassoman Tag Attached: vanilla
2025-10-28 16:18 tassoman Tag Attached: validation
2025-10-28 16:18 tassoman Tag Attached: ux
2025-10-28 16:18 tassoman Tag Attached: theme
2025-10-28 16:18 tassoman Tag Attached: survey
2025-10-28 17:00 DenisChenu Note Added: 83684
2025-10-28 17:00 DenisChenu Bug heat 0 => 2
2025-10-28 17:00 guest Bug heat 2 => 0
2025-10-28 17:00 DenisChenu Bug heat 0 => 2
2025-10-28 17:04 DenisChenu Note Edited: 83684
2025-10-29 12:24 tassoman Note Added: 83687
2025-10-29 12:24 tassoman Bug heat 2 => 4
2025-10-29 12:55 DenisChenu Note Added: 83691
2025-10-29 16:48 tassoman Note Added: 83692
2025-10-29 16:48 tassoman File Added: immagine.png
2025-10-29 16:59 DenisChenu Note Added: 83693
2025-10-29 17:19 DenisChenu Note Added: 83695