capybara 2.6.2 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/History.md +40 -15
- data/README.md +45 -38
- data/lib/capybara.rb +86 -10
- data/lib/capybara/cucumber.rb +1 -0
- data/lib/capybara/driver/base.rb +5 -2
- data/lib/capybara/driver/node.rb +1 -0
- data/lib/capybara/dsl.rb +1 -0
- data/lib/capybara/helpers.rb +3 -2
- data/lib/capybara/node/actions.rb +6 -0
- data/lib/capybara/node/base.rb +1 -0
- data/lib/capybara/node/document.rb +1 -0
- data/lib/capybara/node/document_matchers.rb +1 -0
- data/lib/capybara/node/element.rb +1 -0
- data/lib/capybara/node/finders.rb +3 -2
- data/lib/capybara/node/matchers.rb +72 -2
- data/lib/capybara/node/simple.rb +6 -3
- data/lib/capybara/queries/base_query.rb +1 -0
- data/lib/capybara/queries/current_path_query.rb +1 -0
- data/lib/capybara/queries/match_query.rb +21 -0
- data/lib/capybara/queries/selector_query.rb +138 -0
- data/lib/capybara/queries/text_query.rb +1 -0
- data/lib/capybara/queries/title_query.rb +1 -0
- data/lib/capybara/query.rb +3 -131
- data/lib/capybara/rack_test/browser.rb +1 -0
- data/lib/capybara/rack_test/css_handlers.rb +1 -0
- data/lib/capybara/rack_test/driver.rb +6 -4
- data/lib/capybara/rack_test/form.rb +1 -0
- data/lib/capybara/rack_test/node.rb +1 -0
- data/lib/capybara/rails.rb +2 -1
- data/lib/capybara/result.rb +1 -0
- data/lib/capybara/rspec.rb +1 -0
- data/lib/capybara/rspec/features.rb +1 -0
- data/lib/capybara/rspec/matchers.rb +54 -3
- data/lib/capybara/selector.rb +175 -75
- data/lib/capybara/selector/filter.rb +48 -0
- data/lib/capybara/selenium/driver.rb +24 -7
- data/lib/capybara/selenium/node.rb +1 -0
- data/lib/capybara/server.rb +38 -6
- data/lib/capybara/session.rb +30 -14
- data/lib/capybara/session/matchers.rb +2 -1
- data/lib/capybara/spec/public/test.js +6 -0
- data/lib/capybara/spec/session/accept_alert_spec.rb +2 -1
- data/lib/capybara/spec/session/accept_confirm_spec.rb +2 -1
- data/lib/capybara/spec/session/accept_prompt_spec.rb +2 -1
- data/lib/capybara/spec/session/all_spec.rb +1 -0
- data/lib/capybara/spec/session/assert_current_path.rb +1 -0
- data/lib/capybara/spec/session/assert_selector.rb +1 -0
- data/lib/capybara/spec/session/assert_text.rb +1 -0
- data/lib/capybara/spec/session/assert_title.rb +1 -0
- data/lib/capybara/spec/session/attach_file_spec.rb +1 -0
- data/lib/capybara/spec/session/body_spec.rb +1 -0
- data/lib/capybara/spec/session/check_spec.rb +1 -0
- data/lib/capybara/spec/session/choose_spec.rb +1 -0
- data/lib/capybara/spec/session/click_button_spec.rb +1 -0
- data/lib/capybara/spec/session/click_link_or_button_spec.rb +1 -0
- data/lib/capybara/spec/session/click_link_spec.rb +1 -0
- data/lib/capybara/spec/session/current_scope_spec.rb +2 -1
- data/lib/capybara/spec/session/current_url_spec.rb +1 -0
- data/lib/capybara/spec/session/dismiss_confirm_spec.rb +2 -1
- data/lib/capybara/spec/session/dismiss_prompt_spec.rb +2 -1
- data/lib/capybara/spec/session/element/assert_match_selector.rb +31 -0
- data/lib/capybara/spec/session/element/match_css_spec.rb +17 -0
- data/lib/capybara/spec/session/element/match_xpath_spec.rb +23 -0
- data/lib/capybara/spec/session/element/matches_selector_spec.rb +63 -0
- data/lib/capybara/spec/session/evaluate_script_spec.rb +1 -0
- data/lib/capybara/spec/session/execute_script_spec.rb +1 -0
- data/lib/capybara/spec/session/fill_in_spec.rb +1 -0
- data/lib/capybara/spec/session/find_button_spec.rb +1 -0
- data/lib/capybara/spec/session/find_by_id_spec.rb +1 -0
- data/lib/capybara/spec/session/find_field_spec.rb +1 -0
- data/lib/capybara/spec/session/find_link_spec.rb +1 -0
- data/lib/capybara/spec/session/find_spec.rb +1 -0
- data/lib/capybara/spec/session/first_spec.rb +1 -0
- data/lib/capybara/spec/session/go_back_spec.rb +1 -0
- data/lib/capybara/spec/session/go_forward_spec.rb +1 -0
- data/lib/capybara/spec/session/has_button_spec.rb +1 -0
- data/lib/capybara/spec/session/has_css_spec.rb +1 -0
- data/lib/capybara/spec/session/has_current_path_spec.rb +1 -0
- data/lib/capybara/spec/session/has_field_spec.rb +13 -0
- data/lib/capybara/spec/session/has_link_spec.rb +1 -0
- data/lib/capybara/spec/session/has_select_spec.rb +19 -0
- data/lib/capybara/spec/session/has_selector_spec.rb +6 -0
- data/lib/capybara/spec/session/has_table_spec.rb +1 -0
- data/lib/capybara/spec/session/has_text_spec.rb +1 -0
- data/lib/capybara/spec/session/has_title_spec.rb +1 -0
- data/lib/capybara/spec/session/has_xpath_spec.rb +1 -0
- data/lib/capybara/spec/session/headers.rb +1 -0
- data/lib/capybara/spec/session/html_spec.rb +1 -0
- data/lib/capybara/spec/session/node_spec.rb +29 -0
- data/lib/capybara/spec/session/reset_session_spec.rb +35 -1
- data/lib/capybara/spec/session/response_code.rb +1 -0
- data/lib/capybara/spec/session/save_and_open_page_spec.rb +1 -0
- data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +3 -2
- data/lib/capybara/spec/session/save_page_spec.rb +34 -2
- data/lib/capybara/spec/session/save_screenshot_spec.rb +31 -1
- data/lib/capybara/spec/session/screenshot_spec.rb +3 -1
- data/lib/capybara/spec/session/select_spec.rb +1 -0
- data/lib/capybara/spec/session/selectors_spec.rb +35 -0
- data/lib/capybara/spec/session/text_spec.rb +1 -0
- data/lib/capybara/spec/session/title_spec.rb +2 -1
- data/lib/capybara/spec/session/uncheck_spec.rb +1 -0
- data/lib/capybara/spec/session/unselect_spec.rb +1 -0
- data/lib/capybara/spec/session/visit_spec.rb +1 -0
- data/lib/capybara/spec/session/window/become_closed_spec.rb +1 -0
- data/lib/capybara/spec/session/window/current_window_spec.rb +1 -0
- data/lib/capybara/spec/session/window/open_new_window_spec.rb +1 -0
- data/lib/capybara/spec/session/window/switch_to_window_spec.rb +1 -0
- data/lib/capybara/spec/session/window/window_opened_by_spec.rb +1 -0
- data/lib/capybara/spec/session/window/window_spec.rb +1 -8
- data/lib/capybara/spec/session/window/windows_spec.rb +1 -0
- data/lib/capybara/spec/session/window/within_window_spec.rb +2 -3
- data/lib/capybara/spec/session/within_frame_spec.rb +1 -0
- data/lib/capybara/spec/session/within_spec.rb +1 -0
- data/lib/capybara/spec/spec_helper.rb +2 -0
- data/lib/capybara/spec/test_app.rb +1 -0
- data/lib/capybara/spec/views/buttons.erb +1 -0
- data/lib/capybara/spec/views/fieldsets.erb +2 -1
- data/lib/capybara/spec/views/form.erb +24 -0
- data/lib/capybara/spec/views/frame_child.erb +2 -1
- data/lib/capybara/spec/views/frame_one.erb +2 -1
- data/lib/capybara/spec/views/frame_parent.erb +2 -1
- data/lib/capybara/spec/views/frame_two.erb +2 -1
- data/lib/capybara/spec/views/header_links.erb +1 -0
- data/lib/capybara/spec/views/host_links.erb +1 -0
- data/lib/capybara/spec/views/path.erb +1 -0
- data/lib/capybara/spec/views/popup_one.erb +1 -0
- data/lib/capybara/spec/views/popup_two.erb +1 -0
- data/lib/capybara/spec/views/postback.erb +2 -1
- data/lib/capybara/spec/views/tables.erb +1 -0
- data/lib/capybara/spec/views/with_base_tag.erb +1 -0
- data/lib/capybara/spec/views/with_count.erb +2 -1
- data/lib/capybara/spec/views/with_hover.erb +2 -1
- data/lib/capybara/spec/views/with_html.erb +3 -0
- data/lib/capybara/spec/views/with_html_entities.erb +1 -0
- data/lib/capybara/spec/views/with_js.erb +5 -0
- data/lib/capybara/spec/views/with_scope.erb +1 -0
- data/lib/capybara/spec/views/with_simple_html.erb +2 -1
- data/lib/capybara/spec/views/with_slow_unload.erb +17 -0
- data/lib/capybara/spec/views/with_title.erb +2 -1
- data/lib/capybara/spec/views/with_unload_alert.erb +12 -0
- data/lib/capybara/spec/views/with_windows.erb +1 -0
- data/lib/capybara/spec/views/within_frames.erb +2 -1
- data/lib/capybara/version.rb +2 -1
- data/lib/capybara/window.rb +1 -0
- data/spec/basic_node_spec.rb +1 -0
- data/spec/capybara_spec.rb +28 -1
- data/spec/dsl_spec.rb +1 -0
- data/spec/fixtures/selenium_driver_rspec_failure.rb +1 -0
- data/spec/fixtures/selenium_driver_rspec_success.rb +1 -0
- data/spec/rack_test_spec.rb +1 -0
- data/spec/result_spec.rb +1 -0
- data/spec/rspec/features_spec.rb +1 -0
- data/spec/rspec/matchers_spec.rb +1 -0
- data/spec/rspec/scenarios_spec.rb +1 -0
- data/spec/rspec/views_spec.rb +1 -0
- data/spec/rspec_spec.rb +1 -0
- data/spec/selector_spec.rb +55 -1
- data/spec/selenium_spec.rb +6 -2
- data/spec/selenium_spec_chrome.rb +1 -0
- data/spec/server_spec.rb +101 -13
- data/spec/spec_helper.rb +1 -0
- metadata +16 -6
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'launchy'
|
2
3
|
|
3
4
|
Capybara::SpecHelper.spec '#save_and_open_screenshot' do
|
@@ -25,8 +26,8 @@ Capybara::SpecHelper.spec '#save_and_open_screenshot' do
|
|
25
26
|
@session.save_and_open_screenshot(custom_path)
|
26
27
|
|
27
28
|
expect(@session.driver).to have_received(:save_screenshot).
|
28
|
-
with(custom_path
|
29
|
-
expect(Launchy).to have_received(:open).with(custom_path)
|
29
|
+
with(/#{custom_path}$/, {})
|
30
|
+
expect(Launchy).to have_received(:open).with(/#{custom_path}$/)
|
30
31
|
end
|
31
32
|
|
32
33
|
context 'when launchy cannot be required' do
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
Capybara::SpecHelper.spec '#save_page' do
|
2
3
|
let(:alternative_path) { File.join(Dir.pwd, "save_and_open_page_tmp") }
|
3
4
|
before do
|
@@ -6,6 +7,7 @@ Capybara::SpecHelper.spec '#save_page' do
|
|
6
7
|
|
7
8
|
after do
|
8
9
|
Capybara.save_and_open_page_path = nil
|
10
|
+
Capybara.save_path = nil
|
9
11
|
Dir.glob("capybara-*.html").each do |file|
|
10
12
|
FileUtils.rm(file)
|
11
13
|
end
|
@@ -25,7 +27,7 @@ Capybara::SpecHelper.spec '#save_page' do
|
|
25
27
|
end
|
26
28
|
|
27
29
|
it "can store files in a specified directory" do
|
28
|
-
Capybara.
|
30
|
+
Capybara.save_path = alternative_path
|
29
31
|
@session.save_page
|
30
32
|
path = Dir.glob(alternative_path + "/capybara-*.html").first
|
31
33
|
expect(File.read(path)).to include("Another World")
|
@@ -36,6 +38,20 @@ Capybara::SpecHelper.spec '#save_page' do
|
|
36
38
|
expect(File.read("capybara-001122.html")).to include("Another World")
|
37
39
|
end
|
38
40
|
|
41
|
+
it "can store files in a specified directory with a given filename" do
|
42
|
+
Capybara.save_path = alternative_path
|
43
|
+
@session.save_page("capybara-001133.html")
|
44
|
+
path = alternative_path + "/capybara-001133.html"
|
45
|
+
expect(File.read(path)).to include("Another World")
|
46
|
+
end
|
47
|
+
|
48
|
+
it "can store files in a specified directory with a given relative filename" do
|
49
|
+
Capybara.save_path = alternative_path
|
50
|
+
@session.save_page("tmp/capybara-001144.html")
|
51
|
+
path = alternative_path + "/tmp/capybara-001144.html"
|
52
|
+
expect(File.read(path)).to include("Another World")
|
53
|
+
end
|
54
|
+
|
39
55
|
it "returns an absolute path in pwd" do
|
40
56
|
result = @session.save_page
|
41
57
|
path = File.expand_path(Dir.glob("capybara-*.html").first, Dir.pwd)
|
@@ -43,7 +59,7 @@ Capybara::SpecHelper.spec '#save_page' do
|
|
43
59
|
end
|
44
60
|
|
45
61
|
it "returns an absolute path in given directory" do
|
46
|
-
Capybara.
|
62
|
+
Capybara.save_path = alternative_path
|
47
63
|
result = @session.save_page
|
48
64
|
path = File.expand_path(Dir.glob(alternative_path + "/capybara-*.html").first, alternative_path)
|
49
65
|
expect(result).to eq(path)
|
@@ -88,4 +104,20 @@ Capybara::SpecHelper.spec '#save_page' do
|
|
88
104
|
expect(result).to include("Bar")
|
89
105
|
end
|
90
106
|
end
|
107
|
+
|
108
|
+
context "with deprecated save_and_open_page_path" do
|
109
|
+
it "can store files in a specified directory" do
|
110
|
+
Capybara.save_and_open_page_path = alternative_path
|
111
|
+
@session.save_page
|
112
|
+
path = Dir.glob(alternative_path + "/capybara-*.html").first
|
113
|
+
expect(File.read(path)).to include("Another World")
|
114
|
+
end
|
115
|
+
|
116
|
+
it "returns an absolute path in given directory" do
|
117
|
+
Capybara.save_and_open_page_path = alternative_path
|
118
|
+
result = @session.save_page
|
119
|
+
path = File.expand_path(Dir.glob(alternative_path + "/capybara-*.html").first, alternative_path)
|
120
|
+
expect(result).to eq(path)
|
121
|
+
end
|
122
|
+
end
|
91
123
|
end
|
@@ -1,8 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
Capybara::SpecHelper.spec '#save_screenshot', requires: [:screenshot] do
|
3
|
+
let(:alternative_path) { File.join(Dir.pwd, "save_screenshot_tmp") }
|
2
4
|
before do
|
3
5
|
@session.visit '/foo'
|
4
6
|
end
|
5
7
|
|
8
|
+
after do
|
9
|
+
Capybara.save_and_open_page_path = nil
|
10
|
+
Capybara.save_path = nil
|
11
|
+
FileUtils.rm_rf alternative_path
|
12
|
+
end
|
13
|
+
|
6
14
|
it "generates sensible filename" do
|
7
15
|
allow(@session.driver).to receive(:save_screenshot)
|
8
16
|
|
@@ -18,6 +26,28 @@ Capybara::SpecHelper.spec '#save_screenshot', requires: [:screenshot] do
|
|
18
26
|
custom_path = 'screenshots/1.png'
|
19
27
|
@session.save_screenshot(custom_path)
|
20
28
|
|
21
|
-
expect(@session.driver).to have_received(:save_screenshot).with(custom_path
|
29
|
+
expect(@session.driver).to have_received(:save_screenshot).with(/#{custom_path}$/, {})
|
30
|
+
end
|
31
|
+
|
32
|
+
context "with Capybara.save_path" do
|
33
|
+
it "file is generated in the correct location" do
|
34
|
+
Capybara.save_path = alternative_path
|
35
|
+
allow(@session.driver).to receive(:save_screenshot)
|
36
|
+
|
37
|
+
@session.save_screenshot
|
38
|
+
|
39
|
+
regexp = Regexp.new(File.expand_path('capybara-\d+\.png', alternative_path))
|
40
|
+
expect(@session.driver).to have_received(:save_screenshot).with(regexp, {})
|
41
|
+
end
|
42
|
+
|
43
|
+
it "relative paths are relative to save_path" do
|
44
|
+
Capybara.save_path = alternative_path
|
45
|
+
allow(@session.driver).to receive(:save_screenshot)
|
46
|
+
|
47
|
+
custom_path = 'screenshots/2.png'
|
48
|
+
@session.save_screenshot(custom_path)
|
49
|
+
|
50
|
+
expect(@session.driver).to have_received(:save_screenshot).with(File.expand_path(custom_path, alternative_path), {})
|
51
|
+
end
|
22
52
|
end
|
23
53
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
Capybara::SpecHelper.spec Capybara::Selector do
|
2
|
+
before do
|
3
|
+
@session.visit('/form')
|
4
|
+
end
|
5
|
+
|
6
|
+
describe ":label selector" do
|
7
|
+
it "finds a label by text" do
|
8
|
+
expect(@session.find(:label, 'Customer Name').text).to eq 'Customer Name'
|
9
|
+
end
|
10
|
+
|
11
|
+
it "finds a label by for attribute string" do
|
12
|
+
expect(@session.find(:label, for: 'form_other_title')['for']).to eq 'form_other_title'
|
13
|
+
end
|
14
|
+
|
15
|
+
it "finds a label from nested input using :for filter" do
|
16
|
+
input = @session.find(:id, 'nested_label')
|
17
|
+
expect(@session.find(:label, for: input).text).to eq 'Nested Label'
|
18
|
+
end
|
19
|
+
|
20
|
+
it "finds the label for an non-nested element when using :for filter" do
|
21
|
+
select = @session.find(:id, 'form_other_title')
|
22
|
+
expect(@session.find(:label, for: select)['for']).to eq 'form_other_title'
|
23
|
+
end
|
24
|
+
|
25
|
+
context "with exact option" do
|
26
|
+
it "matches substrings" do
|
27
|
+
expect(@session.find(:label, 'Customer Na', exact: false).text).to eq 'Customer Name'
|
28
|
+
end
|
29
|
+
|
30
|
+
it "doesn't match substrings" do
|
31
|
+
expect { @session.find(:label, 'Customer Na', exact: true) }.to raise_error(Capybara::ElementNotFound)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
Capybara::SpecHelper.spec Capybara::Window, requires: [:windows] do
|
2
3
|
before(:each) do
|
3
4
|
@window = @session.current_window
|
@@ -86,14 +87,10 @@ Capybara::SpecHelper.spec Capybara::Window, requires: [:windows] do
|
|
86
87
|
|
87
88
|
describe '#size' do
|
88
89
|
it 'should return size of whole window', requires: [:windows, :js] do
|
89
|
-
skip "Chromedriver returns a size larger than outerWidth, outerHeight???" if ENV['TRAVIS'] && @session.respond_to?(:mode) && (@session.mode == :selenium_chrome)
|
90
|
-
|
91
90
|
expect(@session.current_window.size).to eq @session.evaluate_script("[window.outerWidth, window.outerHeight];")
|
92
91
|
end
|
93
92
|
|
94
93
|
it 'should switch to original window if invoked not for current window' do
|
95
|
-
skip "Chromedriver returns a size larger than outerWidth, outerHeight???" if ENV['TRAVIS'] && @session.respond_to?(:mode) && (@session.mode == :selenium_chrome)
|
96
|
-
|
97
94
|
@other_window = @session.window_opened_by do
|
98
95
|
@session.find(:css, '#openWindow').click
|
99
96
|
end
|
@@ -132,8 +129,6 @@ Capybara::SpecHelper.spec Capybara::Window, requires: [:windows] do
|
|
132
129
|
|
133
130
|
describe '#maximize' do
|
134
131
|
it 'should be able to maximize window', requires: [:windows, :js] do
|
135
|
-
skip "This test fails when run with Firefox on Travis - see issue #1493 - skipping for now" if ENV['TRAVIS'] && @session.respond_to?(:mode) && (@session.mode == :selenium_focus)
|
136
|
-
|
137
132
|
screen_width, screen_height = @session.evaluate_script("[window.screen.availWidth, window.screen.availHeight];")
|
138
133
|
window = @session.current_window
|
139
134
|
window.resize_to(screen_width-100, screen_height-100)
|
@@ -144,8 +139,6 @@ Capybara::SpecHelper.spec Capybara::Window, requires: [:windows] do
|
|
144
139
|
end
|
145
140
|
|
146
141
|
it 'should stay on current window if invoked not for current window', requires: [:windows, :js] do
|
147
|
-
skip "This test fails when run with Firefox on Travis - see issue #1493 - skipping for now" if ENV['TRAVIS'] && @session.respond_to?(:mode) && (@session.mode == :selenium_focus)
|
148
|
-
|
149
142
|
@other_window = @session.window_opened_by do
|
150
143
|
@session.find(:css, '#openWindow').click
|
151
144
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
Capybara::SpecHelper.spec '#within_window', requires: [:windows] do
|
2
3
|
before(:each) do
|
3
4
|
@window = @session.current_window
|
@@ -132,9 +133,7 @@ Capybara::SpecHelper.spec '#within_window', requires: [:windows] do
|
|
132
133
|
|
133
134
|
context "with string" do
|
134
135
|
it "should warn" do
|
135
|
-
expect(@session).to receive(:warn).with(
|
136
|
-
"to #within_window is deprecated. Pass window object or lambda. "\
|
137
|
-
"(called from #{__FILE__}:138)").and_call_original
|
136
|
+
expect(@session).to receive(:warn).with(/DEPRECATION WARNING/).and_call_original
|
138
137
|
@session.within_window('firstPopup') {}
|
139
138
|
end
|
140
139
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
<%# frozen_string_literal: true %>
|
1
2
|
<h1>Form</h1>
|
2
3
|
|
3
4
|
<form action="/form" method="post">
|
@@ -153,6 +154,10 @@ New line after and before textarea tag
|
|
153
154
|
<label for="gender_both">Both</label>
|
154
155
|
</p>
|
155
156
|
|
157
|
+
<p>
|
158
|
+
<input type="checkbox" id="no_attr_value_checked" value="1" checked/>
|
159
|
+
</p>
|
160
|
+
|
156
161
|
<p>
|
157
162
|
<input type="checkbox" value="dog" name="form[pets][]" id="form_pets_dog" checked="checked"/>
|
158
163
|
<label for="form_pets_dog">Dog</label>
|
@@ -292,6 +297,16 @@ New line after and before textarea tag
|
|
292
297
|
</label>
|
293
298
|
</p>
|
294
299
|
|
300
|
+
<p>
|
301
|
+
<label for="form_disabled_select2">
|
302
|
+
Disabled Select 2
|
303
|
+
<select name="form[disabled_select2]" id="form_disabled_select2" disabled>
|
304
|
+
<option value="Should not see me" selected="selected">Should not see me</option>
|
305
|
+
</select>
|
306
|
+
</label>
|
307
|
+
</p>
|
308
|
+
|
309
|
+
|
295
310
|
<p>
|
296
311
|
<label for="form_disabled_file">
|
297
312
|
Disabled File
|
@@ -318,6 +333,11 @@ New line after and before textarea tag
|
|
318
333
|
|
319
334
|
<input type="text" name="form[outside_input]" value="outside_input" form="form1"/>
|
320
335
|
|
336
|
+
<label>
|
337
|
+
Nested Label
|
338
|
+
<input type="text" name="nested_label" id="nested_label"/>
|
339
|
+
</label>
|
340
|
+
|
321
341
|
<form id="form1" action="/form" method="post">
|
322
342
|
<input type="text" name="form[which_form]" value="form1" id="form_which_form"/>
|
323
343
|
<input type="text" name="form[for_form2]" value="for_form2" form="form2"/>
|
@@ -423,6 +443,10 @@ New line after and before textarea tag
|
|
423
443
|
<label for="html5_email">Html5 Email</label>
|
424
444
|
<input type="email" name="form[html5_email]" value="person@email.com" id="html5_email"/>
|
425
445
|
</p>
|
446
|
+
<p>
|
447
|
+
<label for="html5_multiple_email">Html5 Multiple Email</label>
|
448
|
+
<input type="email" multiple name="form[html5_multiple_email]" value="person@email.com" id="html5_multiple_email"/>
|
449
|
+
</p>
|
426
450
|
<p>
|
427
451
|
<label for="html5_url">Html5 Url</label>
|
428
452
|
<input type="url" name="form[html5_url]" value="http://www.example.com" id="html5_url"/>
|
@@ -1,3 +1,4 @@
|
|
1
|
+
<%# frozen_string_literal: true %>
|
1
2
|
<html>
|
2
3
|
<head>
|
3
4
|
<title>This is the child frame title</title>
|
@@ -6,4 +7,4 @@
|
|
6
7
|
<iframe src="/frame_one" id="grandchildFrame1"></iframe>
|
7
8
|
<iframe src="/frame_two" id="grandchildFrame2"></iframe>
|
8
9
|
</body>
|
9
|
-
</html>
|
10
|
+
</html>
|