{"_id":"@appifex/test-gen","name":"@appifex/test-gen","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@appifex/test-gen","version":"1.0.0","license":"MIT","type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"main":"./dist/index.js","types":"./dist/index.d.ts","dependencies":{"@appifex/core":"1.0.0"},"author":{"name":"Appifex"},"homepage":"https://github.com/appifex-ai-org/appifex-dtc#readme","bugs":{"url":"https://github.com/appifex-ai-org/appifex-dtc/issues"},"repository":{"type":"git","url":"git+https://github.com/appifex-ai-org/appifex-dtc.git","directory":"packages/test-gen"},"publishConfig":{"access":"public","provenance":true},"keywords":["appifex","dtc","test-gen","maestro","xctest"],"description":"Test generation (Maestro UI flows + XCTest/Gradle unit tests) for the appifex-dtc pipeline","scripts":{"build":"tsc","clean":"rm -rf dist"},"_id":"@appifex/test-gen@1.0.0","_integrity":"sha512-MrkR1OQx82H/oKqVY71t7rVvLrJAnaUNo0aDJ5qpYfAN9CMgon8NOWK0rwM8giHOCnVe2In984GC6NeCIXqHqw==","_resolved":"/tmp/aa0d750302d2ba53a21d559a2ebd45bf/appifex-test-gen-1.0.0.tgz","_from":"file:appifex-test-gen-1.0.0.tgz","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-MrkR1OQx82H/oKqVY71t7rVvLrJAnaUNo0aDJ5qpYfAN9CMgon8NOWK0rwM8giHOCnVe2In984GC6NeCIXqHqw==","shasum":"2bf2d382f647442ca21b9acb2af7ac94dad40466","tarball":"https://registry.npmjs.org/@appifex/test-gen/-/test-gen-1.0.0.tgz","fileCount":15,"unpackedSize":32853,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@appifex%2ftest-gen@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIChKjeUADAmq2vYAN0I71ZKjb8KJqGwWTNh5dTMd0gbIAiEAlIsTRgvRc4xWgRWcHRac5Sn263obRAoBho0Vtg8FZ1g="}]},"_npmUser":{"name":"roger-appifex","email":"dev@appifex.ai"},"directories":{},"maintainers":[{"name":"appfiex-rayliu","email":"sevenray@gmail.com"},{"name":"roger-appifex","email":"dev@appifex.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/test-gen_1.0.0_1776656143295_0.1317409973764727"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-20T03:35:43.151Z","1.0.0":"2026-04-20T03:35:43.436Z","modified":"2026-04-20T03:35:43.865Z"},"maintainers":[{"name":"appfiex-rayliu","email":"sevenray@gmail.com"},{"name":"roger-appifex","email":"dev@appifex.ai"}],"description":"Test generation (Maestro UI flows + XCTest/Gradle unit tests) for the appifex-dtc pipeline","homepage":"https://github.com/appifex-ai-org/appifex-dtc#readme","keywords":["appifex","dtc","test-gen","maestro","xctest"],"repository":{"type":"git","url":"git+https://github.com/appifex-ai-org/appifex-dtc.git","directory":"packages/test-gen"},"author":{"name":"Appifex"},"bugs":{"url":"https://github.com/appifex-ai-org/appifex-dtc/issues"},"license":"MIT","readme":"# @appifex/test-gen\n\nGenerate all tests (UI + unit) before code. This is the \"tests first\" step of the two-layer TDD approach.\n\n## Usage\n\n```typescript\nimport { generateUITests, generateUnitTests } from '@appifex/test-gen'\n\n// Generate Maestro UI test flows from platform spec\nconst flows = generateUITests(platformSpec)\n// → [{ name: 'Browse Pets', fileName: 'browse-pets.yaml', content: '...' }, ...]\n\n// Generate unit tests from business requirements\nconst files = generateUnitTests(\n  ['Filter pets by type', 'Add and remove favorites', 'Validate adoption form'],\n  'swiftui',\n)\n// → [{ fileName: 'RequirementsTests.swift', content: '...', testCount: 3 }]\n```\n\n## What it generates\n\n| Type | Platform | Output |\n|------|----------|--------|\n| UI tests | swiftui | Maestro YAML flows with `assertVisible` + `tapOn` |\n| UI tests | kotlin-compose | Maestro YAML flows (same format) |\n| Unit tests | swiftui | XCTest `.swift` files |\n| Unit tests | kotlin-compose | JUnit `.kt` files |\n\nGenerated tests are **locked** — they become the contract that code generation must satisfy.\n","readmeFilename":"README.md","_rev":"1-1582f8c4cbc6fcb0df12f74a5ea1b842"}