GenericTest

This gem provides an easy way to run generic tests for a website/api

Test site is at https://samuel-garratt.gitlab.io/generic_test

Quick start

Run test gem through docker against this website with (Note it is an example that has some failures)

docker run -t registry.gitlab.com/samuel-garratt/generic_test generic_test page samuel-garratt.gitlab.io/generic_test

To get a log of your tests share a volume with the container.

docker run -v "$PWD":/test -t registry.gitlab.com/samuel-garratt/generic_test generic_test page samuel-garratt.gitlab.io/generic_test

Please share this volume from an empty folder. Running from within another gem might cause an issue

To test test links on all subpages of a site add --all-subpages to the command.

To test without performing spellchecking of common spelling add --no-spellcheck

E.g

docker run -t registry.gitlab.com/samuel-garratt/generic_test generic_test page samuel-garratt.gitlab.io/generic_test --all-subpages --no-spellcheck

You can see all options by running

docker run -t registry.gitlab.com/samuel-garratt/generic_test generic_test help page

Add to gitlab CI for your website

Add the following YAML to test against a website

example_test:
  stage: test
  image: registry.gitlab.com/samuel-garratt/generic_test
  script:
    - generic_test page YOUR_WEBSITE_URL
  variables:
    GIT_STRATEGY: none # Make more efficient and remove any dependency conflicts
  artifacts:
    paths:
      - logs/*.xml
      - logs/*.html # HTML reports
    reports:
      junit: logs/*.xml
    expire_in: 1 week
    when: always

Installation

Add this line to your application's Gemfile:

gem 'generic_test'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install generic_test

Usage

Running locally.

Use the executable generic_test, add the page command and put a website to check:

generic_test page URL_OF_WEBSITE

E.g.,

generic_test page samuel-garratt.gitlab.io/generic_test

Run with docker

docker run -t registry.gitlab.com/samuel-garratt/generic_test generic_test page URL_OF_WEBSITE

docker run -t registry.gitlab.com/samuel-garratt/generic_test generic_test page samuel-garratt.gitlab.io/generic_test

Check version

docker run -t registry.gitlab.com/samuel-garratt/generic_test generic_test version

Through login page

Environment variables store Login URL, username and password

  • GT_LOGIN_URL: Url to login at
  • GT_USERNAME: Username to use
  • GT_PASSWORD: Password to use

At the moment Generic test tries to be smart to identify the username, password and submit elements. In the future, option will be given to provide your own identifiers if this does not work.

These variables can be set in docker run

docker run -e "GT_LOGIN_URL=samuel-garratt.gitlab.io/generic_test/login_page" -e "GT_USERNAME=Tester" -e "GT_PASSWORD=Pass" -v "$PWD":/test -t registry.gitlab.com/samuel-garratt/generic_test generic_test page samuel-garratt.gitlab.io/generic_test

These variables can also be set in a .generic_test.page.yml (you will need a volume to have this available to docker container)

E.g., file to login as above:

login:
  url: 'samuel-garratt.gitlab.io/generic_test/login_page'
  username: 'Tester'
  password: 'Pass'

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

The pipeline running on master will deploy a new version of the docker container with the latest version released to rubygems.org. Therefore a rake release is required before any changes will be reflected in the newly built docker container.

Contributing

Bug reports and pull requests are welcome on GitLab at https://gitlab.com/samuel-garratt/generic_test. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the GenericTest project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.