WCAG best practices - components (low-code)
Label (Text)
Good practices
Headings and labels should be unambiguous and not duplicated – the user should be able to easily recognize what the given description refers to.
Labels not associated with a field should be set as a paragraph, using the option "Display as paragraph (
<p>)".

Associating a label with a field:
If a label refers to a single component – select that component from the list in the
labelRef. Example: if the labelText7is to be a description for the fieldTextField2, then in the WCAG label configurationText7you should indicate the componentTextField2as associated.

If a label concerns multiple components – choose the first or most important in the context of the group. Example: if the postal code consists of two fields of type
TextField, you should link the label to the first of them.
Label consistency:
The same elements on different pages should have identical labels to maintain consistency of navigation and content from the user's perspective, including users of screen readers.
Verification method
check ariaLabel and ariaDescription (if filled)
Text field (TextField)
Good practices
Filling in the label and accessibility attributes (ariaLabel, ariaDescription):
Each field should have an assigned label or
ariaLabel(if there is no visual label).By default, after adding the component
TextField, the propertiesariaLabelandariaDescriptionare empty – they should be filled in manually. Example: instead ofGesTextField1.ariaLabelKeyuseGesTextField1.label, which will automatically assign the label value toariaLabel.

Good practices for field descriptions:
Field requirement
Message "required field" may be too generic. It is recommended to use specific messages, e.g. "The first name field is required".
Format validation
If the field has format validation (e.g. PESEL, NIP), add to
ariaDescriptiona description of the requirements, e.g.: "Require 11 digits without spaces or special characters."
Mask
If the field has a mask → describe in
ariaDescription, e.g. which characters are allowed/disallowed.If the field has a
visibleMask→ describe e.g.: "For the postal code enter only digits, without a dash."
Maximum length
If the field has a set
maxLength→ add toariaDescriptioninformation about the limit, e.g.: "Up to 30 characters."
Suggester
If the field contains a suggester (dynamic suggestions) → describe its behavior, e.g.: "The value may be changed automatically when an incorrect number is entered."
Validator
When the validator error message is ambiguous, include its meaningful description in
ariaDescription, e.g.: "The field may not contain special characters."
Formatter
If the field contains a formatter → describe how it works, e.g.: "The text will be automatically converted to uppercase."
Paste restrictions
If the field does not allow pasting text → this should be described in
ariaDescription, e.g.: "The field does not support pasting data."
Prefix / suffix
If the field contains a prefix or suffix (e.g. "+48", "PLN") → add to
ariaDescription, e.g.: "Field preceded by country code +48."
Verification method
check ariaLabel and ariaDescription (if filled)
Contextual help (Tooltip)
Good practices
If a tooltip has visibility conditions, make sure they match the conditions of the component to which the tooltip is assigned.
Checkbox and Checkbox Section (CheckboxSection)
Good practices
Filling ariaLabel and ariaDescription for the Checkbox and CheckboxSection component:
By default, after adding the component Checkbox, the
ariaLabelandariaDescriptionfields are empty. The valueariaLabelshould be filled in manually – usually it is enough to assign its value from thetext.field Example:
Replace:GesCheckbox11.ariaLabel→GesCheckbox11.text(resulting in:)

Example of filling ariaLabel
ariaDescriptionThe attributeis not always required
, but it is worth adding in more complex contexts, e.g. when the checkbox requires additional explanation.Checkbox with formatted content ():
TextContent
Checkbox with formatted content (If the checkbox is fed with formatted content from theCheckbox with formatted content (. component, remember that screen readers do not readariaLabelTherefore the text content should also be assigned to

Verification method
check ariaLabel and ariaDescription (if filled)
Example of filling ariaLabel for a checkbox fed with content
Good practices
Filling ariaLabel and ariaDescription Date field (DatePicker)
Each field should have an assigned label or
ariaLabelfor the DatePicker component:By default, after adding the component (if there is no visual label)., the properties
ariaLabelandariaDescriptionDatePickerariaLabelare empty. They should be filled in manually or assignedfield to the component's label key.
Instead ofGesDatePicker1.ariaLabelKey→ useGesCheckbox11.textGesDatePicker1.label)
ariaLabel = label ariaDescription Good practices for filling
for date fields:
If the field has date selection restrictions () dateRangeariaDescription, e.g.: → add a description to"Select a date in the range from 01.01.2020 to 31.12.2030."
If the field has a custom format set () dateFormatariaDescription, e.g.: → describe it in"Date format: month–year (MM-YYYY)."
If an input mask is enabled () autoMask → it is worth adding information on how the auto-complete works, e.g.:
Verification method
"Enter digits only – the separator will be added automatically."
check ariaLabel and ariaDescription (clear information about data format)check ariaLabel and ariaDescription (if filled)
Good practices
ImageAlternative text (imageAlt
) for images
Alternative text (orEvery image should have alternative text filled in (imageAltKey

Sample imageAltKey in the form source
Recommendations: Maximum text length:
80 characters Maintain style and language consistency
of the description with the rest of the interface
Empty attribute(altalt="" ) should be used, e.g.:only when the image serves a decorative function
background
content-separating line
decorative icon without informational function Informational/Decorative presentation
- In the WCAG section you can set informational presentation (the image can be focused) or decorative presentation (it cannot be focused and has an empty imageAlt attribute). Image as a link
Empty attributeIf an image is contained within a link, it should containboth a graphic description and information about the function, e.g.: <a href="https://www.bank.com"> <img src="logo-bank.png" alt="Bank XYZ Logo – Go to Bank XYZ homepage"> </a> SVG elements
ariaLabelandariaDescription
For SVG graphics you can add the attribute More:
Verification method
Additional information
check alt values on the application
Good practices
Filling ariaLabel and ariaDescription Value selection from a list (Combobox)
for the Combobox component:
ariaLabel(if there is no visual label).By defaultEach ComboBox component should have an assigned label or
ariaLabelandariaDescription, after adding a ComboBox, the fields are emptyariaLabel– they should be filled in manually or assignedfield
to the label key.GesCheckbox11.ariaLabelGesCombobox1.ariaLabelKeyGesCheckbox11.textGesDatePicker1.label)
GesCombobox1.label
Alternative text for the default value "Select": In the "Other" tab (in the ComboBox configuration) you can definealternative text for the default value "Select"

Verification method
Alternative text for "Select"
check ariaLabel and ariaDescription
Good practices
Radio group (RadioGroup)/ Tile Group (TileGroup)
Label and accessibility attributes:
Each component should have a label (labelariaLabel) orBy default(if a visual label is not available).
, after adding the component (,RadioGroup,ComboBoxTileGroupariaLabelandariaDescription), the fields are empty — they should be filled in manually orariaLabel– they should be filled in manually or assigned
assigned
RadioGroup:
RadioEach option (value)) should have a unique value (RadioGroup, to avoid conflicts in form operation and errors for screen readers.may have: one common tooltip
or (for the whole group),separate tooltips for each option
, if each requires additional description.
TileGroup:
If an image wasadded in the tile content ( Tile), you should:add an alternative description (
Empty attribute), which clearly informs about the image content,set
altfor decorative graphics so they are not read by screen readers.
Verification method
check ariaLabel and ariaDescription, check alt values if they were added to images
Repeatable section (RepeatableSection)
Good practices
The section should have a title (
Each component should have a label (labelariaLabel– this ensures that the screen reader correctly identifies its content and context.In the
ariaDescriptionattribute include information about the minimum and maximum number of possible occurrences of the section.
Verification method
check ariaDescription
Slider/Step slider
Good practices
By default, after adding the component Slider, the properties
ariaLabelandariaDescription, after adding a ComboBox, the fields are. They should be filled in manually — especiallyariaLabel, if the component does not have a visible label.In the
ariaDescriptionit is worth including information about the range of selectable values
Verification method
check ariaDescription
Plus Minus
Good practices
By default, after adding a component of type Plus-Minus, the attributes
ariaLabelandariaDescription, after adding a ComboBox, the fields are. They should be filled in manually — especiallyariaLabel, if the component does not have a visible label.In the
ariaDescriptionyou should add information about the minimum and maximum possible value, so screen reader users are clear about the available range.
Verification method
check ariaDescription
Rollable formatted content (RollableTextContent)
Good practices
Ensure the component has a title (label) and
ariaLabel.ariaLabelshould unambiguously describe the component content so that screen readers can correctly convey the information about the content to the user.
Verification method
check the title value
Product selection (ProductSelector)
Good practices
By default, after adding the component ProductSelector, the
ariaLabelandariaDescriptionare empty. They should be filled in manually — especiallyariaLabel, if the component does not have a visible label.Images used in the component ProductSelector should have their
Empty attributevalues filled in — in accordance with accessibility rules so screen readers can correctly describe the graphics.HTML content used in the component (
ContentHTML) should be validated using an HTML validation tool (e.g. Markup Validation Service) to eliminate errors and improve accessibility.
Verification method
check alt values and HTML code
Internal link (PageNavigationLink) and external (Link)
Good practices
By default, after adding a link the
ariaLabelandariaDescriptionare empty. They should be filled in manually — especiallyariaLabel, if the component does not have a visible label.Do not use all capital letters (caps lock) in link texts, to avoid making them harder to read and recognize for users and screen readers.
The user should be informed whether clicking the link will open a new tab or launch another application. This can be achieved by:
setting the link opening property, e.g.
target="_blank",adding informative text for example in the title (
title) or in theariaDescription.clear graphic or textual indication.
In the link properties you can set, among others:
the opening method (
target, e.g._blank),the text displayed on hover (attribute
title),the anchor name (page fragment).

Verification method
Alternative text for "Select"
Statements
Good practices
Alternative text for the default value "Select": Properties you can change the following overriding properties for texts displayed in the interface:
Overriding property:
"Collapse statements content"Overriding property:
"Expand statements content"Overriding content property:
"You did not consent to the required statements"Overriding content property:
"You did not make selections for all statements, please complete the required information in the statements section"Overriding content property:
"I accept the selected statements"Overriding content property:
"I accept all statements"

Attachments (UploadFile)
Good practices
By default, after adding UploadFile field
ariaLabelandariaDescriptionare empty. They should be filled in manually — especiallyariaLabel, if the component does not have a visible label.In the attributes
By default, after adding a link the
ariaLabelandariaDescriptionare empty. They should be filled in manually — especiallyariaLabel, if the component does not have a visible label.
or
ariaDescriptionthere should be information about:whether attachments are required,
the number of files that can be added.
Verification method
check ariaLabel
Map (MapView)
Good practices
By default, after adding MapView field
ariaLabelandariaDescriptionare empty. They should be filled in manually — especiallyariaLabel, if the component does not have a visible label.In the
ariaLabelorariaDescriptionit is worth placing information important to the user, e.g.:description of the map's purpose,
usage instructions (e.g. whether a location can be selected),
other relevant accessibility information.
Verification method
check ariaLabel
Confirmation section (ConfirmationSection)
Good practices
By default, after adding confirmation section field
ariaLabelandariaDescriptionare empty. They should be filled in manually — especiallyariaLabel, if the component does not have a visible label.In the
ariaLabelorariaDescriptionit is worth including additional information helpful in the context of data confirmation, e.g.:confirmation instructions,
a note to check the data before submitting.
QR code generator (QRCodeGenerator)
Good practices
By default, after adding QRCodeGenerator field ariaLabel and ariaDescription are empty.
They should be filled in manually — especially ariaLabel, if the component does not have a visible label.
Verification method
check ariaLabel
QR code scanner (QRCodeScanner)
Good practices
By default, after adding QRCodeScanner field ariaLabel and ariaDescription are empty.
They should be filled in manually — especially ariaLabel, if the component does not have a visible label.
Verification method
check ariaLabel
AZTEC code scanner (AztecCodeScanner)
Good practices
By default, after adding AztecCodeScanner field ariaLabel and ariaDescription are empty.
They should be filled in manually — especially ariaLabel, if the component does not have a visible label.
Verification method
check ariaLabel
Useful sites
guide to requirements: https://wcag20.widzialni.org/index.php
high contrast mode - extension: https://chromewebstore.google.com/detail/wysoki-kontrast/djcfdncoelnlbldjfhinnjlhdjlikmph?hl=pl
Screen readers
NVDA screen reader download (for Windows): https://www.nvda.pl/pobierz or
On Linux we have a built-in reader (toggle on/off Win+Alt+S)
Last updated
Was this helpful?
