druid-ts 0.0.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.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/.travis.yml +8 -0
  4. data/Gemfile +7 -0
  5. data/README.md +11 -0
  6. data/Rakefile +33 -0
  7. data/cucumber.yml +2 -0
  8. data/features/button.feature +38 -0
  9. data/features/checkbox.feature +39 -0
  10. data/features/div.feature +38 -0
  11. data/features/element.feature +114 -0
  12. data/features/form.feature +29 -0
  13. data/features/hidden_field.feature +33 -0
  14. data/features/html/images/circle.png +0 -0
  15. data/features/html/static_elements.html +89 -0
  16. data/features/html/success.html +8 -0
  17. data/features/image.feature +33 -0
  18. data/features/link.feature +39 -0
  19. data/features/list_item.feature +31 -0
  20. data/features/ordered_list.feature +35 -0
  21. data/features/page_level_actions.feature +31 -0
  22. data/features/radio_button.feature +42 -0
  23. data/features/select_list.feature +48 -0
  24. data/features/span.feature +36 -0
  25. data/features/step_definations/button_steps.rb +24 -0
  26. data/features/step_definations/checkbox_steps.rb +31 -0
  27. data/features/step_definations/div_steps.rb +19 -0
  28. data/features/step_definations/element_steps.rb +29 -0
  29. data/features/step_definations/form_steps.rb +11 -0
  30. data/features/step_definations/hidden_field_steps.rb +19 -0
  31. data/features/step_definations/image_steps.rb +19 -0
  32. data/features/step_definations/link_steps.rb +29 -0
  33. data/features/step_definations/list_item_steps.rb +12 -0
  34. data/features/step_definations/ordered_list_steps.rb +33 -0
  35. data/features/step_definations/page_level_actions_steps.rb +48 -0
  36. data/features/step_definations/page_traversal_steps.rb +4 -0
  37. data/features/step_definations/radio_button_steps.rb +23 -0
  38. data/features/step_definations/select_list_steps.rb +42 -0
  39. data/features/step_definations/span_steps.rb +15 -0
  40. data/features/step_definations/table_cell_steps.rb +19 -0
  41. data/features/step_definations/table_steps.rb +38 -0
  42. data/features/step_definations/text_area_steps.rb +19 -0
  43. data/features/step_definations/text_field_steps.rb +23 -0
  44. data/features/step_definations/unordered_list_steps.rb +11 -0
  45. data/features/support/env.rb +17 -0
  46. data/features/support/page.rb +163 -0
  47. data/features/support/url_helper.rb +16 -0
  48. data/features/table.feature +43 -0
  49. data/features/table_cell.feature +36 -0
  50. data/features/text_area.feature +32 -0
  51. data/features/text_field.feature +42 -0
  52. data/features/unordered_list.feature +36 -0
  53. data/lib/druid.rb +80 -0
  54. data/lib/druid/accessors.rb +506 -0
  55. data/lib/druid/elements.rb +19 -0
  56. data/lib/druid/elements/button.rb +11 -0
  57. data/lib/druid/elements/check_box.rb +7 -0
  58. data/lib/druid/elements/div.rb +10 -0
  59. data/lib/druid/elements/element.rb +129 -0
  60. data/lib/druid/elements/form.rb +7 -0
  61. data/lib/druid/elements/hidden_field.rb +11 -0
  62. data/lib/druid/elements/image.rb +7 -0
  63. data/lib/druid/elements/link.rb +16 -0
  64. data/lib/druid/elements/list_item.rb +7 -0
  65. data/lib/druid/elements/ordered_list.rb +30 -0
  66. data/lib/druid/elements/radio_button.rb +7 -0
  67. data/lib/druid/elements/select_list.rb +18 -0
  68. data/lib/druid/elements/span.rb +11 -0
  69. data/lib/druid/elements/table.rb +30 -0
  70. data/lib/druid/elements/table_cell.rb +7 -0
  71. data/lib/druid/elements/table_row.rb +22 -0
  72. data/lib/druid/elements/text_area.rb +11 -0
  73. data/lib/druid/elements/text_field.rb +11 -0
  74. data/lib/druid/elements/unordered_list.rb +28 -0
  75. data/lib/druid/page_factory.rb +58 -0
  76. data/spec/druid/druid_spec.rb +38 -0
  77. data/spec/spec_helper.rb +7 -0
  78. metadata +224 -0
@@ -0,0 +1,8 @@
1
+ <html>
2
+ <head>
3
+ <title>Success</title>
4
+ </head>
5
+ <body>
6
+ <h1>Success</h1>
7
+ </body>
8
+ </html>
@@ -0,0 +1,33 @@
1
+ Feature: Image
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Getting the image element
7
+ When I get the image element
8
+ Then the image should be "106" pixels wide
9
+ And the image should be "106" pixels tall
10
+
11
+ Scenario Outline: Locating an image on the page
12
+ When I get the image element by "<locate_by>"
13
+ Then the image should be "106" pixels wide
14
+ And the image should be "106" pixels tall
15
+
16
+ Examples:
17
+ | locate_by |
18
+ | id |
19
+ | class |
20
+ | name |
21
+ | xpath |
22
+ | index |
23
+
24
+ @multi
25
+ Scenario Outline: Locating an image using multiple parameters
26
+ When I get the image element bys "<param1>" and "<param2>"
27
+ Then the image should be "106" pixels wide
28
+ And the image should be "106" pixels tall
29
+
30
+ Examples:
31
+ | param1 | param2 |
32
+ | class | index |
33
+ | name | index |
@@ -0,0 +1,39 @@
1
+ Feature: Links
2
+ In order to interact with Links
3
+ Testers will need access and interrogation ability
4
+
5
+ Background:
6
+ Given I am on the static elements page
7
+
8
+ Scenario: Selecting a link
9
+ When I select the link labeled "Google Search"
10
+ Then the page should contain the text "Success"
11
+
12
+ Scenario Outline: Locating links on the Page
13
+ When I locate the link by "<locate_by>"
14
+ Then I should be able to select the link
15
+
16
+ Examples:
17
+ | locate_by |
18
+ | class |
19
+ | href |
20
+ | id |
21
+ | index |
22
+ | name |
23
+ | text |
24
+ | xpath |
25
+ | link |
26
+ | link_text |
27
+
28
+ Scenario: Retrieve a Link
29
+ When I retrieve a link element
30
+ Then I should know it exists
31
+ And I should know it is visible
32
+
33
+ @multi
34
+ Scenario: Support for multiple parameters
35
+ When I select a link labeled "Hello" and index "0"
36
+ Then the page should contain the text "Success"
37
+ Given I am on the static elements page
38
+ When I select a link labeled "Hello" and index "1"
39
+ Then the page should contain the text "Success"
@@ -0,0 +1,31 @@
1
+ Feature: List item
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Getting the text from a list item
7
+ When I get the text from the list item
8
+ Then the text should be "Item One"
9
+
10
+ @name
11
+ Scenario Outline: Locating list items on the page
12
+ When I locate the list item by "<locate_by>"
13
+ Then the text should be "Item One"
14
+
15
+ Examples:
16
+ | locate_by |
17
+ | id |
18
+ | class |
19
+ | xpath |
20
+ | index |
21
+ | name |
22
+
23
+ @multi
24
+ Scenario Outline: Locating list items using multiple parameters
25
+ When I search for the list item by "<param1>" and "<param2>"
26
+ Then the text should be "Item One"
27
+
28
+ Examples:
29
+ | param1 | param2 |
30
+ | class | index |
31
+ | name | index |
@@ -0,0 +1,35 @@
1
+ Feature: Ordered list
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Getting the first element from the ordered list
7
+ When I get the first item from the ordered list
8
+ Then the list item's text should be "Number One"
9
+
10
+ @name
11
+ Scenario Outline: Locating ordered lists on the page
12
+ When I locate the ordered list by "<locate_by>"
13
+ And I get the first item from the list
14
+ Then the list item's text should be "Number One"
15
+ And the list should contain 3 items
16
+ And each item should contain "Number"
17
+
18
+ Examples:
19
+ | locate_by |
20
+ | id |
21
+ | class |
22
+ | xpath |
23
+ | index |
24
+ | name |
25
+
26
+ @multi
27
+ Scenario Outline: Locating ordered lists using multiple parameters
28
+ When I search for the ordered list by "<param1>" and "<param2>"
29
+ And I get the first item from the list
30
+ Then the list items text should be "Number One"
31
+
32
+ Examples:
33
+ | param1 | param2 |
34
+ | class | index |
35
+ | name | index |
@@ -0,0 +1,31 @@
1
+ Feature: Page level actions
2
+ In order to act on pages from a web site
3
+ Testers will need to use the page object to encapsulate access
4
+
5
+ Scenario: Getting the text from a web page
6
+ Given I am on the static elements page
7
+ Then the page should contain the text "Static Elements Page"
8
+
9
+ Scenario: Getting the html from a web page
10
+ Given I am on the static elements page
11
+ Then the page should contain the html "<title>Static Elements Page</title>"
12
+
13
+ Scenario: Getting the title from a web page
14
+ Given I am on the static elements page
15
+ Then the page should have the title "Static Elements Page"
16
+
17
+ Scenario: Going to baidu.com from a web page
18
+ Given I am on the static elements page
19
+ Then I am able to go to baidu.com
20
+
21
+ Scenario: Going to baidu.com by default
22
+ Given I can goto baidu.com by default
23
+ Then the page should have the title "百度"
24
+
25
+ Scenario: Using the visit_page methods without block
26
+ Given I can goto baidu.com using visit_page without block
27
+ Then the page should have the title "百度" using on_page without block
28
+
29
+ Scenario: Using the visit_page methods with block
30
+ Given I can goto baidu.com using visit_page with block
31
+ Then the page should have the title "百度" using on_page with block
@@ -0,0 +1,42 @@
1
+ Feature: Radio Buttons
2
+ In order to interact with radio buttons
3
+ Testers will need access and interrogation ability
4
+
5
+ Background:
6
+ Given I am on the static elements page
7
+
8
+ Scenario: Selecting a radio button
9
+ When I select the "Milk" radio button
10
+ Then the "Milk" radio button should be selected
11
+ When I select the "Butter" radio button
12
+ Then the "Butter" radio button should be selected
13
+
14
+ @dev
15
+ Scenario Outline: Locating radio buttons on the Page
16
+ When I locate the radio button by "<locate_by>"
17
+ And I select the radio button
18
+ Then the "Milk" radio button should be selected
19
+
20
+ Scenarios:
21
+ | locate_by |
22
+ | id |
23
+ | class |
24
+ | name |
25
+ | xpath |
26
+ | index |
27
+
28
+ Scenario: Retrieve a radio button
29
+ When I retrieve a radio button
30
+ Then I should know it exists
31
+ And I should know it is visible
32
+
33
+ @multi
34
+ Scenario Outline: Locating radio buttons using multiple parameters
35
+ When I search for the radio button by "<param1>" and "<param2>"
36
+ And I select the radio button
37
+ Then the "Milk" radio button should be selected
38
+
39
+ Examples:
40
+ | param1 | param2 |
41
+ | class | index |
42
+ | name | index |
@@ -0,0 +1,48 @@
1
+ Feature: Select List
2
+ In order to interact with select lists
3
+ Testers will need access and interrogation ability
4
+
5
+ Background:
6
+ Given I am on the static elements page
7
+
8
+ Scenario: Selecting an element on the select list
9
+ When I select "Test 2" from the select list
10
+ Then the current item should be "option2"
11
+
12
+ Scenario Outline: Locating select lists on the Page
13
+ When I locate the select list by "<locate_by>"
14
+ Then I should be able to select "Test 2"
15
+ And the value for the selected item should be "option2"
16
+
17
+ Examples:
18
+ | locate_by |
19
+ | id |
20
+ | class |
21
+ | name |
22
+ | xpath |
23
+ | index |
24
+ # | value |
25
+ # | text |
26
+
27
+ Scenario: Retrieve a select list
28
+ When I retrieve a select list
29
+ Then I should know it exists
30
+ And I should know it is visible
31
+
32
+ @dev
33
+ Scenario: Iterating through the options in the select list
34
+ When I search for the select list by "id"
35
+ Then option "1" should contain "Test 1"
36
+ And option "2" should contain "Test 2"
37
+ And each option should contain "Test"
38
+
39
+ @multi
40
+ Scenario Outline: Locating a hidden field using multiple parameters
41
+ When I search for the select list bys "<param1>" and "<param2>"
42
+ Then I should be able to select "Test 2"
43
+ And the value for the selected item should be "option2"
44
+
45
+ Examples:
46
+ | param1 | param2 |
47
+ | class | index |
48
+ | name | index |
@@ -0,0 +1,36 @@
1
+ Feature: Span
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Getting the text from a span
7
+ When I get the text from the span
8
+ Then the text should be "My alert"
9
+
10
+ @name
11
+ Scenario Outline: Locating spans on the page
12
+ When I locate the span by "<locate_by>"
13
+ Then the text should be "My alert"
14
+
15
+ Examples:
16
+ | locate_by |
17
+ | id |
18
+ | class |
19
+ | xpath |
20
+ | index |
21
+ | name |
22
+
23
+ Scenario: Retrieve a Span
24
+ When I retrieve a span element
25
+ Then I should know it exists
26
+ And I should know it is visible
27
+
28
+ @multi
29
+ Scenario Outline: Locating span using multiple parameters
30
+ When I search for the span by "<param1>" and "<param2>"
31
+ Then the text should be "My alert"
32
+
33
+ Examples:
34
+ | param1 | param2 |
35
+ | class | index |
36
+ | name | index |
@@ -0,0 +1,24 @@
1
+ When(/^I click the button$/) do
2
+ @page.button_id
3
+ end
4
+
5
+ Then(/^I should be on the success page$/) do
6
+ expect(@page.text).to include 'Success'
7
+ expect(@page.title).to eql 'Success'
8
+ end
9
+
10
+ When(/^I locate the button by "(.*?)"$/) do |how|
11
+ @how = how
12
+ end
13
+
14
+ Then(/^I should be able to click the button$/) do
15
+ @page.send "button_#{@how}".to_sym
16
+ end
17
+
18
+ When(/^I retrieve a button element$/) do
19
+ @element = @page.send "button_id_button".to_sym
20
+ end
21
+
22
+ When(/^I search for the button by "(.*?)" and "(.*?)"$/) do |param1, param2|
23
+ @how = "#{param1}_#{param2}"
24
+ end
@@ -0,0 +1,31 @@
1
+ When(/^I select the First check box$/) do
2
+ @page.check_cb_id
3
+ end
4
+
5
+ Then(/^the First check box should be selected$/) do
6
+ expect(@page.cb_id_checked?).to be true
7
+ end
8
+
9
+ When(/^I unselect the First check box$/) do
10
+ @page.uncheck_cb_id
11
+ end
12
+
13
+ Then(/^the First check box should not be selected$/) do
14
+ expect(@page.cb_id_checked?).to be false
15
+ end
16
+
17
+ When(/^I locate the check box by "(.*?)"$/) do |how|
18
+ @how = how
19
+ end
20
+
21
+ Then(/^I should be able to check the check box$/) do
22
+ @page.send "check_cb_#{@how}".to_sym
23
+ end
24
+
25
+ When(/^I retrieve a check box element$/) do
26
+ @element = @page.cb_id_checkbox
27
+ end
28
+
29
+ When(/^I search for the check box by "(.*?)" and "(.*?)"$/) do |param1, param2|
30
+ @how = "#{param1}_#{param2}"
31
+ end
@@ -0,0 +1,19 @@
1
+ When(/^I get the text from the div$/) do
2
+ @text = @page.div_id
3
+ end
4
+
5
+ Then(/^the text should be "(.*?)"$/) do |expected_text|
6
+ expect(@text).to eql expected_text
7
+ end
8
+
9
+ When(/^I locate the div by "(.*?)"$/) do |how|
10
+ @text = @page.send "div_#{how}".to_sym
11
+ end
12
+
13
+ When(/^I retrieve the div element$/) do
14
+ @element = @page.div_id_div
15
+ end
16
+
17
+ When(/^I search for the div by "(.*?)" and "(.*?)"$/) do |param1, param2|
18
+ @text = @page.send "div_#{param1}_#{param2}".to_sym
19
+ end
@@ -0,0 +1,29 @@
1
+ Then(/^I should know its' text is "(.*?)"$/) do |text|
2
+ expect(@element.text).to eql text
3
+ end
4
+
5
+ Then(/^I should know it is equal to itself$/) do
6
+ expect(@element==@element).to be true
7
+ end
8
+
9
+ Then(/^I should know its' tag name is "(.*?)"$/) do |tagname|
10
+ expect(@element.tag_name).to eql tagname
11
+ end
12
+
13
+ Then(/^I should know the attribute "(.*?)" is false$/) do |attr_name|
14
+ @attr = @element.attribute_value(attr_name)
15
+ # expect(@attr.is_a? NilClass).to be true
16
+ expect(@attr).to be_nil
17
+ end
18
+
19
+ Then(/^I should be able to click it$/) do
20
+ @element.click
21
+ end
22
+
23
+ Then(/^I should know its' value is "(.*?)"$/) do |value|
24
+ expect(@element.value).to eql value
25
+ end
26
+
27
+ Then(/^I should know its' text includes "(.*?)"$/) do |text|
28
+ expect(@element.text).to include text
29
+ end
@@ -0,0 +1,11 @@
1
+ When(/^I locate the form by "(.*?)"$/) do |how|
2
+ @element = @page.send "form_#{how}_form"
3
+ end
4
+
5
+ Then(/^I should be able to submit the form$/) do
6
+ @element.submit
7
+ end
8
+
9
+ When(/^I locate the form using "(.*?)" and "(.*?)"$/) do |param1, param2|
10
+ @element = @page.send "form_#{param1}_#{param2}_form"
11
+ end
@@ -0,0 +1,19 @@
1
+ When(/^I retrieve the hidden field element$/) do
2
+ @page.hidden_field_id_hidden_field
3
+ end
4
+
5
+ Then(/^I should see the hidden field contains "(.*?)"$/) do |text|
6
+ expect(@page.hidden_field_id).to eql text
7
+ end
8
+
9
+ When(/^I locate the hidden field by "(.*?)"$/) do |how|
10
+ @element = @page.send "hidden_field_#{how}_hidden_field".to_sym
11
+ end
12
+
13
+ Then(/^hidden field element should contains "(.*?)"$/) do |text|
14
+ expect(@element.value).to eql text
15
+ end
16
+
17
+ When(/^I search for the hidden field by "(.*?)" and "(.*?)"$/) do |param1, param2|
18
+ @element = @page.send "hidden_field_#{param1}_#{param2}_hidden_field".to_sym
19
+ end