feat(test): Phase 1 – Node/TS integration test foundation (readiness, inspect, call helpers)Integration tests phase1 #89
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
Adds the Phase 1 foundation for migrating FaaS integration tests from bash to Node/TypeScript, as discussed with the maintainer (fetch-only, manual stub approach, protocol reuse where applicable).
Changes
Helpers (
test/integration/helpers.ts)waitForReadiness(baseUrl, maxRetries?, intervalMs?)– PollsGET /readinessuntil 200; on connection failure throws a clear message to start the FaaS first.getDeployments(baseUrl)–GET /api/inspect, returnsDeployment[](protocol type).getPrefix(baseUrl, suffix, maxRetries?, intervalMs?)– Resolves prefix for a deployment by suffix with retries.callFunction(baseUrl, prefix, suffix, version, funcName, args)–POSTto.../call/{funcName}with JSON body; returns parsed response.All HTTP is done with fetch (no axios). Types use
@metacall/protocol(Deployment).Smoke test (
test/integration/readiness.spec.ts)before()waits for FaaS readiness.Config and deps
integration:ts– runs Mocha with ts-node ontest/integration/**/*.spec.ts.includeextended withtest/**/*.ts;libincludesDOMfor globalfetchtyping.How to run
npm startin another terminal).npm run integration:tsOptional:
BASE_URL=http://localhost:9000 npm run integration:tsThe existing
npm run integration(test.sh) is unchanged.