Fixturing directly within the browser makes sense for single page applications:
Install via npm:
npm install truman --save
let config =// An array of query string parameters to omit from XHR comparison when matching fixtures.omittedQueryParams: 'sid' 'token'// An array request body JSON parameters to omit from XHR comparison when matching fixtures.omittedDataParams: 'requestid'// Domain synonyms let us treat requests to one domain as matches for requests to another. For example, you// may record your fixtures against a local copy of an API but want to make sure those fixtures are replayed// when requests to the staging copy of the API are made during your test run. Domain synonyms do just that.// In the example below we're saying '', '' are synonymous// to ''.domainSynonyms:'': '' ''database:// URL for the remote CouchDB database.url: ''// Username for the remote CouchDB database.user: 'mycouchuser'// Password for the remove CouchDB database.password: 'mycouchpassword'// Optional - see// Pass in a higher number if you're using with Safari, and a// modal dialog asking for more space is interrupting your tests.// This will trigger the dialog as truman is initialized so you can// accept it in a predictable place.size: 5
The truman module exposes the following methods:
initialize does exactly what is says on the tin, it initializes the truman module with some provided config. It also restores either the recording or replaying state of the Truman module if it has previously been set to record or replay (on another tab or prior to a page refresh). See the config options section for more details on what config truman accepts.
initialize returns a promise that resolves once initialization is complete.
record puts the Truman module into record mode, meaning all XHR requests and responses will be recorded to the named fixture collection in the order that they occur. The size of the local database is limited by the capabilities of your browser, as we defer to PouchDB for browser storage.
record returns a promise that resolves once the fixtures have begun recording. This promise is useful if you want to do something like only start your application once the module is recording.
replay puts the Truman module into replay mode, meaning as each XHR request is made, the module will look for a matching fixture to replay from the fixture collection, instead of making the real request.
replay returns a promise that resolves once the fixtures have begun replaying. This promise is useful if you want to do something like only start your application once the module is replaying.
push takes a recorded fixture collection and pushes it to your remote database for persistence.
push returns a promise that resolves once the fixture collection has been successfully pushed.
pull loads a recorded fixture collection from your remote database for into the browser.
pull returns a promise that resolves once the fixtures have been successfully loaded from the remote database.
restore simply stops any recording or replaying of fixtures currently in progress, and restores the XHR object to its original state.
clear simply removes all local fixtures belonging to the provided fixture collection name.
clear returns a promise that resolves once the specified fixture collection has been cleared.
currentStatus returns the current status of the Truman module, either
npm install # Install dependenciesnpm start # Run dev server with sandbox page and live reloadingnpm test # Run the testsnpm run lint # Check code style# Run the unit tests in multiple browsers, on Sauce Labs (replace xxx with your credentials)USE_CLOUD=t SAUCE_USERNAME=xxx SAUCE_PASSWORD=xxx npm run test:karma
See CONTRIBUTING.md for more information on making contributions.