Contributing to the Cucumber Aruba Project

Introduction

We would love to get help from you as a user and a contributor.

As a User

As a Contributor

The rest of this document is a guide for those maintaining Aruba, and others who would like to submit patches.

Contributing to the Aruba project

It would be great if all people who want to contribute to the Aruba project— contributors and maintainers — follow the guidelines in this section. There are also “Getting started” sections both for contributors and maintainers.

Issues

About to create a new GitHub Issue? We appreciate that. But before you do, please learn our basic rules:

Pull Requests

Contributors

Please…

Maintainers

Development style guidelines

Getting started as a “Contributor”

Requirements

To get started with Aruba, you only need Bundler.

Install Aruba’s dependencies:

bundle install

Running tests

Run the following command to run the test suite.

# Run the whole test suite
bundle exec rake
# Run RSpec tests
bundle exec rake spec
# Run Cucumber features
bundle exec rake cucumber
# Run Cucumber features which are "WORK IN PROGRESS" and are allowed to fail
bundle exec rake cucumber:wip

If you have problems because our assumptions about your local setup are wrong, perhaps you can use this Docker workflow. This requires Docker to be installed on your local system.

# Build the docker container
docker build -t test-aruba .

# Open a bash shell inside the container with attached volume so changes to the
# code will be picked up automatically.
docker run -v $PWD:/aruba --rm -it test-aruba:latest bash

# Run the test suite
bundle exec rake

If you want to run the test suite against specific versions of Aruba’s dependencies, you can use appraisal:

bundle exec appraisal cucumber_6 bundle install
bundle exec appraisal cucumber_6 bundle exec rake

Installing your own gems used for development

A Gemfile.local file can be used, to have your own gems installed to support your normal development workflow.

Example Gemfile.local:

gem 'pry-byebug'
gem 'byebug'

Running a developer console

The interactive Aruba console starts an IRB console with Aruba’s API loaded:

bin/console

Linting

Aruba’s Rakefile provides the following linting tasks

bundle exec rake lint                         # Run all linters
bundle exec rake lint:coding_guidelines       # Lint our code with "rubocop"
bundle exec rake lint:licenses                # Check for relevant licenses in project

Building and installing your local Aruba version

You can use the following Rake tasks to build and install your work-in-progress locally:

# Build your copy
bundle exec rake build
# Build and install your copy
bundle exec rake install
# Build and install your copy without network access
bundle exec rake install:local

Getting started as a “Maintainer”

Release Process

Now release it:

# update dependencies
bundle update

# Run test suite
bundle exec rake

# Release gem
git commit -m "Version bump"
bundle exec rake release

Now send a PR to cucumber/website adding an article with details of the new release. Then merge it - an aruba maintainer should normally be allowed to merge PRs on cucumber/website. A copy of an old announcement can be used as basis for the new article.

Now, send an email with the link to the article to cukes@googlegroups.com.

Gaining Release Karma

To become a release manager, create a pull request adding your name to the list below, and include your Rubygems email address in the ticket. One of the existing Release managers will then add you.

Current release managers: * Aslak Hellesøy (@aslakhellesoy) * Matt Wynne (@mattwynne) * Matijs van Zuijlen (@mvz)

To grant release karma, issue the following command:

gem owner aruba --add <NEW OWNER RUBYGEMS EMAIL>