You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+38-5Lines changed: 38 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,6 +21,7 @@ Swell is a one-stop shop for sending and monitoring your API requests:
21
21
22
22
- Send and monitor streams over HTTP/2 (including SSEs) and WebSockets
23
23
- Create GraphQL queries, introspections, mutations, and subscriptions
24
+
- Test WebRTC applications over video, audio and text channels
24
25
- Stress testing HTTP/2 and GraphQL endpoints
25
26
- Create your own HTTP/2 mock server
26
27
- Store workspaces of multiple requests for later use
@@ -67,6 +68,34 @@ We highly encourage you to check out the `DEV-README.md` in the `docs` folder. W
67
68
68
69
See [tRPC docs](https://trpc.io/docs/) for more information on sending tRPC requests or setting up a tRPC server.
69
70
71
+
72
+
-_WebRTC_: Swell makes it easy to test WebRTC applications for video, audio and text channels. Currently Swell supports manual entry of SDPs.
73
+
74
+
### Walkthrough for setting up a text channel connection using the app's generated offer and answer:
75
+
76
+
- Step 1
77
+
Caller: Generate an offer by clicking “Get Offer.” Copy the offer to your computer's clipboard and send it to recipient (we recommend sending by email).
78
+
- Step 2
79
+
Recipient: Copy the offer you received from the caller and paste it into the offer box (the top text box)
80
+
- Step 3
81
+
Recipient: Click “Get answer” button, generate an answer and copy it to your computer's clipboard. Send it to caller (email recommended)
82
+
- Step 4
83
+
Caller: Copy answer to your computer's clipboard and paste it into the answer box (bottom text box).
84
+
- Step 5
85
+
Caller: Click the “add answer” button. Now the connection is open!
86
+
- Step 6
87
+
Caller: Click “add to workspace” button.
88
+
- Step 7
89
+
Recipient: Click “add to workspace” button.
90
+
- Step 8
91
+
Caller: Click "Send" button on the left-hand side of the app.
92
+
- Step 9
93
+
Recipient: Click "Send" button on the left-hand side of the app.
94
+
- Step 10
95
+
Send and receive text messages via the response panel at the bottom of the app.
-_Stress testing for HTTP/2 and GraphQL_: Test your server backend with Swell's stress testing feature to ensure your server can manage expected and unexpected loads accordingly
@@ -91,16 +120,14 @@ We highly encourage you to check out the `DEV-README.md` in the `docs` folder. W
-_Mock Server_: Swell allows you to create your own HTTP/2 mock server to facilitate front-end development without depending on a fully built backend server.
-_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.
100
130
101
-
-_WebRTC_: Swell makes it easy to test WebRTC applications for both video and text channels. Currently Swell supports manual entry of SDPs.
Copy file name to clipboardExpand all lines: docs/DEV-README.md
+41-9Lines changed: 41 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -43,10 +43,23 @@ Thank you for your consideration and let's work together on making Swell one of
43
43
## How to download and test the application locally?
44
44
45
45
1. Fork and/or clone the repository into your local machine
46
-
2. In your terminal:
46
+
2. Update dependencies
47
+
- <u>`isolated-vm` combined fix</u>: There is a problem with `vm2` (a sandbox); it has vulnerabilities and was discontinued. An alternative is `isolated-vm` which uses the chromium browser's v8 engine. The prior version of `isolated-vm` on Swell's package.json was only compatible with Node 16. In order to upgrade to the latest version we ran the commands as
48
+
- We are using Node 18 instead of the most recent version of Node because of C++ compatibility with the Xcode command line.
49
+
-`node-gyp` is a tool for compiling native add-on modules for Node.js. It is often used when installing certain npm packages that require native code compilation.
50
+
51
+
1. If you have them, delete node modules, package-lock.json and dist folders
52
+
2.`cd` into User directory;
53
+
3.`curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash` (installing nvm package so you can manage versions, and making it so you can run `nvm install` command inside of the terminal)
54
+
4. While still in user folder: `source ~/.bashrc # or ~/.zshrc or ~/.bash_profile`
55
+
5.`vm install 18`
56
+
6.`nvm use 18`
57
+
7.`npm install -g node-gyp`
58
+
59
+
3. In your terminal:
47
60
-`npm install`, then
48
61
-`npm run dev`
49
-
3. Wait for the electron application to start up (it may take a bit)
62
+
4. Wait for the electron application to start up (it may take a bit)
50
63
51
64
There is E2E testing available via `npm run test`. Note that not all tests in the E2E test suite work currently. Please refer to `./test/testSuite.js` and `./test/subSuites` for more details.
52
65
@@ -111,7 +124,7 @@ From a functionality standpoint:
111
124
- HTTP/2 stress testing with `GET` requests
112
125
- GraphQL stress testing with `Query`
113
126
- Mock server for HTTP/2 (`Express`)
114
-
- WebRTC video/audio and text channel testing
127
+
- WebRTC testing for text, video, and audio channel connections
115
128
- Ability to store historical requests and create/delete workspaces
116
129
- Frontend conversion to TypeScript
117
130
- From a codebase standpoint:
@@ -213,12 +226,34 @@ Currently, the HTTP/2 mock server has the ability to create a server that is acc
213
226
214
227
In a recent iteration, the WebRTC feature was changed from STUN Server testing to Client RTC Connection testing, allowing Swell to test if another client is able to create an RTC connection to transmit text and video data. Because the RTCPeerConnection has to be initiated before we generate the SDP, this connection is set up differently from the other networks. Other networks purely need the primitive strings as input, and the response is created on click of `Send` (in the workspace panel). For WebRTC, the connection object is created as an input, and when the user clicks `Send` then the data transmitted data is allowed to be displayed (although data is being transmitted through the connection even before `Send` is clicked). This means the WebRTC ReqRes can't really be saved in history or re-connected beyond the first connection.
215
228
216
-
Areas for improvement:
229
+
In the repo’s [excalidraw](https://excalidraw.com/#room=18f1f977e8cd6361eaa1,4vr1DznwcnD-uKM_X7ZhiA) are the following diagrams specific to WebRTC:
230
+
- WebRTC Connectivity Diagram outlining the steps in a WebRTC connection and getting to media flow
231
+
- Front-end Interface Components explaining each component
232
+
- Flow of React/Redux (reacts to events in client to update store)
233
+
- WebRTC Front-end Format Experiments
234
+
235
+
236
+
237
+
238
+
#### Areas for improvement:
217
239
218
-
- Currently, our WebRTC only works as the connection initiator. The next step would be the `Add Answer` button which allows Swell to be on the receiver end of the connection.
219
240
- Currently, our WebRTC end-to-end testing is read-only from the previous implementation. It would be a highly valuable addition to modify the old testing to test the current implementation of webRTC. Integration testing has been started but needs to be finished. Relevant files include
- Front-end/UI improvements – see the excalidraw’s WebRTC Front-end Format Experiments diagram for ideas
244
+
Examples:
245
+
- Buttons could be named more intuitively and placed in more obvious places for the user to figure out the workflow
246
+
- Currently, when testing a video connection, users have to scroll all the way down in the server entry form container to see if their own camera is working. A redesign could help this be more clear
247
+
- Ability to rename an individual workspace once added to the left pane (switching between testing four different ‘text’ channels would be easier if you could rename each channel)
248
+
- The React Joyride tour could use slight improvement - the last few buttons are in different containers/files and harder for the tour to reach intuitively
249
+
- Improve styling for Joyride tour to be consistent with Swell colors and fonts
250
+
- The current port is hardcoded - a group could modify this part of the code to test the application on ports other than the default to ensure proper functionality across different ports
251
+
- The websocket feature of WebRTC is currently incomplete and commented out (both frontend and backend) and could be implemented
252
+
- Currently our WebRTC testing feature is on par with or less robust than other WebRTC testing apps. A group could focus on making it more competitive by adding tracking of certain metrics (including jitter, packet loss, geographically-driven latency, differences across different browsers and devices, emulating losing a wifi connection and switching to mobile data, etc)
253
+
- The electron app currently has a large file size not due to the code itself but the use of Electron. We briefly explored transitioning the app to Tauri or Neutralino but held off further research after rescoping. Transitioning to a new cross-platform desktop application framework would have a tangible benefit (even our iteration group members had storage issues while working on project)
254
+
- A complete testing overhaul could be a great focus for a new group– many testing fixes were added in the process of developing new features but the quality and consistency of some of the testing may be questionable. Focusing just on testing could result in more purposeful and effective testing
255
+
256
+
222
257
223
258
---
224
259
@@ -367,7 +402,4 @@ Things to consider updating:
367
402
- Ensure the download links are pointing to the latest version
368
403
- Any videos/screenshots that have been updated
369
404
- Any new feature(s) you want to showcase
370
-
- Add your names, headshots, and relevant information in the `contributors` section
371
-
372
-
---
373
-
405
+
- Add your names, headshots, and relevant information in the `contributors` section
0 commit comments