OpenProject is the leading open source project management software.
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.
 
 
 
 
 
 
openproject/doc/RUNNING_TESTS.md

4.6 KiB

Testing OpenProject

Cucumber

The cucumber features can be run using rake. You can run the following rake tasks using the command bundle exec rake <task>.

  • cucumber Run core features

  • cucumber:plugins Run plugin features

  • cucumber:all Run core and plugin features

  • cucumber:custom[features]: Run single features or folders of features

    Example: cucumber:custom[features/issues/issue.feature]

    • When providing multiple features, the task name and arguments must be enclosed in quotation marks.

      Example: bundle exec rake "cucumber:custom[features/issues features/projects]"

cucumber:plugins and cucumber:all accept an optional parameter which allows specifying custom options to cucumber. This can be used for executing scenarios by name, e.g. "cucumber:all[-n 'Adding an issue link']". Like with spaces in cucumber:custom arguments, task name and arguments have to be enclosed in quotation marks.

Shortcuts

Here are two bash functions which allow using shorter commands for running cucumber features:

# Run OpenProject cucumber features (like arguments to the cucumber command)
# Example: cuke features/issues/issue.feature
cuke() { RAILS_ENV=test bundle exec rake "cucumber:custom[$*]"; }

# Run OpenProject cucumber scenarios by name
# Example: cuken Adding an issue link
cuken() { RAILS_ENV=test bundle exec rake "cucumber:all[-n '$*']"; }

Setting RAILS_ENV=test allows the cucumber rake tasks to run the features directly in the same process, so this reduces the time until the features are running a bit (5-10 seconds) due to the Rails environment only being loaded once.

JavaScript and Firebug

To activate selenium as test driver to test javascript on web pages, you can add @javascript above the scenario like the following example shows:

@javascript
Scenario: Testing something with Javascript
  When I ...

You can always start a debugger using the step "And I start debugging". If you need Firebug and Firepath while debugging a scenario, just replace @javascript with @firebug.

Running tests with Mocha

To run JavaScript tests install phantomjs and mocha-phantomjs, e.g. via npm. You can then run

mocha-phantomjs mocha/index.html

Alternatively open mocha/index.html in a browser.

RSpec

You can run the specs with the following commands:

  • bundle exec rake spec Run all core specs with a random seed
  • SPEC_OPTS="--seed 12935" bundle exec rake spec Run the core specs with the seed 12935

TODO: how to run plugins specs.

Test Unit

You can run a single test with the following command:

  • rake test:units TEST=path/to/test.rb TESTOPTS="--name=test_name_of_test_to_run"

You let test unit display test names instead of anonymous dots with the following command:

  • rake test:units TESTOPTS="--verbose=verbose"

For the fancy programmer

  • We are testing on travis-ci. Look there for your pull requests.
    https://travis-ci.org/opf/openproject
  • If you have enabled the terminal bell, add ; echo -e "\a" to the end of your test command. The terminal bell will then tell you when your tests finished.

Manual acceptance tests

  • Sometimes you want to test things manually. Always remember: If you test something more than once, write an automated test for it.
  • Assuming you do not have a version of Internet Explorer already installed on your computer, you can grab a VM with preinstalled IE's directly from Microsoft: http://www.modern.ie/en-us/virtualization-tools#downloads