You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I get 7 failures as follows (full output below.) Am I doing something wrong?
I will try with Ruby 2.3.3 which Circle CI seems to be using, but still, I wouldn't expect that to make any difference. I wanted to make some changes, but don't want to start when tests are not passing.
Failing spec output
$ be rake
/Users/rob/.rubies/ruby-2.3.1/bin/ruby -I/Users/rob/.gem/ruby/2.3.1/gems/rspec-core-3.5.2/lib:/Users/rob/.gem/ruby/2.3.1/gems/rspec-support-3.5.0/lib /Users/rob/.gem/ruby/2.3.1/gems/rspec-core-3.5.2/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb
Randomized with seed 39842
.....................................................................Unused parameters passed to Capybara::Queries::SelectorQuery : ["a link"]
FFUnused parameters passed to Capybara::Queries::SelectorQuery : ["a link"]
FF..............Unused parameters passed to Capybara::Queries::SelectorQuery : ["next page"]
F............................Unused parameters passed to Capybara::Queries::SelectorQuery : ["link in a form"]
F...............................................F.............................................................
Failures:
1) PageMagic::ElementContext#method_missing method is a element defintion returns the sub page element
Failure/Error: capybara_element.find(*args)
Nokogiri::CSS::SyntaxError:
unexpected '$' after ''# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/css/parser_extras.rb:87:in `on_error'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/css/parser_extras.rb:62:in `parse'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/css/parser_extras.rb:79:in `xpath_for'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/css.rb:23:in `xpath_for'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:198:in `block in xpath_query_from_css_rule'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:197:in `map'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:197:in `xpath_query_from_css_rule'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:192:in `block in css_internal'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:192:in `map'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:192:in `css_internal'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:107:in `css'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/rack_test/browser.rb:87:in `find'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/rack_test/driver.rb:71:in `find_css'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/base.rb:103:in `find_css'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/queries/selector_query.rb:110:in `block in resolve_for'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/base.rb:81:in `synchronize'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/queries/selector_query.rb:108:in `resolve_for'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/finders.rb:35:in `block in find'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/base.rb:85:in `synchronize'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/finders.rb:33:in `find'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/session.rb:699:in `block (2 levels) in <class:Session>'# ./lib/page_magic/element/query.rb:23:in `execute'# ./lib/page_magic/element_context.rb:35:in `find'# ./lib/page_magic/element_context.rb:24:in `method_missing'# ./spec/page_magic/element_context_spec.rb:29:in `block (4 levels) in <module:PageMagic>'
2) PageMagic::ElementContext#method_missing method is a element defintion passes arguments through to the element definition
Failure/Error: raise AmbiguousQueryException, e.message
PageMagic::AmbiguousQueryException:
Ambiguous match, found 2 elements matching css "a"# ./lib/page_magic/element/query.rb:26:in `rescue in execute'# ./lib/page_magic/element/query.rb:18:in `execute'# ./lib/page_magic/element_context.rb:35:in `find'# ./lib/page_magic/element_context.rb:24:in `method_missing'# ./spec/page_magic/element_context_spec.rb:38:in `block (4 levels) in <module:PageMagic>'# ------------------# --- Caused by: ---# Capybara::Ambiguous:# Ambiguous match, found 2 elements matching css "a"# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/finders.rb:41:in `block in find'
3) PageMagic::ElementContext#method_missing method is a element defintion does not evaluate any of the other definitions
Failure/Error: capybara_element.find(*args)
Nokogiri::CSS::SyntaxError:
unexpected '$' after ''# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/css/parser_extras.rb:87:in `on_error'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/css/parser_extras.rb:62:in `parse'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/css/parser_extras.rb:79:in `xpath_for'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/css.rb:23:in `xpath_for'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:198:in `block in xpath_query_from_css_rule'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:197:in `map'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:197:in `xpath_query_from_css_rule'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:192:in `block in css_internal'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:192:in `map'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:192:in `css_internal'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:107:in `css'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/rack_test/browser.rb:87:in `find'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/rack_test/driver.rb:71:in `find_css'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/base.rb:103:in `find_css'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/queries/selector_query.rb:110:in `block in resolve_for'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/base.rb:81:in `synchronize'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/queries/selector_query.rb:108:in `resolve_for'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/finders.rb:35:in `block in find'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/base.rb:85:in `synchronize'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/finders.rb:33:in `find'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/session.rb:699:in `block (2 levels) in <class:Session>'# ./lib/page_magic/element/query.rb:23:in `execute'# ./lib/page_magic/element_context.rb:35:in `find'# ./lib/page_magic/element_context.rb:24:in `method_missing'# ./spec/page_magic/element_context_spec.rb:49:in `block (4 levels) in <module:PageMagic>'
4) PageMagic::ElementContext#method_missing method is a element defintion more than one match found in the browser returns an array of element definitions
Failure/Error: raise AmbiguousQueryException, e.message
PageMagic::AmbiguousQueryException:
Ambiguous match, found 2 elements matching css "a"# ./lib/page_magic/element/query.rb:26:in `rescue in execute'# ./lib/page_magic/element/query.rb:18:in `execute'# ./lib/page_magic/element_context.rb:35:in `find'# ./lib/page_magic/element_context.rb:24:in `method_missing'# ./spec/page_magic/element_context_spec.rb:55:in `block (5 levels) in <module:PageMagic>'# ------------------# --- Caused by: ---# Capybara::Ambiguous:# Ambiguous match, found 2 elements matching css "a"# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/finders.rb:41:in `block in find'
5) PageMagic::InstanceMethods method_missing gives access to the elements defined on your page classes
Failure/Error: capybara_element.find(*args)
Nokogiri::CSS::SyntaxError:
unexpected '$' after ''# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/css/parser_extras.rb:87:in `on_error'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/css/parser_extras.rb:62:in `parse'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/css/parser_extras.rb:79:in `xpath_for'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/css.rb:23:in `xpath_for'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:198:in `block in xpath_query_from_css_rule'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:197:in `map'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:197:in `xpath_query_from_css_rule'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:192:in `block in css_internal'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:192:in `map'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:192:in `css_internal'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:107:in `css'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/rack_test/browser.rb:87:in `find'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/rack_test/driver.rb:71:in `find_css'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/base.rb:103:in `find_css'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/queries/selector_query.rb:110:in `block in resolve_for'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/base.rb:81:in `synchronize'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/queries/selector_query.rb:108:in `resolve_for'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/finders.rb:35:in `block in find'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/base.rb:85:in `synchronize'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/finders.rb:33:in `find'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/session.rb:699:in `block (2 levels) in <class:Session>'# ./lib/page_magic/element/query.rb:23:in `execute'# ./lib/page_magic/element_context.rb:35:in `find'# ./lib/page_magic/element_context.rb:24:in `method_missing'# ./lib/page_magic/instance_methods.rb:32:in `method_missing'# ./lib/page_magic/session.rb:71:in `method_missing'# ./spec/page_magic/instance_methods_spec.rb:84:in `block (3 levels) in <module:PageMagic>'
6) PageMagic::Element#method_missing no element definition and not a capybara method calls method on parent element
Failure/Error: capybara_element.find(*args)
Nokogiri::CSS::SyntaxError:
unexpected '$' after ''# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/css/parser_extras.rb:87:in `on_error'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/css/parser_extras.rb:62:in `parse'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/css/parser_extras.rb:79:in `xpath_for'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/css.rb:23:in `xpath_for'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:198:in `block in xpath_query_from_css_rule'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:197:in `map'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:197:in `xpath_query_from_css_rule'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:192:in `block in css_internal'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:192:in `map'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:192:in `css_internal'# /Users/rob/.gem/ruby/2.3.1/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:107:in `css'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/rack_test/node.rb:99:in `find_css'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/base.rb:103:in `find_css'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/queries/selector_query.rb:110:in `block in resolve_for'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/base.rb:81:in `synchronize'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/queries/selector_query.rb:108:in `resolve_for'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/finders.rb:35:in `block in find'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/base.rb:85:in `synchronize'# /Users/rob/.gem/ruby/2.3.1/gems/capybara-2.7.1/lib/capybara/node/finders.rb:33:in `find'# ./lib/page_magic/element/query.rb:23:in `execute'# ./lib/page_magic/element_context.rb:35:in `find'# ./lib/page_magic/element_context.rb:24:in `method_missing'# ./lib/page_magic/element.rb:90:in `method_missing'# ./spec/element_spec.rb:213:in `block (4 levels) in <module:PageMagic>'
7) PageMagic::Elements#element sets the selector and type
Failure/Error: expect(instance.element_by_name(:alias)).to eq(expected_definition)
expected: #<PageMagic::ElementDefinitionBuilder:0x007ff0dee92d30 @definition_class=PageMagic::Element, @selecto...ent::QueryBuilder:0x007ff0df0fea88 @type=:field>, @options={:multiple_results=>false}, @element=nil>
got: #<PageMagic::ElementDefinitionBuilder:0x007ff0dee91e30 @definition_class=#<Class:0x007ff0dee921f0>, @...lement::QueryBuilder:0x007ff0df0feab0 @type=nil>, @options={:multiple_results=>false}, @element=nil>
(compared using ==)
Diff:
@@ -1,9 +1,8 @@
-#<PageMagic::ElementDefinitionBuilder:0x007ff0dee92d30
- @definition_class=PageMagic::Element,
+#<PageMagic::ElementDefinitionBuilder:0x007ff0dee91e30
+ @definition_class=#<Class:0x007ff0dee921f0>,
@element=nil,
@options={:multiple_results=>false},
- @query_builder=
- #<PageMagic::Element::QueryBuilder:0x007ff0df0fea88 @type=:field>,
+ @query_builder=#<PageMagic::Element::QueryBuilder:0x007ff0df0feab0 @type=nil>,
@selector={:id=>"child"},
- @type=:text_field>
+ @type=:element># ./spec/page_magic/elements_spec.rb:27:in `block (3 levels) in <module:PageMagic>'
Finished in 1.33 seconds (files took 1.22 seconds to load)
226 examples, 7 failures
Failed examples:
rspec ./spec/page_magic/element_context_spec.rb:28 # PageMagic::ElementContext#method_missing method is a element defintion returns the sub page element
rspec ./spec/page_magic/element_context_spec.rb:33 # PageMagic::ElementContext#method_missing method is a element defintion passes arguments through to the element definition
rspec ./spec/page_magic/element_context_spec.rb:42 # PageMagic::ElementContext#method_missing method is a element defintion does not evaluate any of the other definitions
rspec ./spec/page_magic/element_context_spec.rb:53 # PageMagic::ElementContext#method_missing method is a element defintion more than one match found in the browser returns an array of element definitions
rspec ./spec/page_magic/instance_methods_spec.rb:83 # PageMagic::InstanceMethods method_missing gives access to the elements defined on your page classes
rspec ./spec/element_spec.rb:212 # PageMagic::Element#method_missing no element definition and not a capybara method calls method on parent element
rspec ./spec/page_magic/elements_spec.rb:21 # PageMagic::Elements#element sets the selector and type
Randomized with seed 39842
Coverage report generated for RSpec to /Users/rob/Dropbox/dev/projects/ruby/gems/page_magic/coverage. 525 / 528 LOC (99.43%) covered.
/Users/rob/.rubies/ruby-2.3.1/bin/ruby -I/Users/rob/.gem/ruby/2.3.1/gems/rspec-core-3.5.2/lib:/Users/rob/.gem/ruby/2.3.1/gems/rspec-support-3.5.0/lib /Users/rob/.gem/ruby/2.3.1/gems/rspec-core-3.5.2/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb failed
The text was updated successfully, but these errors were encountered:
@robisenberg, the answer to this one is a bit complicated but essentially it is down to a bug that occurred in ruby 2.3.
PageMagic::Elementsmakes use of the __callee__ method. This is used to record the kind of element a developer is declaring in their page class.
All methods that are used to declare page elements, e.g. text_field, select_list etc..., are are aliases of the PageMagic::Elements#element method and __callee__ should return the aliased name when the aliases are invoked. However, due to the bug mentioned above, the name returned is always element and in the tests, where it is a different kind of element that has been defined, this causes an invalid query to be built and executed against the browser. This in turn results in the Nokogiri error that you are seeing above. The last of the failing tests is also highlighting the problem by resolving the wrong type of Element.
In summary, I think the recommendation is to steer clear of this ruby version and use one in which the bug is not present. E.g. < 2.2 or > 2.4.
If you agree, we could add a release note to the readme or something and close this issue?
Summary
Using Ruby 2.3.1, when I run the specs with:
$ bundle exec rake
I get 7 failures as follows (full output below.) Am I doing something wrong?
I will try with Ruby 2.3.3 which Circle CI seems to be using, but still, I wouldn't expect that to make any difference. I wanted to make some changes, but don't want to start when tests are not passing.
Failing spec output
The text was updated successfully, but these errors were encountered: