import React from 'react' import { render } from '@testing-library/react' import HomePage from '../../src/pages/home/index' import ActivitySelectPage from '../../src/pages/select-activity/ActivitySelectPage' import ScheduleListPage from '../../src/pages/schedule-list/ScheduleListPage' // Mock Taro navigation jest.mock('@tarojs/taro', () => ({ useRouter: () => ({ params: {} }), navigateTo: jest.fn() })) // Mock React Query const mockUseQuery = jest.fn() jest.mock('@tanstack/react-query', () => ({ useQuery: (...args: any[]) => mockUseQuery(...args) })) // Mock API client jest.mock('../../src/api', () => ({ routeClient: { search: { $get: jest.fn() } } })) describe('样式合规性测试', () => { beforeEach(() => { mockUseQuery.mockReturnValue({ data: null, isLoading: false, error: null }) }) describe('设计系统类名验证', () => { test('首页使用正确的设计系统类名', () => { const { container } = render() // 验证主要颜色类名 expect(container.innerHTML).toMatch(/bg-gradient-to-r from-primary to-primary-dark/) expect(container.innerHTML).toMatch(/rounded-button/) expect(container.innerHTML).toMatch(/shadow-primary/) // 验证包车主题类名(在getVehicleTypeStyle函数中定义) expect(container.innerHTML).toMatch(/from-charter to-charter-light/) expect(container.innerHTML).toMatch(/shadow-charter/) // 验证圆角系统 expect(container.innerHTML).toMatch(/rounded-card/) expect(container.innerHTML).toMatch(/rounded-small/) expect(container.innerHTML).toMatch(/rounded-medium/) // 验证阴影系统 expect(container.innerHTML).toMatch(/shadow-light/) expect(container.innerHTML).toMatch(/shadow-medium/) expect(container.innerHTML).toMatch(/shadow-heavy/) }) test('活动选择页面使用正确的设计系统类名', () => { const { container } = render() // 验证头部渐变 expect(container.innerHTML).toMatch(/bg-gradient-to-r from-primary to-primary-dark/) // 验证去程活动区域 expect(container.innerHTML).toMatch(/from-primary to-primary-dark/) // 验证返程活动区域(包车主题) expect(container.innerHTML).toMatch(/from-charter-dark to-charter-bg/) expect(container.innerHTML).toMatch(/text-charter/) // 验证卡片样式 expect(container.innerHTML).toMatch(/rounded-card/) expect(container.innerHTML).toMatch(/p-card/) expect(container.innerHTML).toMatch(/shadow-light/) }) test('班次列表页面使用正确的设计系统类名', () => { const { container } = render() // 验证头部渐变 expect(container.innerHTML).toMatch(/bg-gradient-to-r from-primary to-primary-dark/) // 验证日期选择器 expect(container.innerHTML).toMatch(/border-primary/) expect(container.innerHTML).toMatch(/bg-primary\/10/) expect(container.innerHTML).toMatch(/text-primary/) // 验证包车卡片样式 expect(container.innerHTML).toMatch(/from-charter-dark to-charter-bg/) expect(container.innerHTML).toMatch(/border-charter/) expect(container.innerHTML).toMatch(/bg-charter\/20/) // 验证预订按钮 expect(container.innerHTML).toMatch(/shadow-primary/) expect(container.innerHTML).toMatch(/from-primary to-primary-dark/) expect(container.innerHTML).toMatch(/from-charter to-charter-light/) }) }) describe('包车主题切换测试', () => { test('包车出行方式使用正确的主题样式', () => { const { container } = render() // 验证包车主题类名存在(在getVehicleTypeStyle函数中定义) expect(container.innerHTML).toMatch(/from-charter to-charter-light/) expect(container.innerHTML).toMatch(/shadow-charter/) }) test('返程活动使用包车主题', () => { const { container } = render() // 验证返程活动区域使用包车主题 expect(container.innerHTML).toMatch(/from-charter-dark to-charter-bg/) expect(container.innerHTML).toMatch(/text-charter/) }) test('包车班次卡片使用特殊样式', () => { const { container } = render() // 验证包车卡片样式类名(在条件渲染中定义) expect(container.innerHTML).toMatch(/from-charter-dark to-charter-bg/) expect(container.innerHTML).toMatch(/border-charter/) expect(container.innerHTML).toMatch(/text-charter/) }) }) describe('设计系统颜色一致性', () => { test('主要颜色类名正确应用', () => { const { container } = render() // 验证主要颜色类名 const classNames = container.innerHTML // primary 颜色相关类名 expect(classNames).toMatch(/bg-primary/) expect(classNames).toMatch(/text-primary/) expect(classNames).toMatch(/from-primary/) expect(classNames).toMatch(/to-primary-dark/) // charter 颜色相关类名 expect(classNames).toMatch(/bg-charter/) expect(classNames).toMatch(/text-charter/) expect(classNames).toMatch(/from-charter/) expect(classNames).toMatch(/to-charter-light/) // 功能颜色类名 expect(classNames).toMatch(/bg-success/) expect(classNames).toMatch(/bg-warning/) expect(classNames).toMatch(/bg-error/) }) test('圆角系统一致性', () => { const { container } = render() const classNames = container.innerHTML // 验证圆角类名 expect(classNames).toMatch(/rounded-card/) expect(classNames).toMatch(/rounded-button/) expect(classNames).toMatch(/rounded-small/) expect(classNames).toMatch(/rounded-medium/) }) test('阴影系统一致性', () => { const { container } = render() const classNames = container.innerHTML // 验证阴影类名 expect(classNames).toMatch(/shadow-light/) expect(classNames).toMatch(/shadow-medium/) expect(classNames).toMatch(/shadow-heavy/) expect(classNames).toMatch(/shadow-primary/) expect(classNames).toMatch(/shadow-charter/) }) }) describe('间距系统验证', () => { test('间距类名正确应用', () => { const { container } = render() const classNames = container.innerHTML // 验证间距类名 expect(classNames).toMatch(/p-card/) expect(classNames).toMatch(/py-button/) }) }) })