|
1 | 1 | <p align="center"><img src="./src/assets/img/horizontal-logo-lockup.png" style="margin-top: 10px; margin-bottom: -10px;"></p>
|
2 | 2 |
|
3 | 3 | #
|
| 4 | + |
4 | 5 | [](https://github.com/open-source-labs/Swell/blob/master/LICENSE.txt)
|
5 | 6 | [](https://travis-ci.org/open-source-labs/Swell)
|
6 | 7 | 
|
7 | 8 | [](https://github.com/getswell/getswell/issues)
|
8 | 9 | [](https://twitter.com/intent/tweet?text=Swell-%20For%20all%20your%20streaming%20API%20testing%20needs&url=https://www.getswell.io&hashtags=SSE,WebSocket,HTTP,API,developers)
|
9 | 10 |
|
10 |
| - |
11 |
| - |
12 |
| -Swell is a API development tool that enables developers to test endpoints served over streaming technologies including Server-Sent Events (SSE), WebSockets, HTTP2, GraphQL and gRPC. |
| 11 | +Swell is a API development tool that enables developers to test endpoints served over streaming technologies including Server-Sent Events (SSE), WebSockets, HTTP2, GraphQL and gRPC. |
13 | 12 |
|
14 | 13 | ## Getting Started
|
15 | 14 |
|
16 |
| -Visit www.getswell.io to download the latest release. |
| 15 | +Visit www.getswell.io to download the latest release. |
17 | 16 |
|
18 | 17 | Swell is currently available for OS X, Linux and Windows.
|
19 | 18 |
|
20 | 19 | ## Highlights
|
| 20 | + |
21 | 21 | Swell is a one-stop shop for sending and monitoring your API requests
|
22 | 22 |
|
23 |
| -* Send and monitor streams over HTTP2 / HTTP1 (including SSEs) and WebSockets |
24 |
| -* Create GraphQL queries, introspections, mutations, and subscriptions |
25 |
| -* Provides full streaming testing support for gRPC |
26 |
| -* View response timing information and history in an interactive chart for each request |
27 |
| -* Save workspaces of multiple requests for later access |
28 |
| -* Import and export workspaces for sharing |
| 23 | +- Send and monitor streams over HTTP2 / HTTP1 (including SSEs) and WebSockets |
| 24 | +- Create GraphQL queries, introspections, mutations, and subscriptions |
| 25 | +- Provides full streaming testing support for gRPC |
| 26 | +- View response timing information and history in an interactive chart for each request |
| 27 | +- Save workspaces of multiple requests for later access |
| 28 | +- Import and export workspaces for sharing |
| 29 | +- Compose test suites in JavaScript with Chai-style TDD/BDD assertion syntax |
| 30 | +- Execute a collection of requests in succession and receive clear visual feedback of each test's status |
| 31 | +- Schedule requests on to be sent on a regular time interval to support endpoint functional validation tests |
29 | 32 |
|
30 | 33 | ## Supported Technologies
|
31 |
| -* *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, but will revert to HTTP1.1 for legacy servers. Multiple concurrent streams are allowed for each connection. |
32 |
| -<kbd><img src="./ReadMeGifs/Gifs/ConcurrentStreams.gif" |
33 |
| - style="float: left; margin-right: 10px; margin-bottom : 30px; margin-top : 10px; border: 1px solid black;" /></kbd> |
34 | 34 |
|
35 |
| -* *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. |
36 |
| -<kbd><img src="./ReadMeGifs/Gifs/SSE.gif" |
37 |
| - style="float: left; margin-right: 10px; margin-bottom : 30px; margin-top : 10px;" /></kbd> |
| 35 | +- _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, but will revert to HTTP1.1 for legacy servers. Multiple concurrent streams are allowed for each connection. |
| 36 | + <kbd><img src="./ReadMeGifs/Gifs/ConcurrentStreams.gif" |
| 37 | + style="float: left; margin-right: 10px; margin-bottom : 30px; margin-top : 10px; border: 1px solid black;" /></kbd> |
38 | 38 |
|
| 39 | +- _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. |
| 40 | + <kbd><img src="./ReadMeGifs/Gifs/SSE.gif" |
| 41 | + style="float: left; margin-right: 10px; margin-bottom : 30px; margin-top : 10px;" /></kbd> |
39 | 42 |
|
40 |
| -* *WebSocket (WS)*: Swell enables connecting directly to WebSocket servers with an HTTP handshake. Developers can directly send messages to the connected WS server. Messages are displayed in chatbox format, clearly indicating outgoing and incoming messages. |
41 |
| -<kbd><img src="./ReadMeGifs/Gifs/WebSockets.gif" |
42 |
| - style="float: left; margin-right: 10px;margin-bottom : 30px; margin-top : 10px;" /></kbd> |
| 43 | +- _WebSocket (WS)_: Swell enables connecting directly to WebSocket servers with an HTTP handshake. Developers can directly send messages to the connected WS server. Messages are displayed in chatbox format, clearly indicating outgoing and incoming messages. |
| 44 | + <kbd><img src="./ReadMeGifs/Gifs/WS.gif" |
| 45 | + style="float: left; margin-right: 10px;margin-bottom : 30px; margin-top : 10px;" /></kbd> |
43 | 46 |
|
| 47 | +- _GraphQL_: Swell includes full support for all three root types of GraphQL - queries, mutations, and subscriptions as well as Introspection - with and without variables. Smart code editor allows for easy query creation. |
| 48 | + <kbd><img src="./ReadMeGifs/Gifs/GraphQL.gif" |
| 49 | + style="float: left; margin-right: 10px;margin-bottom : 30px; margin-top : 10px;" /></kbd> |
44 | 50 |
|
45 |
| -* *GraphQL*: Swell includes full support for all three root types of GraphQL - queries, mutations, and subscriptions as well as Introspection - with and without variables. Smart code editor allows for easy query creation. |
46 |
| -<kbd><img src="./ReadMeGifs/Gifs/GraphQL.gif" |
47 |
| - style="float: left; margin-right: 10px;margin-bottom : 30px; margin-top : 10px;" /></kbd> |
48 |
| - |
49 |
| - |
50 |
| -* *gRPC*: Swell includes full support for all four streaming types of gRPC - unary, client stream, server stream, bidirectional stream. |
51 |
| -<kbd><img src="./ReadMeGifs/Gifs/GRPCResponses.gif" |
52 |
| - style="float: left; margin-right: 10px;margin-bottom : 30px; margin-top : 10px;" /></kbd> |
| 51 | +- _gRPC_: Swell includes full support for all four streaming types of gRPC - unary, client stream, server stream, bidirectional stream. |
| 52 | + <kbd><img src="./ReadMeGifs/Gifs/GRPCResponses.gif" |
| 53 | + style="float: left; margin-right: 10px;margin-bottom : 30px; margin-top : 10px;" /></kbd> |
53 | 54 |
|
54 | 55 | ## Additional Features
|
55 |
| -* *Workspaces*: Swell allows you to save workspaces for easier testing of multiple requests. |
56 |
| -* *Import/Export Workspaces*: Swell allows you to import and export workspaces, making it easy to share collections with your team. |
57 |
| -<kbd><img src="./ReadMeGifs/Gifs/SavedWorkspaces.gif" |
58 |
| - style="float: left; margin-right: 10px; margin-bottom : 30px; margin-top : 10px; border: 1px solid black;" /></kbd> |
| 56 | + |
| 57 | +- _Scripting in Swell_: Swell allows you to write assertion tests to aid in the test-driven development cycle of backend API services. |
| 58 | + <kbd><img src="./ReadMeGifs/Gifs/SimpleResponseTest.gif" |
| 59 | + style="float: left; margin-right: 10px; margin-bottom : 30px; margin-top : 10px; border: 1px solid black;" /></kbd> |
| 60 | +- _Workspaces_: Swell allows you to save workspaces for easier testing of multiple requests. |
| 61 | +- _Import/Export Workspaces_: Swell allows you to import and export workspaces, making it easy to share collections with your team. |
| 62 | +- _Preview_: You can now view a rendered preview of certain API responses (HTML) |
| 63 | + <kbd><img src="./ReadMeGifs/Gifs/AdditionalFeatures.gif" |
| 64 | + style="float: left; margin-right: 10px; margin-bottom : 30px; margin-top : 10px; border: 1px solid black;" /></kbd> |
| 65 | +- _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. |
| 66 | + <kbd><img src="./ReadMeGifs/Gifs/CollectionTest.gif" |
| 67 | + style="float: left; margin-right: 10px; margin-bottom : 30px; margin-top : 10px; border: 1px solid black;" /></kbd> |
| 68 | +- _Schedule Tests_: You can also automate sending requests to occur on a periodic basis. |
| 69 | + <kbd><img src="./ReadMeGifs/Gifs/ScheduleTest.gif" |
| 70 | + style="float: left; margin-right: 10px; margin-bottom : 30px; margin-top : 10px; border: 1px solid black;" /></kbd> |
59 | 71 |
|
60 | 72 | ## Built With
|
61 |
| -* Electron |
62 |
| -* React |
63 |
| -* Redux |
64 |
| -* Apollo Client |
65 |
| -* Websockets |
66 |
| -* IndexedDB |
67 |
| -* Chart.js |
68 | 73 |
|
| 74 | +- Electron |
| 75 | +- React |
| 76 | +- Redux |
| 77 | +- Apollo Client |
| 78 | +- Websockets |
| 79 | +- gRPC-js |
| 80 | +- VM2 |
| 81 | +- Chart.js |
| 82 | +- Bulma |
| 83 | +- IndexedDB |
| 84 | +- Chai |
| 85 | +- Mocha |
69 | 86 |
|
70 | 87 | ## Authors
|
71 | 88 |
|
72 |
| -* **Grace Kim** - [gracekiim](https://github.com/gracekiim) |
73 |
| -* **Alex Sanhueza** - [alexsanhueza](https://github.com/alexsanhueza) |
74 |
| -* **Wyatt Bell** - [wcbell51](https://github.com/wcbell51) |
75 |
| -* **John Madrigal** - [johnmadrigal](https://github.com/johnmadrigal) |
76 |
| -* **Michael Miller** - [mjmiguel](https://github.com/mjmiguel) |
77 |
| -* **Hideaki Aomori** - [h15200](https://github.com/h15200) |
78 |
| -* **Matt Gin** - [chinsonhoag](https://github.com/chunsonhoag) |
79 |
| -* **Nick Healy** - [nickhealy](http://github.com/nickhealy) |
80 |
| -* **Grace Spletzer** - [gspletzer](https://github.com/gspletzer) |
81 |
| -* **Stephanie Wood** - [stephwood](https://github.com/stephwood) |
82 |
| -* **Anthony Terruso** - [discrete projects](https://github.com/discrete-projects) |
83 |
| -* **Brandon Marrero** - [brandon6190](https://github.com/brandon6190) |
84 |
| -* **Jason Ou** - [jasonou1994](https://github.com/jasonou1994) |
85 |
| -* **Kyle Combs** - [texpatnyc](https://github.com/texpatnyc) |
86 |
| -* **Kwadwo Asamoah** - [addoasa](https://github.com/addoasa) |
87 |
| -* **Abby Chao** - [abbychao](https://github.com/abbychao) |
88 |
| -* **Amanda Flink** - [aflinky](https://github.com/aflinky) |
89 |
| -* **Kajol Thapa** - [kajolthapa](https://github.com/kajolthapa) |
90 |
| -* **Billy Tran** - [btctrl](https://github.com/btctrl) |
91 |
| -* **Paul Rhee** - [prheee](https://github.com/prheee) |
92 |
| -* **Sam Parsons** - [sam-parsons](https://github.com/sam-parsons) |
93 |
| -* **Nancy Dao** - [nancyddao](https://github.com/nancyddao) |
94 |
| -* **Evan Grobar** - [egrobar](https://github.com/egrobar) |
95 |
| -* **Dan Stein** - [danst3in](https://github.com/danst3in) |
96 |
| -* **Amruth Uppaluri** - [amuuth](https://github.com/amuuth) |
97 |
| -* **Yoon Choi** - [cyoonique](https://github.com/cyoonique) |
98 |
| -* **Nathaniel Adams** - [nathanielBadams](https://github.com/nathanielBadams) |
99 |
| -* **Robin Yoong** - [robinyoong](https://github.com/robinyoong) |
100 |
| -* **Gary Slootskiy** - [garyslootskiy](https://github.com/garyslootskiy) |
101 |
| -* **Sam Haar** - [samhaar](https://github.com/samhaar) |
102 |
| - |
| 89 | +- **Grace Kim** - [gracekiim](https://github.com/gracekiim) |
| 90 | +- **Alex Sanhueza** - [alexsanhueza](https://github.com/alexsanhueza) |
| 91 | +- **Wyatt Bell** - [wcbell51](https://github.com/wcbell51) |
| 92 | +- **John Madrigal** - [johnmadrigal](https://github.com/johnmadrigal) |
| 93 | +- **Michael Miller** - [mjmiguel](https://github.com/mjmiguel) |
| 94 | +- **Hideaki Aomori** - [h15200](https://github.com/h15200) |
| 95 | +- **Matt Gin** - [chinsonhoag](https://github.com/chunsonhoag) |
| 96 | +- **Nick Healy** - [nickhealy](http://github.com/nickhealy) |
| 97 | +- **Grace Spletzer** - [gspletzer](https://github.com/gspletzer) |
| 98 | +- **Stephanie Wood** - [stephwood](https://github.com/stephwood) |
| 99 | +- **Anthony Terruso** - [discrete projects](https://github.com/discrete-projects) |
| 100 | +- **Brandon Marrero** - [brandon6190](https://github.com/brandon6190) |
| 101 | +- **Jason Ou** - [jasonou1994](https://github.com/jasonou1994) |
| 102 | +- **Kyle Combs** - [texpatnyc](https://github.com/texpatnyc) |
| 103 | +- **Kwadwo Asamoah** - [addoasa](https://github.com/addoasa) |
| 104 | +- **Abby Chao** - [abbychao](https://github.com/abbychao) |
| 105 | +- **Amanda Flink** - [aflinky](https://github.com/aflinky) |
| 106 | +- **Kajol Thapa** - [kajolthapa](https://github.com/kajolthapa) |
| 107 | +- **Billy Tran** - [btctrl](https://github.com/btctrl) |
| 108 | +- **Paul Rhee** - [prheee](https://github.com/prheee) |
| 109 | +- **Sam Parsons** - [sam-parsons](https://github.com/sam-parsons) |
| 110 | +- **Nancy Dao** - [nancyddao](https://github.com/nancyddao) |
| 111 | +- **Evan Grobar** - [egrobar](https://github.com/egrobar) |
| 112 | +- **Dan Stein** - [danst3in](https://github.com/danst3in) |
| 113 | +- **Amruth Uppaluri** - [amuuth](https://github.com/amuuth) |
| 114 | +- **Yoon Choi** - [cyoonique](https://github.com/cyoonique) |
| 115 | +- **Nathaniel Adams** - [nathanielBadams](https://github.com/nathanielBadams) |
| 116 | +- **Robin Yoong** - [robinyoong](https://github.com/robinyoong) |
| 117 | +- **Gary Slootskiy** - [garyslootskiy](https://github.com/garyslootskiy) |
| 118 | +- **Sam Haar** - [samhaar](https://github.com/samhaar) |
| 119 | +- **Edward Cho** - [edwardcho1231](https://github.com/edwardcho1231) |
| 120 | +- **Miguel Gonzalez** - [MigGonzalez](https://github.com/MigGonzalez) |
| 121 | +- **Jason Liggayu** - [jasonligg](https://github.com/jasonligg) |
| 122 | +- **Warren Tait** - [whtait](https://github.com/whtait) |
103 | 123 |
|
104 | 124 | ## License
|
105 | 125 |
|
|
0 commit comments