elements in first legend of a disabled fieldset should not be disabled
This commit is contained in:
parent
920848e229
commit
8063472a37
|
@ -91,9 +91,9 @@ class Capybara::RackTest::Node < Capybara::Driver::Node
|
|||
|
||||
def disabled?
|
||||
if %w(option optgroup).include? tag_name
|
||||
string_node.disabled? || (find_xpath("parent::optgroup")[0] || find_xpath("parent::select")[0]).disabled?
|
||||
string_node.disabled? || find_xpath("parent::*[self::optgroup or self::select]")[0].disabled?
|
||||
else
|
||||
!!(string_node.disabled? || find_xpath("ancestor::fieldset[@disabled]")[0])
|
||||
string_node.disabled? || !find_xpath("parent::fieldset[@disabled] | ancestor::*[not(self::legend) or preceding-sibling::legend][parent::fieldset[@disabled]]").empty?
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -141,9 +141,9 @@ class Capybara::Selenium::Node < Capybara::Driver::Node
|
|||
# workaround for selenium-webdriver/geckodriver reporting elements as enabled when they are nested in disabling elements
|
||||
if driver.marionette?
|
||||
if %w(option optgroup).include? tag_name
|
||||
!native.enabled? || (find_xpath("parent::optgroup")[0] || find_xpath("parent::select")[0]).disabled?
|
||||
!native.enabled? || find_xpath("parent::*[self::optgroup or self::select]")[0].disabled?
|
||||
else
|
||||
!!(!native.enabled? || find_xpath("ancestor::fieldset[@disabled]")[0])
|
||||
!native.enabled? || !find_xpath("parent::fieldset[@disabled] | ancestor::*[not(self::legend) or preceding-sibling::legend][parent::fieldset[@disabled]]").empty?
|
||||
end
|
||||
else
|
||||
!native.enabled?
|
||||
|
|
|
@ -176,17 +176,25 @@ Capybara::SpecHelper.spec "node" do
|
|||
expect(@session.find('//option', text: "A.2")).not_to be_disabled
|
||||
end
|
||||
|
||||
it "should see inputs in a disabled fieldset as disabled" do
|
||||
@session.visit('/form')
|
||||
expect(@session.find('//input[@id="form_disabled_fieldset_child"]')).to be_disabled
|
||||
expect(@session.find('//input[@id="form_enabled_fieldset_child"]')).not_to be_disabled
|
||||
end
|
||||
context "in a disabled fieldset" do
|
||||
# https://html.spec.whatwg.org/#the-fieldset-element
|
||||
it "should see elements not in first legend as disabled" do
|
||||
@session.visit('/form')
|
||||
expect(@session.find('//input[@id="form_disabled_fieldset_child"]')).to be_disabled
|
||||
expect(@session.find('//input[@id="form_disabled_fieldset_second_legend_child"]')).to be_disabled
|
||||
expect(@session.find('//input[@id="form_enabled_fieldset_child"]')).not_to be_disabled
|
||||
end
|
||||
|
||||
it "should sees options in a disabled fieldset as disabled" do
|
||||
@session.visit('/form')
|
||||
expect(@session.find('//option', text: 'Disabled Child Option')).to be_disabled
|
||||
end
|
||||
it "should see elements in first legend as enabled" do
|
||||
@session.visit('/form')
|
||||
expect(@session.find('//input[@id="form_disabled_fieldset_legend_child"]')).not_to be_disabled
|
||||
end
|
||||
|
||||
it "should sees options not in first legend as disabled" do
|
||||
@session.visit('/form')
|
||||
expect(@session.find('//option', text: 'Disabled Child Option')).to be_disabled
|
||||
end
|
||||
end
|
||||
it "should be boolean" do
|
||||
@session.visit('/form')
|
||||
expect(@session.find('//select[@id="form_disabled_select"]/option').disabled?).to be true
|
||||
|
|
|
@ -363,7 +363,14 @@ New line after and before textarea tag
|
|||
</fieldset>
|
||||
|
||||
<fieldset disabled="disabled">
|
||||
<legend>Nested Disabled</legend>
|
||||
<legend>
|
||||
Nested Disabled
|
||||
<input type="checkbox" name="form[disabled_fieldeset_legend_child]" id="form_disabled_fieldset_legend_child"/>
|
||||
</legend>
|
||||
<legend>
|
||||
Another Legend
|
||||
<input type="checkbox" name="form[disabled_fieldeset_second_legend_child]" id="form_disabled_fieldset_second_legend_child"/>
|
||||
</legend>
|
||||
<p>
|
||||
<fieldset>
|
||||
<input name="form[disabled_fieldset_descendant]" id="form_disabled_fieldset_descendant"/>
|
||||
|
|
Loading…
Reference in New Issue