symbiont 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. data/Gemfile.lock +10 -39
  2. data/HISTORY.md +6 -0
  3. data/lib/symbiont.rb +8 -4
  4. data/lib/symbiont/enclosers.rb +4 -4
  5. data/lib/symbiont/evaluators.rb +22 -29
  6. data/lib/symbiont/generators.rb +82 -317
  7. data/lib/symbiont/platform_selenium.rb +18 -0
  8. data/lib/symbiont/platform_selenium/platform_object.rb +236 -0
  9. data/lib/symbiont/platform_selenium/web_objects/button.rb +13 -0
  10. data/lib/symbiont/platform_selenium/web_objects/checkbox.rb +21 -0
  11. data/lib/symbiont/platform_selenium/web_objects/common.rb +104 -0
  12. data/lib/symbiont/platform_selenium/web_objects/link.rb +13 -0
  13. data/lib/symbiont/platform_selenium/web_objects/radio.rb +21 -0
  14. data/lib/symbiont/platform_selenium/web_objects/select_list.rb +79 -0
  15. data/lib/symbiont/platform_selenium/web_objects/table.rb +40 -0
  16. data/lib/symbiont/platform_selenium/web_objects/table_row.rb +36 -0
  17. data/lib/symbiont/platform_selenium/web_objects/text_field.rb +14 -0
  18. data/lib/symbiont/platform_watir.rb +13 -4
  19. data/lib/symbiont/platform_watir/platform_object.rb +74 -262
  20. data/lib/symbiont/platform_watir/web_objects/checkbox.rb +21 -0
  21. data/lib/symbiont/platform_watir/web_objects/common.rb +82 -0
  22. data/lib/symbiont/platform_watir/web_objects/radio.rb +21 -0
  23. data/lib/symbiont/platform_watir/web_objects/select_list.rb +67 -0
  24. data/lib/symbiont/platform_watir/web_objects/table.rb +31 -0
  25. data/lib/symbiont/platform_watir/web_objects/table_row.rb +31 -0
  26. data/lib/symbiont/platform_watir/web_objects/text_field.rb +13 -0
  27. data/lib/symbiont/platforms.rb +18 -6
  28. data/lib/symbiont/version.rb +1 -1
  29. data/lib/symbiont/web_objects/_common.rb +53 -74
  30. data/lib/symbiont/web_objects/button.rb +23 -4
  31. data/lib/symbiont/web_objects/checkbox.rb +24 -10
  32. data/lib/symbiont/web_objects/div.rb +9 -1
  33. data/lib/symbiont/web_objects/link.rb +25 -4
  34. data/lib/symbiont/web_objects/paragraph.rb +11 -0
  35. data/lib/symbiont/web_objects/radio.rb +27 -1
  36. data/lib/symbiont/web_objects/select_list.rb +20 -56
  37. data/lib/symbiont/web_objects/span.rb +9 -1
  38. data/lib/symbiont/web_objects/table.rb +19 -22
  39. data/lib/symbiont/web_objects/table_cell.rb +17 -1
  40. data/lib/symbiont/web_objects/table_row.rb +18 -25
  41. data/lib/symbiont/web_objects/text_field.rb +27 -11
  42. data/symbiont.gemspec +3 -8
  43. metadata +29 -122
  44. data/app/Gemfile +0 -4
  45. data/app/app.rb +0 -181
  46. data/app/config/database.rb +0 -9
  47. data/app/models/plan.rb +0 -10
  48. data/app/models/product.rb +0 -10
  49. data/app/models/study.rb +0 -11
  50. data/app/models/user.rb +0 -13
  51. data/app/public/css/style.css +0 -138
  52. data/app/views/create_plan.erb +0 -21
  53. data/app/views/create_product.erb +0 -15
  54. data/app/views/create_study.erb +0 -24
  55. data/app/views/create_user.erb +0 -60
  56. data/app/views/db_plans.erb +0 -31
  57. data/app/views/db_products.erb +0 -29
  58. data/app/views/db_studies.erb +0 -33
  59. data/app/views/db_users.erb +0 -23
  60. data/app/views/entity_list.erb +0 -10
  61. data/app/views/index.erb +0 -8
  62. data/app/views/layout.erb +0 -39
  63. data/app/views/login_page.erb +0 -17
  64. data/app/views/success_1.erb +0 -2
  65. data/app/views/success_2.erb +0 -2
  66. data/app/views/test_database.erb +0 -13
  67. data/app/views/test_events.erb +0 -51
  68. data/app/views/test_login.erb +0 -53
  69. data/app/views/test_login_error.erb +0 -22
  70. data/app/views/test_login_success.erb +0 -22
  71. data/app/views/test_page.erb +0 -184
  72. data/specs/button.feature +0 -44
  73. data/specs/checkbox.feature +0 -40
  74. data/specs/data_setter.feature +0 -29
  75. data/specs/definitions/pages.rb +0 -156
  76. data/specs/div.feature +0 -11
  77. data/specs/evaluators.feature +0 -17
  78. data/specs/events.feature +0 -30
  79. data/specs/frame.feature +0 -5
  80. data/specs/link.feature +0 -42
  81. data/specs/locators.feature +0 -17
  82. data/specs/radio.feature +0 -38
  83. data/specs/select_list.feature +0 -50
  84. data/specs/simple_test.feature +0 -13
  85. data/specs/span.feature +0 -11
  86. data/specs/support/env.rb +0 -20
  87. data/specs/support/hooks.rb +0 -11
  88. data/specs/support/test_steps/action_steps_buttons.rb +0 -70
  89. data/specs/support/test_steps/action_steps_checkboxes.rb +0 -75
  90. data/specs/support/test_steps/action_steps_data_setter.rb +0 -56
  91. data/specs/support/test_steps/action_steps_divs.rb +0 -18
  92. data/specs/support/test_steps/action_steps_evaluators.rb +0 -15
  93. data/specs/support/test_steps/action_steps_events.rb +0 -77
  94. data/specs/support/test_steps/action_steps_frames.rb +0 -13
  95. data/specs/support/test_steps/action_steps_links.rb +0 -61
  96. data/specs/support/test_steps/action_steps_locators.rb +0 -44
  97. data/specs/support/test_steps/action_steps_navigate.rb +0 -25
  98. data/specs/support/test_steps/action_steps_radios.rb +0 -75
  99. data/specs/support/test_steps/action_steps_select_lists.rb +0 -106
  100. data/specs/support/test_steps/action_steps_spans.rb +0 -18
  101. data/specs/support/test_steps/action_steps_tables.rb +0 -82
  102. data/specs/support/test_steps/action_steps_text_fields.rb +0 -107
  103. data/specs/support/test_steps/action_steps_webobjects.rb +0 -31
  104. data/specs/support/test_steps/simple_test_steps.rb +0 -8
  105. data/specs/table.feature +0 -39
  106. data/specs/text_field.feature +0 -47
  107. data/specs/web_object.feature +0 -15
@@ -1,40 +0,0 @@
1
- Feature: Ability to Support Checkbox Web Objects
2
-
3
- Scenario: Reference a button
4
- When on the object test page
5
- Then the organic circuitry checkbox should exist
6
- And the organic circuitry checkbox should be visible
7
- And the organic circuitry checkbox should be enabled
8
- And the organic circuitry checkbox should be a checkbox object
9
-
10
- Scenario: Modify checkbox and check state
11
- When organic circuitry is not chosen as the futuristic technology
12
- Then the organic circuitry checkbox should be unchecked
13
- When organic circuitry is chosen as the futuristic technology
14
- Then the organic circuitry checkbox should be checked
15
- When organic circuitry is not chosen as the futuristic technology
16
- Then the organic circuitry checkbox should be unchecked
17
-
18
- Scenario: Handling a non-existent checkbox
19
- When on the object test page
20
- Then the fake checkbox should not exist
21
- But the fake checkbox should be a checkbox object
22
-
23
- Scenario: Handling a disabled checkbox
24
- When on the object test page
25
- Then the preferential eigenstate selector checkbox should exist
26
- And the preferential eigenstate selector checkbox should be visible
27
- And the preferential eigenstate selector checkbox should be a checkbox object
28
- But the preferential eigenstate selector checkbox should not be enabled
29
-
30
- Scenario Outline: Finding buttons with locators
31
- When the kinetic harpoon checkbox on the object test page is checked by "<locator>"
32
- Then the kinetic harpoon checkbox should be checked
33
-
34
- Scenarios:
35
- | locator |
36
- | id |
37
- | name |
38
- | class |
39
- | xpath |
40
- | index |
@@ -1,29 +0,0 @@
1
- Feature: Ability to enter sets of data
2
-
3
- Scenario: Enter data into form when definition has default data
4
- When an administrator logs in
5
- Then the users option should be available
6
-
7
- Scenario: Enter data into form with modification of default data
8
- When a clinical administrator logs in
9
- Then the users option should not be available
10
-
11
- Scenario: Enter data into a form using specific data
12
- When a power user with a nonsecure password logs in to the beta client
13
- Then the users option should not be available
14
-
15
- Scenario: Enter data into a form using specific data from a table
16
- When a user logs in with:
17
- | server | client | loginName | loginPassword |
18
- | dev | test | jnyman | Timef1ux81* |
19
- Then the users option should not be available
20
-
21
- Scenario: Enter data into a select list
22
- When a totally fictitious concept is used
23
- Then that concept should be selected
24
-
25
- Scenario: Enter data into a check boxes and radios
26
- When two futuristic technologies are chosen
27
- And a way to vaporize is selected
28
- Then those technologies should be checked
29
- And that vaporization method should be selected
@@ -1,156 +0,0 @@
1
- class LandingPage
2
- include Symbiont
3
-
4
- url_is "http://localhost:4567"
5
- title_is "Landing Page | Test Application"
6
- look_for :simple_object_page
7
-
8
- link :simple_object_page, id: "test_page"
9
- link :database_app, id: "test_database"
10
- link :fake_link, id: "fake_link"
11
- end
12
-
13
- class SimpleObjectPage
14
- include Symbiont
15
-
16
- url_is "http://localhost:4567/test_page"
17
- title_is "Simple Object Page | Test Application"
18
-
19
- link :avengersID, id: "avengersID"
20
- link :avengersName, name: "avengersName"
21
- link :avengersClass, class: "avengersClass"
22
- link :avengersXPath, xpath: "id('avengersID')"
23
- link :avengersIndex, {id: "avengersID", index: 0}
24
- link :avengersText, text: "Avengers Assemble"
25
- link :avengersHref, href: "success_1"
26
- link :avengersLink, link: "Avengers Assemble"
27
- link :avengersLinkText, link_text: "Avengers Assemble"
28
- link :avengersTitle, title: "Click to Assemble"
29
- link :avengersCSS, css: "#avengersID"
30
-
31
- button :clickmeID, id: "clickmeID"
32
- button :clickmeName, name: "clickmeName"
33
- button :clickmeClass, class: "clickmeClass"
34
- button :clickmeXPath, xpath: "//input[@id='clickmeID']"
35
- button :clickmeIndex, {id: "clickmeID", index: 0}
36
- button :clickmeValue, value: "Click Me"
37
- button :clickmeText, text: "Click Me"
38
- button :clickmeCSS, css: "#clickmeID"
39
-
40
- button :cantClickMeID, id: "cantclickmeID"
41
-
42
- button :fake_button, id: "fake_button"
43
-
44
- text_field :bookTitleID, id: "bookTitleID"
45
- text_field :bookTitleName, name: "bookTitleName"
46
- text_field :bookTitleClass, class: "bookTitleClass"
47
- text_field :bookTitleXPath, xpath: "//input[@id='bookTitleID']"
48
- text_field :bookTitleIndex, {id: "bookTitleID", index: 0}
49
-
50
- text_field :bookRefID, id: "bookRefID"
51
- text_field :bookPubID, id: "bookPubID"
52
- text_field :fake_text_field, id: "fake_text_field"
53
-
54
- select_list :subatomicParticles, id: "subatomicID"
55
-
56
- select_list :physicsConceptsID, id: "physicsConceptsID"
57
- select_list :physicsConceptsName, name: "physicsConceptsName"
58
- select_list :physicsConceptsClass, class: "physicsConceptsClass"
59
- select_list :physicsConceptsXPath, xpath: "//select[@id='physicsConceptsID']"
60
- select_list :physicsConceptsIndex, {id: "physicsConceptsID", index: 0}
61
-
62
- select_list :sithPowerID, id: "sithPowerID"
63
- select_list :fake_select_list, id: "fake_select_list"
64
-
65
- checkbox :neuralShunt, id: "neuralShuntID"
66
- checkbox :organicCircuitry, id: "organicCircuitryID"
67
-
68
- checkbox :kineticHarpoonID, id: "kineticHarpoonID"
69
- checkbox :kineticHarpoonName, name: "kineticHarpoonName"
70
- checkbox :kineticHarpoonClass, class: "kineticHarpoonClass"
71
- checkbox :kineticHarpoonXPath, xpath: "//input[@id='kineticHarpoonID']"
72
- checkbox :kineticHarpoonIndex, {id: "kineticHarpoonID", index: 0}
73
-
74
- checkbox :eigenstate, id: "eigenstateID"
75
- checkbox :fake_checkbox, id: "fake_checkbox"
76
-
77
- radio :warpCoreBreach, id: "wcbID"
78
-
79
- radio :unstablePhaseShiftID, id: "upsID"
80
- radio :unstablePhaseShiftName, name: "vaporize"
81
- radio :unstablePhaseShiftClass, class: "upsClass"
82
- radio :unstablePhaseShiftXPath, xpath: "//input[@id='upsID']"
83
- radio :unstablePhaseShiftIndex, {id: "unstablePhaseShiftID", index: 3}
84
-
85
- radio :fake_radio, id: "fake_radio"
86
- radio :coronalMassEjection, id: "cmeID"
87
-
88
- table :atomicTable, id: "atomicTableID"
89
-
90
- table :savingsTableID, id: "savingsTableID"
91
- table :savingsTableName, name: "savingsTableName"
92
- table :savingsTableClass, class: "savingsTableClass"
93
- table :savingsTableXPath, xpath: "id('savingsTableID')"
94
-
95
- cell :janSavings, id: "jan_save"
96
- cell :febSavings, id: "feb_save"
97
-
98
- div :divTextID, id: "divTextID"
99
- div :divTextName, name: "divTextName"
100
- div :divTextClass, class: "divTextClass"
101
-
102
- span :spanTextID, id: "spanTextID"
103
- span :spanTextName, name: "spanTextName"
104
- span :spanTextClass, class: "spanTextClass"
105
- end
106
-
107
- class SimpleEventsPage
108
- include Symbiont
109
-
110
- url_is "http://localhost:4567/test_events"
111
-
112
- button :conditional, id: "conditional"
113
- button :hideButton, value: "Hide Button"
114
- button :revealButton, value: "Reveal Button"
115
- button :createButton, value: "Create Button"
116
- button :removeButton, value: "Remove Button"
117
-
118
- button :alert, id: "alertButton"
119
- button :confirm, id: "confirmButton"
120
- button :prompt, id: "promptButton"
121
- end
122
-
123
- class LoggingIn
124
- include Symbiont
125
- begin_at "http://localhost:4567/test_database"
126
-
127
- LOGIN_DATA = {
128
- 'server' => 'Staging',
129
- 'client' => 'Test',
130
- 'loginName' => 'administrator',
131
- 'loginPassword' => 'p@ssWord!'
132
- }
133
-
134
- within_frame(id: "loginSection") do |frame|
135
- text_field :server, id: "serverID", frame: frame
136
- text_field :client, id: "clientID", frame: frame
137
- text_field :loginName, id: "loginNameID", frame: frame
138
- text_field :loginPassword, id: "passwordID", frame: frame
139
- button :login, id: "btnSubmit", frame: frame
140
- end
141
-
142
- def login_as(credentials = {})
143
- credentials = LOGIN_DATA.merge(credentials)
144
- self.server = credentials['server']
145
- self.client = credentials['client']
146
- self.loginName = credentials['loginName']
147
- self.loginPassword = credentials['loginPassword']
148
- self.login
149
- end
150
- end
151
-
152
- class EntityList
153
- include Symbiont
154
-
155
- link :users, id: "users"
156
- end
data/specs/div.feature DELETED
@@ -1,11 +0,0 @@
1
- Feature: Ability to Support Div Web Objects
2
-
3
- Scenario: Reference a div
4
- When on the object test page
5
- Then the div text should exist
6
- And the div text should be visible
7
- And the div text should be a div object
8
-
9
- Scenario: Get text from a div
10
- When on the object test page
11
- Then the div text should be "This text is within a div tag."
@@ -1,17 +0,0 @@
1
- Feature: Ability to handle browser and page actions.
2
-
3
- Scenario: Getting web page text
4
- When on the object test page
5
- Then the page should contain the text "Multiphasic Temporal Convergence"
6
-
7
- Scenario: Getting web page markup
8
- When on the object test page
9
- Then the page should contain the markup "<td>Carbon</td>"
10
-
11
- Scenario: Getting web page title
12
- When on the object test page
13
- Then the page should have the title "Simple Object Page | Test Application"
14
-
15
- Scenario: Getting the web page url
16
- When on the object test page
17
- Then the page url should be "http://localhost:4567/test_page"
data/specs/events.feature DELETED
@@ -1,30 +0,0 @@
1
- Feature: Ability to Handle Events or Time-Based Situations
2
-
3
- Scenario: Waiting for a general condition
4
- When performing a successful action on the object test page
5
- Then the test should wait for a success page
6
-
7
- Scenario: Waiting for an object to be invisible
8
- When on the events test page
9
- Then the conditional button can be clicked
10
- When the conditional button is hidden
11
- Then the test will wait until the conditional button is invisible
12
- And after that time the conditional button should not be visible
13
-
14
- Scenario: Waiting for an object to be visible
15
- When the conditional button on the events test page is invisible
16
- And the conditional button is revealed
17
- Then the test will wait until the conditional button is visible before clicking it
18
-
19
- Scenario: Dealing with alert message boxes
20
- When the alert message box appears
21
- Then the alert message should be "Alert Message Received"
22
-
23
- Scenario: Dealing with confirmation message boxes
24
- When the confirmation message box appears
25
- Then the confirmation message should be "Confirmation Message Received"
26
-
27
- Scenario: Dealing with prompt message boxes
28
- When the prompt message box appears
29
- Then the prompt message should be "Favorite Sith Lord"
30
- And the prompt default value should be "Darth Bane"
data/specs/frame.feature DELETED
@@ -1,5 +0,0 @@
1
- Feature: Ability to Support Frame Web Objects
2
-
3
- Scenario: Access web objects within a frame
4
- When the login form on the database application is filled in with standard data
5
- Then the entity list page appears
data/specs/link.feature DELETED
@@ -1,42 +0,0 @@
1
- Feature: Ability to Support Link Web Objects
2
-
3
- Scenario: Reference a link
4
- When on the landing page
5
- Then the database app link should exist
6
- And the database app link should be visible
7
- And the database app link should be a link object
8
-
9
- Scenario: Get text from a link
10
- When on the landing page
11
- Then the text of the object test page link should be "Simple Object Page"
12
-
13
- Scenario: Click a link
14
- When the object test page link on the landing page is clicked
15
- Then the simple object page appears
16
-
17
- Scenario: Handling a non-existent link
18
- When on the landing page
19
- Then the fake link should not exist
20
- But the fake link should be a link object
21
-
22
- Scenario: Handling a non-declared text field
23
- When the oath link on the object test page is clicked
24
- Then the first success page appears
25
-
26
- Scenario Outline: Finding links with locators
27
- When the avengers link on the object test page is clicked by "<locator>"
28
- Then the first success page appears
29
-
30
- Scenarios:
31
- | locator |
32
- | css |
33
- | id |
34
- | name |
35
- | class |
36
- | xpath |
37
- | index |
38
- | title |
39
- | text |
40
- | href |
41
- | link |
42
- | link_text |
@@ -1,17 +0,0 @@
1
- Feature: Ability to Reference and Use Undeclared Web Objects
2
-
3
- Scenario: Undeclared links
4
- When the test needs to utilize the oath link
5
- Then the oath link can be referenced
6
- And the oath link can be clicked
7
-
8
- Scenario: Undeclared buttons
9
- When the test needs to utilize the nostalgic button
10
- Then the nostalgic button can be referenced
11
- And the nostalgic button can be clicked
12
-
13
- Scenario: Undeclared text fields
14
- When the test needs to utilize the book summary text field
15
- Then the book summary text field can be referenced
16
- And the book summary text field can be set to "A How-To Guide for Sith Inquisitors"
17
- And the book summary should be "A How-To Guide for Sith Inquisitors"
data/specs/radio.feature DELETED
@@ -1,38 +0,0 @@
1
- Feature: Ability to Support Radio Web Objects
2
-
3
- Scenario: Reference a radio
4
- When on the object test page
5
- Then the warp core breach radio should exist
6
- And the warp core breach radio should be visible
7
- And the warp core breach radio should be enabled
8
- And the warp core breach radio should be a radio object
9
-
10
- Scenario: Modify radio and check state
11
- When warp core breach is not selected as the least favorite way to vaporize
12
- Then the warp core breach radio should not be set
13
- When warp core breach is selected as the least favorite way to vaporize
14
- Then the warp core breach radio should be set
15
-
16
- Scenario: Handling a non-existent radio
17
- When on the object test page
18
- Then the fake radio should not exist
19
- But the fake radio should be a radio object
20
-
21
- Scenario: Handling a disabled radio
22
- When on the object test page
23
- Then the coronal mass ejection radio should exist
24
- And the coronal mass ejection radio should be visible
25
- And the coronal mass ejection radio should be a radio object
26
- But the coronal mass ejection radio should not be enabled
27
-
28
- Scenario Outline: Finding buttons with locators
29
- When the unstable phase shift radio on the object test page is selected by "<locator>"
30
- Then the unstable phase shift radio should be set
31
-
32
- # Unable to run index
33
- Scenarios:
34
- | locator |
35
- | id |
36
- | name |
37
- | class |
38
- | xpath |
@@ -1,50 +0,0 @@
1
- Feature: Ability to Support Select List Web Objects
2
-
3
- Scenario: Reference a select list
4
- When on the object test page
5
- Then the physics concepts select list should exist
6
- And the physics concepts select list should be visible
7
- And the physics concepts select list should be enabled
8
- And the physics concepts select list should be a select list object
9
- And the physics concepts select list should include "Bose-Einstein Condensates"
10
-
11
- Scenario: Select item in select list and get current selection from it
12
- When "Tachyonic Antitravel" is selected from physics concepts on the object test page
13
- Then the physics concepts select list should have the second option selected
14
- And the physics concepts select list should be displaying "Tachyonic Antitravel"
15
-
16
- Scenario: Select item in select list by value
17
- When "option3" is selected from the physics concepts list
18
- Then the physics concepts select list should be displaying "Bose-Einstein Condensates"
19
- And the selected option on the physics concepts select list should have a value of "option3"
20
-
21
- Scenario: Selecting multiple items from a list and clearing the list
22
- When "Photon" and "Quark" are selected from the subatomic particles select list
23
- Then the subatomic particles list should be displaying "Photon" and "Quark"
24
- When the select list is cleared
25
- Then the select list should have no selected options
26
-
27
- Scenario: Handling a non-existent select list
28
- When on the object test page
29
- Then the fake select list should not exist
30
- But the fake select list should be a select list object
31
-
32
- Scenario: Handling a disabled select list
33
- When on the object test page
34
- Then the sith power select list should exist
35
- And the sith power select list should be visible
36
- And the sith power select list should be displaying "Force Lightning"
37
- And the sith power select list object should be a select list object
38
- But the sith power select list should not be enabled
39
-
40
- Scenario Outline: Finding select lists with locators
41
- When the physics concepts on the object test page is selected by "<locator>"
42
- Then the physics concepts select list should be displaying "Tachyonic Antitravel"
43
-
44
- Scenarios:
45
- | locator |
46
- | id |
47
- | name |
48
- | class |
49
- | xpath |
50
- | index |