Skip to content

feat: WebRTC integration and front-end updates #355

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 54 commits into from
Feb 13, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
ae600d7
testing
Jan 24, 2025
e4dbac8
positioning of add answer
Jan 24, 2025
c27457f
Work in progress
Jan 24, 2025
145d1c7
testing add answer button functinality
Jan 27, 2025
a627110
just a safeguard
Jan 28, 2025
557bcee
test
Feb 2, 2025
b968f18
created deployment-test branch, looking at yml file and where to add …
rchldn Feb 3, 2025
d2d6f20
added developer names, changed token name on github to reflect what's…
rchldn Feb 3, 2025
1758cf7
testing webrtc messaging between two peers
Feb 3, 2025
917ff37
fixing github pull issues
Feb 3, 2025
de251d6
Modified datachannel.onmessage event
Feb 4, 2025
ac43ed4
fixed double-answer and answer in offer text box bug
rchldn Feb 6, 2025
2073521
update
Iloveeverything Feb 6, 2025
e533d1a
videostreamtested
Iloveeverything Feb 7, 2025
5ab39eb
togglerefreshbuttons
Iloveeverything Feb 11, 2025
930734d
toggle conditional rendering
Iloveeverything Feb 11, 2025
781580c
added reducer for reset, started building it into react component in …
rchldn Feb 11, 2025
0a2a10c
further work on refresh functionality
rchldn Feb 11, 2025
7b3b220
toggle functionality test
Iloveeverything Feb 11, 2025
b6ced88
functioning refresh button, useEffect and useRef additions, used code…
rchldn Feb 11, 2025
d227104
audio toggle beta
Iloveeverything Feb 11, 2025
0afe133
audio channel beta
Iloveeverything Feb 12, 2025
8fa272d
get offer fix
Iloveeverything Feb 12, 2025
a5d5df5
added guide tour feature
tingEng Feb 12, 2025
55418b7
video toggle update
Iloveeverything Feb 12, 2025
ae67d7f
guide tour phase 1 complete
tingEng Feb 13, 2025
57c0383
Merge branch 'deployment-test' into dev
rchldn Feb 13, 2025
2a27916
merging deployment-test branch
rchldn Feb 13, 2025
78bc5c4
changed yaml branch back to master from dev
rchldn Feb 13, 2025
16eff44
changed node version in yaml
rchldn Feb 13, 2025
0daf589
trying to update versions
rchldn Feb 13, 2025
af29f17
added step to codeql-analysis yml
rchldn Feb 13, 2025
38647fe
more changes to the yml files, codeql specifically
rchldn Feb 13, 2025
3417405
explicitly naming node versions instead of dynamic updating; deleted …
rchldn Feb 13, 2025
69ba844
further changes
rchldn Feb 13, 2025
e70eadc
added set NODE_OPTIONS for windows tests
rchldn Feb 13, 2025
8fcef8a
more windows updates
rchldn Feb 13, 2025
7322ce8
more windows changes
rchldn Feb 13, 2025
80d9889
changed node_options to node_env
rchldn Feb 13, 2025
4719c48
separated out patches step
rchldn Feb 13, 2025
dcb7bb2
Audio Channel working beta and toggle fix
Iloveeverything Feb 13, 2025
1925e62
push prep to dev branch
tingEng Feb 13, 2025
4d4145d
add all changes
tingEng Feb 13, 2025
8d596dd
Merge branch 'dev' of https://github.com/oslabs-beta/Swell into dev
tingEng Feb 13, 2025
7d2683a
WebSocket Temporary Disable for Deployment
Iloveeverything Feb 13, 2025
33bad00
dependencies
Iloveeverything Feb 13, 2025
3b6f9a6
audio channel and toggle merged
Iloveeverything Feb 13, 2025
0e53ec8
ws comments
rchldn Feb 13, 2025
d8fa415
more ws hints
rchldn Feb 13, 2025
2578fb2
typescript error
rchldn Feb 13, 2025
c173504
updated ux of buttons in webrtc
Feb 13, 2025
d3705c5
Merge branch 'dev' of https://github.com/oslabs-beta/Swell into dev
Feb 13, 2025
548fad8
readme updates
rchldn Feb 13, 2025
08dd9d6
added changelog
rchldn Feb 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 20 additions & 7 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,23 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Use Node.js 18
uses: actions/setup-node@v3
with:
node-version: 18.20.6 # Or your preferred 18.x version

- name: Print Node.js version
run: node -v

- name: Install dependencies
run: npm ci # Or npm install if you prefer

- name: Build project
run: |
make boostrap
make release
npm run build

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
Expand All @@ -43,19 +60,15 @@ jobs:

# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
# - name: Autobuild
# uses: github/codeql-action/autobuild@v2

# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl

# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language

#- run: |
# make bootstrap
# make release
# uses a compiled language (we moved the "below" lines up to 42 and edited them)

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
18 changes: 9 additions & 9 deletions .github/workflows/createPackages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,16 @@ jobs:
tests:
strategy:
matrix:
node-version: [16]
node-version: [18.20.6]
os: [macos-latest, ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
- name: Use Node.js 18.20.6 # this used to be dynamically updated, but kept pulling an old version number. you'll have to manually update these throughout this file to be safe.
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
node-version: 18.20.6
- name: Install dependencies
run: npm i && npm ci
- name: Run unit tests
Expand All @@ -40,15 +40,15 @@ jobs:
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: '16.15'
node-version: '18.20.6'
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
with:
tag_name: v1.16.0 # Replace with your desired tag or version number
release_name: Release v1.16.0 # Replace with your desired release name
tag_name: v1.19.0 # Replace with your desired tag or version number
release_name: Release v1.19.0 # Replace with your desired release name
draft: true
body: |
<Temporary Body for Github Release>
Expand All @@ -67,7 +67,7 @@ jobs:
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: '16.15'
node-version: '18.20.6'

- name: Install Dependencies
run: npm install
Expand All @@ -89,7 +89,7 @@ jobs:
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: '16.15' # Use the specific version of Node that your project requires
node-version: '18.20.6' # Use the specific version of Node that your project requires

- name: Install Dependencies
run: npm install
Expand Down Expand Up @@ -118,7 +118,7 @@ jobs:
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: '16.15' # Use the specific version of Node that your project requires
node-version: '18.20.6' # Use the specific version of Node that your project requires

- name: Install Dependencies
run: npm install
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ jobs:
tests:
strategy:
matrix:
node-version: [16]
node-version: [18.20.6]
os: [macos-latest, ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
Expand All @@ -18,7 +18,11 @@ jobs:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm i && npm ci
- name: Apply patches
env:
NODE_ENV: --no-node-snapshot
run: npx patch-package
- name: Run unit tests
uses: coactions/setup-xvfb@v1
with:
run: npm run test-jest
run: npm run test-jest
6 changes: 6 additions & 0 deletions Dockerfile-dev
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
From node:18.20
RUN npm install -g webpack
Workdir /app
Copy package*.json /app
Run npm install
Expose 8080
43 changes: 38 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Swell is a one-stop shop for sending and monitoring your API requests:

- Send and monitor streams over HTTP/2 (including SSEs) and WebSockets
- Create GraphQL queries, introspections, mutations, and subscriptions
- Test WebRTC applications over video, audio and text channels
- Stress testing HTTP/2 and GraphQL endpoints
- Create your own HTTP/2 mock server
- Store workspaces of multiple requests for later use
Expand Down Expand Up @@ -67,6 +68,34 @@ We highly encourage you to check out the `DEV-README.md` in the `docs` folder. W

See [tRPC docs](https://trpc.io/docs/) for more information on sending tRPC requests or setting up a tRPC server.


- _WebRTC_: Swell makes it easy to test WebRTC applications for video, audio and text channels. Currently Swell supports manual entry of SDPs.

### Walkthrough for setting up a text channel connection using the app's generated offer and answer:

- Step 1
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).
- Step 2
Recipient: Copy the offer you received from the caller and paste it into the offer box (the top text box)
- Step 3
Recipient: Click “Get answer” button, generate an answer and copy it to your computer's clipboard. Send it to caller (email recommended)
- Step 4
Caller: Copy answer to your computer's clipboard and paste it into the answer box (bottom text box).
- Step 5
Caller: Click the “add answer” button. Now the connection is open!
- Step 6
Caller: Click “add to workspace” button.
- Step 7
Recipient: Click “add to workspace” button.
- Step 8
Caller: Click "Send" button on the left-hand side of the app.
- Step 9
Recipient: Click "Send" button on the left-hand side of the app.
- Step 10
Send and receive text messages via the response panel at the bottom of the app.
<img src="./ReadMeGifs/Gifs/webrtc.gif" style="display: block; margin: 10px auto 30px; " />


## Additional features

- _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
Expand All @@ -91,16 +120,14 @@ We highly encourage you to check out the `DEV-README.md` in the `docs` folder. W

<img src="./ReadMeGifs/Gifs/FileUploadAndDarkMode.gif"
style="display: block; margin: 10px auto 30px; border: 1px solid black;" />

## Experimental Features

- _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.
<img src="./ReadMeGifs/Gifs/MockServer.gif" style="display: block; margin: 10px auto 30px;" />

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

- _WebRTC_: Swell makes it easy to test WebRTC applications for both video and text channels. Currently Swell supports manual entry of SDPs.
<img src="./ReadMeGifs/Gifs/webrtc.gif" style="display: block; margin: 10px auto 30px; " />

- _OpenAPI_: Swell supports the enumeration and execution of REST and RPC API requests as defined in a user-provided OpenAPI document.
<img src="./ReadMeGifs/Gifs/openapi.gif" style="display: block; margin: 10px auto 30px;" />

Expand All @@ -110,7 +137,7 @@ We highly encourage you to check out the `DEV-README.md` in the `docs` folder. W
- React
- React Router
- Material UI
- Redux
- Redux Toolkit
- Apollo Client
- Websockets
- gRPC-js
Expand All @@ -124,6 +151,12 @@ We highly encourage you to check out the `DEV-README.md` in the `docs` folder. W
- Playwright

## Authors

- **Isaac Mbambo** - [IM236](https://github.com/IM236)
- **Kiki Hunt** - [Iloveeverything](https://github.com/Iloveeverything)
- **Ting Lee** - [tingEng](https://github.com/tingEng)
- **Rachel Dean** - [rchldn](https://github.com/rchldn)
- **Kadeem Reid** - [Kadeem929](https://github.com/Kadeem929)
- **Karol Krzywon** - [kkrzywon](https://github.com/kkrzywon)
- **Howard Sun** - [howardCodeGit](https://github.com/howardCodeGit)
- **Carter Sarkela** - [CarterSarkela](https://github.com/CarterSarkela)
Expand Down Expand Up @@ -215,4 +248,4 @@ We highly encourage you to check out the `DEV-README.md` in the `docs` folder. W

## License

This project is licensed under the MIT License
This project is licensed under the MIT License
4 changes: 2 additions & 2 deletions build/config.gypi
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Do not edit. File was generated by node-gyp's "configure" step
{
"target_defaults": {
"cflags": [],
"cflags": ['-std=c++20'],
"default_configuration": "Release",
"defines": [],
"include_dirs": [],
Expand Down Expand Up @@ -52,7 +52,7 @@
"node_use_dtrace": "true",
"node_use_etw": "false",
"node_use_node_code_cache": "true",
"node_use_node_snapshot": "true",
"node_use_node_snapshot": "false",
"node_use_openssl": "true",
"node_use_v8_platform": "true",
"node_with_ltcg": "false",
Expand Down
Loading