Skip to content

Commit ed852fb

Browse files
authored
Merge pull request #296 from oslabs-beta/master
Merge Swell v0.8.0 into master
2 parents 08c07eb + 13f20e1 commit ed852fb

File tree

81 files changed

+3064
-1238
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+3064
-1238
lines changed

.eslintrc.js

Lines changed: 2 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,3 @@
1-
// module.exports = {
2-
// "extends" : "airbnb",
3-
// "parser" : "babel-eslint",
4-
// "plugins" : [
5-
// "react",
6-
// "jsx-a11y",
7-
// "import"
8-
// ],
9-
// "rules": {
10-
// "react/jsx-filename-extension": 0,
11-
// "no-use-before-define": 0,
12-
// "no-console": 0,
13-
// "func-names": 0,
14-
// "no-undef": 0,
15-
// "no-unused-vars": 0,
16-
// "strict": 0,
17-
// "dot-notation": 0,
18-
// "import/extensions": 0,
19-
// "no-useless-constructor": 0,
20-
// "react/prefer-stateless-function": 0,
21-
// "react/prop-types": 0,
22-
// "react/destructuring-assignment": 0,
23-
// "react/no-array-index-key": 0,
24-
// "react/no-did-update-set-state": 0,
25-
// "no-restricted-syntax": 0,
26-
// "react/forbid-prop-types": 0,
27-
// "react/no-access-state-in-setstate": 0,
28-
// "react/jsx-no-duplicate-props": 0,
29-
// "no-param-reassign": 0,
30-
// "no-unused-expressions": 0,
31-
// "import/no-unresolved": 0,
32-
// "react/no-unused-state": 0,
33-
// "no-shadow": 0,
34-
// "no-return-assign": 0,
35-
// "class-methods-use-this": 0,
36-
// "brace-style": [2, "stroustrup"],
37-
// "react/sort-comp": [2, {
38-
// order: [
39-
// "lifecycle",
40-
// "everything-else",
41-
// "rendering",
42-
// ]
43-
// }]
44-
// }
45-
// };
46-
471
module.exports = {
482
env: {
493
es6: true,
@@ -55,33 +9,23 @@ module.exports = {
559
"prettier",
5610
"prettier/@typescript-eslint",
5711
"prettier/react",
58-
// "plugin:@typescript-eslint/eslint-recommended",
59-
// "plugin:@typescript-eslint/recommended",
6012
],
6113
globals: {
6214
Atomics: "readonly",
6315
SharedArrayBuffer: "readonly",
6416
},
6517
parser: "babel-eslint",
66-
// parser: "@typescript-eslint/parser",
18+
6719
parserOptions: {
6820
ecmaVersion: 2020,
6921
ecmaFeatures: {
7022
jsx: true,
7123
classes: true,
7224
},
7325
},
74-
plugins: [
75-
// "@typescript-eslint",
76-
"react",
77-
"jsx-a11y",
78-
"import",
79-
"jest",
80-
"react-hooks",
81-
],
26+
plugins: ["react", "jsx-a11y", "import", "jest", "react-hooks"],
8227
rules: {
8328
"arrow-body-style": 0,
84-
camelcase: 0,
8529
"class-methods-use-this": 0,
8630
"consistent-return": 0,
8731
"comma-dangle": 0,
@@ -107,7 +51,6 @@ module.exports = {
10751
"no-underscore-dangle": 0,
10852
"no-unused-expressions": 0,
10953
"no-return-assign": 0,
110-
quotes: 0,
11154
"prefer-const": 1,
11255
"prefer-destructuring": 0,
11356
"prefer-template": 0,
@@ -131,14 +74,4 @@ module.exports = {
13174
"spaced-comment": 0,
13275
strict: 0,
13376
},
134-
// setting: {
135-
// "import/parsers": {
136-
// "@typescript-eslint/parser": [".ts", ".tsx"],
137-
// },
138-
// "import/resolver": {
139-
// typescript: {
140-
// alwaysTryTypes: true,
141-
// },
142-
// },
143-
// },
14477
};

.travis.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
language: node_js
22
node_js:
3-
- 10.16.2
3+
- 10.16.2
44
addons:
55
apt:
66
packages:
7-
- xvfb
7+
- xvfb
88
before_install:
9-
- export DISPLAY=':99.0'
10-
- Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
9+
- export DISPLAY=':99.0'
10+
- Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
1111
cache: npm
1212
env:
1313
global:
14-
secure: LsdBvNbrRfEqUcwF0XW6pLzvAVlC8MFvLj1PpaGX2wrcWuDwLbfPl/KDfZBKoj4/abtM71NcjCRK5zUpeMVVG3o4vIQMxxEw+4SGyxpeo39SdE7NX+WC7sVoVfBkI+bWcjieQL26pgzFDFXZ0hkfhzrealRUvMsjmD7kvkv+mvWbmoQZC4A3MR3McPyj7++1mO9pC/l1sDQlJHxk6nrOA0S3fTdt85arbt1ThAsbDR4WZqvfhQ5Sd95VYyIVI35iWyUxx0Cgy3qTZH183LIu+w3Hgm/mSF9jAS1bXjHlDjeaAS5b3MerduTQztA9E0+mAoN9L5L2XDOdhSX1i1GM83DMKXM5kTnmIjqLecNCTreD/PuoThAm/52F6mDQ+0KIJNNFBLzV4KIJLokV/Y4M0pdoSmVSEpnGFYivQcb7U1+oXB84fT4NnA5nqv/65k7Wv8L7G0VNtJ03z1v8jbENMj+CFN3FQLKG7FgEEEMnNy//YNwPaF1REOiLJ02t02sy3XJHFl6crt6dWtXRxlhUDlMYmPaUNqmFsX/18bsPbuKp/1VID8wodpb88zLgRHwp+CudiZm2LLAgMhFY9/aDOYeGCwreRtN/S+jlxMHCD/U86U/N2l4joqvERIYDvY7UQVNy9AeyCFdqrzwGkgcWjnFA+BPKdIi2TEP5CtOEr2g=
14+
- secure: fI10dGRbWPDSZB7CLFbzUqAz6YxYGgXeL2Vls9oESfu6TXtPJ+VQgBnmFqBS5JMeDGaZ1ua4Sx3YqjN3c3mnnA8160plSZ/ULEj7tK09MtW/NPHPzDcIk0wmNPbI2pcc031lcwQLfHhTsjgC1JJII3hZpYYSI0Gf5CbgDQwzRgS2qEAl9LqlQDxfZJUI9hW8GzLhWwDBC+fX5GiSDtu7cK49G0lqGcb78LqVzALsXeC11UuFIDP2neum1gSaYZgnE+83whb5Cf1agsgdeqLxholt0VbxtQS4lt4yyNB3DcM5amktK3vrV7wOAeOfUQ1vQ6vpOsbbbc9uJHLpDV667Pj+gw+N2Em1An5XvLggtGB76W2aXJaerdE42TkrN4JwolHdFPaMC5wuFd1juSfYIV9jlgkleY7kSR6jlBNamfP6VwKtMYjuJHE5FunNKFeGLt/3ygvJlRWCVc89TrFTS4vQL2157ZtOAOPlzvI+4vBAZzGtJkzIml/5/UTouZCbHh+ebEl/EPiqHDWQMNOWo//MMADBd/gQpbNbkdBPB8Z6wl03qmW1VYFROSGG5AkZC+o86aLCgaBFTD2a3ndLlOzzpUiLHtS92JnIu3iGzRZcz/sQkjBPY99C/OZoDaUmYOfmhFlL8VRF5AJ77PAaLDRRguLeZXtU/H1XPQ5Nmyo=

README.md

Lines changed: 89 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,105 +1,125 @@
11
<p align="center"><img src="./src/assets/img/horizontal-logo-lockup.png" style="margin-top: 10px; margin-bottom: -10px;"></p>
22

33
#
4+
45
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/open-source-labs/Swell/blob/master/LICENSE.txt)
56
[![Build Status](https://travis-ci.org/open-source-labs/Swell.svg?branch=master)](https://travis-ci.org/open-source-labs/Swell)
67
![GitHub package.json version](https://img.shields.io/github/package-json/v/open-source-labs/Swell?color=blue)
78
[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/getswell/getswell/issues)
89
[![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](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)
910

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.
1312

1413
## Getting Started
1514

16-
Visit www.getswell.io to download the latest release.
15+
Visit www.getswell.io to download the latest release.
1716

1817
Swell is currently available for OS X, Linux and Windows.
1918

2019
## Highlights
20+
2121
Swell is a one-stop shop for sending and monitoring your API requests
2222

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
2932

3033
## 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>
3434

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>
3838

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>
3942

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>
4346

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>
4450

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>
5354

5455
## 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>
5971

6072
## Built With
61-
* Electron
62-
* React
63-
* Redux
64-
* Apollo Client
65-
* Websockets
66-
* IndexedDB
67-
* Chart.js
6873

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
6986

7087
## Authors
7188

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)
103123

104124
## License
105125

16 MB
Loading

ReadMeGifs/Gifs/CollectionTest.gif

7.29 MB
Loading

ReadMeGifs/Gifs/GRPCResponses.gif

7.14 MB
Loading

ReadMeGifs/Gifs/GraphQL.gif

7.37 MB
Loading

ReadMeGifs/Gifs/ScheduleTest.gif

12.3 MB
Loading
14.3 MB
Loading

ReadMeGifs/Gifs/WS.gif

4.86 MB
Loading

ReadMeGifs/Gifs/WebSockets.gif

-823 KB
Binary file not shown.

__tests__/composerTests.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ import ProtocolSelect from "../src/client/components/composer/NewRequest/Protoco
66
configure({ adapter: new Adapter() });
77

88
describe("GraphQL Composer", () => {
9-
let state;
10-
state = {
9+
const state = {
1110
currentTab: "First Tab",
1211
reqResArray: [],
1312
history: [],

grpc_mockData/client.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ const PROTO_PATH = path.resolve(__dirname, "./protos/hw2.proto");
99
const pd = protoLoader.loadSync(PROTO_PATH);
1010
const loaded = grpc.loadPackageDefinition(pd);
1111
// store package from proto file
12-
const hello_proto = loaded.helloworld;
12+
const helloProto = loaded.helloworld;
1313

1414
function main() {
1515
// start client and create credentials
16-
const client = new hello_proto.Greeter(
16+
const client = new helloProto.Greeter(
1717
"localhost:50051",
1818
grpc.credentials.createInsecure()
1919
);

0 commit comments

Comments
 (0)