const fs = require('fs') const path = require('path') describe('home page compatibility', () => { test('avoids fragile WXSS layout features for the native miniprogram renderer', () => { const wxss = fs.readFileSync(path.join(process.cwd(), 'pages/home/index.wxss'), 'utf8') expect(wxss).not.toContain('display: grid') expect(wxss).not.toContain('width: fit-content') expect(wxss).not.toContain('gap:') }) test('renders existing sections and the new wellness/classics blocks with compatible layouts', () => { const wxml = fs.readFileSync(path.join(process.cwd(), 'pages/home/index.wxml'), 'utf8') const wxss = fs.readFileSync(path.join(process.cwd(), 'pages/home/index.wxss'), 'utf8') expect(wxml).not.toContain('quick-links') expect(wxml).not.toContain('floating-actions') expect(wxml).not.toContain('home-page__corner') expect(wxml).not.toContain('home-page__header') expect(wxml).toContain('{{wellnessTitle}}') expect(wxml).toContain('{{classicsTitle}}') expect(wxml).toContain('{{classicsActionText}}') expect(wxml).toContain('bindtap="handleSearchTap"') expect(wxml).toContain('bindtap="handleEncyclopediaTap"') expect(wxml).toContain('bindtap="handleToolTap"') expect(wxml).toContain('bindtap="handleWellnessTap"') expect(wxml).toContain('bindtap="handleClassicActionTap"') expect(wxml).toContain('bindtap="handleClassicTap"') expect(wxml).toContain('feature-grid feature-grid--three') expect(wxml.match(/feature-grid feature-grid--four/g)).toHaveLength(3) expect(wxml.match(/feature-grid feature-grid--three/g)).toHaveLength(1) expect(wxml).toContain('section-card__header') expect(wxml).toContain('feature-card__book') expect(wxss).toContain('.feature-grid--four .feature-card') expect(wxss).toContain('.feature-grid--three .feature-grid__item') expect(wxss).toContain('.section-card__header') expect(wxss).toContain('.section-card__action') expect(wxss).toContain('.feature-card__book') expect(wxss).not.toContain('.home-page__corner') expect(wxss).not.toContain('.home-page__header') expect(wxss).toContain('padding: 12rpx 18rpx 36rpx;') expect(wxss).toContain('padding: 24rpx 18rpx 16rpx;') expect(wxss).toContain('font-size: 60rpx;') expect(wxss).toContain('font-size: 42rpx;') expect(wxss).toContain('min-height: 152rpx;') }) test('renders the portal section without forbidden grid or gap styles', () => { const wxml = fs.readFileSync(path.join(process.cwd(), 'pages/home/index.wxml'), 'utf8') const wxss = fs.readFileSync(path.join(process.cwd(), 'pages/home/index.wxss'), 'utf8') expect(wxml).toContain('{{portalTitle}}') expect(wxml).toContain('portal-grid') expect(wxml).toContain('bindtap="handlePortalTap"') expect(wxss).toContain('.portal-grid') expect(wxss).toContain('.portal-card') expect(wxss).not.toContain('display: grid') expect(wxss).not.toContain('gap:') }) test('renders encyclopedia section before the learning portal section', () => { const wxml = fs.readFileSync(path.join(process.cwd(), 'pages/home/index.wxml'), 'utf8') const encyclopediaIndex = wxml.indexOf('{{encyclopediaTitle}}') const portalIndex = wxml.indexOf('{{portalTitle}}') expect(encyclopediaIndex).toBeGreaterThan(-1) expect(portalIndex).toBeGreaterThan(-1) expect(encyclopediaIndex).toBeLessThan(portalIndex) }) })