k6
k6 copied to clipboard
Support for non-web-stack protocols
k6 currently supports testing over HTTP, gRPC, and WebSocket. That’s enough for many web services, but it doesn’t cover systems that rely on other protocols, like DNS, ICMP, MQTT, or raw TCP/UDP. This makes it hard to use k6 in environments where lower-level protocols or non-HTTP interfaces are the norm.
Why this matters
Developers use k6 because it’s scriptable, composable, and fits into modern workflows. But the limited protocol support forces people to reach for other tools when testing things like custom infrastructure, message brokers, or network-level behavior. Extending k6 to support more protocols means fewer tools, more reusable tests, and a more consistent experience across the stack.
What we want to build
We want to make additional protocols available in k6 via JavaScript APIs, such as ICMP, Traceroute, DNS, TCP, UDP, and MQTT. The goal is to make these feel like first-class modules that can be used alongside existing k6 functionality without surprises.
What success looks like
Each protocol has its own importable JS module under the k6/x/<protocol> namespace. These modules are independent and usable in any k6 script. Users can mix and match them to build tests that go beyond the web and cover real-world system interactions.