Add E2E test and set up for development environment
Added browser automated E2E tests which will run on Selenium. Currently I wrote the tests below and set up a development environment which will allow others to add more tests.
Added tests
- Login
- Logout
- Register
- Star project
- Unstar project
TODO List
-
Add initial tests -
Set up development environment with Grunt -
Create test runner -
Integrate tests with GitLab CI -
Add more tests
Screencasts
Login test
Logout test
Star Project test
Below you can read more about the tests.
E2E Tests
This folder contains browser automated End to End tests. We are using Nightwatch.JS as our E2E testing framework.
Installation
Nightwatch.js works with Node.js so you must have Node.js installed on your machine. Development environment works with Grunt so you need to Grunt installed.
cd gitlab/testsnpm install -g grunt grunt-clinpm install
npm install will download all required binaries like Selenium Standalone, ChromeDriver, PhantomJS driver etc.
Development
Development environment build on top of Grunt. There are a few basic Grunt tasks for transpiling CoffeeScript files and watching for changes. Before writing new tests you should run grunt in gitlab/tests directory. It will transpile CoffeeScript files to JavaScript and put them to output folder and start watching for changes.
Running Tests
We have a bash file named run to run tests easily without using Nightwatch test runner. It's a wrapper aroung Nightwatch's test runner. There is three options to run tests.
Run all tests in a folder
run user
This will run all tests in the lib/user folder.
Run a test suite
run user login
This will run only login suite in the lib/user folder.
Run a single test
run user login loginWithEmail
This will run only one test which is loginWithEmail test in lib/user/login file.
Running tests with different browsers
Right now tests are configured to run with PhantomJS but we can also run the tests with Chrome and Firefox. To do so, just change the test_settings.desiredCapabilities.browserName in nightwatch.json to the name of the driver you want. The options are phantomjs, chrome or firefox.


