@schematize/serverless-function-test
v0.6.6
Published
Schematize Serverless Function Tester Library for testing serverless functions locally
Readme
@schematize/serverless-function-test
Local HTTP server for exercising Schematize serverless function handlers. It turns incoming requests into API Gateway HTTP API v2–style events, loads your handler (with .env and working directory scoped to the function), and writes the response back on the socket.
Layout
| Piece | Role |
|--------|------|
| src/index.mjs | CLI entrypoint — parses arguments, starts http/https, routes requests, calls runFunction. |
| src/runHandler.mjs | Shared runtime — initAwslambda, buildEvent, loadHandler, invokeHandler, runFunction (used by this CLI and other tools such as schambda). |
The npm bin field points the executable at src/index.mjs (with a #!/usr/bin/env shebang).
Installing the binary
From a project that lists this package as a dependency:
npm install @schematize/serverless-function-testThen either:
npx schematize-serverless-function-test --handler ./path/to/functionor, from that project’s root:
./node_modules/.bin/schematize-serverless-function-test …Run the command from the directory whose relative paths (--handler, bundle folders) should resolve — paths are joined with process.cwd().
CLI usage
You must supply either --bundles or --handler.
--handler <dir>
Serve a single function directory (relative to the current working directory). Every path is dispatched to that handler (internal route match is /.+/).
Example:
schematize-serverless-function-test --handler ./workspaces/my-bundle/serverlessFunction/utilsThe loader resolves the handler via that directory’s package.json functionSettings.handler (file.exportName), or defaults to index + default export.
--bundles <path>[,<path>…]
Comma-separated list of bundle root directories. For each bundle, the tool reads bundle/package.json, expects bundle.serverlessFunctionList, and for each entry uses dir + regex (path regex) to decide which function handles a request.
Example:
schematize-serverless-function-test --bundles ./workspaces/bundle-auth--port <number>
Listen port. Default: 3000.
--key and --cert (HTTPS)
Optional paths (relative to process.cwd()) to a TLS key and certificate. If both are set, the server uses HTTPS; if only one is set, it warns and falls back to HTTP.
Programmatic use (without the CLI)
Import helpers from the package export map:
import {
initAwslambda,
buildEvent,
runFunction,
} from '@schematize/serverless-function-test/runHandler';runFunction loads the function’s .env, temporarily chdirs into functionDir, invokes the handler, then restores process.cwd() and environment.
Notes
- Intended for local testing only. The CLI sets
NODE_TLS_REJECT_UNAUTHORIZED=0for developer convenience. - Request bodies are surfaced in the synthetic event as base64 (
isBase64Encoded: true), matching common Lambda patterns.
License
MIT
