Node.js — Why You Should Add “node” in Your Travis Config

Travis CI is a sophisticated continuous integration and deployment service. It integrates with GitHub and runs tests on events like commits or pull requests.

Node.js Series Overview

  1. String Replace All Appearances
  2. Remove All Whitespace From a String in JavaScript
  3. Generate a Random ID or String in Node.js or JavaScript
  4. Remove Extra Spaces From a String in JavaScript or Node.js
  5. Remove Numbers From a String in JavaScript or Node.js
  6. Get the Part Before a Character in a String in JavaScript or Node.js
  7. Get the Part After a Character in a String in JavaScript or Node.js
  8. How to Check if a Value is a String in JavaScript or Node.js
  9. Check If a String Includes All Strings in JavaScript/Node.js/TypeScript
  10. Check if a Value is a String in JavaScript and Node.js
  11. Limit and Truncate a String to a Given Length in JavaScript and Node.js
  12. Split a String into a List of Characters in JavaScript and Node.js
  13. How to Generage a UUID in Node.js
  14. Reverse a String in JavaScript or Node.js
  15. Split a String into a List of Lines in JavaScript or Node.js
  16. Split a String into a List of Words in JavaScript or Node.js
  17. Detect if a String is in camelCase Format in Javascript or Node.js
  18. Check If a String Is in Lowercase in JavaScript or Node.js
  19. Check If a String is in Uppercase in JavaScript or Node.js
  20. Get the Part After First Occurrence in a String in JavaScript or Node.js
  21. Get the Part Before First Occurrence in a String in JavaScript or Node.js
  22. Get the Part Before Last Occurrence in a String in JavaScript or Node.js
  23. Get the Part After Last Occurrence in a String in JavaScript or Node.js
  24. How to Count Words in a File
  25. How to Shuffle the Characters of a String in JavaScript or Node.js
  26. Append Characters or Words to a String in JavaScript or Node.js
  27. Check if a String is Empty in JavaScript or Node.js
  28. Ensure a String Ends with a Given Character in JavaScript or Node.js
  29. Left-Trim Characters Off a String in JavaScript or Node.js
  30. Right-Trim Characters Off a String in JavaScript or Node.js
  31. Lowercase the First Character of a String in JavaScript or Node.js
  32. Uppercase the First Character of a String in JavaScript or Node.js
  33. Prepend Characters or Words to a String in JavaScript or Node.js
  34. Check if a String is a Number
  35. Convert a String to Buffer
  36. Prevent Line Breaks in String Template Literals

At this point, we published two hapi plugins. Testing both plugins is an essential part of our development flow to know they are mature and solid.

We run all tests for both plugins on Travis CI. Our .travis.yml file looks like this:

language: node_js

node_js:  
  - 9
  - 8
  - node   # <-- add this to your .travis.yml for Node.js projects

The language defines the required environment to integrate your project on Travis CI. Before the test execution, Travis prepares the test setup by installing Node.js with NPM and NVM following the defined versions.

hapi-dev-errors testing overview on Travis CI

The configuration above tells Travis to run three integrations with different Node.js versions:

Why Adding “node”?

In short: To fail early for new Node.js releases.

At the time of writing this tutorial, the latest Node.js version is 9.x. That means Travis runs tests with the same environment for the configured versions 9 and node. Both run Node.js v9.

In some months, there will be a Node.js v10 release. At that point, the node config points to version 10 instead of 9.

While updating a project you’ll see at an early stage whether it's compatible with the new Node.js major release.

There’s no additional configuration required to test against the next Node.js release. It’s an early heads up for required maintenance.

Eventually you should add the related Node.js version represented by node to your .travis.yml. For an early heads up, it’s a great way to recognize failing tests.

Should You Worry About the Testing Overhead?

As mentioned above, most of the time you’re running tests against the same versions when using a dedicated version number (like 9) and node. This will test your project twice against the same environment.

Well, for us it’s worth testing a repository against the same Node.js twice for most of the time, because testing is cheap.

Be proactive in testing rather than running behind compatibility and needing manual work to test against the latest stable release.

Summary

Testing Node.js projects on Travis CI is convenient and the GitHub integration is great. To always test against the latest Node.js stable release, you should add node to the list of Node.js versions.

Are you testing your Node.js projects with node in your Travis config as well? Share your thoughts in the comments below or send a tweet: @futurestud_io.


Mentioned Resources

Explore the Library

Find interesting tutorials and solutions for your problems.