prompttest 1.3.5 → 1.5.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/LICENSE +6 -0
- package/README.md +191 -41
- package/TERMS.md +138 -0
- package/dist/bin/prompttest.js +489 -230
- package/dist/bin/server.d.ts +1 -0
- package/dist/engine.bundle.js +1000 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +292 -154
- package/dist/lib/adaptive-timing.d.ts +55 -0
- package/dist/lib/adb-provisioner.d.ts +55 -0
- package/dist/lib/adb.d.ts +29 -0
- package/dist/lib/baseline.d.ts +52 -4
- package/dist/lib/dfs-engine.d.ts +43 -0
- package/dist/lib/explorer.d.ts +44 -0
- package/dist/lib/feedback.d.ts +35 -0
- package/dist/lib/jail-guard.d.ts +59 -0
- package/dist/lib/live-server.d.ts +5 -0
- package/dist/lib/prompt-runner.d.ts +1 -0
- package/dist/lib/quiescence.d.ts +44 -0
- package/dist/lib/recorder.d.ts +24 -0
- package/dist/lib/reporter.d.ts +2 -0
- package/dist/lib/step-handlers.d.ts +2 -0
- package/dist/lib/triage.d.ts +50 -0
- package/dist/lib/wizard.d.ts +42 -0
- package/dist/lib/zip-util.d.ts +36 -0
- package/docs/ARCHITECTURE.md +4 -4
- package/docs/CLI_CONTRACT.md +131 -0
- package/docs/CLI_STUDIO_CONTRACT.md +123 -0
- package/docs/PERFORMANCE_BASELINE.md +71 -0
- package/docs/PRODUCT_STATUS.md +56 -0
- package/docs/USER_MANUAL.md +6 -7
- package/package.json +12 -3
package/LICENSE
CHANGED
|
@@ -34,3 +34,9 @@ Apache License, Version 2.0
|
|
|
34
34
|
Notice:
|
|
35
35
|
For commercial licensing inquiries, enterprise agreements, or custom SLAs, contact:
|
|
36
36
|
PromptTest (https://github.com/shriramsingh/promptTest)
|
|
37
|
+
|
|
38
|
+
Scope Notice:
|
|
39
|
+
This License applies solely to the Licensed Work identified above (the PromptTest
|
|
40
|
+
command-line interface, SDK, and associated engine). PromptTest Studio and any other
|
|
41
|
+
PromptTest-branded products or services are separate products governed by their own
|
|
42
|
+
license agreements and are NOT licensed under this License.
|
package/README.md
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
### 📑 Quick Navigation
|
|
17
|
+
|
|
17
18
|
- [🚀 Quick Start & CLI Workflows](#-quick-start--cli-workflows)
|
|
18
19
|
- [📂 Outputs, Reports & Screenshots](#-outputs-reports--screenshots)
|
|
19
20
|
- [✍️ Writing Plain-English Tests](#️-writing-plain-english-tests)
|
|
@@ -42,49 +43,66 @@
|
|
|
42
43
|
## 🚀 Quick Start & CLI Workflows
|
|
43
44
|
|
|
44
45
|
### Prerequisites
|
|
46
|
+
|
|
45
47
|
- **Node.js 18.0.0+**
|
|
46
48
|
- **Android ADB** installed and accessible in your system `PATH`
|
|
47
49
|
- An Android device (USB or Wi-Fi) or emulator with **USB Debugging** enabled
|
|
48
50
|
|
|
49
51
|
### Install in Your Mobile Project
|
|
52
|
+
|
|
50
53
|
You can run PromptTest instantly with `npx` or install it as a dev dependency:
|
|
54
|
+
|
|
51
55
|
```bash
|
|
52
56
|
# In your React Native, Expo, Flutter, or Android project:
|
|
53
57
|
npm install --save-dev prompttest
|
|
54
58
|
```
|
|
55
59
|
|
|
60
|
+
> **⚖️ Licensing note**: PromptTest is source-available under **BSL 1.1** — free for personal, educational, open-source, and small-team use (< $100k revenue _and_ < 10 employees). Larger organizations and commercial QA agencies need a [commercial license](#-license). It converts to Apache 2.0 in 2030. See [License](#-license).
|
|
61
|
+
|
|
56
62
|
---
|
|
57
63
|
|
|
58
64
|
### 5 Core CLI Workflows
|
|
59
65
|
|
|
60
66
|
#### 1. Environment Diagnostic Check
|
|
67
|
+
|
|
61
68
|
Before running tests, verify your ADB connectivity, connected devices, and permissions:
|
|
69
|
+
|
|
62
70
|
```bash
|
|
63
71
|
npx prompttest doctor
|
|
64
72
|
```
|
|
65
73
|
|
|
66
74
|
#### 2. Zero-Code Autonomous Exploration (AI App Crawl)
|
|
75
|
+
|
|
67
76
|
Crawl bottom tabs, lists, and forms automatically to discover bugs, crashes, or React Native red-screens without writing a single line of test code:
|
|
77
|
+
|
|
68
78
|
```bash
|
|
69
79
|
npx prompttest explore com.yourcompany.app
|
|
70
80
|
```
|
|
71
|
-
|
|
81
|
+
|
|
82
|
+
_Tip: `explore` is its own top-level command. Pass `--max-screens=30` or `--safety-mode=strict` to customize._
|
|
72
83
|
|
|
73
84
|
#### 3. Interactive Record & Replay
|
|
85
|
+
|
|
74
86
|
Record your natural interactions on a physical phone directly into a reusable test spec:
|
|
87
|
+
|
|
75
88
|
```bash
|
|
76
89
|
npx prompttest record specs/login.txt
|
|
77
90
|
```
|
|
91
|
+
|
|
78
92
|
- Tap buttons and type in input fields on your phone; PromptTest auto-generates conversational English test steps.
|
|
79
93
|
- **Append mode**: Add `--append` to add more steps to an existing spec without overwriting.
|
|
80
94
|
- **Safety backup**: If the target file already exists, PromptTest automatically creates a `.bak` backup before modifying.
|
|
81
95
|
|
|
82
96
|
#### 4. Run Plain-English Test Specs
|
|
97
|
+
|
|
83
98
|
Execute test specifications with fail-fast validation and locator self-healing:
|
|
99
|
+
|
|
84
100
|
```bash
|
|
85
101
|
npx prompttest run specs/login.txt com.yourcompany.app
|
|
86
102
|
```
|
|
103
|
+
|
|
87
104
|
Power flags:
|
|
105
|
+
|
|
88
106
|
- `--heal`: Automatically self-heal altered counts and dynamic locators.
|
|
89
107
|
- `--video`: Record an MP4 video of the execution session.
|
|
90
108
|
- `--screenshots`: Capture high-resolution visual evidence at every step.
|
|
@@ -92,7 +110,9 @@ Power flags:
|
|
|
92
110
|
- `--embed-screenshots`: Embed screenshots directly into a standalone, shareable HTML report.
|
|
93
111
|
|
|
94
112
|
#### 5. Interactive Live REPL Playground
|
|
113
|
+
|
|
95
114
|
Experiment with commands live in your terminal against your connected device:
|
|
115
|
+
|
|
96
116
|
```bash
|
|
97
117
|
npx prompttest repl com.yourcompany.app
|
|
98
118
|
```
|
|
@@ -103,19 +123,20 @@ npx prompttest repl com.yourcompany.app
|
|
|
103
123
|
|
|
104
124
|
To avoid common syntax errors, remember that `explore`, `record`, and `repl` are **standalone commands**:
|
|
105
125
|
|
|
106
|
-
| Goal
|
|
107
|
-
|
|
|
108
|
-
| **Autonomous App Crawling**
|
|
109
|
-
| **Record from Phone Touches** | `npx prompttest record <spec.txt>`
|
|
110
|
-
| **Run Existing Spec File**
|
|
111
|
-
| **Interactive Live Terminal** | `npx prompttest repl [pkg]`
|
|
112
|
-
| **Diagnostic Health Check**
|
|
126
|
+
| Goal | ✅ Correct CLI Command | ❌ Common Mistake |
|
|
127
|
+
| :---------------------------- | :------------------------------------ | :--------------------------- |
|
|
128
|
+
| **Autonomous App Crawling** | `npx prompttest explore <pkg>` | `npx prompttest run explore` |
|
|
129
|
+
| **Record from Phone Touches** | `npx prompttest record <spec.txt>` | `npx prompttest run record` |
|
|
130
|
+
| **Run Existing Spec File** | `npx prompttest run <spec.txt> [pkg]` | `npx prompttest <spec.txt>` |
|
|
131
|
+
| **Interactive Live Terminal** | `npx prompttest repl [pkg]` | `npx prompttest run repl` |
|
|
132
|
+
| **Diagnostic Health Check** | `npx prompttest doctor` | `npx prompttest run doctor` |
|
|
113
133
|
|
|
114
134
|
---
|
|
115
135
|
|
|
116
136
|
### 📦 Recommended `package.json` Scripts
|
|
117
137
|
|
|
118
138
|
Add these convenient shortcuts to your project's `package.json`:
|
|
139
|
+
|
|
119
140
|
```json
|
|
120
141
|
"scripts": {
|
|
121
142
|
"test:mobile": "prompttest run specs/smoke.txt com.yourcompany.app --heal",
|
|
@@ -147,6 +168,7 @@ your-mobile-project/
|
|
|
147
168
|
```
|
|
148
169
|
|
|
149
170
|
### Viewing & Sharing Reports:
|
|
171
|
+
|
|
150
172
|
- **Interactive HTML Dashboard (`output/<spec>-report.html`)**: Double-click to open in any browser. Features step-by-step audit timelines, latency timings, and failure triage bundles.
|
|
151
173
|
- **CI/CD Integration (`output/<spec>-junit.xml`)**: Standard JUnit format natively recognized by GitHub Actions, GitLab CI, Jenkins, and CircleCI.
|
|
152
174
|
- **Zero-Dependency Sharing (`--embed-screenshots`)**: Generates a single standalone HTML report with all images inlined via Base64 data URIs. Email or Slack it directly to teammates without missing image links!
|
|
@@ -186,6 +208,7 @@ Test specifications are simple text files containing numbered steps written in c
|
|
|
186
208
|
```
|
|
187
209
|
|
|
188
210
|
### Run the Spec:
|
|
211
|
+
|
|
189
212
|
```bash
|
|
190
213
|
npx prompttest run specs/login_and_dashboard.txt com.yourcompany.app
|
|
191
214
|
```
|
|
@@ -194,18 +217,18 @@ npx prompttest run specs/login_and_dashboard.txt com.yourcompany.app
|
|
|
194
217
|
|
|
195
218
|
## 📖 Syntax Reference
|
|
196
219
|
|
|
197
|
-
| Category
|
|
198
|
-
|
|
|
199
|
-
| **Tap / Click**
|
|
200
|
-
| **Input Fields**
|
|
201
|
-
| **Assertions**
|
|
202
|
-
| **Absence Check** | `Verify 'Loading...' is not visible`
|
|
203
|
-
| **Spatial Tap**
|
|
204
|
-
| **Gestures**
|
|
205
|
-
| **Hardware Keys** | `Press back`, `Press home`
|
|
206
|
-
| **Delays**
|
|
207
|
-
| **Conditionals**
|
|
208
|
-
| **Generators**
|
|
220
|
+
| Category | Command Syntax | Description |
|
|
221
|
+
| :---------------- | :--------------------------------------- | :------------------------------------------------------------------ |
|
|
222
|
+
| **Tap / Click** | `Tap 'Sign In'` | Taps button, icon, link, or tab matching label or text. |
|
|
223
|
+
| **Input Fields** | `Type 'user@test.com' into 'Email'` | Auto-focuses field, clears existing text, and enters string safely. |
|
|
224
|
+
| **Assertions** | `Verify 'Dashboard' is visible` | Polls until the element appears on screen (sub-second resolution). |
|
|
225
|
+
| **Absence Check** | `Verify 'Loading...' is not visible` | Confirms an element, dialog, or spinner has dismissed. |
|
|
226
|
+
| **Spatial Tap** | `Tap 'Delete' next to 'Order #12'` | Disambiguates duplicate elements using directional proximity. |
|
|
227
|
+
| **Gestures** | `Scroll down`, `Scroll up`, `Swipe left` | Performs viewport-proportional touch flings. |
|
|
228
|
+
| **Hardware Keys** | `Press back`, `Press home` | Dispatches physical Android keycodes (`KEYCODE_BACK`, etc.). |
|
|
229
|
+
| **Delays** | `Wait 2s` or `Wait 1500ms` | Pauses execution for custom animation settling. |
|
|
230
|
+
| **Conditionals** | `Tap 'Dismiss' (if present)` | Executes step only if element exists, without failing the suite. |
|
|
231
|
+
| **Generators** | `$random.email`, `$date.now`, `$uuid` | Inlines dynamic synthetic data into input fields. |
|
|
209
232
|
|
|
210
233
|
---
|
|
211
234
|
|
|
@@ -281,18 +304,132 @@ npx prompttest memory <package>
|
|
|
281
304
|
|
|
282
305
|
---
|
|
283
306
|
|
|
284
|
-
## 🎯
|
|
307
|
+
## 🎯 Platform Support, Expectations & Boundaries
|
|
285
308
|
|
|
286
|
-
To maintain honest expectations, here is what PromptTest
|
|
309
|
+
To maintain honest expectations, here is what PromptTest currently supports, what is under active development, and its architectural boundaries:
|
|
287
310
|
|
|
288
|
-
|
|
|
289
|
-
|
|
|
290
|
-
| **
|
|
291
|
-
| **
|
|
292
|
-
| **
|
|
293
|
-
| **
|
|
294
|
-
| **
|
|
295
|
-
| **
|
|
311
|
+
| Platform / Framework | Supported? | Notes |
|
|
312
|
+
| :--------------------------------- | :----------------------: | :--------------------------------------------------------------------- |
|
|
313
|
+
| **Android (Physical & Emulators)** | **✅ Production Ready** | React Native, Expo, Flutter, Native Views, Jetpack Compose. |
|
|
314
|
+
| **iOS / iPhone & iPad** | **🚧 Under Development** | Native iOS engine is in active development; not supported in v1.3.x. |
|
|
315
|
+
| **Websites / Desktop Browsers** | **❌ Not Supported** | Dedicated strictly to mobile apps. For web, use Playwright or Cypress. |
|
|
316
|
+
| **Standard UI Hierarchy** | **✅ Full** | Operates 100% via native ADB hierarchy stream (`uiautomator dump`). |
|
|
317
|
+
| **Self-Healing Dynamic Locators** | **✅ Full** | Auto-resolves modified counts and labels dynamically via `--heal`. |
|
|
318
|
+
| **Bottom-Tab Discovery** | **✅ Full** | Explores hubs, nested master-detail views, and backtracks cleanly. |
|
|
319
|
+
| **Game Engines & Canvas** | **⚠️ Not Supported** | Fully custom OpenGL/Vulkan/Unity games lack accessible UI nodes. |
|
|
320
|
+
| **Biometrics / OS Dialogs** | **⚠️ Limited** | System-level biometric prompts require hardware-level mocks. |
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## ⚠️ Common Pitfalls & How to Solve Them
|
|
325
|
+
|
|
326
|
+
### 1. Hardware Back Button Minimizing the App
|
|
327
|
+
|
|
328
|
+
- **What happens**: Running `Press back` while on the app's root dashboard or home tab tells the Android OS to minimize or exit the app.
|
|
329
|
+
- **How to solve it**:
|
|
330
|
+
- In specs, tap the in-app back icon/button (e.g. `Tap 'Back'` or `Tap '<'`) instead of the hardware key on top-level screens.
|
|
331
|
+
- In autonomous exploration (`explore`), PromptTest's built-in **Package Jail Guard** automatically detects if the app was backgrounded and restores it.
|
|
332
|
+
- Add the `--fresh` flag when running specs to cold-start your app cleanly before tests.
|
|
333
|
+
|
|
334
|
+
### 2. Android OS Permission Dialogs ("Allow Notifications / Location")
|
|
335
|
+
|
|
336
|
+
- **What happens**: System dialogs belong to Android OS (`com.android.permissioncontroller`), not your app, and can appear unexpectedly on new installs.
|
|
337
|
+
- **How to solve it**:
|
|
338
|
+
- Use conditional handling in your spec:
|
|
339
|
+
```text
|
|
340
|
+
Tap 'While using the app' (if present)
|
|
341
|
+
Tap 'Allow' (if present)
|
|
342
|
+
```
|
|
343
|
+
- Or auto-grant permissions via ADB before running tests:
|
|
344
|
+
```bash
|
|
345
|
+
adb shell pm grant com.yourcompany.app android.permission.POST_NOTIFICATIONS
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### 3. Off-Screen Items in Long Lists (FlatList / RecyclerView)
|
|
349
|
+
|
|
350
|
+
- **What happens**: Mobile frameworks only render visible items on screen to save memory. Elements located further down the page are not in the hierarchy yet.
|
|
351
|
+
- **How to solve it**:
|
|
352
|
+
- Scroll before tapping:
|
|
353
|
+
```text
|
|
354
|
+
Scroll down
|
|
355
|
+
Verify 'Save Changes' is visible
|
|
356
|
+
Tap 'Save Changes'
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
### 4. Layout Animations & Shimmer Settling
|
|
360
|
+
|
|
361
|
+
- **What happens**: Tapping an element during a layout animation or skeleton fade-in can cause touch coordinates to miss while elements shift.
|
|
362
|
+
- **How to solve it**:
|
|
363
|
+
- Add a brief settling pause: `Wait 500ms` or assert an anchor element first: `Verify 'Dashboard' is visible`.
|
|
364
|
+
- Disable animations on test devices to run tests 2x faster:
|
|
365
|
+
```bash
|
|
366
|
+
adb shell settings put global window_animation_scale 0
|
|
367
|
+
adb shell settings put global transition_animation_scale 0
|
|
368
|
+
adb shell settings put global animator_duration_scale 0
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
### 5. WebViews & In-App Browsers (OAuth & Payment Gateways)
|
|
372
|
+
|
|
373
|
+
- **What happens**: In-app web pages (like Google Sign-In or Stripe) expose rendered text to ADB, but not internal HTML DOM tags or CSS selectors.
|
|
374
|
+
- **How to solve it**:
|
|
375
|
+
- Use plain text matching (`Tap 'Sign in with Google'`). Deep DOM selector manipulation inside WebViews is not supported.
|
|
376
|
+
|
|
377
|
+
### 6. Multiple Devices Connected
|
|
378
|
+
|
|
379
|
+
- **What happens**: If a physical phone and an emulator are both plugged in, ADB doesn't know which one to target.
|
|
380
|
+
- **How to solve it**:
|
|
381
|
+
- Target a specific device serial using `--serial`:
|
|
382
|
+
```bash
|
|
383
|
+
npx prompttest run specs/login.txt com.app --serial=emulator-5554
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## 💡 Pro-Tips & Best Practices
|
|
389
|
+
|
|
390
|
+
### 1. The "Record & Refine" Workflow
|
|
391
|
+
|
|
392
|
+
- `prompttest record` captures your natural physical device interactions and generates plain-English test steps in real time—scaffolding 90% of your test boilerplate in seconds.
|
|
393
|
+
- **QA Best Practice**: After recording, do a quick 30-second review of the generated `.txt` spec to fine-tune timings or add custom `Verify` assertions.
|
|
394
|
+
- Preview without touching your device:
|
|
395
|
+
```bash
|
|
396
|
+
npx prompttest run specs/flow.txt --dry-run
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
### 2. Deterministic Clean States (`--fresh`)
|
|
400
|
+
|
|
401
|
+
- Prevent "already-logged-in" test pollution by adding `--fresh` to cold-start the target app before execution:
|
|
402
|
+
```bash
|
|
403
|
+
npx prompttest run specs/login.txt com.yourcompany.app --fresh
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
### 3. Zero-Maintenance Dynamic Badges (`--heal`)
|
|
407
|
+
|
|
408
|
+
- When notification badges or counts change dynamically (e.g. `'Cart (1)'` vs `'Cart (3)'`), pass `--heal` to allow PromptTest's heuristic engine to self-heal the locator without failing.
|
|
409
|
+
|
|
410
|
+
### 4. Device & Screen Resolution Agnostic Portability
|
|
411
|
+
|
|
412
|
+
- PromptTest binds interactions to semantic accessibility labels and proportional gestures—not fragile hardware pixel coordinates. Specs recorded on a phone seamlessly run on foldables and tablets.
|
|
413
|
+
|
|
414
|
+
### 5. 🛡️ Enterprise Safety Guardrails & Custom Blacklists
|
|
415
|
+
|
|
416
|
+
Autonomous exploration is safe by default, but enterprise applications often have company-specific sensitive keywords (e.g. _"Deactivate"_, _"Transfer Funds"_, _"Revoke Access"_).
|
|
417
|
+
|
|
418
|
+
- **Default Protection**: PromptTest automatically detects and blocks destructive actions like `"Delete"`, `"Wipe"`, `"Remove"`, and `"Discard Changes"`.
|
|
419
|
+
- **Add Your Own Sensitive Keywords**: You can supply your own custom blocked keywords to run **alongside** the defaults:
|
|
420
|
+
```bash
|
|
421
|
+
# Via CLI flag:
|
|
422
|
+
npx prompttest explore com.yourcompany.app --safety-blacklist="Transfer,Deactivate,Revoke,Unsubscribe"
|
|
423
|
+
```
|
|
424
|
+
- **Or configure once in `.prompttestrc.json`**:
|
|
425
|
+
```json
|
|
426
|
+
{
|
|
427
|
+
"safety": {
|
|
428
|
+
"mode": "strict",
|
|
429
|
+
"customBlacklist": ["Transfer", "Deactivate", "Revoke", "Unsubscribe"]
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
```
|
|
296
433
|
|
|
297
434
|
---
|
|
298
435
|
|
|
@@ -339,21 +476,34 @@ docker run --rm --net=host \
|
|
|
339
476
|
|
|
340
477
|
Tested and verified against live physical Android devices running complex multi-role enterprise apps:
|
|
341
478
|
|
|
342
|
-
| Test Suite
|
|
343
|
-
|
|
|
344
|
-
| **CoachConnect Enterprise Suite** |
|
|
345
|
-
| **Govindam Multilingual Suite**
|
|
346
|
-
| **Calculator Operations Suite**
|
|
347
|
-
| **Automated Vitest Test Matrix**
|
|
479
|
+
| Test Suite | Total Steps | Passed | Failed | Pass Rate | Execution Time |
|
|
480
|
+
| :-------------------------------- | :---------: | :----: | :----: | :-------: | :------------: |
|
|
481
|
+
| **CoachConnect Enterprise Suite** | 52 | 52 | 0 | **100%** | 47.8s |
|
|
482
|
+
| **Govindam Multilingual Suite** | 8 | 8 | 0 | **100%** | 35.1s |
|
|
483
|
+
| **Calculator Operations Suite** | 5 | 5 | 0 | **100%** | 19.6s |
|
|
484
|
+
| **Automated Vitest Test Matrix** | 294 | 294 | 0 | **100%** | 14.8s |
|
|
348
485
|
|
|
349
|
-
|
|
486
|
+
_For deep architectural details and driver design, see `docs/ARCHITECTURE.md` included in the package._
|
|
350
487
|
|
|
351
488
|
---
|
|
352
489
|
|
|
353
490
|
## 📄 License
|
|
354
491
|
|
|
355
|
-
PromptTest is licensed under the **Business Source License 1.1 (BSL 1.1)
|
|
492
|
+
PromptTest is licensed under the **Business Source License 1.1 (BSL 1.1)**, and automatically converts to the permissive **Apache License 2.0** on the Change Date: **September 14, 2030**.
|
|
493
|
+
|
|
494
|
+
**✅ Free to use — no license required for:**
|
|
495
|
+
|
|
496
|
+
- Personal, educational, academic, and open-source projects
|
|
497
|
+
- Evaluation use
|
|
498
|
+
- Internal software testing within organizations that have **both** under $100,000 USD in annual gross revenue **and** fewer than 10 employees
|
|
499
|
+
|
|
500
|
+
**💼 Commercial license required for:**
|
|
501
|
+
|
|
502
|
+
- Use within organizations exceeding either of the free-tier thresholds (revenue **or** headcount)
|
|
503
|
+
- Testing agencies providing commercial QA services to third-party clients
|
|
504
|
+
- Deployment into production commercial CI/CD pipelines
|
|
505
|
+
- Offering PromptTest (modified or unmodified) as a hosted or managed QA/cloud testing service
|
|
506
|
+
|
|
507
|
+
See the full [LICENSE](./LICENSE) and [Terms & Conditions](./TERMS.md) for exact terms.
|
|
356
508
|
|
|
357
|
-
|
|
358
|
-
- **Commercial License**: Required for organizations exceeding the annual revenue threshold or companies wrapping PromptTest into hosted cloud services.
|
|
359
|
-
- Commercial inquiries and enterprise licensing: `jairam.singh9@gmail.com`.
|
|
509
|
+
Commercial inquiries and enterprise licensing: `jairam.singh9@gmail.com` or open an issue at [github.com/shriramsingh/prompttest-community](https://github.com/shriramsingh/prompttest-community/issues).
|
package/TERMS.md
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# PromptTest Terms & Conditions
|
|
2
|
+
|
|
3
|
+
> **Status:** Draft for legal review. Have a qualified attorney review these terms
|
|
4
|
+
> before relying on them commercially. This document supplements — and does not
|
|
5
|
+
> replace — the [LICENSE](./LICENSE) (Business Source License 1.1).
|
|
6
|
+
|
|
7
|
+
Effective Date: 2026-09-20
|
|
8
|
+
Operator: PromptTest (Shriram Singh)
|
|
9
|
+
Contact: jairam.singh9@gmail.com
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Definitions
|
|
14
|
+
|
|
15
|
+
- **"PromptTest CLI"** — the PromptTest command-line interface, SDK, and engine
|
|
16
|
+
distributed via npm under the BSL 1.1 license.
|
|
17
|
+
- **"PromptTest Studio"** — the PromptTest-branded web/desktop testing product with a
|
|
18
|
+
graphical user interface. Studio is a **separate commercial product** licensed under
|
|
19
|
+
its own agreement and is **not** governed by these terms or the BSL license.
|
|
20
|
+
- **"Commercial License"** — a paid license agreement signed with the Operator that
|
|
21
|
+
lifts the usage restrictions of the BSL 1.1 Additional Use Grant.
|
|
22
|
+
- **"License Key"** — a cryptographic token issued upon purchase that unlocks paid
|
|
23
|
+
tiers or removes free-tier usage limits.
|
|
24
|
+
|
|
25
|
+
## 2. Use Tiers
|
|
26
|
+
|
|
27
|
+
### 2.1 Free / Community Tier (BSL 1.1)
|
|
28
|
+
|
|
29
|
+
Use of the PromptTest CLI is free under the terms of the BSL 1.1 Additional Use Grant
|
|
30
|
+
for:
|
|
31
|
+
|
|
32
|
+
- Personal, educational, academic, and open-source purposes;
|
|
33
|
+
- Evaluation use; and
|
|
34
|
+
- Internal software testing within organizations with both (a) annual gross revenue
|
|
35
|
+
under $100,000 USD (or equivalent) and (b) fewer than 10 employees.
|
|
36
|
+
|
|
37
|
+
### 2.2 Commercial Tier
|
|
38
|
+
|
|
39
|
+
Organizations exceeding the free-tier thresholds, testing agencies providing QA
|
|
40
|
+
services to third parties, and production commercial CI/CD deployments require a
|
|
41
|
+
paid Commercial License. Contact the Operator for pricing and terms.
|
|
42
|
+
|
|
43
|
+
## 3. Acceptable Use
|
|
44
|
+
|
|
45
|
+
You agree **not** to:
|
|
46
|
+
|
|
47
|
+
1. Circumvent, bypass, or attempt to defeat any license-key validation, feature
|
|
48
|
+
gating, or usage limits in the PromptTest CLI or Studio.
|
|
49
|
+
2. Reverse-engineer, decompile, or extract source code, models, heuristics, or
|
|
50
|
+
proprietary logic from PromptTest Studio, except where such restriction is
|
|
51
|
+
prohibited by applicable law.
|
|
52
|
+
3. Use PromptTest against applications you do not own or lack explicit permission to
|
|
53
|
+
test, or in violation of any applicable law (including computer misuse and
|
|
54
|
+
unauthorized-access statutes).
|
|
55
|
+
4. Resell, sublicense, or redistribute PromptTest Studio or paid Commercial License
|
|
56
|
+
entitlements without written authorization.
|
|
57
|
+
5. Offer PromptTest (modified or unmodified) as a hosted, managed, or cloud testing
|
|
58
|
+
service to third parties (this mirrors the BSL 1.1 Hosting & Managed Service
|
|
59
|
+
Restriction).
|
|
60
|
+
6. Remove or obscure any license, copyright, or attribution notices.
|
|
61
|
+
|
|
62
|
+
## 4. Intellectual Property & Trademarks
|
|
63
|
+
|
|
64
|
+
- All rights, title, and interest in PromptTest, PromptTest Studio, and associated
|
|
65
|
+
documentation remain with the Operator.
|
|
66
|
+
- The names "PromptTest" and "PromptTest Studio," logos, and brand assets are
|
|
67
|
+
trademarks of the Operator. You may refer to PromptTest nominatively (e.g., in
|
|
68
|
+
tutorials or CI configurations), but you may not use the marks to brand a
|
|
69
|
+
competing product or imply endorsement.
|
|
70
|
+
- Nothing in these terms transfers ownership of any intellectual property.
|
|
71
|
+
|
|
72
|
+
## 5. License Keys & Paid Features
|
|
73
|
+
|
|
74
|
+
- License Keys are issued per organization/seat as specified in your order and are
|
|
75
|
+
non-transferable unless agreed in writing.
|
|
76
|
+
- Paid features unlocked by a License Key may be verified locally or require periodic
|
|
77
|
+
online validation; extended offline grace periods are available for air-gapped CI
|
|
78
|
+
environments on request.
|
|
79
|
+
- Sharing a License Key beyond its licensed scope is a material breach and will
|
|
80
|
+
terminate the license immediately.
|
|
81
|
+
|
|
82
|
+
## 6. Data & Privacy
|
|
83
|
+
|
|
84
|
+
- The PromptTest CLI operates 100% locally and collects no telemetry by default (see
|
|
85
|
+
[SECURITY.md](./SECURITY.md)).
|
|
86
|
+
- External LLM providers are strictly opt-in; you are responsible for the data you
|
|
87
|
+
choose to send to third-party providers.
|
|
88
|
+
- PromptTest Studio's data handling is described in its own privacy policy at the
|
|
89
|
+
time of its release.
|
|
90
|
+
|
|
91
|
+
## 7. Subscriptions, Billing & Refunds (Paid Products)
|
|
92
|
+
|
|
93
|
+
- Paid licenses and subscriptions are billed in advance per the pricing plan chosen
|
|
94
|
+
at purchase.
|
|
95
|
+
- Subscriptions renew automatically until cancelled; cancellation takes effect at the
|
|
96
|
+
end of the current billing period.
|
|
97
|
+
- Refunds are handled per the policy stated at the point of sale (default: 14-day
|
|
98
|
+
refund window for first-time purchases).
|
|
99
|
+
|
|
100
|
+
## 8. Support & Service Levels
|
|
101
|
+
|
|
102
|
+
- Free-tier users receive community support via GitHub Issues only.
|
|
103
|
+
- Commercial and Enterprise customers receive support per their signed agreement
|
|
104
|
+
(response SLAs are defined in SECURITY.md for vulnerabilities and in the Commercial
|
|
105
|
+
License for general support).
|
|
106
|
+
|
|
107
|
+
## 9. Disclaimers & Limitation of Liability
|
|
108
|
+
|
|
109
|
+
TO THE MAXIMUM EXTENT PERMITTED BY LAW, PROMPTTEST IS PROVIDED "AS IS" WITHOUT
|
|
110
|
+
WARRANTIES OF ANY KIND. THE OPERATOR IS NOT LIABLE FOR ANY INDIRECT, INCIDENTAL,
|
|
111
|
+
SPECIAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS OR DATA LOSS. TOTAL
|
|
112
|
+
AGGREGATE LIABILITY FOR PAID PRODUCTS IS LIMITED TO THE AMOUNTS PAID BY YOU IN THE
|
|
113
|
+
TWELVE (12) MONTHS PRECEDING THE CLAIM. (Note: this mirrors the BSL 1.1 warranty
|
|
114
|
+
disclaimer for the free CLI; negotiate specific terms in Commercial License
|
|
115
|
+
agreements.)
|
|
116
|
+
|
|
117
|
+
## 10. Termination
|
|
118
|
+
|
|
119
|
+
- Use in violation of the LICENSE or these terms terminates all rights immediately
|
|
120
|
+
(BSL 1.1 also terminates rights across all versions on violation).
|
|
121
|
+
- Upon termination, you must cease use and delete all copies of the Licensed Work.
|
|
122
|
+
|
|
123
|
+
## 11. Changes to These Terms
|
|
124
|
+
|
|
125
|
+
The Operator may update these terms; material changes will be announced via the
|
|
126
|
+
repository or the npm package notes at least 30 days before taking effect for
|
|
127
|
+
existing paid customers. Continued use after the effective date constitutes
|
|
128
|
+
acceptance.
|
|
129
|
+
|
|
130
|
+
## 12. Governing Law
|
|
131
|
+
|
|
132
|
+
These terms are governed by the laws of India (or the jurisdiction specified in your
|
|
133
|
+
Commercial License agreement), without regard to conflict-of-law rules.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
_PromptTest Studio is developed and sold separately. This document does not grant
|
|
138
|
+
any rights to PromptTest Studio. See the Studio license agreement for details._
|