Skip to content

Commit 1cd54a7

Browse files
committed
Refactor: Improve consistency in MCP event
1 parent 89a28f5 commit 1cd54a7

13 files changed

+33
-53
lines changed

src/lib/instrumentation.ts

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ interface MCPEventPayload {
1818
export function trackMCP(
1919
toolName: string,
2020
clientInfo: { name?: string; version?: string },
21-
error?: unknown
21+
error?: unknown,
2222
): void {
2323
const instrumentationEndpoint = "https://api.browserstack.com/sdk/v1/event";
2424
const isSuccess = !error;
2525
const mcpClient = clientInfo?.name || "unknown";
26-
26+
2727
// Log client information
2828
if (clientInfo?.name) {
2929
logger.info(
@@ -45,8 +45,10 @@ export function trackMCP(
4545

4646
// Add error details if applicable
4747
if (error) {
48-
event.event_properties.error_message = error instanceof Error ? error.message : String(error);
49-
event.event_properties.error_type = error instanceof Error ? error.constructor.name : "Unknown";
48+
event.event_properties.error_message =
49+
error instanceof Error ? error.message : String(error);
50+
event.event_properties.error_type =
51+
error instanceof Error ? error.constructor.name : "Unknown";
5052
}
5153

5254
axios
@@ -60,17 +62,20 @@ export function trackMCP(
6062
timeout: 2000,
6163
})
6264
.then((response) => {
63-
logger.info(`MCP ${isSuccess ? 'event' : 'failure event'} tracked successfully`, {
64-
toolName,
65-
response,
66-
});
65+
logger.info(
66+
`MCP ${isSuccess ? "event" : "failure event"} tracked successfully`,
67+
{
68+
toolName,
69+
response,
70+
},
71+
);
6772
})
6873
.catch((error: unknown) => {
6974
logger.warn(
70-
`Failed to track MCP ${isSuccess ? 'event' : 'failure event'}: ${error instanceof Error ? error.message : String(error)}`,
75+
`Failed to track MCP ${isSuccess ? "event" : "failure event"}: ${error instanceof Error ? error.message : String(error)}`,
7176
{
7277
toolName,
7378
},
7479
);
7580
});
76-
}
81+
}

src/tools/accessibility.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,13 @@ export default function addAccessibilityTools(server: McpServer) {
4444
},
4545
async (args) => {
4646
try {
47-
trackMCP(
48-
"startAccessibilityScan",
49-
server.server.getClientVersion()!
50-
);
47+
trackMCP("startAccessibilityScan", server.server.getClientVersion()!);
5148
return await runAccessibilityScan(args.name, args.pageURL);
5249
} catch (error) {
5350
trackMCP(
5451
"startAccessibilityScan",
5552
server.server.getClientVersion()!,
56-
error
53+
error,
5754
);
5855
return {
5956
content: [

src/tools/applive.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,7 @@ export default function addAppLiveTools(server: McpServer) {
9595
return await startAppLiveSession(args);
9696
} catch (error) {
9797
logger.error("App live session failed: %s", error);
98-
trackMCP(
99-
"runAppLiveSession",
100-
server.server.getClientVersion()!,
101-
error
102-
);
98+
trackMCP("runAppLiveSession", server.server.getClientVersion()!, error);
10399
return {
104100
content: [
105101
{

src/tools/automate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ export default function addAutomateTools(server: McpServer) {
5858
trackMCP(
5959
"getNetworkFailures",
6060
server.server.getClientVersion()!,
61-
error
61+
error,
6262
);
6363

6464
return {

src/tools/bstack-sdk.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,7 @@ export default function addSDKTools(server: McpServer) {
7474
},
7575
async (args) => {
7676
try {
77-
trackMCP(
78-
"runTestsOnBrowserStack",
79-
server.server.getClientVersion()!
80-
);
77+
trackMCP("runTestsOnBrowserStack", server.server.getClientVersion()!);
8178

8279
return await bootstrapProjectWithSDK({
8380
detectedBrowserAutomationFramework:
@@ -91,7 +88,7 @@ export default function addSDKTools(server: McpServer) {
9188
trackMCP(
9289
"runTestsOnBrowserStack",
9390
server.server.getClientVersion()!,
94-
error
91+
error,
9592
);
9693
return {
9794
content: [

src/tools/live.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,17 +105,14 @@ export default function addBrowserLiveTools(server: McpServer) {
105105
LiveArgsShape,
106106
async (args) => {
107107
try {
108-
trackMCP(
109-
"runBrowserLiveSession",
110-
server.server.getClientVersion()!
111-
);
108+
trackMCP("runBrowserLiveSession", server.server.getClientVersion()!);
112109
return await runBrowserSession(args);
113110
} catch (error) {
114111
logger.error("Live session failed: %s", error);
115112
trackMCP(
116113
"runBrowserLiveSession",
117114
server.server.getClientVersion()!,
118-
error
115+
error,
119116
);
120117
return {
121118
content: [

src/tools/observability.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,17 +59,14 @@ export default function addObservabilityTools(server: McpServer) {
5959
},
6060
async (args) => {
6161
try {
62-
trackMCP(
63-
"getFailuresInLastRun",
64-
server.server.getClientVersion()!
65-
);
62+
trackMCP("getFailuresInLastRun", server.server.getClientVersion()!);
6663
return await getFailuresInLastRun(args.buildName, args.projectName);
6764
} catch (error) {
6865
logger.error("Failed to get failures in the last run: %s", error);
6966
trackMCP(
7067
"getFailuresInLastRun",
7168
server.server.getClientVersion()!,
72-
error
69+
error,
7370
);
7471
return {
7572
content: [

src/tools/testmanagement.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ export async function createProjectOrFolderTool(
2525
try {
2626
trackMCP(
2727
"createProjectOrFolder",
28-
serverInstance.server.getClientVersion()!
28+
serverInstance.server.getClientVersion()!,
2929
);
3030
return await createProjectOrFolder(args);
3131
} catch (err) {
3232
logger.error("Failed to create project/folder: %s", err);
3333
trackMCP(
3434
"createProjectOrFolder",
3535
serverInstance.server.getClientVersion()!,
36-
err
36+
err,
3737
);
3838
return {
3939
content: [
@@ -63,11 +63,7 @@ export async function createTestCaseTool(
6363
return await createTestCaseAPI(cleanedArgs);
6464
} catch (err) {
6565
logger.error("Failed to create test case: %s", err);
66-
trackMCP(
67-
"createTestCase",
68-
serverInstance.server.getClientVersion()!,
69-
err
70-
);
66+
trackMCP("createTestCase", serverInstance.server.getClientVersion()!, err);
7167
return {
7268
content: [
7369
{

tests/tools/applive.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ jest.mock('../../src/logger', () => ({
1616
error: jest.fn()
1717
}));
1818
jest.mock('../../src/lib/instrumentation', () => ({
19-
trackMCPEvent: jest.fn(),
20-
trackMCPFailure: jest.fn()
19+
trackMCP: jest.fn()
2120
}));
2221

2322
describe('startAppLiveSession', () => {

tests/tools/automate.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ jest.mock('../../src/lib/api', () => ({
66
retrieveNetworkFailures: jest.fn()
77
}));
88
jest.mock('../../src/lib/instrumentation', () => ({
9-
trackMCPEvent: jest.fn(),
10-
trackMCPFailure: jest.fn()
9+
trackMCP: jest.fn()
1110
}));
1211
jest.mock('../../src/logger', () => ({
1312
error: jest.fn(),

0 commit comments

Comments
 (0)