Class: AutoPilot::SeleniumTestResultsServlet

Inherits:
HTTPServlet::AbstractServlet
  • Object
show all
Defined in:
lib/auto_pilot/servlet.rb

Overview

Servlet that listens for a Selenium Test Suite’s posted results.

Instance Method Summary collapse

Constructor Details

#initialize(config, *options) ⇒ SeleniumTestResultsServlet

Returns a new instance of SeleniumTestResultsServlet.



7
8
9
10
11
# File 'lib/auto_pilot/servlet.rb', line 7

def initialize(config, *options)
  super(config, *options)
  @dir = DEFAULT_RESULTS_DIR
  @dir = @options[0] if @options
end

Instance Method Details

#create_body(request, name_of_suite) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/auto_pilot/servlet.rb', line 31

def create_body(request, name_of_suite)
  query = request.query
  result = "<html><head><title>#{name_of_suite} Results</title></head><body>"
  result << "<table>"
  result << "<tr><td>Suite Name</td><td><b>" + name_of_suite + "</b></td></tr>"
  result << "<tr><td>Result</td><td>" + query["result"] + "</td></tr>"
  result << "<tr><td>Total Time</td><td>" + query["totalTime"] + "</td></tr>"
  result << "<tr><td>Tests Passed</td><td>" + query["numTestPasses"] + "</td></tr>"
  result << "<tr><td>Test Failures</td><td>" + query["numTestFailures"] + "</td></tr>"
  result << "<tr><td>Commands Passed</td><td>" + query["numCommandPasses"] + "</td></tr>"
  result << "<tr><td>Commands Failed</td><td>" + query["numCommandFailures"] + "</td></tr>"
  result << "<tr><td>Command Erros</td><td>" + query["numCommandErrors"] + "</td></tr>"
  result << "<tr><td>Browser Info</td><td>#{request['User-Agent']}</td></tr>"
  result << "</table>"
  result << query["suite"]

  # get each test table
  testNum = 1
  while query["testTable.#{testNum}"]
    result << query["testTable.#{testNum}"]
    testNum = testNum.next
  end

  result << "</body></html>"
end

#do_GET(request, response) ⇒ Object



12
13
14
15
# File 'lib/auto_pilot/servlet.rb', line 12

def do_GET(request, response)
  response['Content-Type'] = "text/html"
  response.body = "<html><body>You're on the selenium results servlet.</body></html>"
end

#do_POST(request, response) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/auto_pilot/servlet.rb', line 16

def do_POST(request, response)
  response['Content-Type'] = "text/html"
  #puts(request.query)
  name_of_suite = suite_name(request.query["suite"])
  response.body = create_body(request, name_of_suite)
  
  #TODO add SeleniumTestResultsConfig class for the dirs
  results_file = ResultsFile.new(@dir, name_of_suite, response.body)
  results_file.write
  pass_fail_file = PassFailFile.new(@dir)
  pass_fail_file.write "#{request.query['result']}: #{name_of_suite}"
  ResultsState.waiting = false
  #puts results_file.data
  response.body
end

#suite_name(suite_table) ⇒ Object

grab the suite name from the first table cell of the suite’s table



58
59
60
61
62
63
64
65
66
# File 'lib/auto_pilot/servlet.rb', line 58

def suite_name(suite_table)
  print "----------------------\n"
  suite = Document.new(suite_table)
  puts suite
  #"suite"
  suite_node = XPath.first(suite.root, "//TD/B")
  suite_node = XPath.first(suite.root, "//td/b") if suite_node == nil
  return suite_node.text
end