dojo_widgets 0.1 → 0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog +4 -0
- data/Guardfile +8 -0
- data/Rakefile +19 -0
- data/cucumber.yml +9 -0
- data/dojo_widgets.gemspec +1 -1
- data/features/accordion.feature +15 -0
- data/features/step_definitions/dojo_demo_steps.rb +34 -1
- data/features/support/env.rb +20 -3
- data/features/support/pages/dojo_demo_page.rb +5 -0
- data/features/tab.feature +22 -0
- data/lib/dojo_widgets.rb +5 -3
- data/lib/dojo_widgets/accordion.rb +16 -1
- data/lib/dojo_widgets/tabs.rb +22 -0
- data/lib/dojo_widgets/version.rb +1 -1
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d0caf79397099936b189e177713ba04f781dc4c4
|
4
|
+
data.tar.gz: 28239f981472d100181cd257451fb99c0d584731
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b129641097f1af28883bf76c8176903c7b61b8c08e0007eab3fc51f11ecd4645fbfc98c7be36e99fd8ec941404c189e584852b5b012a39a7ee4c952c5799c74e
|
7
|
+
data.tar.gz: 48bc9efd251374cb7e13f2f3a9e21e94538f933f6ce0d0f301a49f106305e0413e2fe31f51a29e625c98cea1f4e6de49eee7eb089dda021115749e82c785d5a8
|
data/ChangeLog
CHANGED
data/Guardfile
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
|
2
|
+
guard 'cucumber', :notification => true, :all_after_pass => false, :cli => '--profile focus' do
|
3
|
+
watch(%r{^features/.+\.feature$})
|
4
|
+
watch(%r{^features/support/.+$}) { 'features' }
|
5
|
+
watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
|
6
|
+
watch(%r{^lib/.+\.rb$}) { "features" }
|
7
|
+
watch(%r{^cucumber.yml$}) { "features" }
|
8
|
+
end
|
data/Rakefile
CHANGED
@@ -1 +1,20 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
+
require 'cucumber'
|
3
|
+
require 'cucumber/rake/task'
|
4
|
+
|
5
|
+
namespace :features do
|
6
|
+
Cucumber::Rake::Task.new(:watir_webdriver, "Run features with Watir") do |t|
|
7
|
+
t.profile = "watir_webdriver"
|
8
|
+
end
|
9
|
+
|
10
|
+
Cucumber::Rake::Task.new(:selenium_webdriver, "Run features with Selenium") do |t|
|
11
|
+
t.profile = "selenium_webdriver"
|
12
|
+
end
|
13
|
+
|
14
|
+
desc 'Run all features'
|
15
|
+
task :all => [:watir_webdriver, :selenium_webdriver]
|
16
|
+
end
|
17
|
+
|
18
|
+
task :default => 'features:all'
|
19
|
+
|
20
|
+
|
data/cucumber.yml
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
<%
|
2
|
+
std_opts = "--no-source --color --format pretty" # Cucumber::Formatter::Fuubar"
|
3
|
+
%>
|
4
|
+
|
5
|
+
default: DRIVER=WATIR <%= std_opts %> --tags ~@selenium_only
|
6
|
+
watir_webdriver: DRIVER=WATIR <%= std_opts %> --tags ~@selenium_only
|
7
|
+
selenium_webdriver: DRIVER=SELENIUM <%= std_opts %> --tags ~@watir_only
|
8
|
+
focus: DRIVER=WATIR <%= std_opts %> --tags ~@selenium_only --tags @focus
|
9
|
+
#focus: DRIVER=SELENIUM <%= std_opts %> --tags ~@watir_only --tags @focus
|
data/dojo_widgets.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |gem|
|
|
11
11
|
gem.email = ["jeff.morgan@leandog.com"]
|
12
12
|
gem.description = %q{Wrapper around dijit controls for use with page-object gem}
|
13
13
|
gem.summary = %q{Wrapper around dijit controls for use with page-object gem}
|
14
|
-
gem.homepage = ""
|
14
|
+
gem.homepage = "https://github.com/cheezy/dojo_widgets"
|
15
15
|
|
16
16
|
gem.files = `git ls-files`.split($/)
|
17
17
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
data/features/accordion.feature
CHANGED
@@ -5,3 +5,18 @@ Feature: The Accordion Widget
|
|
5
5
|
When I select the "Popups and Alerts" Accordion panel
|
6
6
|
Then the Accordion panel for "Popups and Alerts" should be visible
|
7
7
|
|
8
|
+
Scenario: Asking if a panel is selected
|
9
|
+
Given I am on the dojo demo page
|
10
|
+
When I select the "Color Picker" Accordion panel
|
11
|
+
Then I should know that the "Color Picker" panel is selected
|
12
|
+
|
13
|
+
Scenario: Getting the title of the selected panel
|
14
|
+
Given I am on the dojo demo page
|
15
|
+
When I select the "Color Picker" Accordion panel
|
16
|
+
Then I should know that the text for the selected panel is "Color Picker"
|
17
|
+
|
18
|
+
Scenario: Getting the titles of all of the panels
|
19
|
+
Given I am on the dojo demo page
|
20
|
+
Then I should know that "Popups and Alerts" is one of the titles
|
21
|
+
And I should know that "Tree" is one of the titles
|
22
|
+
And I should know that "Color Picker" is one of the titles
|
@@ -1,11 +1,44 @@
|
|
1
|
+
|
1
2
|
Given(/^I am on the dojo demo page$/) do
|
2
3
|
visit DojoDemoPage
|
3
4
|
end
|
4
5
|
|
5
6
|
When(/^I select the "(.*?)" Accordion panel$/) do |label|
|
6
|
-
on(DojoDemoPage).the_accordion.
|
7
|
+
on(DojoDemoPage).the_accordion.select label
|
7
8
|
end
|
8
9
|
|
9
10
|
Then(/^the Accordion panel for "(.*?)" should be visible$/) do |label|
|
10
11
|
on(DojoDemoPage).the_accordion.panel_for(label).should be_visible
|
11
12
|
end
|
13
|
+
|
14
|
+
Then(/^I should know that the "(.*?)" panel is selected$/) do |label|
|
15
|
+
on(DojoDemoPage).the_accordion.selected?(label).should be_true
|
16
|
+
end
|
17
|
+
|
18
|
+
Then(/^I should know that the text for the selected panel is "(.*?)"$/) do |label|
|
19
|
+
on(DojoDemoPage).the_accordion.selected.should == label
|
20
|
+
end
|
21
|
+
|
22
|
+
Then(/^I should know that "(.*?)" is one of the titles$/) do |label|
|
23
|
+
on(DojoDemoPage).the_accordion.labels.should include label
|
24
|
+
end
|
25
|
+
|
26
|
+
When(/^I select the "(.*?)" tab$/) do |label|
|
27
|
+
on(DojoDemoPage).the_tabs.select label
|
28
|
+
end
|
29
|
+
|
30
|
+
Then(/^I should see the word "(.*?)"$/) do |text|
|
31
|
+
on(DojoDemoPage).text.should include text
|
32
|
+
end
|
33
|
+
|
34
|
+
Then(/^the selected tab title should be "(.*?)"$/) do |label|
|
35
|
+
on(DojoDemoPage).the_tabs.selected.should == label
|
36
|
+
end
|
37
|
+
|
38
|
+
Then(/^the know that the "(.*?)" tab is selected$/) do |label|
|
39
|
+
on(DojoDemoPage).the_tabs.selected?(label).should be_true
|
40
|
+
end
|
41
|
+
|
42
|
+
Then(/^I should know that "(.*?)" is one of the tabs$/) do |label|
|
43
|
+
on(DojoDemoPage).the_tabs.labels.should include label
|
44
|
+
end
|
data/features/support/env.rb
CHANGED
@@ -7,10 +7,27 @@ require 'watir-webdriver'
|
|
7
7
|
|
8
8
|
World(PageObject::PageFactory)
|
9
9
|
|
10
|
+
module PersistentBrowser
|
11
|
+
|
12
|
+
@@browser = false
|
13
|
+
|
14
|
+
def self.get_browser
|
15
|
+
unless @@browser
|
16
|
+
@@browser = Watir::Browser.new :firefox if ENV['DRIVER'] == 'WATIR'
|
17
|
+
@@browser = Selenium::WebDriver.for :firefox if ENV['DRIVER'] == 'SELENIUM'
|
18
|
+
end
|
19
|
+
@@browser
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.quit
|
23
|
+
@@browser.quit
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
10
27
|
Before do
|
11
|
-
@browser =
|
28
|
+
@browser = PersistentBrowser.get_browser
|
12
29
|
end
|
13
30
|
|
14
|
-
|
15
|
-
|
31
|
+
at_exit do
|
32
|
+
PersistentBrowser.quit
|
16
33
|
end
|
@@ -4,6 +4,7 @@ class DojoDemoPage
|
|
4
4
|
page_url 'http://demos.dojotoolkit.org/demos/themePreviewer/demo.html'
|
5
5
|
|
6
6
|
dojo_accordion(:the_accordion, :id => 'leftAccordion')
|
7
|
+
dojo_tabs(:the_tab, :id => 'topTabs_tablist')
|
7
8
|
|
8
9
|
def initialize_page
|
9
10
|
wait_until(10) do
|
@@ -14,5 +15,9 @@ class DojoDemoPage
|
|
14
15
|
def the_accordion
|
15
16
|
the_accordion_element
|
16
17
|
end
|
18
|
+
|
19
|
+
def the_tabs
|
20
|
+
the_tab_element
|
21
|
+
end
|
17
22
|
|
18
23
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
Feature: The Tab Widget
|
2
|
+
|
3
|
+
Scenario: Selecting a tab
|
4
|
+
Given I am on the dojo demo page
|
5
|
+
When I select the "Sliders" tab
|
6
|
+
Then I should see the word "Enabled"
|
7
|
+
|
8
|
+
Scenario: Getting the title of the currently selected tab
|
9
|
+
Given I am on the dojo demo page
|
10
|
+
When I select the "Select Widgets" tab
|
11
|
+
Then the selected tab title should be "Select Widgets"
|
12
|
+
|
13
|
+
Scenario: Knowing if a tab is selected
|
14
|
+
Given I am on the dojo demo page
|
15
|
+
When I select the "Select Widgets" tab
|
16
|
+
Then the know that the "Select Widgets" tab is selected
|
17
|
+
|
18
|
+
Scenario: Getting all of the tab labels
|
19
|
+
Given I am on the dojo demo page
|
20
|
+
Then I should know that "Textarea" is one of the tabs
|
21
|
+
And I should know that "Sliders" is one of the tabs
|
22
|
+
And I should know that "Editor" is one of the tabs
|
data/lib/dojo_widgets.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require 'page-object'
|
2
|
+
require 'dojo_widgets/version'
|
3
|
+
require 'dojo_widgets/accordion'
|
4
|
+
require 'dojo_widgets/tabs'
|
4
5
|
|
5
6
|
module DojoWidgets
|
6
7
|
|
7
8
|
PageObject.register_widget(:dojo_accordion, DojoWidgets::Accordion, 'div')
|
9
|
+
PageObject.register_widget(:dojo_tabs, DojoWidgets::Tabs, 'div')
|
8
10
|
|
9
11
|
end
|
10
12
|
|
@@ -2,10 +2,25 @@
|
|
2
2
|
module DojoWidgets
|
3
3
|
class Accordion < PageObject::Elements::Div
|
4
4
|
|
5
|
-
def
|
5
|
+
def select(label)
|
6
6
|
span_element(:class => 'dijitAccordionText', :text => label).click
|
7
7
|
end
|
8
8
|
|
9
|
+
def selected?(label)
|
10
|
+
selected == label
|
11
|
+
end
|
12
|
+
|
13
|
+
def selected
|
14
|
+
container = div_element(:class => 'dijitSelected')
|
15
|
+
container.div_element(:class => 'dijitAccordionTitleFocus').text
|
16
|
+
end
|
17
|
+
|
18
|
+
def labels
|
19
|
+
span_elements(:class => 'dijitAccordionText').collect do |span|
|
20
|
+
span.text
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
9
24
|
def panel_for(label)
|
10
25
|
panels = div_elements(:class => 'dijitAccordionInnerContainer')
|
11
26
|
the_panel = panels.find do |panel|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
module DojoWidgets
|
3
|
+
class Tabs < PageObject::Elements::Div
|
4
|
+
|
5
|
+
def select(label)
|
6
|
+
span_element(:class => 'tabLabel', :text => label).click
|
7
|
+
end
|
8
|
+
|
9
|
+
def selected
|
10
|
+
div_element(:class => 'dijitTabChecked').text
|
11
|
+
end
|
12
|
+
|
13
|
+
def selected?(label)
|
14
|
+
selected == label
|
15
|
+
end
|
16
|
+
|
17
|
+
def labels
|
18
|
+
span_elements(:class => 'tabLabel').collect { |span| span.text }
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
data/lib/dojo_widgets/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dojo_widgets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.2'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeffrey S. Morgan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07
|
11
|
+
date: 2013-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: page-object
|
@@ -62,18 +62,22 @@ files:
|
|
62
62
|
- .gitignore
|
63
63
|
- ChangeLog
|
64
64
|
- Gemfile
|
65
|
+
- Guardfile
|
65
66
|
- LICENSE.txt
|
66
67
|
- README.md
|
67
68
|
- Rakefile
|
69
|
+
- cucumber.yml
|
68
70
|
- dojo_widgets.gemspec
|
69
71
|
- features/accordion.feature
|
70
72
|
- features/step_definitions/dojo_demo_steps.rb
|
71
73
|
- features/support/env.rb
|
72
74
|
- features/support/pages/dojo_demo_page.rb
|
75
|
+
- features/tab.feature
|
73
76
|
- lib/dojo_widgets.rb
|
74
77
|
- lib/dojo_widgets/accordion.rb
|
78
|
+
- lib/dojo_widgets/tabs.rb
|
75
79
|
- lib/dojo_widgets/version.rb
|
76
|
-
homepage:
|
80
|
+
homepage: https://github.com/cheezy/dojo_widgets
|
77
81
|
licenses:
|
78
82
|
- MIT
|
79
83
|
metadata: {}
|
@@ -102,3 +106,4 @@ test_files:
|
|
102
106
|
- features/step_definitions/dojo_demo_steps.rb
|
103
107
|
- features/support/env.rb
|
104
108
|
- features/support/pages/dojo_demo_page.rb
|
109
|
+
- features/tab.feature
|