File: test_run.rb

package info (click to toggle)
qunit-selenium 0.0.4-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 152 kB
  • sloc: ruby: 188; makefile: 3
file content (47 lines) | stat: -rw-r--r-- 1,347 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
module QUnit
  module Selenium
    class TestRun
      TestResult = Struct.new(:tests, :assertions, :duration)
      ID_TESTRESULT = 'qunit-testresult'
      ID_TESTS = 'qunit-tests'

      def initialize(driver)
        @qunit_testresult = driver[ID_TESTRESULT]
        @qunit_tests = driver[ID_TESTS]
      end

      def completed?
        @qunit_testresult.text =~ /Tests completed/
      end

      def result
        assertions = {total: total_assertions, passed: passed_assertions, failed: failed_assertions}
        tests = {total: total_tests, passed: pass_tests, failed: fail_tests}
        TestResult.new(tests, assertions, duration)
      end

      private

      def duration
        match = /Tests completed in (?<milliseconds>\d+) milliseconds/.match @qunit_testresult.text
        match[:milliseconds].to_i / 1000
      end

      %w(total passed failed).each do |result|
        define_method("#{result}_assertions".to_sym) do
          @qunit_testresult.find_elements(:class, result).first.text.to_i
        end
      end

      def total_tests
        @qunit_tests.find_elements(:css, "##{ID_TESTS} > *").count
      end

      %w(pass fail).each do |result|
        define_method("#{result}_tests".to_sym) do
          @qunit_tests.find_elements(:css, "##{ID_TESTS} > .#{result}").count
        end
      end
    end
  end
end