60 行
3.0 KiB
Python
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()
|