Lazy::Check
This gem allows you to lazily test a website.
Installation
Add this line to your application's Gemfile:
gem 'lazy-check'
require 'lazy/check'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install lazy-check
Usage
For a simple test (without a recipe)
If you only have XML-like code to test, you can use the Lazy::Checker#check
method.
gem 'lazy-check'
require 'lazy/check'
code = "<root><div class="contains">some text</div></root>"
check = {tag: 'div.contains', text: "some text"}
Lazy::Checker.check(code, check)
# => Output:
# -------------------------------------
# Success 1 Failures 0 Duration ...
You can also obtain the results in method return (this is a Lazy::Checker::Reporter
).
Lazy::Checker.check(code, check, **{return_result: true})
# => Reporter
Note that in this case, nothing is written in the console.
For a test with a recipe
A "recipe" is a YAML
file that defines the url of a web page, and the checks to be performed on it. See below.
require "lazy/check"
checker = Lazy::Checker.new("path/to/recipe.yaml")
checker.check
# => Produces the result
If the recipe is located where the terminal is, simply do:
require "lazy/check"
Lazy::Checker.new.check
The recipe (recipe.yaml
) defines the checks to be performed.
---
name: "Name for this recipe"
base: https://www.my.domain.net
tests:
- name: "My first test"
url: "" # so the base
checks:
- name: "Existence of DIV#content with text"
tag: 'div#content'
empty: false
- name: "Existence of SPAN#range without text"
tag: 'span#range'
empty: true
- name: "A redirection"
url: "redirection.html"
redirect_to: "https://new.url.net"
- name: "A wrong page"
url: "page_unfound.html"
response: 404
Check Properties
The above "checks" can define the following properties:
tag: [String] The selector
count: [Integer] Expected number of elements
empty: [Bool] If true, must be empty, if false, must be non-empty
direct_child: [Bool] If true, must be a direct child
text: [String] The text that must be contained
contains: [String|Array] What the page should contain
min_length: [Integer] Minimum content length (text only)
max_length: [Integer] Maximum content length (text only)
Examples
Simply check that a page responds correctly:
# recipe.yaml
---
name: "Page exists"
base: 'https://mywebsite.net'
tests:
- name: "The index.html page exists and responds correctly"
url: 'index.html'
response: 200
Check that a page contains the basic elements.
# recipe.yaml
---
name: "Simple check on the existence of basic elements"
base: 'https://mywebsite.net'
tests:
- name: "The index.html page contains the basic elements"
url: 'index.html'
checks:
- tag: 'header'
- tag: 'section#body'
- tag: 'footer'
Tests
Run the tests:
rake test
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake test
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.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/PhilippePerret/lazy-check.