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.
@@ -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`