{
  "info": {
    "testId": "reqInfoAboutInvalidSpinbutton",
    "title": "Request information about an invalid value in a spin button",
    "references": [
      {
        "refId": "example",
        "type": "metadata",
        "value": "https://www.w3.org/WAI/ARIA/apg/patterns/spinbutton/examples/quantity-spinbutton/",
        "linkText": "APG Example: Quantity Spin Button"
      },
      {
        "refId": "spinbutton",
        "type": "aria",
        "value": "spinbutton",
        "linkText": "spinbutton"
      },
      {
        "refId": "inputTypeText",
        "type": "htmlAam",
        "value": "inputTypeText",
        "linkText": "HTML text input"
      },
      {
        "refId": "label",
        "type": "htmlAam",
        "value": "label",
        "linkText": "HTML label"
      },
      {
        "refId": "aria-valuenow",
        "type": "aria",
        "value": "aria-valuenow",
        "linkText": "aria-valuenow"
      },
      {
        "refId": "aria-invalid",
        "type": "aria",
        "value": "aria-invalid",
        "linkText": "aria-invalid"
      },
      {
        "refId": "aria-valuemin",
        "type": "aria",
        "value": "aria-valuemin",
        "linkText": "aria-valuemin"
      },
      {
        "refId": "aria-valuemax",
        "type": "aria",
        "value": "aria-valuemax",
        "linkText": "aria-valuemax"
      },
      {
        "refId": "aria-errormessage",
        "type": "aria",
        "value": "aria-errormessage",
        "linkText": "aria-errormessage"
      }
    ],
    "presentationNumber": 10
  },
  "target": {
    "ats": [
      {
        "key": "jaws",
        "settings": "virtualCursor",
        "name": "JAWS"
      },
      {
        "key": "jaws",
        "settings": "pcCursor",
        "name": "JAWS"
      },
      {
        "key": "nvda",
        "settings": "browseMode",
        "name": "NVDA"
      },
      {
        "key": "nvda",
        "settings": "focusMode",
        "name": "NVDA"
      },
      {
        "key": "voiceover_macos",
        "settings": "defaultMode",
        "name": "VoiceOver for macOS"
      }
    ],
    "at": {
      "key": "jaws",
      "settings": "virtualCursor_pcCursor",
      "name": "JAWS",
      "raw": {
        "name": "JAWS",
        "key": "jaws",
        "defaultConfigurationInstructionsHTML": "Configure JAWS with default settings. For help, read &lt;a href=&quot;https://github.com/w3c/aria-at/wiki/Configuring-Screen-Readers-for-Testing&quot;&gt;Configuring Screen Readers for Testing&lt;/a&gt;.",
        "assertionTokens": {
          "screenReader": "JAWS",
          "interactionMode": "PC cursor active",
          "readingMode": "virtual cursor active",
          "readingCursor": "virtual cursor"
        },
        "settings": {
          "virtualCursor": {
            "screenText": "virtual cursor active",
            "instructions": [
              "Press &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;Delete&lt;/kbd&gt; to determine which cursor is active.",
              "If the PC cursor is active, press &lt;kbd&gt;Escape&lt;/kbd&gt; to activate the virtual cursor."
            ]
          },
          "pcCursor": {
            "screenText": "PC cursor active",
            "instructions": [
              "Press &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;Delete&lt;/kbd&gt; to determine which cursor is active.",
              "If the virtual cursor is active, press &lt;kbd&gt;Insert&lt;/kbd&gt;+&lt;kbd&gt;z&lt;/kbd&gt; to disable the virtual cursor."
            ]
          }
        }
      }
    },
    "referencePage": "reference/2025-10-23_121658/quantity-spinbutton.setFocusOnAdultsSpinbuttonValue9.html",
    "setupScript": {
      "script": "setFocusOnAdultsSpinbuttonValue9",
      "scriptDescription": "sets focus on the 'Adults' spin button and sets value to' 9'",
      "name": "setFocusOnAdultsSpinbuttonValue9",
      "source": "// sets focus on the 'Adults' spinbutton and sets value to 9\ntestPageDocument.defaultView.spinButtonController.setValue('9', true);\ntestPageDocument.getElementById('adults').select();\ntestPageDocument.getElementById('adults').focus();\n",
      "modulePath": "scripts/setFocusOnAdultsSpinbuttonValue9.module.js",
      "jsonpPath": "scripts/setFocusOnAdultsSpinbuttonValue9.jsonp.js"
    }
  },
  "instructions": {
    "instructions": "Starting at the 'Adults' spinbutton, read information about the spinbutton.",
    "mode": {
      "virtualCursor": [
        "Configure JAWS with default settings. For help, read &lt;a href=&quot;https://github.com/w3c/aria-at/wiki/Configuring-Screen-Readers-for-Testing&quot;&gt;Configuring Screen Readers for Testing&lt;/a&gt;.",
        "Press &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;Delete&lt;/kbd&gt; to determine which cursor is active.",
        "If the PC cursor is active, press &lt;kbd&gt;Escape&lt;/kbd&gt; to activate the virtual cursor."
      ],
      "pcCursor": [
        "Configure JAWS with default settings. For help, read &lt;a href=&quot;https://github.com/w3c/aria-at/wiki/Configuring-Screen-Readers-for-Testing&quot;&gt;Configuring Screen Readers for Testing&lt;/a&gt;.",
        "Press &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;Delete&lt;/kbd&gt; to determine which cursor is active.",
        "If the virtual cursor is active, press &lt;kbd&gt;Insert&lt;/kbd&gt;+&lt;kbd&gt;z&lt;/kbd&gt; to disable the virtual cursor."
      ]
    }
  },
  "commands": [
    {
      "id": "ins+tab",
      "keypresses": [
        {
          "id": "ins+tab",
          "keystroke": "Insert+Tab"
        }
      ],
      "assertionExceptions": [],
      "keystroke": "Insert+Tab",
      "presentationNumber": 9,
      "settings": "virtualCursor"
    },
    {
      "id": "ins+up",
      "keypresses": [
        {
          "id": "ins+up",
          "keystroke": "Insert+Up Arrow"
        }
      ],
      "assertionExceptions": [
        {
          "priority": 3,
          "assertionId": "roleSpinbutton"
        },
        {
          "priority": 3,
          "assertionId": "editable"
        },
        {
          "priority": 3,
          "assertionId": "nameAdults"
        },
        {
          "priority": 0,
          "assertionId": "minimumValue1"
        },
        {
          "priority": 0,
          "assertionId": "maximumValue8"
        },
        {
          "priority": 2,
          "assertionId": "isInvalid"
        },
        {
          "priority": 0,
          "assertionId": "errorMessage"
        }
      ],
      "keystroke": "Insert+Up Arrow",
      "presentationNumber": 9.1,
      "settings": "virtualCursor"
    },
    {
      "id": "ins+tab",
      "keypresses": [
        {
          "id": "ins+tab",
          "keystroke": "Insert+Tab"
        }
      ],
      "assertionExceptions": [],
      "keystroke": "Insert+Tab",
      "presentationNumber": 9.2,
      "settings": "pcCursor"
    },
    {
      "id": "ins+up",
      "keypresses": [
        {
          "id": "ins+up",
          "keystroke": "Insert+Up Arrow"
        }
      ],
      "assertionExceptions": [
        {
          "priority": 0,
          "assertionId": "roleSpinbutton"
        },
        {
          "priority": 0,
          "assertionId": "editable"
        },
        {
          "priority": 0,
          "assertionId": "nameAdults"
        },
        {
          "priority": 0,
          "assertionId": "minimumValue1"
        },
        {
          "priority": 0,
          "assertionId": "maximumValue8"
        },
        {
          "priority": 2,
          "assertionId": "isInvalid"
        },
        {
          "priority": 0,
          "assertionId": "errorMessage"
        }
      ],
      "keystroke": "Insert+Up Arrow",
      "presentationNumber": 9.3,
      "settings": "pcCursor"
    }
  ],
  "assertions": [
    {
      "assertionId": "roleSpinbutton",
      "priority": 1,
      "assertionStatement": "Role 'spin button' is conveyed",
      "assertionPhrase": "convey role, 'spin button'",
      "refIds": "spinbutton",
      "tokenizedAssertionStatements": {},
      "tokenizedAssertionPhrases": {}
    },
    {
      "assertionId": "editable",
      "priority": 2,
      "assertionStatement": "Support for edit commands in the input is conveyed",
      "assertionPhrase": "convey support for edit commands in the input",
      "refIds": "inputTypeText",
      "tokenizedAssertionStatements": {},
      "tokenizedAssertionPhrases": {}
    },
    {
      "assertionId": "nameAdults",
      "priority": 1,
      "assertionStatement": "Name of the spin button, 'Adults', is conveyed",
      "assertionPhrase": "convey name of spin button, 'Adults'",
      "refIds": "label",
      "tokenizedAssertionStatements": {},
      "tokenizedAssertionPhrases": {}
    },
    {
      "assertionId": "value9",
      "priority": 1,
      "assertionStatement": "Value, '9', is conveyed",
      "assertionPhrase": "convey value, '9'",
      "refIds": "aria-valuenow",
      "tokenizedAssertionStatements": {},
      "tokenizedAssertionPhrases": {}
    },
    {
      "assertionId": "isInvalid",
      "priority": 1,
      "assertionStatement": "State, 'not valid', is conveyed",
      "assertionPhrase": "convey state, 'not valid'",
      "refIds": "aria-invalid",
      "tokenizedAssertionStatements": {},
      "tokenizedAssertionPhrases": {}
    },
    {
      "assertionId": "minimumValue1",
      "priority": 2,
      "assertionStatement": "Minimum value, '1', is conveyed",
      "assertionPhrase": "convey minimum value, '1'",
      "refIds": "aria-valuemin",
      "tokenizedAssertionStatements": {},
      "tokenizedAssertionPhrases": {}
    },
    {
      "assertionId": "maximumValue8",
      "priority": 2,
      "assertionStatement": "Maximum value, '8', is conveyed",
      "assertionPhrase": "convey maximum value, '8'",
      "refIds": "aria-valuemax",
      "tokenizedAssertionStatements": {},
      "tokenizedAssertionPhrases": {}
    },
    {
      "assertionId": "errorMessage",
      "priority": 1,
      "assertionStatement": "Error message, 'Must be between 1 and 8', is conveyed",
      "assertionPhrase": "convey error message, 'Must be between 1 and 8'",
      "refIds": "aria-errormessage",
      "tokenizedAssertionStatements": {},
      "tokenizedAssertionPhrases": {}
    }
  ]
}