[Architecture] Integrating Testem and Istanbul...

Tony Atkins tony at raisingthefloor.org
Wed May 11 10:11:04 UTC 2016


Hi, All:

As you may remember from other discussions, I have been using Testem
<https://github.com/testem/testem> more often these days to test
client-side components.  It seemed less than ideal to talk about setting
coverage standards for PRs without having some idea of how to measure test
coverage for projects that use Testem.

Thankfully, Testem provides a sample project that demonstrates integration
<https://github.com/testem/testem/tree/master/examples/coverage_istanbul>.
This morning I adapted their example to add test coverage reporting to
gpii-binder.  The work is visible here in this branch:

https://github.com/the-t-in-rtf/gpii-binder/tree/GPII-1579

To summarize, their approach is to:

   1. Use Istanbul to instrument the source code under test before running
   the tests.
   2. Set up a server in testem.js that serves up the instrumented code and
   listens for and saves coverage reports.
   3. Configure the client-side Testem to send reports to the server after
   each test completes.
   4. Examine the coverage report when all tests complete.

This approach requires small changes to your test HTML, namely using the
instrumented version of the code you're testing, and loading code that
handles step 3 (my example is here
<https://github.com/the-t-in-rtf/gpii-binder/blob/GPII-1579/tests/static/js/testem/coverage.js>).
  It also can only possibly work if you are using a testem.js file, which
means you'd need to port over any settings you might have in your existing
testem.json or testem.yml file.

With all this extra wiring, a coverage report is generated whenever npm
test is run, without requiring either Testem or Istanbul to be installed
globally.

Anyway, I share in case anyone else is heading even partway down the same
road.  If your projects use Testem and you'd like to discuss generalizing
anything discussed here, please get in touch.

Thanks,


Tony
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gpii.net/pipermail/architecture/attachments/20160511/5c20fbf4/attachment.html>


More information about the Architecture mailing list