:radio: Jambox :radio:
Record & Playback requests.
Install
yarn add -D jambox
Usage
jam
Prepend jam
to whatever command you are using to run next
for example
{
"scripts": {
"dev": "jam next dev"
}
}
Or without changing an existing command
$(yarn bin jam) yarn dev
Browser
Each command auto starts a proxy server.
For example
yarn jam http://my-site-url.com
or create a re-usable script if you don't want to type this out every time
{
"scripts": {
"view": "jam http://my-site-url.com"
}
}
jam-server [sub-command] [--port]
Launches a jambox server, you shoulnd't have to start one manually. These are
launched by the jam
command if one isn't already running.
See sub-commands below.
ping
yarn jam-server ping
Attempt to ping a currently running jambox server
shutdown
yarn jam-server shutdown
Attempt to shutdown a currently running jambox server
tail
yarn jam-server tail
Tail the current logfile
Config (in-progress)
Currently jambox.config.js
is the default config path.
Changing the config file resets the jambox server in order to use the changed
options. Any cache values not persisted to file(s) are abanadoned when a jam server
is reset.
Here is a kitchen sink example of a config that:
- blocks any non mocked request
- proxies any
http://my-site-url.com
request to localhost - in addition to HTTP requests also proxies Weboscket requests
- ignores some requests entirely
- caches specific paths and persists them to disk with
write: 'auto'
- auto responds with static codes/messages to things like images and logs
module.exports = {
blockNetworkRequests: true,
forward: {
'http://my-site-url.com': {
target: 'http://localhost:3000',
paths: [
'**',
'!**/graphql',
'!**/log',
],
websocket: true,
cors: true,
},
},
stub: {
'**/*.png': 204,
'**/*.jpg': { status: 200, file: 'placeholder.jpg', preferNetwork: true },
'**/*.ico': 204,
'**/log': { status: 200, statusMessage: 'stub log' },
},
cache: {
write: 'auto',
stage: ['**/graphql'],
ignore: ['**/log'],
},
};