AnalyticsTestSimple.ts 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. /**
  2. * 简化版埋点功能测试脚本
  3. * 不依赖Cocos Creator组件,可以在控制台直接运行
  4. */
  5. import { Analytics } from './AnalyticsManager';
  6. import { MPLifecycle } from './MPLifecycleManager';
  7. export class AnalyticsTestSimple {
  8. private testResults: string[] = [];
  9. /**
  10. * 运行所有测试
  11. */
  12. public runAllTests(): void {
  13. this.testResults = [];
  14. console.log('[AnalyticsTest] 开始运行埋点测试...');
  15. // 测试基础埋点功能
  16. this.testBasicTracking();
  17. // 测试小程序生命周期事件
  18. this.testMPLifecycleEvents();
  19. // 测试场景加载事件
  20. this.testSceneLoadEvents();
  21. // 测试游戏进度事件
  22. this.testGameProgressEvents();
  23. // 显示测试结果
  24. this.showTestResults();
  25. }
  26. /**
  27. * 测试基础埋点功能
  28. */
  29. private testBasicTracking(): void {
  30. try {
  31. // 测试自定义事件
  32. Analytics.track('test_custom_event', {
  33. test_property: 'test_value',
  34. test_number: 123,
  35. test_boolean: true
  36. });
  37. this.addTestResult('✅ 基础埋点功能测试通过');
  38. } catch (error) {
  39. this.addTestResult('❌ 基础埋点功能测试失败: ' + error.message);
  40. }
  41. }
  42. /**
  43. * 测试小程序生命周期事件
  44. */
  45. private testMPLifecycleEvents(): void {
  46. try {
  47. // 测试启动事件
  48. Analytics.trackMPLaunch({
  49. scene: 1001,
  50. query: '{"test": "value"}',
  51. shareTicket: 'test_ticket'
  52. });
  53. // 测试显示事件
  54. Analytics.trackMPShow({
  55. scene: 1001,
  56. query: '{"test": "value"}'
  57. });
  58. // 测试隐藏事件
  59. Analytics.trackMPHide();
  60. this.addTestResult('✅ 小程序生命周期事件测试通过');
  61. } catch (error) {
  62. this.addTestResult('❌ 小程序生命周期事件测试失败: ' + error.message);
  63. }
  64. }
  65. /**
  66. * 测试场景加载事件
  67. */
  68. private testSceneLoadEvents(): void {
  69. try {
  70. // 测试场景加载开始
  71. Analytics.trackSceneLoadStart('TestScene');
  72. // 测试场景加载成功
  73. Analytics.trackSceneLoaded({
  74. scene_name: 'TestScene',
  75. load_time: 1500,
  76. success: true
  77. });
  78. // 测试场景加载失败
  79. Analytics.trackSceneLoaded({
  80. scene_name: 'FailedScene',
  81. load_time: 3000,
  82. success: false,
  83. error_msg: 'Scene not found'
  84. });
  85. // 测试场景卸载
  86. Analytics.trackSceneUnloaded('TestScene');
  87. this.addTestResult('✅ 场景加载事件测试通过');
  88. } catch (error) {
  89. this.addTestResult('❌ 场景加载事件测试失败: ' + error.message);
  90. }
  91. }
  92. /**
  93. * 测试游戏进度事件
  94. */
  95. private testGameProgressEvents(): void {
  96. try {
  97. // 测试完成关卡
  98. Analytics.trackCompleteSection({
  99. level: 5,
  100. score: 8500,
  101. time_spent: 120,
  102. result: 'success'
  103. });
  104. // 测试等级提升
  105. Analytics.trackUpdateLevel(4, 5);
  106. // 测试新手引导
  107. Analytics.trackTutorialStart();
  108. Analytics.trackTutorialFinish(300);
  109. this.addTestResult('✅ 游戏进度事件测试通过');
  110. } catch (error) {
  111. this.addTestResult('❌ 游戏进度事件测试失败: ' + error.message);
  112. }
  113. }
  114. /**
  115. * 测试小程序生命周期管理器
  116. */
  117. private testMPLifecycleManager(): void {
  118. try {
  119. // 测试手动触发显示事件
  120. MPLifecycle.triggerShow({
  121. scene: 1001,
  122. query: '{"manual": "test"}'
  123. });
  124. // 测试手动触发隐藏事件
  125. MPLifecycle.triggerHide();
  126. // 测试获取会话时长
  127. const sessionDuration = MPLifecycle.getSessionDuration();
  128. console.log('[AnalyticsTest] 当前会话时长:', sessionDuration);
  129. this.addTestResult('✅ 小程序生命周期管理器测试通过');
  130. } catch (error) {
  131. this.addTestResult('❌ 小程序生命周期管理器测试失败: ' + error.message);
  132. }
  133. }
  134. /**
  135. * 添加测试结果
  136. */
  137. private addTestResult(result: string): void {
  138. this.testResults.push(result);
  139. console.log('[AnalyticsTest]', result);
  140. }
  141. /**
  142. * 显示测试结果
  143. */
  144. private showTestResults(): void {
  145. const summary = this.testResults.join('\n');
  146. const passedCount = this.testResults.filter(r => r.indexOf('✅') !== -1).length;
  147. const failedCount = this.testResults.filter(r => r.indexOf('❌') !== -1).length;
  148. const finalStatus = `埋点测试完成\n通过: ${passedCount} 项\n失败: ${failedCount} 项\n\n${summary}`;
  149. console.log('[AnalyticsTest] 测试完成');
  150. console.log('[AnalyticsTest] 通过:', passedCount, '项');
  151. console.log('[AnalyticsTest] 失败:', failedCount, '项');
  152. console.log('[AnalyticsTest] 详细结果:\n', finalStatus);
  153. }
  154. /**
  155. * 单独测试某个功能(供外部调用)
  156. */
  157. public testSpecificFeature(featureName: string): void {
  158. switch (featureName) {
  159. case 'basic':
  160. this.testBasicTracking();
  161. break;
  162. case 'lifecycle':
  163. this.testMPLifecycleEvents();
  164. break;
  165. case 'scene':
  166. this.testSceneLoadEvents();
  167. break;
  168. case 'progress':
  169. this.testGameProgressEvents();
  170. break;
  171. case 'manager':
  172. this.testMPLifecycleManager();
  173. break;
  174. default:
  175. console.warn('[AnalyticsTest] 未知的测试功能:', featureName);
  176. }
  177. }
  178. }
  179. // 创建全局测试实例
  180. const testInstance = new AnalyticsTestSimple();
  181. // 导出测试工具函数,供控制台调用
  182. (window as any).testAnalytics = {
  183. // 快速测试所有功能
  184. runAll: () => {
  185. testInstance.runAllTests();
  186. },
  187. // 测试特定功能
  188. test: (feature: string) => {
  189. testInstance.testSpecificFeature(feature);
  190. },
  191. // 手动发送测试事件
  192. sendTestEvent: (eventName: string, properties: any = {}) => {
  193. Analytics.track(eventName, properties);
  194. },
  195. // 获取会话时长
  196. getSessionDuration: () => {
  197. return MPLifecycle.getSessionDuration();
  198. },
  199. // 初始化埋点系统
  200. init: () => {
  201. Analytics.init();
  202. MPLifecycle.init();
  203. console.log('[AnalyticsTest] 埋点系统初始化完成');
  204. }
  205. };