watir-webdriver 0.0.1.dev5 → 0.0.1.dev6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. data/Rakefile +13 -19
  2. data/VERSION +1 -1
  3. data/lib/watir-webdriver.rb +3 -1
  4. data/lib/watir-webdriver/base_element.rb +33 -27
  5. data/lib/watir-webdriver/browser.rb +2 -6
  6. data/lib/watir-webdriver/elements/font.rb +12 -0
  7. data/lib/watir-webdriver/elements/generated.rb +1027 -622
  8. data/lib/watir-webdriver/elements/select_list.rb +3 -3
  9. data/lib/watir-webdriver/locators/element_locator.rb +2 -2
  10. data/lib/watir-webdriver/xpath_support.rb +2 -2
  11. data/support/html5/html5.idl +942 -483
  12. data/support/html5/old/html5.idl +962 -0
  13. data/support/html5/{html5_extras.idl → old/html5_extras.idl} +0 -2
  14. data/support/html5/watir_visitor.rb +23 -19
  15. metadata +74 -100
  16. data/spec/watirspec/area_spec.rb +0 -78
  17. data/spec/watirspec/areas_spec.rb +0 -31
  18. data/spec/watirspec/browser_spec.rb +0 -274
  19. data/spec/watirspec/button_spec.rb +0 -242
  20. data/spec/watirspec/buttons_spec.rb +0 -48
  21. data/spec/watirspec/checkbox_spec.rb +0 -272
  22. data/spec/watirspec/checkboxes_spec.rb +0 -32
  23. data/spec/watirspec/dd_spec.rb +0 -123
  24. data/spec/watirspec/dds_spec.rb +0 -31
  25. data/spec/watirspec/div_spec.rb +0 -211
  26. data/spec/watirspec/divs_spec.rb +0 -31
  27. data/spec/watirspec/dl_spec.rb +0 -123
  28. data/spec/watirspec/dls_spec.rb +0 -32
  29. data/spec/watirspec/dt_spec.rb +0 -123
  30. data/spec/watirspec/dts_spec.rb +0 -31
  31. data/spec/watirspec/element_spec.rb +0 -89
  32. data/spec/watirspec/em_spec.rb +0 -97
  33. data/spec/watirspec/ems_spec.rb +0 -32
  34. data/spec/watirspec/filefield_spec.rb +0 -119
  35. data/spec/watirspec/filefields_spec.rb +0 -32
  36. data/spec/watirspec/form_spec.rb +0 -63
  37. data/spec/watirspec/forms_spec.rb +0 -33
  38. data/spec/watirspec/frame_spec.rb +0 -129
  39. data/spec/watirspec/frames_spec.rb +0 -62
  40. data/spec/watirspec/hidden_spec.rb +0 -102
  41. data/spec/watirspec/hiddens_spec.rb +0 -32
  42. data/spec/watirspec/hn_spec.rb +0 -93
  43. data/spec/watirspec/hns_spec.rb +0 -38
  44. data/spec/watirspec/image_spec.rb +0 -207
  45. data/spec/watirspec/images_spec.rb +0 -31
  46. data/spec/watirspec/label_spec.rb +0 -75
  47. data/spec/watirspec/labels_spec.rb +0 -31
  48. data/spec/watirspec/li_spec.rb +0 -112
  49. data/spec/watirspec/lib/guards.rb +0 -59
  50. data/spec/watirspec/lib/server.rb +0 -127
  51. data/spec/watirspec/lib/spec_helper.rb +0 -79
  52. data/spec/watirspec/lib/watirspec.rb +0 -72
  53. data/spec/watirspec/link_spec.rb +0 -168
  54. data/spec/watirspec/links_spec.rb +0 -35
  55. data/spec/watirspec/lis_spec.rb +0 -31
  56. data/spec/watirspec/map_spec.rb +0 -76
  57. data/spec/watirspec/maps_spec.rb +0 -32
  58. data/spec/watirspec/meta_spec.rb +0 -22
  59. data/spec/watirspec/metas_spec.rb +0 -30
  60. data/spec/watirspec/ol_spec.rb +0 -78
  61. data/spec/watirspec/ols_spec.rb +0 -31
  62. data/spec/watirspec/option_spec.rb +0 -173
  63. data/spec/watirspec/p_spec.rb +0 -128
  64. data/spec/watirspec/pre_spec.rb +0 -112
  65. data/spec/watirspec/pres_spec.rb +0 -31
  66. data/spec/watirspec/ps_spec.rb +0 -31
  67. data/spec/watirspec/radio_spec.rb +0 -255
  68. data/spec/watirspec/radios_spec.rb +0 -32
  69. data/spec/watirspec/select_list_spec.rb +0 -318
  70. data/spec/watirspec/select_lists_spec.rb +0 -35
  71. data/spec/watirspec/span_spec.rb +0 -142
  72. data/spec/watirspec/spans_spec.rb +0 -31
  73. data/spec/watirspec/spec_helper.rb +0 -17
  74. data/spec/watirspec/strong_spec.rb +0 -89
  75. data/spec/watirspec/strongs_spec.rb +0 -32
  76. data/spec/watirspec/table_bodies_spec.rb +0 -45
  77. data/spec/watirspec/table_body_spec.rb +0 -98
  78. data/spec/watirspec/table_cell_spec.rb +0 -68
  79. data/spec/watirspec/table_cells_spec.rb +0 -47
  80. data/spec/watirspec/table_footer_spec.rb +0 -85
  81. data/spec/watirspec/table_footers_spec.rb +0 -47
  82. data/spec/watirspec/table_header_spec.rb +0 -85
  83. data/spec/watirspec/table_headers_spec.rb +0 -45
  84. data/spec/watirspec/table_row_spec.rb +0 -87
  85. data/spec/watirspec/table_rows_spec.rb +0 -50
  86. data/spec/watirspec/table_spec.rb +0 -160
  87. data/spec/watirspec/tables_spec.rb +0 -33
  88. data/spec/watirspec/text_field_spec.rb +0 -276
  89. data/spec/watirspec/text_fields_spec.rb +0 -35
  90. data/spec/watirspec/ul_spec.rb +0 -76
  91. data/spec/watirspec/uls_spec.rb +0 -33
  92. data/support/html5/idl_extractor.rb +0 -73
@@ -1,59 +0,0 @@
1
- # encoding: utf-8
2
- module WatirSpec
3
- module Guards
4
-
5
- class << self
6
- def guards
7
- @guards ||= Hash.new { |hash, key| hash[key] = [] }
8
- end
9
-
10
- def record(guard_name, impls, data)
11
- impls.each do |impl|
12
- guards[impl] << [guard_name, data]
13
- end
14
- end
15
-
16
- def report
17
- gs = guards[WatirSpec.implementation]
18
- print "\n\nWatirSpec guards for this implementation: "
19
-
20
- if gs.empty?
21
- puts "none."
22
- else
23
- puts
24
- gs.each do |guard_name, data|
25
- puts "\t#{guard_name.to_s.ljust(20)}: #{data.inspect}"
26
- end
27
- end
28
- end
29
- end
30
-
31
- def deviates_on(*impls)
32
- Guards.record :deviates, impls, :file => caller.first
33
- return yield if WatirSpec.unguarded?
34
- yield if impls.include? WatirSpec.implementation
35
- end
36
-
37
- def not_compliant_on(*impls)
38
- Guards.record :not_compliant, impls, :file => caller.first
39
- return yield if WatirSpec.unguarded?
40
- yield unless impls.include? WatirSpec.implementation
41
- end
42
-
43
- def compliant_on(*impls)
44
- Guards.record :compliant, impls, :file => caller.first
45
- return yield if WatirSpec.unguarded?
46
- yield if impls.include? WatirSpec.implementation
47
- end
48
-
49
- def bug(key, *impls)
50
- Guards.record :bug, impls, :file => caller.first, :key => key
51
- return yield if WatirSpec.unguarded?
52
- yield unless impls.include? WatirSpec.implementation
53
- end
54
- end
55
- end
56
-
57
- class Object
58
- include WatirSpec::Guards
59
- end
@@ -1,127 +0,0 @@
1
- # encoding: utf-8
2
- module WatirSpec
3
- class Server < Sinatra::Base
4
- class << self
5
- attr_accessor :autorun
6
-
7
- def run_async
8
- case WatirSpec.platform
9
- when :java
10
- Thread.new { run! }
11
- sleep 0.1 until WatirSpec::Server.running?
12
- when :windows
13
- require "win32/process"
14
- pid = Process.create(
15
- :app_name => "#{WatirSpec.ruby} #{File.dirname(__FILE__)}/../spec_helper.rb",
16
- :process_inherit => true,
17
- :thread_inherit => true,
18
- :inherit => true
19
- ).process_id
20
- else
21
- pid = fork { run! }
22
- sleep 1
23
- end
24
-
25
- if pid
26
- # is this really necessary?
27
- at_exit {
28
- begin
29
- Process.kill 0, pid
30
- alive = true
31
- rescue Errno::ESRCH
32
- alive = false
33
- end
34
-
35
- Process.kill(9, pid) if alive
36
- }
37
- end
38
- end
39
-
40
- def run!
41
- handler = detect_rack_handler
42
- handler.run(self, :Host => host, :Port => port) { @running = true }
43
- end
44
-
45
- def autorun
46
- @autorun ||= true
47
- end
48
-
49
- def should_run?
50
- autorun && !running?
51
- end
52
-
53
- def running?
54
- defined?(@running) && @running
55
- end
56
- end # class << Server
57
-
58
- set :public, WatirSpec.html
59
- set :static, true
60
- set :run, false
61
- set :environment, :production
62
- set :host, "localhost" if WatirSpec.platform == :windows
63
- set :port, 2000
64
- set :server, %w[mongrel webrick]
65
-
66
- get '/' do
67
- self.class.name
68
- end
69
-
70
- post '/post_to_me' do
71
- "You posted the following content:\n#{ env['rack.input'].read }"
72
- end
73
-
74
- get '/plain_text' do
75
- content_type 'text/plain'
76
- 'This is text/plain'
77
- end
78
-
79
- get '/ajax' do
80
- sleep 10
81
- "A slooow ajax response"
82
- end
83
-
84
- get '/charset_mismatch' do
85
- content_type 'text/html; charset=UTF-8'
86
- <<-HTML
87
- <html>
88
- <head>
89
- <meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" />
90
- </head>
91
- <body>
92
- <h1>ø</h1>
93
- </body>
94
- </html>
95
- HTML
96
- end
97
-
98
- get '/octet_stream' do
99
- content_type 'application/octet-stream'
100
- 'This is application/octet-stream'
101
- end
102
-
103
- get '/set_cookie' do
104
- content_type 'text/plain'
105
- headers 'Set-Cookie' => "monster=/"
106
-
107
- "C is for cookie, it's good enough for me"
108
- end
109
-
110
- get '/header_echo' do
111
- content_type 'text/plain'
112
- env.inspect
113
- end
114
-
115
- get '/authentication' do
116
- auth = Rack::Auth::Basic::Request.new(env)
117
-
118
- unless auth.provided? && auth.credentials == %w[foo bar]
119
- headers 'WWW-Authenticate' => %(Basic realm="localhost")
120
- halt 401, 'Authorization Required'
121
- end
122
-
123
- "ok"
124
- end
125
-
126
- end # Server
127
- end # WatirSpec
@@ -1,79 +0,0 @@
1
- # encoding: utf-8
2
- module WatirSpec
3
- module SpecHelper
4
-
5
- module BrowserHelper
6
- def browser; @browser; end
7
- end
8
-
9
- module PersistentBrowserHelper
10
- def browser; $browser; end
11
- end
12
-
13
- module MessagesHelper
14
- def messages
15
- browser.div(:id, 'messages').divs.map { |d| d.text }
16
- end
17
- end
18
-
19
- module_function
20
-
21
- def execute
22
- load_requires
23
- configure
24
- start_server
25
- add_guard_hook
26
- end
27
-
28
- def configure
29
- Thread.abort_on_exception = true
30
-
31
- Spec::Runner.configure do |config|
32
- config.include(MessagesHelper)
33
-
34
- if WatirSpec.persistent_browser == false
35
- config.include(BrowserHelper)
36
-
37
- config.before(:all) { @browser = WatirSpec.new_browser }
38
- config.after(:all) { @browser.close if @browser }
39
- else
40
- config.include(PersistentBrowserHelper)
41
- $browser = WatirSpec.new_browser
42
- at_exit { $browser.close }
43
- end
44
- end
45
- end
46
-
47
- def load_requires
48
- # load spec_helper from containing folder, if it exists
49
- hook = File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper.rb")
50
- raise(Errno::ENOENT, hook) unless File.exist?(hook)
51
-
52
- load hook
53
- require "fileutils"
54
- require "spec"
55
-
56
- begin
57
- require "ruby-debug"
58
- Debugger.start
59
- Debugger.settings[:autoeval] = true
60
- Debugger.settings[:autolist] = 1
61
- rescue LoadError
62
- end
63
- end
64
-
65
- def start_server
66
- if WatirSpec::Server.should_run?
67
- WatirSpec::Server.run_async
68
- else
69
- $stderr.puts "not running WatirSpec::Server"
70
- end
71
- end
72
-
73
- def add_guard_hook
74
- return if WatirSpec.unguarded?
75
- at_exit { WatirSpec::Guards.report }
76
- end
77
-
78
- end # SpecHelper
79
- end # WatirSpec
@@ -1,72 +0,0 @@
1
- # encoding: utf-8
2
- module WatirSpec
3
- class << self
4
- attr_accessor :browser_args, :persistent_browser, :unguarded, :implementation
5
-
6
- def html
7
- File.expand_path("#{File.dirname(__FILE__)}/../html")
8
- end
9
-
10
- def files
11
- "file://#{html}"
12
- end
13
-
14
- def host
15
- "http://#{Server.host}:#{Server.port}"
16
- end
17
-
18
- def unguarded?
19
- @unguarded ||= false
20
- end
21
-
22
- def platform
23
- @platform ||= case RUBY_PLATFORM
24
- when /java/
25
- :java
26
- when /mswin|msys|mingw32/
27
- :windows
28
- when /darwin/
29
- :macosx
30
- when /linux/
31
- :linux
32
- else
33
- RUBY_PLATFORM
34
- end
35
- end
36
-
37
- def implementation
38
- @implementation ||= case Browser.name
39
- when "Watir::IE"
40
- :watir
41
- when "Watir::Firefox", "FireWatir::Firefox"
42
- :firewatir
43
- when "Celerity::Browser"
44
- :celerity
45
- else
46
- :unknown
47
- end
48
- end
49
-
50
- def new_browser
51
- args = WatirSpec.browser_args
52
- args ? Browser.new(*args) : Browser.new
53
- end
54
-
55
- def ruby
56
- if @ruby.nil?
57
- if defined?(Gem)
58
- @ruby = Gem.ruby
59
- else
60
- require "rbconfig"
61
- rb = File.join(RbConfig::CONFIG.values_at('BINDIR', 'RUBY_INSTALL_NAME').compact)
62
- ext = RbConfig::CONFIG['EXEEXT']
63
-
64
- @ruby = "#{rb}#{ext}"
65
- end
66
- end
67
-
68
- @ruby
69
- end
70
-
71
- end # class << WatirSpec
72
- end # WatirSpec
@@ -1,168 +0,0 @@
1
- # encoding: utf-8
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- describe "Link" do
5
-
6
- before :each do
7
- browser.goto(WatirSpec.files + "/non_control_elements.html")
8
- end
9
-
10
- # Exists method
11
- describe "#exist?" do
12
- it "returns true if the link exists" do
13
- browser.link(:id, 'link_2').should exist
14
- browser.link(:id, /link_2/).should exist
15
- browser.link(:title, "link_title_2").should exist
16
- browser.link(:title, /link_title_2/).should exist
17
- browser.link(:text, "Link 2").should exist
18
- browser.link(:text, /Link 2/i).should exist
19
- browser.link(:url, 'non_control_elements.html').should exist
20
- browser.link(:url, /non_control_elements.html/).should exist
21
- browser.link(:index, 1).should exist
22
- browser.link(:xpath, "//a[@id='link_2']").should exist
23
- end
24
-
25
- not_compliant_on :webdriver do
26
- # not a technical issue - just not sure if it's really the behaviour we want
27
- it "strips spaces from URL attributes when locating elements" do
28
- browser.link(:url, /strip_space$/).should exist
29
- end
30
- end
31
-
32
- it "returns false if the link doesn't exist" do
33
- browser.link(:id, 'no_such_id').should_not exist
34
- browser.link(:id, /no_such_id/).should_not exist
35
- browser.link(:title, "no_such_title").should_not exist
36
- browser.link(:title, /no_such_title/).should_not exist
37
- browser.link(:text, "no_such_text").should_not exist
38
- browser.link(:text, /no_such_text/i).should_not exist
39
- browser.link(:url, 'no_such_href').should_not exist
40
- browser.link(:url, /no_such_href/).should_not exist
41
- browser.link(:index, 1337).should_not exist
42
- browser.link(:xpath, "//a[@id='no_such_id']").should_not exist
43
- end
44
-
45
- it "raises TypeError when 'what' argument is invalid" do
46
- lambda { browser.link(:id, 3.14).exists? }.should raise_error(TypeError)
47
- end
48
-
49
- it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
50
- lambda { browser.link(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
51
- end
52
- end
53
-
54
- # Attribute methods
55
- describe "#class_name" do
56
- it "returns the type attribute if the link exists" do
57
- browser.link(:index, 1).class_name.should == "external"
58
- end
59
-
60
- it "returns an empty string if the link exists and the attribute doesn't" do
61
- browser.link(:index, 0).class_name.should == ''
62
- end
63
-
64
- it "raises an UnknownObjectException if the link doesn't exist" do
65
- lambda { browser.link(:index, 1337).class_name }.should raise_error(UnknownObjectException)
66
- end
67
- end
68
-
69
- describe "#href" do
70
- it "returns the href attribute if the link exists" do
71
- browser.link(:index, 1).href.should =~ /non_control_elements/
72
- end
73
-
74
- it "returns an empty string if the link exists and the attribute doesn't" do
75
- browser.link(:index, 0).href.should == ""
76
- end
77
-
78
- it "raises an UnknownObjectException if the link doesn't exist" do
79
- lambda { browser.link(:index, 1337).href }.should raise_error(UnknownObjectException)
80
- end
81
- end
82
-
83
- bug "WTR-366", :watir do
84
- describe "#url" do
85
- it "returns the href attribute" do
86
- browser.link(:index, 1).url.should =~ /non_control_elements/
87
- end
88
- end
89
- end
90
-
91
- describe "#id" do
92
- it "returns the id attribute if the link exists" do
93
- browser.link(:index, 1).id.should == "link_2"
94
- end
95
-
96
- it "returns an empty string if the link exists and the attribute doesn't" do
97
- browser.link(:index, 0).id.should == ""
98
- end
99
-
100
- it "raises an UnknownObjectException if the link doesn't exist" do
101
- lambda { browser.link(:index, 1337).id }.should raise_error(UnknownObjectException)
102
- end
103
- end
104
-
105
- describe "#text" do
106
- it "returns the link text" do
107
- browser.link(:index, 1).text.should == "Link 2"
108
- end
109
-
110
- it "returns an empty string if the link exists and contains no text" do
111
- browser.link(:index, 0).text.should == ""
112
- end
113
-
114
- it "raises an UnknownObjectException if the link doesn't exist" do
115
- lambda { browser.link(:index, 1337).text }.should raise_error(UnknownObjectException)
116
- end
117
- end
118
-
119
- describe "#title" do
120
- it "returns the type attribute if the link exists" do
121
- browser.link(:index, 1).title.should == "link_title_2"
122
- end
123
-
124
- it "returns an empty string if the link exists and the attribute doesn't" do
125
- browser.link(:index, 0).title.should == ""
126
- end
127
-
128
- it "raises an UnknownObjectException if the link doesn't exist" do
129
- lambda { browser.link(:index, 1337).title }.should raise_error(UnknownObjectException)
130
- end
131
- end
132
-
133
- describe "#respond_to?" do
134
- it "returns true for all attribute methods" do
135
- browser.link(:index, 0).should respond_to(:class_name)
136
- browser.link(:index, 0).should respond_to(:href)
137
- browser.link(:index, 0).should respond_to(:url)
138
- browser.link(:index, 0).should respond_to(:id)
139
- browser.link(:index, 0).should respond_to(:style)
140
- browser.link(:index, 0).should respond_to(:text)
141
- browser.link(:index, 0).should respond_to(:title)
142
- end
143
- end
144
-
145
- # Manipulation methods
146
- describe "#click" do
147
- it "finds an existing link by (:text, String) and click it" do
148
- browser.link(:text, "Link 3").click
149
- browser.text.include?("User administration").should be_true
150
- end
151
-
152
- it "finds an existing link by (:text, Regexp) and click it" do
153
- browser.link(:url, /forms_with_input_elements/).click
154
- browser.text.include?("User administration").should be_true
155
- end
156
-
157
- it "finds an existing link by (:index, Integer) and click it" do
158
- browser.link(:index, 2).click
159
- browser.text.include?("User administration").should be_true
160
- end
161
-
162
- it "raises an UnknownObjectException if the link doesn't exist" do
163
- lambda { browser.link(:index, 1337).click }.should raise_error(UnknownObjectException)
164
- end
165
-
166
- end
167
-
168
- end