Every team, engineering or otherwise, eventually accrues a backlog of todos, and the HubSpot Frontend team is no different. Over the past few months, we've been organizing a list of things that could help improve the stability of the product. Last Wednesday night, we ordered pizza, fired up music and split up into small groups to finally crush those tasks. Here is what we ended up with:
Best Practices:
David Simpson reorganized our internal Style Guide documentation to help us scale it out, and added a new section called "Tone" to help us standardize how we implement copy within the app.
Adam Schwartz and Zack Bloom teamed up to create BestJS, a repository for frontend best practices at HubSpot. It's a searchable directory of standard libraries and resources in use at HubSpot.
Test Coverage:
Tim Finley wrote Selenium tests for the style guide docs to help us identify breaking changes in the style guide before they make it to production. It also uses the new jquery_chain library, written by Greg Sabo. More on that in a second.
Lincoln Bryant and I added several hundred lines of unit tests to our core app components. These tests will now abort builds when they fail, so users don't run into those problems.
Test Infrastructure:
The one and only Michael Mintz added automatic IE tests for Selenium. Now newly deployed apps will automatically run integration tests in the three major browsers.
Everyone hates flapping tests. Greg Sabo and Diane Yang added some configuration options to Selenium that will retry a test before notifying you of a failure. Greg also created jquery_chain, a Python helper that lets developers write Selenium tests in a jQuery-like syntax.
Speed and Performance:
Bryan Ash and Anthony Roldan released version 2 of HapiJS, a library we use to make authenticated API calls directly from the browser. This new version let's us directly hit our backend APIs in just two lines of code. Boom.
The new hotness, Breakfast, is now being served thanks in part to Ryan Berdeen and Matt Furtado! These types of apps are fully static and talk directly with our APIs. The newest version of the HubSpot dashboard is built with Breakfast, and more apps are making the switch.
Problems happen, and we need a way to quickly notify our customers of interruptions. Jess Scott and Marc Neuwirth wrote Fire Alarm, a Javascript library that let's anyone on our team show an alert message to a customer without the need to change code or redeploy the application.