Files
fixture-tools/README.md
T
2026-09-01 13:03:32 +02:00

52 lines
2.0 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.1.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, and 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
- 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, and production-scale data loads are
out of scope in v0.1.0.
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).