zapretgui/tests/test_updater_changelog_accessibility.py
2026-06-14 22:24:04 +03:00

121 lines
6.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from __future__ import annotations
import os
import unittest
os.environ.setdefault("QT_QPA_PLATFORM", "offscreen")
from PyQt6.QtWidgets import QApplication
from updater.ui.changelog_card import ChangelogCard
class UpdaterChangelogAccessibilityTests(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls._app = QApplication.instance() or QApplication([])
def test_update_card_has_screen_reader_state_and_button_text(self) -> None:
card = ChangelogCard(language="ru")
card.show_update("9.9.9", "Исправлена работа обновлений")
self.assertEqual(card.accessibleName(), "Доступно обновление: версия 9.9.9")
self.assertEqual(card.property("screenReaderStateText"), "Доступно обновление: версия 9.9.9")
self.assertIn("список изменений", card.accessibleDescription().lower())
self.assertEqual(card.icon_label.accessibleName(), "Индикатор обновления: Доступно обновление: версия 9.9.9")
self.assertEqual(
card.icon_label.property("screenReaderStateText"),
"Индикатор обновления: Доступно обновление: версия 9.9.9",
)
self.assertEqual(card.close_btn.accessibleName(), "Закрыть уведомление об обновлении")
self.assertEqual(
card.close_btn.property("screenReaderStateText"),
"Закрыть уведомление об обновлении",
)
self.assertIn("скрывает", card.close_btn.accessibleDescription().lower())
self.assertEqual(card.later_btn.accessibleName(), "Отложить обновление")
self.assertEqual(
card.later_btn.property("screenReaderStateText"),
"Отложить обновление",
)
self.assertIn("позже", card.later_btn.accessibleDescription().lower())
self.assertEqual(card.install_btn.accessibleName(), "Установить обновление 9.9.9")
self.assertEqual(card.install_btn.property("screenReaderStateText"), "Установить обновление 9.9.9")
self.assertIn("установку", card.install_btn.accessibleDescription().lower())
card._mode = "downloading"
download_icon_text = card._icon_state_text(
card_name="Загрузка v9.9.9: версия 9.9.9",
version="9.9.9",
)
self.assertEqual(download_icon_text, "Индикатор обновления: Скачивание обновления: версия 9.9.9")
def test_install_button_has_initial_screen_reader_state_text(self) -> None:
card = ChangelogCard(language="ru")
self.assertEqual(card.install_btn.accessibleName(), "Установить обновление")
self.assertEqual(
card.install_btn.property("screenReaderStateText"),
"Установить обновление",
)
def test_update_text_labels_are_named_for_screen_reader(self) -> None:
card = ChangelogCard(language="ru")
card.show_update("9.9.9", "Исправлена работа обновлений")
self.assertEqual(card.title_label.accessibleName(), "Заголовок обновления: Доступно обновление")
self.assertEqual(
card.version_label.accessibleName(),
f"Информация об обновлении: {' '.join(card.version_label.text().split())}",
)
def test_changelog_text_is_named_for_screen_reader(self) -> None:
card = ChangelogCard(language="ru")
card.show_update("9.9.9", "Исправлена работа обновлений")
self.assertEqual(
card.changelog_text.accessibleName(),
"Список изменений обновления: Исправлена работа обновлений",
)
self.assertEqual(
card.changelog_text.property("screenReaderStateText"),
"Список изменений обновления: Исправлена работа обновлений",
)
self.assertIn("что изменилось", card.changelog_text.accessibleDescription().lower())
def test_download_progress_labels_have_screen_reader_state_text(self) -> None:
card = ChangelogCard(language="ru")
card.start_download("9.9.9")
self.assertEqual(card.progress_label.accessibleName(), "Ход скачивания обновления: 0%")
self.assertEqual(
card.progress_label.property("screenReaderStateText"),
"Ход скачивания обновления: 0%",
)
self.assertEqual(card._progress_indeterminate.accessibleName(), "Подготовка скачивания обновления")
self.assertEqual(
card._progress_indeterminate.property("screenReaderStateText"),
"Подготовка скачивания обновления",
)
self.assertEqual(card.progress_bar.accessibleName(), "Прогресс скачивания обновления: 0%")
self.assertEqual(
card.progress_bar.property("screenReaderStateText"),
"Прогресс скачивания обновления: 0%",
)
self.assertEqual(card.speed_label.accessibleName(), "Скорость скачивания обновления: Скорость: —")
self.assertEqual(
card.speed_label.property("screenReaderStateText"),
"Скорость скачивания обновления: Скорость: —",
)
self.assertEqual(card.eta_label.accessibleName(), "Осталось до завершения обновления: Осталось: —")
self.assertEqual(
card.eta_label.property("screenReaderStateText"),
"Осталось до завершения обновления: Осталось: —",
)
if __name__ == "__main__":
unittest.main()