188 lines
6.8 KiB
TypeScript
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;
|
|
}
|
|
});
|
|
});
|