testcentricity_web 0.4.0 → 0.4.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.
- checksums.yaml +4 -4
- data/README.md +106 -7
- data/lib/testcentricity_web/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 61e91b322162b010ad329c4d01554103d0559720
|
4
|
+
data.tar.gz: ae8e3ebeaf73a86954a799f2964bf2eebddb696f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 872622ca866ac84142eb6e8f11e67b294045d8ddfb084313be14d632df076f6b5b96e11e8354c0d934e2f4195420335c2ebda2decbcb71aeb25616386cacaea4
|
7
|
+
data.tar.gz: 1cee663516b6f4cac6cf36c9e63d2f0d918cb50386225bf1c06ec53862e8352bc1cd5ad4f8c4f2e38fd32a79ada4c0148d496eb9dfca806d098784baeb9aeef0
|
data/README.md
CHANGED
@@ -3,12 +3,12 @@
|
|
3
3
|
The TestCentricity™ core generic framework for desktop and responsive mobile web site testing implements a Page Object
|
4
4
|
and Data Object Model DSL, for use with Capybara and selenium-webdriver. It supports testing against locally hosted
|
5
5
|
desktop browsers (Firefox, Chrome, Safari, IE, or Edge), locally hosted emulated mobile browsers (using Firefox), or
|
6
|
-
on cloud hosted browsers using the BrowserStack, Sauce Labs, or CrossBrowserTesting services.
|
6
|
+
on cloud hosted desktop or mobile web browsers using the BrowserStack, Sauce Labs, or CrossBrowserTesting services.
|
7
7
|
|
8
8
|
|
9
9
|
## Installation
|
10
10
|
|
11
|
-
Add this line to your
|
11
|
+
Add this line to your automation project's Gemfile:
|
12
12
|
|
13
13
|
gem 'testcentricity_web'
|
14
14
|
|
@@ -22,14 +22,26 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
|
24
24
|
## Setup
|
25
|
+
###Using Cucumber
|
25
26
|
|
26
|
-
If you are using Cucumber, you
|
27
|
+
If you are using Cucumber, you need to require the following in your *env.rb* file:
|
27
28
|
|
29
|
+
require 'capybara'
|
28
30
|
require 'capybara/cucumber'
|
29
31
|
require 'testcentricity_web'
|
30
32
|
|
31
|
-
|
32
|
-
|
33
|
+
###Using RSpec
|
34
|
+
|
35
|
+
If you are using RSpec instead, you need to require the following in your *env.rb* file:
|
36
|
+
|
37
|
+
require 'capybara'
|
38
|
+
require 'capybara/rspec'
|
39
|
+
require 'testcentricity_web'
|
40
|
+
|
41
|
+
###Selenium WebDriver
|
42
|
+
|
43
|
+
If you choose to not connect to selenium-webdriver using the ***WebDriverConnect.initialize_web_driver*** method, or if you need to
|
44
|
+
directly call methods in selenium-webdriver, you will also need to require the following in your *env.rb* file:
|
33
45
|
|
34
46
|
require 'selenium-webdriver'
|
35
47
|
|
@@ -37,13 +49,100 @@ directly call methods in selenium-webdriver, you will also need to require the f
|
|
37
49
|
|
38
50
|
## Usage
|
39
51
|
|
40
|
-
|
52
|
+
###Defining a Page Object
|
53
|
+
|
54
|
+
You define new **Page Objects** as shown below:
|
55
|
+
|
56
|
+
class LoginPage < TestCentricity::PageObject
|
57
|
+
trait(:page_name) { 'Login' }
|
58
|
+
trait(:page_url) { "/sign_in" }
|
59
|
+
trait(:page_locator) { "//body[@class='login-body']" }
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
class HomePage < TestCentricity::PageObject
|
64
|
+
trait(:page_name) { 'Home' }
|
65
|
+
trait(:page_url) { "/dashboard" }
|
66
|
+
trait(:page_locator) { "//body[@class='dashboard']" }
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
###Adding UI Elements to your Page Object
|
71
|
+
|
72
|
+
Your Page Object's **UI Elements** are added as shown below:
|
73
|
+
|
74
|
+
class LoginPage < TestCentricity::PageObject
|
75
|
+
trait(:page_name) { 'Login' }
|
76
|
+
trait(:page_url) { "/sign_in" }
|
77
|
+
trait(:page_locator) { "//body[@class='login-body']" }
|
78
|
+
|
79
|
+
# Login page UI elements
|
80
|
+
textfield :user_id_field, "userName"
|
81
|
+
textfield :password_field, "password"
|
82
|
+
button :login_button, "//input[@id='submit_button']"
|
83
|
+
checkbox :remember_checkbox, "rememberUser']"
|
84
|
+
label :error_message_label, 'div#statusBar.login-error'
|
85
|
+
end
|
86
|
+
|
41
87
|
|
88
|
+
###Instantiating your Page Objects
|
42
89
|
|
90
|
+
There are several ways to instantiate your **Page Objects**. One common implementation is shown below:
|
43
91
|
|
92
|
+
module WorldPages
|
93
|
+
def login_page
|
94
|
+
@login_page ||= LoginPage.new
|
95
|
+
end
|
96
|
+
|
97
|
+
def home_page
|
98
|
+
@home_page ||= HomePage.new
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
Once instantiated, you can interact with the **UI Elements** in your **Page Objects**. An example is shown below:
|
103
|
+
|
104
|
+
login_page.user_id_field.set('snicklefritz')
|
105
|
+
login_page.password_field.set('Pa55w0rd')
|
106
|
+
login_page.login_button.click
|
107
|
+
|
108
|
+
|
109
|
+
###Adding Methods to your Page Object
|
110
|
+
|
111
|
+
You can add high level methods for interacting with the UI to hide implementation details, as shown below:
|
112
|
+
|
113
|
+
class LoginPage < TestCentricity::PageObject
|
114
|
+
trait(:page_name) { 'Login' }
|
115
|
+
trait(:page_url) { "/sign_in" }
|
116
|
+
trait(:page_locator) { "//body[@class='login-body']" }
|
117
|
+
|
118
|
+
# Login page UI elements
|
119
|
+
textfield :user_id_field, "userName"
|
120
|
+
textfield :password_field, "password"
|
121
|
+
button :login_button, "//input[@id='submit_button']"
|
122
|
+
checkbox :remember_checkbox, "rememberUser']"
|
123
|
+
label :error_message_label, 'div#statusBar.login-error'
|
124
|
+
|
125
|
+
def login(user_id, password)
|
126
|
+
user_id_field.set(user_id)
|
127
|
+
password_field.set(password)
|
128
|
+
login_button.click
|
129
|
+
end
|
130
|
+
|
131
|
+
def remember_me(state)
|
132
|
+
remember_checkbox.set_checkbox_state(state)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
|
137
|
+
Once instantiated, you can call your methods as shown below:
|
138
|
+
|
139
|
+
login_page.remember_me(true)
|
140
|
+
login_page.user_id_field.set('snicklefritz', 'Pa55w0rd')
|
141
|
+
|
142
|
+
|
44
143
|
## Copyright and License
|
45
144
|
|
46
|
-
TestCentricity
|
145
|
+
TestCentricity(tm) Framework is Copyright (c) 2014-2016, Tony Mrozinski.
|
47
146
|
All rights reserved.
|
48
147
|
|
49
148
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testcentricity_web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- A.J. Mrozinski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|