Routing

The express server recognizes navigation to the root url and serves the React bundle. Navigation between various React components is handled by React Router.
In development, React Router is configured to use “hash” urls (e.g. http://localhost:3000/#/?_k=hpvxlt), and visits to unrecognized urls are handled properly (i.e. a visit to http://localhost:3000/#/robots/my_bot results in a redirect to the root url with a flash message saying “Couldn’t find robot #my_bot”).
In production, React Router is configured to use cleaner-looking urls, (e.g. https://react-robots.herokuapp.com/robots/new), but unfortunately visits to unrecognized urls result in 404 errors.

Reference: src/entry.js, react-related sections of app.js.

Flash messaging logic is handled by React components, not the Express server.

Testing

Integration testing React components required investigation into various browser testing frameworks. Perhaps the most stable is Selenium Webdriver, although it depends on Java to run a separate webdriver.