@memberjunction/ng-dashboards 2.116.0 → 2.118.0
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.
- package/dist/Testing/components/testing-analytics.component.d.ts +56 -0
- package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -0
- package/dist/Testing/components/testing-analytics.component.js +746 -0
- package/dist/Testing/components/testing-analytics.component.js.map +1 -0
- package/dist/Testing/components/testing-execution.component.d.ts +59 -0
- package/dist/Testing/components/testing-execution.component.d.ts.map +1 -0
- package/dist/Testing/components/testing-execution.component.js +649 -0
- package/dist/Testing/components/testing-execution.component.js.map +1 -0
- package/dist/Testing/components/testing-feedback.component.d.ts +55 -0
- package/dist/Testing/components/testing-feedback.component.d.ts.map +1 -0
- package/dist/Testing/components/testing-feedback.component.js +789 -0
- package/dist/Testing/components/testing-feedback.component.js.map +1 -0
- package/dist/Testing/components/testing-overview.component.d.ts +30 -0
- package/dist/Testing/components/testing-overview.component.d.ts.map +1 -0
- package/dist/Testing/components/testing-overview.component.js +342 -0
- package/dist/Testing/components/testing-overview.component.js.map +1 -0
- package/dist/Testing/components/testing-version-comparison.component.d.ts +58 -0
- package/dist/Testing/components/testing-version-comparison.component.d.ts.map +1 -0
- package/dist/Testing/components/testing-version-comparison.component.js +801 -0
- package/dist/Testing/components/testing-version-comparison.component.js.map +1 -0
- package/dist/Testing/components/widgets/cost-display.component.d.ts +16 -0
- package/dist/Testing/components/widgets/cost-display.component.d.ts.map +1 -0
- package/dist/Testing/components/widgets/cost-display.component.js +88 -0
- package/dist/Testing/components/widgets/cost-display.component.js.map +1 -0
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.d.ts +20 -0
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.d.ts.map +1 -0
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.js +280 -0
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.js.map +1 -0
- package/dist/Testing/components/widgets/score-indicator.component.d.ts +13 -0
- package/dist/Testing/components/widgets/score-indicator.component.d.ts.map +1 -0
- package/dist/Testing/components/widgets/score-indicator.component.js +93 -0
- package/dist/Testing/components/widgets/score-indicator.component.js.map +1 -0
- package/dist/Testing/components/widgets/suite-tree.component.d.ts +28 -0
- package/dist/Testing/components/widgets/suite-tree.component.d.ts.map +1 -0
- package/dist/Testing/components/widgets/suite-tree.component.js +275 -0
- package/dist/Testing/components/widgets/suite-tree.component.js.map +1 -0
- package/dist/Testing/components/widgets/test-run-detail-panel.component.d.ts +34 -0
- package/dist/Testing/components/widgets/test-run-detail-panel.component.d.ts.map +1 -0
- package/dist/Testing/components/widgets/test-run-detail-panel.component.js +373 -0
- package/dist/Testing/components/widgets/test-run-detail-panel.component.js.map +1 -0
- package/dist/Testing/components/widgets/test-run-dialog.component.d.ts +63 -0
- package/dist/Testing/components/widgets/test-run-dialog.component.d.ts.map +1 -0
- package/dist/Testing/components/widgets/test-run-dialog.component.js +989 -0
- package/dist/Testing/components/widgets/test-run-dialog.component.js.map +1 -0
- package/dist/Testing/components/widgets/test-status-badge.component.d.ts +10 -0
- package/dist/Testing/components/widgets/test-status-badge.component.d.ts.map +1 -0
- package/dist/Testing/components/widgets/test-status-badge.component.js +68 -0
- package/dist/Testing/components/widgets/test-status-badge.component.js.map +1 -0
- package/dist/Testing/services/testing-instrumentation.service.d.ts +152 -0
- package/dist/Testing/services/testing-instrumentation.service.d.ts.map +1 -0
- package/dist/Testing/services/testing-instrumentation.service.js +579 -0
- package/dist/Testing/services/testing-instrumentation.service.js.map +1 -0
- package/dist/Testing/testing-dashboard.component.d.ts +52 -0
- package/dist/Testing/testing-dashboard.component.d.ts.map +1 -0
- package/dist/Testing/testing-dashboard.component.js +273 -0
- package/dist/Testing/testing-dashboard.component.js.map +1 -0
- package/dist/module.d.ts +33 -20
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +55 -6
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +1 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +12 -10
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing-feedback.component.js","sourceRoot":"","sources":["../../../src/Testing/components/testing-feedback.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { OnInit, OnDestroy, EventEmitter, ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { TestingInstrumentationService, TestingDashboardKPIs, TestRunSummary, SuiteHierarchyNode } from '../services/testing-instrumentation.service';
|
|
4
|
+
import { KPICardData } from '../../AI/components/widgets/kpi-card.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class TestingOverviewComponent implements OnInit, OnDestroy {
|
|
7
|
+
private instrumentationService;
|
|
8
|
+
private cdr;
|
|
9
|
+
initialState?: any;
|
|
10
|
+
stateChange: EventEmitter<any>;
|
|
11
|
+
private destroy$;
|
|
12
|
+
isLoading: boolean;
|
|
13
|
+
selectedSuiteId: string | null;
|
|
14
|
+
kpis$: Observable<TestingDashboardKPIs>;
|
|
15
|
+
kpiCards$: Observable<KPICardData[]>;
|
|
16
|
+
suiteHierarchy$: Observable<SuiteHierarchyNode[]>;
|
|
17
|
+
recentRuns$: Observable<TestRunSummary[]>;
|
|
18
|
+
constructor(instrumentationService: TestingInstrumentationService, cdr: ChangeDetectorRef);
|
|
19
|
+
ngOnInit(): Promise<void>;
|
|
20
|
+
ngOnDestroy(): void;
|
|
21
|
+
refreshData(): void;
|
|
22
|
+
onSuiteSelect(suiteId: string): void;
|
|
23
|
+
viewRunDetail(run: TestRunSummary): void;
|
|
24
|
+
formatDuration(milliseconds: number): string;
|
|
25
|
+
private emitStateChange;
|
|
26
|
+
private createKPICards;
|
|
27
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TestingOverviewComponent, never>;
|
|
28
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TestingOverviewComponent, "app-testing-overview", never, { "initialState": { "alias": "initialState"; "required": false; }; }, { "stateChange": "stateChange"; }, never, never, false, never>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=testing-overview.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing-overview.component.d.ts","sourceRoot":"","sources":["../../../src/Testing/components/testing-overview.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAiB,YAAY,EAAE,iBAAiB,EAA2B,MAAM,eAAe,CAAC;AACtI,OAAO,EAAE,UAAU,EAAW,MAAM,MAAM,CAAC;AAI3C,OAAO,EAAE,6BAA6B,EAAE,oBAAoB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACtJ,OAAO,EAAE,WAAW,EAAE,MAAM,gDAAgD,CAAC;;AAG7E,qBA+Ua,wBAAyB,YAAW,MAAM,EAAE,SAAS;IAe9D,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,GAAG;IAfJ,YAAY,CAAC,EAAE,GAAG,CAAC;IAClB,WAAW,oBAA2B;IAEhD,OAAO,CAAC,QAAQ,CAAuB;IAEvC,SAAS,UAAS;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEtC,KAAK,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC;IACxC,SAAS,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IACrC,eAAe,EAAE,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAClD,WAAW,EAAE,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;gBAGhC,sBAAsB,EAAE,6BAA6B,EACrD,GAAG,EAAE,iBAAiB;IAmB1B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAa/B,WAAW,IAAI,IAAI;IAKnB,WAAW,IAAI,IAAI;IAInB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IASpC,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAIxC,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAQ5C,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,cAAc;yCApFX,wBAAwB;2CAAxB,wBAAwB;CA+HpC"}
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { takeUntil, map } from 'rxjs/operators';
|
|
4
|
+
import { CompositeKey } from '@memberjunction/core';
|
|
5
|
+
import { SharedService } from '@memberjunction/ng-shared';
|
|
6
|
+
import { TestEngineBase } from '@memberjunction/testing-engine-base';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../services/testing-instrumentation.service";
|
|
9
|
+
import * as i2 from "../../AI/components/widgets/kpi-card.component";
|
|
10
|
+
import * as i3 from "./widgets/test-status-badge.component";
|
|
11
|
+
import * as i4 from "./widgets/score-indicator.component";
|
|
12
|
+
import * as i5 from "./widgets/suite-tree.component";
|
|
13
|
+
import * as i6 from "@angular/common";
|
|
14
|
+
const _forTrack0 = ($index, $item) => $item.title;
|
|
15
|
+
const _forTrack1 = ($index, $item) => $item.id;
|
|
16
|
+
const _c0 = () => [];
|
|
17
|
+
function TestingOverviewComponent_For_11_Template(rf, ctx) { if (rf & 1) {
|
|
18
|
+
i0.ɵɵelement(0, "app-kpi-card", 7);
|
|
19
|
+
} if (rf & 2) {
|
|
20
|
+
const kpi_r1 = ctx.$implicit;
|
|
21
|
+
i0.ɵɵproperty("data", kpi_r1);
|
|
22
|
+
} }
|
|
23
|
+
function TestingOverviewComponent_For_24_Template(rf, ctx) { if (rf & 1) {
|
|
24
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
25
|
+
i0.ɵɵelementStart(0, "div", 15)(1, "div", 20);
|
|
26
|
+
i0.ɵɵlistener("click", function TestingOverviewComponent_For_24_Template_div_click_1_listener() { const run_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.viewRunDetail(run_r3)); });
|
|
27
|
+
i0.ɵɵelementStart(2, "div", 21);
|
|
28
|
+
i0.ɵɵtext(3);
|
|
29
|
+
i0.ɵɵelementEnd();
|
|
30
|
+
i0.ɵɵelementStart(4, "div", 22);
|
|
31
|
+
i0.ɵɵtext(5);
|
|
32
|
+
i0.ɵɵpipe(6, "date");
|
|
33
|
+
i0.ɵɵelementEnd()();
|
|
34
|
+
i0.ɵɵelementStart(7, "div", 23)(8, "div", 24);
|
|
35
|
+
i0.ɵɵelement(9, "app-test-status-badge", 25)(10, "app-score-indicator", 26);
|
|
36
|
+
i0.ɵɵelementEnd()()();
|
|
37
|
+
} if (rf & 2) {
|
|
38
|
+
const run_r3 = ctx.$implicit;
|
|
39
|
+
i0.ɵɵadvance(3);
|
|
40
|
+
i0.ɵɵtextInterpolate(run_r3.testName);
|
|
41
|
+
i0.ɵɵadvance(2);
|
|
42
|
+
i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind2(6, 8, run_r3.runDateTime, "short"), " \u2022 ", run_r3.testType, " ");
|
|
43
|
+
i0.ɵɵadvance(4);
|
|
44
|
+
i0.ɵɵproperty("status", run_r3.status)("showIcon", false);
|
|
45
|
+
i0.ɵɵadvance();
|
|
46
|
+
i0.ɵɵproperty("score", run_r3.score)("showBar", false)("showIcon", false);
|
|
47
|
+
} }
|
|
48
|
+
function TestingOverviewComponent_ForEmpty_25_Template(rf, ctx) { if (rf & 1) {
|
|
49
|
+
i0.ɵɵelementStart(0, "div", 16);
|
|
50
|
+
i0.ɵɵtext(1, "No recent test runs");
|
|
51
|
+
i0.ɵɵelementEnd();
|
|
52
|
+
} }
|
|
53
|
+
function TestingOverviewComponent_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
54
|
+
i0.ɵɵelementStart(0, "div", 27)(1, "div", 28);
|
|
55
|
+
i0.ɵɵtext(2, "Failed Tests");
|
|
56
|
+
i0.ɵɵelementEnd();
|
|
57
|
+
i0.ɵɵelementStart(3, "div", 29);
|
|
58
|
+
i0.ɵɵtext(4);
|
|
59
|
+
i0.ɵɵelementEnd()();
|
|
60
|
+
i0.ɵɵelementStart(5, "div", 27)(6, "div", 28);
|
|
61
|
+
i0.ɵɵtext(7, "Skipped Tests");
|
|
62
|
+
i0.ɵɵelementEnd();
|
|
63
|
+
i0.ɵɵelementStart(8, "div", 30);
|
|
64
|
+
i0.ɵɵtext(9);
|
|
65
|
+
i0.ɵɵelementEnd()();
|
|
66
|
+
i0.ɵɵelementStart(10, "div", 27)(11, "div", 28);
|
|
67
|
+
i0.ɵɵtext(12, "Avg Duration");
|
|
68
|
+
i0.ɵɵelementEnd();
|
|
69
|
+
i0.ɵɵelementStart(13, "div", 31);
|
|
70
|
+
i0.ɵɵtext(14);
|
|
71
|
+
i0.ɵɵelementEnd()();
|
|
72
|
+
} if (rf & 2) {
|
|
73
|
+
const kpis_r5 = ctx;
|
|
74
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
75
|
+
i0.ɵɵadvance(4);
|
|
76
|
+
i0.ɵɵtextInterpolate(kpis_r5.failedTests);
|
|
77
|
+
i0.ɵɵadvance(5);
|
|
78
|
+
i0.ɵɵtextInterpolate(kpis_r5.skippedTests);
|
|
79
|
+
i0.ɵɵadvance(5);
|
|
80
|
+
i0.ɵɵtextInterpolate(ctx_r3.formatDuration(kpis_r5.averageDuration));
|
|
81
|
+
} }
|
|
82
|
+
export class TestingOverviewComponent {
|
|
83
|
+
instrumentationService;
|
|
84
|
+
cdr;
|
|
85
|
+
initialState;
|
|
86
|
+
stateChange = new EventEmitter();
|
|
87
|
+
destroy$ = new Subject();
|
|
88
|
+
isLoading = false;
|
|
89
|
+
selectedSuiteId = null;
|
|
90
|
+
kpis$;
|
|
91
|
+
kpiCards$;
|
|
92
|
+
suiteHierarchy$;
|
|
93
|
+
recentRuns$;
|
|
94
|
+
constructor(instrumentationService, cdr) {
|
|
95
|
+
this.instrumentationService = instrumentationService;
|
|
96
|
+
this.cdr = cdr;
|
|
97
|
+
this.kpis$ = this.instrumentationService.kpis$;
|
|
98
|
+
this.suiteHierarchy$ = this.instrumentationService.suiteHierarchy$;
|
|
99
|
+
this.recentRuns$ = this.instrumentationService.testRuns$;
|
|
100
|
+
this.kpiCards$ = this.kpis$.pipe(map(kpis => this.createKPICards(kpis)), takeUntil(this.destroy$));
|
|
101
|
+
this.instrumentationService.isLoading$.pipe(takeUntil(this.destroy$)).subscribe(loading => {
|
|
102
|
+
this.isLoading = loading;
|
|
103
|
+
this.cdr.markForCheck();
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
async ngOnInit() {
|
|
107
|
+
if (this.initialState) {
|
|
108
|
+
this.selectedSuiteId = this.initialState.selectedSuiteId || null;
|
|
109
|
+
}
|
|
110
|
+
// Initialize TestEngineBase with false for verbose logging
|
|
111
|
+
// This will load and cache all test metadata (Tests, Test Suites, Test Types, etc.)
|
|
112
|
+
const engine = TestEngineBase.Instance;
|
|
113
|
+
await engine.Config(false);
|
|
114
|
+
this.refreshData();
|
|
115
|
+
}
|
|
116
|
+
ngOnDestroy() {
|
|
117
|
+
this.destroy$.next();
|
|
118
|
+
this.destroy$.complete();
|
|
119
|
+
}
|
|
120
|
+
refreshData() {
|
|
121
|
+
this.instrumentationService.refresh();
|
|
122
|
+
}
|
|
123
|
+
onSuiteSelect(suiteId) {
|
|
124
|
+
this.selectedSuiteId = suiteId;
|
|
125
|
+
this.instrumentationService.setSuiteFilter(suiteId);
|
|
126
|
+
this.emitStateChange();
|
|
127
|
+
// Open the Test Suite entity record
|
|
128
|
+
SharedService.Instance.OpenEntityRecord('MJ: Test Suites', CompositeKey.FromID(suiteId));
|
|
129
|
+
}
|
|
130
|
+
viewRunDetail(run) {
|
|
131
|
+
SharedService.Instance.OpenEntityRecord('MJ: Test Runs', CompositeKey.FromID(run.id));
|
|
132
|
+
}
|
|
133
|
+
formatDuration(milliseconds) {
|
|
134
|
+
if (milliseconds < 1000)
|
|
135
|
+
return `${milliseconds}ms`;
|
|
136
|
+
const seconds = Math.floor(milliseconds / 1000);
|
|
137
|
+
const minutes = Math.floor(seconds / 60);
|
|
138
|
+
if (minutes > 0)
|
|
139
|
+
return `${minutes}m ${seconds % 60}s`;
|
|
140
|
+
return `${seconds}s`;
|
|
141
|
+
}
|
|
142
|
+
emitStateChange() {
|
|
143
|
+
this.stateChange.emit({
|
|
144
|
+
selectedSuiteId: this.selectedSuiteId
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
createKPICards(kpis) {
|
|
148
|
+
return [
|
|
149
|
+
{
|
|
150
|
+
title: 'Active Tests',
|
|
151
|
+
value: kpis.totalTestsActive,
|
|
152
|
+
icon: 'fa-flask',
|
|
153
|
+
color: 'primary',
|
|
154
|
+
subtitle: `${kpis.totalTestRuns} runs this period`
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
title: 'Pass Rate',
|
|
158
|
+
value: `${kpis.passRateThisMonth.toFixed(1)}%`,
|
|
159
|
+
icon: 'fa-check-circle',
|
|
160
|
+
color: kpis.passRateThisMonth >= 90 ? 'success' : kpis.passRateThisMonth >= 75 ? 'warning' : 'danger',
|
|
161
|
+
trend: kpis.passRateTrend !== 0 ? {
|
|
162
|
+
direction: kpis.passRateTrend > 0 ? 'up' : 'down',
|
|
163
|
+
percentage: Math.abs(kpis.passRateTrend),
|
|
164
|
+
period: 'vs previous period'
|
|
165
|
+
} : undefined
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
title: 'Total Cost',
|
|
169
|
+
value: `$${kpis.totalCostThisMonth.toFixed(2)}`,
|
|
170
|
+
icon: 'fa-dollar-sign',
|
|
171
|
+
color: 'warning',
|
|
172
|
+
subtitle: 'This period'
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
title: 'Avg Duration',
|
|
176
|
+
value: this.formatDuration(kpis.averageDuration),
|
|
177
|
+
icon: 'fa-clock',
|
|
178
|
+
color: 'info',
|
|
179
|
+
subtitle: 'Per test'
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
title: 'Pending Review',
|
|
183
|
+
value: kpis.testsPendingReview,
|
|
184
|
+
icon: 'fa-clipboard-check',
|
|
185
|
+
color: kpis.testsPendingReview > 10 ? 'warning' : 'success',
|
|
186
|
+
subtitle: 'Tests need feedback'
|
|
187
|
+
}
|
|
188
|
+
];
|
|
189
|
+
}
|
|
190
|
+
static ɵfac = function TestingOverviewComponent_Factory(t) { return new (t || TestingOverviewComponent)(i0.ɵɵdirectiveInject(i1.TestingInstrumentationService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
191
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TestingOverviewComponent, selectors: [["app-testing-overview"]], inputs: { initialState: "initialState" }, outputs: { stateChange: "stateChange" }, decls: 35, vars: 17, consts: [[1, "testing-overview"], [1, "overview-header"], [1, "fa-solid", "fa-chart-line"], [1, "header-controls"], [1, "refresh-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-refresh"], [1, "kpi-section"], [3, "data"], [1, "content-grid"], [1, "grid-item", "suite-panel"], [3, "suiteSelect", "suites", "selectedSuiteId"], [1, "grid-item", "recent-runs-panel"], [1, "panel-header"], [1, "fa-solid", "fa-history"], [1, "runs-list"], [1, "run-item"], [1, "no-data"], [1, "grid-item", "stats-panel"], [1, "fa-solid", "fa-chart-bar"], [1, "stats-content"], [1, "run-info", 3, "click"], [1, "run-name"], [1, "run-meta"], [1, "run-actions"], [1, "run-metrics"], [3, "status", "showIcon"], [3, "score", "showBar", "showIcon"], [1, "stat-item"], [1, "stat-label"], [1, "stat-value", "failed"], [1, "stat-value", "skipped"], [1, "stat-value"]], template: function TestingOverviewComponent_Template(rf, ctx) { if (rf & 1) {
|
|
192
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "h2");
|
|
193
|
+
i0.ɵɵelement(3, "i", 2);
|
|
194
|
+
i0.ɵɵtext(4, " Testing Overview ");
|
|
195
|
+
i0.ɵɵelementEnd();
|
|
196
|
+
i0.ɵɵelementStart(5, "div", 3)(6, "button", 4);
|
|
197
|
+
i0.ɵɵlistener("click", function TestingOverviewComponent_Template_button_click_6_listener() { return ctx.refreshData(); });
|
|
198
|
+
i0.ɵɵelement(7, "i", 5);
|
|
199
|
+
i0.ɵɵtext(8, " Refresh ");
|
|
200
|
+
i0.ɵɵelementEnd()()();
|
|
201
|
+
i0.ɵɵelementStart(9, "div", 6);
|
|
202
|
+
i0.ɵɵrepeaterCreate(10, TestingOverviewComponent_For_11_Template, 1, 1, "app-kpi-card", 7, _forTrack0);
|
|
203
|
+
i0.ɵɵpipe(12, "async");
|
|
204
|
+
i0.ɵɵelementEnd();
|
|
205
|
+
i0.ɵɵelementStart(13, "div", 8)(14, "div", 9)(15, "app-suite-tree", 10);
|
|
206
|
+
i0.ɵɵpipe(16, "async");
|
|
207
|
+
i0.ɵɵlistener("suiteSelect", function TestingOverviewComponent_Template_app_suite_tree_suiteSelect_15_listener($event) { return ctx.onSuiteSelect($event); });
|
|
208
|
+
i0.ɵɵelementEnd()();
|
|
209
|
+
i0.ɵɵelementStart(17, "div", 11)(18, "div", 12)(19, "h3");
|
|
210
|
+
i0.ɵɵelement(20, "i", 13);
|
|
211
|
+
i0.ɵɵtext(21, " Recent Test Runs ");
|
|
212
|
+
i0.ɵɵelementEnd()();
|
|
213
|
+
i0.ɵɵelementStart(22, "div", 14);
|
|
214
|
+
i0.ɵɵrepeaterCreate(23, TestingOverviewComponent_For_24_Template, 11, 11, "div", 15, _forTrack1, false, TestingOverviewComponent_ForEmpty_25_Template, 2, 0, "div", 16);
|
|
215
|
+
i0.ɵɵpipe(26, "async");
|
|
216
|
+
i0.ɵɵelementEnd()();
|
|
217
|
+
i0.ɵɵelementStart(27, "div", 17)(28, "div", 12)(29, "h3");
|
|
218
|
+
i0.ɵɵelement(30, "i", 18);
|
|
219
|
+
i0.ɵɵtext(31, " Quick Stats ");
|
|
220
|
+
i0.ɵɵelementEnd()();
|
|
221
|
+
i0.ɵɵelementStart(32, "div", 19);
|
|
222
|
+
i0.ɵɵtemplate(33, TestingOverviewComponent_Conditional_33_Template, 15, 3);
|
|
223
|
+
i0.ɵɵpipe(34, "async");
|
|
224
|
+
i0.ɵɵelementEnd()()()();
|
|
225
|
+
} if (rf & 2) {
|
|
226
|
+
let tmp_3_0;
|
|
227
|
+
let tmp_5_0;
|
|
228
|
+
let tmp_6_0;
|
|
229
|
+
i0.ɵɵadvance(6);
|
|
230
|
+
i0.ɵɵproperty("disabled", ctx.isLoading);
|
|
231
|
+
i0.ɵɵadvance();
|
|
232
|
+
i0.ɵɵclassProp("spinning", ctx.isLoading);
|
|
233
|
+
i0.ɵɵadvance(3);
|
|
234
|
+
i0.ɵɵrepeater(i0.ɵɵpipeBind1(12, 7, ctx.kpiCards$));
|
|
235
|
+
i0.ɵɵadvance(5);
|
|
236
|
+
i0.ɵɵproperty("suites", (tmp_3_0 = i0.ɵɵpipeBind1(16, 9, ctx.suiteHierarchy$)) !== null && tmp_3_0 !== undefined ? tmp_3_0 : i0.ɵɵpureFunction0(15, _c0))("selectedSuiteId", ctx.selectedSuiteId);
|
|
237
|
+
i0.ɵɵadvance(8);
|
|
238
|
+
i0.ɵɵrepeater((tmp_5_0 = i0.ɵɵpipeBind1(26, 11, ctx.recentRuns$)) !== null && tmp_5_0 !== undefined ? tmp_5_0 : i0.ɵɵpureFunction0(16, _c0));
|
|
239
|
+
i0.ɵɵadvance(10);
|
|
240
|
+
i0.ɵɵconditional((tmp_6_0 = i0.ɵɵpipeBind1(34, 13, ctx.kpis$)) ? 33 : -1, tmp_6_0);
|
|
241
|
+
} }, dependencies: [i2.KPICardComponent, i3.TestStatusBadgeComponent, i4.ScoreIndicatorComponent, i5.SuiteTreeComponent, i6.AsyncPipe, i6.DatePipe], styles: [".testing-overview[_ngcontent-%COMP%] {\n padding: 20px;\n height: 100%;\n overflow-y: auto;\n background: #f8f9fa;\n }\n\n .overview-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 24px;\n background: white;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n }\n\n .overview-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .overview-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n }\n\n .refresh-btn[_ngcontent-%COMP%] {\n background: #2196f3;\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n transition: background 0.2s ease;\n }\n\n .refresh-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #1976d2;\n }\n\n .refresh-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .refresh-btn[_ngcontent-%COMP%] i.spinning[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n }\n\n @keyframes _ngcontent-%COMP%_spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n\n .kpi-section[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n }\n\n .content-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 300px 1fr 250px;\n gap: 20px;\n min-height: 500px;\n }\n\n .grid-item[_ngcontent-%COMP%] {\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n }\n\n .panel-header[_ngcontent-%COMP%] {\n padding: 16px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .panel-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .panel-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n }\n\n .runs-list[_ngcontent-%COMP%] {\n max-height: 600px;\n overflow-y: auto;\n }\n\n .run-item[_ngcontent-%COMP%] {\n padding: 16px;\n border-bottom: 1px solid #f0f0f0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n transition: background 0.2s ease;\n }\n\n .run-item[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n }\n\n .run-info[_ngcontent-%COMP%] {\n flex: 1;\n cursor: pointer;\n }\n\n .run-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: #333;\n margin-bottom: 4px;\n }\n\n .run-meta[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #666;\n }\n\n .run-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n }\n\n .run-metrics[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n }\n\n .rerun-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid #2196f3;\n border-radius: 4px;\n background: white;\n color: #2196f3;\n cursor: pointer;\n transition: all 0.2s ease;\n padding: 0;\n }\n\n .rerun-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #2196f3;\n color: white;\n }\n\n .rerun-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .rerun-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n }\n\n .stats-content[_ngcontent-%COMP%] {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .stat-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #666;\n font-weight: 600;\n text-transform: uppercase;\n }\n\n .stat-value[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n color: #333;\n }\n\n .stat-value.failed[_ngcontent-%COMP%] {\n color: #f44336;\n }\n\n .stat-value.skipped[_ngcontent-%COMP%] {\n color: #9e9e9e;\n }\n\n .no-data[_ngcontent-%COMP%] {\n padding: 40px 20px;\n text-align: center;\n color: #999;\n font-size: 13px;\n }\n\n @media (max-width: 1200px) {\n .content-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr 1fr;\n }\n\n .stats-panel[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n }\n }\n\n @media (max-width: 768px) {\n .content-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n }"], changeDetection: 0 });
|
|
242
|
+
}
|
|
243
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestingOverviewComponent, [{
|
|
244
|
+
type: Component,
|
|
245
|
+
args: [{ selector: 'app-testing-overview', changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
246
|
+
<div class="testing-overview">
|
|
247
|
+
<div class="overview-header">
|
|
248
|
+
<h2>
|
|
249
|
+
<i class="fa-solid fa-chart-line"></i>
|
|
250
|
+
Testing Overview
|
|
251
|
+
</h2>
|
|
252
|
+
<div class="header-controls">
|
|
253
|
+
<button class="refresh-btn" (click)="refreshData()" [disabled]="isLoading">
|
|
254
|
+
<i class="fa-solid fa-refresh" [class.spinning]="isLoading"></i>
|
|
255
|
+
Refresh
|
|
256
|
+
</button>
|
|
257
|
+
</div>
|
|
258
|
+
</div>
|
|
259
|
+
|
|
260
|
+
<!-- KPI Cards -->
|
|
261
|
+
<div class="kpi-section">
|
|
262
|
+
@for (kpi of kpiCards$ | async; track kpi.title) {
|
|
263
|
+
<app-kpi-card [data]="kpi"></app-kpi-card>
|
|
264
|
+
}
|
|
265
|
+
</div>
|
|
266
|
+
|
|
267
|
+
<!-- Main Content Grid -->
|
|
268
|
+
<div class="content-grid">
|
|
269
|
+
<!-- Suite Hierarchy -->
|
|
270
|
+
<div class="grid-item suite-panel">
|
|
271
|
+
<app-suite-tree
|
|
272
|
+
[suites]="(suiteHierarchy$ | async) ?? []"
|
|
273
|
+
[selectedSuiteId]="selectedSuiteId"
|
|
274
|
+
(suiteSelect)="onSuiteSelect($event)"
|
|
275
|
+
></app-suite-tree>
|
|
276
|
+
</div>
|
|
277
|
+
|
|
278
|
+
<!-- Recent Test Runs -->
|
|
279
|
+
<div class="grid-item recent-runs-panel">
|
|
280
|
+
<div class="panel-header">
|
|
281
|
+
<h3>
|
|
282
|
+
<i class="fa-solid fa-history"></i>
|
|
283
|
+
Recent Test Runs
|
|
284
|
+
</h3>
|
|
285
|
+
</div>
|
|
286
|
+
<div class="runs-list">
|
|
287
|
+
@for (run of (recentRuns$ | async) ?? []; track run.id) {
|
|
288
|
+
<div class="run-item">
|
|
289
|
+
<div class="run-info" (click)="viewRunDetail(run)">
|
|
290
|
+
<div class="run-name">{{ run.testName }}</div>
|
|
291
|
+
<div class="run-meta">
|
|
292
|
+
{{ run.runDateTime | date:'short' }} • {{ run.testType }}
|
|
293
|
+
</div>
|
|
294
|
+
</div>
|
|
295
|
+
<div class="run-actions">
|
|
296
|
+
<div class="run-metrics">
|
|
297
|
+
<app-test-status-badge [status]="run.status" [showIcon]="false"></app-test-status-badge>
|
|
298
|
+
<app-score-indicator [score]="run.score" [showBar]="false" [showIcon]="false"></app-score-indicator>
|
|
299
|
+
</div>
|
|
300
|
+
</div>
|
|
301
|
+
</div>
|
|
302
|
+
} @empty {
|
|
303
|
+
<div class="no-data">No recent test runs</div>
|
|
304
|
+
}
|
|
305
|
+
</div>
|
|
306
|
+
</div>
|
|
307
|
+
|
|
308
|
+
<!-- Quick Stats -->
|
|
309
|
+
<div class="grid-item stats-panel">
|
|
310
|
+
<div class="panel-header">
|
|
311
|
+
<h3>
|
|
312
|
+
<i class="fa-solid fa-chart-bar"></i>
|
|
313
|
+
Quick Stats
|
|
314
|
+
</h3>
|
|
315
|
+
</div>
|
|
316
|
+
<div class="stats-content">
|
|
317
|
+
@if (kpis$ | async; as kpis) {
|
|
318
|
+
<div class="stat-item">
|
|
319
|
+
<div class="stat-label">Failed Tests</div>
|
|
320
|
+
<div class="stat-value failed">{{ kpis.failedTests }}</div>
|
|
321
|
+
</div>
|
|
322
|
+
<div class="stat-item">
|
|
323
|
+
<div class="stat-label">Skipped Tests</div>
|
|
324
|
+
<div class="stat-value skipped">{{ kpis.skippedTests }}</div>
|
|
325
|
+
</div>
|
|
326
|
+
<div class="stat-item">
|
|
327
|
+
<div class="stat-label">Avg Duration</div>
|
|
328
|
+
<div class="stat-value">{{ formatDuration(kpis.averageDuration) }}</div>
|
|
329
|
+
</div>
|
|
330
|
+
}
|
|
331
|
+
</div>
|
|
332
|
+
</div>
|
|
333
|
+
</div>
|
|
334
|
+
</div>
|
|
335
|
+
`, styles: ["\n .testing-overview {\n padding: 20px;\n height: 100%;\n overflow-y: auto;\n background: #f8f9fa;\n }\n\n .overview-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 24px;\n background: white;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n }\n\n .overview-header h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .overview-header h2 i {\n color: #2196f3;\n }\n\n .refresh-btn {\n background: #2196f3;\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n transition: background 0.2s ease;\n }\n\n .refresh-btn:hover:not(:disabled) {\n background: #1976d2;\n }\n\n .refresh-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .refresh-btn i.spinning {\n animation: spin 1s linear infinite;\n }\n\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n\n .kpi-section {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n }\n\n .content-grid {\n display: grid;\n grid-template-columns: 300px 1fr 250px;\n gap: 20px;\n min-height: 500px;\n }\n\n .grid-item {\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n }\n\n .panel-header {\n padding: 16px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .panel-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .panel-header h3 i {\n color: #2196f3;\n }\n\n .runs-list {\n max-height: 600px;\n overflow-y: auto;\n }\n\n .run-item {\n padding: 16px;\n border-bottom: 1px solid #f0f0f0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n transition: background 0.2s ease;\n }\n\n .run-item:hover {\n background: #f8f9fa;\n }\n\n .run-info {\n flex: 1;\n cursor: pointer;\n }\n\n .run-name {\n font-size: 13px;\n font-weight: 500;\n color: #333;\n margin-bottom: 4px;\n }\n\n .run-meta {\n font-size: 11px;\n color: #666;\n }\n\n .run-actions {\n display: flex;\n gap: 12px;\n align-items: center;\n }\n\n .run-metrics {\n display: flex;\n gap: 12px;\n align-items: center;\n }\n\n .rerun-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid #2196f3;\n border-radius: 4px;\n background: white;\n color: #2196f3;\n cursor: pointer;\n transition: all 0.2s ease;\n padding: 0;\n }\n\n .rerun-btn:hover:not(:disabled) {\n background: #2196f3;\n color: white;\n }\n\n .rerun-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .rerun-btn i {\n font-size: 14px;\n }\n\n .stats-content {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .stat-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .stat-label {\n font-size: 11px;\n color: #666;\n font-weight: 600;\n text-transform: uppercase;\n }\n\n .stat-value {\n font-size: 20px;\n font-weight: 700;\n color: #333;\n }\n\n .stat-value.failed {\n color: #f44336;\n }\n\n .stat-value.skipped {\n color: #9e9e9e;\n }\n\n .no-data {\n padding: 40px 20px;\n text-align: center;\n color: #999;\n font-size: 13px;\n }\n\n @media (max-width: 1200px) {\n .content-grid {\n grid-template-columns: 1fr 1fr;\n }\n\n .stats-panel {\n grid-column: 1 / -1;\n }\n }\n\n @media (max-width: 768px) {\n .content-grid {\n grid-template-columns: 1fr;\n }\n }\n "] }]
|
|
336
|
+
}], () => [{ type: i1.TestingInstrumentationService }, { type: i0.ChangeDetectorRef }], { initialState: [{
|
|
337
|
+
type: Input
|
|
338
|
+
}], stateChange: [{
|
|
339
|
+
type: Output
|
|
340
|
+
}] }); })();
|
|
341
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestingOverviewComponent, { className: "TestingOverviewComponent", filePath: "src/Testing/components/testing-overview.component.ts", lineNumber: 345 }); })();
|
|
342
|
+
//# sourceMappingURL=testing-overview.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing-overview.component.js","sourceRoot":"","sources":["../../../src/Testing/components/testing-overview.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { OnInit, OnDestroy, EventEmitter, ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { TestingInstrumentationService, VersionMetrics } from '../services/testing-instrumentation.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
interface VersionComparison {
|
|
6
|
+
testName: string;
|
|
7
|
+
versionA: VersionTestData;
|
|
8
|
+
versionB: VersionTestData;
|
|
9
|
+
regression: boolean;
|
|
10
|
+
improvement: boolean;
|
|
11
|
+
scoreDelta: number;
|
|
12
|
+
costDelta: number;
|
|
13
|
+
durationDelta: number;
|
|
14
|
+
}
|
|
15
|
+
interface VersionTestData {
|
|
16
|
+
avgScore: number;
|
|
17
|
+
avgCost: number;
|
|
18
|
+
avgDuration: number;
|
|
19
|
+
passRate: number;
|
|
20
|
+
runCount: number;
|
|
21
|
+
}
|
|
22
|
+
export declare class TestingVersionComparisonComponent implements OnInit, OnDestroy {
|
|
23
|
+
private instrumentationService;
|
|
24
|
+
private cdr;
|
|
25
|
+
initialState?: any;
|
|
26
|
+
stateChange: EventEmitter<any>;
|
|
27
|
+
private destroy$;
|
|
28
|
+
versionA: string;
|
|
29
|
+
versionB: string;
|
|
30
|
+
filter: 'all' | 'regressions' | 'improvements' | 'unchanged';
|
|
31
|
+
versions$: Observable<VersionMetrics[]>;
|
|
32
|
+
comparisons$: Observable<VersionComparison[]>;
|
|
33
|
+
filteredComparisons$: Observable<VersionComparison[]>;
|
|
34
|
+
regressionCount$: Observable<number>;
|
|
35
|
+
improvementCount$: Observable<number>;
|
|
36
|
+
unchangedCount$: Observable<number>;
|
|
37
|
+
totalCostDelta$: Observable<number>;
|
|
38
|
+
versionAMetrics$: Observable<any>;
|
|
39
|
+
versionBMetrics$: Observable<any>;
|
|
40
|
+
constructor(instrumentationService: TestingInstrumentationService, cdr: ChangeDetectorRef);
|
|
41
|
+
ngOnInit(): void;
|
|
42
|
+
ngOnDestroy(): void;
|
|
43
|
+
private setupObservables;
|
|
44
|
+
private generateComparisons;
|
|
45
|
+
private getRunsForVersion;
|
|
46
|
+
private aggregateTestData;
|
|
47
|
+
private filterComparisons;
|
|
48
|
+
private calculateVersionMetrics;
|
|
49
|
+
onVersionChange(): void;
|
|
50
|
+
setFilter(filter: 'all' | 'regressions' | 'improvements' | 'unchanged'): void;
|
|
51
|
+
refresh(): void;
|
|
52
|
+
formatDuration(milliseconds: number): string;
|
|
53
|
+
private emitStateChange;
|
|
54
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TestingVersionComparisonComponent, never>;
|
|
55
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TestingVersionComparisonComponent, "app-testing-version-comparison", never, { "initialState": { "alias": "initialState"; "required": false; }; }, { "stateChange": "stateChange"; }, never, never, false, never>;
|
|
56
|
+
}
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=testing-version-comparison.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing-version-comparison.component.d.ts","sourceRoot":"","sources":["../../../src/Testing/components/testing-version-comparison.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAiB,YAAY,EAAE,iBAAiB,EAA2B,MAAM,eAAe,CAAC;AACtI,OAAO,EAAE,UAAU,EAA8B,MAAM,MAAM,CAAC;AAE9D,OAAO,EAAE,6BAA6B,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;;AAE5G,UAAU,iBAAiB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAgqBa,iCAAkC,YAAW,MAAM,EAAE,SAAS;IAqBvE,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,GAAG;IArBJ,YAAY,CAAC,EAAE,GAAG,CAAC;IAClB,WAAW,oBAA2B;IAEhD,OAAO,CAAC,QAAQ,CAAuB;IAEvC,QAAQ,SAAM;IACd,QAAQ,SAAM;IACd,MAAM,EAAE,KAAK,GAAG,aAAa,GAAG,cAAc,GAAG,WAAW,CAAS;IAErE,SAAS,EAAG,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;IACzC,YAAY,EAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC/C,oBAAoB,EAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACvD,gBAAgB,EAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACtC,iBAAiB,EAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACvC,eAAe,EAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACrC,eAAe,EAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACrC,gBAAgB,EAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IACnC,gBAAgB,EAAG,UAAU,CAAC,GAAG,CAAC,CAAC;gBAGzB,sBAAsB,EAAE,6BAA6B,EACrD,GAAG,EAAE,iBAAiB;IAGhC,QAAQ,IAAI,IAAI;IAUhB,WAAW,IAAI,IAAI;IAKnB,OAAO,CAAC,gBAAgB;IAgDxB,OAAO,CAAC,mBAAmB;IAuC3B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,uBAAuB;IAsB/B,eAAe,IAAI,IAAI;IAKvB,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,aAAa,GAAG,cAAc,GAAG,WAAW,GAAG,IAAI;IAM7E,OAAO,IAAI,IAAI;IAIf,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAQ5C,OAAO,CAAC,eAAe;yCA9MZ,iCAAiC;2CAAjC,iCAAiC;CAqN7C"}
|