83 |
84 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/Suite/Test.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/Suite/testng-failed.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/bullet_point.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/amuthansakthivel/MobileAutomationFramework/159e7cacc4bdfdcdec7d086c5b330cab5e3f8702/MobileAutomationFramework/test-output/bullet_point.png
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/collapseall.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/amuthansakthivel/MobileAutomationFramework/159e7cacc4bdfdcdec7d086c5b330cab5e3f8702/MobileAutomationFramework/test-output/collapseall.gif
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/emailable-report.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
118 |
119 |
120 |
121 |
122 |
123 |
com.testcases.APIDemosTest
124 |
125 |
126 |
127 |
128 |
129 |
130 |
testAPIScroll
131 |
({width=, length=, port=8200, pieces=, udid=emulator-5554, nature=android, weight=, deviceName=Emulator, hbnumber=, TestCaseName=testAPIScroll, height=})
132 |
133 | (Test scroll on API demo app)
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 | <?xml version="1.0" encoding="UTF-8"?>
146 | <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
147 | <suite guice-stage="DEVELOPMENT" name="Suite">
148 | <listeners>
149 | <listener class-name="com.listeners.ListenerClass"/>
150 | <listener class-name="com.listeners.AnnotationTransformer"/>
151 | </listeners>
152 | <test thread-count="1" name="Test" parallel="methods">
153 | <classes>
154 | <class name="com.testcases.LoginTests"/>
155 | <class name="com.testcases.BaseTest"/>
156 | <class name="com.testcases.ReceivePageTests"/>
157 | <class name="com.testcases.APIDemosTest"/>
158 | </classes>
159 | </test> <!-- Test -->
160 | </suite> <!-- Suite -->
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 | Test (4 classes)
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
206 |
Total running time: 2 minutes
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
com.testcases.BaseTest
226 |
227 | beforeSuite
228 |
229 | afterSuite
230 |
231 |
232 |
233 |
234 |
com.testcases.APIDemosTest
235 |
236 | beforeSuite
237 |
238 | testAPIDemo
239 |
240 | afterSuite
241 |
242 |
243 |
244 |
245 |
com.testcases.LoginTests
246 |
247 | loginTest
248 |
249 |
250 |
251 |
252 |
com.testcases.ReceivePageTests
253 |
254 | receiveFSIHBTest
255 |
256 | beforeSuite
257 |
258 | afterSuite
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
com.testcases.LoginTests
271 |
272 | beforeSuite
273 | 0 ms
274 |
275 |
276 |
277 |
com.testcases.APIDemosTest
278 |
279 | testAPIScroll({width=, length=, port=8200, pieces=, udid=emulator-5554, nature=android, weight=, deviceName=Emulat...)
280 | 325 ms
281 |
282 |
283 | wrapUp
284 | 121126 ms
285 |
286 |
287 |
288 |
com.testcases.LoginTests
289 |
290 | afterSuite
291 | 131173 ms
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/junitreports/TEST-com.testcases.APIDemosTest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/junitreports/TEST-com.testcases.LoginTests.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
14 |
67 |
68 |
69 |
70 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/junitreports/TEST-com.testcases.ReceivePageTests.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
13 |
66 |
67 |
68 |
69 |
77 |
130 |
131 |
132 |
133 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/navigator-bullet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/amuthansakthivel/MobileAutomationFramework/159e7cacc4bdfdcdec7d086c5b330cab5e3f8702/MobileAutomationFramework/test-output/navigator-bullet.png
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/old/Suite/Test.properties:
--------------------------------------------------------------------------------
1 | [SuiteResult context=Test]
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/old/Suite/classes.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Class name
4 | Method name
5 | Groups
6 |
7 | com.testcases.APIDemosTest
8 |
9 |
10 | @Test
11 |
12 |
13 |
14 | testAPIDemo
15 |
16 |
17 |
18 | testAPIScroll
19 |
20 |
21 | @BeforeClass
22 |
23 |
24 | @BeforeMethod
25 |
26 |
27 | @AfterMethod
28 |
29 |
30 |
31 | wrapUp
32 |
33 |
34 | @AfterClass
35 |
36 |
37 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/old/Suite/groups.html:
--------------------------------------------------------------------------------
1 |
Groups used for this test run
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/old/Suite/index.html:
--------------------------------------------------------------------------------
1 |
Results for Suite
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/old/Suite/main.html:
--------------------------------------------------------------------------------
1 |
Results for Suite
2 | Select a result on the left-hand pane.
3 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/old/Suite/methods-alphabetical.html:
--------------------------------------------------------------------------------
1 |
Methods run, sorted chronologically >> means before, << means after
Suite
(Hover the method name to see the test class name)
2 |
3 | Time Delta (ms) Suite configuration Test configuration Class configuration Groups configuration Method configuration Test method Thread Instances
4 | 20/03/28 13:01:06 0 <<afterSuite
5 | main@29183965
6 | 20/03/28 12:58:55 -131163 >>beforeSuite
7 | main@29183965
8 | 20/03/28 12:58:55 -130848 testAPIScroll
9 | TestNG-PoolService-0@1255595013
10 | 20/03/28 13:00:56 -10046 <<wrapUp
11 | TestNG-PoolService-0@1255595013
12 |
13 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/old/Suite/methods-not-run.html:
--------------------------------------------------------------------------------
1 |
Methods that were not run
2 | com.testcases.ReceivePageTests.receiveFSIHBTest To check whether the user can receive the export HB successfully
3 | com.testcases.BaseTest.beforeSuite
4 | com.testcases.BaseTest.beforeSuite
5 | com.testcases.BaseTest.beforeSuite
6 | com.testcases.LoginTests.loginTest To check whether the user can login to the application and logout successfully
7 | com.testcases.APIDemosTest.testAPIDemo To verify whether the API demo test app
8 | com.testcases.BaseTest.afterSuite
9 | com.testcases.BaseTest.afterSuite
10 | com.testcases.BaseTest.afterSuite
11 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/old/Suite/methods.html:
--------------------------------------------------------------------------------
1 |
Methods run, sorted chronologically >> means before, << means after
Suite
(Hover the method name to see the test class name)
2 |
3 | Time Delta (ms) Suite configuration Test configuration Class configuration Groups configuration Method configuration Test method Thread Instances
4 | 20/03/28 12:58:55 0 >>beforeSuite
5 | main@29183965
6 | 20/03/28 12:58:55 315 testAPIScroll
7 | TestNG-PoolService-0@1255595013
8 | 20/03/28 13:00:56 121117 <<wrapUp
9 | TestNG-PoolService-0@1255595013
10 | 20/03/28 13:01:06 131163 <<afterSuite
11 | main@29183965
12 |
13 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/old/Suite/reporter-output.html:
--------------------------------------------------------------------------------
1 |
Reporter output
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/old/Suite/testng.xml.html:
--------------------------------------------------------------------------------
1 |
testng.xml for Suite <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite guice-stage="DEVELOPMENT" name="Suite">
<listeners>
<listener class-name="com.listeners.ListenerClass"/>
<listener class-name="com.listeners.AnnotationTransformer"/>
</listeners>
<test thread-count="1" name="Test" parallel="methods">
<classes>
<class name="com.testcases.LoginTests"/>
<class name="com.testcases.BaseTest"/>
<class name="com.testcases.ReceivePageTests"/>
<class name="com.testcases.APIDemosTest"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/old/Suite/toc.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Results for Suite
4 |
5 |
6 |
7 |
8 |
Results forSuite
9 |
23 |
30 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/old/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
Test results
6 |
Suite Passed Failed Skipped testng.xml
7 | Total 1 0 0
8 | Suite
9 | 1 0 0 Link
10 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/passed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/amuthansakthivel/MobileAutomationFramework/159e7cacc4bdfdcdec7d086c5b330cab5e3f8702/MobileAutomationFramework/test-output/passed.png
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/skipped.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/amuthansakthivel/MobileAutomationFramework/159e7cacc4bdfdcdec7d086c5b330cab5e3f8702/MobileAutomationFramework/test-output/skipped.png
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/testng-failed.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/testng-reports.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0px 0px 5px 5px;
3 | }
4 |
5 | ul {
6 | margin: 0px;
7 | }
8 |
9 | li {
10 | list-style-type: none;
11 | }
12 |
13 | a {
14 | text-decoration: none;
15 | }
16 |
17 | a:hover {
18 | text-decoration: underline;
19 | }
20 |
21 | .navigator-selected {
22 | background: #ffa500;
23 | }
24 |
25 | .wrapper {
26 | position: absolute;
27 | top: 60px;
28 | bottom: 0;
29 | left: 400px;
30 | right: 0;
31 | overflow: auto;
32 | }
33 |
34 | .navigator-root {
35 | position: absolute;
36 | top: 60px;
37 | bottom: 0;
38 | left: 0;
39 | width: 400px;
40 | overflow-y: auto;
41 | }
42 |
43 | .suite {
44 | margin: 0px 10px 10px 0px;
45 | background-color: #fff8dc;
46 | }
47 |
48 | .suite-name {
49 | padding-left: 10px;
50 | font-size: 25px;
51 | font-family: Times;
52 | }
53 |
54 | .main-panel-header {
55 | padding: 5px;
56 | background-color: #9FB4D9; //afeeee;
57 | font-family: monospace;
58 | font-size: 18px;
59 | }
60 |
61 | .main-panel-content {
62 | padding: 5px;
63 | margin-bottom: 10px;
64 | background-color: #DEE8FC; //d0ffff;
65 | }
66 |
67 | .rounded-window {
68 | border-radius: 10px;
69 | border-style: solid;
70 | border-width: 1px;
71 | }
72 |
73 | .rounded-window-top {
74 | border-top-right-radius: 10px 10px;
75 | border-top-left-radius: 10px 10px;
76 | border-style: solid;
77 | border-width: 1px;
78 | overflow: auto;
79 | }
80 |
81 | .light-rounded-window-top {
82 | border-top-right-radius: 10px 10px;
83 | border-top-left-radius: 10px 10px;
84 | }
85 |
86 | .rounded-window-bottom {
87 | border-style: solid;
88 | border-width: 0px 1px 1px 1px;
89 | border-bottom-right-radius: 10px 10px;
90 | border-bottom-left-radius: 10px 10px;
91 | overflow: auto;
92 | }
93 |
94 | .method-name {
95 | font-size: 12px;
96 | font-family: monospace;
97 | }
98 |
99 | .method-content {
100 | border-style: solid;
101 | border-width: 0px 0px 1px 0px;
102 | margin-bottom: 10;
103 | padding-bottom: 5px;
104 | width: 80%;
105 | }
106 |
107 | .parameters {
108 | font-size: 14px;
109 | font-family: monospace;
110 | }
111 |
112 | .stack-trace {
113 | white-space: pre;
114 | font-family: monospace;
115 | font-size: 12px;
116 | font-weight: bold;
117 | margin-top: 0px;
118 | margin-left: 20px;
119 | }
120 |
121 | .testng-xml {
122 | font-family: monospace;
123 | }
124 |
125 | .method-list-content {
126 | margin-left: 10px;
127 | }
128 |
129 | .navigator-suite-content {
130 | margin-left: 10px;
131 | font: 12px 'Lucida Grande';
132 | }
133 |
134 | .suite-section-title {
135 | margin-top: 10px;
136 | width: 80%;
137 | border-style: solid;
138 | border-width: 1px 0px 0px 0px;
139 | font-family: Times;
140 | font-size: 18px;
141 | font-weight: bold;
142 | }
143 |
144 | .suite-section-content {
145 | list-style-image: url(bullet_point.png);
146 | }
147 |
148 | .top-banner-root {
149 | position: absolute;
150 | top: 0;
151 | height: 45px;
152 | left: 0;
153 | right: 0;
154 | padding: 5px;
155 | margin: 0px 0px 5px 0px;
156 | background-color: #0066ff;
157 | font-family: Times;
158 | color: #fff;
159 | text-align: center;
160 | }
161 |
162 | .top-banner-title-font {
163 | font-size: 25px;
164 | }
165 |
166 | .test-name {
167 | font-family: 'Lucida Grande';
168 | font-size: 16px;
169 | }
170 |
171 | .suite-icon {
172 | padding: 5px;
173 | float: right;
174 | height: 20;
175 | }
176 |
177 | .test-group {
178 | font: 20px 'Lucida Grande';
179 | margin: 5px 5px 10px 5px;
180 | border-width: 0px 0px 1px 0px;
181 | border-style: solid;
182 | padding: 5px;
183 | }
184 |
185 | .test-group-name {
186 | font-weight: bold;
187 | }
188 |
189 | .method-in-group {
190 | font-size: 16px;
191 | margin-left: 80px;
192 | }
193 |
194 | table.google-visualization-table-table {
195 | width: 100%;
196 | }
197 |
198 | .reporter-method-name {
199 | font-size: 14px;
200 | font-family: monospace;
201 | }
202 |
203 | .reporter-method-output-div {
204 | padding: 5px;
205 | margin: 0px 0px 5px 20px;
206 | font-size: 12px;
207 | font-family: monospace;
208 | border-width: 0px 0px 0px 1px;
209 | border-style: solid;
210 | }
211 |
212 | .ignored-class-div {
213 | font-size: 14px;
214 | font-family: monospace;
215 | }
216 |
217 | .ignored-methods-div {
218 | padding: 5px;
219 | margin: 0px 0px 5px 20px;
220 | font-size: 12px;
221 | font-family: monospace;
222 | border-width: 0px 0px 0px 1px;
223 | border-style: solid;
224 | }
225 |
226 | .border-failed {
227 | border-top-left-radius: 10px 10px;
228 | border-bottom-left-radius: 10px 10px;
229 | border-style: solid;
230 | border-width: 0px 0px 0px 10px;
231 | border-color: #f00;
232 | }
233 |
234 | .border-skipped {
235 | border-top-left-radius: 10px 10px;
236 | border-bottom-left-radius: 10px 10px;
237 | border-style: solid;
238 | border-width: 0px 0px 0px 10px;
239 | border-color: #edc600;
240 | }
241 |
242 | .border-passed {
243 | border-top-left-radius: 10px 10px;
244 | border-bottom-left-radius: 10px 10px;
245 | border-style: solid;
246 | border-width: 0px 0px 0px 10px;
247 | border-color: #19f52d;
248 | }
249 |
250 | .times-div {
251 | text-align: center;
252 | padding: 5px;
253 | }
254 |
255 | .suite-total-time {
256 | font: 16px 'Lucida Grande';
257 | }
258 |
259 | .configuration-suite {
260 | margin-left: 20px;
261 | }
262 |
263 | .configuration-test {
264 | margin-left: 40px;
265 | }
266 |
267 | .configuration-class {
268 | margin-left: 60px;
269 | }
270 |
271 | .configuration-method {
272 | margin-left: 80px;
273 | }
274 |
275 | .test-method {
276 | margin-left: 100px;
277 | }
278 |
279 | .chronological-class {
280 | background-color: #0ccff;
281 | border-style: solid;
282 | border-width: 0px 0px 1px 1px;
283 | }
284 |
285 | .method-start {
286 | float: right;
287 | }
288 |
289 | .chronological-class-name {
290 | padding: 0px 0px 0px 5px;
291 | color: #008;
292 | }
293 |
294 | .after, .before, .test-method {
295 | font-family: monospace;
296 | font-size: 14px;
297 | }
298 |
299 | .navigator-suite-header {
300 | font-size: 22px;
301 | margin: 0px 10px 5px 0px;
302 | background-color: #deb887;
303 | text-align: center;
304 | }
305 |
306 | .collapse-all-icon {
307 | padding: 5px;
308 | float: right;
309 | }
310 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/testng-reports.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function() {
2 | $('a.navigator-link').click(function() {
3 | // Extract the panel for this link
4 | var panel = getPanelName($(this));
5 |
6 | // Mark this link as currently selected
7 | $('.navigator-link').parent().removeClass('navigator-selected');
8 | $(this).parent().addClass('navigator-selected');
9 |
10 | showPanel(panel);
11 | });
12 |
13 | installMethodHandlers('failed');
14 | installMethodHandlers('skipped');
15 | installMethodHandlers('passed', true); // hide passed methods by default
16 |
17 | $('a.method').click(function() {
18 | showMethod($(this));
19 | return false;
20 | });
21 |
22 | // Hide all the panels and display the first one (do this last
23 | // to make sure the click() will invoke the listeners)
24 | $('.panel').hide();
25 | $('.navigator-link').first().click();
26 |
27 | // Collapse/expand the suites
28 | $('a.collapse-all-link').click(function() {
29 | var contents = $('.navigator-suite-content');
30 | if (contents.css('display') == 'none') {
31 | contents.show();
32 | } else {
33 | contents.hide();
34 | }
35 | });
36 | });
37 |
38 | // The handlers that take care of showing/hiding the methods
39 | function installMethodHandlers(name, hide) {
40 | function getContent(t) {
41 | return $('.method-list-content.' + name + "." + t.attr('panel-name'));
42 | }
43 |
44 | function getHideLink(t, name) {
45 | var s = 'a.hide-methods.' + name + "." + t.attr('panel-name');
46 | return $(s);
47 | }
48 |
49 | function getShowLink(t, name) {
50 | return $('a.show-methods.' + name + "." + t.attr('panel-name'));
51 | }
52 |
53 | function getMethodPanelClassSel(element, name) {
54 | var panelName = getPanelName(element);
55 | var sel = '.' + panelName + "-class-" + name;
56 | return $(sel);
57 | }
58 |
59 | $('a.hide-methods.' + name).click(function() {
60 | var w = getContent($(this));
61 | w.hide();
62 | getHideLink($(this), name).hide();
63 | getShowLink($(this), name).show();
64 | getMethodPanelClassSel($(this), name).hide();
65 | });
66 |
67 | $('a.show-methods.' + name).click(function() {
68 | var w = getContent($(this));
69 | w.show();
70 | getHideLink($(this), name).show();
71 | getShowLink($(this), name).hide();
72 | showPanel(getPanelName($(this)));
73 | getMethodPanelClassSel($(this), name).show();
74 | });
75 |
76 | if (hide) {
77 | $('a.hide-methods.' + name).click();
78 | } else {
79 | $('a.show-methods.' + name).click();
80 | }
81 | }
82 |
83 | function getHashForMethod(element) {
84 | return element.attr('hash-for-method');
85 | }
86 |
87 | function getPanelName(element) {
88 | return element.attr('panel-name');
89 | }
90 |
91 | function showPanel(panelName) {
92 | $('.panel').hide();
93 | var panel = $('.panel[panel-name="' + panelName + '"]');
94 | panel.show();
95 | }
96 |
97 | function showMethod(element) {
98 | var hashTag = getHashForMethod(element);
99 | var panelName = getPanelName(element);
100 | showPanel(panelName);
101 | var current = document.location.href;
102 | var base = current.substring(0, current.indexOf('#'))
103 | document.location.href = base + '#' + hashTag;
104 | var newPosition = $(document).scrollTop() - 65;
105 | $(document).scrollTop(newPosition);
106 | }
107 |
108 | function drawTable() {
109 | for (var i = 0; i < suiteTableInitFunctions.length; i++) {
110 | window[suiteTableInitFunctions[i]]();
111 | }
112 |
113 | for (var k in window.suiteTableData) {
114 | var v = window.suiteTableData[k];
115 | var div = v.tableDiv;
116 | var data = v.tableData
117 | var table = new google.visualization.Table(document.getElementById(div));
118 | table.draw(data, {
119 | showRowNumber : false
120 | });
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/testng-results.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/test-output/testng.css:
--------------------------------------------------------------------------------
1 | .invocation-failed, .test-failed { background-color: #DD0000; }
2 | .invocation-percent, .test-percent { background-color: #006600; }
3 | .invocation-passed, .test-passed { background-color: #00AA00; }
4 | .invocation-skipped, .test-skipped { background-color: #CCCC00; }
5 |
6 | .main-page {
7 | font-size: x-large;
8 | }
9 |
10 |
--------------------------------------------------------------------------------
/MobileAutomationFramework/testng.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # MobileAutomationFramework
2 |
3 | Test Driven Framework developed using Java with TestNG, Extent Reports.
4 |
5 | Can work on both android, ios including physical devices, emulators.
6 |
7 | How to use this framework?
8 |
9 | 1. Clone the repository to your workspace.
10 | 2. Open the testdata.xlsx under the src/test/resources folder
11 | 3. In the RunManager sheet -->Choose the test cases you want to run by choosing yes
12 | 4. In the testdata sheet --->Choose the test data you want to pass to the testcase from excel sheet.
13 | 5. The data from the excel sheet will be passed to the test method as a hashtable.
14 | 6. Run the testng.xml file. You can even run as mvn test which will trigger the testng.xml
15 |
16 | How the framework works?
17 |
18 | 1. AnnotationTransformer class which implements IAnnotationTransformer is reponsible for reading the data from RunManager sheet in testdata.xlsx
19 | It sets the annotation of the test methods like description,enabled, priority, dataprovider values read from the excel.
20 |
21 | Things to note : Test name in the first column of the excel sheet should match with atleast an @Test available in test classes mentioned in the testng.xml
22 |
23 | 2. All the tests will have the same dataprovider in the TestUtils class. For example the loginTest in RunManager sheet of testdata.xlsx will take the data from
24 | TestData sheet which have row where the testname is loginTest. If there are multiple rows with loginTest as test name , framework will consider it as
25 | this as multiple iterations for a test case.
26 |
27 | How to run on different mobile devices or emulators?
28 |
29 | 1. Type adb devices in the cmd(Make sure adb is installed and path set correctly) and update the values generated in the udid column of TestData sheet in testdata.xlsx
30 | 2. Device name can be anything but not null(Used to denote the device where you are running the test like MyS9Device)
31 | 3. Port is used for parallel execution. If there are two different ports used and testng threadcount is two ,then two tests will be run in parallel.
32 | 4. You can use more ports if you want to increase the parallel execution count.
33 |
34 | Other tips:
35 |
36 | 1. TestCase description given in the excel sheet will be displayed in the extent reports.
37 | 2. Reusable methods are placed in BasePage.java and can be utilised in your tests.
38 | 3. Data from excel sheet will be available as Hashtable parameter to your tests. You can fetch the value using data.get("columnnameinexcel")
39 | Refer the already existing tests for more details.
40 | 4. Make sure that your appium server is up and running before starting the tests.
41 |
42 | Please feel to report any issue or PR for any improvements.
43 | Reach me at mech.amuthansakthivel@gmail.com
44 |
--------------------------------------------------------------------------------