AI_UIAutomation/tests/aihubshow/hubshow_report.test.ts

188 lines
6.8 KiB
TypeScript

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;
}
});
});