wopee-mcp 1.23.1 → 1.23.2
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/build/tools/shared/schemas.js +15 -9
- package/build/tools/wopee_create_blank_suite/index.js +1 -1
- package/build/tools/wopee_dispatch_agent/index.js +1 -1
- package/build/tools/wopee_dispatch_analysis/index.js +1 -1
- package/build/tools/wopee_fetch_analysis_suites/index.js +1 -1
- package/build/tools/wopee_fetch_artifact/index.js +1 -1
- package/build/tools/wopee_fetch_executed_test_cases/index.js +1 -1
- package/build/tools/wopee_generate_artifact/index.js +1 -1
- package/build/tools/wopee_update_artifact/index.js +1 -1
- package/package.json +1 -1
|
@@ -16,10 +16,12 @@ export const SuiteAnalysisConfigSchema = z.object({
|
|
|
16
16
|
});
|
|
17
17
|
export const GenerateAIDataHandlerInputSchema = z.object({
|
|
18
18
|
type: z.nativeEnum(GenerateArtifactType, {
|
|
19
|
-
description: "
|
|
19
|
+
description: "Type of test artifact to generate. One of: APP_CONTEXT, GENERAL_USER_STORIES, USER_STORIES_WITH_TEST_CASES, TEST_CASES, TEST_CASE_STEPS, REUSABLE_TEST_CASES, REUSABLE_TEST_CASE_STEPS. Start with APP_CONTEXT, then generate stories and test cases from it.",
|
|
20
20
|
}),
|
|
21
21
|
suiteUuid: z
|
|
22
|
-
.string({
|
|
22
|
+
.string({
|
|
23
|
+
description: "UUID of the analysis suite to generate artifacts for. Get this from wopee_create_blank_suite or wopee_fetch_analysis_suites.",
|
|
24
|
+
})
|
|
23
25
|
.min(1, "Suite UUID is required"),
|
|
24
26
|
});
|
|
25
27
|
export const GenerateAIDataInputSchema = z.object({
|
|
@@ -34,14 +36,16 @@ export const GenerateAIDataInputSchema = z.object({
|
|
|
34
36
|
});
|
|
35
37
|
export const FetchArtifactHandlerInputSchema = z.object({
|
|
36
38
|
type: z.nativeEnum(ArtifactType, {
|
|
37
|
-
description: "
|
|
39
|
+
description: "Type of test artifact to retrieve. One of: APP_CONTEXT (application description), GENERAL_USER_STORIES (stories without test cases), USER_STORIES (stories with test cases), PLAYWRIGHT_CODE (generated test code — requires identifier), PROJECT_CONTEXT (project-level context).",
|
|
38
40
|
}),
|
|
39
41
|
suiteUuid: z
|
|
40
|
-
.string({
|
|
42
|
+
.string({
|
|
43
|
+
description: "UUID of the analysis suite to fetch artifacts from. Get this from wopee_fetch_analysis_suites.",
|
|
44
|
+
})
|
|
41
45
|
.min(1, "Suite UUID is required"),
|
|
42
46
|
identifier: z
|
|
43
47
|
.string({
|
|
44
|
-
description: "
|
|
48
|
+
description: "Test case identifier in format 'US004:TC006'. Required only when type is PLAYWRIGHT_CODE. Ignored for all other artifact types.",
|
|
45
49
|
})
|
|
46
50
|
.optional(),
|
|
47
51
|
});
|
|
@@ -67,17 +71,19 @@ export const FetchArtifactInputSchema = z.object({
|
|
|
67
71
|
});
|
|
68
72
|
export const UpdateArtifactHandlerInputSchema = z.object({
|
|
69
73
|
type: z.nativeEnum(ArtifactType, {
|
|
70
|
-
description: "
|
|
74
|
+
description: "Type of test artifact to update. One of: APP_CONTEXT, GENERAL_USER_STORIES, USER_STORIES, PLAYWRIGHT_CODE (requires identifier), PROJECT_CONTEXT. Must match the type used when the artifact was generated.",
|
|
71
75
|
}),
|
|
72
76
|
content: z.string({
|
|
73
|
-
description: "
|
|
77
|
+
description: "The complete new content to replace the existing artifact. This is a destructive overwrite — the entire previous content is replaced. Pass the full updated content, not a partial diff.",
|
|
74
78
|
}),
|
|
75
79
|
suiteUuid: z
|
|
76
|
-
.string({
|
|
80
|
+
.string({
|
|
81
|
+
description: "UUID of the analysis suite containing the artifact to update. Get this from wopee_fetch_analysis_suites.",
|
|
82
|
+
})
|
|
77
83
|
.min(1, "Suite UUID is required"),
|
|
78
84
|
identifier: z
|
|
79
85
|
.string({
|
|
80
|
-
description: "
|
|
86
|
+
description: "Test case identifier in format 'US004:TC006'. Required only when type is PLAYWRIGHT_CODE. Ignored for all other artifact types.",
|
|
81
87
|
})
|
|
82
88
|
.optional(),
|
|
83
89
|
});
|
|
@@ -7,7 +7,7 @@ export const wopeeCreateBlankSuite = {
|
|
|
7
7
|
name: ToolName.WOPEE_CREATE_BLANK_SUITE,
|
|
8
8
|
config: {
|
|
9
9
|
title: "Create blank analysis suite",
|
|
10
|
-
description: "Create a new empty analysis suite in the current project. Use this as the first step when
|
|
10
|
+
description: "Create a new empty analysis suite in the current project. Use this as the first step when you want to manually build a test suite — the returned suite UUID is needed by wopee_generate_artifact, wopee_fetch_artifact, wopee_update_artifact, and wopee_dispatch_agent. If you want to auto-analyze a web app instead, use wopee_dispatch_analysis which creates and populates a suite in one step. Takes no input parameters; uses WOPEE_PROJECT_UUID from environment. Not idempotent: each call creates a new suite. Returns the suite object with UUID, name, type, and status. Fails if WOPEE_PROJECT_UUID is not configured.",
|
|
11
11
|
},
|
|
12
12
|
handler: async () => {
|
|
13
13
|
try {
|
|
@@ -9,7 +9,7 @@ export const wopeeDispatchAgent = {
|
|
|
9
9
|
name: ToolName.WOPEE_DISPATCH_AGENT,
|
|
10
10
|
config: {
|
|
11
11
|
title: "Dispatch autonomous testing agent",
|
|
12
|
-
description: "
|
|
12
|
+
description: "Execute a specific test case by dispatching an autonomous AI agent. The agent opens a real browser, navigates the web app, follows the test case steps, captures screenshots at each step, and reports pass/fail with detailed findings. Prerequisite: test cases must exist in the suite — generate them first with wopee_generate_artifact (type USER_STORIES_WITH_TEST_CASES). Do NOT use this to analyze or crawl an app — use wopee_dispatch_analysis for that. Side effects: creates execution records and screenshots on the Wopee.io platform. Rate limit: 10 seconds between dispatches per project; concurrent calls auto-retry with exponential backoff. On success, returns executed test case results. On failure (invalid suite/test case ID), returns an error message. Use wopee_fetch_executed_test_cases afterward to get full results.",
|
|
13
13
|
inputSchema: WopeeDispatchAgentInputSchema.shape,
|
|
14
14
|
},
|
|
15
15
|
handler: async (input) => {
|
|
@@ -9,7 +9,7 @@ export const wopeeDispatchAnalysis = {
|
|
|
9
9
|
name: ToolName.WOPEE_DISPATCH_ANALYSIS,
|
|
10
10
|
config: {
|
|
11
11
|
title: "Dispatch analysis crawl",
|
|
12
|
-
description: "Create a new analysis suite
|
|
12
|
+
description: "Create a new analysis suite AND dispatch an AI crawling agent in one step. The agent opens a real browser, navigates from the starting URL, discovers pages, and maps the application structure. Use this when you want to auto-analyze a web app — it combines suite creation and crawling. Use wopee_create_blank_suite instead if you want to manually populate the suite. Optionally accepts starting URL, login credentials, cookie preferences (ACCEPT_ALL, DECLINE_ALL, IGNORE), custom variables, and free-text instructions to guide the crawl. Not idempotent: each call creates a new suite and starts a new crawl. Side effects: creates a suite and execution records on the platform. Rate limit: 10 seconds between dispatches per project; concurrent calls auto-retry with exponential backoff. Returns the created suite object on success.",
|
|
13
13
|
inputSchema: WopeeDispatchAnalysisInputSchema.shape,
|
|
14
14
|
},
|
|
15
15
|
handler: async (input) => {
|
|
@@ -7,7 +7,7 @@ export const wopeeFetchAnalysisSuites = {
|
|
|
7
7
|
name: ToolName.WOPEE_FETCH_ANALYSIS_SUITES,
|
|
8
8
|
config: {
|
|
9
9
|
title: "List analysis suites",
|
|
10
|
-
description: "List all analysis suites in the current project. Returns an array of
|
|
10
|
+
description: "List all analysis suites in the current project. Returns an array of suite objects with UUIDs, names, types (ANALYSIS, AGENT, etc.), and running statuses (IDLE, IN_PROGRESS, FINISHED). Use this to discover existing suites before calling other tools — you need a suite UUID for wopee_generate_artifact, wopee_fetch_artifact, wopee_update_artifact, and wopee_dispatch_agent. Read-only: does not create or modify anything. Takes no input; uses WOPEE_PROJECT_UUID from environment. Returns an empty array if no suites exist. Fails if WOPEE_PROJECT_UUID is not configured.",
|
|
11
11
|
},
|
|
12
12
|
handler: async () => {
|
|
13
13
|
try {
|
|
@@ -5,7 +5,7 @@ export const wopeeFetchArtifact = {
|
|
|
5
5
|
name: ToolName.WOPEE_FETCH_ARTIFACT,
|
|
6
6
|
config: {
|
|
7
7
|
title: "Fetch test artifacts",
|
|
8
|
-
description: "Retrieve test
|
|
8
|
+
description: "Retrieve a specific test artifact from a suite. Returns the artifact content as text. Use this to review what wopee_generate_artifact created, or to retrieve existing artifacts before editing with wopee_update_artifact. Does NOT modify any data — this is a read-only operation. If the requested artifact type has not been generated yet for this suite, returns an empty result. For PLAYWRIGHT_CODE, you must provide the test case identifier (e.g. 'US004:TC006'); omitting it returns an error. For all other types, the identifier parameter is ignored.",
|
|
9
9
|
inputSchema: FetchArtifactHandlerInputSchema.shape,
|
|
10
10
|
},
|
|
11
11
|
handler: async (input) => await fetchArtifact(input),
|
|
@@ -8,7 +8,7 @@ export const wopeeFetchExecutedTestCases = {
|
|
|
8
8
|
name: ToolName.WOPEE_FETCH_EXECUTED_TEST_CASES,
|
|
9
9
|
config: {
|
|
10
10
|
title: "Fetch test execution results",
|
|
11
|
-
description: "Retrieve
|
|
11
|
+
description: "Retrieve results of test cases executed by the autonomous agent. Returns each test case with its execution status (IN_PROGRESS, FINISHED, FAILED), agent report (natural language findings), and code report (technical details). Read-only: does not trigger any execution. Use this after wopee_dispatch_agent to check results — if status is IN_PROGRESS, wait and call again. Requires suite UUID. Optionally accepts an analysis identifier (e.g. A068, found in suite data) to filter to a specific analysis run. Returns an empty array if no test cases have been executed in this suite. Do NOT use this to fetch test artifacts like user stories or code — use wopee_fetch_artifact for that.",
|
|
12
12
|
inputSchema: WopeeFetchExecutedTestCasesInputSchema.shape,
|
|
13
13
|
},
|
|
14
14
|
handler: async (input) => {
|
|
@@ -5,7 +5,7 @@ export const wopeeGenerateArtifact = {
|
|
|
5
5
|
name: ToolName.WOPEE_GENERATE_ARTIFACT,
|
|
6
6
|
config: {
|
|
7
7
|
title: "Generate test artifacts",
|
|
8
|
-
description: "Generate AI-powered test artifacts for a suite.
|
|
8
|
+
description: "Generate AI-powered test artifacts for a suite using the Wopee.io AI engine. Each call creates one artifact type — call multiple times for different types. Generation order matters: APP_CONTEXT must be generated before user stories, and user stories before test cases. If called out of order, the AI may produce lower quality results. On success, returns confirmation that generation started. Use wopee_fetch_artifact to retrieve the generated content once ready. Do NOT use this to update existing artifacts — use wopee_update_artifact instead. Generating the same type again overwrites the previous version.",
|
|
9
9
|
inputSchema: GenerateAIDataHandlerInputSchema.shape,
|
|
10
10
|
},
|
|
11
11
|
handler: async (input) => await generateAIDataFile(input),
|
|
@@ -5,7 +5,7 @@ export const wopeeUpdateArtifact = {
|
|
|
5
5
|
name: ToolName.WOPEE_UPDATE_ARTIFACT,
|
|
6
6
|
config: {
|
|
7
7
|
title: "Update test artifacts",
|
|
8
|
-
description: "
|
|
8
|
+
description: "Replace the content of a previously generated test artifact in a suite. This is a destructive overwrite — the full content is replaced, not patched. Use this after reviewing artifacts with wopee_fetch_artifact to fix incorrect user stories, refine test case steps, or edit generated Playwright code. Do NOT use this to create new artifacts — use wopee_generate_artifact instead. Prerequisite: the artifact must already exist (generated via wopee_generate_artifact). On success, returns confirmation. On failure (e.g. invalid suite UUID, missing artifact), returns an error message. Idempotent: calling with the same content multiple times produces the same result.",
|
|
9
9
|
inputSchema: UpdateArtifactHandlerInputSchema.shape,
|
|
10
10
|
},
|
|
11
11
|
handler: async (input) => await updateArtifact(input),
|
package/package.json
CHANGED