@cqa-lib/cqa-ui 1.1.177 → 1.1.178

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/esm2020/lib/execution-screen/ai-action-step/ai-action-step.component.mjs +23 -7
  2. package/esm2020/lib/execution-screen/ai-agent-step/ai-agent-step.component.mjs +23 -8
  3. package/esm2020/lib/execution-screen/api-step/api-step.component.mjs +24 -7
  4. package/esm2020/lib/execution-screen/base-step.component.mjs +12 -1
  5. package/esm2020/lib/execution-screen/basic-step/basic-step.component.mjs +25 -8
  6. package/esm2020/lib/execution-screen/condition-step/condition-step.component.mjs +25 -8
  7. package/esm2020/lib/execution-screen/db-verification-step/db-verification-step.component.mjs +28 -11
  8. package/esm2020/lib/execution-screen/document-verification-step/document-verification-step.component.mjs +22 -4
  9. package/esm2020/lib/execution-screen/execution-step.models.mjs +1 -1
  10. package/esm2020/lib/execution-screen/file-download-step/file-download-step.component.mjs +23 -5
  11. package/esm2020/lib/execution-screen/loop-step/loop-step.component.mjs +26 -9
  12. package/esm2020/lib/execution-screen/step-group/step-group.component.mjs +22 -5
  13. package/esm2020/lib/execution-screen/step-renderer/step-renderer.component.mjs +6 -2
  14. package/esm2020/lib/simulator/simulator.component.mjs +1202 -63
  15. package/fesm2015/cqa-lib-cqa-ui.mjs +1531 -189
  16. package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
  17. package/fesm2020/cqa-lib-cqa-ui.mjs +1482 -178
  18. package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
  19. package/lib/execution-screen/ai-action-step/ai-action-step.component.d.ts +3 -1
  20. package/lib/execution-screen/ai-agent-step/ai-agent-step.component.d.ts +3 -1
  21. package/lib/execution-screen/api-step/api-step.component.d.ts +3 -1
  22. package/lib/execution-screen/base-step.component.d.ts +1 -0
  23. package/lib/execution-screen/basic-step/basic-step.component.d.ts +3 -1
  24. package/lib/execution-screen/condition-step/condition-step.component.d.ts +3 -1
  25. package/lib/execution-screen/db-verification-step/db-verification-step.component.d.ts +3 -1
  26. package/lib/execution-screen/document-verification-step/document-verification-step.component.d.ts +4 -1
  27. package/lib/execution-screen/execution-step.models.d.ts +4 -0
  28. package/lib/execution-screen/file-download-step/file-download-step.component.d.ts +4 -1
  29. package/lib/execution-screen/loop-step/loop-step.component.d.ts +3 -1
  30. package/lib/execution-screen/step-group/step-group.component.d.ts +3 -1
  31. package/lib/execution-screen/step-renderer/step-renderer.component.d.ts +2 -1
  32. package/lib/simulator/simulator.component.d.ts +122 -6
  33. package/package.json +1 -1
  34. package/styles.css +1 -1
@@ -30,6 +30,7 @@ export declare class AIActionStepComponent extends BaseStepComponent implements
30
30
  };
31
31
  };
32
32
  onStepClickHandler?: (step: ExecutionStepConfig, event?: Event) => void;
33
+ jumpToTimestampHandler?: (timestamp: number, testStepId?: number | string) => void;
33
34
  isLive: boolean;
34
35
  step?: any;
35
36
  showFailedStepDetails: boolean;
@@ -56,6 +57,7 @@ export declare class AIActionStepComponent extends BaseStepComponent implements
56
57
  get showViewMoreButton(): boolean;
57
58
  toggleHeader(event?: Event): void;
58
59
  getActionBadgeText(): string;
60
+ onJumpToTimestamp(event: Event): void;
59
61
  static ɵfac: i0.ɵɵFactoryDeclaration<AIActionStepComponent, never>;
60
- static ɵcmp: i0.ɵɵComponentDeclaration<AIActionStepComponent, "cqa-ai-action-step", never, { "id": "id"; "testStepResultId": "testStepResultId"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "actionCount": "actionCount"; "actions": "actions"; "failureDetails": "failureDetails"; "reasoning": "reasoning"; "confidence": "confidence"; "stepDeleted": "stepDeleted"; "isUploadingBaseline": "isUploadingBaseline"; "isMakingCurrentBaseline": "isMakingCurrentBaseline"; "selfHealAnalysis": "selfHealAnalysis"; "getSelfHealLoadingStatesHandler": "getSelfHealLoadingStatesHandler"; "onStepClickHandler": "onStepClickHandler"; "isLive": "isLive"; "step": "step"; }, { "makeCurrentBaseline": "makeCurrentBaseline"; "uploadBaseline": "uploadBaseline"; "analyze": "analyze"; "viewFullLogs": "viewFullLogs"; "selfHealAction": "selfHealAction"; }, never, never>;
62
+ static ɵcmp: i0.ɵɵComponentDeclaration<AIActionStepComponent, "cqa-ai-action-step", never, { "id": "id"; "testStepResultId": "testStepResultId"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "actionCount": "actionCount"; "actions": "actions"; "failureDetails": "failureDetails"; "reasoning": "reasoning"; "confidence": "confidence"; "stepDeleted": "stepDeleted"; "isUploadingBaseline": "isUploadingBaseline"; "isMakingCurrentBaseline": "isMakingCurrentBaseline"; "selfHealAnalysis": "selfHealAnalysis"; "getSelfHealLoadingStatesHandler": "getSelfHealLoadingStatesHandler"; "onStepClickHandler": "onStepClickHandler"; "jumpToTimestampHandler": "jumpToTimestampHandler"; "isLive": "isLive"; "step": "step"; }, { "makeCurrentBaseline": "makeCurrentBaseline"; "uploadBaseline": "uploadBaseline"; "analyze": "analyze"; "viewFullLogs": "viewFullLogs"; "selfHealAction": "selfHealAction"; }, never, never>;
61
63
  }
@@ -33,6 +33,7 @@ export declare class AIAgentStepComponent extends BaseStepComponent implements O
33
33
  };
34
34
  };
35
35
  onStepClickHandler?: (step: ExecutionStepConfig, event?: Event) => void;
36
+ jumpToTimestampHandler?: (timestamp: number, testStepId?: number | string) => void;
36
37
  isLive: boolean;
37
38
  step?: any;
38
39
  showFailedStepDetails: boolean;
@@ -63,6 +64,7 @@ export declare class AIAgentStepComponent extends BaseStepComponent implements O
63
64
  trackByActionId(index: number, action: AIAgentAction): string;
64
65
  get showViewMoreButton(): boolean;
65
66
  toggleHeader(event?: Event): void;
67
+ onJumpToTimestamp(event: Event): void;
66
68
  static ɵfac: i0.ɵɵFactoryDeclaration<AIAgentStepComponent, never>;
67
- static ɵcmp: i0.ɵɵComponentDeclaration<AIAgentStepComponent, "cqa-ai-agent-step", never, { "id": "id"; "testStepResultId": "testStepResultId"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "prompt": "prompt"; "optimizedRun": "optimizedRun"; "actionCount": "actionCount"; "actions": "actions"; "selectedTabInput": "selectedTabInput"; "failureDetails": "failureDetails"; "reasoning": "reasoning"; "confidence": "confidence"; "stepDeleted": "stepDeleted"; "isUploadingBaseline": "isUploadingBaseline"; "isMakingCurrentBaseline": "isMakingCurrentBaseline"; "selfHealAnalysis": "selfHealAnalysis"; "getSelfHealLoadingStatesHandler": "getSelfHealLoadingStatesHandler"; "onStepClickHandler": "onStepClickHandler"; "isLive": "isLive"; "step": "step"; }, { "makeCurrentBaseline": "makeCurrentBaseline"; "uploadBaseline": "uploadBaseline"; "analyze": "analyze"; "viewFullLogs": "viewFullLogs"; "selfHealAction": "selfHealAction"; }, never, never>;
69
+ static ɵcmp: i0.ɵɵComponentDeclaration<AIAgentStepComponent, "cqa-ai-agent-step", never, { "id": "id"; "testStepResultId": "testStepResultId"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "prompt": "prompt"; "optimizedRun": "optimizedRun"; "actionCount": "actionCount"; "actions": "actions"; "selectedTabInput": "selectedTabInput"; "failureDetails": "failureDetails"; "reasoning": "reasoning"; "confidence": "confidence"; "stepDeleted": "stepDeleted"; "isUploadingBaseline": "isUploadingBaseline"; "isMakingCurrentBaseline": "isMakingCurrentBaseline"; "selfHealAnalysis": "selfHealAnalysis"; "getSelfHealLoadingStatesHandler": "getSelfHealLoadingStatesHandler"; "onStepClickHandler": "onStepClickHandler"; "jumpToTimestampHandler": "jumpToTimestampHandler"; "isLive": "isLive"; "step": "step"; }, { "makeCurrentBaseline": "makeCurrentBaseline"; "uploadBaseline": "uploadBaseline"; "analyze": "analyze"; "viewFullLogs": "viewFullLogs"; "selfHealAction": "selfHealAction"; }, never, never>;
68
70
  }
@@ -43,6 +43,7 @@ export declare class ApiStepComponent extends BaseStepComponent implements OnIni
43
43
  path: string;
44
44
  source: 'requestBody' | 'responseBody' | 'requestHeaders' | 'responseHeaders';
45
45
  }) => void;
46
+ jumpToTimestampHandler?: (timestamp: number, testStepId?: number | string) => void;
46
47
  step?: any;
47
48
  makeCurrentBaseline: EventEmitter<makeCurrentBaselineEvent>;
48
49
  uploadBaseline: EventEmitter<uploadBaselineEvent>;
@@ -102,6 +103,7 @@ export declare class ApiStepComponent extends BaseStepComponent implements OnIni
102
103
  get hasSubSteps(): boolean;
103
104
  private updateConfig;
104
105
  ngOnDestroy(): void;
106
+ onJumpToTimestamp(event: Event): void;
105
107
  static ɵfac: i0.ɵɵFactoryDeclaration<ApiStepComponent, never>;
106
- static ɵcmp: i0.ɵɵComponentDeclaration<ApiStepComponent, "cqa-api-step", never, { "id": "id"; "testStepResultId": "testStepResultId"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "method": "method"; "endpoint": "endpoint"; "statusCode": "statusCode"; "responseTime": "responseTime"; "requestBody": "requestBody"; "responseBody": "responseBody"; "requestHeaders": "requestHeaders"; "responseHeaders": "responseHeaders"; "assertions": "assertions"; "initialActions": "initialActions"; "failureDetails": "failureDetails"; "reasoning": "reasoning"; "confidence": "confidence"; "stepDeleted": "stepDeleted"; "isUploadingBaseline": "isUploadingBaseline"; "isMakingCurrentBaseline": "isMakingCurrentBaseline"; "isLive": "isLive"; "selfHealAnalysis": "selfHealAnalysis"; "getSelfHealLoadingStatesHandler": "getSelfHealLoadingStatesHandler"; "onStepClickHandler": "onStepClickHandler"; "onJsonPathCopiedHandler": "onJsonPathCopiedHandler"; "step": "step"; }, { "makeCurrentBaseline": "makeCurrentBaseline"; "uploadBaseline": "uploadBaseline"; "analyze": "analyze"; "viewFullLogs": "viewFullLogs"; "selfHealAction": "selfHealAction"; "jsonPathCopied": "jsonPathCopied"; }, never, never>;
108
+ static ɵcmp: i0.ɵɵComponentDeclaration<ApiStepComponent, "cqa-api-step", never, { "id": "id"; "testStepResultId": "testStepResultId"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "method": "method"; "endpoint": "endpoint"; "statusCode": "statusCode"; "responseTime": "responseTime"; "requestBody": "requestBody"; "responseBody": "responseBody"; "requestHeaders": "requestHeaders"; "responseHeaders": "responseHeaders"; "assertions": "assertions"; "initialActions": "initialActions"; "failureDetails": "failureDetails"; "reasoning": "reasoning"; "confidence": "confidence"; "stepDeleted": "stepDeleted"; "isUploadingBaseline": "isUploadingBaseline"; "isMakingCurrentBaseline": "isMakingCurrentBaseline"; "isLive": "isLive"; "selfHealAnalysis": "selfHealAnalysis"; "getSelfHealLoadingStatesHandler": "getSelfHealLoadingStatesHandler"; "onStepClickHandler": "onStepClickHandler"; "onJsonPathCopiedHandler": "onJsonPathCopiedHandler"; "jumpToTimestampHandler": "jumpToTimestampHandler"; "step": "step"; }, { "makeCurrentBaseline": "makeCurrentBaseline"; "uploadBaseline": "uploadBaseline"; "analyze": "analyze"; "viewFullLogs": "viewFullLogs"; "selfHealAction": "selfHealAction"; "jsonPathCopied": "jsonPathCopied"; }, never, never>;
107
109
  }
@@ -15,6 +15,7 @@ export declare abstract class BaseStepComponent implements OnInit {
15
15
  getStatusColorClass(status: StepStatus): string;
16
16
  getStatusBgColorClass(status: StepStatus): string;
17
17
  formatDuration(seconds: number): string;
18
+ formatDurationClock(milliseconds: number): string;
18
19
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseStepComponent, never>;
19
20
  static ɵcmp: i0.ɵɵComponentDeclaration<BaseStepComponent, "cqa-base-step", never, { "config": "config"; }, { "toggleExpanded": "toggleExpanded"; }, never, never>;
20
21
  }
@@ -70,6 +70,7 @@ export declare class BasicStepComponent extends BaseStepComponent implements OnI
70
70
  text: string;
71
71
  testStepResultId: string;
72
72
  }) => void;
73
+ jumpToTimestampHandler?: (timestamp: number, testStepId?: number | string) => void;
73
74
  downloadingStepId: string | null;
74
75
  step?: any;
75
76
  makeCurrentBaseline: EventEmitter<makeCurrentBaselineEvent>;
@@ -95,6 +96,7 @@ export declare class BasicStepComponent extends BaseStepComponent implements OnI
95
96
  markStepLoaded(step: ExecutionStepConfig): void;
96
97
  toggleHeader(event?: Event): void;
97
98
  isStepLoading(): boolean;
99
+ onJumpToTimestamp(event: Event): void;
98
100
  static ɵfac: i0.ɵɵFactoryDeclaration<BasicStepComponent, never>;
99
- static ɵcmp: i0.ɵɵComponentDeclaration<BasicStepComponent, "cqa-basic-step", never, { "id": "id"; "testStepResultId": "testStepResultId"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "subSteps": "subSteps"; "selfHealAnalysis": "selfHealAnalysis"; "selfHealed": "selfHealed"; "selfHealDuration": "selfHealDuration"; "failureDetails": "failureDetails"; "reasoning": "reasoning"; "confidence": "confidence"; "stepDeleted": "stepDeleted"; "isUploadingBaseline": "isUploadingBaseline"; "isMakingCurrentBaseline": "isMakingCurrentBaseline"; "isLive": "isLive"; "nestedSteps": "nestedSteps"; "hasChild": "hasChild"; "isLoading": "isLoading"; "onExpandHandler": "onExpandHandler"; "getConditionBranchesHandler": "getConditionBranchesHandler"; "onConditionBranchClickHandler": "onConditionBranchClickHandler"; "isStepLoadingHandler": "isStepLoadingHandler"; "isStepExpandedHandler": "isStepExpandedHandler"; "convertMsToSecondsHandler": "convertMsToSecondsHandler"; "formatFailureDetailsHandler": "formatFailureDetailsHandler"; "getSelfHealAnalysisHandler": "getSelfHealAnalysisHandler"; "onMakeCurrentBaselineHandler": "onMakeCurrentBaselineHandler"; "onUploadBaselineHandler": "onUploadBaselineHandler"; "onAnalyzeHandler": "onAnalyzeHandler"; "onViewFullLogsHandler": "onViewFullLogsHandler"; "onSelfHealActionHandler": "onSelfHealActionHandler"; "getSelfHealLoadingStatesHandler": "getSelfHealLoadingStatesHandler"; "getLoopIterationsHandler": "getLoopIterationsHandler"; "getApiAssertionsHandler": "getApiAssertionsHandler"; "formatActionsHandler": "formatActionsHandler"; "onViewAllIterationsHandler": "onViewAllIterationsHandler"; "onStepClickHandler": "onStepClickHandler"; "onJsonPathCopiedHandler": "onJsonPathCopiedHandler"; "onDownloadHandler": "onDownloadHandler"; "onFilePathCopiedHandler": "onFilePathCopiedHandler"; "onTextCopiedHandler": "onTextCopiedHandler"; "downloadingStepId": "downloadingStepId"; "step": "step"; }, { "makeCurrentBaseline": "makeCurrentBaseline"; "uploadBaseline": "uploadBaseline"; "analyze": "analyze"; "viewFullLogs": "viewFullLogs"; "selfHealAction": "selfHealAction"; }, never, never>;
101
+ static ɵcmp: i0.ɵɵComponentDeclaration<BasicStepComponent, "cqa-basic-step", never, { "id": "id"; "testStepResultId": "testStepResultId"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "subSteps": "subSteps"; "selfHealAnalysis": "selfHealAnalysis"; "selfHealed": "selfHealed"; "selfHealDuration": "selfHealDuration"; "failureDetails": "failureDetails"; "reasoning": "reasoning"; "confidence": "confidence"; "stepDeleted": "stepDeleted"; "isUploadingBaseline": "isUploadingBaseline"; "isMakingCurrentBaseline": "isMakingCurrentBaseline"; "isLive": "isLive"; "nestedSteps": "nestedSteps"; "hasChild": "hasChild"; "isLoading": "isLoading"; "onExpandHandler": "onExpandHandler"; "getConditionBranchesHandler": "getConditionBranchesHandler"; "onConditionBranchClickHandler": "onConditionBranchClickHandler"; "isStepLoadingHandler": "isStepLoadingHandler"; "isStepExpandedHandler": "isStepExpandedHandler"; "convertMsToSecondsHandler": "convertMsToSecondsHandler"; "formatFailureDetailsHandler": "formatFailureDetailsHandler"; "getSelfHealAnalysisHandler": "getSelfHealAnalysisHandler"; "onMakeCurrentBaselineHandler": "onMakeCurrentBaselineHandler"; "onUploadBaselineHandler": "onUploadBaselineHandler"; "onAnalyzeHandler": "onAnalyzeHandler"; "onViewFullLogsHandler": "onViewFullLogsHandler"; "onSelfHealActionHandler": "onSelfHealActionHandler"; "getSelfHealLoadingStatesHandler": "getSelfHealLoadingStatesHandler"; "getLoopIterationsHandler": "getLoopIterationsHandler"; "getApiAssertionsHandler": "getApiAssertionsHandler"; "formatActionsHandler": "formatActionsHandler"; "onViewAllIterationsHandler": "onViewAllIterationsHandler"; "onStepClickHandler": "onStepClickHandler"; "onJsonPathCopiedHandler": "onJsonPathCopiedHandler"; "onDownloadHandler": "onDownloadHandler"; "onFilePathCopiedHandler": "onFilePathCopiedHandler"; "onTextCopiedHandler": "onTextCopiedHandler"; "jumpToTimestampHandler": "jumpToTimestampHandler"; "downloadingStepId": "downloadingStepId"; "step": "step"; }, { "makeCurrentBaseline": "makeCurrentBaseline"; "uploadBaseline": "uploadBaseline"; "analyze": "analyze"; "viewFullLogs": "viewFullLogs"; "selfHealAction": "selfHealAction"; }, never, never>;
100
102
  }
@@ -69,6 +69,7 @@ export declare class ConditionStepComponent extends BaseStepComponent implements
69
69
  text: string;
70
70
  testStepResultId: string;
71
71
  }) => void;
72
+ jumpToTimestampHandler?: (timestamp: number, testStepId?: number | string) => void;
72
73
  downloadingStepId: string | null;
73
74
  step?: any;
74
75
  onBranchClickEvent: EventEmitter<ConditionBranch>;
@@ -111,6 +112,7 @@ export declare class ConditionStepComponent extends BaseStepComponent implements
111
112
  * Check if any branch is executed.
112
113
  */
113
114
  private hasAnyExecutedBranch;
115
+ onJumpToTimestamp(event: Event): void;
114
116
  static ɵfac: i0.ɵɵFactoryDeclaration<ConditionStepComponent, never>;
115
- static ɵcmp: i0.ɵɵComponentDeclaration<ConditionStepComponent, "cqa-condition-step", never, { "id": "id"; "testStepResultId": "testStepResultId"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "conditionText": "conditionText"; "branches": "branches"; "failureDetails": "failureDetails"; "reasoning": "reasoning"; "confidence": "confidence"; "selfHealAnalysis": "selfHealAnalysis"; "isLoading": "isLoading"; "nestedSteps": "nestedSteps"; "hasChild": "hasChild"; "stepDeleted": "stepDeleted"; "ifChild": "ifChild"; "activeBranchStepId": "activeBranchStepId"; "onExpandHandler": "onExpandHandler"; "getConditionBranchesHandler": "getConditionBranchesHandler"; "isStepLoadingHandler": "isStepLoadingHandler"; "isStepExpandedHandler": "isStepExpandedHandler"; "convertMsToSecondsHandler": "convertMsToSecondsHandler"; "formatFailureDetailsHandler": "formatFailureDetailsHandler"; "getSelfHealAnalysisHandler": "getSelfHealAnalysisHandler"; "onMakeCurrentBaselineHandler": "onMakeCurrentBaselineHandler"; "onUploadBaselineHandler": "onUploadBaselineHandler"; "onAnalyzeHandler": "onAnalyzeHandler"; "onViewFullLogsHandler": "onViewFullLogsHandler"; "onSelfHealActionHandler": "onSelfHealActionHandler"; "getSelfHealLoadingStatesHandler": "getSelfHealLoadingStatesHandler"; "getLoopIterationsHandler": "getLoopIterationsHandler"; "getApiAssertionsHandler": "getApiAssertionsHandler"; "formatActionsHandler": "formatActionsHandler"; "onViewAllIterationsHandler": "onViewAllIterationsHandler"; "onConditionBranchClickHandler": "onConditionBranchClickHandler"; "onStepClickHandler": "onStepClickHandler"; "onJsonPathCopiedHandler": "onJsonPathCopiedHandler"; "onDownloadHandler": "onDownloadHandler"; "onFilePathCopiedHandler": "onFilePathCopiedHandler"; "onTextCopiedHandler": "onTextCopiedHandler"; "downloadingStepId": "downloadingStepId"; "step": "step"; "isUploadingBaseline": "isUploadingBaseline"; "isMakingCurrentBaseline": "isMakingCurrentBaseline"; "isLive": "isLive"; }, { "onBranchClickEvent": "onBranchClickEvent"; "onExpand": "onExpand"; "makeCurrentBaseline": "makeCurrentBaseline"; "uploadBaseline": "uploadBaseline"; "analyze": "analyze"; "viewFullLogs": "viewFullLogs"; "selfHealAction": "selfHealAction"; }, never, never>;
117
+ static ɵcmp: i0.ɵɵComponentDeclaration<ConditionStepComponent, "cqa-condition-step", never, { "id": "id"; "testStepResultId": "testStepResultId"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "conditionText": "conditionText"; "branches": "branches"; "failureDetails": "failureDetails"; "reasoning": "reasoning"; "confidence": "confidence"; "selfHealAnalysis": "selfHealAnalysis"; "isLoading": "isLoading"; "nestedSteps": "nestedSteps"; "hasChild": "hasChild"; "stepDeleted": "stepDeleted"; "ifChild": "ifChild"; "activeBranchStepId": "activeBranchStepId"; "onExpandHandler": "onExpandHandler"; "getConditionBranchesHandler": "getConditionBranchesHandler"; "isStepLoadingHandler": "isStepLoadingHandler"; "isStepExpandedHandler": "isStepExpandedHandler"; "convertMsToSecondsHandler": "convertMsToSecondsHandler"; "formatFailureDetailsHandler": "formatFailureDetailsHandler"; "getSelfHealAnalysisHandler": "getSelfHealAnalysisHandler"; "onMakeCurrentBaselineHandler": "onMakeCurrentBaselineHandler"; "onUploadBaselineHandler": "onUploadBaselineHandler"; "onAnalyzeHandler": "onAnalyzeHandler"; "onViewFullLogsHandler": "onViewFullLogsHandler"; "onSelfHealActionHandler": "onSelfHealActionHandler"; "getSelfHealLoadingStatesHandler": "getSelfHealLoadingStatesHandler"; "getLoopIterationsHandler": "getLoopIterationsHandler"; "getApiAssertionsHandler": "getApiAssertionsHandler"; "formatActionsHandler": "formatActionsHandler"; "onViewAllIterationsHandler": "onViewAllIterationsHandler"; "onConditionBranchClickHandler": "onConditionBranchClickHandler"; "onStepClickHandler": "onStepClickHandler"; "onJsonPathCopiedHandler": "onJsonPathCopiedHandler"; "onDownloadHandler": "onDownloadHandler"; "onFilePathCopiedHandler": "onFilePathCopiedHandler"; "onTextCopiedHandler": "onTextCopiedHandler"; "jumpToTimestampHandler": "jumpToTimestampHandler"; "downloadingStepId": "downloadingStepId"; "step": "step"; "isUploadingBaseline": "isUploadingBaseline"; "isMakingCurrentBaseline": "isMakingCurrentBaseline"; "isLive": "isLive"; }, { "onBranchClickEvent": "onBranchClickEvent"; "onExpand": "onExpand"; "makeCurrentBaseline": "makeCurrentBaseline"; "uploadBaseline": "uploadBaseline"; "analyze": "analyze"; "viewFullLogs": "viewFullLogs"; "selfHealAction": "selfHealAction"; }, never, never>;
116
118
  }
@@ -35,6 +35,7 @@ export declare class DbVerificationStepComponent extends BaseStepComponent imple
35
35
  };
36
36
  };
37
37
  onStepClickHandler?: (step: ExecutionStepConfig, event?: Event) => void;
38
+ jumpToTimestampHandler?: (timestamp: number, testStepId?: number | string) => void;
38
39
  onJsonPathCopiedHandler?: (event: {
39
40
  path: string;
40
41
  source: string;
@@ -103,6 +104,7 @@ export declare class DbVerificationStepComponent extends BaseStepComponent imple
103
104
  onAnalyze(): void;
104
105
  onViewFullLogs(): void;
105
106
  onSelfHealAction(event: SelfHealActionEvent): void;
107
+ onJumpToTimestamp(event: Event): void;
106
108
  static ɵfac: i0.ɵɵFactoryDeclaration<DbVerificationStepComponent, never>;
107
- static ɵcmp: i0.ɵɵComponentDeclaration<DbVerificationStepComponent, "cqa-db-verification-step", never, { "id": "id"; "testStepResultId": "testStepResultId"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "dbTestResult": "dbTestResult"; "dbConfig": "dbConfig"; "failureDetails": "failureDetails"; "reasoning": "reasoning"; "confidence": "confidence"; "stepDeleted": "stepDeleted"; "isUploadingBaseline": "isUploadingBaseline"; "isMakingCurrentBaseline": "isMakingCurrentBaseline"; "selfHealAnalysis": "selfHealAnalysis"; "getSelfHealLoadingStatesHandler": "getSelfHealLoadingStatesHandler"; "onStepClickHandler": "onStepClickHandler"; "onJsonPathCopiedHandler": "onJsonPathCopiedHandler"; "isLive": "isLive"; "step": "step"; }, { "makeCurrentBaseline": "makeCurrentBaseline"; "uploadBaseline": "uploadBaseline"; "analyze": "analyze"; "viewFullLogs": "viewFullLogs"; "selfHealAction": "selfHealAction"; }, never, never>;
109
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbVerificationStepComponent, "cqa-db-verification-step", never, { "id": "id"; "testStepResultId": "testStepResultId"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "dbTestResult": "dbTestResult"; "dbConfig": "dbConfig"; "failureDetails": "failureDetails"; "reasoning": "reasoning"; "confidence": "confidence"; "stepDeleted": "stepDeleted"; "isUploadingBaseline": "isUploadingBaseline"; "isMakingCurrentBaseline": "isMakingCurrentBaseline"; "selfHealAnalysis": "selfHealAnalysis"; "getSelfHealLoadingStatesHandler": "getSelfHealLoadingStatesHandler"; "onStepClickHandler": "onStepClickHandler"; "jumpToTimestampHandler": "jumpToTimestampHandler"; "onJsonPathCopiedHandler": "onJsonPathCopiedHandler"; "isLive": "isLive"; "step": "step"; }, { "makeCurrentBaseline": "makeCurrentBaseline"; "uploadBaseline": "uploadBaseline"; "analyze": "analyze"; "viewFullLogs": "viewFullLogs"; "selfHealAction": "selfHealAction"; }, never, never>;
108
110
  }
@@ -13,10 +13,13 @@ export declare class DocumentVerificationStepComponent extends BaseStepComponent
13
13
  documentScreenshot?: string;
14
14
  extractedFields: ExtractedField[];
15
15
  verificationChecks: VerificationCheck[];
16
+ step?: any;
17
+ jumpToTimestampHandler?: (timestamp: number, testStepId?: number | string) => void;
16
18
  config: DocumentVerificationStepConfig;
17
19
  ngOnInit(): void;
18
20
  ngOnChanges(changes: SimpleChanges): void;
19
21
  copyToClipboard(text: string): void;
22
+ onJumpToTimestamp(event: Event): void;
20
23
  static ɵfac: i0.ɵɵFactoryDeclaration<DocumentVerificationStepComponent, never>;
21
- static ɵcmp: i0.ɵɵComponentDeclaration<DocumentVerificationStepComponent, "cqa-document-verification-step", never, { "id": "id"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "documentScreenshot": "documentScreenshot"; "extractedFields": "extractedFields"; "verificationChecks": "verificationChecks"; }, {}, never, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<DocumentVerificationStepComponent, "cqa-document-verification-step", never, { "id": "id"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "documentScreenshot": "documentScreenshot"; "extractedFields": "extractedFields"; "verificationChecks": "verificationChecks"; "step": "step"; "jumpToTimestampHandler": "jumpToTimestampHandler"; }, {}, never, never>;
22
25
  }
@@ -62,6 +62,10 @@ export interface BaseStepConfig {
62
62
  reasoning?: string[];
63
63
  confidence?: string;
64
64
  stepDeleted?: boolean;
65
+ executedResult?: {
66
+ video_start_time: number;
67
+ video_end_time: number;
68
+ };
65
69
  selectedIterationId?: string;
66
70
  }
67
71
  export interface SelfHealAnalysisData {
@@ -18,6 +18,8 @@ export declare class FileDownloadStepComponent extends BaseStepComponent impleme
18
18
  downloaded: boolean;
19
19
  stepDeleted?: boolean;
20
20
  isDownloading?: boolean;
21
+ step?: any;
22
+ jumpToTimestampHandler?: (timestamp: number, testStepId?: number | string) => void;
21
23
  download: EventEmitter<{
22
24
  fileName: string;
23
25
  filePath?: string;
@@ -43,6 +45,7 @@ export declare class FileDownloadStepComponent extends BaseStepComponent impleme
43
45
  copyToClipboard(text: string): void;
44
46
  copyFilePath(): void;
45
47
  ngOnDestroy(): void;
48
+ onJumpToTimestamp(event: Event): void;
46
49
  static ɵfac: i0.ɵɵFactoryDeclaration<FileDownloadStepComponent, never>;
47
- static ɵcmp: i0.ɵɵComponentDeclaration<FileDownloadStepComponent, "cqa-file-download-step", never, { "id": "id"; "testStepResultId": "testStepResultId"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "fileName": "fileName"; "fileType": "fileType"; "fileSize": "fileSize"; "filePath": "filePath"; "downloaded": "downloaded"; "stepDeleted": "stepDeleted"; "isDownloading": "isDownloading"; }, { "download": "download"; "filePathCopied": "filePathCopied"; "textCopied": "textCopied"; }, never, never>;
50
+ static ɵcmp: i0.ɵɵComponentDeclaration<FileDownloadStepComponent, "cqa-file-download-step", never, { "id": "id"; "testStepResultId": "testStepResultId"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "fileName": "fileName"; "fileType": "fileType"; "fileSize": "fileSize"; "filePath": "filePath"; "downloaded": "downloaded"; "stepDeleted": "stepDeleted"; "isDownloading": "isDownloading"; "step": "step"; "jumpToTimestampHandler": "jumpToTimestampHandler"; }, { "download": "download"; "filePathCopied": "filePathCopied"; "textCopied": "textCopied"; }, never, never>;
48
51
  }
@@ -66,6 +66,7 @@ export declare class LoopStepComponent extends BaseStepComponent implements OnIn
66
66
  text: string;
67
67
  testStepResultId: string;
68
68
  }) => void;
69
+ jumpToTimestampHandler?: (timestamp: number, testStepId?: number | string) => void;
69
70
  downloadingStepId: string | null;
70
71
  step?: any;
71
72
  failureDetails?: FailureDetails;
@@ -142,6 +143,7 @@ export declare class LoopStepComponent extends BaseStepComponent implements OnIn
142
143
  getLoopDefaultIteration(step: ExecutionStepConfig): 'first' | 'last' | undefined;
143
144
  getLoopShowViewAllIterations(step: ExecutionStepConfig): boolean | undefined;
144
145
  isStepLoading(): boolean;
146
+ onJumpToTimestamp(event: Event): void;
145
147
  static ɵfac: i0.ɵɵFactoryDeclaration<LoopStepComponent, never>;
146
- static ɵcmp: i0.ɵɵComponentDeclaration<LoopStepComponent, "cqa-loop-step", never, { "id": "id"; "testStepResultId": "testStepResultId"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "loopType": "loopType"; "iterations": "iterations"; "selectedIterationId": "selectedIterationId"; "defaultIteration": "defaultIteration"; "nestedSteps": "nestedSteps"; "showViewAllIterations": "showViewAllIterations"; "hasChild": "hasChild"; "isLive": "isLive"; "isLoading": "isLoading"; "stepDeleted": "stepDeleted"; "onExpandHandler": "onExpandHandler"; "getConditionBranchesHandler": "getConditionBranchesHandler"; "onConditionBranchClickHandler": "onConditionBranchClickHandler"; "isStepLoadingHandler": "isStepLoadingHandler"; "isStepExpandedHandler": "isStepExpandedHandler"; "convertMsToSecondsHandler": "convertMsToSecondsHandler"; "formatFailureDetailsHandler": "formatFailureDetailsHandler"; "getSelfHealAnalysisHandler": "getSelfHealAnalysisHandler"; "onMakeCurrentBaselineHandler": "onMakeCurrentBaselineHandler"; "onUploadBaselineHandler": "onUploadBaselineHandler"; "onAnalyzeHandler": "onAnalyzeHandler"; "onViewFullLogsHandler": "onViewFullLogsHandler"; "onSelfHealActionHandler": "onSelfHealActionHandler"; "getSelfHealLoadingStatesHandler": "getSelfHealLoadingStatesHandler"; "getLoopIterationsHandler": "getLoopIterationsHandler"; "getApiAssertionsHandler": "getApiAssertionsHandler"; "formatActionsHandler": "formatActionsHandler"; "onViewAllIterationsHandler": "onViewAllIterationsHandler"; "onStepClickHandler": "onStepClickHandler"; "onJsonPathCopiedHandler": "onJsonPathCopiedHandler"; "onDownloadHandler": "onDownloadHandler"; "onFilePathCopiedHandler": "onFilePathCopiedHandler"; "onTextCopiedHandler": "onTextCopiedHandler"; "downloadingStepId": "downloadingStepId"; "step": "step"; "failureDetails": "failureDetails"; "reasoning": "reasoning"; "confidence": "confidence"; "isUploadingBaseline": "isUploadingBaseline"; "isMakingCurrentBaseline": "isMakingCurrentBaseline"; "selfHealAnalysis": "selfHealAnalysis"; "iterationData": "iterationData"; }, { "makeCurrentBaseline": "makeCurrentBaseline"; "uploadBaseline": "uploadBaseline"; "analyze": "analyze"; "viewFullLogs": "viewFullLogs"; "selfHealAction": "selfHealAction"; "onExpand": "onExpand"; "onViewAllIterations": "onViewAllIterations"; "onIterationChange": "onIterationChange"; }, never, never>;
148
+ static ɵcmp: i0.ɵɵComponentDeclaration<LoopStepComponent, "cqa-loop-step", never, { "id": "id"; "testStepResultId": "testStepResultId"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "loopType": "loopType"; "iterations": "iterations"; "selectedIterationId": "selectedIterationId"; "defaultIteration": "defaultIteration"; "nestedSteps": "nestedSteps"; "showViewAllIterations": "showViewAllIterations"; "hasChild": "hasChild"; "isLive": "isLive"; "isLoading": "isLoading"; "stepDeleted": "stepDeleted"; "onExpandHandler": "onExpandHandler"; "getConditionBranchesHandler": "getConditionBranchesHandler"; "onConditionBranchClickHandler": "onConditionBranchClickHandler"; "isStepLoadingHandler": "isStepLoadingHandler"; "isStepExpandedHandler": "isStepExpandedHandler"; "convertMsToSecondsHandler": "convertMsToSecondsHandler"; "formatFailureDetailsHandler": "formatFailureDetailsHandler"; "getSelfHealAnalysisHandler": "getSelfHealAnalysisHandler"; "onMakeCurrentBaselineHandler": "onMakeCurrentBaselineHandler"; "onUploadBaselineHandler": "onUploadBaselineHandler"; "onAnalyzeHandler": "onAnalyzeHandler"; "onViewFullLogsHandler": "onViewFullLogsHandler"; "onSelfHealActionHandler": "onSelfHealActionHandler"; "getSelfHealLoadingStatesHandler": "getSelfHealLoadingStatesHandler"; "getLoopIterationsHandler": "getLoopIterationsHandler"; "getApiAssertionsHandler": "getApiAssertionsHandler"; "formatActionsHandler": "formatActionsHandler"; "onViewAllIterationsHandler": "onViewAllIterationsHandler"; "onStepClickHandler": "onStepClickHandler"; "onJsonPathCopiedHandler": "onJsonPathCopiedHandler"; "onDownloadHandler": "onDownloadHandler"; "onFilePathCopiedHandler": "onFilePathCopiedHandler"; "onTextCopiedHandler": "onTextCopiedHandler"; "jumpToTimestampHandler": "jumpToTimestampHandler"; "downloadingStepId": "downloadingStepId"; "step": "step"; "failureDetails": "failureDetails"; "reasoning": "reasoning"; "confidence": "confidence"; "isUploadingBaseline": "isUploadingBaseline"; "isMakingCurrentBaseline": "isMakingCurrentBaseline"; "selfHealAnalysis": "selfHealAnalysis"; "iterationData": "iterationData"; }, { "makeCurrentBaseline": "makeCurrentBaseline"; "uploadBaseline": "uploadBaseline"; "analyze": "analyze"; "viewFullLogs": "viewFullLogs"; "selfHealAction": "selfHealAction"; "onExpand": "onExpand"; "onViewAllIterations": "onViewAllIterations"; "onIterationChange": "onIterationChange"; }, never, never>;
147
149
  }
@@ -61,6 +61,7 @@ export declare class StepGroupComponent extends BaseStepComponent implements OnI
61
61
  text: string;
62
62
  testStepResultId: string;
63
63
  }) => void;
64
+ jumpToTimestampHandler?: (timestamp: number, testStepId?: number | string) => void;
64
65
  downloadingStepId: string | null;
65
66
  isUploadingBaseline?: any;
66
67
  isMakingCurrentBaseline?: any;
@@ -101,6 +102,7 @@ export declare class StepGroupComponent extends BaseStepComponent implements OnI
101
102
  getLoopDefaultIteration(step: ExecutionStepConfig): 'first' | 'last' | undefined;
102
103
  getLoopShowViewAllIterations(step: ExecutionStepConfig): boolean | undefined;
103
104
  isStepLoading(): boolean;
105
+ onJumpToTimestamp(event: Event): void;
104
106
  static ɵfac: i0.ɵɵFactoryDeclaration<StepGroupComponent, never>;
105
- static ɵcmp: i0.ɵɵComponentDeclaration<StepGroupComponent, "cqa-step-group", never, { "id": "id"; "testStepResultId": "testStepResultId"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "groupName": "groupName"; "steps": "steps"; "hasChild": "hasChild"; "isLoading": "isLoading"; "stepDeleted": "stepDeleted"; "onExpandHandler": "onExpandHandler"; "getConditionBranchesHandler": "getConditionBranchesHandler"; "onConditionBranchClickHandler": "onConditionBranchClickHandler"; "isStepLoadingHandler": "isStepLoadingHandler"; "isStepExpandedHandler": "isStepExpandedHandler"; "convertMsToSecondsHandler": "convertMsToSecondsHandler"; "formatFailureDetailsHandler": "formatFailureDetailsHandler"; "getSelfHealAnalysisHandler": "getSelfHealAnalysisHandler"; "onMakeCurrentBaselineHandler": "onMakeCurrentBaselineHandler"; "onUploadBaselineHandler": "onUploadBaselineHandler"; "onAnalyzeHandler": "onAnalyzeHandler"; "onViewFullLogsHandler": "onViewFullLogsHandler"; "onSelfHealActionHandler": "onSelfHealActionHandler"; "getSelfHealLoadingStatesHandler": "getSelfHealLoadingStatesHandler"; "getLoopIterationsHandler": "getLoopIterationsHandler"; "getApiAssertionsHandler": "getApiAssertionsHandler"; "formatActionsHandler": "formatActionsHandler"; "onViewAllIterationsHandler": "onViewAllIterationsHandler"; "onStepClickHandler": "onStepClickHandler"; "onJsonPathCopiedHandler": "onJsonPathCopiedHandler"; "onDownloadHandler": "onDownloadHandler"; "onFilePathCopiedHandler": "onFilePathCopiedHandler"; "onTextCopiedHandler": "onTextCopiedHandler"; "downloadingStepId": "downloadingStepId"; "isUploadingBaseline": "isUploadingBaseline"; "isMakingCurrentBaseline": "isMakingCurrentBaseline"; "isLive": "isLive"; "step": "step"; }, { "onExpand": "onExpand"; }, never, never>;
107
+ static ɵcmp: i0.ɵɵComponentDeclaration<StepGroupComponent, "cqa-step-group", never, { "id": "id"; "testStepResultId": "testStepResultId"; "stepNumber": "stepNumber"; "title": "title"; "status": "status"; "duration": "duration"; "timingBreakdown": "timingBreakdown"; "expanded": "expanded"; "groupName": "groupName"; "steps": "steps"; "hasChild": "hasChild"; "isLoading": "isLoading"; "stepDeleted": "stepDeleted"; "onExpandHandler": "onExpandHandler"; "getConditionBranchesHandler": "getConditionBranchesHandler"; "onConditionBranchClickHandler": "onConditionBranchClickHandler"; "isStepLoadingHandler": "isStepLoadingHandler"; "isStepExpandedHandler": "isStepExpandedHandler"; "convertMsToSecondsHandler": "convertMsToSecondsHandler"; "formatFailureDetailsHandler": "formatFailureDetailsHandler"; "getSelfHealAnalysisHandler": "getSelfHealAnalysisHandler"; "onMakeCurrentBaselineHandler": "onMakeCurrentBaselineHandler"; "onUploadBaselineHandler": "onUploadBaselineHandler"; "onAnalyzeHandler": "onAnalyzeHandler"; "onViewFullLogsHandler": "onViewFullLogsHandler"; "onSelfHealActionHandler": "onSelfHealActionHandler"; "getSelfHealLoadingStatesHandler": "getSelfHealLoadingStatesHandler"; "getLoopIterationsHandler": "getLoopIterationsHandler"; "getApiAssertionsHandler": "getApiAssertionsHandler"; "formatActionsHandler": "formatActionsHandler"; "onViewAllIterationsHandler": "onViewAllIterationsHandler"; "onStepClickHandler": "onStepClickHandler"; "onJsonPathCopiedHandler": "onJsonPathCopiedHandler"; "onDownloadHandler": "onDownloadHandler"; "onFilePathCopiedHandler": "onFilePathCopiedHandler"; "onTextCopiedHandler": "onTextCopiedHandler"; "jumpToTimestampHandler": "jumpToTimestampHandler"; "downloadingStepId": "downloadingStepId"; "isUploadingBaseline": "isUploadingBaseline"; "isMakingCurrentBaseline": "isMakingCurrentBaseline"; "isLive": "isLive"; "step": "step"; }, { "onExpand": "onExpand"; }, never, never>;
106
108
  }
@@ -57,6 +57,7 @@ export declare class StepRendererComponent implements OnChanges, AfterViewInit,
57
57
  text: string;
58
58
  testStepResultId: string;
59
59
  }) => void;
60
+ jumpToTimestampHandler?: (timestamp: number, testStepId?: number | string) => void;
60
61
  downloadingStepId: string | null;
61
62
  container: ViewContainerRef;
62
63
  isLive: boolean;
@@ -93,5 +94,5 @@ export declare class StepRendererComponent implements OnChanges, AfterViewInit,
93
94
  private loadComponent;
94
95
  ngDoCheck(): void;
95
96
  static ɵfac: i0.ɵɵFactoryDeclaration<StepRendererComponent, never>;
96
- static ɵcmp: i0.ɵɵComponentDeclaration<StepRendererComponent, "cqa-step-renderer", never, { "step": "step"; "onExpandHandler": "onExpandHandler"; "getConditionBranchesHandler": "getConditionBranchesHandler"; "isStepLoadingHandler": "isStepLoadingHandler"; "isStepExpandedHandler": "isStepExpandedHandler"; "convertMsToSecondsHandler": "convertMsToSecondsHandler"; "formatFailureDetailsHandler": "formatFailureDetailsHandler"; "getSelfHealAnalysisHandler": "getSelfHealAnalysisHandler"; "onMakeCurrentBaselineHandler": "onMakeCurrentBaselineHandler"; "onUploadBaselineHandler": "onUploadBaselineHandler"; "onAnalyzeHandler": "onAnalyzeHandler"; "onViewFullLogsHandler": "onViewFullLogsHandler"; "onSelfHealActionHandler": "onSelfHealActionHandler"; "getSelfHealLoadingStatesHandler": "getSelfHealLoadingStatesHandler"; "isUploadingBaseline": "isUploadingBaseline"; "isMakingCurrentBaseline": "isMakingCurrentBaseline"; "selectedIterationId": "selectedIterationId"; "getLoopIterationsHandler": "getLoopIterationsHandler"; "getApiAssertionsHandler": "getApiAssertionsHandler"; "formatActionsHandler": "formatActionsHandler"; "onViewAllIterationsHandler": "onViewAllIterationsHandler"; "onConditionBranchClickHandler": "onConditionBranchClickHandler"; "onStepClickHandler": "onStepClickHandler"; "onJsonPathCopiedHandler": "onJsonPathCopiedHandler"; "onDownloadHandler": "onDownloadHandler"; "onFilePathCopiedHandler": "onFilePathCopiedHandler"; "onTextCopiedHandler": "onTextCopiedHandler"; "downloadingStepId": "downloadingStepId"; "isLive": "isLive"; "stepNumber": "stepNumber"; }, { "componentReady": "componentReady"; }, never, never>;
97
+ static ɵcmp: i0.ɵɵComponentDeclaration<StepRendererComponent, "cqa-step-renderer", never, { "step": "step"; "onExpandHandler": "onExpandHandler"; "getConditionBranchesHandler": "getConditionBranchesHandler"; "isStepLoadingHandler": "isStepLoadingHandler"; "isStepExpandedHandler": "isStepExpandedHandler"; "convertMsToSecondsHandler": "convertMsToSecondsHandler"; "formatFailureDetailsHandler": "formatFailureDetailsHandler"; "getSelfHealAnalysisHandler": "getSelfHealAnalysisHandler"; "onMakeCurrentBaselineHandler": "onMakeCurrentBaselineHandler"; "onUploadBaselineHandler": "onUploadBaselineHandler"; "onAnalyzeHandler": "onAnalyzeHandler"; "onViewFullLogsHandler": "onViewFullLogsHandler"; "onSelfHealActionHandler": "onSelfHealActionHandler"; "getSelfHealLoadingStatesHandler": "getSelfHealLoadingStatesHandler"; "isUploadingBaseline": "isUploadingBaseline"; "isMakingCurrentBaseline": "isMakingCurrentBaseline"; "selectedIterationId": "selectedIterationId"; "getLoopIterationsHandler": "getLoopIterationsHandler"; "getApiAssertionsHandler": "getApiAssertionsHandler"; "formatActionsHandler": "formatActionsHandler"; "onViewAllIterationsHandler": "onViewAllIterationsHandler"; "onConditionBranchClickHandler": "onConditionBranchClickHandler"; "onStepClickHandler": "onStepClickHandler"; "onJsonPathCopiedHandler": "onJsonPathCopiedHandler"; "onDownloadHandler": "onDownloadHandler"; "onFilePathCopiedHandler": "onFilePathCopiedHandler"; "onTextCopiedHandler": "onTextCopiedHandler"; "jumpToTimestampHandler": "jumpToTimestampHandler"; "downloadingStepId": "downloadingStepId"; "isLive": "isLive"; "stepNumber": "stepNumber"; }, { "componentReady": "componentReady"; }, never, never>;
97
98
  }
@@ -3,7 +3,11 @@ import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
3
3
  import * as i0 from "@angular/core";
4
4
  export interface StepMarker {
5
5
  cumulativeDuration: number;
6
- result: 'SUCCESS' | 'FAILURE';
6
+ result: 'SUCCESS' | 'FAILURE' | 'ABORTED' | 'SKIPPED';
7
+ testStepId?: number;
8
+ level?: number;
9
+ childSteps?: StepMarker[];
10
+ title?: string;
7
11
  }
8
12
  export declare type SegmentType = 'screenshots' | 'video' | 'trace';
9
13
  declare type SegmentOption = {
@@ -39,11 +43,17 @@ export declare class SimulatorComponent implements AfterViewInit, OnDestroy, OnC
39
43
  videoTimeUpdate: EventEmitter<number>;
40
44
  videoPlay: EventEmitter<void>;
41
45
  videoPause: EventEmitter<void>;
46
+ markerHit: EventEmitter<StepMarker>;
47
+ isVideoPlayingChange: EventEmitter<boolean>;
42
48
  private _vplayer?;
43
49
  set vplayerRef(ref: ElementRef<HTMLVideoElement> | undefined);
44
50
  get vplayer(): ElementRef<HTMLVideoElement> | undefined;
45
- timelineBar: ElementRef<HTMLDivElement>;
46
- speedControlContainer: ElementRef<HTMLDivElement>;
51
+ private _timelineBar?;
52
+ set timelineBarRef(ref: ElementRef<HTMLDivElement> | undefined);
53
+ get timelineBar(): ElementRef<HTMLDivElement> | undefined;
54
+ private _speedControlContainer?;
55
+ set speedControlContainerRef(ref: ElementRef<HTMLDivElement> | undefined);
56
+ get speedControlContainer(): ElementRef<HTMLDivElement> | undefined;
47
57
  progress: number;
48
58
  dragging: boolean;
49
59
  isPlaying: boolean;
@@ -52,7 +62,14 @@ export declare class SimulatorComponent implements AfterViewInit, OnDestroy, OnC
52
62
  currentVideoIndex: number;
53
63
  currentSpeed: string;
54
64
  isSpeedControlOpen: boolean;
65
+ private detectedVideoDurations;
66
+ private wasPlayingBeforeDrag;
67
+ private playPromise;
68
+ private hitMarkers;
69
+ private playerState;
70
+ private operationQueue;
55
71
  get hasDeviceFrame(): boolean;
72
+ get isPlayerSwitching(): boolean;
56
73
  segments: SegmentOption[];
57
74
  speedSegments: SegmentOption[];
58
75
  private videoEventListenerCleanup;
@@ -60,6 +77,9 @@ export declare class SimulatorComponent implements AfterViewInit, OnDestroy, OnC
60
77
  private dragMouseMoveHandler;
61
78
  private dragMouseUpHandler;
62
79
  private speedControlClickOutsideHandler;
80
+ private preloadVideoElement;
81
+ private preloadAllVideoElement;
82
+ private targetGlobalTimeDuringSwitch;
63
83
  safeTraceUrl: SafeResourceUrl;
64
84
  traceViewerLoading: boolean;
65
85
  traceViewerError: boolean;
@@ -85,11 +105,72 @@ export declare class SimulatorComponent implements AfterViewInit, OnDestroy, OnC
85
105
  ngAfterViewInit(): void;
86
106
  ngOnChanges(changes: SimpleChanges): void;
87
107
  ngOnDestroy(): void;
108
+ /**
109
+ * Seek video - public method (enqueues operation)
110
+ */
88
111
  seekToTime(milliseconds: number): void;
112
+ /**
113
+ * Seek to a global time on the combined timeline (converts to segment + local time)
114
+ */
115
+ private seekToGlobalTime;
116
+ /**
117
+ * Seek video internal implementation (no enqueue - called from queue)
118
+ * This prevents pipeline read errors during rapid seek operations
119
+ */
120
+ private seekToTimeInternal;
121
+ /**
122
+ * Toggle play/pause (now trivial with state machine)
123
+ */
89
124
  togglePlay(): void;
125
+ /**
126
+ * Play video - public method (enqueues operation)
127
+ */
128
+ private playVideo;
129
+ /**
130
+ * Play video internal implementation (no enqueue - called from queue)
131
+ * This eliminates FFmpegDemuxer errors and play promise interruptions
132
+ */
133
+ private playVideoInternal;
134
+ /**
135
+ * Pause video - public method (enqueues operation)
136
+ */
137
+ private pauseVideo;
138
+ /**
139
+ * Pause video internal implementation (no enqueue - called from queue)
140
+ */
141
+ private pauseVideoInternal;
142
+ /**
143
+ * Enqueue media operation to prevent race conditions
144
+ * This is the CRITICAL fix for FFmpegDemuxer errors and play promise interruptions
145
+ * All media operations (play, pause, seek, switch) go through this queue
146
+ */
147
+ private enqueueOperation;
90
148
  get hasMultipleVideos(): boolean;
149
+ /** Cumulative duration boundaries [ms]. segmentBoundaries[i] = sum of durations [0..i] */
150
+ get segmentBoundaries(): number[];
151
+ /** Total duration across all segments in ms */
152
+ get totalDuration(): number;
153
+ /** Video durations in ms (detected or from single video element) */
154
+ private get videoDurations();
155
+ get globalCurrentTime(): number;
156
+ private getActualGlobalTime;
157
+ /** Global step markers for rendering on the combined timeline */
158
+ get globalStepMarkers(): Array<{
159
+ globalTime: number;
160
+ result: StepMarker['result'];
161
+ testStepId?: number;
162
+ title?: string;
163
+ level?: number;
164
+ }>;
91
165
  get currentVideoUrl(): string;
166
+ /**
167
+ * Reset video state - public method (enqueues operation)
168
+ */
92
169
  private resetVideoState;
170
+ /**
171
+ * Reset video state internal implementation (no enqueue - called from queue)
172
+ */
173
+ private resetVideoStateInternal;
93
174
  prevVideo(): void;
94
175
  nextVideo(): void;
95
176
  onTimelineClick(event: MouseEvent): void;
@@ -102,8 +183,39 @@ export declare class SimulatorComponent implements AfterViewInit, OnDestroy, OnC
102
183
  onVideoCanPlay(): void;
103
184
  onVideoEnded(): void;
104
185
  private attachVideoListeners;
105
- getStepLeftPosition(step: StepMarker): number;
106
- getStepColor(step: StepMarker): string;
186
+ private schedulePreloadAllSegments;
187
+ private cancelPreloadAllSegments;
188
+ /**
189
+ * Preload all video URLs in sequence (first, then second, ...) so they are cached.
190
+ * When user jumps to any segment, that video is likely already loaded.
191
+ */
192
+ private preloadAllSegments;
193
+ /** Preload next segment when ~5-10 seconds from ending to minimize switching delay */
194
+ private maybePreloadNextSegment;
195
+ private preloadNextSegment;
196
+ /**
197
+ * Detect actual video durations by loading video metadata
198
+ * This creates temporary video elements to read duration without playing
199
+ */
200
+ private detectVideoDurations;
201
+ /**
202
+ * Get cumulative duration boundaries for each video
203
+ * Returns an array where each element is [startDuration, endDuration] for that video
204
+ * Uses detected video durations if available, otherwise falls back to videoDurations input
205
+ */
206
+ private getVideoDurationBoundaries;
207
+ /**
208
+ * Flatten all markers recursively including childSteps
209
+ */
210
+ private flattenMarkers;
211
+ private checkMarkerHit;
212
+ getGlobalMarkerResultColor(result: StepMarker['result']): string;
213
+ getGlobalMarkerColor(level?: number): string;
214
+ onMarkerClick(event: MouseEvent, marker: {
215
+ globalTime: number;
216
+ result: StepMarker['result'];
217
+ testStepId?: number;
218
+ }): void;
107
219
  toggleFullScreen(): void;
108
220
  onSegmentChange(value: string): void;
109
221
  formatTime(seconds: number): string;
@@ -119,7 +231,11 @@ export declare class SimulatorComponent implements AfterViewInit, OnDestroy, OnC
119
231
  private removeSpeedControlClickOutsideListener;
120
232
  private updateSegments;
121
233
  private onVideoElementReady;
234
+ private applyCurrentPlaybackRate;
235
+ private findVideoIndexForTimestamp;
236
+ private switchToVideoAndSeek;
237
+ private switchToVideoAndSeekInternal;
122
238
  static ɵfac: i0.ɵɵFactoryDeclaration<SimulatorComponent, never>;
123
- static ɵcmp: i0.ɵɵComponentDeclaration<SimulatorComponent, "cqa-simulator", never, { "videoUrl": "videoUrl"; "videoUrls": "videoUrls"; "videoCurrentDuration": "videoCurrentDuration"; "stepMarkers": "stepMarkers"; "screenShotUrl": "screenShotUrl"; "traceViewUrl": "traceViewUrl"; "platformName": "platformName"; "platformType": "platformType"; "platform": "platform"; "deviceName": "deviceName"; "isLive": "isLive"; "liveStatus": "liveStatus"; "liveLoadingLabel": "liveLoadingLabel"; "isContentVideoLoading": "isContentVideoLoading"; "failedStatusMessage": "failedStatusMessage"; "isVNCSessionIntruppted": "isVNCSessionIntruppted"; "vncSessionIntupptedMessage": "vncSessionIntupptedMessage"; "selectedView": "selectedView"; "hideVideoTab": "hideVideoTab"; "browserViewPort": "browserViewPort"; }, { "videoTimeUpdate": "videoTimeUpdate"; "videoPlay": "videoPlay"; "videoPause": "videoPause"; }, never, ["*"]>;
239
+ static ɵcmp: i0.ɵɵComponentDeclaration<SimulatorComponent, "cqa-simulator", never, { "videoUrl": "videoUrl"; "videoUrls": "videoUrls"; "videoCurrentDuration": "videoCurrentDuration"; "stepMarkers": "stepMarkers"; "screenShotUrl": "screenShotUrl"; "traceViewUrl": "traceViewUrl"; "platformName": "platformName"; "platformType": "platformType"; "platform": "platform"; "deviceName": "deviceName"; "isLive": "isLive"; "liveStatus": "liveStatus"; "liveLoadingLabel": "liveLoadingLabel"; "isContentVideoLoading": "isContentVideoLoading"; "failedStatusMessage": "failedStatusMessage"; "isVNCSessionIntruppted": "isVNCSessionIntruppted"; "vncSessionIntupptedMessage": "vncSessionIntupptedMessage"; "selectedView": "selectedView"; "hideVideoTab": "hideVideoTab"; "browserViewPort": "browserViewPort"; }, { "videoTimeUpdate": "videoTimeUpdate"; "videoPlay": "videoPlay"; "videoPause": "videoPause"; "markerHit": "markerHit"; "isVideoPlayingChange": "isVideoPlayingChange"; }, never, ["*"]>;
124
240
  }
125
241
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cqa-lib/cqa-ui",
3
- "version": "1.1.177",
3
+ "version": "1.1.178",
4
4
  "description": "UI Kit library for Angular 13.4",
5
5
  "keywords": [
6
6
  "angular",