Testnizer

gRPC

Load proto files, invoke all four streaming modes, and inspect metadata with Testnizer's native gRPC engine.

Testnizer uses @grpc/grpc-js and @grpc/proto-loader in the main process — no reflection server required, no intermediary proxy, no port forwarding.

Opening a gRPC tab

Click + NewgRPC. The editor opens with a proto file picker and an empty service browser.

Loading a proto file

Click Select .proto file and pick the file from disk. Testnizer parses the file (including any local imports from the same directory tree) and populates the Service and Method dropdowns.

If your proto imports other proto files by relative path, Testnizer resolves them from the same root directory — you don’t need to flatten the file.

Server address

Enter the target in host:port format:

api.internal:443
localhost:50051

TLS / mTLS is configured in the Connection panel:

OptionDescription
PlaintextUnencrypted gRPC (grpc://)
Server TLSVerifies server certificate using the system trust store (or a custom CA you add)
Mutual TLSAlso sends a client certificate — pick from the project’s certificate store

For server TLS without a valid CA, you can add a self-signed CA certificate in Settings → Certificates and Testnizer will trust it for that hostname.

Service and method

After loading the proto, pick a service and a method from the dropdowns. Testnizer generates a JSON skeleton for the request message type with all fields present (populated with zero values). Fill in the fields you care about and clear the ones you don’t need — the serializer ignores null-valued optional fields.

Streaming modes

Unary

Single request, single response. Testnizer sends the request message and displays the response in the right pane.

Server-streaming

Single request, stream of responses. Testnizer holds the call open and appends each response message to the timeline as it arrives. Hit Cancel to half-close the stream.

Client-streaming

Open a stream, send multiple request messages one by one (using the Send button for each), then click Finish sending to half-close and wait for the single response.

Bidirectional streaming

Both client and server stream simultaneously. Use the Send button to push request messages; server messages appear in the shared timeline. Click Close to finish the client half of the stream.

Metadata

The Metadata tab lets you add gRPC call metadata (equivalent to HTTP headers) as key-value pairs. Both request and response metadata are shown.

Common uses:

  • authorization: Bearer {{token}}
  • x-request-id: {{$randomUUID}}
  • grpc-timeout: 30S

Request and response view

Request and response messages are shown as pretty-printed JSON (the protobufjs JSON representation). Enum values are shown by name, not number. bytes fields are shown as Base64.

For streaming calls, each message in the timeline is individually expandable.

Deadlines

Set a call deadline in the request settings (gear icon). Testnizer sends the grpc-timeout metadata header and cancels the call if the deadline is reached, showing a DEADLINE_EXCEEDED status.

Status codes

gRPC status codes (OK, CANCELLED, NOT_FOUND, UNAUTHENTICATED, etc.) appear in the status indicator above the response pane, colour-coded by severity:

  • OK (0) → green
  • CANCELLED (1), NOT_FOUND (5) → yellow
  • INTERNAL (13), UNAVAILABLE (14), UNAUTHENTICATED (16), etc. → red

Server reflection (experimental)

If the server has the gRPC reflection service enabled, Testnizer can enumerate services without a proto file. Toggle Use server reflection in the connection panel and click Fetch services. Reflection-loaded service definitions are cached locally.

Environment variables

{{variable}} substitution works in the server address, metadata values, and JSON request body at send time.