feat(config): e2e proof, public README, calibrated gates - #10
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR closes Phase 6 by adding an end-to-end (e2e) verification suite that boots a realistic NestJS fixture against the built dist/ artifacts, publishing a complete public README + initial changelog entry, and tightening release/CI gates (size + dogfood + e2e).
Changes:
- Add e2e fixtures/specs plus a dedicated Jest config to run against compiled
dist/*.cjsartifacts. - Expand public documentation (README) and add the initial
0.1.0changelog entry. - Update release gates and CI to include dogfood verification and an e2e step after build.
Reviewed changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tsconfig.e2e.json | TS config for compiling e2e tests. |
| test/e2e/fixtures/valid-source.ts | Valid env-source fixture for success-path boot. |
| test/e2e/fixtures/secrets.provider.ts | Injectable fixture secrets provider for async composition. |
| test/e2e/fixtures/secrets.module.ts | Nest module wrapper to import/export the secrets provider. |
| test/e2e/fixtures/incomplete-source.ts | Invalid env-source fixture for aggregated-failure boot. |
| test/e2e/fixtures/feature.provider.ts | Fixture consumer demonstrating typed ConfigService access. |
| test/e2e/fixtures/env.schema.ts | Zod schema fixture mirroring the documented integration shape. |
| test/e2e/config-boot-success.e2e-spec.ts | Success-path e2e boot specs against built artifacts. |
| test/e2e/config-boot-failure.e2e-spec.ts | Failure-path e2e specs asserting aggregated/value-free errors. |
| test/e2e/config-boot-async.e2e-spec.ts | Async forRootAsync composition e2e spec. |
| scripts/check-size.mjs | Recalibrate brotli size budgets and record calibration history. |
| README.md | Complete public README: features, quick start, API reference, catalog, testing, etc. |
| package.json | Add test:e2e script and extend prepublishOnly gate chain to include dogfood. |
| jest.e2e.config.ts | New Jest config mapping package imports to dist/*.cjs for e2e runs. |
| docs/tasks/README.md | Mark Phase 6 as complete in the tasks index and update totals. |
| docs/tasks/phase-06-integration-docs-dogfood.md | Mark all Phase 6 tasks complete and append completion log. |
| docs/development_plan.md | Update dashboard to reflect Phase 6 completion and overall progress. |
| CHANGELOG.md | Add initial 0.1.0 section documenting the shipped surface. |
| .github/workflows/ci.yml | Add e2e step after build/size in CI. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…te changelog (6.5)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes Phase 6 (integration-docs-dogfood): proves the shipped package end to end and finishes the public documentation. No public API changes; the frozen surface from Phases 0 to 5 is unchanged. This phase adds an e2e suite that boots a realistic NestJS fixture through the built artifact, the complete public README, the first-release changelog entry, recalibrated size budgets, and the full pre-publish gate chain.
What changed
test/e2e/boots a fixture application (server, database, redis, log namespaces per the spec example integration) through the compileddist/*.cjsartifacts, resolved viamoduleNameMapperinjest.e2e.config.ts(neversrc/aliases). Three specs, five tests: success boot with typedConfigServicereads and default resolution, aggregated-failure boot pinning the issue count and asserting no raw values leak into the report, and aforRootAsynccomposition of aprocess.env-shaped source with an injected fixture secrets provider.@nestjs/testingonly, no network port binding,maxWorkers: '50%'.test/e2e/fixtures, each with a source reference comment), full API reference covering every exported symbol of both subpaths (defineEnv,BymaxConfigModule.forRoot/forRootAsyncplus the options table,ConfigServiceget/getAll/has,BymaxConfigValidationError/ConfigIssue,ConfigErrorCode, theBYMAX_CONFIG/BYMAX_CONFIG_OPTIONStokens, and the type utilities), the error-code catalog, the testing guide, design principles, and known limitations.check-size.mjsbudgets set to roughly 1.3x the measured brotli baseline (root 4.06 KiB to 5.25 KiB, testing 5.24 KiB to 7 KiB), inside the 1.2x to 1.5x tripwire band, with the baseline and date recorded in the script comment.prepublishOnlynow chains typecheck, lint, test:cov:all, build, size, dogfood. CI gained an e2e step after the build.Verification
All commands green from a clean worktree:
pnpm prepublishOnly: typecheck, lint, test:cov:all (126 unit tests, 100% line/branch/function/statement), build, size (both subpaths PASS), dogfood (both subpaths resolve in ESM and CJS through the exports map, tarball contents clean).pnpm build && pnpm test:e2e: 3 suites, 5 tests pass against the built artifact.node scripts/dogfood-smoke-test.mjs: all assertions pass.README.md,CHANGELOG.md,src/, or.github/.Follow-ups