Often our applications talk to external APIs. Sometimes our apps talk to
external APIs that suck are unreliable. Often, we don't test the failure
cases well enough (or at all).
- What does it look like when a request to X service flakes out?
- Where could we add recovery options?
We can answer these questions with Service Workers and not have to spend time
setting up a proxy on our local machines to MITM all of our traffic. This addon
adds a service worker via ember-service-worker
to intercept specified requests
and will randomly return error responses in the 5xx
range.
Find out how well your application tolerates failure!
-
ember install ember-service-worker
- (If you're not already using it) -
ember install ember-service-worker-request-chaos
-
Define some patterns to intercept in your
ember-cli-build.js
/* eslint-env node */ 'use strict'; const EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); module.exports = function(defaults) { let app = new EmberApp(defaults, { 'esw-request-chaos': { // RegExp patterns specifying which URLs to wreck chaos. patterns: [ 'https://scaling.is.difficult/api/(.+)', ] } }); // [...] };
git clone <repository-url>
this repositorycd ember-service-worker-request-chaos
yarn install
yarn test
(Runsember try:each
to test your addon against multiple Ember versions)ember test
ember test --server
- Configure to only include in development environment