Coder Social home page Coder Social logo

rails-dom-testing's Introduction

Rails::Dom::Testing

This gem is responsible for comparing HTML doms and asserting that DOM elements are present in Rails applications. Doms are compared via assert_dom_equal and assert_dom_not_equal. Elements are asserted via assert_dom, assert_dom_encoded, assert_dom_email and a subset of the dom can be selected with css_select. The gem is developed for Rails 4.2 and above, and will not work on previous versions.

Nokogiri::CSS::SyntaxError exceptions when upgrading to Rails 4.2:

Nokogiri is slightly stricter about the format of CSS selectors than the previous implementation.

Check the 4.2 release notes section on assert_select for help.

Installation

Add this line to your application's Gemfile:

gem 'rails-dom-testing'

And then execute:

$ bundle

Or install it yourself as:

$ gem install rails-dom-testing

Usage

Dom Assertions

assert_dom_equal '<h1>Lingua França</h1>', '<h1>Lingua França</h1>'

assert_dom_not_equal '<h1>Portuguese</h1>', '<h1>Danish</h1>'

Selector Assertions

# implicitly selects from the document_root_element
css_select '.hello' # => Nokogiri::XML::NodeSet of elements with hello class

# select from a supplied node. assert_dom asserts elements exist.
assert_dom document_root_element.at('.hello'), '.goodbye'

# elements in CDATA encoded sections can also be selected
assert_dom_encoded '#out-of-your-element'

# assert elements within an html email exists
assert_dom_email '#you-got-mail'

The documentation in selector_assertions.rb goes into a lot more detail of how selector assertions can be used.

Read more

Under the hood the doms are parsed with Nokogiri, and you'll generally be working with these two classes:

Read more about Nokogiri:

Contributing to Rails::Dom::Testing

Rails::Dom::Testing is work of many contributors. You're encouraged to submit pull requests, propose features and discuss issues.

See CONTRIBUTING.

License

Rails::Dom::Testing is released under the MIT License.

rails-dom-testing's People

Contributors

aar0nr avatar amatsuda avatar arthurnn avatar benlovell avatar chancancode avatar davidcornu avatar dependabot[bot] avatar dhh avatar dnrce avatar flavorjones avatar ghiculescu avatar issyl0 avatar jbampton avatar jcoleman avatar jduff avatar junaruga avatar kaspth avatar maclover7 avatar matthewd avatar nicolasleger avatar petergoldstein avatar rafaelfranca avatar seanpdoyle avatar seuros avatar speckins avatar tgxworld avatar y-yagi avatar yahonda avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.