kodukeelНачать бесплатноНачать бесплатно

Заявление о доступности

Обновлено 15 октября 2026

Эта страница переведена с помощью ИИ, и носитель языка её ещё не проверял. A machine translated this page, and no native speaker has checked it yet.

Kodukeel создан для тех, кто учит эстонский, а многие учат его потому, что им это нужно. На этой странице сказано, к какому стандарту мы стремимся, что и как проверили, где пока не дотягиваем и как нам об этом сообщить.

Стандарт

Цель: WCAG 2.2, уровень AA, а через него EN 301 549, гармонизированный европейский стандарт, по которому оценивают государственные органы и их поставщиков и который включает WCAG в части веб-контента.

Статус соответствия

Частично соответствует WCAG 2.2, уровень AA. «Частично» означает, что большая часть приложения соответствует стандарту, а части, названные ниже, нет.

Полного соответствия нет, потому что никому из тех, кто полагается на вспомогательные технологии, ещё не платили за проверку приложения. Всё, что ниже, опирается на автоматические проверки и на то, что авторы приложения проверяли собственную работу.

Как это проверялось

При каждом изменении в сборке запускаются четыре набора тестов, против настоящего приложения в настоящем браузере, а не против отдельного компонента.

  • axe на каждой странице. a11y-check.mjs открывает каждую страницу приложения, а не выборку, и запускает на каждой axe, включая правила лучших практик. Пока исключений два, проверенная работа и отсканированная страница, потому что для каждой сначала нужно создать запись; набор проверки границ ниже создаёт обе и измеряет их, а axe до них пока не доходит. Весь проход повторяется в тёмной теме, потому что светлая и тёмная темы являются двумя палитрами, и цвет, проходящий порог в одной, ничего не говорит о другой. Ещё дважды он запускается при ширине 390 пикселей, то есть на телефоне, потому что телефон здесь получает другую разметку, а не ту же, только уже: боковая панель навигации не рисуется вовсе, а вместо неё появляется нижняя панель со шторкой. Эту шторку тоже открывают и проверяют, так как ни один адрес к ней не ведёт. Строка текста из одного символа тоже считается текстом, и так была найдена галочка с контрастом 2,52 при пороге 4,5. Помимо axe проверяется ровно один главный ориентир и один заголовок на экран, заголовок страницы, отличный от заголовка лендинга, и разметка эстонского текста, чтобы экранный диктор не читал его с английским произношением.
  • Контраст измеряется, а не выводится рассуждением. test-design.mjs читает цвета, которые браузер действительно нарисовал, и вычисляет соотношение в обеих темах, включая состояния, в которых страница не открывается сама, например строку под курсором.
  • Каждый элемент проверяется на 44px. test-mobile.mjs гоняет приложение при ширине 360, 390, 430, 768 и 1280 пикселей с сенсорным вводом, единственным условием, при котором это правило имеет смысл, и падает на любом элементе управления меньше порога.
  • Перекомпоновка на 320 пикселях. test-mobile.mjs открывает каждую страницу шириной 320 пикселей CSS, а это и есть увеличение 400% в окне шириной 1280, и падает на всём, что нарисовано за краем экрана вне собственной области прокрутки, как у таблицы форм.
  • Текст остаётся в своей рамке. test-containment.mjs проходит каждую страницу при ширине 360, 768 и 1280 в обеих темах и проверяет, не обрезано ли что-то, не выходит ли за свою рамку и не наложено ли поверх другого. Затем проверяет снова, заменив каждую строку текста неразрывной строкой той же длины, ведь в эстонском длинные слова.

Кроме того, приложение собрано из настоящих кнопок и ссылок с видимой рамкой фокуса. Анимация отключается для всех, чья система просит уменьшить движение, и нигде не нужно перетаскивание. Цвет никогда не бывает единственным, что передаёт различие, поэтому правильный ответ отмечается и словами, и цветом.

Тренировочный раунд на время можно сделать длиннее (WCAG 2.2.1, регулируемое время). «Задание дня» по умолчанию длится две минуты, а одна настройка растягивает его вплоть до десятикратной длины, именно ту величину, которую требует критерий. Она выбирается до начала раунда в настройках, и стартовый экран на неё ссылается.

Аудит с участием человека с инвалидностью, пользующегося вспомогательными технологиями, не заказывался. Никому из пользователей экранного диктора не платили за проверку, и стороннего аудита доступности не было. Автоматические инструменты находят, пожалуй, треть того, что не так со страницей, и это механическая треть.

Что заведомо не соответствует

Это найдено чтением кода, а не взято из шаблона, и каждый пункт относится к настоящему экрану.

  • Части пробного экзамена идут по таймеру, который никто не может изменить (WCAG 2.2.1, регулируемое время), и по его истечении часть закрывается. Работа имитирует государственный экзамен на время, а тренировка такой работы без ограничения измеряет уже другое, поэтому это единственный таймер, оставленный неизменным, но кандидат, которому на настоящем экзамене нужно дополнительное время, не может попросить о нём здесь.
  • Раунды аудирования, диктанта и минимальных пар требуют слуха (WCAG 1.2.1). Расшифровки до ответа нет, потому что расшифровка и есть ответ, так что текстовая альтернатива уничтожила бы само упражнение. Текст показывается сразу после ответа. Тот, кто не может пользоваться звуком, может пользоваться всеми остальными раундами, и для продвижения ни один из этих трёх не обязателен, но три раунда для него закрыты.
  • Речь слышит машина на самом устройстве: она сообщает, какие слова дошли, и никогда не оценивает, как они прозвучали. Это новинка, и на голосах самих учеников её ещё не измеряли. Каждый шаг раунда устной речи можно выполнить, печатая, поэтому у ученика без микрофона или не желающего им пользоваться всё равно есть способ его пройти.
  • axe проходит две ширины, а не все. Он запускается при 1280 и 390, по обе стороны от единственной точки перелома, где меняется навигация, так что нижняя панель телефона и шторка за ней теперь проверены. Промежуточные ширины, 360, 430 и 768, проверяются на размер элементов, переполнение и границы, но не axe. Ошибку в разметке, которая проявляется на одной из них и ни на одной из двух первых, найдёт человек, а не сборка.
  • Экраны, которым нужны данные, проверены хуже. Автоматический проход видит каждую страницу при загрузке плюс одно состояние, до которого ученик доходит своими действиями. Список группы с учениками, часть экзамена в процессе и сетки головоломок во время игры доступны, но проверены хуже соседних страниц.
  • Сочетания из одной клавиши нельзя отключить (WCAG 2.1.4, Character Key Shortcuts). В раунде цифра оценивает карточку, а B возвращает назад. С клавиатуры это удобно, но голосовой ввод может нажать их, произнеся одну букву. Настройки, чтобы их отключить, пока нет.
  • Некоторые декоративные буквы всё время движутся (WCAG 2.2.2, Pause, Stop, Hide). Четыре буквы на карточке с падежами на главной странице двигаются, пока страница открыта. Они останавливаются, если система просит меньше движения, а на самой странице такого переключателя нет.
  • Слово звучит само, когда появляется карточка (WCAG 1.4.2, Audio Control). Это отключается в настройках, и запись длится одно слово или одно предложение, но ничто не проверяет, что каждая запись короче трёх секунд.

Если ограничение выше вызвано нами, а не требованием самого упражнения, оно в списке на исправление. Таймеры тренировок были первыми и теперь настраиваются, а проверка на телефоне была второй: раньше она стояла в этом списке, а теперь выполняется в сборке. Таймер экзамена остаётся, по причине, указанной рядом с ним.

Критерий за критерием

Каждый критерий WCAG 2.2 уровней A и AA и то, как с ним обстоят дела в приложении. EN 301 549 принимает их как свою главу 9, по одному пункту на критерий. Критерий отмечен как поддерживаемый, только если его проверяет тест в сборке, и этот тест назван. В остальных строках объяснено, почему нет.

КритерийEN 301 549Как обстоят делаЧем проверено или почему нет
1.1.1 Non-text Content (A)9.1.1.1Поддерживаетсяscripts/a11y-check.mjs
1.2.1 Audio-only and Video-only (Prerecorded) (A)9.1.2.1Поддерживается частичноДля раундов аудирования, диктанта и минимальных пар нужен слух, как объяснено выше.
1.2.2 Captions (Prerecorded) (A)9.1.2.2НеприменимоВ приложении нет видео.
1.2.3 Audio Description or Media Alternative (Prerecorded) (A)9.1.2.3НеприменимоВ приложении нет видео.
1.2.4 Captions (Live) (AA)9.1.2.4НеприменимоВ приложении нет видео.
1.2.5 Audio Description (Prerecorded) (AA)9.1.2.5НеприменимоВ приложении нет видео.
1.3.1 Info and Relationships (A)9.1.3.1Поддерживаетсяscripts/a11y-check.mjs
1.3.2 Meaningful Sequence (A)9.1.3.2Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
1.3.3 Sensory Characteristics (A)9.1.3.3Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
1.3.4 Orientation (AA)9.1.3.4Поддерживаетсяscripts/invariants/no-orientation-lock.ts
1.3.5 Identify Input Purpose (AA)9.1.3.5Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
1.4.1 Use of Color (A)9.1.4.1Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
1.4.2 Audio Control (A)9.1.4.2Поддерживается частичноСлово звучит само, когда появляется карточка. Это отключается в настройках, и ничто не проверяет длину записи.
1.4.3 Contrast (Minimum) (AA)9.1.4.3Поддерживаетсяscripts/test-design.mjs
1.4.4 Resize Text (AA)9.1.4.4Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
1.4.5 Images of Text (AA)9.1.4.5Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
1.4.10 Reflow (AA)9.1.4.10Поддерживаетсяscripts/test-mobile.mjs
1.4.11 Non-text Contrast (AA)9.1.4.11Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
1.4.12 Text Spacing (AA)9.1.4.12Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
1.4.13 Content on Hover or Focus (AA)9.1.4.13Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
2.1.1 Keyboard (A)9.2.1.1Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
2.1.2 No Keyboard Trap (A)9.2.1.2Поддерживаетсяscripts/invariants/dialogs-hold-focus.ts
2.1.4 Character Key Shortcuts (A)9.2.1.4Поддерживается частичноНекоторые раунды реагируют на одну клавишу, например цифру для оценки или B, чтобы вернуться назад, и их пока нельзя отключить.
2.2.1 Timing Adjustable (A)9.2.2.1Поддерживается частичноВ пробном экзамене время фиксировано, как объяснено выше. Время любого тренировочного раунда можно увеличить.
2.2.2 Pause, Stop, Hide (A)9.2.2.2Поддерживается частичноНекоторые декоративные буквы движутся и останавливаются, только если система просит меньше движения.
2.3.1 Three Flashes or Below Threshold (A)9.2.3.1Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
2.4.1 Bypass Blocks (A)9.2.4.1Поддерживаетсяscripts/a11y-check.mjs
2.4.2 Page Titled (A)9.2.4.2Поддерживаетсяscripts/a11y-check.mjs
2.4.3 Focus Order (A)9.2.4.3Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
2.4.4 Link Purpose (In Context) (A)9.2.4.4Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
2.4.5 Multiple Ways (AA)9.2.4.5Поддерживаетсяlib/ux/nav.test.ts
2.4.6 Headings and Labels (AA)9.2.4.6Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
2.4.7 Focus Visible (AA)9.2.4.7Поддерживается частичноВидимая рамка фокуса проверяется только у текстовых полей.
2.4.11 Focus Not Obscured (Minimum) (AA)Пока не пункт стандартаПоддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
2.5.1 Pointer Gestures (A)9.2.5.1Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
2.5.2 Pointer Cancellation (A)9.2.5.2Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
2.5.3 Label in Name (A)9.2.5.3Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
2.5.4 Motion Actuation (A)9.2.5.4НеприменимоНичем не нужно управлять, двигая или встряхивая устройство.
2.5.7 Dragging Movements (AA)Пока не пункт стандартаПоддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
2.5.8 Target Size (Minimum) (AA)Пока не пункт стандартаПоддерживаетсяscripts/test-mobile.mjs
3.1.1 Language of Page (A)9.3.1.1Поддерживаетсяscripts/a11y-check.mjs
3.1.2 Language of Parts (AA)9.3.1.2Поддерживаетсяscripts/a11y-check.mjs
3.2.1 On Focus (A)9.3.2.1Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
3.2.2 On Input (A)9.3.2.2Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
3.2.3 Consistent Navigation (AA)9.3.2.3Поддерживаетсяlib/ux/nav.test.ts
3.2.4 Consistent Identification (AA)9.3.2.4Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
3.2.6 Consistent Help (A)Пока не пункт стандартаПоддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
3.3.1 Error Identification (A)9.3.3.1Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
3.3.2 Labels or Instructions (A)9.3.3.2Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
3.3.3 Error Suggestion (AA)9.3.3.3Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
3.3.4 Error Prevention (Legal, Financial, Data) (AA)9.3.3.4Поддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
3.3.7 Redundant Entry (A)Пока не пункт стандартаПоддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
3.3.8 Accessible Authentication (Minimum) (AA)Пока не пункт стандартаПоддерживается частичноВ сборке это пока ничто не проверяет, поэтому мы этого не утверждаем.
4.1.2 Name, Role, Value (A)9.4.1.2Поддерживаетсяscripts/a11y-check.mjs
4.1.3 Status Messages (AA)9.4.1.3Поддерживаетсяscripts/invariants/verdicts-are-announced.ts

Шесть из этих критериев появились в WCAG 2.2 и пока не стали пунктами EN 301 549 версии 3.2.1, которая принимает WCAG 2.1. Глава 11 стандарта относится к программам, которые не являются веб-страницей, поэтому к приложению в браузере она не применяется.

Когда это подготовлено

Подготовлено 5 сентября 2026 года авторами приложения на основе описанных выше автоматических тестов и чтения исходного кода, а таблица критериев добавлена 15 октября 2026 года. Заявление пересматривается всякий раз, когда экран меняется настолько, что это затрагивает одно из утверждений. Внешней проверки не было.

Как сообщить нам о проблеме

Напишите на privacy@upthink.ee. Если можете, расскажите, что вы пытались сделать, что произошло и чем вы для этого пользовались. Даже сообщение «этот экран не работает с моим экранным диктором» стоит отправить: тот, кто его прочитает, сможет пойти и посмотреть.

Кроме того, на каждом экране приложения рядом с тем, что пошло не так, есть способ сообщить о проблеме, и эти сообщения попадают к тем же людям.

Если это ничего не дало

Надзор за доступностью в Эстонии осуществляет государственный орган, отвечающий за Директиву о веб-доступности, а жалоба на обработку персональных данных направляется в Инспекцию по защите данных Эстонии (Andmekaitse Inspektsioon), Tatari 39, 10134 Tallinn, Estonia, info@aki.ee. Но сначала всё же напишите нам. Письмо читает живой человек, и исправить обычно быстрее, чем пожаловаться.

См. также «Доверие и безопасность» и «Конфиденциальность».

Конфиденциальность, Условия, Финансирование, Доверие, Для преподавателей, Пилотный проект (на английском), Доступность, Государственный экзамен, Помощь, Войти, Контакты