Replay is a new debugger for recording and replaying software. Debugging with Replay should be as simple as viewing print statements and more powerful than pausing with breakpoints. Of course, debugging should be collaborative as well!
Feel free to file any issues you see while recording or replaying.
Note: We use Yarn 3 for package management - make sure you have Yarn installed globally first:
npm i -g yarn
Getting started is as simple as:
git clone email@example.com:RecordReplay/devtools.git cd devtools nvm use yarn install cp .env.sample .env yarn dev
Once you see
Compiled succesfully in your terminal, open your browser and go to this link.
You just successfully opened your first Replay recording! That recording uses your locally running copy of Replay DevTools to debug our test recording.
Next, download and install the Replay browser. The browser will allow you to start recording your own replays.
Everybody's welcome to join us on Discord. We can help with getting started with the project, finding issues to work on and chatting about the future of DevTools.
Contributing to the project
We encourage everybody to contribute to the project! If you're just getting started, we recommend looking through and grabbing any of these issues. Feel free to ping any of the maintainers on Discord if you have any questions!
To run the end-to-end tests make sure that devtools is running locally on port 8080 and run:
node test/run.js [--pattern pat]
To run the mock tests:
node test/mock/run.js [--pattern pat]
To run the unit tests:
Note that any options passed after
-- will be passed on to the test runner (jest). So, if you wanted jest to watch the project for changes and run tests when files were saved you could run:
yarn test --watch
Running tests in VS Code
Install the Mocha Test Explorer for the e2e and mock tests and Jest Test Explorer for the unit tests.
You can set environment variables to be used in e2e or mock tests by adding them to the
mochaExplorer.env setting in
Running tests against local builds of the browser
If you want to run the tests against a local build of the browser, you'll need to invoke the tests like so:
RECORD_REPLAY_PATH=~/devel/gecko-dev/rr-opt/dist/Replay.app RECORD_REPLAY_BUILD_PATH=~/devel/gecko-dev node test/run.js
Replace the paths with the appropriate paths to and within
gecko-dev as appropriate in your environment.
Running tests against local builds of the backend
If you want to run the tests against a local build of the backend, you'll need to invoke the tests like so:
RECORD_REPLAY_SERVER=ws://localhost:8000 RECORD_REPLAY_DRIVER=~/devel/backend/out/macOS-recordreplay.so node test/run.js
Replace the paths with the appropriate paths within the
backend repo as appropriate in your environment.
Installing the trunk launcher
Linting your changes
In most cases you can simply run
trunk check which will autodetect the changes you have made and lint them.
If you would like to only autoformat your changes, you can run
More information on using trunk can be found here.
Generating GraphQL types for Typescript
See /src/graphql/README.md for details.
Every commit to the main branch is automatically deployed to production.