awetestlib 0.0.2-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +70 -0
- data/awetestlib.gemspec +57 -0
- data/awetestlib.windows.gemspec +41 -0
- data/awetestlib_notes.txt +4 -0
- data/awetestlib_osx.gemspec +43 -0
- data/bin/awetestlib +67 -0
- data/create_zoho_account1.rb +66 -0
- data/create_zoho_account2.rb +70 -0
- data/demo.rb +86 -0
- data/ext/mkrf_conf.rb +27 -0
- data/google_search1.rb +16 -0
- data/google_search2.rb +19 -0
- data/lib/awetestlib.rb +39 -0
- data/lib/patches/README +2 -0
- data/lib/patches/firewatir.rb +106 -0
- data/lib/patches/watir.rb +175 -0
- data/lib/regression/legacy.rb +4615 -0
- data/lib/regression/logging.rb +444 -0
- data/lib/regression/runner.rb +264 -0
- data/lib/regression/validations.rb +1508 -0
- data/lib/version.rb +4 -0
- data/zoho_util.rb +484 -0
- data/zoho_variables.xls +0 -0
- metadata +326 -0
data/.gitignore
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
sinatra.pid
|
2
|
+
shamisen-*.gem
|
3
|
+
vendor/cache/*
|
4
|
+
|
5
|
+
# gVim tmp files
|
6
|
+
*~
|
7
|
+
# rcov generated
|
8
|
+
coverage
|
9
|
+
|
10
|
+
# rdoc generated
|
11
|
+
rdoc
|
12
|
+
|
13
|
+
# yard generated
|
14
|
+
doc
|
15
|
+
.yardoc
|
16
|
+
|
17
|
+
# bundler
|
18
|
+
.bundle
|
19
|
+
Gemfile.lock
|
20
|
+
|
21
|
+
# jeweler generated
|
22
|
+
pkg
|
23
|
+
|
24
|
+
# for windows
|
25
|
+
Thumb.db
|
26
|
+
|
27
|
+
# Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
|
28
|
+
#
|
29
|
+
# * Create a file at ~/.gitignore
|
30
|
+
# * Include files you want ignored
|
31
|
+
# * Run: git config --global core.excludesfile ~/.gitignore
|
32
|
+
#
|
33
|
+
# After doing this, these files will be ignored in all your git projects,
|
34
|
+
# saving you from having to 'pollute' every project you touch with them
|
35
|
+
#
|
36
|
+
# Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
|
37
|
+
#
|
38
|
+
# For MacOS:
|
39
|
+
#
|
40
|
+
.DS_Store
|
41
|
+
tmp/*
|
42
|
+
.rvmrc
|
43
|
+
|
44
|
+
# For TextMate
|
45
|
+
#*.tmproj
|
46
|
+
#tmtags
|
47
|
+
|
48
|
+
# For emacs:
|
49
|
+
#*~
|
50
|
+
#\#*
|
51
|
+
#.\#*
|
52
|
+
|
53
|
+
# For vim:
|
54
|
+
*.sw[onp]
|
55
|
+
|
56
|
+
# For redcar:
|
57
|
+
#.redcar
|
58
|
+
|
59
|
+
# For rubinius:
|
60
|
+
#*.rbc
|
61
|
+
|
62
|
+
config/win2008.txt
|
63
|
+
|
64
|
+
__MACOSX/
|
65
|
+
short_passing_test/
|
66
|
+
dump.rdb
|
67
|
+
.idea
|
68
|
+
config/settings.yml
|
69
|
+
PROJECT_NAME
|
70
|
+
*.log
|
data/awetestlib.gemspec
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
puts "#{$0}"
|
3
|
+
require "lib/version"
|
4
|
+
|
5
|
+
#hack for debugging
|
6
|
+
`wellsproxy`
|
7
|
+
#end hack
|
8
|
+
|
9
|
+
Gem::Specification.new do |s|
|
10
|
+
|
11
|
+
s.name = "awetestlib"
|
12
|
+
s.version = Awetestlib::VERSION
|
13
|
+
s.date = Awetestlib::VERSION_DATE
|
14
|
+
s.platform = Gem::Platform::RUBY
|
15
|
+
|
16
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
17
|
+
s.authors = ["Anthony Woo", "Patrick Neve"]
|
18
|
+
s.email = %q{patrick@3qilabs.com}
|
19
|
+
s.summary = %q{Awetest DSL for automated testing of browser-based applications.}
|
20
|
+
s.homepage = %q{http://3qilabs.com}
|
21
|
+
s.description = %q{Awetest DSL for automated testing of browser-based applications.}
|
22
|
+
|
23
|
+
# possible dependencies (from shamisen gemfile)
|
24
|
+
#s.add_dependency('i18n')
|
25
|
+
|
26
|
+
# windows specific
|
27
|
+
#s.add_dependency('watir', '1.8.1')
|
28
|
+
#s.add_dependency('commonwatir', '1.8.1')
|
29
|
+
#s.add_dependency('firewatir', '1.8.1')
|
30
|
+
#s.add_dependency('watirloo')
|
31
|
+
#s.add_dependency('win32-process')
|
32
|
+
#s.add_dependency('win32screenshot')
|
33
|
+
|
34
|
+
# all platforms?
|
35
|
+
begin
|
36
|
+
#s.add_dependency('ffi', '= 1.0.9')
|
37
|
+
s.add_dependency('activesupport', '~> 3.0.0')
|
38
|
+
s.add_dependency('watir-webdriver')
|
39
|
+
s.add_dependency('andand')
|
40
|
+
s.add_dependency('spreadsheet', '0.6.8')
|
41
|
+
s.add_dependency('google-spreadsheet-ruby', '0.1.6')
|
42
|
+
s.add_dependency('roo', '1.10.1')
|
43
|
+
#s.add_dependency('selenium-client') # for running selenium scripts
|
44
|
+
s.add_dependency('selenium-webdriver')
|
45
|
+
rescue
|
46
|
+
puts "#{$!}"
|
47
|
+
end
|
48
|
+
|
49
|
+
s.require_paths = ["lib","ext"]
|
50
|
+
s.files = `git ls-files`.split("\n")
|
51
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
52
|
+
|
53
|
+
#This line tells rubygems to look for an extension to install
|
54
|
+
s.extensions << 'ext/mkrf_conf.rb'
|
55
|
+
|
56
|
+
end
|
57
|
+
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require "lib/version"
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
|
6
|
+
s.name = %q{awetestlib}
|
7
|
+
s.version = Awetestlib::VERSION
|
8
|
+
s.date = Awetestlib::VERSION_DATE
|
9
|
+
s.platform = Gem::Platform::CURRENT
|
10
|
+
|
11
|
+
#s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.authors = ["Anthony Woo", "Patrick Neve"]
|
13
|
+
s.email = %q{patrick@3qilabs.com}
|
14
|
+
s.summary = %q{Awetest DSL for automated testing of browser-based applications.}
|
15
|
+
s.homepage = %q{http://3qilabs.com}
|
16
|
+
s.description = %q{Awetest DSL for automated testing of browser-based applications.}
|
17
|
+
|
18
|
+
s.add_dependency('watir-webdriver')
|
19
|
+
s.add_dependency('watir', '1.8.1')
|
20
|
+
s.add_dependency('commonwatir', '1.8.1')
|
21
|
+
s.add_dependency('firewatir', '1.8.1')
|
22
|
+
s.add_dependency('activesupport', '~> 3.0.0')
|
23
|
+
s.add_dependency('i18n')
|
24
|
+
s.add_dependency('andand')
|
25
|
+
s.add_dependency('watirloo')
|
26
|
+
s.add_dependency('win32-process')
|
27
|
+
s.add_dependency('win32screenshot')
|
28
|
+
s.add_dependency('spreadsheet', '0.6.8')
|
29
|
+
s.add_dependency('google-spreadsheet-ruby', '0.1.6')
|
30
|
+
s.add_dependency('roo', '1.10.1')
|
31
|
+
s.add_dependency('selenium-webdriver')
|
32
|
+
s.add_dependency('pry')
|
33
|
+
s.add_dependency('rdoc', '~> 3.11')
|
34
|
+
|
35
|
+
|
36
|
+
s.require_paths = ["lib"]
|
37
|
+
s.files = `git ls-files`.split("\n")
|
38
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
39
|
+
|
40
|
+
end
|
41
|
+
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require "lib/version"
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
|
6
|
+
s.name = %q{awetestlib}
|
7
|
+
s.version = Awetestlib::VERSION
|
8
|
+
s.date = Awetestlib::VERSION_DATE
|
9
|
+
s.platform = Gem::Platform::RUBY
|
10
|
+
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.authors = ["Anthony Woo", "Patrick Neve"]
|
13
|
+
s.email = %q{patrick@3qilabs.com}
|
14
|
+
s.summary = %q{Awetest DSL for automated testing of browser-based applications.}
|
15
|
+
s.homepage = %q{http://3qilabs.com}
|
16
|
+
s.description = %q{Awetest DSL for automated testing of browser-based applications.}
|
17
|
+
|
18
|
+
s.add_dependency('watir-webdriver')
|
19
|
+
#s.add_dependency('watir', '1.8.1')
|
20
|
+
#s.add_dependency('commonwatir', '1.8.1')
|
21
|
+
#s.add_dependency('firewatir', '1.8.1')
|
22
|
+
s.add_dependency('activesupport', '~> 3.0.0')
|
23
|
+
s.add_dependency('andand')
|
24
|
+
#s.add_dependency('watirloo')
|
25
|
+
#s.add_dependency('win32-process')
|
26
|
+
#s.add_dependency('win32screenshot')
|
27
|
+
s.add_dependency('spreadsheet', '0.6.8')
|
28
|
+
s.add_dependency('google-spreadsheet-ruby', '0.1.6')
|
29
|
+
s.add_dependency('roo', '1.10.1')
|
30
|
+
s.add_dependency('multipart-post', '1.1.4')
|
31
|
+
s.add_dependency('selenium-webdriver')
|
32
|
+
s.add_dependency('nokogiri')
|
33
|
+
|
34
|
+
|
35
|
+
s.require_paths = ["lib"] #,"ext"]
|
36
|
+
s.files = `git ls-files`.split("\n")
|
37
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
38
|
+
|
39
|
+
#This line tells rubygems to look for an extension to install
|
40
|
+
#s.extensions = ["ext\\mkrf_conf.rb"]
|
41
|
+
|
42
|
+
end
|
43
|
+
|
data/bin/awetestlib
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
$: << "./lib"
|
2
|
+
require 'optparse'
|
3
|
+
require 'awetestlib'
|
4
|
+
|
5
|
+
options = { }
|
6
|
+
OptionParser.new do |opts|
|
7
|
+
opts.banner = "Usage: awetestlib <script_file> [options]"
|
8
|
+
|
9
|
+
opts.on("-m RUN_MODE", "--run_mode RUN_MODE", "Specify the run mode: local, local_zip, remote_zip") do |run_mode|
|
10
|
+
options[:run_mode] = run_mode
|
11
|
+
end
|
12
|
+
opts.on("-r ROOT_PATH", "--root_path ROOT_PATH", "Specify the root path") do |root_path|
|
13
|
+
options[:root_path] = root_path
|
14
|
+
end
|
15
|
+
opts.on("-l LIBRARY", "--library LIBRARY", "Specify a library to be loaded") do |library|
|
16
|
+
options[:library] = library.to_s
|
17
|
+
end
|
18
|
+
opts.on("-x EXCEL_FILE", "--excel EXCEL_FILE", "Specify an excel file containing variables to be loaded") do |xls_path|
|
19
|
+
options[:xls_path] = xls_path
|
20
|
+
end
|
21
|
+
opts.on("-b BROWSER", "--browser BROWSER", "Specify a browser (IE, FF, S, C)") do |browser|
|
22
|
+
options[:browser] = browser
|
23
|
+
end
|
24
|
+
opts.on("-v VERSION", "--version VERSION", "Specify a browser version") do |v|
|
25
|
+
options[:version] = v
|
26
|
+
end
|
27
|
+
opts.on("-e", "--environment_url ENVIRONMENT_URL", "Specify the environment URL") do |environment_url|
|
28
|
+
options[:environment_url] = environment_url
|
29
|
+
end
|
30
|
+
opts.on("-f", "--environment_node_name ENVIRONMENT_NODENAME", "Specify the environment node name") do |node_name|
|
31
|
+
options[:environment_nodename] = node_name
|
32
|
+
end
|
33
|
+
opts.on("-n", "--environment_name ENVIRONMENT_NAME", "Specify the environment name") do |environment_name|
|
34
|
+
options[:environment_name] = environment_name
|
35
|
+
end
|
36
|
+
opts.on("-u SELENIUM_REMOTE_URL", "--selenium_remote_url SELENIUM_REMOTE_URL", "Specify the device's remote url and port") do |remote_url|
|
37
|
+
options[:remote_url] = remote_url
|
38
|
+
end
|
39
|
+
opts.on("-s SCREENCAP_PATH", "--screencap-path SCREENCAP_PATH", "Specify the path where screenshots will be saved") do |screencap_path|
|
40
|
+
options[:screencap_path] = screencap_path
|
41
|
+
end
|
42
|
+
opts.on("-d", "--debug", "Run debugger on first script failure") do
|
43
|
+
options[:debug_on_fail] = true
|
44
|
+
end
|
45
|
+
# add persistent logging for awetestlib. pmn 05jun2012
|
46
|
+
opts.on("-o", "--output_to_log", "Write to log file") do
|
47
|
+
options[:output_to_log] = true
|
48
|
+
end
|
49
|
+
opts.on("", "--log_path_subdir LOG_PATH_SUBDIR", "Specify log path relative to root_path.") do |log_path_subdir|
|
50
|
+
options[:log_path_subdir] = log_path_subdir
|
51
|
+
end
|
52
|
+
opts.on("", "--report_all_test_refs REPORT_ALL_TEST_REFS", "Include list of all error/test case reference ids actually validated.") do
|
53
|
+
options[:report_all_test_refs] = true
|
54
|
+
end
|
55
|
+
|
56
|
+
end.parse!
|
57
|
+
|
58
|
+
options[:environment] ||= {}
|
59
|
+
options[:environment]["name"] = options[:environment_name]
|
60
|
+
options[:environment]["url"] = options[:environment_url]
|
61
|
+
options[:environment]["nodename"] = options[:environment_nodename]
|
62
|
+
options[:script_type] = 'AwetestLegacy'
|
63
|
+
options[:script_file] = ARGV[0]
|
64
|
+
|
65
|
+
IS_WIN_2008 = File.exists?("config/win2008.txt")
|
66
|
+
|
67
|
+
Awetestlib::Runner.new(options).start
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module CreateZohoAccount1
|
2
|
+
|
3
|
+
def run_test(browser)
|
4
|
+
create_account_scenario_1(browser)
|
5
|
+
create_account_scenario_2(browser)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create_account_scenario_1(browser)
|
9
|
+
create_account(browser)
|
10
|
+
create_blank_new_account(browser)
|
11
|
+
export_accounts(browser)
|
12
|
+
import_accounts(browser)
|
13
|
+
signout(browser)
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_account_scenario_2(browser)
|
17
|
+
create_blank_new_account(browser)
|
18
|
+
reports(browser)
|
19
|
+
clone_account(browser)
|
20
|
+
pagination(browser)
|
21
|
+
verify_accounts(browser)
|
22
|
+
search_accounts(browser)
|
23
|
+
signout(browser)
|
24
|
+
end
|
25
|
+
|
26
|
+
def create_account(browser)
|
27
|
+
mark_testlevel('Create New Account', 1)
|
28
|
+
sleep_for(3)
|
29
|
+
click_text(browser, 'New Account')
|
30
|
+
wait_until_ready(browser, :name, /Account Name/)
|
31
|
+
set_textfield_by_name(browser, /Account Name/, "Test Account #1")
|
32
|
+
set_textfield_by_name(browser, /Phone/, "415-333-2311")
|
33
|
+
|
34
|
+
test_account_lookup(browser) #In Project Util
|
35
|
+
browser = attach_browser_by_url(browser, /ShowHomePage/)
|
36
|
+
select_option_by_name_and_option_text(browser, /Account Type/, "Analyst")
|
37
|
+
select_option_by_name_and_option_text(browser, /Industry/, "ASP")
|
38
|
+
set_textfield_by_name(browser, /Billing Street/, "201 Main St")
|
39
|
+
set_textfield_by_name(browser, /Billing City/, "San Francisco")
|
40
|
+
set_textfield_by_name(browser, /Billing State/, "CA")
|
41
|
+
set_textfield_by_name(browser, /Billing Code/, "94102")
|
42
|
+
set_textfield_by_name(browser, /Billing Country/, "USA")
|
43
|
+
#browser.cell(:text, 'Billing to Shipping').click
|
44
|
+
click(browser, :cell, :text, 'Billing to Shipping')
|
45
|
+
click_button_by_value(browser, 'Save')
|
46
|
+
|
47
|
+
wait_until_by_text(browser, 'Test Account #1')
|
48
|
+
validate_text(browser, "Test Account #1")
|
49
|
+
validate_text(browser, "random")
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_account_lookup(browser)
|
53
|
+
mark_testlevel('Account Lookup', 1)
|
54
|
+
click(browser, :image, :title, 'Account Name Lookup')
|
55
|
+
sleep_for(5)
|
56
|
+
popup = attach_browser_by_url(browser, /Parent Account/)
|
57
|
+
set_textfield_by_name(popup, 'fldValue', 'test account #00')
|
58
|
+
click_button_by_value(popup, 'Go')
|
59
|
+
click(popup, :link, :text, 'Test Account #007')
|
60
|
+
# TODO: This next line is currently required for Firefox and Chrome to return to original browser window browser = attach_browser_by_url(browser, /ShowHomePage/)
|
61
|
+
browser = attach_browser_by_url(browser, /ShowHomePage/)
|
62
|
+
validate_textfield_value_by_name(browser, /Parent Account/, 'Test Account #007')
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module CreateZohoAccount2
|
2
|
+
|
3
|
+
def run_test(browser)
|
4
|
+
create_account_scenario_1(browser)
|
5
|
+
create_account_scenario_2(browser)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create_account_scenario_1(browser)
|
9
|
+
mark_testlevel("#{__method__.to_s.titleize}", 1)
|
10
|
+
create_account(browser)
|
11
|
+
create_blank_new_account(browser)
|
12
|
+
export_accounts(browser)
|
13
|
+
import_accounts(browser)
|
14
|
+
signout(browser)
|
15
|
+
end
|
16
|
+
|
17
|
+
def create_account_scenario_2(browser)
|
18
|
+
mark_testlevel("#{__method__.to_s.titleize}", 1)
|
19
|
+
create_blank_new_account(browser)
|
20
|
+
reports(browser)
|
21
|
+
clone_account(browser)
|
22
|
+
pagination(browser)
|
23
|
+
verify_accounts(browser)
|
24
|
+
search_accounts(browser)
|
25
|
+
signout(browser)
|
26
|
+
end
|
27
|
+
|
28
|
+
def create_account(browser)
|
29
|
+
mark_testlevel("#{__method__.to_s.titleize}", 1)
|
30
|
+
sleep_for(3)
|
31
|
+
click_text(browser, 'New Account')
|
32
|
+
wait_until_ready(browser, :name, /Account Name/)
|
33
|
+
set_textfield_by_name(browser, /Account Name/, @var['account_name'], "*** cza007 ***")
|
34
|
+
set_textfield_by_name(browser, /Phone/, @var['account_phone'], "*** cza007 ***")
|
35
|
+
|
36
|
+
test_account_lookup(browser)
|
37
|
+
browser = attach_browser_by_url(browser, /ShowHomePage/)
|
38
|
+
|
39
|
+
select_option_by_name_and_option_text(browser, /Account Type/, @var['account_type'], "*** cza003a ***")
|
40
|
+
select_option_by_name_and_option_text(browser, /Industry/, @var['account_industry'], "*** cza003b ***")
|
41
|
+
set_textfield_by_name(browser, /Billing Street/, @var['account_billing_street'], "*** cza003c ***")
|
42
|
+
set_textfield_by_name(browser, /Billing City/, @var['account_billing_city'], "*** cza003d ***")
|
43
|
+
set_textfield_by_name(browser, /Billing State/, @var['account_billing_state'], "*** cza003e ***")
|
44
|
+
set_textfield_by_name(browser, /Billing Code/, @var['account_billing_zipcode'], "*** cza003f ***")
|
45
|
+
set_textfield_by_name(browser, /Billing Country/, @var['account_country'], "*** cza003g ***")
|
46
|
+
|
47
|
+
#browser.cell(:text, 'Billing to Shipping').click
|
48
|
+
click(browser, :cell, :text, 'Billing to Shipping', "*** cza004 ***")
|
49
|
+
click_button_by_value(browser, 'Save')
|
50
|
+
|
51
|
+
wait_until_by_text(browser, @var['account_name'])
|
52
|
+
validate_text(browser, @var['account_name'], "*** cza005 ***")
|
53
|
+
validate_text(browser, "random", "*** cza006 ***")
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_account_lookup(browser)
|
57
|
+
mark_testlevel("#{__method__.to_s.titleize}", 1)
|
58
|
+
click(browser, :image, :title, 'Account Name Lookup')
|
59
|
+
#sleep_for(5)
|
60
|
+
popup = attach_browser_by_url(browser, /Parent Account/, "*** cza001 ***")
|
61
|
+
if popup
|
62
|
+
set_textfield_by_name(popup, 'fldValue', @var['parent_account_pattern'])
|
63
|
+
click_button_by_value(popup, 'Go')
|
64
|
+
click(popup, :link, :text, @var['parent_account'])
|
65
|
+
# TODO: This next line is currently required for Firefox and Chrome to return to original browser window browser = attach_browser_by_url(browser, /ShowHomePage/)
|
66
|
+
validate_textfield_value_by_name(browser, /Parent Account/, @var['parent_account'], "*** cza002 ***")
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
data/demo.rb
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
module Demo
|
2
|
+
def run
|
3
|
+
browser = open_browser
|
4
|
+
login(browser)
|
5
|
+
test_zoho(browser)
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_account_lookup(browser)
|
9
|
+
mark_testlevel('Account Lookup', 1)
|
10
|
+
browser.image(:title, 'Account Name Lookup').click
|
11
|
+
sleep_for(5)
|
12
|
+
popup = attach_browser_by_url(browser, /Parent/)
|
13
|
+
# TODO: This should be transparent:
|
14
|
+
if @browserAbbrev == "FF"
|
15
|
+
popup = browser
|
16
|
+
end
|
17
|
+
set_textfield_by_name(popup, 'fldValue', 'test')
|
18
|
+
click_button_by_value(popup, 'Go')
|
19
|
+
popup.link(:text, /Test Account/).click
|
20
|
+
#browser = attach_browser_by_url(browser, /ShowHomePage/)
|
21
|
+
#validate_textfield_value_by_name(browser, /Parent Account/, 'Test Account #007')
|
22
|
+
end
|
23
|
+
|
24
|
+
def login(browser)
|
25
|
+
mark_testlevel('Zoho Login', 2)
|
26
|
+
user = "joeklienwatir@gmail.com" #@zohologin.cell(2,2)
|
27
|
+
password = "watir001" #@zohologin.cell(2,3)
|
28
|
+
go_to_url(browser, "https://accounts.zoho.com/login?serviceurl=https://www.zoho.com/&hide_signup=true&css=https://www.zoho.com/css/login.css")
|
29
|
+
#browser.goto("https://accounts.zoho.com/login?serviceurl=https://www.zoho.com/&hide_signup=true&css=https://www.zoho.com/css/login.css")
|
30
|
+
set_textfield_by_name(browser, 'lid', user)
|
31
|
+
set_textfield_by_name(browser, 'pwd', password)
|
32
|
+
click_button_by_value(browser, 'Sign In')
|
33
|
+
go_to_url(browser, url = 'https://crm.zoho.com/crm/ShowHomePage.do')
|
34
|
+
validate_text(browser, 'Welcome joeklienwatir at Software')
|
35
|
+
#click_text(browser, 'Old Version')
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
def navigate_to_crm(browser)
|
40
|
+
mark_testlevel('Navigate to CRM', 1)
|
41
|
+
click_text(browser, 'CRM')
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_zoho(browser)
|
45
|
+
#get_variables("#{@myRoot}/zoho_variables.xls")
|
46
|
+
navigate_to_crm(browser) #In Project Util
|
47
|
+
create_account(browser)
|
48
|
+
#create_blank_new_account(browser)
|
49
|
+
#export_accounts(browser)
|
50
|
+
#import_accounts(browser)
|
51
|
+
#signout(browser)
|
52
|
+
end
|
53
|
+
|
54
|
+
def create_account(browser)
|
55
|
+
mark_testlevel('Create New Account', 3)
|
56
|
+
sleep_for(3)
|
57
|
+
click_link(browser, 'Accounts')
|
58
|
+
sleep_for(3)
|
59
|
+
click_button_by_value(browser, 'New Account')
|
60
|
+
sleep_for(5)
|
61
|
+
# Watir::Waiter::wait_until { browser.text_field(:name, /Account Name/).exist? }
|
62
|
+
# Watir::Waiter::wait_until { browser.text_field(:name, /Account Name/).visible? }
|
63
|
+
set_textfield_by_name(browser, /Account Name/, "Test Account #1")
|
64
|
+
set_textfield_by_name(browser, /Phone/, "415-333-2311")
|
65
|
+
|
66
|
+
test_account_lookup(browser) #In Project Util
|
67
|
+
browser = attach_browser_by_url(browser, /ShowHomePage/)
|
68
|
+
select_option_by_name_and_option_text(browser, /Account Type/, "Analyst")
|
69
|
+
select_option_by_name_and_option_text(browser, /Industry/, "ASP")
|
70
|
+
set_textfield_by_name(browser, /Billing Street/, "201 Main St")
|
71
|
+
set_textfield_by_name(browser, /Billing City/, "San Francisco")
|
72
|
+
set_textfield_by_name(browser, /Billing State/, "CA")
|
73
|
+
set_textfield_by_name(browser, /Billing Code/, "94102")
|
74
|
+
set_textfield_by_name(browser, /Billing Country/, "USA")
|
75
|
+
#browser.cell(:text, 'Billing to Shipping').click
|
76
|
+
click_button_by_id(browser, 'copyAddress')
|
77
|
+
sleep_for(5)
|
78
|
+
click_button_by_value(browser, 'Save')
|
79
|
+
|
80
|
+
sleep_for(8)
|
81
|
+
#wait_until_by_text(browser, 'Test Account #1')
|
82
|
+
validate_text(browser, "Test Account #1")
|
83
|
+
validate_text(browser, "random")
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
data/ext/mkrf_conf.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'rubygems/dependency_installer.rb'
|
2
|
+
using_windows = !!((RUBY_PLATFORM =~ /(win|w)(32|64)$/) || (RUBY_PLATFORM=~ /mswin|mingw/))
|
3
|
+
#using_jruby = defined?(JRUBY_VERSION)
|
4
|
+
using_osx = RUBY_PLATFORM =~ /darwin/
|
5
|
+
installer = Gem::DependencyInstaller.new
|
6
|
+
begin
|
7
|
+
puts "#{RUBY_PLATFORM}"
|
8
|
+
if using_windows
|
9
|
+
installer.install "watirloo", ">=0"
|
10
|
+
installer.install "win32-process", ">=0"
|
11
|
+
installer.install "win32-screenshot", ">=0"
|
12
|
+
installer.install "commonwatir", "=1.8.1"
|
13
|
+
installer.install "watir", "=1.8.1"
|
14
|
+
installer.install "firewatir", "=1.8.1"
|
15
|
+
elsif using_osx
|
16
|
+
installer.install "rb_appscript", ">=0"
|
17
|
+
installer.install "safariwatir", ">=0"
|
18
|
+
end
|
19
|
+
|
20
|
+
rescue
|
21
|
+
puts "#{$!}"
|
22
|
+
exit(1)
|
23
|
+
end
|
24
|
+
|
25
|
+
f = File.open(File.join(File.dirname(__FILE__), "Rakefile"), "w")
|
26
|
+
f.write("task :default\n")
|
27
|
+
f.close
|
data/google_search1.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
module GoogleSearch1
|
2
|
+
|
3
|
+
def run
|
4
|
+
mark_testlevel("Awetestlib example: Google Search 1", 1)
|
5
|
+
browser = open_browser
|
6
|
+
go_to_url(browser, 'www.google.com')
|
7
|
+
sleep_for(3)
|
8
|
+
click_text(browser, 'News')
|
9
|
+
set_textfield_by_id(browser, 'gbqfq', '3qilabs')
|
10
|
+
#click(browser, :button, :id, 'gbqfb')
|
11
|
+
validate_text(browser, '3qilabs')
|
12
|
+
validate_text(browser, 'Stories')
|
13
|
+
logout(browser)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
data/google_search2.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
module GoogleSearch2
|
2
|
+
|
3
|
+
def run
|
4
|
+
mark_testlevel("Awetestlib example: Google Search 2", 9)
|
5
|
+
browser = open_browser
|
6
|
+
go_to_url(browser, 'www.google.com')
|
7
|
+
sleep_for(3)
|
8
|
+
run_test(browser)
|
9
|
+
end
|
10
|
+
|
11
|
+
def run_test(browser)
|
12
|
+
mark_testlevel("Search for 3qilabs in News", 8)
|
13
|
+
click_text(browser, 'News')
|
14
|
+
set_textfield_by_id(browser, 'gbqfq', '3qilabs')
|
15
|
+
validate_text(browser, '3qilabs', '*** gs2 001 ***')
|
16
|
+
validate_text(browser, 'Stories', '*** gs2 002 ***')
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
data/lib/awetestlib.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'active_support/core_ext/hash'
|
3
|
+
|
4
|
+
module Awetestlib
|
5
|
+
::USING_WINDOWS = !!((RUBY_PLATFORM =~ /(win|w)(32|64)$/) || (RUBY_PLATFORM=~ /mswin|mingw/))
|
6
|
+
::USING_OSX = RUBY_PLATFORM =~ /darwin/
|
7
|
+
|
8
|
+
BROWSER_MAP = {
|
9
|
+
'FF' => 'Firefox',
|
10
|
+
'IE' => 'Internet Explorer',
|
11
|
+
'S' => 'Safari',
|
12
|
+
'MS' => 'Mobile Safari',
|
13
|
+
'C' => 'Chrome'
|
14
|
+
}
|
15
|
+
|
16
|
+
BROWSER_ALTERNATES = {
|
17
|
+
'OSX' => { 'IE' => 'S' },
|
18
|
+
'Windows' => { 'S' => 'IE' }
|
19
|
+
}
|
20
|
+
|
21
|
+
if USING_WINDOWS
|
22
|
+
#require 'win32ole' <-- We'll load this later in Shamisen::AwetestLegacy::Runner. It has to be loaded after watir, see https://www.pivotaltracker.com/story/show/19249981
|
23
|
+
require 'win32/screenshot'
|
24
|
+
end
|
25
|
+
#require 'active_support/inflector'
|
26
|
+
#require 'active_support/core_ext/object'
|
27
|
+
#require 'active_support/core_ext/hash'
|
28
|
+
|
29
|
+
require 'andand'
|
30
|
+
require 'regression/runner'
|
31
|
+
|
32
|
+
|
33
|
+
if USING_OSX
|
34
|
+
require 'appscript'
|
35
|
+
end
|
36
|
+
|
37
|
+
require 'roo'
|
38
|
+
|
39
|
+
end
|
data/lib/patches/README
ADDED