Files
fixture-tools/README.md
T
zemion f1c41e7079
Verify / verify (push) Canceled after 0s
Release Fixture Tools 0.2.0
2026-09-02 13:00:37 +02:00

60 lines
2.5 KiB
Markdown

# Fixture Tools
Generate deterministic, privacy-safe synthetic test fixtures entirely in the
browser. Fixture Tools is a local-first module in the add·ideas Toolbox.
## v0.2.0 capabilities
- Import a focused subset of JSON Schema, SQL `CREATE TABLE` DDL, XSD, CSV
headings, or the app's portable fixture-model JSON
- Review and edit normalized tables, fields, types, required/unique rules,
numeric and length ranges, enumerations, scalar foreign keys, composite
unique constraints, and composite foreign-key relationships
- Generate reproducible rows from a text seed with uniform, sequential,
normal, and constant distributions
- Deliberately exercise boundary values or inject invalid values, with a
separate violation ledger so negative-test fixtures cannot be mistaken for
valid data
- Preserve referential integrity and field uniqueness for valid generated rows
- Generate tables in a deterministic dependency-topological order, with an
explicit error for cyclic references
- Audit positive, boundary and intentional-negative exercise counts in a
constraint coverage matrix
- Select deterministic provider profiles (person, network, commerce), with a
typed extension point for additional local profiles
- Export JSON, spreadsheet-safe CSV, NDJSON, XML, SQL `INSERT` statements, or a
reusable fixture recipe
- Use only reserved example domains for generated email addresses
## Honest scope
The importers normalize common declarative constructs; they are not complete
JSON Schema, SQL, or XML Schema validators. Remote references, schema code,
database connections, XML entities, XSD `choice`/identity constraints, SQL
dialects beyond common table/column clauses, cyclic relational recipes, and
production-scale data loads are out of scope in v0.2.0. Coverage counts describe
generated exercises; they do not prove schema or application coverage.
Inputs are capped at 2 MiB. A recipe can contain at most 20 tables and 100
fields per table; generation is capped at 50,000 total rows and 8 MiB per
serialized output, with no more than 100,000 generated field values. Synthetic
data is not anonymization and must not be assumed
to represent real populations. The seeded generator is reproducible, not
cryptographically random.
## Development
```sh
npm ci
npm run check
npm run test:browser
```
`npm run release:artifact` creates a deterministic release ZIP and SHA-256
sidecar after all checks pass.
## License
GPL-3.0-or-later. See [LICENSE](LICENSE). Dependency notices are recorded in
[THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).