@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.
- package/README.md +71 -35
- package/dist/config.d.ts +13 -0
- package/dist/config.js +10 -6
- package/dist/index.d.ts +4 -0
- package/dist/index.js +20 -30
- package/dist/lib/api.d.ts +2 -0
- package/dist/lib/api.js +10 -5
- package/dist/lib/apiClient.d.ts +31 -0
- package/dist/lib/apiClient.js +108 -0
- package/dist/lib/constants.d.ts +17 -0
- package/dist/lib/device-cache.d.ts +9 -0
- package/dist/lib/device-cache.js +3 -3
- package/dist/lib/error.d.ts +7 -0
- package/dist/lib/fuzzy.d.ts +1 -0
- package/dist/lib/get-auth.d.ts +2 -0
- package/dist/lib/get-auth.js +8 -0
- package/dist/lib/inmemory-store.d.ts +1 -0
- package/dist/lib/instrumentation.d.ts +4 -0
- package/dist/lib/instrumentation.js +8 -7
- package/dist/lib/local.d.ts +3 -0
- package/dist/lib/local.js +12 -3
- package/dist/lib/types.d.ts +4 -0
- package/dist/lib/types.js +1 -0
- package/dist/lib/utils.d.ts +4 -0
- package/dist/lib/version-resolver.d.ts +6 -0
- package/dist/logger.d.ts +3 -0
- package/dist/logger.js +20 -4
- package/dist/oninitialized.d.ts +2 -0
- package/dist/oninitialized.js +2 -7
- package/dist/server-factory.d.ts +3 -0
- package/dist/server-factory.js +37 -0
- package/dist/tools/accessibility.d.ts +3 -0
- package/dist/tools/accessibility.js +17 -10
- package/dist/tools/accessiblity-utils/accessibility-rag.d.ts +12 -0
- package/dist/tools/accessiblity-utils/accessibility-rag.js +22 -12
- package/dist/tools/accessiblity-utils/report-fetcher.d.ts +8 -0
- package/dist/tools/accessiblity-utils/report-fetcher.js +26 -16
- package/dist/tools/accessiblity-utils/report-parser.d.ts +23 -0
- package/dist/tools/accessiblity-utils/report-parser.js +3 -3
- package/dist/tools/accessiblity-utils/scanner.d.ts +25 -0
- package/dist/tools/accessiblity-utils/scanner.js +46 -24
- package/dist/tools/appautomate-utils/appautomate.d.ts +42 -0
- package/dist/tools/appautomate-utils/appautomate.js +95 -9
- package/dist/tools/appautomate-utils/types.d.ts +5 -0
- package/dist/tools/appautomate-utils/types.js +6 -0
- package/dist/tools/appautomate.d.ts +3 -0
- package/dist/tools/appautomate.js +109 -13
- package/dist/tools/applive-utils/device-search.d.ts +6 -0
- package/dist/tools/applive-utils/start-session.d.ts +15 -0
- package/dist/tools/applive-utils/start-session.js +11 -4
- package/dist/tools/applive-utils/types.d.ts +7 -0
- package/dist/tools/applive-utils/upload-app.d.ts +5 -0
- package/dist/tools/applive-utils/upload-app.js +8 -12
- package/dist/tools/applive-utils/version-utils.d.ts +4 -0
- package/dist/tools/applive.d.ts +13 -0
- package/dist/tools/applive.js +6 -6
- package/dist/tools/automate-utils/fetch-screenshots.d.ts +6 -0
- package/dist/tools/automate-utils/fetch-screenshots.js +16 -12
- package/dist/tools/automate.d.ts +9 -0
- package/dist/tools/automate.js +6 -6
- package/dist/tools/bstack-sdk.d.ts +17 -0
- package/dist/tools/bstack-sdk.js +47 -20
- package/dist/tools/failurelogs-utils/app-automate.d.ts +7 -0
- package/dist/tools/failurelogs-utils/app-automate.js +29 -11
- package/dist/tools/failurelogs-utils/automate.d.ts +6 -0
- package/dist/tools/failurelogs-utils/automate.js +27 -12
- package/dist/tools/failurelogs-utils/utils.d.ts +30 -0
- package/dist/tools/getFailureLogs.d.ts +14 -0
- package/dist/tools/getFailureLogs.js +11 -11
- package/dist/tools/live-utils/desktop-filter.d.ts +2 -0
- package/dist/tools/live-utils/mobile-filter.d.ts +2 -0
- package/dist/tools/live-utils/start-session.d.ts +6 -0
- package/dist/tools/live-utils/start-session.js +18 -5
- package/dist/tools/live-utils/types.d.ts +33 -0
- package/dist/tools/live.d.ts +3 -0
- package/dist/tools/live.js +11 -11
- package/dist/tools/observability.d.ts +5 -0
- package/dist/tools/observability.js +14 -11
- package/dist/tools/sdk-utils/commands.d.ts +3 -0
- package/dist/tools/sdk-utils/commands.js +20 -5
- package/dist/tools/sdk-utils/constants.d.ts +2 -0
- package/dist/tools/sdk-utils/constants.js +284 -160
- package/dist/tools/sdk-utils/instructions.d.ts +6 -0
- package/dist/tools/sdk-utils/instructions.js +28 -6
- package/dist/tools/sdk-utils/percy/constants.d.ts +3 -0
- package/dist/tools/sdk-utils/percy/constants.js +36 -25
- package/dist/tools/sdk-utils/percy/instructions.d.ts +10 -0
- package/dist/tools/sdk-utils/percy/types.d.ts +5 -0
- package/dist/tools/sdk-utils/types.d.ts +39 -0
- package/dist/tools/sdk-utils/types.js +3 -0
- package/dist/tools/selfheal-utils/selfheal.d.ts +11 -0
- package/dist/tools/selfheal-utils/selfheal.js +10 -6
- package/dist/tools/selfheal.d.ts +7 -0
- package/dist/tools/selfheal.js +6 -6
- package/dist/tools/testmanagement-utils/TCG-utils/api.d.ts +34 -0
- package/dist/tools/testmanagement-utils/TCG-utils/api.js +57 -44
- package/dist/tools/testmanagement-utils/TCG-utils/config.d.ts +5 -0
- package/dist/tools/testmanagement-utils/TCG-utils/helpers.d.ts +13 -0
- package/dist/tools/testmanagement-utils/TCG-utils/helpers.js +2 -1
- package/dist/tools/testmanagement-utils/TCG-utils/types.d.ts +26 -0
- package/dist/tools/testmanagement-utils/add-test-result.d.ts +42 -0
- package/dist/tools/testmanagement-utils/add-test-result.js +23 -10
- package/dist/tools/testmanagement-utils/create-lca-steps.d.ts +100 -0
- package/dist/tools/testmanagement-utils/create-lca-steps.js +64 -55
- package/dist/tools/testmanagement-utils/create-project-folder.d.ts +31 -0
- package/dist/tools/testmanagement-utils/create-project-folder.js +31 -21
- package/dist/tools/testmanagement-utils/create-testcase.d.ts +122 -0
- package/dist/tools/testmanagement-utils/create-testcase.js +13 -10
- package/dist/tools/testmanagement-utils/create-testrun.d.ts +82 -0
- package/dist/tools/testmanagement-utils/create-testrun.js +11 -8
- package/dist/tools/testmanagement-utils/list-testcases.d.ts +30 -0
- package/dist/tools/testmanagement-utils/list-testcases.js +9 -7
- package/dist/tools/testmanagement-utils/list-testruns.d.ts +22 -0
- package/dist/tools/testmanagement-utils/list-testruns.js +9 -7
- package/dist/tools/testmanagement-utils/poll-lca-status.d.ts +11 -0
- package/dist/tools/testmanagement-utils/poll-lca-status.js +12 -8
- package/dist/tools/testmanagement-utils/testcase-from-file.d.ts +4 -0
- package/dist/tools/testmanagement-utils/testcase-from-file.js +6 -6
- package/dist/tools/testmanagement-utils/update-testrun.d.ts +40 -0
- package/dist/tools/testmanagement-utils/update-testrun.js +11 -7
- package/dist/tools/testmanagement-utils/upload-file.d.ts +20 -0
- package/dist/tools/testmanagement-utils/upload-file.js +8 -6
- package/dist/tools/testmanagement.d.ts +60 -0
- package/dist/tools/testmanagement.js +51 -53
- package/package.json +1 -1
|
@@ -2,19 +2,22 @@ import { z } from "zod";
|
|
|
2
2
|
import { getLatestO11YBuildInfo } from "../lib/api.js";
|
|
3
3
|
import { trackMCP } from "../lib/instrumentation.js";
|
|
4
4
|
import logger from "../logger.js";
|
|
5
|
-
export async function getFailuresInLastRun(buildName, projectName) {
|
|
6
|
-
const buildsData = await getLatestO11YBuildInfo(buildName, projectName);
|
|
7
|
-
|
|
5
|
+
export async function getFailuresInLastRun(buildName, projectName, config) {
|
|
6
|
+
const buildsData = await getLatestO11YBuildInfo(buildName, projectName, config);
|
|
7
|
+
if (!buildsData.data) {
|
|
8
|
+
throw new Error("No observability URL found in build data, this is likely because the build is not yet available on BrowserStack Observability.");
|
|
9
|
+
}
|
|
10
|
+
const observabilityUrl = buildsData.data.observability_url;
|
|
8
11
|
if (!observabilityUrl) {
|
|
9
12
|
throw new Error("No observability URL found in build data, this is likely because the build is not yet available on BrowserStack Observability.");
|
|
10
13
|
}
|
|
11
14
|
let overview = "No overview available";
|
|
12
|
-
if (buildsData.unique_errors?.overview?.insight) {
|
|
13
|
-
overview = buildsData.unique_errors.overview.insight;
|
|
15
|
+
if (buildsData.data.unique_errors?.overview?.insight) {
|
|
16
|
+
overview = buildsData.data.unique_errors.overview.insight;
|
|
14
17
|
}
|
|
15
18
|
let details = "No error details available";
|
|
16
|
-
if (buildsData.unique_errors?.top_unique_errors?.length > 0) {
|
|
17
|
-
details = buildsData.unique_errors.top_unique_errors
|
|
19
|
+
if (buildsData.data.unique_errors?.top_unique_errors?.length > 0) {
|
|
20
|
+
details = buildsData.data.unique_errors.top_unique_errors
|
|
18
21
|
.map((error) => error.error)
|
|
19
22
|
.filter(Boolean)
|
|
20
23
|
.join("\n");
|
|
@@ -28,7 +31,7 @@ export async function getFailuresInLastRun(buildName, projectName) {
|
|
|
28
31
|
],
|
|
29
32
|
};
|
|
30
33
|
}
|
|
31
|
-
export default function addObservabilityTools(server) {
|
|
34
|
+
export default function addObservabilityTools(server, config) {
|
|
32
35
|
server.tool("getFailuresInLastRun", "Use this tool to debug failures in the last run of the test suite on BrowserStack. Use only when browserstack.yml file is present in the project root.", {
|
|
33
36
|
buildName: z
|
|
34
37
|
.string()
|
|
@@ -38,12 +41,12 @@ export default function addObservabilityTools(server) {
|
|
|
38
41
|
.describe("Name of the project to get failures for. This is the 'projectName' key in the browserstack.yml file. If not sure, ask the user for the project name."),
|
|
39
42
|
}, async (args) => {
|
|
40
43
|
try {
|
|
41
|
-
trackMCP("getFailuresInLastRun", server.server.getClientVersion());
|
|
42
|
-
return await getFailuresInLastRun(args.buildName, args.projectName);
|
|
44
|
+
trackMCP("getFailuresInLastRun", server.server.getClientVersion(), undefined, config);
|
|
45
|
+
return await getFailuresInLastRun(args.buildName, args.projectName, config);
|
|
43
46
|
}
|
|
44
47
|
catch (error) {
|
|
45
48
|
logger.error("Failed to get failures in the last run: %s", error);
|
|
46
|
-
trackMCP("getFailuresInLastRun", server.server.getClientVersion(), error);
|
|
49
|
+
trackMCP("getFailuresInLastRun", server.server.getClientVersion(), error, config);
|
|
47
50
|
return {
|
|
48
51
|
content: [
|
|
49
52
|
{
|
|
@@ -4,6 +4,7 @@ const JAVA_FRAMEWORK_MAP = {
|
|
|
4
4
|
junit5: "junit5",
|
|
5
5
|
junit4: "junit4",
|
|
6
6
|
cucumber: "cucumber-testng",
|
|
7
|
+
serenity: "serenity",
|
|
7
8
|
};
|
|
8
9
|
// Common Gradle setup instructions (platform-independent)
|
|
9
10
|
const GRADLE_SETUP_INSTRUCTIONS = `
|
|
@@ -17,10 +18,21 @@ const GRADLE_SETUP_INSTRUCTIONS = `
|
|
|
17
18
|
3. Add javaagent to gradle tasks:
|
|
18
19
|
jvmArgs "-javaagent:\${browserstackSDKArtifact.file}"
|
|
19
20
|
`;
|
|
20
|
-
export function getSDKPrefixCommand(language, framework) {
|
|
21
|
+
export function getSDKPrefixCommand(language, framework, username, accessKey) {
|
|
21
22
|
switch (language) {
|
|
22
23
|
case "nodejs":
|
|
23
|
-
return
|
|
24
|
+
return `---STEP---
|
|
25
|
+
Install BrowserStack Node SDK using command:
|
|
26
|
+
\`\`\`bash
|
|
27
|
+
npm i -D browserstack-node-sdk@latest
|
|
28
|
+
\`\`\`
|
|
29
|
+
---STEP---
|
|
30
|
+
Run the following command to setup browserstack sdk:
|
|
31
|
+
\`\`\`bash
|
|
32
|
+
npx setup --username ${username} --key ${accessKey}
|
|
33
|
+
\`\`\`
|
|
34
|
+
---STEP---
|
|
35
|
+
Edit the browserstack.yml file that was created in the project root to add your desired platforms and browsers.`;
|
|
24
36
|
case "java": {
|
|
25
37
|
const mavenFramework = getJavaFrameworkForMaven(framework);
|
|
26
38
|
const isWindows = process.platform === "win32";
|
|
@@ -29,15 +41,18 @@ export function getSDKPrefixCommand(language, framework) {
|
|
|
29
41
|
: `mvn archetype:generate -B -DarchetypeGroupId=com.browserstack \\
|
|
30
42
|
-DarchetypeArtifactId=browserstack-sdk-archetype-integrate -DarchetypeVersion=1.0 \\
|
|
31
43
|
-DgroupId=com.browserstack -DartifactId=browserstack-sdk-archetype-integrate -Dversion=1.0 \\
|
|
32
|
-
-DBROWSERSTACK_USERNAME="${
|
|
33
|
-
-DBROWSERSTACK_ACCESS_KEY="${
|
|
44
|
+
-DBROWSERSTACK_USERNAME="${username}" \\
|
|
45
|
+
-DBROWSERSTACK_ACCESS_KEY="${accessKey}" \\
|
|
34
46
|
-DBROWSERSTACK_FRAMEWORK="${mavenFramework}"`;
|
|
35
47
|
const platformLabel = isWindows ? "Windows" : "macOS/Linux";
|
|
36
|
-
return
|
|
48
|
+
return `---STEP---
|
|
49
|
+
Install BrowserStack Java SDK
|
|
37
50
|
|
|
38
51
|
**Maven command for ${framework} (${platformLabel}):**
|
|
39
52
|
Run the command, it is required to generate the browserstack-sdk-archetype-integrate project:
|
|
40
53
|
${mavenCommand}
|
|
54
|
+
|
|
55
|
+
Alternative setup for Gradle users:
|
|
41
56
|
${GRADLE_SETUP_INSTRUCTIONS}`;
|
|
42
57
|
}
|
|
43
58
|
// Add more languages as needed
|