Swell
Swell copied to clipboard
Swell: API development tool that enables developers to test endpoints served over streaming technologies including Server-Sent Events (SSE), WebSockets, HTTP2, GraphQL, gRPC, and tRPC..

Swell
Swell is an API development tool that enables developers to test endpoints served over streaming technologies including Server-Sent Events (SSE), WebSockets, HTTP2, GraphQL, gRPC, WebRTC, and OpenAPI.
Getting Started
Visit www.getswell.io to download the latest release.
Swell is available for OSX, Linux, and Windows.
Highlights
Swell is a one-stop shop for sending and monitoring your API requests:
- Send and monitor streams over HTTP2 / HTTP1 (including SSEs) and WebSockets
- Create GraphQL queries, introspections, mutations, and subscriptions
- Make API requests based on a range of provided options that conform to the specifications defined in OpenAPI documents.
- Verify STUN and TURN server connectivity for WebRTC applications by generating an SDP (Session Description Protocol)
- Diagnose and monitor your gRPC streaming connections
- View response timing information and history in an interactive chart for each request
- Store workspaces of multiple requests for later use
- Import, export, and share workspaces with other developers
- Compose test suites in JavaScript with Chai-style TDD/BDD assertion syntax
- Execute a collection of requests in succession and receive clear visual feedback of each test's status
- Schedule requests to be sent on a regular time interval to support endpoint functional validation tests
Supported Technologies
-
HTTP2: Swell supports full HTTP2 multiplexing of requests and responses. HTTP requests to the same host will be sent over the same connection. Swell will attempt to initiate an HTTP2 connection for all HTTPS requests by default, with the ability to revert to HTTP1.1 for legacy servers. Multiple concurrent streams are allowed for each connection.
-
Server-Sent Events (SSE): Initiated by a simple toggle box, Swell displays SSE events one by one as they come in. Similar to HTTP2 streams, multiple open connection streams are allowed for SSE.
-
WebSockets (WS): Swell enables connecting directly to WebSocket servers with an HTTP handshake, with developers able to send messages to the connected WS server directly. All outgoing and incoming messages are displayed in real time.
-
GraphQL: Swell includes full support for all three root types of GraphQL - queries, mutations, and subscriptions – as well as Introspection. Variables are also supported, making creating queries easy.
-
gRPC: Swell includes full support for all four streaming types of gRPC - unary, client stream, server stream, bidirectional stream.
-
OpenAPI: Swell supports the enumeration and execution of REST and RPC API requests as defined in a user-provided OpenAPI document.
-
WebRTC: Swell makes it easy to test STUN and TURN ICE server connectivity for WebRTC applications.
Once you enter ICE server details as an array of JavaScript objects (example code block below). An RTCPeerConnection will be instantiated, as an SDP is generated.
[ { urls: 'turn:111.222.333.444:54321', username: 'myAwesomeUsername', credential: 'mySecretPassword', // or token credentialType: 'password', }, { urls: 'stun:555.777.888.999:43210', }, ];
Additional Features
-
Send Requests Directly to an Endpoint: You are able to immediately send a request to an endpoint OR stage a request in your workspace for multi-level testing.
-
Scripting in Swell: If your favors test-driven development, Swell allows you to write assertion tests to aid defining and testing backend API services.
- Workspaces: Swell allows you to save workspaces for easier testing of multiple requests.
-
Preview: You can now view a rendered preview of certain API responses (HTML)
-
Collection Runner: You can also stage requests in the workspace and automate the process of sending off each one. No need to manually press send on each one; instead each request will fire off in the order of staging.
-
Schedule Tests: You can also automate sending requests cyclically.
WIP Features
Clone this repo and check out dev mode for the latest and greatest!
-
Webhooks: Swell includes user-defined HTTP callback connection testing designed to test other server's connection to the web and ability to send data. The test insures that when an event occurs, the source site makes an HTTP request to the URL configured for the webhook.
-
Added in Dev Version 1.10.2! UI Updates: Built with Material UI, a smoother, more intutive interface for enhanced user experience.
-
Added in Dev Version 1.10.2! Github Integration + Import/Export Workspaces: Swell allows you to import and export workspaces, making it easy to share collections with your team. You can even register with Github to save your workspaces directly into your repository!
Built With
- Electron
- React
- React Router
- Material UI
- Redux
- Apollo Client
- Websockets
- gRPC-js
- VM2
- Chart.js
- Bulma
- IndexedDB
- Chai
- Mocha
- Playwright
Authors
- Grace Kim - gracekiim
- Alex Sanhueza - alexsanhueza
- Wyatt Bell - wcbell51
- John Madrigal - johnmadrigal
- Michael Miller - mjmiguel
- Hideaki Aomori - h15200
- Matt Gin - chinsonhoag
- Nick Healy - nickhealy
- Grace Spletzer - gspletzer
- Stephanie Wood - stephwood
- Anthony Terruso - discrete projects
- Brandon Marrero - brandon6190
- Jason Ou - jasonou1994
- Kyle Combs - texpatnyc
- Kwadwo Asamoah - addoasa
- Abby Chao - abbychao
- Amanda Flink - aflinky
- Kajol Thapa - kajolthapa
- Billy Tran - btctrl
- Paul Rhee - prheee
- Sam Parsons - sam-parsons
- Nancy Dao - nancyddao
- Evan Grobar - egrobar
- Dan Stein - danst3in
- Amruth Uppaluri - amuuth
- Yoon Choi - cyoonique
- Nathaniel Adams - nathanielBadams
- Robin Yoong - robinyoong
- Gary Slootskiy - garyslootskiy
- Sam Haar - samhaar
- Edward Cho - edwardcho1231
- Miguel Gonzalez - MigGonzalez
- Jason Liggayu - jasonligg
- Warren Tait - whtait
- Nathan Fleming - njfleming
- Konrad Kopko - konradkop
- Andrea Li - Andrea-gli
- Paul Ramirez - pauleramirez
- TJ Wetmore - TWetmore
- Colin Gibson - cgefx
- Ted Craig - tedcraig
- Anthony Wong - awong428
- John Jongsun Suh - MajorLift
- Christopher Pan - ChristopherJPan
- Adrian Uesugui - auesugui
- Jennifer Wu - jsh-wu
- Jacob Viesselman - JacobViesselman
- Michael Prince - MichaelGPrince
- Genevieve Annable - gigifeeds
- Jay Wall - hanswand
- Sam Pyo - samhpyo
- Drew Pomatti - thedrewery
- Kurtis Waterbury - kurto8
- Yale Yng-Wong - ywy-w
- Evelin Goldin - evelingoldin
- Alexander Adams - alex-e-adams
- Ethan Sclarsky - esclarsky
- Travis Lovis - tlovis
- HyeJin Kim - hyejinkim
- Alexa Nunes - A13xaNunes
- Michael Smith - Parkreiner
License
This project is licensed under the MIT License