prompttest 1.4.0 → 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/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,51 +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
 
56
- > **⚖️ 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).
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).
57
61
 
58
62
  ---
59
63
 
60
64
  ### 5 Core CLI Workflows
61
65
 
62
66
  #### 1. Environment Diagnostic Check
67
+
63
68
  Before running tests, verify your ADB connectivity, connected devices, and permissions:
69
+
64
70
  ```bash
65
71
  npx prompttest doctor
66
72
  ```
67
73
 
68
74
  #### 2. Zero-Code Autonomous Exploration (AI App Crawl)
75
+
69
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
+
70
78
  ```bash
71
79
  npx prompttest explore com.yourcompany.app
72
80
  ```
73
- *Tip: `explore` is its own top-level command. Pass `--max-screens=30` or `--safety-mode=strict` to customize.*
81
+
82
+ _Tip: `explore` is its own top-level command. Pass `--max-screens=30` or `--safety-mode=strict` to customize._
74
83
 
75
84
  #### 3. Interactive Record & Replay
85
+
76
86
  Record your natural interactions on a physical phone directly into a reusable test spec:
87
+
77
88
  ```bash
78
89
  npx prompttest record specs/login.txt
79
90
  ```
91
+
80
92
  - Tap buttons and type in input fields on your phone; PromptTest auto-generates conversational English test steps.
81
93
  - **Append mode**: Add `--append` to add more steps to an existing spec without overwriting.
82
94
  - **Safety backup**: If the target file already exists, PromptTest automatically creates a `.bak` backup before modifying.
83
95
 
84
96
  #### 4. Run Plain-English Test Specs
97
+
85
98
  Execute test specifications with fail-fast validation and locator self-healing:
99
+
86
100
  ```bash
87
101
  npx prompttest run specs/login.txt com.yourcompany.app
88
102
  ```
103
+
89
104
  Power flags:
105
+
90
106
  - `--heal`: Automatically self-heal altered counts and dynamic locators.
91
107
  - `--video`: Record an MP4 video of the execution session.
92
108
  - `--screenshots`: Capture high-resolution visual evidence at every step.
@@ -94,7 +110,9 @@ Power flags:
94
110
  - `--embed-screenshots`: Embed screenshots directly into a standalone, shareable HTML report.
95
111
 
96
112
  #### 5. Interactive Live REPL Playground
113
+
97
114
  Experiment with commands live in your terminal against your connected device:
115
+
98
116
  ```bash
99
117
  npx prompttest repl com.yourcompany.app
100
118
  ```
@@ -105,19 +123,20 @@ npx prompttest repl com.yourcompany.app
105
123
 
106
124
  To avoid common syntax errors, remember that `explore`, `record`, and `repl` are **standalone commands**:
107
125
 
108
- | Goal | ✅ Correct CLI Command | ❌ Common Mistake |
109
- | :--- | :--- | :--- |
110
- | **Autonomous App Crawling** | `npx prompttest explore <pkg>` | `npx prompttest run explore` |
111
- | **Record from Phone Touches** | `npx prompttest record <spec.txt>` | `npx prompttest run record` |
112
- | **Run Existing Spec File** | `npx prompttest run <spec.txt> [pkg]` | `npx prompttest <spec.txt>` |
113
- | **Interactive Live Terminal** | `npx prompttest repl [pkg]` | `npx prompttest run repl` |
114
- | **Diagnostic Health Check** | `npx prompttest doctor` | `npx prompttest run doctor` |
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` |
115
133
 
116
134
  ---
117
135
 
118
136
  ### 📦 Recommended `package.json` Scripts
119
137
 
120
138
  Add these convenient shortcuts to your project's `package.json`:
139
+
121
140
  ```json
122
141
  "scripts": {
123
142
  "test:mobile": "prompttest run specs/smoke.txt com.yourcompany.app --heal",
@@ -149,6 +168,7 @@ your-mobile-project/
149
168
  ```
150
169
 
151
170
  ### Viewing & Sharing Reports:
171
+
152
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.
153
173
  - **CI/CD Integration (`output/<spec>-junit.xml`)**: Standard JUnit format natively recognized by GitHub Actions, GitLab CI, Jenkins, and CircleCI.
154
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!
@@ -188,6 +208,7 @@ Test specifications are simple text files containing numbered steps written in c
188
208
  ```
189
209
 
190
210
  ### Run the Spec:
211
+
191
212
  ```bash
192
213
  npx prompttest run specs/login_and_dashboard.txt com.yourcompany.app
193
214
  ```
@@ -196,18 +217,18 @@ npx prompttest run specs/login_and_dashboard.txt com.yourcompany.app
196
217
 
197
218
  ## 📖 Syntax Reference
198
219
 
199
- | Category | Command Syntax | Description |
200
- | :--- | :--- | :--- |
201
- | **Tap / Click** | `Tap 'Sign In'` | Taps button, icon, link, or tab matching label or text. |
202
- | **Input Fields** | `Type 'user@test.com' into 'Email'` | Auto-focuses field, clears existing text, and enters string safely. |
203
- | **Assertions** | `Verify 'Dashboard' is visible` | Polls until the element appears on screen (sub-second resolution). |
204
- | **Absence Check** | `Verify 'Loading...' is not visible` | Confirms an element, dialog, or spinner has dismissed. |
205
- | **Spatial Tap** | `Tap 'Delete' next to 'Order #12'` | Disambiguates duplicate elements using directional proximity. |
206
- | **Gestures** | `Scroll down`, `Scroll up`, `Swipe left` | Performs viewport-proportional touch flings. |
207
- | **Hardware Keys** | `Press back`, `Press home` | Dispatches physical Android keycodes (`KEYCODE_BACK`, etc.). |
208
- | **Delays** | `Wait 2s` or `Wait 1500ms` | Pauses execution for custom animation settling. |
209
- | **Conditionals** | `Tap 'Dismiss' (if present)` | Executes step only if element exists, without failing the suite. |
210
- | **Generators** | `$random.email`, `$date.now`, `$uuid` | Inlines dynamic synthetic data into input fields. |
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. |
211
232
 
212
233
  ---
213
234
 
@@ -287,31 +308,33 @@ npx prompttest memory <package>
287
308
 
288
309
  To maintain honest expectations, here is what PromptTest currently supports, what is under active development, and its architectural boundaries:
289
310
 
290
- | Platform / Framework | Supported? | Notes |
291
- | :--- | :---: | :--- |
292
- | **Android (Physical & Emulators)** | **✅ Production Ready** | React Native, Expo, Flutter, Native Views, Jetpack Compose. |
293
- | **iOS / iPhone & iPad** | **🚧 Under Development** | Native iOS engine is in active development; not supported in v1.3.x. |
294
- | **Websites / Desktop Browsers** | **❌ Not Supported** | Dedicated strictly to mobile apps. For web, use Playwright or Cypress. |
295
- | **Standard UI Hierarchy** | **✅ Full** | Operates 100% via native ADB hierarchy stream (`uiautomator dump`). |
296
- | **Self-Healing Dynamic Locators** | **✅ Full** | Auto-resolves modified counts and labels dynamically via `--heal`. |
297
- | **Bottom-Tab Discovery** | **✅ Full** | Explores hubs, nested master-detail views, and backtracks cleanly. |
298
- | **Game Engines & Canvas** | **⚠️ Not Supported** | Fully custom OpenGL/Vulkan/Unity games lack accessible UI nodes. |
299
- | **Biometrics / OS Dialogs** | **⚠️ Limited** | System-level biometric prompts require hardware-level mocks. |
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. |
300
321
 
301
322
  ---
302
323
 
303
324
  ## ⚠️ Common Pitfalls & How to Solve Them
304
325
 
305
326
  ### 1. Hardware Back Button Minimizing the App
306
- * **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.
307
- * **How to solve it**:
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**:
308
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.
309
331
  - In autonomous exploration (`explore`), PromptTest's built-in **Package Jail Guard** automatically detects if the app was backgrounded and restores it.
310
332
  - Add the `--fresh` flag when running specs to cold-start your app cleanly before tests.
311
333
 
312
334
  ### 2. Android OS Permission Dialogs ("Allow Notifications / Location")
313
- * **What happens**: System dialogs belong to Android OS (`com.android.permissioncontroller`), not your app, and can appear unexpectedly on new installs.
314
- * **How to solve it**:
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**:
315
338
  - Use conditional handling in your spec:
316
339
  ```text
317
340
  Tap 'While using the app' (if present)
@@ -323,8 +346,9 @@ To maintain honest expectations, here is what PromptTest currently supports, wha
323
346
  ```
324
347
 
325
348
  ### 3. Off-Screen Items in Long Lists (FlatList / RecyclerView)
326
- * **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.
327
- * **How to solve it**:
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**:
328
352
  - Scroll before tapping:
329
353
  ```text
330
354
  Scroll down
@@ -333,8 +357,9 @@ To maintain honest expectations, here is what PromptTest currently supports, wha
333
357
  ```
334
358
 
335
359
  ### 4. Layout Animations & Shimmer Settling
336
- * **What happens**: Tapping an element during a layout animation or skeleton fade-in can cause touch coordinates to miss while elements shift.
337
- * **How to solve it**:
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**:
338
363
  - Add a brief settling pause: `Wait 500ms` or assert an anchor element first: `Verify 'Dashboard' is visible`.
339
364
  - Disable animations on test devices to run tests 2x faster:
340
365
  ```bash
@@ -344,13 +369,15 @@ To maintain honest expectations, here is what PromptTest currently supports, wha
344
369
  ```
345
370
 
346
371
  ### 5. WebViews & In-App Browsers (OAuth & Payment Gateways)
347
- * **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.
348
- * **How to solve it**:
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**:
349
375
  - Use plain text matching (`Tap 'Sign in with Google'`). Deep DOM selector manipulation inside WebViews is not supported.
350
376
 
351
377
  ### 6. Multiple Devices Connected
352
- * **What happens**: If a physical phone and an emulator are both plugged in, ADB doesn't know which one to target.
353
- * **How to solve it**:
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**:
354
381
  - Target a specific device serial using `--serial`:
355
382
  ```bash
356
383
  npx prompttest run specs/login.txt com.app --serial=emulator-5554
@@ -361,35 +388,40 @@ To maintain honest expectations, here is what PromptTest currently supports, wha
361
388
  ## 💡 Pro-Tips & Best Practices
362
389
 
363
390
  ### 1. The "Record & Refine" Workflow
364
- * `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.
365
- * **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.
366
- * Preview without touching your device:
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:
367
395
  ```bash
368
396
  npx prompttest run specs/flow.txt --dry-run
369
397
  ```
370
398
 
371
399
  ### 2. Deterministic Clean States (`--fresh`)
372
- * Prevent "already-logged-in" test pollution by adding `--fresh` to cold-start the target app before execution:
400
+
401
+ - Prevent "already-logged-in" test pollution by adding `--fresh` to cold-start the target app before execution:
373
402
  ```bash
374
403
  npx prompttest run specs/login.txt com.yourcompany.app --fresh
375
404
  ```
376
405
 
377
406
  ### 3. Zero-Maintenance Dynamic Badges (`--heal`)
378
- * 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.
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.
379
409
 
380
410
  ### 4. Device & Screen Resolution Agnostic Portability
381
- * 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.
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.
382
413
 
383
414
  ### 5. 🛡️ Enterprise Safety Guardrails & Custom Blacklists
384
- Autonomous exploration is safe by default, but enterprise applications often have company-specific sensitive keywords (e.g. *"Deactivate"*, *"Transfer Funds"*, *"Revoke Access"*).
385
415
 
386
- * **Default Protection**: PromptTest automatically detects and blocks destructive actions like `"Delete"`, `"Wipe"`, `"Remove"`, and `"Discard Changes"`.
387
- * **Add Your Own Sensitive Keywords**: You can supply your own custom blocked keywords to run **alongside** the defaults:
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:
388
420
  ```bash
389
421
  # Via CLI flag:
390
422
  npx prompttest explore com.yourcompany.app --safety-blacklist="Transfer,Deactivate,Revoke,Unsubscribe"
391
423
  ```
392
- * **Or configure once in `.prompttestrc.json`**:
424
+ - **Or configure once in `.prompttestrc.json`**:
393
425
  ```json
394
426
  {
395
427
  "safety": {
@@ -444,14 +476,14 @@ docker run --rm --net=host \
444
476
 
445
477
  Tested and verified against live physical Android devices running complex multi-role enterprise apps:
446
478
 
447
- | Test Suite | Total Steps | Passed | Failed | Pass Rate | Execution Time |
448
- | :--- | :---: | :---: | :---: | :---: | :---: |
449
- | **CoachConnect Enterprise Suite** | 52 | 52 | 0 | **100%** | 47.8s |
450
- | **Govindam Multilingual Suite** | 8 | 8 | 0 | **100%** | 35.1s |
451
- | **Calculator Operations Suite** | 5 | 5 | 0 | **100%** | 19.6s |
452
- | **Automated Vitest Test Matrix** | 294 | 294 | 0 | **100%** | 14.8s |
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 |
453
485
 
454
- *For deep architectural details and driver design, see `docs/ARCHITECTURE.md` included in the package.*
486
+ _For deep architectural details and driver design, see `docs/ARCHITECTURE.md` included in the package._
455
487
 
456
488
  ---
457
489
 
@@ -460,11 +492,13 @@ Tested and verified against live physical Android devices running complex multi-
460
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**.
461
493
 
462
494
  **✅ Free to use — no license required for:**
495
+
463
496
  - Personal, educational, academic, and open-source projects
464
497
  - Evaluation use
465
498
  - Internal software testing within organizations that have **both** under $100,000 USD in annual gross revenue **and** fewer than 10 employees
466
499
 
467
500
  **💼 Commercial license required for:**
501
+
468
502
  - Use within organizations exceeding either of the free-tier thresholds (revenue **or** headcount)
469
503
  - Testing agencies providing commercial QA services to third-party clients
470
504
  - Deployment into production commercial CI/CD pipelines
@@ -472,4 +506,4 @@ PromptTest is licensed under the **Business Source License 1.1 (BSL 1.1)**, and
472
506
 
473
507
  See the full [LICENSE](./LICENSE) and [Terms & Conditions](./TERMS.md) for exact terms.
474
508
 
475
- Commercial inquiries and enterprise licensing: `jairam.singh9@gmail.com` or open an issue at [github.com/shriramsingh/promptTest](https://github.com/shriramsingh/promptTest/issues).
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 CHANGED
@@ -1,134 +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
- Use of the PromptTest CLI is free under the terms of the BSL 1.1 Additional Use Grant
29
- for:
30
- - Personal, educational, academic, and open-source purposes;
31
- - Evaluation use; and
32
- - Internal software testing within organizations with both (a) annual gross revenue
33
- under $100,000 USD (or equivalent) and (b) fewer than 10 employees.
34
-
35
- ### 2.2 Commercial Tier
36
- Organizations exceeding the free-tier thresholds, testing agencies providing QA
37
- services to third parties, and production commercial CI/CD deployments require a
38
- paid Commercial License. Contact the Operator for pricing and terms.
39
-
40
- ## 3. Acceptable Use
41
-
42
- You agree **not** to:
43
- 1. Circumvent, bypass, or attempt to defeat any license-key validation, feature
44
- gating, or usage limits in the PromptTest CLI or Studio.
45
- 2. Reverse-engineer, decompile, or extract source code, models, heuristics, or
46
- proprietary logic from PromptTest Studio, except where such restriction is
47
- prohibited by applicable law.
48
- 3. Use PromptTest against applications you do not own or lack explicit permission to
49
- test, or in violation of any applicable law (including computer misuse and
50
- unauthorized-access statutes).
51
- 4. Resell, sublicense, or redistribute PromptTest Studio or paid Commercial License
52
- entitlements without written authorization.
53
- 5. Offer PromptTest (modified or unmodified) as a hosted, managed, or cloud testing
54
- service to third parties (this mirrors the BSL 1.1 Hosting & Managed Service
55
- Restriction).
56
- 6. Remove or obscure any license, copyright, or attribution notices.
57
-
58
- ## 4. Intellectual Property & Trademarks
59
-
60
- - All rights, title, and interest in PromptTest, PromptTest Studio, and associated
61
- documentation remain with the Operator.
62
- - The names "PromptTest" and "PromptTest Studio," logos, and brand assets are
63
- trademarks of the Operator. You may refer to PromptTest nominatively (e.g., in
64
- tutorials or CI configurations), but you may not use the marks to brand a
65
- competing product or imply endorsement.
66
- - Nothing in these terms transfers ownership of any intellectual property.
67
-
68
- ## 5. License Keys & Paid Features
69
-
70
- - License Keys are issued per organization/seat as specified in your order and are
71
- non-transferable unless agreed in writing.
72
- - Paid features unlocked by a License Key may be verified locally or require periodic
73
- online validation; extended offline grace periods are available for air-gapped CI
74
- environments on request.
75
- - Sharing a License Key beyond its licensed scope is a material breach and will
76
- terminate the license immediately.
77
-
78
- ## 6. Data & Privacy
79
-
80
- - The PromptTest CLI operates 100% locally and collects no telemetry by default (see
81
- [SECURITY.md](./SECURITY.md)).
82
- - External LLM providers are strictly opt-in; you are responsible for the data you
83
- choose to send to third-party providers.
84
- - PromptTest Studio's data handling is described in its own privacy policy at the
85
- time of its release.
86
-
87
- ## 7. Subscriptions, Billing & Refunds (Paid Products)
88
-
89
- - Paid licenses and subscriptions are billed in advance per the pricing plan chosen
90
- at purchase.
91
- - Subscriptions renew automatically until cancelled; cancellation takes effect at the
92
- end of the current billing period.
93
- - Refunds are handled per the policy stated at the point of sale (default: 14-day
94
- refund window for first-time purchases).
95
-
96
- ## 8. Support & Service Levels
97
-
98
- - Free-tier users receive community support via GitHub Issues only.
99
- - Commercial and Enterprise customers receive support per their signed agreement
100
- (response SLAs are defined in SECURITY.md for vulnerabilities and in the Commercial
101
- License for general support).
102
-
103
- ## 9. Disclaimers & Limitation of Liability
104
-
105
- TO THE MAXIMUM EXTENT PERMITTED BY LAW, PROMPTTEST IS PROVIDED "AS IS" WITHOUT
106
- WARRANTIES OF ANY KIND. THE OPERATOR IS NOT LIABLE FOR ANY INDIRECT, INCIDENTAL,
107
- SPECIAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS OR DATA LOSS. TOTAL
108
- AGGREGATE LIABILITY FOR PAID PRODUCTS IS LIMITED TO THE AMOUNTS PAID BY YOU IN THE
109
- TWELVE (12) MONTHS PRECEDING THE CLAIM. (Note: this mirrors the BSL 1.1 warranty
110
- disclaimer for the free CLI; negotiate specific terms in Commercial License
111
- agreements.)
112
-
113
- ## 10. Termination
114
-
115
- - Use in violation of the LICENSE or these terms terminates all rights immediately
116
- (BSL 1.1 also terminates rights across all versions on violation).
117
- - Upon termination, you must cease use and delete all copies of the Licensed Work.
118
-
119
- ## 11. Changes to These Terms
120
-
121
- The Operator may update these terms; material changes will be announced via the
122
- repository or the npm package notes at least 30 days before taking effect for
123
- existing paid customers. Continued use after the effective date constitutes
124
- acceptance.
125
-
126
- ## 12. Governing Law
127
-
128
- These terms are governed by the laws of India (or the jurisdiction specified in your
129
- Commercial License agreement), without regard to conflict-of-law rules.
130
-
131
- ---
132
-
133
- *PromptTest Studio is developed and sold separately. This document does not grant
134
- any rights to PromptTest Studio. See the Studio license agreement for details.*
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._