Заявление о доступности
Обновлено 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. Но сначала всё же напишите нам. Письмо читает живой человек, и исправить обычно быстрее, чем пожаловаться.
См. также «Доверие и безопасность» и «Конфиденциальность».
Конфиденциальность, Условия, Финансирование, Доверие, Для преподавателей, Пилотный проект (на английском), Доступность, Государственный экзамен, Помощь, Войти, Контакты