What makes a web application “modern” in 2019

  • ESLint/TSLint
    Using a linter will make sure coding conventions are respected, and enforced. Sterile arguments such as tabs vs spaces or how many spaces constitute a tab can be snipped by adopting an external style guide like AirBnb’s JavaScript Style Guide, Google’s JavaScript Style Guide and the many TSLint rules available. Enforce consistent formatting using Prettier. Prevent developers from pushing code that is not linting using Husky and lint-staged. Settle opinion wars and avoid the highest paid person’s opinion (HiPPO) by voting in a Slack channel if rules need to change.
  • Unit Tests with Jest
    Jest is my favorite test runner at the moment, because it plays well with Enzyme and React, comes with its own BDD style assertions, out of the box coverage, and opens the door to Snapshot testing. I again highly recommend using Git Hooks (with Husky) to enforce high code coverage and 100% passing unit tests before allowing code to be pushed.
  • Component Driven Development and Component testing with Storybook
    Storybook is a powerful and easy to learn tool for component driven development. Instead of building screens, developers create components, and assemble them to create screens. Storybook allows for Structural Testing which allows to create and maintain a suite of unit tests that will actually fail should the layout of the web application change. This minimizes the amount of visual defects and allows developers to check for them prior to opening a pull request, and before the code is deployed. Storybook also enables Interaction Testing, Automated Visual Testing and Manual Testing. Quality engineers love this. Product owners can play with components without pestering the development team for a demo and provide UX/UI feedback at their leisure, so valuable demo time can be used to discuss feature enhancements rather than UI glitches.
  • Integration and End2End tests with Cypress
    The days of hard to write and flaky tests with Selenium are over. Set up and write tests in minutes using Cypress, and run them in a matter of minutes both locally prior to pushing code and on a CI/CD environment. Stop repeating the same handful of steps while testing a new feature, and just have Cypress do it faster and more accurately than any manual testing could ever be.
  • Experiment
    It is estimated that 80% of new features have a neutral or negative impact on users. Use Feature Toggles and A/B Testing to assess the impact of new features on your website. Do not be afraid to kill a new feature that took a long time and a lot of effort to build if it has a negative impact. What most would consider a failure should be treated as a successful market study, draw some lessons from this experience and move on.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store