-
Notifications
You must be signed in to change notification settings - Fork 2
/
tapestry-simple.rb
executable file
·92 lines (68 loc) · 2.2 KB
/
tapestry-simple.rb
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/usr/bin/env ruby
$: << "./lib"
require "rspec"
include RSpec::Matchers
require "tapestry"
puts Tapestry::VERSION
puts Tapestry.version
puts Tapestry.dependencies
puts Tapestry.elements?
puts Tapestry.recognizes?("div")
class Home
include Tapestry
url_is "http://localhost:9292/"
url_matches /:\d{4}/
title_is "Veilus"
# Elements can be defined with HTML-style names as found in Watir.
p :login_form, id: "open", visible: true
text_field :username, id: "username"
text_field :password
button :login, id: "login-button"
div :message, class: 'notice'
# Elements can be defined with a generic name.
#element :login_form, id: "open", visible: true
#element :username, id: "username"
#element :password
#element :login, id: "login-button"
end
class Navigation
include Tapestry
p :page_list, id: 'navlist'
link :planets, id: 'planets'
image :planet_logo, id: 'planet-logo'
def begin_with
move_to(0, 0)
resize_to(screen_width, screen_height)
end
end
Tapestry.start_browser
page = Home.new
expect(Tapestry.browser).to be_an_instance_of(Watir::Browser)
expect(Tapestry.browser.driver).to be_an_instance_of(Selenium::WebDriver::Driver)
expect(page).to be_a_kind_of(Tapestry)
expect(page).to be_an_instance_of(Home)
# You can specify a URL to visit or you can rely on the provided
# url_is attribute on the page definition.
#page.visit("http://localhost:9292")
page.visit
expect(page.url).to eq(page.url_attribute)
expect(page.url).to match(page.url_match_attribute)
expect(page.title).to eq(page.title_attribute)
expect(page.secure?).to be_falsey
expect(page).not_to be_secure
expect(page.has_correct_url?).to be_truthy
expect(page).to have_correct_url
expect(page.displayed?).to be_truthy
expect(page).to be_displayed
expect(page.has_correct_title?).to be_truthy
expect(page).to have_correct_title
page.login_form.click
page.username.set "admin"
page.password(id: 'password').set "admin"
page.login.click
expect(page.message.text).to eq('You are now logged in as admin.')
page = Navigation.new
page.page_list.wait_until(&:dom_updated?).click
page.planets.click
expect(page.planet_logo.exists?).to be true
Tapestry.quit_browser