You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
e2e-istanbul/README.md

74 lines
1.9 KiB

# Example of End To End Testing Using Selenium Webdriver and Jasmine Tests With Istanbul Code Coverage
## Goal
- Inside of `src` we have a very basic website with some really simple JS
- The JS creates two click handlers:
- when an `a` tag is clicked, append a div with some text in it to the body
- when a `div` tag is clicked, add some text to the body
- We want to set up tests that will:
- Test that the page title is `Test Title`
- Test that clicking on a link will indeed create a div with the text `added through jquery`
- Lastly, we want to create a coverage report that will show how much of our JS code was tested
- **NOTE:** We intentionally omit testing the JS code regarding clicking on a `div` tag, so that we can see in our coverage that it was not run
## Installation
### Global Installation
Firstly, install `grunt-cli` globally:
```
npm install -g grunt-cli
```
Next install `jasmine-node` test runner globally:
```
npm install -g jasmine-node
```
Now we'll download a browser driver that Selenium will use to control Firefox:
1. Download firefox webdriver: https://github.com/mozilla/geckodriver/releases/tag/v0.16.1
1. Put the driver somewhere in your PATH
- e.g. `/usr/local/bin`
### Local Installation
1. clone this repo somewhere on your computer
1. `cd` into the newly created directory for the locally cloned version of this repo
1. Install all necessary node packages:
```
npm install
```
## Running
Website code from `src/` into the `prod/` directory and instrument it:
```
grunt dev
```
Start a local static file web server in a different terminal window:
```
grunt server
```
Back in the previous terminal window, run the tests:
```
jasmine-node specs/test-spec.js
```
The tests have been run, and the coverage has been generated. Create human readble report:
```
grunt report
```
This will create an html report and put it in `coverage/lcov-report/index.html`