83 行
4.1 KiB
Python
83 行
4.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
测试鲜明轮播图系统 (Test Vivid Banner Carousel System)
|
|
验证首屏 4 张轮播图的鲜明度、专业业务实体感、无AI味、CSS通透遮罩以及全端结构完整性。
|
|
"""
|
|
|
|
import os
|
|
import re
|
|
import unittest
|
|
|
|
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 VividBannerCarouselTest(unittest.TestCase):
|
|
"""验证鲜明高质感轮播图组件"""
|
|
|
|
def test_01_banner_files_exist_and_non_empty(self):
|
|
"""1. 验证 4 张核心轮播图资源物理存在且大小合理"""
|
|
banners = ["banner_lead", "banner_craft", "banner_agent", "banner_matrix"]
|
|
for b in banners:
|
|
svg_file = os.path.join(BANNER_DIR, f"{b}.svg")
|
|
jpg_file = os.path.join(BANNER_DIR, f"{b}.jpg")
|
|
# 必须至少有一种高质感格式存在,且文件大小大于 2KB
|
|
exists = False
|
|
if os.path.exists(svg_file) and os.path.getsize(svg_file) > 2048:
|
|
exists = True
|
|
elif os.path.exists(jpg_file) and os.path.getsize(jpg_file) > 2048:
|
|
exists = True
|
|
self.assertTrue(exists, f"轮播图文件不存在或过小: {b}")
|
|
|
|
def test_02_css_gradient_mask_not_obscuring_right_visual(self):
|
|
"""2. 验证 CSS 渐变遮罩优化:右侧区域必须保持通透,严禁在 50% 处覆盖 >90% 重度白雾"""
|
|
with open(CSS_PATH, "r", encoding="utf-8") as f:
|
|
css_content = f.read()
|
|
|
|
# 检查 4 个 slide 主题
|
|
for i in range(1, 5):
|
|
theme_class = f".nhc-slide-theme-{i}"
|
|
self.assertIn(theme_class, css_content, f"CSS 中缺少主题定义: {theme_class}")
|
|
|
|
# 检查是否去除了原本在 50% 覆盖 0.92 白色的遮罩问题
|
|
# 原写法: rgba(255, 255, 255, 0.92) 50%
|
|
# 优化后右侧主体应通透,不再出现 50% 处 0.92 白
|
|
self.assertNotIn("rgba(255, 255, 255, 0.92) 50%", css_content,
|
|
"CSS 仍保留 50% 处 92% 重度白色遮罩,导致右侧鲜明视窗被严重冲淡泛白")
|
|
|
|
def test_03_banner_rich_content_and_vivid_colors(self):
|
|
"""3. 验证轮播图包含真实工业级软件要素与鲜明品牌色彩 (科技蓝 #2563EB, 辅助青 #06B6D4, 紫 #7C3AED)"""
|
|
svg_banners = {
|
|
"banner_lead": ["2563EB", "06B6D4", "QPS", "微服务"],
|
|
"banner_craft": ["2563EB", "06B6D4", "小程序", "API"],
|
|
"banner_agent": ["7C3AED", "2563EB", "RAG", "Agent"],
|
|
"banner_matrix": ["2563EB", "POS", "ERP", "SaaS"]
|
|
}
|
|
for b, expected_keywords in svg_banners.items():
|
|
svg_file = os.path.join(BANNER_DIR, f"{b}.svg")
|
|
if os.path.exists(svg_file):
|
|
with open(svg_file, "r", encoding="utf-8") as f:
|
|
content = f.read()
|
|
for kw in expected_keywords:
|
|
self.assertTrue(
|
|
kw.lower() in content.lower(),
|
|
f"轮播图 {b}.svg 缺少业务要素或鲜明特征词: {kw}"
|
|
)
|
|
|
|
def test_04_pc_and_mobile_template_integrity(self):
|
|
"""4. 验证 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}")
|
|
# 必须包含 4 个幻灯片标识
|
|
self.assertEqual(len(re.findall(r'nhc-slide-theme-\d', html)), 4, f"幻灯片数量不等于 4: {page_path}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|