Skip to content

Commit 5a60e50

Browse files
authored
feat(tabstops-auto-target-page-vis): fixes the telemetry source for auto-generated instances (#5257)
* feat(tabstops-auto-target-page-vis): fixes the telemetry source for auto-generated instances * update broken snapshots
1 parent 7ba07f8 commit 5a60e50

File tree

8 files changed

+57
-17
lines changed

8 files changed

+57
-17
lines changed

src/DetailsView/actions/tab-stop-requirement-action-message-creator.ts

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@ import {
1313
UpdateTabStopInstancePayload,
1414
UpdateTabStopRequirementStatusPayload,
1515
} from 'background/actions/action-payloads';
16+
import { TelemetryEventSource } from 'common/extension-telemetry-events';
1617
import { DevToolActionMessageCreator } from 'common/message-creators/dev-tool-action-message-creator';
18+
import { ActionMessageDispatcher } from 'common/message-creators/types/dispatcher';
1719
import { Messages } from 'common/messages';
20+
import { TelemetryDataFactory } from 'common/telemetry-data-factory';
1821
import {
1922
AutomatedTabStopRequirementResult,
2023
TabStopRequirementResult,
@@ -25,9 +28,17 @@ import { TabStopRequirementStatus } from '../../common/types/store-data/visualiz
2528
const messages = Messages.Visualizations.TabStops;
2629

2730
export class TabStopRequirementActionMessageCreator extends DevToolActionMessageCreator {
31+
constructor(
32+
protected readonly telemetryFactory: TelemetryDataFactory,
33+
protected readonly dispatcher: ActionMessageDispatcher,
34+
private readonly source: TelemetryEventSource,
35+
) {
36+
super(telemetryFactory, dispatcher);
37+
}
2838
public addTabStopInstance(tabStopRequirementResult: TabStopRequirementResult): void {
2939
const telemetry = this.telemetryFactory.forTabStopRequirement(
3040
tabStopRequirementResult.requirementId,
41+
this.source,
3142
);
3243

3344
const payload: AddTabStopInstancePayload = {
@@ -46,7 +57,7 @@ export class TabStopRequirementActionMessageCreator extends DevToolActionMessage
4657
id: string,
4758
description: string,
4859
): void {
49-
const telemetry = this.telemetryFactory.forTabStopRequirement(requirementId);
60+
const telemetry = this.telemetryFactory.forTabStopRequirement(requirementId, this.source);
5061

5162
const payload: UpdateTabStopInstancePayload = {
5263
requirementId,
@@ -62,7 +73,7 @@ export class TabStopRequirementActionMessageCreator extends DevToolActionMessage
6273
}
6374

6475
public removeTabStopInstance(requirementId: TabStopRequirementId, id: string): void {
65-
const telemetry = this.telemetryFactory.forTabStopRequirement(requirementId);
76+
const telemetry = this.telemetryFactory.forTabStopRequirement(requirementId, this.source);
6677
const payload: RemoveTabStopInstancePayload = {
6778
requirementId,
6879
id,
@@ -79,7 +90,7 @@ export class TabStopRequirementActionMessageCreator extends DevToolActionMessage
7990
requirementId: TabStopRequirementId,
8091
status: TabStopRequirementStatus,
8192
): void {
82-
const telemetry = this.telemetryFactory.forTabStopRequirement(requirementId);
93+
const telemetry = this.telemetryFactory.forTabStopRequirement(requirementId, this.source);
8394

8495
const payload: UpdateTabStopRequirementStatusPayload = {
8596
requirementId,
@@ -94,7 +105,7 @@ export class TabStopRequirementActionMessageCreator extends DevToolActionMessage
94105
}
95106

96107
public resetStatusForRequirement(requirementId: TabStopRequirementId): void {
97-
const telemetry = this.telemetryFactory.forTabStopRequirement(requirementId);
108+
const telemetry = this.telemetryFactory.forTabStopRequirement(requirementId, this.source);
98109

99110
const payload: ResetTabStopRequirementStatusPayload = {
100111
requirementId,
@@ -144,7 +155,7 @@ export class TabStopRequirementActionMessageCreator extends DevToolActionMessage
144155
};
145156

146157
public automatedTabbingResultsCompleted = (results: AutomatedTabStopRequirementResult[]) => {
147-
const telemetry = this.telemetryFactory.forAutomatedTabStopsResults(results);
158+
const telemetry = this.telemetryFactory.forAutomatedTabStopsResults(results, this.source);
148159
const payload: BaseActionPayload = {
149160
telemetry,
150161
};

src/DetailsView/details-view-initializer.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@ if (tabId != null) {
268268
new TabStopRequirementActionMessageCreator(
269269
telemetryFactory,
270270
actionMessageDispatcher,
271+
TelemetryEventSource.DetailsView,
271272
);
272273

273274
const detailsViewActionMessageCreator = new DetailsViewActionMessageCreator(

src/common/telemetry-data-factory.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -293,10 +293,13 @@ export class TelemetryDataFactory {
293293
};
294294
}
295295

296-
public forTabStopRequirement(requirementId: TabStopRequirementId) {
296+
public forTabStopRequirement(
297+
requirementId: TabStopRequirementId,
298+
source: TelemetryEventSource,
299+
) {
297300
return {
298301
triggeredBy: TriggeredByNotApplicable,
299-
source: TelemetryEventSource.DetailsView,
302+
source,
300303
requirementId: requirementId,
301304
};
302305
}
@@ -478,6 +481,7 @@ export class TelemetryDataFactory {
478481

479482
public forAutomatedTabStopsResults(
480483
results: AutomatedTabStopRequirementResult[],
484+
source: TelemetryEventSource,
481485
): TabStopsAutomatedResultsTelemetryData | undefined {
482486
if (!results || results.length === 0) {
483487
return undefined;
@@ -491,7 +495,7 @@ export class TelemetryDataFactory {
491495

492496
return {
493497
triggeredBy: TriggeredByNotApplicable,
494-
source: TelemetryEventSource.DetailsView,
498+
source,
495499
tabStopAutomatedFailuresInstanceCount,
496500
};
497501
}

src/injected/main-window-initializer.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ export class MainWindowInitializer extends WindowInitializer {
214214
const tabStopRequirementActionMessageCreator = new TabStopRequirementActionMessageCreator(
215215
telemetryDataFactory,
216216
actionMessageDispatcher,
217+
TelemetryEventSource.TargetPage,
217218
);
218219

219220
const userConfigMessageCreator = new UserConfigMessageCreator(actionMessageDispatcher);

src/tests/unit/tests/DetailsView/actions/tab-stop-requirement-action-message-creator.test.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,16 @@ describe('TabStopRequirementActionMessageCreatorTest', () => {
2828
let telemetryFactoryMock: IMock<TelemetryDataFactory>;
2929
let dispatcherMock: IMock<ActionMessageDispatcher>;
3030
let testSubject: TabStopRequirementActionMessageCreator;
31+
let sourceStub: TelemetryEventSource;
3132

3233
beforeEach(() => {
34+
sourceStub = -1;
3335
dispatcherMock = Mock.ofType<ActionMessageDispatcher>();
3436
telemetryFactoryMock = Mock.ofType(TelemetryDataFactory);
3537
testSubject = new TabStopRequirementActionMessageCreator(
3638
telemetryFactoryMock.object,
3739
dispatcherMock.object,
40+
sourceStub,
3841
);
3942
});
4043

@@ -58,7 +61,7 @@ describe('TabStopRequirementActionMessageCreatorTest', () => {
5861
},
5962
};
6063
telemetryFactoryMock
61-
.setup(tf => tf.forTabStopRequirement(requirementStatus.requirementId))
64+
.setup(tf => tf.forTabStopRequirement(requirementStatus.requirementId, sourceStub))
6265
.returns(() => telemetry);
6366

6467
testSubject.updateTabStopRequirementStatus(
@@ -95,7 +98,7 @@ describe('TabStopRequirementActionMessageCreatorTest', () => {
9598
};
9699

97100
telemetryFactoryMock
98-
.setup(tf => tf.forTabStopRequirement(requirementInstance.requirementId))
101+
.setup(tf => tf.forTabStopRequirement(requirementInstance.requirementId, sourceStub))
99102
.returns(() => telemetry);
100103

101104
testSubject.addTabStopInstance(requirementInstance);
@@ -129,7 +132,7 @@ describe('TabStopRequirementActionMessageCreatorTest', () => {
129132
},
130133
};
131134
telemetryFactoryMock
132-
.setup(tf => tf.forTabStopRequirement(requirementInstance.requirementId))
135+
.setup(tf => tf.forTabStopRequirement(requirementInstance.requirementId, sourceStub))
133136
.returns(() => telemetry);
134137

135138
testSubject.updateTabStopInstance(
@@ -167,7 +170,7 @@ describe('TabStopRequirementActionMessageCreatorTest', () => {
167170
};
168171

169172
telemetryFactoryMock
170-
.setup(tf => tf.forTabStopRequirement(requirementInstance.requirementId))
173+
.setup(tf => tf.forTabStopRequirement(requirementInstance.requirementId, sourceStub))
171174
.returns(() => telemetry);
172175

173176
testSubject.removeTabStopInstance(
@@ -264,7 +267,7 @@ describe('TabStopRequirementActionMessageCreatorTest', () => {
264267
},
265268
};
266269
telemetryFactoryMock
267-
.setup(tf => tf.forAutomatedTabStopsResults(tabbingResults))
270+
.setup(tf => tf.forAutomatedTabStopsResults(tabbingResults, sourceStub))
268271
.returns(() => telemetry);
269272

270273
testSubject.automatedTabbingResultsCompleted(tabbingResults);

src/tests/unit/tests/DetailsView/components/tab-stops/__snapshots__/tab-stops-instance-section-props-factory.test.tsx.snap

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Object {
77
"___id": "BCDF5CE5-F0DF-40B7-8BA0-69DF395033C8",
88
"automatedTabbingResultsCompleted": [Function],
99
"dispatcher": undefined,
10+
"source": undefined,
1011
"telemetryFactory": undefined,
1112
"toggleTabStopRequirementExpand": [Function],
1213
"updateNeedToCollectTabbingResults": [Function],
@@ -105,6 +106,7 @@ Object {
105106
"___id": "BCDF5CE5-F0DF-40B7-8BA0-69DF395033C8",
106107
"automatedTabbingResultsCompleted": [Function],
107108
"dispatcher": undefined,
109+
"source": undefined,
108110
"telemetryFactory": undefined,
109111
"toggleTabStopRequirementExpand": [Function],
110112
"updateNeedToCollectTabbingResults": [Function],
@@ -126,6 +128,7 @@ Object {
126128
"___id": "BCDF5CE5-F0DF-40B7-8BA0-69DF395033C8",
127129
"automatedTabbingResultsCompleted": [Function],
128130
"dispatcher": undefined,
131+
"source": undefined,
129132
"telemetryFactory": undefined,
130133
"toggleTabStopRequirementExpand": [Function],
131134
"updateNeedToCollectTabbingResults": [Function],
@@ -175,6 +178,7 @@ Object {
175178
"___id": "BCDF5CE5-F0DF-40B7-8BA0-69DF395033C8",
176179
"automatedTabbingResultsCompleted": [Function],
177180
"dispatcher": undefined,
181+
"source": undefined,
178182
"telemetryFactory": undefined,
179183
"toggleTabStopRequirementExpand": [Function],
180184
"updateNeedToCollectTabbingResults": [Function],
@@ -276,6 +280,7 @@ Object {
276280
"___id": "BCDF5CE5-F0DF-40B7-8BA0-69DF395033C8",
277281
"automatedTabbingResultsCompleted": [Function],
278282
"dispatcher": undefined,
283+
"source": undefined,
279284
"telemetryFactory": undefined,
280285
"toggleTabStopRequirementExpand": [Function],
281286
"updateNeedToCollectTabbingResults": [Function],
@@ -297,6 +302,7 @@ Object {
297302
"___id": "BCDF5CE5-F0DF-40B7-8BA0-69DF395033C8",
298303
"automatedTabbingResultsCompleted": [Function],
299304
"dispatcher": undefined,
305+
"source": undefined,
300306
"telemetryFactory": undefined,
301307
"toggleTabStopRequirementExpand": [Function],
302308
"updateNeedToCollectTabbingResults": [Function],
@@ -354,6 +360,7 @@ Object {
354360
"___id": "BCDF5CE5-F0DF-40B7-8BA0-69DF395033C8",
355361
"automatedTabbingResultsCompleted": [Function],
356362
"dispatcher": undefined,
363+
"source": undefined,
357364
"telemetryFactory": undefined,
358365
"toggleTabStopRequirementExpand": [Function],
359366
"updateNeedToCollectTabbingResults": [Function],
@@ -375,6 +382,7 @@ Object {
375382
"___id": "BCDF5CE5-F0DF-40B7-8BA0-69DF395033C8",
376383
"automatedTabbingResultsCompleted": [Function],
377384
"dispatcher": undefined,
385+
"source": undefined,
378386
"telemetryFactory": undefined,
379387
"toggleTabStopRequirementExpand": [Function],
380388
"updateNeedToCollectTabbingResults": [Function],

src/tests/unit/tests/DetailsView/components/tab-stops/tab-stops-instance-section-props-factory.test.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ describe('TabStopsInstanceSectionPropsFactory', () => {
110110
);
111111
result.content.props.onEditButtonClicked(requirementId, instanceId, description);
112112
result.content.props.onRemoveButtonClicked(requirementId, instanceId);
113-
114113
tabStopsRequirementActionMessageCreatorMock.verifyAll();
115114
tabStopsTestViewControllerMock.verifyAll();
116115
});

src/tests/unit/tests/common/telemetry-data-factory.test.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import { DetailsViewPivotType } from 'common/types/details-view-pivot-type';
2929
import { TabStopRequirementState } from 'common/types/store-data/visualization-scan-result-data';
3030
import { VisualizationType } from 'common/types/visualization-type';
3131
import { AutomatedTabStopRequirementResult } from 'injected/tab-stop-requirement-result';
32+
import { TabStopRequirementId } from 'types/tab-stop-requirement-info';
3233
import { EventStubFactory } from './../../common/event-stub-factory';
3334

3435
describe('TelemetryDataFactoryTest', () => {
@@ -37,6 +38,7 @@ describe('TelemetryDataFactoryTest', () => {
3738
const testSource: TelemetryEventSource = 1 as TelemetryEventSource;
3839
const mouseClickEvent = eventStubFactory.createMouseClickEvent() as any;
3940
const keypressEvent = eventStubFactory.createKeypressEvent() as any;
41+
const sourceStub: TelemetryEventSource = -1;
4042

4143
test('forAddSelector', () => {
4244
const event = mouseClickEvent;
@@ -758,19 +760,30 @@ describe('TelemetryDataFactoryTest', () => {
758760
{ requirementId: 'keyboard-traps', html: null, selector: null, description: null },
759761
];
760762

761-
const result = testObject.forAutomatedTabStopsResults(tabbingResults);
763+
const result = testObject.forAutomatedTabStopsResults(tabbingResults, sourceStub);
762764

763765
const expected: TabStopsAutomatedResultsTelemetryData = {
764766
tabStopAutomatedFailuresInstanceCount: { 'tab-order': 2, 'keyboard-traps': 1 },
765-
source: TelemetryEventSource.DetailsView,
767+
source: sourceStub,
766768
triggeredBy: 'N/A',
767769
};
768770

769771
expect(result).toEqual(expected);
770772
});
771773

772774
test('forAutomatedTabStopsResults returns undefined when no results', () => {
773-
const result = testObject.forAutomatedTabStopsResults([]);
775+
const result = testObject.forAutomatedTabStopsResults([], sourceStub);
774776
expect(result).toBeUndefined();
775777
});
778+
779+
test('forTabStopRequirement', () => {
780+
const requirementId: TabStopRequirementId = 'tab-order';
781+
const result = testObject.forTabStopRequirement(requirementId, sourceStub);
782+
const expected = {
783+
source: sourceStub,
784+
requirementId: requirementId,
785+
triggeredBy: TriggeredByNotApplicable,
786+
};
787+
expect(result).toEqual(expected);
788+
});
776789
});

0 commit comments

Comments
 (0)