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.
Replay's DevTools is a React app built on top of the Replay protocol. Make sure to install nvm.
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 git@github.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.
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:
yarn test
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
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 .vscode/settings.json
.
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.
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.
This project uses trunk to lint and format its code. Trunk is installed as a dev dependency so you can invoke it as npx trunk
.
To learn more about trunk
, check out the documentation.
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 trunk fmt
.
More information on using trunk can be found here.
See /src/graphql/README.md for details.
Every commit to the main branch is automatically deployed to production.