Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yuki24/capybara-shadowdom
Shadow DOM support for Capybara
https://github.com/yuki24/capybara-shadowdom
capybara custom-elements minitest rails rspec ruby ruby-on-rails shadow-dom testing web-components
Last synced: 17 days ago
JSON representation
Shadow DOM support for Capybara
- Host: GitHub
- URL: https://github.com/yuki24/capybara-shadowdom
- Owner: yuki24
- License: mit
- Created: 2021-10-25T01:42:37.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-07-05T13:13:00.000Z (over 1 year ago)
- Last Synced: 2024-10-14T14:42:09.464Z (25 days ago)
- Topics: capybara, custom-elements, minitest, rails, rspec, ruby, ruby-on-rails, shadow-dom, testing, web-components
- Language: Ruby
- Homepage:
- Size: 28.3 KB
- Stars: 14
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-web-components - capybara-shadowdom - Ruby gem that adds basic support for the Shadow DOM to Capybara. (Meta Frameworks / Testing Solutions)
README
# Shadow DOM support for Capybara
The `capybara-shadowdom` gem adds basic support for the [Shadow DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM) to Capybara.
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'capybara-shadowdom'
```And then execute:
$ bundle install
Or install it yourself as:
$ gem install capybara-shadowdom
## Usage
Require it in `spec_helper.rb`:
```rb
require 'capybara/shadowdom'
```Given the custom element:
```html
Hello shadow world!
```
You will be able to do:
```ruby
within custom_element.shadow_root do
# Displays "Hello shadow world!":
puts page.text# Asserts the text within the element:
assert_text "Hello shadow world!"# Input elements within the shadow DOM will also be accessible:
fill_in "#user_name", with: "[email protected]"
end
```Works also for `RSpec`:
```ruby
expect(page).to have_text("Hello shadow world!")
```## Browser Support
* **Supported Selenium versions**: 3.0 and above
* **Supported Ruby versions**: 2.7 and above### Supported drivers:
| Driver | Browser | Support | Description |
| :--- | :---- | :---: | :--- |
| Selenium | IE11 | N/A | Shadow DOM is not supported. |
| Selenium | Edge | ✅ | |
| Selenium | Firefox | ❌ | Fails with `Cyclic object value`. |
| Selenium | Chrome | ✅ | |
| Selenium | Safari | ✅ | |
| [`cuprite` ](https://github.com/rubycdp/cuprite) | Embedded Chromium | ✅ | |
| [`apparition`](https://github.com/twalpole/apparition) | Embedded Chromium | ❌ | `shadowRoot` node can not be retrieved. |## 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 the created tag, 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/yuki24/capybara-shadowdom. 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/yuki24/capybara-shadowdom/blob/master/CODE_OF_CONDUCT.md).## 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 Capybara::Shadowdom project's codebases, issue trackers, chat rooms and mailing lists
is expected to follow the
[code of conduct](https://github.com/yuki24/capybara-shadowdom/blob/master/CODE_OF_CONDUCT.md).