@muggleai/works 4.6.0 → 4.7.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/dist/{chunk-TP4T4T2Z.js → chunk-HDEZDEM6.js} +721 -2747
- package/dist/chunk-SMRMPHDD.js +2234 -0
- package/dist/cli.js +2 -1
- package/dist/index.js +2 -1
- package/dist/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/plugin/.cursor-plugin/plugin.json +1 -1
- package/dist/plugin/skills/do/open-prs.md +2 -1
- package/dist/plugin/skills/muggle-pr-visual-walkthrough/SKILL.md +12 -2
- package/dist/plugin/skills/muggle-test/SKILL.md +3 -0
- package/dist/plugin/skills/muggle-test-feature-local/SKILL.md +3 -0
- package/dist/release-manifest.json +4 -4
- package/dist/src-TX2KXI26.js +1 -0
- package/package.json +6 -6
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.cursor-plugin/plugin.json +1 -1
- package/plugin/skills/do/open-prs.md +2 -1
- package/plugin/skills/muggle-pr-visual-walkthrough/SKILL.md +12 -2
- package/plugin/skills/muggle-test/SKILL.md +3 -0
- package/plugin/skills/muggle-test-feature-local/SKILL.md +3 -0
package/dist/cli.js
CHANGED
package/dist/index.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { src_exports as commands, createUnifiedMcpServer, server_exports as server } from './chunk-SMRMPHDD.js';
|
|
2
|
+
export { createChildLogger, e2e_exports as e2e, getConfig, getLocalQaTools, getLogger, getQaTools, local_exports as localQa, mcp_exports as mcp, e2e_exports as qa, src_exports as shared } from './chunk-HDEZDEM6.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "muggle",
|
|
3
3
|
"description": "Run real-browser end-to-end (E2E) acceptance tests on your web app from any AI coding agent. Generate test scripts from plain English, replay them on localhost, capture screenshots, and validate user flows like signup, checkout, and dashboards. Works across Claude Code, Cursor, Codex, and Windsurf.",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.7.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Muggle AI",
|
|
7
7
|
"email": "support@muggle-ai.com"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "muggle",
|
|
3
3
|
"displayName": "Muggle AI",
|
|
4
4
|
"description": "Ship quality products with AI-powered end-to-end (E2E) acceptance testing that validates your web app like a real user — from Claude Code and Cursor to PR.",
|
|
5
|
-
"version": "4.
|
|
5
|
+
"version": "4.7.0",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Muggle AI",
|
|
8
8
|
"email": "support@muggle-ai.com"
|
|
@@ -13,6 +13,7 @@ You receive:
|
|
|
13
13
|
- `steps`: array of `{ stepIndex, action, screenshotUrl }`
|
|
14
14
|
- `failureStepIndex` and `error` (if failed)
|
|
15
15
|
- `artifactsDir` (for local debugging)
|
|
16
|
+
- `description` and `useCaseName` (optional but recommended) — test case one-liner and parent use case title; drive the grouped overview and the per-test collapsible headers in the rendered walkthrough. Prefer values already in the `e2e-acceptance.md` stage's conversation context; only call `muggle-remote-test-case-get` / `muggle-remote-use-case-get` for anything you don't already have.
|
|
16
17
|
|
|
17
18
|
## Your Job
|
|
18
19
|
|
|
@@ -46,7 +47,7 @@ For each repo with changes:
|
|
|
46
47
|
|
|
47
48
|
### Input — the `E2eReport` JSON
|
|
48
49
|
|
|
49
|
-
The `e2e-acceptance.md` stage already produces an `E2eReport` with the exact shape the skill expects (`projectId` + `tests[]` with per-test `name`, `testCaseId`, `testScriptId`, `runId`, `viewUrl`, `status`, and `steps[]` of `{stepIndex, action, screenshotUrl}`; failed tests additionally have `failureStepIndex`, `error`, and optionally `artifactsDir`). Pass it through unchanged — do not reshape it. The full schema is documented in the shared skill.
|
|
50
|
+
The `e2e-acceptance.md` stage already produces an `E2eReport` with the exact shape the skill expects (`projectId` + `tests[]` with per-test `name`, `testCaseId`, `testScriptId`, `runId`, `viewUrl`, `status`, and `steps[]` of `{stepIndex, action, screenshotUrl}`; failed tests additionally have `failureStepIndex`, `error`, and optionally `artifactsDir`; every test may additionally carry `description` and `useCaseName` — optional but recommended — which drive the grouped overview and per-test collapsible headers in the rendered walkthrough). Pass it through unchanged — do not reshape it. The full schema is documented in the shared skill.
|
|
50
51
|
|
|
51
52
|
### Invocation — Mode B (render-only)
|
|
52
53
|
|
|
@@ -26,7 +26,9 @@ Every caller must build an `E2eReport` JSON object and have it in conversation c
|
|
|
26
26
|
"projectId": "<UUID>",
|
|
27
27
|
"tests": [
|
|
28
28
|
{
|
|
29
|
-
"name": "<test case
|
|
29
|
+
"name": "<test case title>",
|
|
30
|
+
"description": "<one-line description of what this test verifies>",
|
|
31
|
+
"useCaseName": "<parent use case title>",
|
|
30
32
|
"testCaseId": "<UUID>",
|
|
31
33
|
"testScriptId": "<UUID>",
|
|
32
34
|
"runId": "<UUID>",
|
|
@@ -39,6 +41,8 @@ Every caller must build an `E2eReport` JSON object and have it in conversation c
|
|
|
39
41
|
},
|
|
40
42
|
{
|
|
41
43
|
"name": "Checkout flow",
|
|
44
|
+
"description": "Verify a shopper can complete checkout with a saved card.",
|
|
45
|
+
"useCaseName": "Purchase",
|
|
42
46
|
"testCaseId": "<UUID>",
|
|
43
47
|
"testScriptId": "<UUID>",
|
|
44
48
|
"runId": "<UUID>",
|
|
@@ -55,7 +59,12 @@ Every caller must build an `E2eReport` JSON object and have it in conversation c
|
|
|
55
59
|
}
|
|
56
60
|
```
|
|
57
61
|
|
|
58
|
-
Required fields per test: `name`, `testCaseId`, `runId`, `viewUrl`, `status`, `steps[]` with `{stepIndex, action, screenshotUrl}`. Failed tests additionally require `failureStepIndex` and `error`.
|
|
62
|
+
Required fields per test: `name`, `testCaseId`, `runId`, `viewUrl`, `status`, `steps[]` with `{stepIndex, action, screenshotUrl}`. Failed tests additionally require `failureStepIndex` and `error`.
|
|
63
|
+
|
|
64
|
+
**Optional but recommended** per test:
|
|
65
|
+
- `description` — a one-line summary of what the test case verifies. Shown in the collapsible header for each test and helps reviewers understand the test without expanding it. Pull from the test case's `title`/`description` via `muggle-remote-test-case-get`.
|
|
66
|
+
- `useCaseName` — the parent use case title. When present on any test, the overview list is grouped by use case; otherwise it is rendered as a flat list. Pull from `muggle-remote-use-case-get` using the test case's parent use-case id.
|
|
67
|
+
- `testScriptId` and `artifactsDir` are also optional.
|
|
59
68
|
|
|
60
69
|
If any required field is missing, stop and tell the caller exactly what's missing. Never fabricate data.
|
|
61
70
|
|
|
@@ -72,6 +81,7 @@ After `muggle-local-publish-test-script` returns `{testScriptId, viewUrl, ...}`
|
|
|
72
81
|
3. Determine `status` from the local run result (`muggle-local-run-result-get`).
|
|
73
82
|
4. For failures, read `failureStepIndex`, `error`, and `artifactsDir` from the run result.
|
|
74
83
|
5. Assemble the `E2eReport` with `projectId` from the test run.
|
|
84
|
+
6. Populate `description` (test case title/description) and `useCaseName` (parent use case title) on each report entry — optional but strongly recommended; they drive the grouped overview and the per-test collapsible headers. Prefer values already in your conversation context from earlier steps (e.g. a test case you just created or selected, or a use case you confirmed); only call `muggle-remote-test-case-get` / `muggle-remote-use-case-get` for anything you don't already have.
|
|
75
85
|
|
|
76
86
|
### From `muggle-do` (`open-prs.md`)
|
|
77
87
|
|
|
@@ -318,6 +318,7 @@ For the published runs from Step 7A, issue **all** `muggle-remote-test-script-ge
|
|
|
318
318
|
1. Extract `steps[].operation.action` (description) and `steps[].operation.screenshotUrl` (cloud URL).
|
|
319
319
|
2. Build a `steps` array: `[{ stepIndex: 0, action: "...", screenshotUrl: "..." }, ...]`.
|
|
320
320
|
3. If the run failed, also capture `failureStepIndex`, `error`, and the local `artifactsDir` from `muggle-local-run-result-get`.
|
|
321
|
+
4. Populate `description` (test case title/description) and `useCaseName` (parent use case title) on each report entry — optional but strongly recommended; they drive the grouped overview and the per-test collapsible headers. Prefer values already in your conversation context from earlier steps (e.g. the test case you just created or selected, or the use case you confirmed); only call `muggle-remote-test-case-get` / `muggle-remote-use-case-get` for anything you don't already have.
|
|
321
322
|
|
|
322
323
|
Assemble the report:
|
|
323
324
|
|
|
@@ -327,6 +328,8 @@ Assemble the report:
|
|
|
327
328
|
"tests": [
|
|
328
329
|
{
|
|
329
330
|
"name": "<test case title>",
|
|
331
|
+
"description": "<one-line description of what this test verifies (optional but recommended)>",
|
|
332
|
+
"useCaseName": "<parent use case title (optional but recommended)>",
|
|
330
333
|
"testCaseId": "<id>",
|
|
331
334
|
"testScriptId": "<id>",
|
|
332
335
|
"runId": "<id>",
|
|
@@ -137,6 +137,7 @@ The shared skill takes an **`E2eReport` JSON** that includes per-step screenshot
|
|
|
137
137
|
2. Extract per step: `steps[].operation.action` and `steps[].operation.screenshotUrl`.
|
|
138
138
|
3. Build the `steps` array: `[{ stepIndex: 0, action: "...", screenshotUrl: "..." }, ...]`.
|
|
139
139
|
4. If the run failed, capture `failureStepIndex`, `error`, and the local `artifactsDir` from the run result in step 8.
|
|
140
|
+
5. Populate `description` (test case title/description) and `useCaseName` (parent use case title) on the report entry — optional but strongly recommended; they drive the grouped overview and the per-test collapsible headers. Prefer values already in your conversation context from earlier steps (e.g. the test case you just created or selected, or the use case you confirmed); only call `muggle-remote-test-case-get` / `muggle-remote-use-case-get` for anything you don't already have.
|
|
140
141
|
|
|
141
142
|
Assemble the `E2eReport`:
|
|
142
143
|
|
|
@@ -146,6 +147,8 @@ Assemble the `E2eReport`:
|
|
|
146
147
|
"tests": [
|
|
147
148
|
{
|
|
148
149
|
"name": "<test case title>",
|
|
150
|
+
"description": "<one-line description of what this test verifies (optional but recommended)>",
|
|
151
|
+
"useCaseName": "<parent use case title (optional but recommended)>",
|
|
149
152
|
"testCaseId": "<id>",
|
|
150
153
|
"testScriptId": "<id from publish>",
|
|
151
154
|
"runId": "<runId from execute>",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"release": "4.
|
|
3
|
-
"buildId": "run-
|
|
4
|
-
"commitSha": "
|
|
5
|
-
"buildTime": "2026-04-
|
|
2
|
+
"release": "4.7.0",
|
|
3
|
+
"buildId": "run-18-1",
|
|
4
|
+
"commitSha": "2497ce3c3bd536d511c5f1a8d6621e691fd8f5e3",
|
|
5
|
+
"buildTime": "2026-04-11T06:11:05Z",
|
|
6
6
|
"serviceName": "muggle-ai-works-mcp"
|
|
7
7
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { buildElectronAppChecksumsUrl, buildElectronAppReleaseAssetUrl, buildElectronAppReleaseTag, calculateFileChecksum, createApiKeyWithToken, createChildLogger, deleteApiKeyData, deleteCredentials, e2e_exports as e2e, getApiKey, getApiKeyFilePath, getAuthService, getBundledElectronAppVersion, getCallerCredentials, getCallerCredentialsAsync, getChecksumForPlatform, getConfig, getCredentialsFilePath, getDataDir, getDownloadBaseUrl, getElectronAppChecksums, getElectronAppDir, getElectronAppVersion, getElectronAppVersionSource, getLocalQaTools, getLogger, getPlatformKey, getQaTools, getValidApiKeyData, getValidCredentials, hasApiKey, isElectronAppInstalled, loadApiKeyData, loadCredentials, local_exports as localQa, mcp_exports as mcp, openBrowserUrl, performLogin, performLogout, pollDeviceCode, e2e_exports as qa, resetConfig, resetLogger, saveApiKey, saveApiKeyData, saveCredentials, startDeviceCodeFlow, toolRequiresAuth, verifyFileChecksum } from './chunk-HDEZDEM6.js';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@muggleai/works",
|
|
3
3
|
"mcpName": "io.github.multiplex-ai/muggle",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.7.0",
|
|
5
5
|
"description": "Ship quality products with AI-powered E2E acceptance testing that validates your web app like a real user — from Claude Code and Cursor to PR.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -41,14 +41,14 @@
|
|
|
41
41
|
"test:watch": "vitest"
|
|
42
42
|
},
|
|
43
43
|
"muggleConfig": {
|
|
44
|
-
"electronAppVersion": "1.0.
|
|
44
|
+
"electronAppVersion": "1.0.51",
|
|
45
45
|
"downloadBaseUrl": "https://github.com/multiplex-ai/muggle-ai-works/releases/download",
|
|
46
46
|
"runtimeTargetDefault": "production",
|
|
47
47
|
"checksums": {
|
|
48
|
-
"darwin-arm64": "
|
|
49
|
-
"darwin-x64": "
|
|
50
|
-
"win32-x64": "
|
|
51
|
-
"linux-x64": "
|
|
48
|
+
"darwin-arm64": "6be5d2ff37541d9933e065f94f04348d7e4be63f01896b334a108a755a79f770",
|
|
49
|
+
"darwin-x64": "5c381e68829a330eecb8bd6edb9e5fba820e995acafe7fe78474fd7c43174f40",
|
|
50
|
+
"win32-x64": "2c101c467f75e8d60482aad16ad3c1a1e8edecac9ae58cdf7f1ad74cdf1141f7",
|
|
51
|
+
"linux-x64": "efeed3f2caf1cd301e8cc503a8ebae1f604ce73f7325c43202dee1c8a858a8a8"
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "muggle",
|
|
3
3
|
"description": "Run real-browser end-to-end (E2E) acceptance tests on your web app from any AI coding agent. Generate test scripts from plain English, replay them on localhost, capture screenshots, and validate user flows like signup, checkout, and dashboards. Works across Claude Code, Cursor, Codex, and Windsurf.",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.7.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Muggle AI",
|
|
7
7
|
"email": "support@muggle-ai.com"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "muggle",
|
|
3
3
|
"displayName": "Muggle AI",
|
|
4
4
|
"description": "Ship quality products with AI-powered end-to-end (E2E) acceptance testing that validates your web app like a real user — from Claude Code and Cursor to PR.",
|
|
5
|
-
"version": "4.
|
|
5
|
+
"version": "4.7.0",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Muggle AI",
|
|
8
8
|
"email": "support@muggle-ai.com"
|
|
@@ -13,6 +13,7 @@ You receive:
|
|
|
13
13
|
- `steps`: array of `{ stepIndex, action, screenshotUrl }`
|
|
14
14
|
- `failureStepIndex` and `error` (if failed)
|
|
15
15
|
- `artifactsDir` (for local debugging)
|
|
16
|
+
- `description` and `useCaseName` (optional but recommended) — test case one-liner and parent use case title; drive the grouped overview and the per-test collapsible headers in the rendered walkthrough. Prefer values already in the `e2e-acceptance.md` stage's conversation context; only call `muggle-remote-test-case-get` / `muggle-remote-use-case-get` for anything you don't already have.
|
|
16
17
|
|
|
17
18
|
## Your Job
|
|
18
19
|
|
|
@@ -46,7 +47,7 @@ For each repo with changes:
|
|
|
46
47
|
|
|
47
48
|
### Input — the `E2eReport` JSON
|
|
48
49
|
|
|
49
|
-
The `e2e-acceptance.md` stage already produces an `E2eReport` with the exact shape the skill expects (`projectId` + `tests[]` with per-test `name`, `testCaseId`, `testScriptId`, `runId`, `viewUrl`, `status`, and `steps[]` of `{stepIndex, action, screenshotUrl}`; failed tests additionally have `failureStepIndex`, `error`, and optionally `artifactsDir`). Pass it through unchanged — do not reshape it. The full schema is documented in the shared skill.
|
|
50
|
+
The `e2e-acceptance.md` stage already produces an `E2eReport` with the exact shape the skill expects (`projectId` + `tests[]` with per-test `name`, `testCaseId`, `testScriptId`, `runId`, `viewUrl`, `status`, and `steps[]` of `{stepIndex, action, screenshotUrl}`; failed tests additionally have `failureStepIndex`, `error`, and optionally `artifactsDir`; every test may additionally carry `description` and `useCaseName` — optional but recommended — which drive the grouped overview and per-test collapsible headers in the rendered walkthrough). Pass it through unchanged — do not reshape it. The full schema is documented in the shared skill.
|
|
50
51
|
|
|
51
52
|
### Invocation — Mode B (render-only)
|
|
52
53
|
|
|
@@ -26,7 +26,9 @@ Every caller must build an `E2eReport` JSON object and have it in conversation c
|
|
|
26
26
|
"projectId": "<UUID>",
|
|
27
27
|
"tests": [
|
|
28
28
|
{
|
|
29
|
-
"name": "<test case
|
|
29
|
+
"name": "<test case title>",
|
|
30
|
+
"description": "<one-line description of what this test verifies>",
|
|
31
|
+
"useCaseName": "<parent use case title>",
|
|
30
32
|
"testCaseId": "<UUID>",
|
|
31
33
|
"testScriptId": "<UUID>",
|
|
32
34
|
"runId": "<UUID>",
|
|
@@ -39,6 +41,8 @@ Every caller must build an `E2eReport` JSON object and have it in conversation c
|
|
|
39
41
|
},
|
|
40
42
|
{
|
|
41
43
|
"name": "Checkout flow",
|
|
44
|
+
"description": "Verify a shopper can complete checkout with a saved card.",
|
|
45
|
+
"useCaseName": "Purchase",
|
|
42
46
|
"testCaseId": "<UUID>",
|
|
43
47
|
"testScriptId": "<UUID>",
|
|
44
48
|
"runId": "<UUID>",
|
|
@@ -55,7 +59,12 @@ Every caller must build an `E2eReport` JSON object and have it in conversation c
|
|
|
55
59
|
}
|
|
56
60
|
```
|
|
57
61
|
|
|
58
|
-
Required fields per test: `name`, `testCaseId`, `runId`, `viewUrl`, `status`, `steps[]` with `{stepIndex, action, screenshotUrl}`. Failed tests additionally require `failureStepIndex` and `error`.
|
|
62
|
+
Required fields per test: `name`, `testCaseId`, `runId`, `viewUrl`, `status`, `steps[]` with `{stepIndex, action, screenshotUrl}`. Failed tests additionally require `failureStepIndex` and `error`.
|
|
63
|
+
|
|
64
|
+
**Optional but recommended** per test:
|
|
65
|
+
- `description` — a one-line summary of what the test case verifies. Shown in the collapsible header for each test and helps reviewers understand the test without expanding it. Pull from the test case's `title`/`description` via `muggle-remote-test-case-get`.
|
|
66
|
+
- `useCaseName` — the parent use case title. When present on any test, the overview list is grouped by use case; otherwise it is rendered as a flat list. Pull from `muggle-remote-use-case-get` using the test case's parent use-case id.
|
|
67
|
+
- `testScriptId` and `artifactsDir` are also optional.
|
|
59
68
|
|
|
60
69
|
If any required field is missing, stop and tell the caller exactly what's missing. Never fabricate data.
|
|
61
70
|
|
|
@@ -72,6 +81,7 @@ After `muggle-local-publish-test-script` returns `{testScriptId, viewUrl, ...}`
|
|
|
72
81
|
3. Determine `status` from the local run result (`muggle-local-run-result-get`).
|
|
73
82
|
4. For failures, read `failureStepIndex`, `error`, and `artifactsDir` from the run result.
|
|
74
83
|
5. Assemble the `E2eReport` with `projectId` from the test run.
|
|
84
|
+
6. Populate `description` (test case title/description) and `useCaseName` (parent use case title) on each report entry — optional but strongly recommended; they drive the grouped overview and the per-test collapsible headers. Prefer values already in your conversation context from earlier steps (e.g. a test case you just created or selected, or a use case you confirmed); only call `muggle-remote-test-case-get` / `muggle-remote-use-case-get` for anything you don't already have.
|
|
75
85
|
|
|
76
86
|
### From `muggle-do` (`open-prs.md`)
|
|
77
87
|
|
|
@@ -318,6 +318,7 @@ For the published runs from Step 7A, issue **all** `muggle-remote-test-script-ge
|
|
|
318
318
|
1. Extract `steps[].operation.action` (description) and `steps[].operation.screenshotUrl` (cloud URL).
|
|
319
319
|
2. Build a `steps` array: `[{ stepIndex: 0, action: "...", screenshotUrl: "..." }, ...]`.
|
|
320
320
|
3. If the run failed, also capture `failureStepIndex`, `error`, and the local `artifactsDir` from `muggle-local-run-result-get`.
|
|
321
|
+
4. Populate `description` (test case title/description) and `useCaseName` (parent use case title) on each report entry — optional but strongly recommended; they drive the grouped overview and the per-test collapsible headers. Prefer values already in your conversation context from earlier steps (e.g. the test case you just created or selected, or the use case you confirmed); only call `muggle-remote-test-case-get` / `muggle-remote-use-case-get` for anything you don't already have.
|
|
321
322
|
|
|
322
323
|
Assemble the report:
|
|
323
324
|
|
|
@@ -327,6 +328,8 @@ Assemble the report:
|
|
|
327
328
|
"tests": [
|
|
328
329
|
{
|
|
329
330
|
"name": "<test case title>",
|
|
331
|
+
"description": "<one-line description of what this test verifies (optional but recommended)>",
|
|
332
|
+
"useCaseName": "<parent use case title (optional but recommended)>",
|
|
330
333
|
"testCaseId": "<id>",
|
|
331
334
|
"testScriptId": "<id>",
|
|
332
335
|
"runId": "<id>",
|
|
@@ -137,6 +137,7 @@ The shared skill takes an **`E2eReport` JSON** that includes per-step screenshot
|
|
|
137
137
|
2. Extract per step: `steps[].operation.action` and `steps[].operation.screenshotUrl`.
|
|
138
138
|
3. Build the `steps` array: `[{ stepIndex: 0, action: "...", screenshotUrl: "..." }, ...]`.
|
|
139
139
|
4. If the run failed, capture `failureStepIndex`, `error`, and the local `artifactsDir` from the run result in step 8.
|
|
140
|
+
5. Populate `description` (test case title/description) and `useCaseName` (parent use case title) on the report entry — optional but strongly recommended; they drive the grouped overview and the per-test collapsible headers. Prefer values already in your conversation context from earlier steps (e.g. the test case you just created or selected, or the use case you confirmed); only call `muggle-remote-test-case-get` / `muggle-remote-use-case-get` for anything you don't already have.
|
|
140
141
|
|
|
141
142
|
Assemble the `E2eReport`:
|
|
142
143
|
|
|
@@ -146,6 +147,8 @@ Assemble the `E2eReport`:
|
|
|
146
147
|
"tests": [
|
|
147
148
|
{
|
|
148
149
|
"name": "<test case title>",
|
|
150
|
+
"description": "<one-line description of what this test verifies (optional but recommended)>",
|
|
151
|
+
"useCaseName": "<parent use case title (optional but recommended)>",
|
|
149
152
|
"testCaseId": "<id>",
|
|
150
153
|
"testScriptId": "<id from publish>",
|
|
151
154
|
"runId": "<runId from execute>",
|