assuremind 1.0.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/CONTRIBUTING.md +254 -0
- package/LICENSE +21 -0
- package/README.md +367 -0
- package/dist/cli/index.js +14933 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.mts +2950 -0
- package/dist/index.d.ts +2950 -0
- package/dist/index.js +1628 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1525 -0
- package/dist/index.mjs.map +1 -0
- package/docs/CLI-REFERENCE.md +312 -0
- package/docs/GETTING-STARTED.md +378 -0
- package/docs/STUDIO.md +390 -0
- package/package.json +118 -0
- package/templates/AUTOMIND.md +275 -0
- package/templates/autotest.config.ts +25 -0
- package/templates/docs/CLI-REFERENCE.md +413 -0
- package/templates/docs/GETTING-STARTED.md +417 -0
- package/templates/docs/STUDIO.md +625 -0
- package/templates/env.example +112 -0
- package/templates/env.minimal +103 -0
- package/templates/gitignore +17 -0
- package/templates/global-variables.json +5 -0
- package/ui/dist/assets/index-CdtAorWT.js +819 -0
- package/ui/dist/assets/index-KjpMCzao.css +1 -0
- package/ui/dist/favicon.svg +36 -0
- package/ui/dist/index.html +15 -0
|
@@ -0,0 +1,625 @@
|
|
|
1
|
+
# Assuremind Studio — UI Walkthrough
|
|
2
|
+
|
|
3
|
+
> End-to-end guide for using every page and feature in the Assuremind Studio.
|
|
4
|
+
|
|
5
|
+
Start the Studio:
|
|
6
|
+
```bash
|
|
7
|
+
npx assuremind studio
|
|
8
|
+
```
|
|
9
|
+
Opens at **http://localhost:4400**
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Table of Contents
|
|
14
|
+
|
|
15
|
+
1. [Layout Overview](#1-layout-overview)
|
|
16
|
+
2. [Dashboard](#2-dashboard)
|
|
17
|
+
3. [Test Suites — Suite List](#3-test-suites--suite-list)
|
|
18
|
+
4. [Suite Detail — Test Cases](#4-suite-detail--test-cases)
|
|
19
|
+
5. [Case Editor — Writing Steps](#5-case-editor--writing-steps)
|
|
20
|
+
6. [Case Editor — Generating Code](#6-case-editor--generating-code)
|
|
21
|
+
7. [Case Editor — Running a Test](#7-case-editor--running-a-test)
|
|
22
|
+
8. [Case Editor — Drag & Drop Step Reorder](#8-case-editor--drag--drop-step-reorder)
|
|
23
|
+
9. [Variables Page](#9-variables-page)
|
|
24
|
+
10. [Self-Healing Page](#10-self-healing-page)
|
|
25
|
+
11. [Reports Page](#11-reports-page)
|
|
26
|
+
12. [Settings Page](#12-settings-page)
|
|
27
|
+
13. [Keyboard Shortcuts & Tips](#13-keyboard-shortcuts--tips)
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 1. Layout Overview
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
35
|
+
│ Assuremind Studio [version] │
|
|
36
|
+
├──────────────┬──────────────────────────────────────────────┤
|
|
37
|
+
│ │ │
|
|
38
|
+
│ Sidebar │ Main Content Area │
|
|
39
|
+
│ │ │
|
|
40
|
+
│ 🏠 Dashboard│ │
|
|
41
|
+
│ ✨ Smart │ │
|
|
42
|
+
│ 📁 Suites │ │
|
|
43
|
+
│ ▶ Run │ │
|
|
44
|
+
│ 📊 Reports │ │
|
|
45
|
+
│ 🔧 Variables│ │
|
|
46
|
+
│ 💚 Healing │ │
|
|
47
|
+
│ ⚙️ Settings │ │
|
|
48
|
+
│ 🌿 Git │ │
|
|
49
|
+
│ │ │
|
|
50
|
+
└──────────────┴──────────────────────────────────────────────┘
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
The **Sidebar** provides navigation between all sections. The current active page is highlighted.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 2. Dashboard
|
|
58
|
+
|
|
59
|
+
The Dashboard gives you a quick health snapshot of your test project.
|
|
60
|
+
|
|
61
|
+
### What you'll see
|
|
62
|
+
|
|
63
|
+
| Section | Description |
|
|
64
|
+
|---------|-------------|
|
|
65
|
+
| **Total Suites** | Number of test suites in the project |
|
|
66
|
+
| **Total Cases** | Total test cases across all suites |
|
|
67
|
+
| **Last Run** | When the most recent run happened |
|
|
68
|
+
| **Pass Rate** | Percentage of passing tests in the last run |
|
|
69
|
+
| **Recent Runs** | List of the last 5–10 runs with status badges |
|
|
70
|
+
|
|
71
|
+
### Quick actions from the Dashboard
|
|
72
|
+
|
|
73
|
+
- Click any recent run row → opens the detailed run result
|
|
74
|
+
- Click **"New Suite"** shortcut → creates a new test suite directly
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 3. Test Suites — Suite List
|
|
79
|
+
|
|
80
|
+
Navigate to **Suites** in the sidebar.
|
|
81
|
+
|
|
82
|
+
### Creating a Suite
|
|
83
|
+
|
|
84
|
+
1. Click **"+ New Suite"** (top-right)
|
|
85
|
+
2. Fill in the form:
|
|
86
|
+
- **Name** — e.g. `Login Tests`, `Checkout Flow`
|
|
87
|
+
- **Description** *(optional)* — what this suite covers
|
|
88
|
+
- **Tags** *(optional)* — e.g. `smoke`, `regression`, `auth`
|
|
89
|
+
3. Click **Create**
|
|
90
|
+
|
|
91
|
+
The suite appears in the list with a badge showing case count.
|
|
92
|
+
|
|
93
|
+
### Suite List Columns
|
|
94
|
+
|
|
95
|
+
| Column | Description |
|
|
96
|
+
|--------|-------------|
|
|
97
|
+
| Name | Suite name — click to open |
|
|
98
|
+
| Cases | Number of test cases |
|
|
99
|
+
| Tags | Coloured tag badges |
|
|
100
|
+
| Last Run | Pass/fail badge + relative time |
|
|
101
|
+
| Actions | Edit (pencil), Delete (trash), Run (▶), Allure report (📊) |
|
|
102
|
+
|
|
103
|
+
### Running a Suite from the List
|
|
104
|
+
|
|
105
|
+
Click the **▶ Run** icon on any suite row. A run starts immediately in the background. The Last Run badge updates when it completes.
|
|
106
|
+
|
|
107
|
+
### Editing / Deleting a Suite
|
|
108
|
+
|
|
109
|
+
- **Edit** (pencil icon) → updates name, description, or tags
|
|
110
|
+
- **Delete** (trash icon) → removes the suite and all its test cases (irreversible — confirm dialog shown)
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 4. Suite Detail — Test Cases
|
|
115
|
+
|
|
116
|
+
Click on a suite name to open the Suite Detail page.
|
|
117
|
+
|
|
118
|
+
### Header area
|
|
119
|
+
|
|
120
|
+
- Suite name and description
|
|
121
|
+
- Tag badges
|
|
122
|
+
- **▶ Run Suite** button — runs all cases in this suite
|
|
123
|
+
- **📊 Allure** button — opens the Allure HTML report for the last suite run
|
|
124
|
+
- **+ New Case** button
|
|
125
|
+
|
|
126
|
+
### Test Case List
|
|
127
|
+
|
|
128
|
+
Each row shows:
|
|
129
|
+
|
|
130
|
+
| Column | Description |
|
|
131
|
+
|--------|-------------|
|
|
132
|
+
| Name | Test case name — click to open Case Editor |
|
|
133
|
+
| Steps | Number of steps in the case |
|
|
134
|
+
| Status | Last run status badge (Passed / Failed / Not Run) |
|
|
135
|
+
| Duration | Last run duration |
|
|
136
|
+
| Actions | Edit, Delete, Run (▶), Allure (📊) |
|
|
137
|
+
|
|
138
|
+
### Creating a Test Case
|
|
139
|
+
|
|
140
|
+
1. Click **"+ New Case"**
|
|
141
|
+
2. Enter:
|
|
142
|
+
- **Name** — e.g. `User can log in with valid credentials`
|
|
143
|
+
- **Description** *(optional)*
|
|
144
|
+
- **Tags** *(optional)*
|
|
145
|
+
- **Timeout** *(optional)* — override the global default (ms)
|
|
146
|
+
3. Click **Create**
|
|
147
|
+
|
|
148
|
+
### Running a Single Case
|
|
149
|
+
|
|
150
|
+
Click **▶** on the case row, or open the case and use the Run button in the toolbar.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## 5. Case Editor — Writing Steps
|
|
155
|
+
|
|
156
|
+
Click on a test case name to open the **Case Editor**. This is where you write, organise, and manage test steps.
|
|
157
|
+
|
|
158
|
+
### Page Layout
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
┌────────────────────────────────────────────────────────────┐
|
|
162
|
+
│ ← Back | Case Name [Generate All] [▶ Run]│
|
|
163
|
+
├────────────────────────────────────────────────────────────┤
|
|
164
|
+
│ Case Details (collapsible) │
|
|
165
|
+
│ Timeout: [30000 ms] Tags: [...] │
|
|
166
|
+
├────────────────────────────────────────────────────────────┤
|
|
167
|
+
│ Steps [+ Add] │
|
|
168
|
+
│ ┌──────────────────────────────────────────────────────┐ │
|
|
169
|
+
│ │ ⠿ 1 Go to the login page [⚡][✏️][🗑️] │ │
|
|
170
|
+
│ │ Code: await page.goto('/login'); │ │
|
|
171
|
+
│ ├──────────────────────────────────────────────────────┤ │
|
|
172
|
+
│ │ ⠿ 2 Enter email in the email field [⚡][✏️][🗑️] │ │
|
|
173
|
+
│ │ Code: await page.getByLabel... [timeout] │ │
|
|
174
|
+
│ └──────────────────────────────────────────────────────┘ │
|
|
175
|
+
└────────────────────────────────────────────────────────────┘
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Adding a Step
|
|
179
|
+
|
|
180
|
+
1. Click **"+ Add Step"**
|
|
181
|
+
2. Type your plain-English instruction in the input field
|
|
182
|
+
3. Press **Enter** or click **Add**
|
|
183
|
+
|
|
184
|
+
The step is added at the bottom of the list.
|
|
185
|
+
|
|
186
|
+
### Step Row Controls
|
|
187
|
+
|
|
188
|
+
Each step row shows:
|
|
189
|
+
|
|
190
|
+
| Control | Description |
|
|
191
|
+
|---------|-------------|
|
|
192
|
+
| **⠿** (grip icon) | Drag handle — use to reorder steps |
|
|
193
|
+
| **Step number** | Order of the step (1, 2, 3…) |
|
|
194
|
+
| **Instruction** | Plain-English description |
|
|
195
|
+
| **Code panel** | Generated Playwright code (click to expand/edit) |
|
|
196
|
+
| **Timeout field** | Per-step timeout override in ms (increment/decrement by 100) |
|
|
197
|
+
| **⚡** | Generate/re-generate code for this step only |
|
|
198
|
+
| **✏️** | Edit the step instruction |
|
|
199
|
+
| **🗑️** | Delete the step |
|
|
200
|
+
|
|
201
|
+
### Writing Good Step Instructions
|
|
202
|
+
|
|
203
|
+
| Goal | Example Instruction |
|
|
204
|
+
|------|---------------------|
|
|
205
|
+
| Navigate | `Go to the login page` |
|
|
206
|
+
| Navigate with URL | `Go to https://app.example.com/login` |
|
|
207
|
+
| Click a button | `Click the Login button` |
|
|
208
|
+
| Click a link | `Click the "Forgot Password" link` |
|
|
209
|
+
| Fill a text field | `Enter "john@example.com" in the email field` |
|
|
210
|
+
| Fill with variable | `Enter "{{USERNAME}}" in the username field` |
|
|
211
|
+
| Select a dropdown | `Select "United States" from the country dropdown` |
|
|
212
|
+
| Check a checkbox | `Check the "Remember me" checkbox` |
|
|
213
|
+
| Assert visible | `Verify the success message is visible` |
|
|
214
|
+
| Assert text | `Verify the heading contains "Welcome back"` |
|
|
215
|
+
| Assert URL | `Verify the URL contains "/dashboard"` |
|
|
216
|
+
| Assert count | `Verify there are 3 items in the cart` |
|
|
217
|
+
| Wait | `Wait for the loading spinner to disappear` |
|
|
218
|
+
| Hover | `Hover over the user avatar` |
|
|
219
|
+
| Upload file | `Upload "fixtures/data/resume.pdf" to the file input` |
|
|
220
|
+
| Press key | `Press the Escape key` |
|
|
221
|
+
| Scroll | `Scroll down to the footer` |
|
|
222
|
+
|
|
223
|
+
### Editing a Step Instruction
|
|
224
|
+
|
|
225
|
+
1. Click **✏️** on any step
|
|
226
|
+
2. Edit the instruction text in the inline input
|
|
227
|
+
3. Press **Enter** or click away to save
|
|
228
|
+
4. Re-generate the code if needed by clicking **⚡**
|
|
229
|
+
|
|
230
|
+
### Setting Per-Step Timeout
|
|
231
|
+
|
|
232
|
+
Each step row has a timeout field (right side of the row):
|
|
233
|
+
- Default is blank (uses the case-level or global timeout)
|
|
234
|
+
- Click the field and type a value in milliseconds, or use **↑ / ↓** arrows to increment/decrement in steps of 100ms
|
|
235
|
+
- Use this to give extra time to slow steps like file uploads or heavy animations
|
|
236
|
+
- Leave blank to inherit from the case/global timeout
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## 6. Case Editor — Generating Code
|
|
241
|
+
|
|
242
|
+
Assuremind uses AI to convert each plain-English step into Playwright TypeScript code.
|
|
243
|
+
|
|
244
|
+
### Generate All Steps at Once
|
|
245
|
+
|
|
246
|
+
Click **"Generate All"** in the Case Editor toolbar. The AI processes all steps in one batch — faster than generating one by one.
|
|
247
|
+
|
|
248
|
+
Progress is shown in the toolbar while generation is running.
|
|
249
|
+
|
|
250
|
+
### Generate a Single Step
|
|
251
|
+
|
|
252
|
+
Click the **⚡** icon on any step row. Useful when:
|
|
253
|
+
- You added a new step after batch generation
|
|
254
|
+
- The generated code looks wrong and you want to retry
|
|
255
|
+
- You edited the instruction and need fresh code
|
|
256
|
+
|
|
257
|
+
### Viewing / Editing Generated Code
|
|
258
|
+
|
|
259
|
+
Each step row has an expandable code panel below the instruction:
|
|
260
|
+
|
|
261
|
+
```
|
|
262
|
+
┌─ Step 3 ────────────────────────────────────────────────┐
|
|
263
|
+
│ Click the Login button [⚡][✏️][🗑️]│
|
|
264
|
+
│ ─────────────────────────────────────────────────────── │
|
|
265
|
+
│ await page.getByRole('button', { name: 'Login' }) │
|
|
266
|
+
│ .click(); │
|
|
267
|
+
│ [timeout: ] │
|
|
268
|
+
└──────────────────────────────────────────────────────────┘
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
Click on the code area to edit it manually. This is useful when:
|
|
272
|
+
- The AI generated a selector you want to adjust
|
|
273
|
+
- You want to add a more specific assertion
|
|
274
|
+
- You need to use a hardcoded value the AI doesn't know
|
|
275
|
+
|
|
276
|
+
### Code Generation Tips
|
|
277
|
+
|
|
278
|
+
- The more specific your instruction, the better the code. `Click the blue Submit button in the modal` is better than `Click Submit`
|
|
279
|
+
- For buttons, include the word `button` in the instruction — the AI uses `getByRole('button', { name: '...' })` automatically
|
|
280
|
+
- For form fields, include the field label: `Enter text in the Email Address field`
|
|
281
|
+
- Variables in `{{VAR}}` format are substituted at runtime, not at code generation time
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## 7. Case Editor — Running a Test
|
|
286
|
+
|
|
287
|
+
### Run from the Case Editor
|
|
288
|
+
|
|
289
|
+
Click the **▶ Run** button in the Case Editor toolbar to run the current test case.
|
|
290
|
+
|
|
291
|
+
A **Run Panel** appears at the bottom of the editor showing:
|
|
292
|
+
|
|
293
|
+
```
|
|
294
|
+
┌─ Run Panel ─────────────────────────────────────────────────┐
|
|
295
|
+
│ Status: Running… │
|
|
296
|
+
│ ─────────────────────────────────────────────────────────── │
|
|
297
|
+
│ ✅ Step 1: Go to the login page (0.4s) │
|
|
298
|
+
│ ✅ Step 2: Enter email in email field (0.8s) │
|
|
299
|
+
│ ✅ Step 3: Enter password in password field (0.6s) │
|
|
300
|
+
│ 🔄 Step 4: Click the Login button … │
|
|
301
|
+
│ ⬜ Step 5: Verify dashboard is visible │
|
|
302
|
+
└──────────────────────────────────────────────────────────────┘
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
| Icon | Meaning |
|
|
306
|
+
|------|---------|
|
|
307
|
+
| ✅ | Step passed |
|
|
308
|
+
| ❌ | Step failed |
|
|
309
|
+
| 🔄 | Step currently running |
|
|
310
|
+
| ⬜ | Step not yet reached |
|
|
311
|
+
| ⚡ | Step was healed (self-healing kicked in) |
|
|
312
|
+
|
|
313
|
+
### After a Run
|
|
314
|
+
|
|
315
|
+
- Click any **failed step** to see the error message and screenshot
|
|
316
|
+
- Click **📊 Allure** to open the full Allure report for this run
|
|
317
|
+
- Click **Traces** to download or view the Playwright trace
|
|
318
|
+
- If self-healing activated, a notification badge appears on the **Self-Healing** sidebar item
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
## 8. Case Editor — Drag & Drop Step Reorder
|
|
323
|
+
|
|
324
|
+
Steps can be rearranged without deleting and recreating them.
|
|
325
|
+
|
|
326
|
+
### How to reorder
|
|
327
|
+
|
|
328
|
+
1. Hover over any step row — the **⠿ grip icon** (left side) becomes visible
|
|
329
|
+
2. Click and **hold** the grip icon
|
|
330
|
+
3. **Drag** the step up or down
|
|
331
|
+
4. **Drop** it at the desired position — a blue highlight shows the drop target
|
|
332
|
+
5. The new order is saved automatically
|
|
333
|
+
|
|
334
|
+
The step numbers update immediately after the drop.
|
|
335
|
+
|
|
336
|
+
This is useful when you realise a step needs to happen earlier or later in the flow, or when you're reorganising a test after adding new steps.
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
## 9. Variables Page
|
|
341
|
+
|
|
342
|
+
Navigate to **Variables** in the sidebar.
|
|
343
|
+
|
|
344
|
+
Variables let you store credentials, URLs, and any dynamic data outside of step instructions. They are referenced using `{{KEY}}` syntax.
|
|
345
|
+
|
|
346
|
+
### Variable List
|
|
347
|
+
|
|
348
|
+
The Variables page shows all variables defined in `variables/global.json` as an editable table:
|
|
349
|
+
|
|
350
|
+
| Column | Description |
|
|
351
|
+
|--------|-------------|
|
|
352
|
+
| Key | Variable name (e.g. `USERNAME`) |
|
|
353
|
+
| Value | The value (masked if secret) |
|
|
354
|
+
| Secret | Lock icon if `"secret": true` |
|
|
355
|
+
| Actions | Edit (pencil), Delete (trash) |
|
|
356
|
+
|
|
357
|
+
### Adding a Variable
|
|
358
|
+
|
|
359
|
+
1. Click **"+ Add Variable"**
|
|
360
|
+
2. Enter:
|
|
361
|
+
- **Key** — uppercase with underscores recommended: `ADMIN_EMAIL`
|
|
362
|
+
- **Value** — the variable's value
|
|
363
|
+
- **Secret** — toggle on to mask the value (stored as `{ "value": "...", "secret": true }`)
|
|
364
|
+
3. Click **Save**
|
|
365
|
+
|
|
366
|
+
### Editing a Variable
|
|
367
|
+
|
|
368
|
+
Click **✏️** on any variable row → update the value → click Save.
|
|
369
|
+
|
|
370
|
+
### Deleting a Variable
|
|
371
|
+
|
|
372
|
+
Click **🗑️** on the row → confirm the delete prompt.
|
|
373
|
+
|
|
374
|
+
### Using Variables in Steps
|
|
375
|
+
|
|
376
|
+
In any step instruction, wrap the variable name in double curly braces:
|
|
377
|
+
|
|
378
|
+
```
|
|
379
|
+
Enter "{{USERNAME}}" in the email field
|
|
380
|
+
Enter "{{PASSWORD}}" in the password field
|
|
381
|
+
Go to "{{BASE_URL}}/dashboard"
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
At runtime, Assuremind substitutes the actual values before executing the Playwright code. Variable names are **case-sensitive**.
|
|
385
|
+
|
|
386
|
+
### Environment-Specific Variables
|
|
387
|
+
|
|
388
|
+
Create separate JSON files for each environment:
|
|
389
|
+
|
|
390
|
+
```
|
|
391
|
+
variables/
|
|
392
|
+
├── global.json ← applies to all environments
|
|
393
|
+
├── dev.env.json ← overrides for --env dev
|
|
394
|
+
├── staging.env.json ← overrides for --env staging
|
|
395
|
+
└── prod.env.json ← overrides for --env prod
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
Environment variables override global ones when a matching key exists. Run with a specific environment:
|
|
399
|
+
|
|
400
|
+
```bash
|
|
401
|
+
npx assuremind run --all --env staging
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
---
|
|
405
|
+
|
|
406
|
+
## 10. Self-Healing Page
|
|
407
|
+
|
|
408
|
+
Navigate to **Self-Healing** in the sidebar.
|
|
409
|
+
|
|
410
|
+
When a test step fails and Assuremind automatically heals it, the healing event appears here for review.
|
|
411
|
+
|
|
412
|
+
### Stats Cards
|
|
413
|
+
|
|
414
|
+
At the top of the page:
|
|
415
|
+
|
|
416
|
+
| Card | Description |
|
|
417
|
+
|------|-------------|
|
|
418
|
+
| Total Events | All healing events ever recorded |
|
|
419
|
+
| Pending Review | Events waiting for your decision |
|
|
420
|
+
| Accepted | Heals you approved and applied to test files |
|
|
421
|
+
| Rejected | Heals you rejected |
|
|
422
|
+
|
|
423
|
+
### Pending Review Section
|
|
424
|
+
|
|
425
|
+
These are the most important — heals that have been generated but not yet written back to your test files.
|
|
426
|
+
|
|
427
|
+
Each healing card shows:
|
|
428
|
+
|
|
429
|
+
```
|
|
430
|
+
┌─────────────────────────────────────────────────┐
|
|
431
|
+
│ Click the Login button [Pending] [🗑️] │
|
|
432
|
+
│ Case: login-tests/user-can-log-in · Level 2: AI │
|
|
433
|
+
├────────────────────────┬────────────────────────┤
|
|
434
|
+
│ Before (failed) │ After (healed) │
|
|
435
|
+
│ await page.getBy │ await page.getByRole │
|
|
436
|
+
│ Text('Login').click() │ ('button', {name: │
|
|
437
|
+
│ │ 'Login'}).click() │
|
|
438
|
+
├────────────────────────┴────────────────────────┤
|
|
439
|
+
│ [✅ Accept & Update File] [✗ Reject] │
|
|
440
|
+
└──────────────────────────────────────────────────┘
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
| Field | Description |
|
|
444
|
+
|-------|-------------|
|
|
445
|
+
| Instruction | The step instruction that was healed |
|
|
446
|
+
| Level | Which healing strategy succeeded (1–6) |
|
|
447
|
+
| Before | The code that failed |
|
|
448
|
+
| After | The AI-generated replacement code |
|
|
449
|
+
|
|
450
|
+
### Accepting a Heal
|
|
451
|
+
|
|
452
|
+
Click **"✅ Accept & Update File"** — the test file on disk is updated with the new code. The heal moves to the **Accepted** section. Next time the test runs, it uses the healed code.
|
|
453
|
+
|
|
454
|
+
### Rejecting a Heal
|
|
455
|
+
|
|
456
|
+
Click **"✗ Reject"** — the heal is dismissed. The original code stays unchanged. Use this when you believe the heal is wrong and want to fix the step manually.
|
|
457
|
+
|
|
458
|
+
### Deleting an Event
|
|
459
|
+
|
|
460
|
+
Click **🗑️** (top-right of any card) to remove the event entirely from the log.
|
|
461
|
+
|
|
462
|
+
### Bulk Actions (toolbar buttons)
|
|
463
|
+
|
|
464
|
+
| Button | Action |
|
|
465
|
+
|--------|--------|
|
|
466
|
+
| **Accept All** | Accept all pending heals at once |
|
|
467
|
+
| **Delete All** | Clear the entire healing log |
|
|
468
|
+
|
|
469
|
+
### Events are sorted newest-first
|
|
470
|
+
|
|
471
|
+
The most recent healing events appear at the top in each section (Pending, Accepted, Rejected). The log is capped at 50 events total — oldest are pruned automatically.
|
|
472
|
+
|
|
473
|
+
---
|
|
474
|
+
|
|
475
|
+
## 11. Reports Page
|
|
476
|
+
|
|
477
|
+
Navigate to **Reports** in the sidebar.
|
|
478
|
+
|
|
479
|
+
### Run History List
|
|
480
|
+
|
|
481
|
+
Each completed run appears as a row:
|
|
482
|
+
|
|
483
|
+
| Column | Description |
|
|
484
|
+
|--------|-------------|
|
|
485
|
+
| Date/Time | When the run started |
|
|
486
|
+
| Duration | Total run time |
|
|
487
|
+
| Suites | How many suites were included |
|
|
488
|
+
| Cases | Total test cases run |
|
|
489
|
+
| Passed | Number of passing cases |
|
|
490
|
+
| Failed | Number of failing cases |
|
|
491
|
+
| Status | Overall pass/fail badge |
|
|
492
|
+
| Actions | 📊 Allure report, 📄 JSON result |
|
|
493
|
+
|
|
494
|
+
### Opening the Allure Report
|
|
495
|
+
|
|
496
|
+
Click **📊** on any run row to open the interactive Allure HTML report in a new tab.
|
|
497
|
+
|
|
498
|
+
Allure shows:
|
|
499
|
+
- Suite → case → step breakdown
|
|
500
|
+
- Failure messages and stack traces
|
|
501
|
+
- Embedded screenshots at the exact failing step
|
|
502
|
+
- Playwright trace viewer link
|
|
503
|
+
- Test duration graphs
|
|
504
|
+
- Tags and metadata
|
|
505
|
+
|
|
506
|
+
### Run Detail View
|
|
507
|
+
|
|
508
|
+
Click on any run row to expand the detail view:
|
|
509
|
+
|
|
510
|
+
```
|
|
511
|
+
Run: 2026-03-25 14:32 · Duration: 45s · 12/13 passed
|
|
512
|
+
|
|
513
|
+
Suite: Login Tests ✅ 3/3
|
|
514
|
+
✅ User can log in 1.2s
|
|
515
|
+
✅ User can log out 0.8s
|
|
516
|
+
✅ Password reset flow 2.1s
|
|
517
|
+
|
|
518
|
+
Suite: Checkout Flow ❌ 2/3
|
|
519
|
+
✅ Add item to cart 3.4s
|
|
520
|
+
✅ Apply coupon code 2.7s
|
|
521
|
+
❌ Complete payment 5.1s ← click to see error
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
Clicking a failed case shows the error, screenshot, and links to the trace.
|
|
525
|
+
|
|
526
|
+
---
|
|
527
|
+
|
|
528
|
+
## 12. Settings Page
|
|
529
|
+
|
|
530
|
+
Navigate to **Settings** in the sidebar. Changes are saved immediately to `autotest.config.json`.
|
|
531
|
+
|
|
532
|
+
### General Settings
|
|
533
|
+
|
|
534
|
+
| Setting | Description |
|
|
535
|
+
|---------|-------------|
|
|
536
|
+
| **Base URL** | The root URL of your application under test |
|
|
537
|
+
| **Headless Mode** | Toggle: run browsers visibly or in background |
|
|
538
|
+
| **Viewport** | Screen resolution preset (Standard/HD/Mobile/Tablet/Custom) |
|
|
539
|
+
| **Step Timeout** | Maximum ms per step (default: 30000) |
|
|
540
|
+
| **Retries** | How many times to retry a failed test (default: 1) |
|
|
541
|
+
| **Parallel Workers** | How many tests run simultaneously (default: 1) |
|
|
542
|
+
| **Page Load Strategy** | When to consider a page "loaded": `domcontentloaded` / `load` / `networkidle` |
|
|
543
|
+
|
|
544
|
+
### Browser Settings
|
|
545
|
+
|
|
546
|
+
| Setting | Description |
|
|
547
|
+
|---------|-------------|
|
|
548
|
+
| **Browsers** | Toggle Chromium / Firefox / WebKit |
|
|
549
|
+
|
|
550
|
+
### Recording Settings
|
|
551
|
+
|
|
552
|
+
| Setting | Description |
|
|
553
|
+
|---------|-------------|
|
|
554
|
+
| **Screenshots** | `off` / `on` / `only-on-failure` |
|
|
555
|
+
| **Video** | `off` / `on` / `on-first-retry` / `retain-on-failure` |
|
|
556
|
+
| **Trace** | `off` / `on` / `on-first-retry` / `retain-on-failure` |
|
|
557
|
+
|
|
558
|
+
### Viewport Presets
|
|
559
|
+
|
|
560
|
+
| Preset | Resolution |
|
|
561
|
+
|--------|------------|
|
|
562
|
+
| Standard | 1280 × 720 |
|
|
563
|
+
| Laptop | 1366 × 768 |
|
|
564
|
+
| Full HD | 1920 × 1080 |
|
|
565
|
+
| Mobile | 390 × 844 |
|
|
566
|
+
| Tablet | 768 × 1024 |
|
|
567
|
+
| Custom | Enter any width × height |
|
|
568
|
+
|
|
569
|
+
### Self-Healing Settings
|
|
570
|
+
|
|
571
|
+
| Setting | Description |
|
|
572
|
+
|---------|-------------|
|
|
573
|
+
| **Enable Healing** | Toggle self-healing on/off |
|
|
574
|
+
| **Max Level** | Highest healing level to attempt (1–6) |
|
|
575
|
+
| **Daily Budget** | Max USD per day to spend on AI healing calls |
|
|
576
|
+
| **Auto PR** | Auto-create pull requests for accepted heals (if Git remote configured) |
|
|
577
|
+
|
|
578
|
+
### Reporting Settings
|
|
579
|
+
|
|
580
|
+
| Setting | Description |
|
|
581
|
+
|---------|-------------|
|
|
582
|
+
| **Allure** | Generate Allure XML and HTML report |
|
|
583
|
+
| **HTML** | Generate plain HTML summary report |
|
|
584
|
+
| **JSON** | Save run result as JSON |
|
|
585
|
+
|
|
586
|
+
### Studio Port
|
|
587
|
+
|
|
588
|
+
Port the Studio server runs on (default: 4400). Restart Studio after changing.
|
|
589
|
+
|
|
590
|
+
---
|
|
591
|
+
|
|
592
|
+
## 13. Keyboard Shortcuts & Tips
|
|
593
|
+
|
|
594
|
+
### Studio Navigation
|
|
595
|
+
|
|
596
|
+
| Shortcut | Action |
|
|
597
|
+
|----------|--------|
|
|
598
|
+
| Click sidebar item | Navigate to that section |
|
|
599
|
+
| Browser back button | Go to previous page |
|
|
600
|
+
|
|
601
|
+
### Case Editor
|
|
602
|
+
|
|
603
|
+
| Action | How |
|
|
604
|
+
|--------|-----|
|
|
605
|
+
| Add a step | Click "+ Add Step" or press Enter in the last step input |
|
|
606
|
+
| Reorder steps | Drag the ⠿ grip icon up/down |
|
|
607
|
+
| Generate single step | Click ⚡ icon on the step row |
|
|
608
|
+
| Generate all steps | Click "Generate All" in toolbar |
|
|
609
|
+
| Edit step instruction | Click ✏️ icon |
|
|
610
|
+
| Delete step | Click 🗑️ icon |
|
|
611
|
+
| Set step timeout | Click timeout field → type or use ↑↓ arrows (100ms increments) |
|
|
612
|
+
| Run case | Click ▶ Run in toolbar |
|
|
613
|
+
|
|
614
|
+
### Tips for Better Tests
|
|
615
|
+
|
|
616
|
+
1. **Run your app first** — make sure `baseUrl` is reachable before running tests
|
|
617
|
+
2. **Use the headed mode** to watch the browser during development: `--headed` flag or toggle in Settings
|
|
618
|
+
3. **Name cases clearly** — `User can log in with valid credentials` is better than `Login test 1`
|
|
619
|
+
4. **One flow per case** — keep each test case focused on one user journey
|
|
620
|
+
5. **Set step timeouts** for slow operations like file uploads or email sending
|
|
621
|
+
6. **Use variables** for any value that differs between environments or testers
|
|
622
|
+
7. **Accept heals promptly** — review the Self-Healing page after test runs
|
|
623
|
+
8. **Generate All before running** — don't run a case with empty code panels
|
|
624
|
+
9. **Check the trace** on failures — Playwright traces show exactly what happened step by step
|
|
625
|
+
10. **Use tags** on suites/cases to run subsets: `npx assuremind run --tag smoke`
|