import { HubShowDriver, createHubShowDriver } from '../../drivers/hubshow-driver'; import { waitForLoading, ensureOnSecurityPage, enterDailyReport, logPageSource } from './hubshow-setup.helper'; import { TestReporter } from '../../utils/test-reporter'; import { sleep } from '../../utils/common'; describe('AI Hub Show — 家居日报 (Smart/Daily Report)', () => { let driver: HubShowDriver; let reporter: TestReporter; beforeAll(async () => { driver = createHubShowDriver(); reporter = new TestReporter('hubshow_report'); await driver.createSession(); await sleep(3000); await waitForLoading(driver); }); afterAll(async () => { reporter.printSummary(); await driver.destroySession(); }); beforeEach(async () => { try { const src = await driver.getSource(); if (!src || src.includes('error')) { await driver.destroySession(); await sleep(2000); await driver.createSession(); await sleep(3000); } } catch { await driver.createSession(); await sleep(3000); } }); // #388287 it('进入家居日报页面', async () => { const start = Date.now(); try { await ensureOnSecurityPage(driver); await enterDailyReport(driver); await sleep(2000); const source = await driver.getSource(); const hasReportPage = source.includes('日报') || source.includes('report') || source.includes('Daily'); expect(hasReportPage).toBe(true); reporter.record({ name: '进入家居日报页面', status: 'PASS', duration: Date.now() - start }); } catch (e: any) { const screenshot = await driver.screenshot().catch(() => ''); reporter.record({ name: '进入家居日报页面', status: 'FAIL', duration: Date.now() - start, error: e.message, screenshot }); throw e; } }); // #388288 it('家居日报日期显示', async () => { const start = Date.now(); try { await ensureOnSecurityPage(driver); await enterDailyReport(driver); await sleep(2000); const source = await driver.getSource(); // Verify date display is present (e.g., month/day or date pattern) const hasDate = source.includes('月') || source.includes('日') || /\d{1,2}[\/-]\d{1,2}/.test(source); expect(hasDate).toBe(true); reporter.record({ name: '家居日报日期显示', status: 'PASS', duration: Date.now() - start }); } catch (e: any) { const screenshot = await driver.screenshot().catch(() => ''); reporter.record({ name: '家居日报日期显示', status: 'FAIL', duration: Date.now() - start, error: e.message, screenshot }); throw e; } }); // #388289 it('家居日报事件统计', async () => { const start = Date.now(); try { await ensureOnSecurityPage(driver); await enterDailyReport(driver); await sleep(2000); const source = await driver.getSource(); // Verify event count/statistics section is present const hasEventStats = source.includes('事件') || source.includes('统计') || source.includes('次'); expect(hasEventStats).toBe(true); reporter.record({ name: '家居日报事件统计', status: 'PASS', duration: Date.now() - start }); } catch (e: any) { const screenshot = await driver.screenshot().catch(() => ''); reporter.record({ name: '家居日报事件统计', status: 'FAIL', duration: Date.now() - start, error: e.message, screenshot }); throw e; } }); // #388290 it('家居日报设备运行统计', async () => { const start = Date.now(); try { await ensureOnSecurityPage(driver); await enterDailyReport(driver); await sleep(2000); const source = await driver.getSource(); // Verify device running stats section const hasDeviceStats = source.includes('设备') || source.includes('运行') || source.includes('device'); expect(hasDeviceStats).toBe(true); reporter.record({ name: '家居日报设备运行统计', status: 'PASS', duration: Date.now() - start }); } catch (e: any) { const screenshot = await driver.screenshot().catch(() => ''); reporter.record({ name: '家居日报设备运行统计', status: 'FAIL', duration: Date.now() - start, error: e.message, screenshot }); throw e; } }); // #388291 it('家居日报人物统计', async () => { const start = Date.now(); try { await ensureOnSecurityPage(driver); await enterDailyReport(driver); await sleep(2000); const source = await driver.getSource(); // Verify person detection stats section const hasPersonStats = source.includes('人物') || source.includes('人') || source.includes('person'); expect(hasPersonStats).toBe(true); reporter.record({ name: '家居日报人物统计', status: 'PASS', duration: Date.now() - start }); } catch (e: any) { const screenshot = await driver.screenshot().catch(() => ''); reporter.record({ name: '家居日报人物统计', status: 'FAIL', duration: Date.now() - start, error: e.message, screenshot }); throw e; } }); // #388292 it('家居日报分享功能', async () => { const start = Date.now(); try { await ensureOnSecurityPage(driver); await enterDailyReport(driver); await sleep(2000); const source = await driver.getSource(); // Verify share button/element exists const hasShare = source.includes('分享') || source.includes('share') || source.includes('Share'); expect(hasShare).toBe(true); reporter.record({ name: '家居日报分享功能', status: 'PASS', duration: Date.now() - start }); } catch (e: any) { const screenshot = await driver.screenshot().catch(() => ''); reporter.record({ name: '家居日报分享功能', status: 'FAIL', duration: Date.now() - start, error: e.message, screenshot }); throw e; } }); // #388293 it('家居日报返回安防首页', async () => { const start = Date.now(); try { await ensureOnSecurityPage(driver); await enterDailyReport(driver); await sleep(2000); // Press back to return to security page await driver.pressBack(); await sleep(2000); const source = await driver.getSource(); // Verify we are back on security/event page const hasSecurityPage = source.includes('安防') || source.includes('事件') || source.includes('security'); expect(hasSecurityPage).toBe(true); reporter.record({ name: '家居日报返回安防首页', status: 'PASS', duration: Date.now() - start }); } catch (e: any) { const screenshot = await driver.screenshot().catch(() => ''); reporter.record({ name: '家居日报返回安防首页', status: 'FAIL', duration: Date.now() - start, error: e.message, screenshot }); throw e; } }); });