/** * 简化版埋点功能测试脚本 * 不依赖Cocos Creator组件,可以在控制台直接运行 */ import { Analytics } from './AnalyticsManager'; import { MPLifecycle } from './MPLifecycleManager'; export class AnalyticsTestSimple { private testResults: string[] = []; /** * 运行所有测试 */ public runAllTests(): void { this.testResults = []; console.log('[AnalyticsTest] 开始运行埋点测试...'); // 测试基础埋点功能 this.testBasicTracking(); // 测试小程序生命周期事件 this.testMPLifecycleEvents(); // 测试场景加载事件 this.testSceneLoadEvents(); // 测试游戏进度事件 this.testGameProgressEvents(); // 显示测试结果 this.showTestResults(); } /** * 测试基础埋点功能 */ private testBasicTracking(): void { try { // 测试自定义事件 Analytics.track('test_custom_event', { test_property: 'test_value', test_number: 123, test_boolean: true }); this.addTestResult('✅ 基础埋点功能测试通过'); } catch (error) { this.addTestResult('❌ 基础埋点功能测试失败: ' + error.message); } } /** * 测试小程序生命周期事件 */ private testMPLifecycleEvents(): void { try { // 测试启动事件 Analytics.trackMPLaunch({ scene: 1001, query: '{"test": "value"}', shareTicket: 'test_ticket' }); // 测试显示事件 Analytics.trackMPShow({ scene: 1001, query: '{"test": "value"}' }); // 测试隐藏事件 Analytics.trackMPHide(); this.addTestResult('✅ 小程序生命周期事件测试通过'); } catch (error) { this.addTestResult('❌ 小程序生命周期事件测试失败: ' + error.message); } } /** * 测试场景加载事件 */ private testSceneLoadEvents(): void { try { // 测试场景加载开始 Analytics.trackSceneLoadStart('TestScene'); // 测试场景加载成功 Analytics.trackSceneLoaded({ scene_name: 'TestScene', load_time: 1500, success: true }); // 测试场景加载失败 Analytics.trackSceneLoaded({ scene_name: 'FailedScene', load_time: 3000, success: false, error_msg: 'Scene not found' }); // 测试场景卸载 Analytics.trackSceneUnloaded('TestScene'); this.addTestResult('✅ 场景加载事件测试通过'); } catch (error) { this.addTestResult('❌ 场景加载事件测试失败: ' + error.message); } } /** * 测试游戏进度事件 */ private testGameProgressEvents(): void { try { // 测试完成关卡 Analytics.trackCompleteSection({ level: 5, score: 8500, time_spent: 120, result: 'success' }); // 测试等级提升 Analytics.trackUpdateLevel(4, 5); // 测试新手引导 Analytics.trackTutorialStart(); Analytics.trackTutorialFinish(300); this.addTestResult('✅ 游戏进度事件测试通过'); } catch (error) { this.addTestResult('❌ 游戏进度事件测试失败: ' + error.message); } } /** * 测试小程序生命周期管理器 */ private testMPLifecycleManager(): void { try { // 测试手动触发显示事件 MPLifecycle.triggerShow({ scene: 1001, query: '{"manual": "test"}' }); // 测试手动触发隐藏事件 MPLifecycle.triggerHide(); // 测试获取会话时长 const sessionDuration = MPLifecycle.getSessionDuration(); console.log('[AnalyticsTest] 当前会话时长:', sessionDuration); this.addTestResult('✅ 小程序生命周期管理器测试通过'); } catch (error) { this.addTestResult('❌ 小程序生命周期管理器测试失败: ' + error.message); } } /** * 添加测试结果 */ private addTestResult(result: string): void { this.testResults.push(result); console.log('[AnalyticsTest]', result); } /** * 显示测试结果 */ private showTestResults(): void { const summary = this.testResults.join('\n'); const passedCount = this.testResults.filter(r => r.indexOf('✅') !== -1).length; const failedCount = this.testResults.filter(r => r.indexOf('❌') !== -1).length; const finalStatus = `埋点测试完成\n通过: ${passedCount} 项\n失败: ${failedCount} 项\n\n${summary}`; console.log('[AnalyticsTest] 测试完成'); console.log('[AnalyticsTest] 通过:', passedCount, '项'); console.log('[AnalyticsTest] 失败:', failedCount, '项'); console.log('[AnalyticsTest] 详细结果:\n', finalStatus); } /** * 单独测试某个功能(供外部调用) */ public testSpecificFeature(featureName: string): void { switch (featureName) { case 'basic': this.testBasicTracking(); break; case 'lifecycle': this.testMPLifecycleEvents(); break; case 'scene': this.testSceneLoadEvents(); break; case 'progress': this.testGameProgressEvents(); break; case 'manager': this.testMPLifecycleManager(); break; default: console.warn('[AnalyticsTest] 未知的测试功能:', featureName); } } } // 创建全局测试实例 const testInstance = new AnalyticsTestSimple(); // 导出测试工具函数,供控制台调用 (window as any).testAnalytics = { // 快速测试所有功能 runAll: () => { testInstance.runAllTests(); }, // 测试特定功能 test: (feature: string) => { testInstance.testSpecificFeature(feature); }, // 手动发送测试事件 sendTestEvent: (eventName: string, properties: any = {}) => { Analytics.track(eventName, properties); }, // 获取会话时长 getSessionDuration: () => { return MPLifecycle.getSessionDuration(); }, // 初始化埋点系统 init: () => { Analytics.init(); MPLifecycle.init(); console.log('[AnalyticsTest] 埋点系统初始化完成'); } };