zapretgui/tests/test_about_kvn_accessibility.py
loop-uh 4f6fa16589
All checks were successful
Zapret source guards / validate (push) Successful in 7s
Windows-сборка / Dev Dev 21.1.6.19 опубликован
Страница «О программе» оживает: карточки вкладок выплывают по очереди, глобус KVN поворачивается, звезда Premium поблёскивает; дыра на вкладке KVN убрана
- Новый ui/widgets/stagger_float_in.py: при каждом показе вкладки её
  карточки выплывают снизу вверх одна за другой (эффект снимается по
  окончании; во время перехода между страницами не мешает ему).
- Zapret KVN: глобус (ui/widgets/turning_globe.py) плавно сменяет материки
  и чуть парит, название выплывает и бликует, «Купить подписку» вынесена
  в шапку, возможности — две плитки рядом со значками, которые
  подпрыгивают при наведении. Группы больше не растягиваются по высоте
  стопки вкладок — пустоты между разделами нет.
- «О программе»: по названию «Zapret 2 GUI» ходит блик, звезда Premium
  изредка поблёскивает, кнопка «Zapret KVN» со значком глобуса.
2026-09-28 20:19:09 +03:00

67 lines
3.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, QVBoxLayout, QWidget
from ui.pages.about_page_kvn_build import build_about_page_kvn_content
from ui.theme import get_theme_tokens
class AboutKvnAccessibilityTests(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls._app = QApplication.instance() or QApplication([])
def test_kvn_link_cards_have_screen_reader_text(self) -> None:
parent = QWidget()
layout = QVBoxLayout(parent)
widgets = build_about_page_kvn_content(
layout,
tokens=get_theme_tokens(),
content_parent=parent,
on_open_kvn_channel=lambda: None,
on_open_kvn_bot=lambda: None,
on_open_kvn_github=lambda: None,
)
self.assertEqual(widgets.features_group.accessibleName(), "Раздел Zapret KVN: Возможности")
self.assertEqual(
widgets.features_group.property("screenReaderStateText"),
"Раздел Zapret KVN: Возможности",
)
self.assertEqual(widgets.links_group.accessibleName(), "Раздел Zapret KVN: Ссылки")
self.assertEqual(
widgets.links_group.property("screenReaderStateText"),
"Раздел Zapret KVN: Ссылки",
)
# BypassBlock живёт на «Справке» — во вкладке KVN его больше нет.
self.assertFalse(hasattr(widgets, "bypass_card"))
# Покупка вынесена в шапку отдельной акцентной кнопкой.
self.assertFalse(hasattr(widgets, "bot_card"))
self.assertEqual(widgets.bot_btn.accessibleName(), "Купить подписку Zapret KVN")
self.assertEqual(widgets.bot_btn.property("screenReaderStateText"), "Купить подписку Zapret KVN")
self.assertIn("@zapretvpns_bot", widgets.bot_btn.accessibleDescription())
self.assertEqual(widgets.yt_card.accessibleName(), "Ускорение YouTube и Discord")
self.assertEqual(widgets.game_card.accessibleName(), "Игровые серверы")
expected = {
widgets.tg_card: ("Открыть канал Zapret KVN", "Новости и обновления"),
widgets.gh_card: ("Открыть исходный код Zapret KVN", "Forgejo репозиторий Zapret KVN"),
}
for card, (name, description) in expected.items():
with self.subTest(name=name):
self.assertEqual(card.accessibleName(), name)
self.assertEqual(card.property("screenReaderStateText"), name)
self.assertIn(description, card.accessibleDescription())
self.assertEqual(card.button.accessibleName(), name)
self.assertEqual(card.button.property("screenReaderStateText"), name)
self.assertIn(description, card.button.accessibleDescription())
if __name__ == "__main__":
unittest.main()