Upgrading capybara 2 to 3
Breaking2.18.0 → 3.40.0Breaking1Platform1New24Changed7Fixed30
Fetching 74 releases from GitHub…9 / 74
BreakingUpgrade verdict
1 breaking change and a platform requirement change.
In plain terms
- References to non-w3c mode in drivers/tests.
- This version no longer works on Ruby 2.7. You need Ruby 3.0 or later.
Must act 2 items need code or config changes
Ruby requirement changed in 3.40.0: >= 1.9.3 → >= 3.0.0.
What you must change
Breaking1
References to non-w3c mode in drivers/tests.
Platform1
Drops support for Ruby 2.7; Ruby 3.0 or newer is now required.
API changes
Generated by DepDelta from published Ruby source. Not mixed with prose notes.
- removed:
const Capybara.Query - changed:
static method Capybara.add_selector(_) → static method Capybara.add_selector(_, **) - added:
class NodeWrapper - added:
constructor NodeWrapper(_) - added:
method NodeWrapper.to_capybara_node() - added:
method PauseDurationFix.encode() - added:
module CapybaraAtoms - added:
module PauseDurationFix - added:
module Puma - added:
static property TestApp.form_post_count: accessor
- removed:
class ConfigureDeprecator - removed:
constructor ConfigureDeprecator(_) - removed:
method Config.default_wait_time() - removed:
method Config.server() - removed:
method RSpecMatchers.have_button(_ = …, _ = …) - removed:
method RSpecMatchers.have_checked_field(_ = …, _ = …) - removed:
method RSpecMatchers.have_css(_, _ = …) - removed:
method RSpecMatchers.have_field(_ = …, _ = …) - removed:
method RSpecMatchers.have_link(_ = …, _ = …) - removed:
method RSpecMatchers.have_select(_ = …, _ = …) - removed:
method RSpecMatchers.have_table(_ = …, _ = …) - removed:
method RSpecMatchers.have_unchecked_field(_ = …, _ = …) - removed:
method RSpecMatchers.have_xpath(_, _ = …) - removed:
method RSpecMatchers.match_css(_, _ = …) - removed:
method RSpecMatchers.match_xpath(_, _ = …) - removed:
method Selector.css(*) - removed:
method Selector.custom_filters() - removed:
method Selector.default_visibility(_ = …) - removed:
method Selector.describe() - removed:
method Selector.description(_ = …) - removed:
method Selector.expression_filter(_, *) - removed:
method Selector.expression_filters() - removed:
method Selector.filter(_, *) - removed:
method Selector.filter_set(_, _ = …) - removed:
method Selector.label(_ = …) - removed:
method Selector.match() - removed:
method Selector.match?(_) - removed:
method Selector.node_filters() - removed:
method Selector.visible(_) - removed:
method Selector.xpath(*) - removed:
method SpecHelper.marionette?(_) - removed:
method SpecHelper.rspec2?() - removed:
module Features - removed:
property Selector.format: reader - removed:
property Selector.name: reader - removed:
set Config.default_wait_time(_) - removed:
set Config.reuse_server(_) - removed:
set SessionConfig.exact_options(_) - removed:
set SessionConfig.save_and_open_page_path(_) - removed:
static method Selector.const_missing(_) - changed:
class Selector → class Selector < SimpleDelegator - changed:
constructor Selector(_) → constructor Selector(_, config:, format:) - changed:
constructor Server(_, _ = …, _ = …, _ = …) → constructor Server(_, *, port: …, host: …, reportable_errors: …, extra_middleware: …) - changed:
method Config.deprecate(_, _, _ = …) → method Config.deprecate(_, _, once: …) - changed:
method Helpers.declension(_, _, _) → static method Helpers.declension(_, _, _) - changed:
method Helpers.inject_asset_host(_, _ = …) → static method Helpers.inject_asset_host(_, host: …) - changed:
method Helpers.monotonic_time() → static method Helpers.monotonic_time() - changed:
method Helpers.normalize_whitespace(_) → static method Helpers.normalize_whitespace(_) - changed:
method Helpers.to_regexp(_, _ = …, _ = …) → static method Helpers.to_regexp(_, exact: …, all_whitespace: …, options: …) - changed:
method RSpecMatcherProxies.all(*) → method RSpecMatcherProxies.all(*, **) - changed:
method RSpecMatcherProxies.within(*) → method RSpecMatcherProxies.within(*, **) - changed:
method RSpecMatchers.become_closed(_ = …) → method RSpecMatchers.become_closed(**) - changed:
method RSpecMatchers.have_all_of_selectors(*) → method RSpecMatchers.have_all_of_selectors(...) - changed:
method RSpecMatchers.have_content(*) → method RSpecMatchers.have_content(_, *, **) - changed:
method RSpecMatchers.have_current_path(_, _ = …) → method RSpecMatchers.have_current_path(_, **) - changed:
method RSpecMatchers.have_none_of_selectors(*) → method RSpecMatchers.have_none_of_selectors(...) - changed:
method RSpecMatchers.have_selector(*) → method RSpecMatchers.have_selector(...) - changed:
method RSpecMatchers.have_text(*) → method RSpecMatchers.have_text(_, *, **) - changed:
method RSpecMatchers.have_title(_, _ = …) → method RSpecMatchers.have_title(_, **) - changed:
method RSpecMatchers.match_selector(*) → method RSpecMatchers.match_selector(...) - changed:
method Selector.call(_, _ = …) → method Selector.call(_, **) - changed:
method Session.accept_alert(_ = …, _ = …) → method Session.accept_alert(_ = …, **) - changed:
method Session.accept_confirm(_ = …, _ = …) → method Session.accept_confirm(_ = …, **) - changed:
method Session.accept_prompt(_ = …, _ = …) → method Session.accept_prompt(_ = …, **) - changed:
method Session.dismiss_confirm(_ = …, _ = …) → method Session.dismiss_confirm(_ = …, **) - changed:
method Session.dismiss_prompt(_ = …, _ = …) → method Session.dismiss_prompt(_ = …, **) - changed:
method Session.open_new_window() → method Session.open_new_window(_ = …) - changed:
method Session.save_and_open_screenshot(_ = …, _ = …) → method Session.save_and_open_screenshot(_ = …, **) - changed:
method Session.save_screenshot(_ = …, _ = …) → method Session.save_screenshot(_ = …, **) - changed:
method Session.switch_to_window(_ = …, _ = …) → method Session.switch_to_window(_ = …, **) - changed:
method Session.window_opened_by(_ = …) → method Session.window_opened_by(**) - changed:
method Session.within(*) → method Session.within(*, **) - changed:
method Session.within_element(*) → method Session.within_element(*, **) - changed:
method Session.within_frame(*) → method Session.within_frame(*, **) - changed:
method SessionMatchers.assert_current_path(_, _ = …) → method SessionMatchers.assert_current_path(_, **) - changed:
method SessionMatchers.assert_no_current_path(_, _ = …) → method SessionMatchers.assert_no_current_path(_, **) - changed:
method SessionMatchers.has_current_path?(_, _ = …) → method SessionMatchers.has_current_path?(_, **) - changed:
method SessionMatchers.has_no_current_path?(_, _ = …) → method SessionMatchers.has_no_current_path?(_, **) - changed:
static method Selector.add(_) → static method Selector.add(_, **) - changed:
static method SpecHelper.reset_threadsafe(_ = …, _ = …) → static method SpecHelper.reset_threadsafe(bool: …, session: …) - changed:
static method SpecHelper.run_specs(_, _, _ = …) → static method SpecHelper.run_specs(_, _, **) - added:
class RegistrationContainer - added:
constructor RegistrationContainer() - added:
method Config.allow_gumbo() - added:
method RSpecMatchers.have_ancestor(...) - added:
method RSpecMatchers.have_any_of_selectors(...) - added:
method RSpecMatchers.have_no_content() - added:
method RSpecMatchers.have_sibling(...) - added:
method RSpecMatchers.have_style(_ = …, **) - added:
method RSpecMatchers.match_style(_ = …, **) - added:
method RegistrationContainer.[](_) - added:
method RegistrationContainer.[]=(_, _) - added:
method RegistrationContainer.names() - added:
method Result.allow_reload!() - added:
method Result.compare_count() - added:
method Result.unfiltered_size() - added:
method Selector.add_error(_) - added:
method Selector.builder(_ = …) - added:
method Selector.current_format() - added:
method Selector.enable_aria_label() - added:
method Selector.enable_aria_role() - added:
method Selector.expression_for(_, _, config: …, format: …, **) - added:
method Selector.format() - added:
method Selector.test_id() - added:
method Selector.with_filter_errors(_) - added:
method Server.base_url() - added:
method Server.using_ssl?() - added:
method Session.active_element() - added:
method Session.quit() - added:
method Session.send_keys(...) - added:
method Session.server_url() - added:
method SpecHelper.be_an_invalid_element_error(_) - added:
method SpecHelper.extract_content_type(_) - added:
method SpecHelper.with_os_path_separators(_) - added:
method Window.fullscreen() - added:
module DSLRSpecProxyInstaller - added:
module RSpecMatcherProxyInstaller - added:
property Config.reuse_server: writer - added:
property Config.server: reader - added:
property Config.use_html5_parsing: accessor - added:
property Selector.errors: reader - added:
set Config.allow_gumbo(_) - added:
set SessionConfig.test_id(_) - added:
static method Helpers.filter_backtrace(_) - added:
static method Helpers.timer(expire_in:) - added:
static method Helpers.warn(_, uplevel: …) - added:
static method Selector.[](_) - added:
static method Selector.for(_)
- added:
module ClassMethods
- removed:
method Base.browser_initialized?() - removed:
method Base.within_window(_) - changed:
constructor Node(_, _) → constructor Node(_, _, _ = …) - changed:
method Base.accept_modal(_, _ = …) → method Base.accept_modal(_, **) - changed:
method Base.dismiss_modal(_, _ = …) → method Base.dismiss_modal(_, **) - changed:
method Base.find_css(_) → method Base.find_css(_, **) - changed:
method Base.find_xpath(_) → method Base.find_xpath(_, **) - changed:
method Base.save_screenshot(_, _ = …) → method Base.save_screenshot(_, **) - changed:
method Node.click() → method Node.click(_ = …, **) - changed:
method Node.double_click() → method Node.double_click(_ = …, **) - changed:
method Node.drag_to(_) → method Node.drag_to(_, **) - changed:
method Node.right_click() → method Node.right_click(_ = …, **) - changed:
method Node.set(_, _ = …) → method Node.set(_, **) - added:
method Base.active_element() - added:
method Base.frame_title() - added:
method Base.frame_url() - added:
method Base.fullscreen_window(_) - added:
method Base.send_keys(*) - added:
method Node.drop(*) - added:
method Node.obscured?() - added:
method Node.rect() - added:
method Node.scroll_by(_, _) - added:
method Node.scroll_to(_, _, _ = …) - added:
method Node.shadow_root() - added:
method Node.style(_) - added:
property Node.initial_cache: reader
- added:
class Timer - added:
constructor Timer(_) - added:
method Timer.expired?() - added:
method Timer.stalled?()
- added:
method Assertions.refute_ancestor() - added:
method Assertions.refute_sibling() - added:
method Expectations.must_have_style(...)
- removed:
method Base.parent() - removed:
method Finders.field_labeled(_ = …, _ = …) - removed:
method Matchers.refute_matches_selector(*) - removed:
method Matchers.refute_selector(*) - changed:
method Actions.attach_file(_, _, _ = …) → method Actions.attach_file(_ = …, _, make_visible: …, **) - changed:
method Actions.check(_, _ = …) → method Actions.check(_ = …, **) - changed:
method Actions.choose(_, _ = …) → method Actions.choose(_ = …, **) - changed:
method Actions.click_button(_ = …, _ = …) → method Actions.click_button(_ = …, **) - changed:
method Actions.click_link(_ = …, _ = …) → method Actions.click_link(_ = …, **) - changed:
method Actions.click_link_or_button(_ = …, _ = …) → method Actions.click_link_or_button(_ = …, **) - changed:
method Actions.click_on(_ = …, _ = …) → method Actions.click_on(_ = …, **) - changed:
method Actions.fill_in(_, _ = …) → method Actions.fill_in(_ = …, with:, currently_with: …, fill_options: …, **) - changed:
method Actions.select(_, _ = …) → method Actions.select(_ = …, from: …, **) - changed:
method Actions.uncheck(_, _ = …) → method Actions.uncheck(_ = …, **) - changed:
method Actions.unselect(_, _ = …) → method Actions.unselect(_ = …, from: …, **) - changed:
method Base.find_css(_) → method Base.find_css(_, **) - changed:
method Base.find_xpath(_) → method Base.find_xpath(_, **) - changed:
method Base.synchronize(_ = …, _ = …) → method Base.synchronize(_ = …, errors: …) - changed:
method Document.text(_ = …) → method Document.text(_ = …, normalize_ws: …) - changed:
method DocumentMatchers.assert_no_title(_, _ = …) → method DocumentMatchers.assert_no_title(_, **) - changed:
method DocumentMatchers.assert_title(_, _ = …) → method DocumentMatchers.assert_title(_, **) - changed:
method DocumentMatchers.has_no_title?(_, _ = …) → method DocumentMatchers.has_no_title?(_, **) - changed:
method DocumentMatchers.has_title?(_, _ = …) → method DocumentMatchers.has_title?(_, **) - changed:
method Element.allow_reload!() → method Element.allow_reload!(_ = …) - changed:
method Element.click() → method Element.click(*, **) - changed:
method Element.double_click() → method Element.double_click(*, **) - changed:
method Element.drag_to(_) → method Element.drag_to(_, **) - changed:
method Element.right_click() → method Element.right_click(*, **) - changed:
method Element.select_option() → method Element.select_option(wait: …) - changed:
method Element.set(_, _ = …) → method Element.set(_, **) - changed:
method Element.text(_ = …) → method Element.text(_ = …, normalize_ws: …) - changed:
method Element.unselect_option() → method Element.unselect_option(wait: …) - changed:
method Finders.all(*) → method Finders.all(*, allow_reload: …, **) - changed:
method Finders.ancestor(*) → method Finders.ancestor(*, **) - changed:
method Finders.find(*) → method Finders.find(*, **) - changed:
method Finders.find_all(*) → method Finders.find_all(*, allow_reload: …, **) - changed:
method Finders.find_button(_ = …, _ = …) → method Finders.find_button(_ = …, **) - changed:
method Finders.find_by_id(_, _ = …) → method Finders.find_by_id(_, **) - changed:
method Finders.find_field(_ = …, _ = …) → method Finders.find_field(_ = …, **) - changed:
method Finders.find_link(_ = …, _ = …) → method Finders.find_link(_ = …, **) - changed:
method Finders.first(*) → method Finders.first(*, **) - changed:
method Finders.sibling(*) → method Finders.sibling(*, **) - changed:
method Matchers.assert_all_of_selectors(*) → method Matchers.assert_all_of_selectors(*, **) - changed:
method Matchers.assert_no_text(*) → method Matchers.assert_no_text(_, *, **) - changed:
method Matchers.assert_none_of_selectors(*) → method Matchers.assert_none_of_selectors(*, **) - changed:
method Matchers.assert_text(*) → method Matchers.assert_text(_, *, **) - changed:
method Matchers.has_button?(_ = …, _ = …) → method Matchers.has_button?(_ = …, **) - changed:
method Matchers.has_checked_field?(_ = …, _ = …) → method Matchers.has_checked_field?(_ = …, **) - changed:
method Matchers.has_content?(*) → method Matchers.has_content?(*, **) - changed:
method Matchers.has_css?(_, _ = …) → method Matchers.has_css?(_, **) - changed:
method Matchers.has_field?(_ = …, _ = …) → method Matchers.has_field?(_ = …, **) - changed:
method Matchers.has_link?(_ = …, _ = …) → method Matchers.has_link?(_ = …, **) - changed:
method Matchers.has_no_button?(_ = …, _ = …) → method Matchers.has_no_button?(_ = …, **) - changed:
method Matchers.has_no_checked_field?(_ = …, _ = …) → method Matchers.has_no_checked_field?(_ = …, **) - changed:
method Matchers.has_no_content?(*) → method Matchers.has_no_content?(*, **) - changed:
method Matchers.has_no_css?(_, _ = …) → method Matchers.has_no_css?(_, **) - changed:
method Matchers.has_no_field?(_ = …, _ = …) → method Matchers.has_no_field?(_ = …, **) - changed:
method Matchers.has_no_link?(_ = …, _ = …) → method Matchers.has_no_link?(_ = …, **) - changed:
method Matchers.has_no_select?(_ = …, _ = …) → method Matchers.has_no_select?(_ = …, **) - changed:
method Matchers.has_no_selector?(*) → method Matchers.has_no_selector?(*, **) - changed:
method Matchers.has_no_table?(_ = …, _ = …) → method Matchers.has_no_table?(_ = …, **) - changed:
method Matchers.has_no_text?(*) → method Matchers.has_no_text?(*, **) - changed:
method Matchers.has_no_unchecked_field?(_ = …, _ = …) → method Matchers.has_no_unchecked_field?(_ = …, **) - changed:
method Matchers.has_no_xpath?(_, _ = …) → method Matchers.has_no_xpath?(_, **) - changed:
method Matchers.has_select?(_ = …, _ = …) → method Matchers.has_select?(_ = …, **) - changed:
method Matchers.has_selector?(*) → method Matchers.has_selector?(*, **) - changed:
method Matchers.has_table?(_ = …, _ = …) → method Matchers.has_table?(_ = …, **) - changed:
method Matchers.has_text?(*) → method Matchers.has_text?(*, **) - changed:
method Matchers.has_unchecked_field?(_ = …, _ = …) → method Matchers.has_unchecked_field?(_ = …, **) - changed:
method Matchers.has_xpath?(_, _ = …) → method Matchers.has_xpath?(_, **) - changed:
method Matchers.matches_css?(_, _ = …) → method Matchers.matches_css?(_, **) - changed:
method Matchers.matches_selector?(*) → method Matchers.matches_selector?(*, **) - changed:
method Matchers.matches_xpath?(_, _ = …) → method Matchers.matches_xpath?(_, **) - changed:
method Matchers.not_matches_css?(_, _ = …) → method Matchers.not_matches_css?(_, **) - changed:
method Matchers.not_matches_selector?(*) → method Matchers.not_matches_selector?(*, **) - changed:
method Matchers.not_matches_xpath?(_, _ = …) → method Matchers.not_matches_xpath?(_, **) - changed:
method Simple.allow_reload!() → method Simple.allow_reload!(*) - changed:
method Simple.find_css(_) → method Simple.find_css(_, **) - changed:
method Simple.find_xpath(_) → method Simple.find_xpath(_, **) - changed:
method Simple.text(_ = …) → method Simple.text(_ = …, normalize_ws: …) - added:
const Actions.CAPTURE_FILE_ELEMENT_SCRIPT - added:
const Actions.DATALIST_OPTIONS_SCRIPT - added:
const Actions.RESET_STYLE_SCRIPT - added:
const Actions.UPDATE_STYLE_SCRIPT - added:
const Element.STYLE_SCRIPT - added:
const Simple.VISIBILITY_XPATH - added:
const WhitespaceNormalizer.BREAKING_SPACES - added:
const WhitespaceNormalizer.EMPTY_LINES - added:
const WhitespaceNormalizer.LEADING_SPACES - added:
const WhitespaceNormalizer.LEFT_TO_RIGHT_MARK - added:
const WhitespaceNormalizer.LINE_SEPERATOR - added:
const WhitespaceNormalizer.NON_BREAKING_SPACE - added:
const WhitespaceNormalizer.PARAGRAPH_SEPERATOR - added:
const WhitespaceNormalizer.REMOVED_CHARACTERS - added:
const WhitespaceNormalizer.RIGHT_TO_LEFT_MARK - added:
const WhitespaceNormalizer.SQUEEZED_SPACES - added:
const WhitespaceNormalizer.TRAILING_SPACES - added:
const WhitespaceNormalizer.ZERO_WIDTH_SPACE - added:
method Base.to_capybara_node() - added:
method Document.evaluate_script(*) - added:
method Document.execute_script(*) - added:
method Document.scroll_to(*, quirks: …, **) - added:
method Element.drop(*) - added:
method Element.evaluate_async_script(_, *) - added:
method Element.evaluate_script(_, *) - added:
method Element.execute_script(_, *) - added:
method Element.flash() - added:
method Element.initial_cache() - added:
method Element.obscured?() - added:
method Element.rect() - added:
method Element.scroll_to(_, _ = …, align: …, offset: …) - added:
method Element.shadow_root() - added:
method Element.style(*) - added:
method Matchers.assert_ancestor(*) - added:
method Matchers.assert_any_of_selectors(*, wait: …, **) - added:
method Matchers.assert_matches_style(_ = …, **) - added:
method Matchers.assert_no_ancestor(*) - added:
method Matchers.assert_no_sibling(*) - added:
method Matchers.assert_sibling(*) - added:
method Matchers.assert_style(_ = …, **) - added:
method Matchers.has_ancestor?(*, **) - added:
method Matchers.has_element?(_ = …, **) - added:
method Matchers.has_no_ancestor?(*, **) - added:
method Matchers.has_no_element?(_ = …, **) - added:
method Matchers.has_no_sibling?(*, **) - added:
method Matchers.has_sibling?(*, **) - added:
method Matchers.has_style?(_ = …, **) - added:
method Matchers.matches_style?(_ = …, **) - added:
method Simple.==(_) - added:
method Simple.initial_cache() - added:
method Simple.multiple?() - added:
method Simple.readonly?() - added:
method WhitespaceNormalizer.normalize_spacing(_) - added:
method WhitespaceNormalizer.normalize_visible_spacing(_) - added:
module WhitespaceNormalizer
- removed:
property SelectorQuery.find: accessor - removed:
property SelectorQuery.negative: accessor - changed:
class AncestorQuery < MatchQuery → class AncestorQuery < Capybara::Queries::SelectorQuery - changed:
class SiblingQuery < MatchQuery → class SiblingQuery < SelectorQuery - changed:
constructor CurrentPathQuery(_, _ = …) → constructor CurrentPathQuery(_, **) - changed:
constructor SelectorQuery(*) → constructor SelectorQuery(*, session_options:, enable_aria_label: …, enable_aria_role: …, test_id: …, selector_format: …, order: …, **) - changed:
constructor TextQuery(*) → constructor TextQuery(_ = …, _, session_options:, **) - changed:
constructor TitleQuery(_, _ = …) → constructor TitleQuery(_, **) - changed:
method AncestorQuery.description() → method AncestorQuery.description(_ = …) - changed:
method SelectorQuery.description() → method SelectorQuery.description(_ = …) - changed:
method SelectorQuery.matches_filters?(_) → method SelectorQuery.matches_filters?(_, _ = …) - changed:
method SiblingQuery.description() → method SiblingQuery.description(_ = …) - changed:
property SelectorQuery.expression: accessor → property SelectorQuery.expression: reader - changed:
property SelectorQuery.locator: accessor → property SelectorQuery.locator: reader - changed:
property SelectorQuery.options: accessor → property SelectorQuery.options: reader - changed:
property SelectorQuery.selector: accessor → property SelectorQuery.selector: reader - added:
class ActiveElementQuery < BaseQuery - added:
class StyleQuery < BaseQuery - added:
const SelectorQuery.SPATIAL_KEYS - added:
constructor ActiveElementQuery(**) - added:
constructor StyleQuery(_, session_options:, **) - added:
method ActiveElementQuery.resolve_for(_) - added:
method SelectorQuery.applied_description() - added:
method SelectorQuery.failure_message() - added:
method SelectorQuery.negative_failure_message() - added:
method StyleQuery.failure_message() - added:
method StyleQuery.resolves_for?(_)
- added:
module ClassMethods
- removed:
class BecomeClosed - removed:
class HaveAllSelectors < Matcher - removed:
class HaveCurrentPath < Matcher - removed:
class HaveNoSelectors < Matcher - removed:
class HaveSelector < Matcher - removed:
class HaveText < Matcher - removed:
class HaveTitle < Matcher - removed:
class MatchSelector < HaveSelector - removed:
class Matcher - removed:
constructor BecomeClosed(_) - removed:
constructor HaveAllSelectors(*) - removed:
constructor HaveCurrentPath(*) - removed:
constructor HaveNoSelectors(*) - removed:
constructor HaveSelector(*) - removed:
constructor HaveText(*) - removed:
constructor HaveTitle(*) - removed:
method BecomeClosed.failure_message() - removed:
method BecomeClosed.failure_message_for_should() - removed:
method BecomeClosed.failure_message_for_should_not() - removed:
method BecomeClosed.failure_message_when_negated() - removed:
method BecomeClosed.matches?(_) - removed:
method Compound.and(_) - removed:
method Compound.and_then(_) - removed:
method Compound.or(_) - removed:
method HaveAllSelectors.description() - removed:
method HaveAllSelectors.does_not_match?(_) - removed:
method HaveAllSelectors.matches?(_) - removed:
method HaveCurrentPath.description() - removed:
method HaveCurrentPath.does_not_match?(_) - removed:
method HaveCurrentPath.matches?(_) - removed:
method HaveNoSelectors.description() - removed:
method HaveNoSelectors.does_not_match?(_) - removed:
method HaveNoSelectors.matches?(_) - removed:
method HaveSelector.description() - removed:
method HaveSelector.does_not_match?(_) - removed:
method HaveSelector.matches?(_) - removed:
method HaveSelector.query() - removed:
method HaveText.description() - removed:
method HaveText.does_not_match?(_) - removed:
method HaveText.format(_) - removed:
method HaveText.matches?(_) - removed:
method HaveTitle.description() - removed:
method HaveTitle.does_not_match?(_) - removed:
method HaveTitle.matches?(_) - removed:
method MatchSelector.description() - removed:
method MatchSelector.does_not_match?(_) - removed:
method MatchSelector.matches?(_) - removed:
method MatchSelector.query() - removed:
method Matcher.failure_message_for_should() - removed:
method Matcher.failure_message_for_should_not() - removed:
method Matcher.wrap(_) - removed:
module Compound - removed:
property HaveCurrentPath.current_path: reader - removed:
property HaveText.content: reader - removed:
property HaveText.options: reader - removed:
property HaveText.type: reader - removed:
property HaveTitle.title: reader - removed:
property Matcher.failure_message: reader - removed:
property Matcher.failure_message_when_negated: reader - added:
method CountSugar.at_least(_) - added:
method CountSugar.at_most(_) - added:
method CountSugar.exactly(_) - added:
method CountSugar.once() - added:
method CountSugar.thrice() - added:
method CountSugar.times() - added:
method CountSugar.twice() - added:
method SpatialSugar.above(_) - added:
method SpatialSugar.below(_) - added:
method SpatialSugar.left_of(_) - added:
method SpatialSugar.near(_) - added:
method SpatialSugar.right_of(_) - added:
module CountSugar - added:
module Matchers - added:
module SpatialSugar
- removed:
class And < ::RSpec::Matchers::BuiltIn::Compound::And - removed:
class CapybaraEvaluator - removed:
class Or < ::RSpec::Matchers::BuiltIn::Compound::Or - removed:
constructor CapybaraEvaluator(_, _, _) - removed:
method CapybaraEvaluator.matcher_matches?(_) - removed:
method CapybaraEvaluator.reset()
- added:
class Base - added:
class BecomeClosed - added:
class CountableWrappedElementMatcher < WrappedElementMatcher - added:
class HaveAllSelectors < WrappedElementMatcher - added:
class HaveAncestor < CountableWrappedElementMatcher - added:
class HaveAnySelectors < WrappedElementMatcher - added:
class HaveCurrentPath < WrappedElementMatcher - added:
class HaveNoSelectors < WrappedElementMatcher - added:
class HaveSelector < CountableWrappedElementMatcher - added:
class HaveSibling < CountableWrappedElementMatcher - added:
class HaveStyle < MatchStyle - added:
class HaveText < CountableWrappedElementMatcher - added:
class HaveTitle < WrappedElementMatcher - added:
class MatchSelector < HaveSelector - added:
class MatchStyle < WrappedElementMatcher - added:
class NegatedMatcher - added:
class WrappedElementMatcher < Base - added:
constructor Base(*, **) - added:
constructor BecomeClosed(_) - added:
constructor HaveSelector(*, **) - added:
constructor HaveStyle(*, **) - added:
constructor MatchStyle(_ = …, **) - added:
constructor NegatedMatcher(_) - added:
method BecomeClosed.failure_message() - added:
method BecomeClosed.failure_message_when_negated() - added:
method BecomeClosed.matches?(_) - added:
method Compound.and(_) - added:
method Compound.and_then(_) - added:
method Compound.or(_) - added:
method HaveAllSelectors.description() - added:
method HaveAllSelectors.does_not_match?(_) - added:
method HaveAllSelectors.element_matches?(_) - added:
method HaveAncestor.description() - added:
method HaveAncestor.element_does_not_match?(_) - added:
method HaveAncestor.element_matches?(_) - added:
method HaveAncestor.query() - added:
method HaveAnySelectors.description() - added:
method HaveAnySelectors.does_not_match?(_) - added:
method HaveAnySelectors.element_matches?(_) - added:
method HaveCurrentPath.description() - added:
method HaveCurrentPath.element_does_not_match?(_) - added:
method HaveCurrentPath.element_matches?(_) - added:
method HaveNoSelectors.description() - added:
method HaveNoSelectors.does_not_match?(_) - added:
method HaveNoSelectors.element_matches?(_) - added:
method HaveSelector.description() - added:
method HaveSelector.element_does_not_match?(_) - added:
method HaveSelector.element_matches?(_) - added:
method HaveSelector.query() - added:
method HaveSibling.description() - added:
method HaveSibling.element_does_not_match?(_) - added:
method HaveSibling.element_matches?(_) - added:
method HaveSibling.query() - added:
method HaveText.description() - added:
method HaveText.element_does_not_match?(_) - added:
method HaveText.element_matches?(_) - added:
method HaveText.format(_) - added:
method HaveTitle.description() - added:
method HaveTitle.element_does_not_match?(_) - added:
method HaveTitle.element_matches?(_) - added:
method MatchSelector.description() - added:
method MatchSelector.element_does_not_match?(_) - added:
method MatchSelector.element_matches?(_) - added:
method MatchSelector.query() - added:
method MatchStyle.description() - added:
method MatchStyle.does_not_match?(_) - added:
method MatchStyle.element_matches?(_) - added:
method NegatedMatcher.description() - added:
method NegatedMatcher.does_not_match?(_) - added:
method NegatedMatcher.failure_message() - added:
method NegatedMatcher.failure_message_when_negated() - added:
method NegatedMatcher.matches?(_) - added:
method WrappedElementMatcher.does_not_match?(_) - added:
method WrappedElementMatcher.matches?(_) - added:
module Compound - added:
property Base.failure_message: reader - added:
property Base.failure_message_when_negated: reader
- added:
class And < ::RSpec::Matchers::BuiltIn::Compound::And - added:
class CapybaraEvaluator - added:
class Or < ::RSpec::Matchers::BuiltIn::Compound::Or - added:
constructor CapybaraEvaluator(_) - added:
method CapybaraEvaluator.matcher_matches?(_) - added:
method CapybaraEvaluator.reset() - added:
method Synchronizer.match(_, _) - added:
method Synchronizer.sync_element(_) - added:
module Synchronizer
- removed:
method Driver.browser_initialized?() - removed:
method Node.==(_) - removed:
protected method Node.unnormalized_text(_ = …) - changed:
constructor Driver(_, _ = …) → constructor Driver(_, **) - changed:
method Browser.follow(_, _, _ = …) → method Browser.follow(_, _, **) - changed:
method Browser.submit(_, _, _) → method Browser.submit(_, _, _, content_type: …) - changed:
method Browser.visit(_, _ = …) → method Browser.visit(_, **) - changed:
method Driver.delete(*) → method Driver.delete(...) - changed:
method Driver.follow(_, _, _ = …) → method Driver.follow(_, _, **) - changed:
method Driver.get(*) → method Driver.get(...) - changed:
method Driver.post(*) → method Driver.post(...) - changed:
method Driver.put(*) → method Driver.put(...) - changed:
method Driver.visit(_, _ = …) → method Driver.visit(_, **) - changed:
method Node.click() → method Node.click(_ = …, **) - changed:
method Node.find_css(_) → method Node.find_css(_, **) - changed:
method Node.find_xpath(_) → method Node.find_xpath(_, **) - changed:
method Node.set(_) → method Node.set(_, **) - added:
const Node.BLOCK_ELEMENTS - added:
const Node.DISABLED_BY_FIELDSET_XPATH - added:
const Node.OPTION_OWNER_XPATH - added:
method Browser.build_uri(_) - added:
method Browser.last_request() - added:
method Browser.last_response() - added:
method Driver.invalid_element_errors() - added:
method Node.readonly?() - added:
method Node.style(_) - added:
module Errors - added:
protected method Browser.base_href() - added:
protected method Browser.base_relative_uri_for(_) - added:
protected method Browser.safe_last_request() - added:
protected method Node.checkbox_or_radio?(_ = …) - added:
protected method Node.displayed_text(check_ancestor: …) - added:
protected method Node.range?()
- added:
class StaleElementReferenceError < StandardError
- added:
method NilUploadedFile.append_to(_) - added:
method NilUploadedFile.set_encoding(_)
- removed:
method FilterSet.expression_filters() - removed:
method FilterSet.filters() - removed:
method FilterSet.node_filters() - removed:
property FilterSet.descriptions: reader - changed:
method FilterSet.describe() → method FilterSet.describe(_ = …) - changed:
method FilterSet.description(_ = …) → method FilterSet.description(node_filters: …, expression_filters: …, **) - changed:
method FilterSet.expression_filter(_, *) → method FilterSet.expression_filter(_, *, **) - changed:
method FilterSet.filter(_, *) → method FilterSet.filter(_, *, **) - added:
class CSSBuilder - added:
class Definition - added:
class RegexpDisassembler - added:
class XPathBuilder - added:
constructor CSSBuilder(_) - added:
constructor Definition(_, locator_type: …, raw_locator: …, supports_exact: …) - added:
constructor RegexpDisassembler(_) - added:
constructor XPathBuilder(_) - added:
method CSSBuilder.add_attribute_conditions(**) - added:
method Definition.css(*) - added:
method Definition.custom_filters() - added:
method Definition.default_format() - added:
method Definition.default_visibility(_ = …, _ = …) - added:
method Definition.describe_all_expression_filters(**) - added:
method Definition.describe_expression_filters() - added:
method Definition.describe_node_filters() - added:
method Definition.expression_filters() - added:
method Definition.filter_set(_, _ = …) - added:
method Definition.label(_ = …) - added:
method Definition.locator_filter(*, **) - added:
method Definition.locator_types() - added:
method Definition.match() - added:
method Definition.match?(_) - added:
method Definition.node_filters() - added:
method Definition.raw_locator?() - added:
method Definition.supports_exact?() - added:
method Definition.visible(_ = …) - added:
method Definition.xpath(*) - added:
method FilterSet.descriptions() - added:
method FilterSet.import(_, _ = …) - added:
method FilterSet.node_filter(_, *, **) - added:
method RegexpDisassembler.alternated_substrings() - added:
method RegexpDisassembler.substrings() - added:
method XPathBuilder.add_attribute_conditions(**) - added:
property CSSBuilder.expression: reader - added:
property Definition.expressions: reader - added:
property Definition.name: reader - added:
property FilterSet.expression_filters: reader - added:
property FilterSet.node_filters: reader - added:
property XPathBuilder.expression: reader - added:
protected method FilterSet.expression_filter_descriptions() - added:
protected method FilterSet.node_filter_descriptions() - added:
protected method FilterSet.undeclared_descriptions() - added:
static method CSS.split(_) - added:
static method FilterSet.[](_)
- added:
class Splitter - added:
method Splitter.split(_)
- changed:
constructor Base(_, _, _ = …) → constructor Base(_, _, _, **) - changed:
constructor IdentityExpressionFilter() → constructor IdentityExpressionFilter(_) - changed:
method ExpressionFilter.apply_filter(_, _) → method ExpressionFilter.apply_filter(_, _, _, _) - changed:
method IdentityExpressionFilter.apply_filter(_, _) → method IdentityExpressionFilter.apply_filter(_, _, _, _) - changed:
method NodeFilter.matches?(_, _) → method NodeFilter.matches?(_, _, _, _ = …) - added:
class LocatorFilter < NodeFilter - added:
constructor LocatorFilter(_, **) - added:
constructor NodeFilter(_, _, _, **) - added:
method Base.boolean?() - added:
method Base.format() - added:
method Base.handles_option?(_) - added:
method Base.matcher?() - added:
method IdentityExpressionFilter.matcher?() - added:
method LocatorFilter.matches?(_, _, _ = …, exact:)
- removed:
method Driver.browser_initialized?() - removed:
method Driver.chrome?() - removed:
method Driver.find_css(_) - removed:
method Driver.find_xpath(_) - removed:
method Driver.firefox?() - removed:
method Driver.marionette?() - removed:
method Driver.within_window(_) - removed:
method Node.==(_) - removed:
method Node.find_css(_) - removed:
method Node.find_xpath(_) - changed:
constructor Driver(_, _ = …) → constructor Driver(_, **) - changed:
method Driver.accept_modal(_, _ = …) → method Driver.accept_modal(_, **) - changed:
method Driver.dismiss_modal(_, _ = …) → method Driver.dismiss_modal(_, **) - changed:
method Driver.open_new_window() → method Driver.open_new_window(_ = …) - changed:
method Driver.save_screenshot(_, _ = …) → method Driver.save_screenshot(_, **) - changed:
method Node.click() → method Node.click(_ = …, **) - changed:
method Node.double_click() → method Node.double_click(_ = …, **) - changed:
method Node.drag_to(_) → method Node.drag_to(_, drop_modifiers: …, **) - changed:
method Node.right_click() → method Node.right_click(_ = …, **) - changed:
method Node.set(_, _ = …) → method Node.set(_, **) - added:
class ChromeNode < Capybara::Selenium::Node - added:
class EdgeNode < Capybara::Selenium::Node - added:
class FirefoxNode < Capybara::Selenium::Node - added:
class IENode < Capybara::Selenium::Node - added:
class PersistentClient < ::Selenium::WebDriver::Remote::Http::Default - added:
class SafariNode < Capybara::Selenium::Node - added:
const ChromeLogs.COMMANDS - added:
const ChromeLogs.LOG_MSG - added:
const Node.GET_XPATH_SCRIPT - added:
const Node.OBSCURED_OR_OFFSET_SCRIPT - added:
const Node.RAPID_APPEND_TEXT - added:
const SafariNode.MODIFIER_KEYS - added:
const Scroll.SCROLL_POSITIONS - added:
method ChromeLogs.available_log_types() - added:
method ChromeLogs.commands(_) - added:
method ChromeLogs.log(_) - added:
method ChromeNode.click(*, **) - added:
method ChromeNode.disabled?() - added:
method ChromeNode.drop(*) - added:
method ChromeNode.select_option() - added:
method ChromeNode.send_keys(*) - added:
method ChromeNode.set_file(_) - added:
method ChromeNode.set_text(_, clear: …, **) - added:
method ChromeNode.visible?() - added:
method Driver.active_element() - added:
method Driver.frame_obscured_at?(x:, y:) - added:
method Driver.fullscreen_window(_) - added:
method Driver.send_keys(*) - added:
method EdgeNode.click(*, **) - added:
method EdgeNode.disabled?() - added:
method EdgeNode.drop(*) - added:
method EdgeNode.select_option() - added:
method EdgeNode.send_keys(*) - added:
method EdgeNode.set_file(_) - added:
method EdgeNode.set_text(_, clear: …, **) - added:
method EdgeNode.visible?() - added:
method Find.find_css(_, uses_visibility: …, texts: …, styles: …, position: …, **) - added:
method Find.find_xpath(_, uses_visibility: …, styles: …, position: …, **) - added:
method FirefoxNode.click(_ = …, **) - added:
method FirefoxNode.disabled?() - added:
method FirefoxNode.drop(*) - added:
method FirefoxNode.focused?() - added:
method FirefoxNode.hover() - added:
method FirefoxNode.select_option() - added:
method FirefoxNode.send_keys(*) - added:
method FirefoxNode.set_file(_) - added:
method FirefoxNode.visible?() - added:
method IENode.disabled?() - added:
method IsDisplayed.commands(_) - added:
method Node.drop(*) - added:
method Node.obscured?(x: …, y: …) - added:
method Node.rect() - added:
method Node.shadow_root() - added:
method Node.style(_) - added:
method PersistentClient.close() - added:
method SafariNode.click(_ = …, **) - added:
method SafariNode.disabled?() - added:
method SafariNode.hover() - added:
method SafariNode.select_option() - added:
method SafariNode.send_keys(*) - added:
method SafariNode.set_file(_) - added:
method SafariNode.set_text(_, clear: …, **) - added:
method SafariNode.unselect_option() - added:
method SafariNode.visible_text() - added:
method Scroll.scroll_by(_, _) - added:
method Scroll.scroll_to(_, _, _ = …) - added:
module ChromeLogs - added:
module Find - added:
module IsDisplayed - added:
module Scroll - added:
protected method Node.scroll_if_needed() - added:
protected method Node.scroll_to_center() - added:
static method Driver.load_selenium() - added:
static method Driver.register_specialization(_, _) - added:
static property Driver.selenium_webdriver_version: reader - added:
static property Driver.specializations: reader
- added:
class CAPS_VERSION < Gem::Requirement.new('< 4.8.0') - added:
method ChromeDriver.fullscreen_window(_) - added:
method ChromeDriver.reset!() - added:
method ChromeDriver.resize_window_to(_, _, _) - added:
method EdgeDriver.fullscreen_window(_) - added:
method EdgeDriver.reset!() - added:
method EdgeDriver.resize_window_to(_, _, _) - added:
method InternetExplorerDriver.switch_to_frame(_) - added:
method SafariDriver.switch_to_frame(_) - added:
method W3CFirefoxDriver.refresh() - added:
method W3CFirefoxDriver.reset!() - added:
method W3CFirefoxDriver.resize_window_to(_, _, _) - added:
method W3CFirefoxDriver.switch_to_frame(_) - added:
module ChromeDriver - added:
module EdgeDriver - added:
module FirefoxDriver - added:
module InternetExplorerDriver - added:
module SafariDriver - added:
module W3CFirefoxDriver - added:
set EdgeDriver.download_path(_) - added:
static method W3CFirefoxDriver.pause_broken?(_)
- added:
class ModifierKeysStack - added:
const Html5Drag.ATTACH_FILE - added:
const Html5Drag.DROP_FILE - added:
const Html5Drag.DROP_STRING - added:
const Html5Drag.HTML5_DRAG_DROP_SCRIPT - added:
const Html5Drag.LEGACY_DRAG_CHECK - added:
const Html5Drag.MOUSEDOWN_TRACKER - added:
constructor ModifierKeysStack() - added:
method FileInputClickEmulation.click(_ = …, **) - added:
method Html5Drag.drag_to(_, html5: …, delay: …, drop_modifiers: …) - added:
method ModifierKeysStack.include?(_) - added:
method ModifierKeysStack.pop() - added:
method ModifierKeysStack.press(_) - added:
method ModifierKeysStack.push() - added:
module FileInputClickEmulation - added:
module Html5Drag
- changed:
constructor Middleware(_, _) → constructor Middleware(_, _, _ = …) - changed:
property Middleware.error: accessor → property Middleware.error: reader - added:
class AnimationDisabler - added:
class Checker - added:
const AnimationDisabler.DISABLE_CSS_MARKUP_TEMPLATE - added:
const AnimationDisabler.DISABLE_JS_MARKUP_TEMPLATE - added:
const Checker.TRY_HTTPS_ERRORS - added:
constructor AnimationDisabler(_) - added:
constructor Checker(_, _) - added:
method AnimationDisabler.call(_) - added:
method Checker.request() - added:
method Checker.ssl?() - added:
method Middleware.clear_error() - added:
method Middleware.pending_requests() - added:
static method AnimationDisabler.selector_for(_)
- removed:
property Counter.value: reader - changed:
method Counter.decrement() → method Counter.decrement(_) - changed:
method Counter.increment() → method Counter.increment(_) - added:
method Counter.positive?() - added:
method Counter.value()
- added:
module MiniSSL
- added:
class Socket - added:
method Socket.read_nonblock(_, *)
- changed:
class TestAppError < StandardError → class TestAppError < Exception - changed:
class TestAppOtherError < StandardError → class TestAppOtherError < Exception
- removed:
method Renderer.where(_, _) - added:
method DSL.join(*) - added:
method Renderer.join(*) - added:
module DSL