文件
nahaichuan/tests/test_vivid_banners.py

60 行
3.0 KiB
Python

# -*- coding: utf-8 -*-
"""
测试高端大气轮播图主视觉系统 (Test Premium Hero Visual Banners)
验证首屏 4 张轮播图的高清画质、纯净无杂乱文字、高端科技美学、CSS 通透羽化及响应式适配。
"""
import os
import re
import unittest
from PIL import Image
ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
BANNER_DIR = os.path.join(ROOT_DIR, "public", "assets", "addons", "official", "images", "banners")
CSS_PATH = os.path.join(ROOT_DIR, "public", "assets", "addons", "official", "css", "modern_nhc.css")
PC_HOME_PATH = os.path.join(ROOT_DIR, "addons", "official", "view", "web", "official_home", "index.html")
M_HOME_PATH = os.path.join(ROOT_DIR, "addons", "official", "view", "web", "official_home", "index_e.html")
class PremiumHeroBannerTest(unittest.TestCase):
"""验证高端大气轮播图主视觉"""
def test_01_banner_images_high_quality(self):
"""1. 验证 4 张核心轮播大图物理存在、分辨率高、画质饱满"""
banners = ["banner_lead.jpg", "banner_craft.jpg", "banner_agent.jpg", "banner_matrix.jpg"]
for b in banners:
img_path = os.path.join(BANNER_DIR, b)
self.assertTrue(os.path.exists(img_path), f"轮播图不存在: {b}")
file_size = os.path.getsize(img_path)
self.assertGreater(file_size, 200 * 1024, f"轮播图画质过低或文件过小: {b} ({file_size} bytes)")
with Image.open(img_path) as im:
width, height = im.size
self.assertGreaterEqual(width, 1280, f"宽度不足高清要求: {b}")
self.assertGreaterEqual(height, 700, f"高度不足首屏要求: {b}")
def test_02_css_uses_clean_banners_and_clear_masks(self):
"""2. 验证 CSS 使用全新大图,且羽化渐变遮罩在右侧(>52%)完全通透无遮挡"""
with open(CSS_PATH, "r", encoding="utf-8") as f:
css_content = f.read()
for b in ["banner_lead.jpg", "banner_craft.jpg", "banner_agent.jpg", "banner_matrix.jpg"]:
self.assertIn(b, css_content, f"CSS 中未正确引用大图: {b}")
# 检查是否去除了原本在 50% 覆盖 0.92 白色的遮罩问题
self.assertNotIn("rgba(255, 255, 255, 0.92) 50%", css_content,
"CSS 仍保留 50% 处 92% 重度白色遮罩")
def test_03_pc_and_mobile_template_integrity(self):
"""3. 验证 PC 与移动端模板幻灯片数量均为 4,包含对应的主题类名"""
for page_path in [PC_HOME_PATH, M_HOME_PATH]:
with open(page_path, "r", encoding="utf-8") as f:
html = f.read()
for i in range(1, 5):
self.assertIn(f"nhc-slide-theme-{i}", html, f"页面缺少主题类 nhc-slide-theme-{i}: {page_path}")
self.assertEqual(len(re.findall(r'nhc-slide-theme-\d', html)), 4, f"幻灯片数量不等于 4: {page_path}")
if __name__ == "__main__":
unittest.main()