dojo_widgets 0.1 → 0.2
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/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
|