# So Many Devices! 🕺 This gem provides a list of Capybara Selenium configurations that you can use. Probably useful to run your system tests on different devices. ## Installation Here is how you can use it in RSpec but you can, of course, use it wherever you want: Add this line to your application's Gemfile, in group tests: ```ruby group :test do gem 'so_many_devices' end ``` And then execute: $ bundle install Or install it yourself as: $ gem install so_many_devices ## Usage In your `rails_helper.rb` you can configure your preferred device for tests: ```ruby config.before(:each, type: :system, js: true) do driven_by :iphone_6_7_8 end ``` You can always use the headless version of each device by appending `_headless` to the device name. ```ruby config.before(:each, type: :system, js: true) do driven_by :iphone_6_7_8_headless end ``` We use it to run our system tests on so many devices! Here is our standard configuration: ```ruby config.before(:each, type: :system, js: true) do driven_by ENV['SELENIUM_DRIVER'].to_sym end ``` and then we can run ```sh SELENIUM_DRIVER=iphone_6_7_8_headless bundle exec rspec --pattern "**/system/**/*_spec.rb" SELENIUM_DRIVER=selenium_chrome_headless bundle exec rspec --pattern "**/system/**/*_spec.rb" ``` of course, your tests need to run on so many devices! ## Available devices Check [the YML file containing all the devices](./lib/so_many_devices/so_many_devices.yml). So many! ## 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](https://rubygems.org). ## Contributing Bug reports and pull requests are welcome on GitHub at https://github.com/renuo/so_many_devices. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/renuo/so_many_devices/blob/master/CODE_OF_CONDUCT.md). Do you think our devices are not that many? 😡 Please contribute by adding more devices to the list, so that they can be even more...many...😕...and the next person coming cannot say "they are not that many..." ## License The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). ## Code of Conduct Everyone interacting in the SoManyDevices project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/renuo/so_many_devices/blob/master/CODE_OF_CONDUCT.md). ## Special Thanks [![Renuo AG](/logo/renuo.png)](https://renuo.ch)