@sun-asterisk/sungen 3.2.12-beta.10 → 3.2.12-beta.11

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.
@@ -177,12 +177,20 @@ create-test.
177
177
  ## Cross-artifact check — testcase ↔ data agree
178
178
 
179
179
  `data validate` checks the data alone; **`sungen data crosscheck`** checks the testcase and its data
180
- AGREE: no dangling `{{var}}` (every referenced var has a value), a cross-screen `shared` dataset is
181
- identical across the journey (confirmation shows what setup entered), and a declared state-precondition
182
- is surfaced in the feature. Run it after the `.feature` exists; fix any `error`. Together
183
- `data validate` + `data crosscheck` are the **Data Gate + Cross-artifact Gate** (the `data-only`
184
- harness profile). Every `data gen` also stamps a `_fingerprint` (catalog+generator+context hash) so a
185
- reader/cache can tell whether the inputs that produced the data changed.
180
+ AGREE **and are COMPLETE**: no dangling `{{var}}`; a cross-screen `shared` dataset is identical across
181
+ the journey; a declared state-precondition is surfaced; **and even when you author `@cases` by hand
182
+ instead of merging `data gen` — the authored values COVER the BVA the field-map's constraints require
183
+ and the login experience checklist**:
184
+ - **`BVA_UNCOVERED`** a bounded dimension is missing a boundary value. Classic miss: `email
185
+ minLength: 5` you must have an email of length **4 (invalid), 5, 6**; a URL/code of length 5 does
186
+ NOT count (matched by type). Add the missing values (the exact BVA is in `data gen`'s output) or waive.
187
+ - **`EXPERIENCE_UNCOVERED`** — a login/auth unit is missing credential-state scenarios: **soft-deleted**,
188
+ locked, unverified, password-expired, **valid-with-surrounding-whitespace** (trim → accept). Add each
189
+ (a seeded account in that state) or waive per spec.
190
+
191
+ Treat these as MUST-ADDRESS in the create-test loop — they are exactly the gaps a QA reviewer catches.
192
+ Together `data validate` + `data crosscheck` are the **Data Gate + Cross-artifact + Coverage Gate** (the
193
+ `data-only` profile). Every `data gen` also stamps a `_fingerprint` (catalog+generator+context hash).
186
194
 
187
195
  ## Boundary completeness + trim
188
196
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sun-asterisk/sungen",
3
- "version": "3.2.12-beta.10",
3
+ "version": "3.2.12-beta.11",
4
4
  "description": "Deterministic E2E Test Compiler - Gherkin + Selectors → Playwright tests",
5
5
  "main": "src/index.ts",
6
6
  "types": "src/index.ts",
@@ -39,8 +39,8 @@
39
39
  "@babel/types": "^7.28.5",
40
40
  "@cucumber/gherkin": "^37.0.0",
41
41
  "@cucumber/messages": "^31.0.0",
42
- "@sungen/driver-data-factory": "3.2.12-beta.10",
43
- "@sungen/driver-ui": "3.2.12-beta.10",
42
+ "@sungen/driver-data-factory": "3.2.12-beta.11",
43
+ "@sungen/driver-ui": "3.2.12-beta.11",
44
44
  "chalk": "^5.6.2",
45
45
  "commander": "^14.0.2",
46
46
  "dotenv": "^17.2.3",
@@ -177,12 +177,20 @@ create-test.
177
177
  ## Cross-artifact check — testcase ↔ data agree
178
178
 
179
179
  `data validate` checks the data alone; **`sungen data crosscheck`** checks the testcase and its data
180
- AGREE: no dangling `{{var}}` (every referenced var has a value), a cross-screen `shared` dataset is
181
- identical across the journey (confirmation shows what setup entered), and a declared state-precondition
182
- is surfaced in the feature. Run it after the `.feature` exists; fix any `error`. Together
183
- `data validate` + `data crosscheck` are the **Data Gate + Cross-artifact Gate** (the `data-only`
184
- harness profile). Every `data gen` also stamps a `_fingerprint` (catalog+generator+context hash) so a
185
- reader/cache can tell whether the inputs that produced the data changed.
180
+ AGREE **and are COMPLETE**: no dangling `{{var}}`; a cross-screen `shared` dataset is identical across
181
+ the journey; a declared state-precondition is surfaced; **and even when you author `@cases` by hand
182
+ instead of merging `data gen` — the authored values COVER the BVA the field-map's constraints require
183
+ and the login experience checklist**:
184
+ - **`BVA_UNCOVERED`** a bounded dimension is missing a boundary value. Classic miss: `email
185
+ minLength: 5` you must have an email of length **4 (invalid), 5, 6**; a URL/code of length 5 does
186
+ NOT count (matched by type). Add the missing values (the exact BVA is in `data gen`'s output) or waive.
187
+ - **`EXPERIENCE_UNCOVERED`** — a login/auth unit is missing credential-state scenarios: **soft-deleted**,
188
+ locked, unverified, password-expired, **valid-with-surrounding-whitespace** (trim → accept). Add each
189
+ (a seeded account in that state) or waive per spec.
190
+
191
+ Treat these as MUST-ADDRESS in the create-test loop — they are exactly the gaps a QA reviewer catches.
192
+ Together `data validate` + `data crosscheck` are the **Data Gate + Cross-artifact + Coverage Gate** (the
193
+ `data-only` profile). Every `data gen` also stamps a `_fingerprint` (catalog+generator+context hash).
186
194
 
187
195
  ## Boundary completeness + trim
188
196