celerity 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (136) hide show
  1. data.tar.gz.sig +0 -0
  2. data/History.txt +14 -0
  3. data/Manifest.txt +127 -151
  4. data/README.txt +15 -20
  5. data/lib/celerity.rb +13 -5
  6. data/lib/celerity/browser.rb +296 -0
  7. data/lib/celerity/clickable_element.rb +1 -0
  8. data/lib/celerity/collections.rb +4 -0
  9. data/lib/celerity/container.rb +69 -2
  10. data/lib/celerity/disabled_element.rb +1 -0
  11. data/lib/celerity/element.rb +103 -38
  12. data/lib/celerity/element_collections.rb +14 -8
  13. data/lib/celerity/element_locator.rb +61 -50
  14. data/lib/celerity/element_map.rb +51 -0
  15. data/lib/celerity/elements/button.rb +1 -0
  16. data/lib/celerity/elements/file_field.rb +3 -2
  17. data/lib/celerity/elements/form.rb +1 -0
  18. data/lib/celerity/elements/frame.rb +16 -1
  19. data/lib/celerity/elements/image.rb +15 -13
  20. data/lib/celerity/elements/link.rb +4 -1
  21. data/lib/celerity/elements/option.rb +1 -0
  22. data/lib/celerity/elements/radio_check.rb +19 -7
  23. data/lib/celerity/elements/select_list.rb +17 -2
  24. data/lib/celerity/elements/table.rb +34 -20
  25. data/lib/celerity/elements/table_body.rb +2 -2
  26. data/lib/celerity/elements/table_cell.rb +3 -1
  27. data/lib/celerity/elements/table_footer.rb +2 -2
  28. data/lib/celerity/elements/table_header.rb +2 -2
  29. data/lib/celerity/elements/table_row.rb +4 -2
  30. data/lib/celerity/elements/text_field.rb +20 -9
  31. data/lib/celerity/exception.rb +11 -18
  32. data/lib/celerity/extra/method_generator.rb +13 -8
  33. data/lib/celerity/htmlunit/download.sh +23 -0
  34. data/lib/celerity/htmlunit/htmlunit-2.2.jar +0 -0
  35. data/lib/celerity/htmlunit/htmlunit-core-js-2.2.jar +0 -0
  36. data/lib/celerity/htmlunit/{nekohtml-1.9.7.jar → nekohtml-1.9.8.jar} +0 -0
  37. data/lib/celerity/input_element.rb +1 -1
  38. data/lib/celerity/version.rb +1 -1
  39. data/lib/celerity/watir_compatibility.rb +37 -23
  40. data/spec/area_spec.rb +19 -4
  41. data/spec/areas_spec.rb +2 -3
  42. data/spec/{ie_spec.rb → browser_spec.rb} +66 -15
  43. data/spec/button_spec.rb +36 -3
  44. data/spec/buttons_spec.rb +2 -3
  45. data/spec/checkbox_spec.rb +43 -8
  46. data/spec/checkboxes_spec.rb +2 -3
  47. data/spec/div_spec.rb +31 -4
  48. data/spec/divs_spec.rb +2 -3
  49. data/spec/element_spec.rb +36 -6
  50. data/spec/filefield_spec.rb +28 -13
  51. data/spec/filefields_spec.rb +2 -3
  52. data/spec/form_spec.rb +6 -3
  53. data/spec/forms_spec.rb +2 -3
  54. data/spec/frame_spec.rb +14 -5
  55. data/spec/frames_spec.rb +71 -0
  56. data/spec/hidden_spec.rb +21 -3
  57. data/spec/hiddens_spec.rb +2 -3
  58. data/spec/hn_spec.rb +30 -12
  59. data/spec/hns_spec.rb +14 -10
  60. data/spec/html/form_js_bug.html +11 -0
  61. data/spec/html/forms_with_input_elements.html +2 -1
  62. data/spec/html/invalid_js.html +11 -0
  63. data/spec/html/latin1_text.html +1 -0
  64. data/spec/html/non_control_elements.html +8 -4
  65. data/spec/html/simple_ajax.html +22 -0
  66. data/spec/htmlunit_spec.rb +4 -5
  67. data/spec/image_spec.rb +33 -3
  68. data/spec/images_spec.rb +2 -3
  69. data/spec/label_spec.rb +16 -3
  70. data/spec/labels_spec.rb +2 -3
  71. data/spec/li_spec.rb +25 -3
  72. data/spec/link_spec.rb +35 -3
  73. data/spec/links_spec.rb +2 -3
  74. data/spec/lis_spec.rb +2 -3
  75. data/spec/map_spec.rb +19 -3
  76. data/spec/maps_spec.rb +2 -3
  77. data/spec/meta_spec.rb +3 -1
  78. data/spec/ol_spec.rb +17 -3
  79. data/spec/ols_spec.rb +2 -3
  80. data/spec/option_spec.rb +28 -3
  81. data/spec/p_spec.rb +30 -2
  82. data/spec/pre_spec.rb +25 -3
  83. data/spec/pres_spec.rb +2 -3
  84. data/spec/ps_spec.rb +2 -3
  85. data/spec/radio_spec.rb +47 -3
  86. data/spec/radios_spec.rb +2 -3
  87. data/spec/select_list_spec.rb +42 -3
  88. data/spec/select_lists_spec.rb +2 -3
  89. data/spec/span_spec.rb +32 -7
  90. data/spec/spans_spec.rb +2 -4
  91. data/spec/spec_helper.rb +5 -25
  92. data/spec/table_bodies_spec.rb +7 -5
  93. data/spec/table_body_spec.rb +11 -4
  94. data/spec/table_cell_spec.rb +15 -4
  95. data/spec/table_cells_spec.rb +3 -4
  96. data/spec/table_footer_spec.rb +11 -4
  97. data/spec/table_footers_spec.rb +7 -5
  98. data/spec/table_header_spec.rb +11 -4
  99. data/spec/table_headers_spec.rb +7 -5
  100. data/spec/table_row_spec.rb +31 -7
  101. data/spec/table_rows_spec.rb +5 -4
  102. data/spec/table_spec.rb +36 -7
  103. data/spec/tables_spec.rb +2 -3
  104. data/spec/text_field_spec.rb +51 -13
  105. data/spec/text_fields_spec.rb +2 -3
  106. data/spec/ul_spec.rb +18 -3
  107. data/spec/uls_spec.rb +2 -3
  108. data/spec/{watir_compatability_spec.rb → watir_compatibility_spec.rb} +42 -35
  109. data/support/spec_server.rb +9 -0
  110. metadata +167 -161
  111. metadata.gz.sig +0 -0
  112. data/benchmark/bm_2000_spans.rb +0 -48
  113. data/benchmark/bm_digg.rb +0 -26
  114. data/benchmark/bm_google_images.rb +0 -36
  115. data/benchmark/bm_input_locator.rb +0 -69
  116. data/benchmark/loader.rb +0 -9
  117. data/config/hoe.rb +0 -68
  118. data/config/requirements.rb +0 -15
  119. data/lib/celerity/htmlunit/htmlunit-2.2-SNAPSHOT.jar +0 -0
  120. data/lib/celerity/htmlunit/js-1.7R1.jar +0 -0
  121. data/lib/celerity/ie.rb +0 -195
  122. data/setup.rb +0 -1583
  123. data/support/celerity_viewer/rubycocoa/CelerityViewer.icns +0 -0
  124. data/support/celerity_viewer/rubycocoa/English.lproj/Main.nib/classes.nib +0 -37
  125. data/support/celerity_viewer/rubycocoa/English.lproj/Main.nib/info.nib +0 -19
  126. data/support/celerity_viewer/rubycocoa/English.lproj/Main.nib/keyedobjects.nib +0 -0
  127. data/support/celerity_viewer/rubycocoa/Info.plist.erb +0 -28
  128. data/support/celerity_viewer/rubycocoa/MainController.rb +0 -23
  129. data/support/celerity_viewer/rubycocoa/README +0 -94
  130. data/support/celerity_viewer/rubycocoa/Rakefile +0 -100
  131. data/support/celerity_viewer/rubycocoa/distributed_viewer.rb +0 -86
  132. data/support/celerity_viewer/rubycocoa/main.m +0 -7
  133. data/support/celerity_viewer/rubycocoa/main.rb +0 -27
  134. data/tasks/benchmark.rake +0 -4
  135. data/tasks/environment.rake +0 -7
  136. data/tasks/simple_ci.rake +0 -94
Binary file
@@ -1,48 +0,0 @@
1
- require File.dirname(__FILE__) + "/loader"
2
-
3
- # Create browser object
4
- browser = FRAMEWORK::IE.new
5
- browser.goto(TEST_HOST + "/2000_spans.html")
6
-
7
- TESTS = 100
8
- res = Benchmark.bmbm do |results|
9
- results.report("Loop through all spans (n = 1)") do
10
- 1.times do # Hard coded 1 run
11
- browser.spans.each do |span|
12
- span.text
13
- end
14
- end
15
- end
16
-
17
- # results.report("Loop through all spans (raw)") do
18
- # TESTS.times do
19
- # if RUBY_PLATFORM =~ /java/
20
- # browser.document.getHtmlElementsByTagName("span").each do |span|
21
- # span.asText
22
- # end
23
- # else
24
- # browser.document.getElementsByTagName("span").each do |span|
25
- # span.innerText
26
- # end
27
- # end
28
- # end
29
- # end
30
-
31
- results.report("Last span by id (String)") do
32
- TESTS.times do
33
- browser.span(:id, "id_2000").exists?
34
- end
35
- end
36
-
37
- results.report("Last span by id (Regexp)") do
38
- TESTS.times do
39
- browser.span(:id, "/2000/").exists?
40
- end
41
- end
42
-
43
- end
44
-
45
- puts
46
- total = res.inject(0.0) { |mem, bm| mem + bm.real }
47
- puts "total : " + total.to_s
48
- puts "average: " + (total/res.size.to_f).to_s
@@ -1,26 +0,0 @@
1
- require File.dirname(__FILE__) + "/loader"
2
-
3
- TESTS = 5
4
- res = Benchmark.bmbm do |results|
5
- results.report("Diggs on front page") do
6
- TESTS.times do
7
- # Create browser object
8
- browser = FRAMEWORK::IE.new
9
-
10
- # Go to digg.com
11
- browser.goto('http://digg.com/')
12
-
13
- # Gather statistics
14
- total_diggs = 0
15
- digg_number_elements = browser.links.select { |link| link.id =~ /diggs/ }
16
- digg_numbers = digg_number_elements.collect { |digg_number_element| digg_number_element.text }
17
- digg_numbers.each { |digg_number| total_diggs += digg_number.to_i }
18
- #puts "Found #{digg_numbers.size} stories, with a total of #{total_diggs} diggs."
19
- end
20
- end
21
- end
22
-
23
- puts
24
- total = res.inject(0.0) { |mem, bm| mem + bm.real }
25
- puts "total : " + total.to_s
26
- puts "average: " + (total/res.size.to_f).to_s
@@ -1,36 +0,0 @@
1
- require File.dirname(__FILE__) + "/loader"
2
-
3
- TESTS = 5
4
- res = Benchmark.bmbm do |results|
5
- results.report("Google image search results") do
6
- TESTS.times do
7
- # Create browser object
8
- browser = FRAMEWORK::IE.new
9
-
10
- # Goto images.google.com
11
- browser.goto('http://images.google.com/ncr')
12
-
13
- # Search for Watir
14
- browser.text_field(:name, 'q').set('Watir')
15
- browser.button(:value, 'Search Images').click
16
-
17
- src_pool = []
18
- pages = 1
19
- # Gather statistics and click Next if there are more results
20
- while browser.link(:text, 'Next').exists?
21
- pages += 1
22
- browser.link(:text, 'Next').click unless src_pool.empty?
23
- table_cells = browser.cells.select { |cell| cell.id =~ /tDataImage\d+/ }
24
- table_cells.each do |cell|
25
- src_pool << cell.image(:index, 1).src if cell.image(:index, 1).exists?
26
- end
27
- end
28
- #puts "Looked at #{pages} pages of image search results. Got #{src_pool.size} images."
29
- end
30
- end
31
- end
32
-
33
- puts
34
- total = res.inject(0.0) { |mem, bm| mem + bm.real }
35
- puts "total : " + total.to_s
36
- puts "average: " + (total/res.size.to_f).to_s
@@ -1,69 +0,0 @@
1
- require File.dirname(__FILE__) + "/loader"
2
-
3
- browser = FRAMEWORK::IE.new
4
- browser.goto(TEST_HOST + "/forms_with_input_elements.html")
5
-
6
- TESTS = 1000
7
- res = Benchmark.bmbm do |results|
8
- results.report("text input by id (String)") do
9
- TESTS.times { browser.text_field(:id, "new_user_first_name").exists? }
10
- end
11
- results.report("text input by id (Regexp)") do
12
- TESTS.times { browser.text_field(:id, /first_name/).exists? }
13
- end
14
- results.report("text input by name (String)") do
15
- TESTS.times { browser.text_field(:name, "new_user_email").exists? }
16
- end
17
- results.report("text input by name (Regexp)") do
18
- TESTS.times { browser.text_field(:name, /user_email/).exists? }
19
- end
20
-
21
- results.report("select list by id (String)") do
22
- TESTS.times { browser.select_list(:id, 'new_user_country').exists? }
23
- end
24
- results.report("select list by id (Regexp)") do
25
- TESTS.times { browser.select_list(:id, /user_country/).exists? }
26
- end
27
- results.report("select list by name (String)") do
28
- TESTS.times { browser.select_list(:name, 'new_user_country').exists? }
29
- end
30
- results.report("select list by name (Regexp)") do
31
- TESTS.times { browser.select_list(:name, /user_country/).exists? }
32
- end
33
-
34
- results.report("checkbox by id (String)") do
35
- TESTS.times { browser.checkbox(:id, 'new_user_interests_books').exists? }
36
- end
37
- results.report("checkbox by id (Regexp)") do
38
- TESTS.times { browser.checkbox(:id, /interests_books/).exists? }
39
- end
40
-
41
- results.report("checkbox by name (String)") do
42
- TESTS.times { browser.checkbox(:name, 'new_user_interests').exists? }
43
- end
44
- results.report("checkbox by name (Regexp)") do
45
- TESTS.times { browser.checkbox(:name, /user_interests/).exists? }
46
- end
47
-
48
- results.report("checkbox by id (String) and value (String)") do
49
- TESTS.times { browser.checkbox(:id, 'new_user_interests_books', 'cars').exists? }
50
- end
51
- results.report("checkbox by id (Regexp) and value (Regexp)") do
52
- TESTS.times { browser.checkbox(:id, /interests_books/, /car/).exists? }
53
- end
54
-
55
- results.report("checkbox by name (String) and value (String)") do
56
- TESTS.times { browser.checkbox(:name, 'new_user_interests', 'dancing').exists? }
57
- end
58
- results.report("checkbox by name (Regexp) and value (Regexp)") do
59
- TESTS.times { browser.checkbox(:name, /user_interests/, /danc/).exists? }
60
- end
61
-
62
-
63
-
64
- end
65
-
66
- puts
67
- total = res.inject(0.0) { |mem, bm| mem + bm.real }
68
- puts "total : " + total.to_s
69
- puts "average: " + (total/res.size.to_f).to_s
@@ -1,9 +0,0 @@
1
- require 'benchmark'
2
- require File.dirname(__FILE__) + "/../spec/spec_helper"
3
-
4
- if RUBY_PLATFORM =~ /java/
5
- FRAMEWORK = Celerity
6
- else
7
- require 'watir'
8
- FRAMEWORK = Watir
9
- end
@@ -1,68 +0,0 @@
1
- require 'celerity/version'
2
-
3
- AUTHORS = ["T. Alexander Lystad", "Knut Johannes Dahle", "Jari Bakken"]
4
- EMAIL = "alexander.lystad@finntech.no"
5
- DESCRIPTION = <<DESC
6
- Celerity is a JRuby library for easy and fast functional test automation for web applications. It is a wrapper around the HtmlUnit Java library and is currently aimed at providing the same API and functionality as Watir.
7
- DESC
8
-
9
- GEM_NAME = 'celerity'
10
- RUBYFORGE_PROJECT = 'celerity'
11
- HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
12
- DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
13
-
14
- @config_file = "~/.rubyforge/user-config.yml"
15
- @config = nil
16
- RUBYFORGE_USERNAME = "unknown"
17
- def rubyforge_username
18
- unless @config
19
- begin
20
- @config = YAML.load(File.read(File.expand_path(@config_file)))
21
- rescue
22
- puts <<-EOS
23
- ERROR: No rubyforge config file found: #{@config_file}
24
- Run 'rubyforge setup' to prepare your env for access to Rubyforge
25
- - See http://newgem.rubyforge.org/rubyforge.html for more details
26
- EOS
27
- exit
28
- end
29
- end
30
- RUBYFORGE_USERNAME.replace @config["username"]
31
- end
32
-
33
-
34
- REV = nil
35
- # UNCOMMENT IF REQUIRED:
36
- # REV = `svn info`.each {|line| if line =~ /^Revision:/ then k,v = line.split(': '); break v.chomp; else next; end} rescue nil
37
- VERS = Celerity::VERSION::STRING + (REV ? ".#{REV}" : "")
38
-
39
- class Hoe
40
- def extra_deps
41
- @extra_deps.reject! { |x| Array(x).first == 'hoe' }
42
- @extra_deps
43
- end
44
- end
45
-
46
- # Generate all the Rake tasks
47
- # Run 'rake -T' to see list of generated tasks (from gem root directory)
48
- $hoe = Hoe.new(GEM_NAME, VERS) do |p|
49
- p.author = AUTHORS
50
- p.email = EMAIL
51
- p.description = DESCRIPTION
52
- p.summary = DESCRIPTION
53
- p.url = HOMEPATH
54
- p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
55
- p.test_globs = ["test/**/test_*.rb"]
56
- p.clean_globs |= ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store'] #An array of file patterns to delete on clean.
57
-
58
- # == Optional
59
- p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
60
- #p.extra_deps = [] # An array of rubygem dependencies [name, version], e.g. [ ['active_support', '>= 1.3.1'] ]
61
- #p.spec_extras = {} # A hash of extra values to set in the gemspec.
62
-
63
- end
64
-
65
- CHANGES = $hoe.paragraphs_of('History.txt', 0..1).join("\\n\\n")
66
- PATH = (RUBYFORGE_PROJECT == GEM_NAME) ? RUBYFORGE_PROJECT : "#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
67
- $hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
68
- $hoe.rsync_args = '-av --delete --ignore-errors'
@@ -1,15 +0,0 @@
1
- require 'fileutils'
2
- include FileUtils
3
-
4
- require 'rubygems'
5
- %w[rake hoe newgem rubigen].each do |req_gem|
6
- begin
7
- require req_gem
8
- rescue LoadError
9
- puts "This Rakefile requires the '#{req_gem}' RubyGem."
10
- puts "Installation: gem install #{req_gem} -y"
11
- exit
12
- end
13
- end
14
-
15
- $:.unshift(File.join(File.dirname(__FILE__), %w[.. lib]))
@@ -1,195 +0,0 @@
1
- module Celerity
2
- class IE
3
- include Container
4
- attr_accessor :page, :object
5
- attr_reader :charset, :webclient
6
-
7
- def self.start(uri)
8
- browser = new
9
- browser.goto(uri)
10
- browser
11
- end
12
-
13
-
14
- # Creates a browser object.
15
- #
16
- # ==== Options (opts)
17
- # :javascript_exceptions<true, false, nil>::
18
- # Throw exceptions on script errors. Disabled by default.
19
- # :status_code_exceptions<true, false, nil>::
20
- # Throw exceptions on failing status codes (404++). Disabled by default.
21
- # :css<true, false, nil>::
22
- # Enable CSS. Disabled by default.
23
- # :secure_ssl<true, false, nil>::
24
- # Disable secure SSL. Enabled by default.
25
- # :log_level<:trace, :debug, :info, :warn, :error, or :fatal>::
26
- # Set the log level for Apache Jakarta commons logging system (used by HtmlUnit)
27
- # Defaults to :warn. (not working..)
28
- # ==== Returns
29
- # An instance of Celerity::IE
30
- #
31
- #--
32
- # @public
33
- def initialize(opts = {})
34
- java.lang.System.getProperties.put("org.apache.commons.logging.simplelog.defaultlog", opts[:log_level] ? opts[:log_level].to_s : "warn")
35
-
36
- browser = RUBY_PLATFORM =~ /java/ ? ::HtmlUnit::BrowserVersion::FIREFOX_2 : ::HtmlUnit::BrowserVersion.FIREFOX_2
37
- @webclient = ::HtmlUnit::WebClient.new(browser)
38
- @webclient.setThrowExceptionOnScriptError(false) unless opts[:javascript_exceptions]
39
- @webclient.setThrowExceptionOnFailingStatusCode(false) unless opts[:status_code_exceptions]
40
- @webclient.setCssEnabled(false) unless opts[:css]
41
- @webclient.setUseInsecureSSL(true) if opts[:secure_ssl]
42
-
43
- @last_url, @page = nil
44
- @page_container = self
45
- @error_checkers = []
46
- find_viewer
47
- end
48
-
49
- def goto(uri)
50
- uri = "http://#{uri}" unless uri =~ %r{^https?://}
51
- set_page @webclient.getPage(uri)
52
- uri
53
- end
54
-
55
- def close
56
- @page = nil
57
- end
58
-
59
- def set_page(value)
60
- @last_url = url() if exist?
61
- @page = value
62
- if @page.respond_to?("getDocumentElement")
63
- @object = @page.getDocumentElement
64
- end
65
- render if @viewer
66
- run_error_checks
67
- end
68
-
69
- def url
70
- assert_exists
71
- @page.getWebResponse.getUrl.toString
72
- end
73
-
74
- def title
75
- @page ? @page.getTitleText : ''
76
- end
77
-
78
- def html
79
- @page ? @page.getWebResponse.getContentAsString : ''
80
- end
81
-
82
- def text
83
- if @page.respond_to?("getContent")
84
- @page.getContent
85
- else
86
- @page ? @page.getFirstByXPath("//body").asText : ''
87
- end
88
- end
89
-
90
- def document
91
- @object
92
- end
93
-
94
- def collection_string(collection_method)
95
- collection = self.send collection_method
96
- buffer = "Found #{collection.size} divs\n"
97
- collection.each_with_index do |div, index|
98
- buffer += "#{index+1}: #{div.attribute_string}\n"
99
- end
100
- return buffer
101
- end
102
-
103
- def back
104
- # FIXME: this is naive, need capability from HtmlUnit
105
- goto(@last_url) if @last_url
106
- end
107
-
108
- def refresh
109
- assert_exists
110
- set_page(@page.refresh)
111
- end
112
-
113
- def exist?
114
- !!@page
115
- end
116
- alias_method :exists?, :exist?
117
-
118
- # check that we have a @page object
119
- # need to find a better way to handle this
120
- def assert_exists
121
- raise UnknownObjectException, "no page loaded" unless exist?
122
- end
123
-
124
- def contains_text(expected_text)
125
- return nil unless exist?
126
- case expected_text
127
- when Regexp
128
- text().match(expected_text)
129
- when String
130
- text().index(expected_text)
131
- else
132
- raise ArgumentError, "Argument #{expected_text.inspect} should be a String or Regexp."
133
- end
134
- end
135
-
136
- def execute_script(source)
137
- assert_exists
138
- @page.executeJavaScript(source.to_s)
139
- end
140
-
141
- def run_error_checks
142
- @error_checkers.each { |e| e.call(self) }
143
- end
144
-
145
- def add_checker(checker = nil, &block)
146
- if block_given?
147
- @error_checkers << block
148
- elsif Proc === checker
149
- @error_checkers << checker
150
- else
151
- raise ArgumentError, "argument must be a Proc or block"
152
- end
153
- end
154
-
155
- def disable_checker(checker)
156
- @error_checkers.delete(checker)
157
- end
158
-
159
- def method_missing(meth, *args)
160
- match_data = /^show_(.*)$/.match(meth.to_s)
161
- if match_data
162
- begin
163
- puts collection_string(match_data[1])
164
- rescue NoMethodError
165
- super
166
- end
167
- else
168
- super
169
- end
170
- end
171
-
172
- private
173
-
174
- def render
175
- begin
176
- @viewer.render_html(html, url)
177
- rescue Errno::ECONNREFUSED => e
178
- puts e.message
179
- end
180
- end
181
-
182
- def find_viewer
183
- begin
184
- if `uname`.chomp == "Darwin" && `ps ax`[/CelerityViewer/]
185
- require "drb"
186
- @viewer = DRbObject.new_with_uri("druby://127.0.0.1:1337")
187
- end
188
- rescue IOError, Errno::ENOENT
189
- end
190
- end
191
-
192
- end # IE
193
- end # Celerity
194
-
195
- Celerity::Browser = Celerity::IE