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
- String Replace All Appearances
- Remove All Whitespace From a String in JavaScript
- Generate a Random String in Node.js or JavaScript
- Remove Extra Spaces From a String in JavaScript or Node.js
- Remove Numbers From a String in JavaScript or Node.js
- Get the Part Before a Character in a String in JavaScript or Node.js
- Get the Part After a Character in a String in JavaScript or Node.js
- How to Check if a Value is a String in JavaScript or Node.js
- Check If a String Includes All Strings in JavaScript/Node.js/TypeScript
- Check if a Value is a String in JavaScript and Node.js
- Limit and Truncate a String to a Given Length in JavaScript and Node.js
- How to Run an Asynchronous Function in Array.map()
- How to Reset and Empty an Array
- for…of vs. for…in Loops
- Clone/Copy an Array in JavaScript and Node.js
- Get an Array With Unique Values (Delete Duplicates)
- Sort an Array of Integers in JavaScript and Node.js
- Sort a Boolean Array in JavaScript, TypeScript, or Node.js
- Check If an Array Contains a Given Value in JavaScript or Node.js
- Add an Item to the Beginning of an Array in JavaScript or Node.js
- Append an Item at the End of an Array in JavaScript or Node.js
- How to Exit and Stop a for Loop in JavaScript and Node.js (Coming soon)
- Split an Array Into Smaller Array Chunks in JavaScript and Node.js
- How to Get an Index in a for…of Loop in JavaScript and Node.js (Coming soon)
- How to Exit, Stop, or Break an Array#forEach Loop in JavaScript or Node.js (Coming soon)
- Callback and Promise Support in your Node.js Modules
- Run Async Functions/Promises in Sequence
- Run Async Functions/Promises in Parallel
- Run Async Functions in Batches
- How to Fix “Promise resolver undefined is not a function” in Node.js or JavaScript
- Detect if Value Is a Promise in Node.js and JavaScript
- Get a File’s Created Date
- Get a File’s Last Modified/Updated Date
- How to Create an Empty File
- Check If a Path or File Exists
- How to Rename a File
- Check If a Path Is a Directory (Coming soon)
- Check If a Path Is a File (Coming soon)
- Retrieve the Path to the User’s Home Directory (Coming soon)
- How to Touch a File (Coming soon)
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.
The configuration above tells Travis to run three integrations with different Node.js versions:
8
9
node
, represents the latest stable Node.js release
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
- hapi-dev-errors plugin on GitHub
- hapi-geo-locate plugin on GitHub
- Travis CI homepage
- Node.js testing docs on Travis CI