Backlog | Create sprint: Error messages are not communicated to screen reader users

XMLWordPrintable

    • 10.03
    • Severity 3 - Minor
    • Accessibility

      Issue Summary

      Error messages in "Create sprint" and "Edit sprint" modals are not announced by screen readers.

      Test URL

      https://instenv-errormsg

      Steps to Reproduce

      1. Open the Jira DC application.
      2. Activate the "Projects" button in the header, then select a project from the popup.
      3. Activate the "Backlog" link from the Projects side navigation.
      4. Using a screen reader (JAWS/NVDA), activate "Create sprint" button > a dialog appears.
      5. In the "Start date", enter a past date such as "14/08/2015".
      6. An inline error message "The sprint start date is in the past" appears which is not communicated to the screen reader users.
      7. Proceed with "Create" button.
      8. Observe the presence of another error message in red.
      9. Observe that these error messages are not communicated to the screen reader users.

      Screenshot 1

      Screenshot 2

      Screen Recording

      Recording 2025-09-11 164921.mp4

      Actual Results

      When a user enters an invalid date in the “Start date” field within the "Create sprint" or "Edit sprint" modal, an inline error message, “The sprint start date is in the past,” appears. Screen readers do not announce this message.

      Additionally, if the user proceeds with the "Create" button, a dynamic error message, "'11/2/1990' is not a valid date. Please enter the date in the following format: dd/MMM/yy h:mm a," appears. The focus remains on the "Create" button instead of moving to the error field, and screen readers do not announce this.

      As a result, these error messages are not communicated to the users of a screen reader and users are unaware about the occurrence of errors.

      Expected Results

      Error messages must be programmatically associated with the relevant form field.

      Apply the following changes ->

      • Assign a unique id to each error message container.
      • Reference both id values in the form field's aria-describedby attribute, separated by a space.
      • Ensure the aria-describedby value matches the error message container's ids.
      • Use an empty live region (role="alert" or aria-live="assertive"). Dynamically populate it with errors for immediate announcement.
      • Set focus on the first field with an error using the JavaScript .focus() method when the form submits.


      Code Snippet

      <div id="live-error-region" role="alert" aria-live="assertive" class="visually-hidden"></div>
      (...)
      <label for="ghx-sprint-start-date">Start date:</label>
      (...)
      <input id="ghx-sprint-start-date" class="text medium-field" aria-describedby="date-inline-error date-submit-error" ...>
      (...)
      
      <!--Inline error msg -->
      <span id="date-inline-error" ...>The sprint start date is in the past</p></span>
      
      <!-- submit error msg -->
      <span id="date-submit-error">'11/2/1990' is not a valid date. Please enter the date in the following format: dd/MMM/yy h:mm a</div>
      
      

      Workaround

      Currently there is no known workaround for this behavior. A workaround will be added here when available.

      Environment

      Windows - 11 Pro
      MacBook Pro (16 inch, 2021)
      macOs 15.4.1
      Chrome - Version 139.0.7258.128 (Official Build) (arm64)
      Firefox- Version 136.0.4
      Safari- Version 18.3 (20620.2.4.11.5)
      JAWS- Version 2023
      NVDA- Version 2024.4.2.35031
      Voiceover - Version Latest

        1. Screenshot 2025-09-11 162659.png
          Screenshot 2025-09-11 162659.png
          545 kB
        2. Screenshot 2025-09-11 162445.png
          Screenshot 2025-09-11 162445.png
          583 kB
        3. Recording 2025-09-11 164921.mp4
          34.13 MB
        4. ErrorMsg_JAWS.mp4
          30.77 MB

            Assignee:
            Maciej Szarecki
            Reporter:
            Anusooya .
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: