@browserstack/mcp-server 1.1.8 → 1.2.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.
Files changed (125) hide show
  1. package/README.md +71 -35
  2. package/dist/config.d.ts +13 -0
  3. package/dist/config.js +10 -6
  4. package/dist/index.d.ts +4 -0
  5. package/dist/index.js +20 -30
  6. package/dist/lib/api.d.ts +2 -0
  7. package/dist/lib/api.js +10 -5
  8. package/dist/lib/apiClient.d.ts +31 -0
  9. package/dist/lib/apiClient.js +108 -0
  10. package/dist/lib/constants.d.ts +17 -0
  11. package/dist/lib/device-cache.d.ts +9 -0
  12. package/dist/lib/device-cache.js +3 -3
  13. package/dist/lib/error.d.ts +7 -0
  14. package/dist/lib/fuzzy.d.ts +1 -0
  15. package/dist/lib/get-auth.d.ts +2 -0
  16. package/dist/lib/get-auth.js +8 -0
  17. package/dist/lib/inmemory-store.d.ts +1 -0
  18. package/dist/lib/instrumentation.d.ts +4 -0
  19. package/dist/lib/instrumentation.js +8 -7
  20. package/dist/lib/local.d.ts +3 -0
  21. package/dist/lib/local.js +12 -3
  22. package/dist/lib/types.d.ts +4 -0
  23. package/dist/lib/types.js +1 -0
  24. package/dist/lib/utils.d.ts +4 -0
  25. package/dist/lib/version-resolver.d.ts +6 -0
  26. package/dist/logger.d.ts +3 -0
  27. package/dist/logger.js +20 -4
  28. package/dist/oninitialized.d.ts +2 -0
  29. package/dist/oninitialized.js +2 -7
  30. package/dist/server-factory.d.ts +3 -0
  31. package/dist/server-factory.js +37 -0
  32. package/dist/tools/accessibility.d.ts +3 -0
  33. package/dist/tools/accessibility.js +17 -10
  34. package/dist/tools/accessiblity-utils/accessibility-rag.d.ts +12 -0
  35. package/dist/tools/accessiblity-utils/accessibility-rag.js +22 -12
  36. package/dist/tools/accessiblity-utils/report-fetcher.d.ts +8 -0
  37. package/dist/tools/accessiblity-utils/report-fetcher.js +26 -16
  38. package/dist/tools/accessiblity-utils/report-parser.d.ts +23 -0
  39. package/dist/tools/accessiblity-utils/report-parser.js +3 -3
  40. package/dist/tools/accessiblity-utils/scanner.d.ts +25 -0
  41. package/dist/tools/accessiblity-utils/scanner.js +46 -24
  42. package/dist/tools/appautomate-utils/appautomate.d.ts +42 -0
  43. package/dist/tools/appautomate-utils/appautomate.js +95 -9
  44. package/dist/tools/appautomate-utils/types.d.ts +5 -0
  45. package/dist/tools/appautomate-utils/types.js +6 -0
  46. package/dist/tools/appautomate.d.ts +3 -0
  47. package/dist/tools/appautomate.js +109 -13
  48. package/dist/tools/applive-utils/device-search.d.ts +6 -0
  49. package/dist/tools/applive-utils/start-session.d.ts +15 -0
  50. package/dist/tools/applive-utils/start-session.js +11 -4
  51. package/dist/tools/applive-utils/types.d.ts +7 -0
  52. package/dist/tools/applive-utils/upload-app.d.ts +5 -0
  53. package/dist/tools/applive-utils/upload-app.js +8 -12
  54. package/dist/tools/applive-utils/version-utils.d.ts +4 -0
  55. package/dist/tools/applive.d.ts +13 -0
  56. package/dist/tools/applive.js +6 -6
  57. package/dist/tools/automate-utils/fetch-screenshots.d.ts +6 -0
  58. package/dist/tools/automate-utils/fetch-screenshots.js +16 -12
  59. package/dist/tools/automate.d.ts +9 -0
  60. package/dist/tools/automate.js +6 -6
  61. package/dist/tools/bstack-sdk.d.ts +17 -0
  62. package/dist/tools/bstack-sdk.js +47 -20
  63. package/dist/tools/failurelogs-utils/app-automate.d.ts +7 -0
  64. package/dist/tools/failurelogs-utils/app-automate.js +29 -11
  65. package/dist/tools/failurelogs-utils/automate.d.ts +6 -0
  66. package/dist/tools/failurelogs-utils/automate.js +27 -12
  67. package/dist/tools/failurelogs-utils/utils.d.ts +30 -0
  68. package/dist/tools/getFailureLogs.d.ts +14 -0
  69. package/dist/tools/getFailureLogs.js +11 -11
  70. package/dist/tools/live-utils/desktop-filter.d.ts +2 -0
  71. package/dist/tools/live-utils/mobile-filter.d.ts +2 -0
  72. package/dist/tools/live-utils/start-session.d.ts +6 -0
  73. package/dist/tools/live-utils/start-session.js +18 -5
  74. package/dist/tools/live-utils/types.d.ts +33 -0
  75. package/dist/tools/live.d.ts +3 -0
  76. package/dist/tools/live.js +11 -11
  77. package/dist/tools/observability.d.ts +5 -0
  78. package/dist/tools/observability.js +14 -11
  79. package/dist/tools/sdk-utils/commands.d.ts +3 -0
  80. package/dist/tools/sdk-utils/commands.js +20 -5
  81. package/dist/tools/sdk-utils/constants.d.ts +2 -0
  82. package/dist/tools/sdk-utils/constants.js +284 -160
  83. package/dist/tools/sdk-utils/instructions.d.ts +6 -0
  84. package/dist/tools/sdk-utils/instructions.js +28 -6
  85. package/dist/tools/sdk-utils/percy/constants.d.ts +3 -0
  86. package/dist/tools/sdk-utils/percy/constants.js +36 -25
  87. package/dist/tools/sdk-utils/percy/instructions.d.ts +10 -0
  88. package/dist/tools/sdk-utils/percy/types.d.ts +5 -0
  89. package/dist/tools/sdk-utils/types.d.ts +39 -0
  90. package/dist/tools/sdk-utils/types.js +3 -0
  91. package/dist/tools/selfheal-utils/selfheal.d.ts +11 -0
  92. package/dist/tools/selfheal-utils/selfheal.js +10 -6
  93. package/dist/tools/selfheal.d.ts +7 -0
  94. package/dist/tools/selfheal.js +6 -6
  95. package/dist/tools/testmanagement-utils/TCG-utils/api.d.ts +34 -0
  96. package/dist/tools/testmanagement-utils/TCG-utils/api.js +57 -44
  97. package/dist/tools/testmanagement-utils/TCG-utils/config.d.ts +5 -0
  98. package/dist/tools/testmanagement-utils/TCG-utils/helpers.d.ts +13 -0
  99. package/dist/tools/testmanagement-utils/TCG-utils/helpers.js +2 -1
  100. package/dist/tools/testmanagement-utils/TCG-utils/types.d.ts +26 -0
  101. package/dist/tools/testmanagement-utils/add-test-result.d.ts +42 -0
  102. package/dist/tools/testmanagement-utils/add-test-result.js +23 -10
  103. package/dist/tools/testmanagement-utils/create-lca-steps.d.ts +100 -0
  104. package/dist/tools/testmanagement-utils/create-lca-steps.js +64 -55
  105. package/dist/tools/testmanagement-utils/create-project-folder.d.ts +31 -0
  106. package/dist/tools/testmanagement-utils/create-project-folder.js +31 -21
  107. package/dist/tools/testmanagement-utils/create-testcase.d.ts +122 -0
  108. package/dist/tools/testmanagement-utils/create-testcase.js +13 -10
  109. package/dist/tools/testmanagement-utils/create-testrun.d.ts +82 -0
  110. package/dist/tools/testmanagement-utils/create-testrun.js +11 -8
  111. package/dist/tools/testmanagement-utils/list-testcases.d.ts +30 -0
  112. package/dist/tools/testmanagement-utils/list-testcases.js +9 -7
  113. package/dist/tools/testmanagement-utils/list-testruns.d.ts +22 -0
  114. package/dist/tools/testmanagement-utils/list-testruns.js +9 -7
  115. package/dist/tools/testmanagement-utils/poll-lca-status.d.ts +11 -0
  116. package/dist/tools/testmanagement-utils/poll-lca-status.js +12 -8
  117. package/dist/tools/testmanagement-utils/testcase-from-file.d.ts +4 -0
  118. package/dist/tools/testmanagement-utils/testcase-from-file.js +6 -6
  119. package/dist/tools/testmanagement-utils/update-testrun.d.ts +40 -0
  120. package/dist/tools/testmanagement-utils/update-testrun.js +11 -7
  121. package/dist/tools/testmanagement-utils/upload-file.d.ts +20 -0
  122. package/dist/tools/testmanagement-utils/upload-file.js +8 -6
  123. package/dist/tools/testmanagement.d.ts +60 -0
  124. package/dist/tools/testmanagement.js +51 -53
  125. package/package.json +1 -1
@@ -2,7 +2,6 @@ import { trackMCP } from "../lib/instrumentation.js";
2
2
  import logger from "../logger.js";
3
3
  import { createProjectOrFolder, CreateProjFoldSchema, } from "./testmanagement-utils/create-project-folder.js";
4
4
  import { createTestCase as createTestCaseAPI, sanitizeArgs, CreateTestCaseSchema, } from "./testmanagement-utils/create-testcase.js";
5
- let serverInstance;
6
5
  import { listTestCases, ListTestCasesSchema, } from "./testmanagement-utils/list-testcases.js";
7
6
  import { CreateTestRunSchema, createTestRun, } from "./testmanagement-utils/create-testrun.js";
8
7
  import { ListTestRunsSchema, listTestRuns, } from "./testmanagement-utils/list-testruns.js";
@@ -16,14 +15,14 @@ import { createLCASteps, CreateLCAStepsSchema, } from "./testmanagement-utils/cr
16
15
  /**
17
16
  * Wrapper to call createProjectOrFolder util.
18
17
  */
19
- export async function createProjectOrFolderTool(args) {
18
+ export async function createProjectOrFolderTool(args, config, server) {
20
19
  try {
21
- trackMCP("createProjectOrFolder", serverInstance.server.getClientVersion());
22
- return await createProjectOrFolder(args);
20
+ trackMCP("createProjectOrFolder", server.server.getClientVersion(), undefined, config);
21
+ return await createProjectOrFolder(args, config);
23
22
  }
24
23
  catch (err) {
25
24
  logger.error("Failed to create project/folder: %s", err);
26
- trackMCP("createProjectOrFolder", serverInstance.server.getClientVersion(), err);
25
+ trackMCP("createProjectOrFolder", server.server.getClientVersion(), err, config);
27
26
  return {
28
27
  content: [
29
28
  {
@@ -39,16 +38,16 @@ export async function createProjectOrFolderTool(args) {
39
38
  /**
40
39
  * Creates a test case in BrowserStack Test Management.
41
40
  */
42
- export async function createTestCaseTool(args) {
41
+ export async function createTestCaseTool(args, config, server) {
43
42
  // Sanitize input arguments
44
43
  const cleanedArgs = sanitizeArgs(args);
45
44
  try {
46
- trackMCP("createTestCase", serverInstance.server.getClientVersion());
47
- return await createTestCaseAPI(cleanedArgs);
45
+ trackMCP("createTestCase", server.server.getClientVersion(), undefined, config);
46
+ return await createTestCaseAPI(cleanedArgs, config);
48
47
  }
49
48
  catch (err) {
50
49
  logger.error("Failed to create test case: %s", err);
51
- trackMCP("createTestCase", serverInstance.server.getClientVersion(), err);
50
+ trackMCP("createTestCase", server.server.getClientVersion(), err, config);
52
51
  return {
53
52
  content: [
54
53
  {
@@ -64,13 +63,13 @@ export async function createTestCaseTool(args) {
64
63
  /**
65
64
  * Lists test cases in a project with optional filters (status, priority, custom fields, etc.)
66
65
  */
67
- export async function listTestCasesTool(args) {
66
+ export async function listTestCasesTool(args, config, server) {
68
67
  try {
69
- trackMCP("listTestCases", serverInstance.server.getClientVersion());
70
- return await listTestCases(args);
68
+ trackMCP("listTestCases", server.server.getClientVersion(), undefined, config);
69
+ return await listTestCases(args, config);
71
70
  }
72
71
  catch (err) {
73
- trackMCP("listTestCases", serverInstance.server.getClientVersion(), err);
72
+ trackMCP("listTestCases", server.server.getClientVersion(), err, config);
74
73
  return {
75
74
  content: [
76
75
  {
@@ -86,13 +85,13 @@ export async function listTestCasesTool(args) {
86
85
  /**
87
86
  * Creates a test run in BrowserStack Test Management.
88
87
  */
89
- export async function createTestRunTool(args) {
88
+ export async function createTestRunTool(args, config, server) {
90
89
  try {
91
- trackMCP("createTestRun", serverInstance.server.getClientVersion());
92
- return await createTestRun(args);
90
+ trackMCP("createTestRun", server.server.getClientVersion(), undefined, config);
91
+ return await createTestRun(args, config);
93
92
  }
94
93
  catch (err) {
95
- trackMCP("createTestRun", serverInstance.server.getClientVersion(), err);
94
+ trackMCP("createTestRun", server.server.getClientVersion(), err, config);
96
95
  return {
97
96
  content: [
98
97
  {
@@ -108,13 +107,13 @@ export async function createTestRunTool(args) {
108
107
  /**
109
108
  * Lists test runs in a project with optional filters (date ranges, assignee, state, etc.)
110
109
  */
111
- export async function listTestRunsTool(args) {
110
+ export async function listTestRunsTool(args, config, server) {
112
111
  try {
113
- trackMCP("listTestRuns", serverInstance.server.getClientVersion());
114
- return await listTestRuns(args);
112
+ trackMCP("listTestRuns", server.server.getClientVersion(), undefined, config);
113
+ return await listTestRuns(args, config);
115
114
  }
116
115
  catch (err) {
117
- trackMCP("listTestRuns", serverInstance.server.getClientVersion(), err);
116
+ trackMCP("listTestRuns", server.server.getClientVersion(), err, config);
118
117
  return {
119
118
  content: [
120
119
  {
@@ -132,13 +131,13 @@ export async function listTestRunsTool(args) {
132
131
  * This function allows for partial updates to an existing test run.
133
132
  * It takes the project identifier and test run ID as parameters.
134
133
  */
135
- export async function updateTestRunTool(args) {
134
+ export async function updateTestRunTool(args, config, server) {
136
135
  try {
137
- trackMCP("updateTestRun", serverInstance.server.getClientVersion());
138
- return await updateTestRun(args);
136
+ trackMCP("updateTestRun", server.server.getClientVersion(), undefined, config);
137
+ return await updateTestRun(args, config);
139
138
  }
140
139
  catch (err) {
141
- trackMCP("updateTestRun", serverInstance.server.getClientVersion(), err);
140
+ trackMCP("updateTestRun", server.server.getClientVersion(), err, config);
142
141
  return {
143
142
  content: [
144
143
  {
@@ -154,13 +153,13 @@ export async function updateTestRunTool(args) {
154
153
  /**
155
154
  * Adds a test result to a specific test run via BrowserStack Test Management API.
156
155
  */
157
- export async function addTestResultTool(args) {
156
+ export async function addTestResultTool(args, config, server) {
158
157
  try {
159
- trackMCP("addTestResult", serverInstance.server.getClientVersion());
160
- return await addTestResult(args);
158
+ trackMCP("addTestResult", server.server.getClientVersion(), undefined, config);
159
+ return await addTestResult(args, config);
161
160
  }
162
161
  catch (err) {
163
- trackMCP("addTestResult", serverInstance.server.getClientVersion(), err);
162
+ trackMCP("addTestResult", server.server.getClientVersion(), err, config);
164
163
  return {
165
164
  content: [
166
165
  {
@@ -176,13 +175,13 @@ export async function addTestResultTool(args) {
176
175
  /**
177
176
  * Uploads files such as PDRs or screenshots to BrowserStack Test Management and get file mapping ID back.
178
177
  */
179
- export async function uploadProductRequirementFileTool(args) {
178
+ export async function uploadProductRequirementFileTool(args, config, server) {
180
179
  try {
181
- trackMCP("uploadProductRequirementFile", serverInstance.server.getClientVersion());
182
- return await uploadFile(args);
180
+ trackMCP("uploadProductRequirementFile", server.server.getClientVersion(), undefined, config);
181
+ return await uploadFile(args, config);
183
182
  }
184
183
  catch (err) {
185
- trackMCP("uploadProductRequirementFile", serverInstance.server.getClientVersion(), err);
184
+ trackMCP("uploadProductRequirementFile", server.server.getClientVersion(), err, config);
186
185
  return {
187
186
  content: [
188
187
  {
@@ -198,13 +197,13 @@ export async function uploadProductRequirementFileTool(args) {
198
197
  /**
199
198
  * Creates test cases from a file in BrowserStack Test Management.
200
199
  */
201
- export async function createTestCasesFromFileTool(args, context) {
200
+ export async function createTestCasesFromFileTool(args, context, config, server) {
202
201
  try {
203
- trackMCP("createTestCasesFromFile", serverInstance.server.getClientVersion());
204
- return await createTestCasesFromFile(args, context);
202
+ trackMCP("createTestCasesFromFile", server.server.getClientVersion(), undefined);
203
+ return await createTestCasesFromFile(args, context, config);
205
204
  }
206
205
  catch (err) {
207
- trackMCP("createTestCasesFromFile", serverInstance.server.getClientVersion(), err);
206
+ trackMCP("createTestCasesFromFile", server.server.getClientVersion(), err);
208
207
  return {
209
208
  content: [
210
209
  {
@@ -220,13 +219,13 @@ export async function createTestCasesFromFileTool(args, context) {
220
219
  /**
221
220
  * Creates LCA (Low Code Automation) steps for a test case in BrowserStack Test Management.
222
221
  */
223
- export async function createLCAStepsTool(args, context) {
222
+ export async function createLCAStepsTool(args, context, config, server) {
224
223
  try {
225
- trackMCP("createLCASteps", serverInstance.server.getClientVersion());
226
- return await createLCASteps(args, context);
224
+ trackMCP("createLCASteps", server.server.getClientVersion(), undefined, config);
225
+ return await createLCASteps(args, context, config);
227
226
  }
228
227
  catch (err) {
229
- trackMCP("createLCASteps", serverInstance.server.getClientVersion(), err);
228
+ trackMCP("createLCASteps", server.server.getClientVersion(), err, config);
230
229
  return {
231
230
  content: [
232
231
  {
@@ -242,16 +241,15 @@ export async function createLCAStepsTool(args, context) {
242
241
  /**
243
242
  * Registers both project/folder and test-case tools.
244
243
  */
245
- export default function addTestManagementTools(server) {
246
- serverInstance = server;
247
- server.tool("createProjectOrFolder", "Create a project and/or folder in BrowserStack Test Management.", CreateProjFoldSchema.shape, createProjectOrFolderTool);
248
- server.tool("createTestCase", "Use this tool to create a test case in BrowserStack Test Management.", CreateTestCaseSchema.shape, createTestCaseTool);
249
- server.tool("listTestCases", "List test cases in a project with optional filters (status, priority, custom fields, etc.)", ListTestCasesSchema.shape, listTestCasesTool);
250
- server.tool("createTestRun", "Create a test run in BrowserStack Test Management.", CreateTestRunSchema.shape, createTestRunTool);
251
- server.tool("listTestRuns", "List test runs in a project with optional filters (date ranges, assignee, state, etc.)", ListTestRunsSchema.shape, listTestRunsTool);
252
- server.tool("updateTestRun", "Update a test run in BrowserStack Test Management.", UpdateTestRunSchema.shape, updateTestRunTool);
253
- server.tool("addTestResult", "Add a test result to a specific test run via BrowserStack Test Management API.", AddTestResultSchema.shape, addTestResultTool);
254
- server.tool("uploadProductRequirementFile", "Upload files (e.g., PDRs, PDFs) to BrowserStack Test Management and retrieve a file mapping ID. This is utilized for generating test cases from files and is part of the Test Case Generator AI Agent in BrowserStack.", UploadFileSchema.shape, uploadProductRequirementFileTool);
255
- server.tool("createTestCasesFromFile", "Generate test cases from a file in BrowserStack Test Management using the Test Case Generator AI Agent.", CreateTestCasesFromFileSchema.shape, createTestCasesFromFileTool);
256
- server.tool("createLCASteps", "Generate Low Code Automation (LCA) steps for a test case in BrowserStack Test Management using the Low Code Automation Agent.", CreateLCAStepsSchema.shape, createLCAStepsTool);
244
+ export default function addTestManagementTools(server, config) {
245
+ server.tool("createProjectOrFolder", "Create a project and/or folder in BrowserStack Test Management.", CreateProjFoldSchema.shape, (args) => createProjectOrFolderTool(args, config, server));
246
+ server.tool("createTestCase", "Use this tool to create a test case in BrowserStack Test Management.", CreateTestCaseSchema.shape, (args) => createTestCaseTool(args, config, server));
247
+ server.tool("listTestCases", "List test cases in a project with optional filters (status, priority, custom fields, etc.)", ListTestCasesSchema.shape, (args) => listTestCasesTool(args, config, server));
248
+ server.tool("createTestRun", "Create a test run in BrowserStack Test Management.", CreateTestRunSchema.shape, (args) => createTestRunTool(args, config, server));
249
+ server.tool("listTestRuns", "List test runs in a project with optional filters (date ranges, assignee, state, etc.)", ListTestRunsSchema.shape, (args) => listTestRunsTool(args, config, server));
250
+ server.tool("updateTestRun", "Update a test run in BrowserStack Test Management.", UpdateTestRunSchema.shape, (args) => updateTestRunTool(args, config, server));
251
+ server.tool("addTestResult", "Add a test result to a specific test run via BrowserStack Test Management API.", AddTestResultSchema.shape, (args) => addTestResultTool(args, config, server));
252
+ server.tool("uploadProductRequirementFile", "Upload files (e.g., PDRs, PDFs) to BrowserStack Test Management and retrieve a file mapping ID. This is utilized for generating test cases from files and is part of the Test Case Generator AI Agent in BrowserStack.", UploadFileSchema.shape, (args) => uploadProductRequirementFileTool(args, config, server));
253
+ server.tool("createTestCasesFromFile", "Generate test cases from a file in BrowserStack Test Management using the Test Case Generator AI Agent.", CreateTestCasesFromFileSchema.shape, (args, context) => createTestCasesFromFileTool(args, context, config, server));
254
+ server.tool("createLCASteps", "Generate Low Code Automation (LCA) steps for a test case in BrowserStack Test Management using the Low Code Automation Agent.", CreateLCAStepsSchema.shape, (args, context) => createLCAStepsTool(args, context, config, server));
257
255
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@browserstack/mcp-server",
3
- "version": "1.1.8",
3
+ "version": "1.2.0",
4
4
  "description": "BrowserStack's Official MCP Server",
5
5
  "main": "dist/index.js",
6
6
  "repository": {