<fieldset class="fieldset" aria-labelledby="rating-field-label">
    <legend id="rating-field-label" class="rating-rate-legend ">
        Score
    </legend>
    <div class="
            rating
            rating--rate
            
        " role="listbox" aria-required="true" aria-labelledby="rating-field-label" tabindex="0">
        <div class="rating__rate-item " role="option" aria-selected="false">
            <label for="Rating_1" class="
                        rating__star
                        rating__star--rate
                        
                    " aria-label="Rate option, 1 of 5. Click to vote">
                <span class="
                            rating__indicator
                            
                        "></span>
            </label>
            <input type="radio" name="ratings[1]" id="Rating_1" value="16" class="radio__field">
        </div>
        <div class="rating__rate-item " role="option" aria-selected="false">
            <label for="Rating_2" class="
                        rating__star
                        rating__star--rate
                        
                    " aria-label="Rate option, 2 of 5. Click to vote">
                <span class="
                            rating__indicator
                            
                        "></span>
            </label>
            <input type="radio" name="ratings[2]" id="Rating_2" value="16" class="radio__field">
        </div>
        <div class="rating__rate-item " role="option" aria-selected="false">
            <label for="Rating_3" class="
                        rating__star
                        rating__star--rate
                        
                    " aria-label="Rate option, 3 of 5. Click to vote">
                <span class="
                            rating__indicator
                            
                        "></span>
            </label>
            <input type="radio" name="ratings[3]" id="Rating_3" value="16" class="radio__field">
        </div>
        <div class="rating__rate-item " role="option" aria-selected="false">
            <label for="Rating_4" class="
                        rating__star
                        rating__star--rate
                        
                    " aria-label="Rate option, 4 of 5. Click to vote">
                <span class="
                            rating__indicator
                            
                        "></span>
            </label>
            <input type="radio" name="ratings[4]" id="Rating_4" value="16" class="radio__field">
        </div>
        <div class="rating__rate-item " role="option" aria-selected="false">
            <label for="Rating_5" class="
                        rating__star
                        rating__star--rate
                        
                    " aria-label="Rate option, 5 of 5. Click to vote">
                <span class="
                            rating__indicator
                            
                        "></span>
            </label>
            <input type="radio" name="ratings[5]" id="Rating_5" value="16" class="radio__field">
        </div>
    </div>
</fieldset>
<script src="/components/raw/rating/rating-rate.js"></script>
        
    
        <fieldset
    class="fieldset"
    aria-labelledby="rating-field-label"
>
    <legend
        id="rating-field-label"
        class="rating-rate-legend {{ legendClass }}"
    >
        Score
    </legend>
    <div
        class="
            rating
            rating--rate
            {{ class }}
        "
        role="listbox"
        aria-required="true"
        aria-labelledby="rating-field-label"
        tabindex="0"
        {{{ attributes }}}
    >
        {{#each rateItems as |item|}}
            <div
                class="rating__rate-item {{ item.class }}"
                role="option"
                aria-selected="false"
                {{{ item.attributes }}}
            >
                <label
                    for="{{ item.id }}"
                    class="
                        rating__star
                        rating__star--rate
                        {{ star.class }}
                    "
                    aria-label="{{ labelText }}"
                    {{{ item.labelAttributes }}}
                >
                    <span
                        class="
                            rating__indicator
                            {{ item.indicator.class }}
                        "
                        {{{ item.indicator.attributes }}}
                    ></span>
                </label>
                <input
                    type="radio"
                    name="{{ item.name }}"
                    id="{{ item.id }}"
                    value="16"
                    class="radio__field"
                >
            </div>
        {{/each}}
    </div>
</fieldset>
{{#if script}}
    <script src="{{static 'rating-rate.js' }}"></script>
{{/if}}
    
        
            
            {
  "ariaLabel": "Average rating: 72%",
  "title": "Average rating: 72%",
  "star": {
    "attributes": ""
  },
  "script": true,
  "rateItems": [
    {
      "id": "Rating_1",
      "name": "ratings[1]",
      "labelText": "Rate option, 1 of 5. Click to vote"
    },
    {
      "id": "Rating_2",
      "name": "ratings[2]",
      "labelText": "Rate option, 2 of 5. Click to vote"
    },
    {
      "id": "Rating_3",
      "name": "ratings[3]",
      "labelText": "Rate option, 3 of 5. Click to vote"
    },
    {
      "id": "Rating_4",
      "name": "ratings[4]",
      "labelText": "Rate option, 4 of 5. Click to vote"
    },
    {
      "id": "Rating_5",
      "name": "ratings[5]",
      "labelText": "Rate option, 5 of 5. Click to vote"
    }
  ]
}
            
        
    
                                $rating__size                   : 120px !default;
$rating__item-size              : $rating__size / 5 !default;
$rating__size--secondary        : 80px !default;
$rating__item-size--secondary   : $rating__size--secondary / 5 !default;
$rating__size--rate             : 160px !default;
$rating__margin--rate           : 0 0 $spacer--semi-medium !default;
$rating__padding--rate          : $spacer 0 !default;
$rating__item-size--rate        : $rating__size--rate / 5 !default;
$icon__active-color             : $color-primary !default;
$icon__inactive-color           : $gray !default;
$rating__error-margin-bottom    : $spacer !default;
$rating__error-color            : $red !default;
$rating__start-before           : svg-uri("<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path transform='translate(2 2)' d='M10 15.27L16.18 19l-1.64-7.03L20 7.24l-7.19-.61L10 0 7.19 6.63 0 7.24l5.46 4.73L3.82 19z' fill='#{$icon__inactive-color}'/></svg>") !default;
$rating__indicator-before       : svg-uri("<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path transform='translate(2 2)' d='M10 15.27L16.18 19l-1.64-7.03L20 7.24l-7.19-.61L10 0 7.19 6.63 0 7.24l5.46 4.73L3.82 19z' fill='#{$icon__active-color}'/></svg>") !default;
                            
                            
                        
                                @import 'rating-variables';
.rating {
    width: $rating__size;
    &:hover,
    &.focus-visible {
        .rating__rate-item span:before {
            display: block;
        }
    }
    &__rate-item {
        position: relative;
        flex: 1 0 $rating__item-size;
        overflow: hidden;
        &:hover,
        &.focus-visible {
            ~ .rating__rate-item span:before {
                display: none;
            }
        }
    }
    &__star {
        position: relative;
        height: $rating__item-size;
        width: $rating__size;
        margin: 0;
        &:before { // inactive
            content: '';
            position: absolute;
            display: block;
            bottom: 0;
            left: 0;
            top: 0;
            right: 0;
            width: $rating__size;
            height: $rating__item-size;
            background-image: $rating__start-before;
            background-repeat: repeat-x;
            background-position: left center;
            background-size: $rating__item-size;
            @include isIE() {
                height: 100%;
                background-size: $rating__item-size 100%;
            }
        }
        &--single {
            width: $rating__item-size;
        }
    }
    &__indicator {
        left: 0;
        top: 0;
        display: block;
        height: $rating__item-size;
        width: $rating__size;
        overflow: hidden;
        text-indent: -10000px;
        &:before { // active
            content: '';
            position: absolute;
            display: block;
            left: 0;
            right: 0;
            top: 0;
            bottom: 0;
            width: auto;
            height: $rating__item-size;
            background-image: $rating__indicator-before;
            background-repeat: repeat-x;
            background-position: left center;
            background-size: $rating__item-size;
            text-indent: 10000px;
            @include isIE() {
                width: 100%;
                height: 100%;
                background-size: $rating__item-size 100%;
            }
            .rating__star--rate & {
                display: none;
            }
            .rating__star--rate:hover &,
            .rating__star--rate.focus-visible &,
            .rating__rate-item--active & {
                display: block;
            }
        }
    }
    &__error {
        display: none;
        color: $rating__error-color;
        margin-bottom: $rating__error-margin-bottom;
        &--visible {
            display: block;
        }
    }
    .mage-error {
        display: none !important; // sass-lint:disable-line no-important
    }
    &--rate {
        display: flex;
        justify-content: center;
        align-items: center;
        width: $rating__size--rate;
        margin: $rating__margin--rate;
        padding: $rating__padding--rate;
        .rating__rate-item {
            flex: 1 0 $rating__item-size--rate;
        }
        .rating__star {
            height: $rating__item-size--rate;
            width: $rating__item-size--rate;
            border: 0;
            background-color: transparent;
            cursor: pointer;
            &:before {
                width: $rating__item-size--rate;
                height: $rating__item-size--rate;
                background-size: $rating__item-size--rate;
                background-position: center;
                background-repeat: no-repeat;
                @include isIE() {
                    background-size: $rating__item-size--rate 100%;
                }
            }
            &--single {
                width: $rating__item-size--rate;
            }
        }
        .radio__field {
            width: 1px;
            height: 1px;
            bottom: 0;
            &.focus-visible {
                opacity: 1;
                height: 0;
                outline: none;
                appearance: none;
                &:before {
                    content: '';
                    display: block;
                    position: absolute;
                    top: -$rating__item-size--rate;
                    width: $rating__item-size--rate;
                    height: $rating__item-size--rate;
                    border: $border-focus;
                }
            }
        }
        .rating__indicator {
            height: $rating__item-size--rate;
            width: $rating__item-size--rate;
            &:before {
                height: $rating__item-size--rate;
                background-size: $rating__item-size--rate;
                background-position: center;
                background-repeat: no-repeat;
            }
        }
    }
    &--secondary {
        width: $rating__size--secondary;
        .rating__indicator {
            height: $rating__item-size--secondary;
            width: $rating__size--secondary;
            &:before {
                height: $rating__item-size--secondary;
                background-size: $rating__item-size--secondary;
            }
        }
        .rating__star {
            height: $rating__item-size--secondary;
            width: $rating__size--secondary;
            &:before {
                height: $rating__item-size--secondary;
                background-size: $rating__item-size--secondary;
                width: $rating__size--secondary;
            }
        }
    }
}
                            
                            
                        
                                'use strict'
class Rating {
  constructor() {
    this.rating = document.querySelector('.rating--rate');
    this.activeItemClass = 'rating__rate-item--active';
    this.ratingElements = [...this.rating.querySelectorAll('.rating__rate-item')];
    this.optionChoosen = false;
    this.setListeners();
  }
  deleteOtherRates() {
    this.ratingElements.forEach(item => {
      item.classList.remove(this.activeItemClass);
    });
  }
  setListeners() {
    this.ratingElements.forEach(oneRank => {
      oneRank.addEventListener('click', () => {
        this.deleteOtherRates();
        oneRank.querySelector('.radio__field').checked = true;
        oneRank.classList.add(this.activeItemClass);
        this.optionChoosen = true;
        oneRank.setAttribute('aria-selected', true);
        for (let i = 0; i < this.ratingElements.length; i++) {
          if (!this.ratingElements[i].classList.contains(this.activeItemClass)) {
            this.ratingElements[i].classList.add(this.activeItemClass);
          }
          else {
            return;
          }
        }
      });
    });
  }
}
new Rating();
                            
                            
                        tabindex="0") and should have aria-label set with descriptive value and average rating value.input type="button" behing the stars. moving focus we see that background changes and with space click we can set the field selected/star active.What should be done to keep it working for AT:
fieldset and add legend to set some labelrole="listbox" aria-required="true" and aria-labelledby="<use legend id>" to make list of options with required rating fieldrole="option" & aria-selected on the input radio wrapperaria-label for input radio label elements