@ai-sdet/test-manager 0.1.5
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 +312 -0
- package/dist/cli.js +16455 -0
- package/dist/client/assets/AIView-BYoeRnLC.js +73 -0
- package/dist/client/assets/AdminSettingsView-JqCQI3K1.js +1 -0
- package/dist/client/assets/ChatSection-rpiFyFcg.js +8 -0
- package/dist/client/assets/MilestonesView-CTJ8r67W.js +1 -0
- package/dist/client/assets/ReportsView-DJ8KPr1J.js +1 -0
- package/dist/client/assets/RunExecution-BJnn0cq7.js +1 -0
- package/dist/client/assets/RunsView-oDa9JyRq.js +1 -0
- package/dist/client/assets/SettingsView-BVCLWqOk.js +1 -0
- package/dist/client/assets/SpaceView-BxtPCtW1.js +1 -0
- package/dist/client/assets/TestEditor-Dthst0HS.js +63 -0
- package/dist/client/assets/TestMuImportDialog-B2yx7BdF.js +5 -0
- package/dist/client/assets/TrashView-B5uFN2Ua.js +1 -0
- package/dist/client/assets/UserGroupsView-MGu6frpT.js +1 -0
- package/dist/client/assets/UsersView-DwWeOblN.js +1 -0
- package/dist/client/assets/comments-section-CHZSUoK5.js +53 -0
- package/dist/client/assets/hooks-BItXZ0yP.js +1 -0
- package/dist/client/assets/hooks-BM-wcPhm.js +4 -0
- package/dist/client/assets/icons-J9gKYxTz.js +41 -0
- package/dist/client/assets/index-CYPrMEmp.css +1 -0
- package/dist/client/assets/index-a9kCDHqT.js +7 -0
- package/dist/client/assets/markdown-YKl4gdXq.js +29 -0
- package/dist/client/assets/radix-ui-Cxk3sw_C.js +41 -0
- package/dist/client/assets/react-D-pHAthU.js +40 -0
- package/dist/client/assets/tiptap-Ch64zYGz.js +167 -0
- package/dist/client/index.html +62 -0
- package/dist/index.js +12990 -0
- package/dist/server/index.js +16195 -0
- package/package.json +124 -0
package/README.md
ADDED
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
# noob-test-manager
|
|
2
|
+
|
|
3
|
+
 
|
|
4
|
+
|
|
5
|
+
A lightweight, self-hosted test case management tool for SDETs. Run it as a CLI — it spins up a local server and opens a browser UI. Data stays in local files by default (SQLite). No SaaS subscription required.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install -g @ganeshgaxy/noob-test-manager
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Or run without installing globally:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install @ganeshgaxy/noob-test-manager
|
|
19
|
+
npx @ganeshgaxy/noob-test-manager start
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Then open `http://localhost:3000`. To use a different port:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
noob-sdet start --port 4000
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### First run
|
|
29
|
+
|
|
30
|
+
On first start with an empty database, a super admin account is created automatically:
|
|
31
|
+
|
|
32
|
+
| Field | Default |
|
|
33
|
+
| -------- | ----------------------- |
|
|
34
|
+
| Email | `admin@noob-sdet.local` |
|
|
35
|
+
| Password | `Admin1234!` |
|
|
36
|
+
|
|
37
|
+
Override with env vars before starting: `DEFAULT_EMAIL`, `DEFAULT_PASSWORD`. Change the password after first login.
|
|
38
|
+
|
|
39
|
+
A `noob-sdet.db` file is created in your current directory — that's the main database.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## How to Use
|
|
44
|
+
|
|
45
|
+
### 1. Create an App
|
|
46
|
+
|
|
47
|
+
From the home screen click **New App**. Apps are the top-level container — think "product" or "project".
|
|
48
|
+
|
|
49
|
+
### 2. Create a Space
|
|
50
|
+
|
|
51
|
+
Inside an app, create a Space. A space maps to a feature area, squad or test suite. Each space has its own folder tree, tags and member access.
|
|
52
|
+
|
|
53
|
+
### 3. Organise with Folders
|
|
54
|
+
|
|
55
|
+
Folders nest infinitely. Use them to mirror your feature structure or test pyramid layers (Smoke / Regression / E2E).
|
|
56
|
+
|
|
57
|
+
### 4. Write Tests
|
|
58
|
+
|
|
59
|
+
Click **New Test** inside a folder. Choose between:
|
|
60
|
+
|
|
61
|
+
- **Traditional** — numbered action + expected result steps
|
|
62
|
+
- **BDD / Gherkin** — Given / When / Then scenarios with multiple scenarios per test
|
|
63
|
+
|
|
64
|
+
Fill in the right-hand metadata panel: category, priority, status, automation status, estimated time, Jira key, assignee, tags.
|
|
65
|
+
|
|
66
|
+
### 5. Create a Run
|
|
67
|
+
|
|
68
|
+
Go to **Runs** in the sidebar → **New Run**. Give it a name and an optional environment label (e.g. `staging`). Click **Add Tests** to pick spaces, folders or individual tests.
|
|
69
|
+
|
|
70
|
+
### 6. Execute
|
|
71
|
+
|
|
72
|
+
Click **Start** on the run. Tests are grouped by folder. Click a test to open the step-by-step panel on the right. Mark steps individually or use the quick **Pass / Fail / Skip / Block** buttons on each row. Use **bulk select** (checkbox on hover) to mark many tests at once.
|
|
73
|
+
|
|
74
|
+
### 7. Filter & Sort
|
|
75
|
+
|
|
76
|
+
Use the filter bar above the test list to narrow by **Status**, **Priority**, **Category** or **Tags**. Toggle the **Folders A→Z** sort to reorder accordion groups.
|
|
77
|
+
|
|
78
|
+
### 8. Import from TestMu
|
|
79
|
+
|
|
80
|
+
In a Space, click **Import → Import from TestMu**. Enter your TestMu host URL, email and API token, then pick a project. The import runs server-side with a live progress stream and preserves the full folder hierarchy, test steps, BDD scenarios, priorities, statuses, tags and Jira links.
|
|
81
|
+
|
|
82
|
+
### 9. AI workspace (optional)
|
|
83
|
+
|
|
84
|
+
Each app has an **AI** tab for agent-assisted workflows:
|
|
85
|
+
|
|
86
|
+
- Chat with orchestrator agents (test plans, notes, analysis, test case generation)
|
|
87
|
+
- Connect Git repos for code-aware context (vector search over indexed source)
|
|
88
|
+
- Per-app AI settings: orchestrator, test case writer profiles, format templates
|
|
89
|
+
|
|
90
|
+
Global LLM and vector embedding providers are configured under **Admin Settings → AI Settings** (super admin). Supported vector providers: **OpenAI** (`text-embedding-3-small` recommended) and **Amazon Bedrock**.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Features
|
|
95
|
+
|
|
96
|
+
### 🗂 Test Organisation
|
|
97
|
+
|
|
98
|
+
- **Apps** → **Spaces** → **Folders** → **Tests** hierarchy
|
|
99
|
+
- Traditional step-by-step tests and BDD/Gherkin scenarios
|
|
100
|
+
- Rich text editor for descriptions, preconditions, step actions and expected results
|
|
101
|
+
- Full metadata per test: category, priority, status, automation status, estimated time, Jira issue key, assignee, tags
|
|
102
|
+
|
|
103
|
+
### 🏃 Test Runs
|
|
104
|
+
|
|
105
|
+
- Create named runs with optional environment label
|
|
106
|
+
- Add tests by selecting whole spaces, folders or individual tests
|
|
107
|
+
- Mark each test as **Pass / Fail / Skip / Blocked** — with per-step granularity
|
|
108
|
+
- Bulk mark multiple tests at once
|
|
109
|
+
- Filter results by status, priority, category and tags
|
|
110
|
+
- Sort folder groups alphabetically
|
|
111
|
+
- Live pass-rate progress bar and summary stats (total / pass / fail / skip / block / pending)
|
|
112
|
+
- Reset individual tests, folders or the whole run
|
|
113
|
+
- Remove tests from a run without deleting the test
|
|
114
|
+
|
|
115
|
+
### 📋 Test Detail Panel
|
|
116
|
+
|
|
117
|
+
- Step-by-step execution view slides in on the right when you click a test in a run
|
|
118
|
+
- Mark individual BDD scenario steps or traditional steps independently
|
|
119
|
+
- Notes field per result for recording observations
|
|
120
|
+
|
|
121
|
+
### 🔖 Tagging
|
|
122
|
+
|
|
123
|
+
- Global tags (shared across all apps) and space-scoped tags
|
|
124
|
+
- Tag picker with search, creation and coloured pills
|
|
125
|
+
- Tags displayed inline in test list rows and filterable in runs
|
|
126
|
+
|
|
127
|
+
### 🔄 TestMu Import
|
|
128
|
+
|
|
129
|
+
- Import entire projects from [TestMu](https://testmu.io) directly into a space
|
|
130
|
+
- Preserves folder structure, test steps, BDD scenarios, priorities, statuses, tags, Jira links and test categories
|
|
131
|
+
- Server-side streaming import with live progress feed
|
|
132
|
+
|
|
133
|
+
### 🤖 AI & repo context
|
|
134
|
+
|
|
135
|
+
- Multi-agent chat (plans, pre-dev analysis, test notes, test case writer)
|
|
136
|
+
- Git repo registration and vector indexing for RAG-style code context
|
|
137
|
+
- Per-app test case writer profiles with configurable knowledge blocks
|
|
138
|
+
- Global AI config: LLM provider (Anthropic, OpenAI, Bedrock, Ollama Cloud, …) and vector provider (OpenAI, Bedrock)
|
|
139
|
+
- Test connection buttons in Admin Settings before saving credentials
|
|
140
|
+
|
|
141
|
+
### 👥 Users & Access Control
|
|
142
|
+
|
|
143
|
+
- User accounts with email/password auth
|
|
144
|
+
- Global roles: `super_admin` and `member`
|
|
145
|
+
- Per-app and per-space roles: `admin`, `member`, `viewer`
|
|
146
|
+
- User groups for bulk permission management
|
|
147
|
+
- API tokens for programmatic access
|
|
148
|
+
- SSO support (configurable)
|
|
149
|
+
|
|
150
|
+
### 🎨 Themes & branding
|
|
151
|
+
|
|
152
|
+
- Four built-in presets: **Dark** (default), **Purple Night**, **Light**, **Navy**
|
|
153
|
+
- Full custom theme editor — every colour, font and radius is configurable
|
|
154
|
+
- Custom app title and logos (Admin Settings → Branding)
|
|
155
|
+
|
|
156
|
+
### ⚙️ Settings
|
|
157
|
+
|
|
158
|
+
- Custom fields per app (text, number, dropdown, multi-select, date, checkbox, URL)
|
|
159
|
+
- Integrations: Jira, GitHub, Slack (configurable webhooks)
|
|
160
|
+
- Tag management at app and space level
|
|
161
|
+
- Admin: database (SQLite / Turso / Postgres), cache, auth, global agents
|
|
162
|
+
|
|
163
|
+
### 🗑 Trash
|
|
164
|
+
|
|
165
|
+
- Soft-delete for tests and folders
|
|
166
|
+
- Restore or permanently delete from the trash view
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## CLI Reference
|
|
171
|
+
|
|
172
|
+
The CLI can manage everything headlessly — useful for scripting or CI pipelines. The server must be running (`noob-sdet start`) for these commands.
|
|
173
|
+
|
|
174
|
+
### Apps
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
noob-sdet app list
|
|
178
|
+
noob-sdet app create "My App" --description "Optional description"
|
|
179
|
+
noob-sdet app delete <appId>
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Spaces
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
noob-sdet space list <appId>
|
|
186
|
+
noob-sdet space create <appId> "My Space" --description "Optional"
|
|
187
|
+
noob-sdet space delete <appId> <spaceId>
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Folders
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
noob-sdet folder list <spaceId>
|
|
194
|
+
noob-sdet folder create <spaceId> "My Folder"
|
|
195
|
+
noob-sdet folder create <spaceId> "Nested" --parent <parentFolderId>
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Tests
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
noob-sdet test list <folderId>
|
|
202
|
+
noob-sdet test create <folderId> "Test title" --priority High --status Ready
|
|
203
|
+
noob-sdet test show <folderId> <testId>
|
|
204
|
+
noob-sdet test delete <folderId> <testId>
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Runs
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
noob-sdet run list <appId>
|
|
211
|
+
noob-sdet run create <appId> "Sprint 42 Regression"
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
All commands accept `--port <port>` if the server is not on `3000`.
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Data Storage
|
|
219
|
+
|
|
220
|
+
By default everything lives under the directory where you start the server:
|
|
221
|
+
|
|
222
|
+
| Path | Purpose |
|
|
223
|
+
| ----------------------- | ---------------------------------------------- |
|
|
224
|
+
| `noob-sdet.db` | Main app database (SQLite) |
|
|
225
|
+
| `noob-sdet-vector.db` | Vector index for AI repo search |
|
|
226
|
+
| `data/repos/` | Cloned Git repos used for indexing |
|
|
227
|
+
| `noob-sdet.config.json` | Instance config (DB, cache, auth) — gitignored |
|
|
228
|
+
| `noob-sdet.theme.json` | Legacy theme export — gitignored |
|
|
229
|
+
|
|
230
|
+
**Backup:** copy `noob-sdet.db` (and `noob-sdet-vector.db` if you use AI repos). Restore by putting the files back and restarting.
|
|
231
|
+
|
|
232
|
+
**Remote databases:** Turso and Postgres can be configured in Admin Settings. The reset script below only removes local SQLite files; remote DBs must be dropped manually.
|
|
233
|
+
|
|
234
|
+
### Reset to a clean slate
|
|
235
|
+
|
|
236
|
+
Stop the server first, then from a **cloned repo** (development):
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
npm run reset # prompts for confirmation
|
|
240
|
+
npm run reset -- --yes # skip prompt
|
|
241
|
+
npm run reset -- --yes --keep-config # keep noob-sdet.config.json
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
This deletes the SQLite database, vector database, `data/`, and instance config files. The next `npm start` bootstraps a fresh admin account.
|
|
245
|
+
|
|
246
|
+
If you installed globally (not from a clone), delete the files manually:
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
rm -f noob-sdet.db noob-sdet.db-wal noob-sdet.db-shm
|
|
250
|
+
rm -f noob-sdet-vector.db noob-sdet-vector.db-wal noob-sdet-vector.db-shm
|
|
251
|
+
rm -rf data/
|
|
252
|
+
rm -f noob-sdet.config.json noob-sdet.theme.json
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## Development
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
git clone https://github.com/ganeshgaxy/noob-test-manager.git
|
|
261
|
+
cd noob-test-manager
|
|
262
|
+
npm install
|
|
263
|
+
npm run build # build client + server once
|
|
264
|
+
npm start # same as noob-sdet start — opens :3000
|
|
265
|
+
|
|
266
|
+
# Or run client + server separately while developing
|
|
267
|
+
npm run dev:client # Vite dev server at :5173
|
|
268
|
+
npm run dev:server # Hono API server at :3000 (proxied by Vite)
|
|
269
|
+
|
|
270
|
+
# Tests & lint
|
|
271
|
+
npm test
|
|
272
|
+
npm run test:coverage
|
|
273
|
+
npm run lint
|
|
274
|
+
npm run format
|
|
275
|
+
|
|
276
|
+
# Database tooling (Drizzle)
|
|
277
|
+
npm run db:generate
|
|
278
|
+
npm run db:migrate
|
|
279
|
+
npm run db:studio
|
|
280
|
+
|
|
281
|
+
# Wipe local data and start fresh (stop server first)
|
|
282
|
+
npm run reset -- --yes
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### Tech Stack
|
|
286
|
+
|
|
287
|
+
| Layer | Tech |
|
|
288
|
+
| -------- | ----------------------------------------------------------------- |
|
|
289
|
+
| UI | React 18, Vite, Tailwind CSS v4, Radix UI, Phosphor Icons, Tiptap |
|
|
290
|
+
| Server | Hono on Node.js |
|
|
291
|
+
| Database | SQLite (default), Turso, or Postgres via Drizzle ORM |
|
|
292
|
+
| Vector | libSQL + OpenAI or Amazon Bedrock embeddings |
|
|
293
|
+
| Auth | bcrypt password hashing, API tokens, optional SSO |
|
|
294
|
+
| CLI | Commander.js |
|
|
295
|
+
| Testing | Vitest, Testing Library |
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
## Contributing
|
|
300
|
+
|
|
301
|
+
Contributions are welcome. Please open a pull request — direct pushes to `main` are restricted.
|
|
302
|
+
|
|
303
|
+
1. Fork the repo
|
|
304
|
+
2. Create a feature branch (`git checkout -b feat/my-feature`)
|
|
305
|
+
3. Commit your changes
|
|
306
|
+
4. Push and open a PR
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## License
|
|
311
|
+
|
|
312
|
+
MIT
|