Wallaby.js video course
First you need to install wallaby.js extension for Visual Studio, if you haven’t done it yet.
For this tutorial I will use this sample from our public GitHub repository. You can clone it to try locally:
git clone https://github.com/wallabyjs/public
Once you have the source code locally, open the
If you have your tests and source code in different projects, then the recommended approach is to make your wallaby.js configuration file one of your Solution Items.
wallaby-jasmine-2.js configuration file in the Solution Explorer and select Start Wallaby.js from the context menu. Wallaby will start with selected configuration file.
To stop wallaby.js, you may use the Stop Wallaby.js context menu item.
The very first time you run it, wallaby.js may take a minute or two to install all the dependencies it needs, such as node.js and PhantomJs. It only does this once and then uses the saved dependencies. The dependencies are updated automatically when required.
Now let’s have some fun.
Once you have started wallaby.js, in the bottom right-hand corner of the screen you’ll see the wallaby status indicator. Its job is pretty simple: when it displays a spinner, your tests are running; when red, you have some failing tests; when green, all of your tests are passing.
Let’s open the sample calculator Jasmine spec.
When wallaby.js is running, you can see the code coverage in the source files that it tracks (specified in the configuration file). As you can see, there are various colored squares displayed for each line of your source code.
Jump to any of the passing tests and break it, for example try changing the 2 plus 2 expectation result to 5 in the
should add numbers test. Right after the change wallaby.js automatically runs your tests and displays the result in Visual Studio, right where you need to see it.
Also, try editing some
console.log arguments or just
console.log any object you like.
The code coverage and inline messages are automatically updated, right as you type.
We also recommend reading about some more powerful ways to log things and measure code performance with wallaby.js.
Here is what coverage indicators mean:
- Gray square means that the source line is not covered by any of your tests.
- Green square means that the source line is covered by at least one of your tests.
- Yellow square means that the source line is only partially covered by some of your tests.
- Red square means that the source line is the source of an error or failed expectation, or is in the stack of an error.
- Pink square means that the source line is on the execution path of a failing test.
You may also inspect wallaby.js output in the Output tool window. In the tool window you may view output from the Failing Tests tab and Console.
The Failing Tests output source displays all tests that are currently failing along with the error stacks and registered console.log calls. Some bits of the displayed information are hyperlinks that you can use with your mouse (Ctrl + mouse click) or keyboard (F12) to navigate to different places, for example to the exact error line, or a failing test, or a place where something is logged to console.
The Console output source displays some additional information about test execution progress. The tab can also be useful for troubleshooting wallaby.js issues.
To help you write your code and tests more efficiently, wallaby.js provides a few smart actions available by clicking wallaby smart actions icon or pressing Alt + Shift + F10 on any line.
The actions include:
- Show line test(s) action: displays the line-related test data. This is the most frequently used action that allows you to quickly view and navigate to test and code errors, console messages related to some specific test or some source code line.
- Jump to failing test action: quickly navigate to the failing test from any “pink” context (the failing test execution path).
- Jump to error source action: quickly navigate to the source of the test error from any ‘pink’ context (failing test execution path).
- Show line uncovered regions: this action is useful for “yellow” lines to display what exactly is not covered in the line. Not covered expressions will be highlighted in red.
- Show file uncovered regions: similar to the previous action, this displays uncovered regions for the whole file. The red highlights for both actions can be removed by pressing Esc (or you can just start changing the file code and they will disappear).
- Run line test(s): the action is pretty simple (yet so wanted by so many) – it just runs a single test (if invoked from within the test) or all related tests (if invoked within some source code covered by the tests).
- Run file test(s): the action runs all tests within the test file it is invoked in, or all tests in all the test files that cover the source file that the action is invoked within.
- Run project tests: the action runs all tests in your project.
- Show last run screen shot: this action does just what it says. After every test run, wallaby.js captures a screenshot of the generated test runner page, so if you have some tests that are displaying anything, the action could be useful for you. A very powerful combo is using the action in conjunction with the Run scope test(s) – you run a specific test, then see the screenshot for the test. Please note that you may often have some “tear down” code that clears the DOM before or after each test; wallaby.js is smart enough to capture the screenshot before the tear down code.
All of the described actions can also be mapped to any keyboard shortcuts you prefer for extra productivity. You can do so in Tools - Options - Environment - Keyboard (search for wallaby in the keymap settings).
Fonts and colors
If some wallaby.js default colors don’t fit your theme, they are very easy to adjust.
Note that trial version of wallaby.js (the one without a valid license) will be displaying prompts and stopping after some time, so you will need to restart the tool or your editor. Please contact us if you would like to arrange a trial period for yourself or your team without activation prompts and restarts.