pyrite 0.5.0 → 0.5.1
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.
- data/README.rdoc +48 -0
- data/lib/pyrite/dsl.rb +21 -16
- data/lib/pyrite/helpers.rb +1 -1
- data/lib/pyrite/pyrite_test.rb +4 -4
- data/lib/pyrite/tasks/pyrite.rb +1 -1
- metadata +7 -6
data/README.rdoc
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
= Pyrite - Easy Peasy Browser Testing
|
2
|
+
|
3
|
+
- http://mintdigital.github.com/pyrite
|
4
|
+
- http://github.com/mintdigital/pyrite
|
5
|
+
|
6
|
+
== Description
|
7
|
+
|
8
|
+
Pyrite is a lightweight DSL around the Selenium browser testing framework.
|
9
|
+
|
10
|
+
We found Cucumber to be awesome, but no one was reading the features. We found
|
11
|
+
Webrat to be fantastic, but way too complex for what we wanted. So, we made
|
12
|
+
Pyrite - a few selenium-client methods wrapped up in a readable way.
|
13
|
+
|
14
|
+
== Example
|
15
|
+
|
16
|
+
require 'pyrite_helper'
|
17
|
+
class BasicTest < Pyrite::PyriteTest
|
18
|
+
test "it works" do
|
19
|
+
visit root_path
|
20
|
+
follow "next page"
|
21
|
+
wait_for :page_load
|
22
|
+
assert_text "some text you should see"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
== Dependencies
|
27
|
+
|
28
|
+
Pyrite has no dependencies that you should have to install manually. Gem
|
29
|
+
installation should pull in the necessary selenium libraries.
|
30
|
+
|
31
|
+
You will need an operating system and browser capable of running Selenium
|
32
|
+
|
33
|
+
== Install
|
34
|
+
|
35
|
+
We recommend you use {bundler}[http://gembundler.com]:
|
36
|
+
|
37
|
+
gem 'pyrite', '0.5.0', :require => false
|
38
|
+
|
39
|
+
Installing as a Rails plugin should also work:
|
40
|
+
|
41
|
+
script/plugin install git://github.com/mintdigital/pyrite.git
|
42
|
+
|
43
|
+
== License
|
44
|
+
|
45
|
+
Copyright (c) 2010 Mint Digital Ltd.
|
46
|
+
|
47
|
+
Released under the terms of the MIT License.
|
48
|
+
See the MIT-LICENSE file in this directory.
|
data/lib/pyrite/dsl.rb
CHANGED
@@ -48,11 +48,7 @@ module Pyrite
|
|
48
48
|
|
49
49
|
# Click anything else
|
50
50
|
def click(locator)
|
51
|
-
browser.click(locator)
|
52
|
-
end
|
53
|
-
|
54
|
-
def attach(field, file)
|
55
|
-
browser.attach(field, "http://test.rodreegez.com/#{file}")
|
51
|
+
browser.click("css=#{locator}")
|
56
52
|
end
|
57
53
|
|
58
54
|
# Pick an option from a select element
|
@@ -63,9 +59,9 @@ module Pyrite
|
|
63
59
|
# Wait for a specific element or the page to load
|
64
60
|
def wait_for(element)
|
65
61
|
if element == :page_load
|
66
|
-
browser.wait_for_page_to_load
|
62
|
+
browser.wait_for_page_to_load :page
|
67
63
|
else
|
68
|
-
browser.
|
64
|
+
browser.wait_for :element => "#{element}"
|
69
65
|
end
|
70
66
|
end
|
71
67
|
|
@@ -76,9 +72,9 @@ module Pyrite
|
|
76
72
|
|
77
73
|
# Excecute commands within an iframe, then switch back to the parent frame
|
78
74
|
# i.e.
|
79
|
-
#
|
80
|
-
#
|
81
|
-
#
|
75
|
+
# inside_frame(iframe) do
|
76
|
+
# click "Submit"
|
77
|
+
# end
|
82
78
|
def inside_iframe(frame)
|
83
79
|
wait_for frame
|
84
80
|
browser.select_frame(frame)
|
@@ -89,28 +85,37 @@ module Pyrite
|
|
89
85
|
|
90
86
|
# Use this to consume JS alerts
|
91
87
|
# i.e.
|
92
|
-
#
|
93
|
-
#
|
94
|
-
#
|
88
|
+
# follow 'delete'
|
89
|
+
# get_confirmation
|
90
|
+
# !assert_element "h2:contains('user1')"
|
95
91
|
def get_confirmation
|
96
92
|
browser.get_confirmation
|
97
93
|
end
|
98
94
|
|
99
95
|
# drag an css selector to the center pixel of another, e.g.
|
100
|
-
#
|
96
|
+
# `drag_and_drop(:from => "li#element_#{my_oject.id}", :to => "div#trash")
|
101
97
|
# ProTip: if you have a list of elements you wish to re-order, drag the top element down.
|
102
98
|
def drag_and_drop(opts={})
|
103
99
|
browser.drag_and_drop_to_object("css=#{opts[:from]}", "css=#{opts[:to]}")
|
104
100
|
end
|
105
101
|
|
106
102
|
# Capture the page and try to open it
|
107
|
-
# (probably only works on
|
103
|
+
# (probably only works on OS X)
|
108
104
|
def show_me
|
109
105
|
image = "#{Rails.root.join('tmp')}/pyrite-#{Time.now.to_i}.png"
|
110
106
|
browser.capture_entire_page_screenshot(image, '')
|
111
107
|
puts `open #{image}`
|
112
108
|
end
|
109
|
+
|
110
|
+
# Write the HTML of a page to a file and open it.
|
111
|
+
# (probably only works on OS X)
|
112
|
+
def code_me
|
113
|
+
html = browser.get_html_source
|
114
|
+
filename = "#{Rails.root.join('tmp')}/pyrite-#{Time.now.to_i}.html"
|
115
|
+
code = File.open(filename, 'w') { |f| f.write(html) }
|
116
|
+
puts `open #{code}`
|
117
|
+
end
|
113
118
|
|
114
119
|
end
|
115
120
|
|
116
|
-
end
|
121
|
+
end
|
data/lib/pyrite/helpers.rb
CHANGED
data/lib/pyrite/pyrite_test.rb
CHANGED
@@ -2,7 +2,7 @@ require 'pyrite/dsl'
|
|
2
2
|
require 'pyrite/assertions'
|
3
3
|
require 'pyrite/helpers'
|
4
4
|
|
5
|
-
module Pyrite
|
5
|
+
module Pyrite
|
6
6
|
class PyriteTest < ActionController::IntegrationTest
|
7
7
|
include Dsl
|
8
8
|
include Assertions
|
@@ -10,7 +10,7 @@ module Pyrite
|
|
10
10
|
|
11
11
|
self.use_transactional_fixtures = false
|
12
12
|
|
13
|
-
def browser
|
13
|
+
def browser #:nodoc:
|
14
14
|
$browser ||= Selenium::Client::Driver.new(
|
15
15
|
:host => Pyrite.rc_host,
|
16
16
|
:port => 4444,
|
@@ -20,13 +20,13 @@ module Pyrite
|
|
20
20
|
)
|
21
21
|
end
|
22
22
|
|
23
|
-
def setup
|
23
|
+
def setup #:nodoc:
|
24
24
|
DatabaseCleaner.clean
|
25
25
|
browser.start_new_browser_session
|
26
26
|
super
|
27
27
|
end
|
28
28
|
|
29
|
-
def teardown
|
29
|
+
def teardown #:nodoc:
|
30
30
|
super
|
31
31
|
browser.close_current_browser_session
|
32
32
|
end
|
data/lib/pyrite/tasks/pyrite.rb
CHANGED
@@ -9,7 +9,7 @@ namespace :pyrite do
|
|
9
9
|
|
10
10
|
desc "Startup Selenium RC and the server for browser testing"
|
11
11
|
task :start => 'selenium:start' do
|
12
|
-
puts
|
12
|
+
puts `./script/server -e pyrite -p 2222 -d`
|
13
13
|
end
|
14
14
|
|
15
15
|
desc "Shutdown Selenium RC and the server for browser testing"
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 5
|
8
|
-
-
|
9
|
-
version: 0.5.
|
8
|
+
- 1
|
9
|
+
version: 0.5.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Adam Rogers
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-04-13 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -73,14 +73,15 @@ files:
|
|
73
73
|
- lib/pyrite/dsl.rb
|
74
74
|
- lib/pyrite/helpers.rb
|
75
75
|
- lib/pyrite/pyrite_test.rb
|
76
|
-
- lib/pyrite/tasks.rb
|
77
76
|
- lib/pyrite/tasks/pyrite.rb
|
78
77
|
- lib/pyrite/tasks/selenium.rb
|
78
|
+
- lib/pyrite/tasks.rb
|
79
79
|
- lib/pyrite.rb
|
80
|
-
- MIT-LICENSE
|
81
80
|
- tasks/pyrite.rake
|
81
|
+
- MIT-LICENSE
|
82
|
+
- README.rdoc
|
82
83
|
has_rdoc: true
|
83
|
-
homepage: http://github.com/
|
84
|
+
homepage: http://mintdigital.github.com/pyrite
|
84
85
|
licenses: []
|
85
86
|
|
86
87
|
post_install_message:
|