/jelly-party-extension

Chrome extension to synchronize video sessions

Primary LanguageJavaScriptGNU General Public License v3.0GPL-3.0

Jelly-Party-Extension

This repo contains all code for the browser extension Jelly-Party. Jelly-Party syncs video playback between a group of peers.

Contribute using the staging server [easy]

npm install
npm run stage

This will compile the project and serve it under dist, which you can load unpacked into Chrome or Firefox. Furthermore, this spins up vue-remote-devtools for debugging purposes.

Note that you'll connect to the staging server (staging.jelly-party.com) instead of the live server (ws.jelly-party.com).

Contribute using your own server [advanced]

Please head to the Jelly-Party-Server repository and spin up a server instance. You must set up your custom domain and you'll need to tweak both Jelly-Party-Extension and Jelly-Party-Server.

Compile and minify for production

npm run build

Testing

As a browser extension, Jelly-Party is inherently more difficult to test than e.g. pure javascript libraries. For now, we have a semi-automatic setup using puppeteer coupled with a local Chrome installation.

Setup

Copy config.template.ts to config.ts.

cd jelly-party-extension
cp tests/config.template.ts tests/config.ts

The file will look as follows:

export const config = {
  chromePath: "/opt/google/chrome/google-chrome",
  ublockPath:
    "/home/user/.config/google-chrome/Profile 1/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.28.4_0",
  cookies: {
    netflix: [],
    disneyPlus: [],
  },
};

Edit chromePath (mandatory) & ublockPath (optional — required if you want Chrome to launch with uBlock Origin) and add any session cookies you have for netflix, disneyPlus and other providers. chromePath is required, because DRM-protected services (most of them use widevine) do not allow playback in Chromium browsers.

Run semi-automatic test

Make sure the provider is configured correctly in tests/src/index.ts. At the very least, your provider will require a magic link. If the provider requires a login, you'll also need to specify a setCookiesAtURL (navigated to once, to set the cookies) and a cookies parameter.