From f9ab634c53801e137dea8190565dc525e87d61ab Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 10:24:23 +0530 Subject: [PATCH 01/36] Create Activity-6-readyapi-project.xml --- .../API/Activity-6-readyapi-project.xml | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 API/Activities/API/Activity-6-readyapi-project.xml diff --git a/API/Activities/API/Activity-6-readyapi-project.xml b/API/Activities/API/Activity-6-readyapi-project.xml new file mode 100644 index 0000000000..31e2ba114e --- /dev/null +++ b/API/Activities/API/Activity-6-readyapi-project.xml @@ -0,0 +1,53 @@ + + + + + + + + FST Connection + com.mysql.jdbc.Driver + jdbc:mysql://db4free.net:3306/fstm1db?user=fstm1db&password=PASS_VALUE + 6Y6NowPybq + + + + + + + + + + + + // Sample event script to add custom HTTP header to all outgoing REST, SOAP and HTTP(S) calls +// This code is often used for adding custom authentication to ReadyAPI functional tests + +// If hardcoding the token, uncomment and change line 5 +// token = '4567' + +// If your token is parameterized in Project level custom property, uncomment line 8 +// token = request.parent.testCase.testSuite.project.getProperty('auth_token').getValue() + +// To modify all outgoing calls, remove comments from lines 11 to 16 +// headers = request.requestHeaders +// if (headers.containsKey('auth_token2') == false) { +// headers.put('auth_token2', token) +// request.requestHeaders = headers +// } + + + // Save all test step results into files +// Change the directory path in line 5 to a location where you want to store details +// then uncomment lines 5 to 10 + +// filePath = 'C:\\tempOutputDirectory\\' +// fos = new java.io.FileOutputStream(filePath + testStepResult.testStep.label + '.txt', true) +// pw = new java.io.PrintWriter(fos) +// testStepResult.writeTo(pw) +// pw.close() +// fos.close() + + + + From 8680fafdffa8bccb809a6743837b87ae5a3f954c Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 10:30:04 +0530 Subject: [PATCH 02/36] Create CalculatorSOAP1.xml --- .../API/API/Activities/CalculatorSOAP1.xml | 800 ++++++++++++++++++ 1 file changed, 800 insertions(+) create mode 100644 API/Activities/API/API/Activities/CalculatorSOAP1.xml diff --git a/API/Activities/API/API/Activities/CalculatorSOAP1.xml b/API/Activities/API/API/Activities/CalculatorSOAP1.xml new file mode 100644 index 0000000000..fa42750d22 --- /dev/null +++ b/API/Activities/API/API/Activities/CalculatorSOAP1.xml @@ -0,0 +1,800 @@ + + + + + + + + http://www.dneonline.com/calculator.asmx?wsdl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adds two integers. This is a test WebService. ©DNE Online + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + http://schemas.xmlsoap.org/wsdl/ + + + + http://www.dneonline.com/calculator.asmx + + + + + + <xml-fragment/> + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + 10\r + 20\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + + http://www.dneonline.com/calculator.asmx + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + SEQUENTIAL + + + + + + CalculatorSoap12 + Add + + + <xml-fragment/> + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + 10\r + 10\r + \r + \r +]]> + + + + 200 + + + + + + + + + 507 + + + + + + declare namespace ns1='http://tempuri.org/'; +//ns1:AddResult + 20 + false + false + false + + + + No Authorization + No Authorization + + + + + + + + + + + CalculatorSoap12 + Divide + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + CalculatorSoap12 + Multiply + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + CalculatorSoap12 + Subtract + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + CalculatorSoap + Add + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + CalculatorSoap + Divide + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + CalculatorSoap + Multiply + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + CalculatorSoap + Subtract + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + + + + + + + + + + + + + + + // Sample event script to add custom HTTP header to all outgoing REST, SOAP and HTTP(S) calls +// This code is often used for adding custom authentication to ReadyAPI functional tests + +// If hardcoding the token, uncomment and change line 5 +// token = '4567' + +// If your token is parameterized in Project level custom property, uncomment line 8 +// token = request.parent.testCase.testSuite.project.getProperty('auth_token').getValue() + +// To modify all outgoing calls, remove comments from lines 11 to 16 +// headers = request.requestHeaders +// if (headers.containsKey('auth_token2') == false) { +// headers.put('auth_token2', token) +// request.requestHeaders = headers +// } + + + // Save all test step results into files +// Change the directory path in line 5 to a location where you want to store details +// then uncomment lines 5 to 10 + +// filePath = 'C:\\tempOutputDirectory\\' +// fos = new java.io.FileOutputStream(filePath + testStepResult.testStep.label + '.txt', true) +// pw = new java.io.PrintWriter(fos) +// testStepResult.writeTo(pw) +// pw.close() +// fos.close() + + + + From 2d1f8abc7d562ae0b92cd871589e6fa392e753b0 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 10:35:27 +0530 Subject: [PATCH 03/36] Create Activity6.xml --- .../Activities/API/Activities/Activity6.xml | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 API/Activities/API/API/Activities/API/Activities/Activity6.xml diff --git a/API/Activities/API/API/Activities/API/Activities/Activity6.xml b/API/Activities/API/API/Activities/API/Activities/Activity6.xml new file mode 100644 index 0000000000..762fbda5fd --- /dev/null +++ b/API/Activities/API/API/Activities/API/Activities/Activity6.xml @@ -0,0 +1,25 @@ + +http://ipwhois.appIPTEMPLATEIPIPTEMPLATEIPapplication/json; charset=utf-8200ns:Response<xml-fragment/>http://ipwhois.apphttp://ipwhois.app/json/0.0.0.0No AuthorizationNo AuthorizationIPSEQUENTIAL510COMPIP0falseIPv4falsefalseIPtruefalse<xml-fragment/>http://ipwhois.apphttp://ipwhois.app/json/165.241.79.217200No AuthorizationNo AuthorizationIPcityTransferResponseGETRequest$['city']city_nameData SinkJSONPATHJSONPATHtruelatTransferResponseGETRequest$['latitude']latitudeData SinkJSONPATHJSONPATHtruelongTransferResponseGETRequest$['longitude']longitudeData SinkJSONPATHJSONPATHtruecom.mysql.jdbc.Driverjdbc:mysql://db4free.net:3306/fstm1db?user=fstm1db&password=PASS_VALUE6Y6NowPybqFST Connection( Default environment )INSERT INTO coordinates VALUES(?,?,?);falsecity_nameCenter Pointlatitude33.6456583longitude-86.6836001Data SourceGETRequesttrueFST Connectioncom.mysql.jdbc.Driverjdbc:mysql://db4free.net:3306/fstm1db?user=fstm1db&password=PASS_VALUE6Y6NowPybq// Sample event script to add custom HTTP header to all outgoing REST, SOAP and HTTP(S) calls +// This code is often used for adding custom authentication to ReadyAPI functional tests + +// If hardcoding the token, uncomment and change line 5 +// token = '4567' + +// If your token is parameterized in Project level custom property, uncomment line 8 +// token = request.parent.testCase.testSuite.project.getProperty('auth_token').getValue() + +// To modify all outgoing calls, remove comments from lines 11 to 16 +// headers = request.requestHeaders +// if (headers.containsKey('auth_token2') == false) { +// headers.put('auth_token2', token) +// request.requestHeaders = headers +// }// Save all test step results into files +// Change the directory path in line 5 to a location where you want to store details +// then uncomment lines 5 to 10 + +// filePath = 'C:\\tempOutputDirectory\\' +// fos = new java.io.FileOutputStream(filePath + testStepResult.testStep.label + '.txt', true) +// pw = new java.io.PrintWriter(fos) +// testStepResult.writeTo(pw) +// pw.close() +// fos.close() From 272bf96e793bed4309d445689aaa45e580fb7d4e Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 10:36:26 +0530 Subject: [PATCH 04/36] Delete API/Activities/API/Activity-6-readyapi-project.xml --- .../API/Activity-6-readyapi-project.xml | 53 ------------------- 1 file changed, 53 deletions(-) delete mode 100644 API/Activities/API/Activity-6-readyapi-project.xml diff --git a/API/Activities/API/Activity-6-readyapi-project.xml b/API/Activities/API/Activity-6-readyapi-project.xml deleted file mode 100644 index 31e2ba114e..0000000000 --- a/API/Activities/API/Activity-6-readyapi-project.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - FST Connection - com.mysql.jdbc.Driver - jdbc:mysql://db4free.net:3306/fstm1db?user=fstm1db&password=PASS_VALUE - 6Y6NowPybq - - - - - - - - - - - - // Sample event script to add custom HTTP header to all outgoing REST, SOAP and HTTP(S) calls -// This code is often used for adding custom authentication to ReadyAPI functional tests - -// If hardcoding the token, uncomment and change line 5 -// token = '4567' - -// If your token is parameterized in Project level custom property, uncomment line 8 -// token = request.parent.testCase.testSuite.project.getProperty('auth_token').getValue() - -// To modify all outgoing calls, remove comments from lines 11 to 16 -// headers = request.requestHeaders -// if (headers.containsKey('auth_token2') == false) { -// headers.put('auth_token2', token) -// request.requestHeaders = headers -// } - - - // Save all test step results into files -// Change the directory path in line 5 to a location where you want to store details -// then uncomment lines 5 to 10 - -// filePath = 'C:\\tempOutputDirectory\\' -// fos = new java.io.FileOutputStream(filePath + testStepResult.testStep.label + '.txt', true) -// pw = new java.io.PrintWriter(fos) -// testStepResult.writeTo(pw) -// pw.close() -// fos.close() - - - - From 5202f0dfa0ffb4011bfac984b4881857dec3debf Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 10:38:39 +0530 Subject: [PATCH 05/36] Create Activity6.xml --- API/Activities/API/Activities/Activity6.xml | 25 +++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 API/Activities/API/Activities/Activity6.xml diff --git a/API/Activities/API/Activities/Activity6.xml b/API/Activities/API/Activities/Activity6.xml new file mode 100644 index 0000000000..762fbda5fd --- /dev/null +++ b/API/Activities/API/Activities/Activity6.xml @@ -0,0 +1,25 @@ + +http://ipwhois.appIPTEMPLATEIPIPTEMPLATEIPapplication/json; charset=utf-8200ns:Response<xml-fragment/>http://ipwhois.apphttp://ipwhois.app/json/0.0.0.0No AuthorizationNo AuthorizationIPSEQUENTIAL510COMPIP0falseIPv4falsefalseIPtruefalse<xml-fragment/>http://ipwhois.apphttp://ipwhois.app/json/165.241.79.217200No AuthorizationNo AuthorizationIPcityTransferResponseGETRequest$['city']city_nameData SinkJSONPATHJSONPATHtruelatTransferResponseGETRequest$['latitude']latitudeData SinkJSONPATHJSONPATHtruelongTransferResponseGETRequest$['longitude']longitudeData SinkJSONPATHJSONPATHtruecom.mysql.jdbc.Driverjdbc:mysql://db4free.net:3306/fstm1db?user=fstm1db&password=PASS_VALUE6Y6NowPybqFST Connection( Default environment )INSERT INTO coordinates VALUES(?,?,?);falsecity_nameCenter Pointlatitude33.6456583longitude-86.6836001Data SourceGETRequesttrueFST Connectioncom.mysql.jdbc.Driverjdbc:mysql://db4free.net:3306/fstm1db?user=fstm1db&password=PASS_VALUE6Y6NowPybq// Sample event script to add custom HTTP header to all outgoing REST, SOAP and HTTP(S) calls +// This code is often used for adding custom authentication to ReadyAPI functional tests + +// If hardcoding the token, uncomment and change line 5 +// token = '4567' + +// If your token is parameterized in Project level custom property, uncomment line 8 +// token = request.parent.testCase.testSuite.project.getProperty('auth_token').getValue() + +// To modify all outgoing calls, remove comments from lines 11 to 16 +// headers = request.requestHeaders +// if (headers.containsKey('auth_token2') == false) { +// headers.put('auth_token2', token) +// request.requestHeaders = headers +// }// Save all test step results into files +// Change the directory path in line 5 to a location where you want to store details +// then uncomment lines 5 to 10 + +// filePath = 'C:\\tempOutputDirectory\\' +// fos = new java.io.FileOutputStream(filePath + testStepResult.testStep.label + '.txt', true) +// pw = new java.io.PrintWriter(fos) +// testStepResult.writeTo(pw) +// pw.close() +// fos.close() From e6b007755b056c3352a0e6d308dec3e0493990f0 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:00:27 +0530 Subject: [PATCH 06/36] Create CalculatorSOAP1.xml --- .../API/Activities/CalculatorSOAP1.xml | 800 ++++++++++++++++++ 1 file changed, 800 insertions(+) create mode 100644 API/Activities/API/Activities/API/Activities/CalculatorSOAP1.xml diff --git a/API/Activities/API/Activities/API/Activities/CalculatorSOAP1.xml b/API/Activities/API/Activities/API/Activities/CalculatorSOAP1.xml new file mode 100644 index 0000000000..fa42750d22 --- /dev/null +++ b/API/Activities/API/Activities/API/Activities/CalculatorSOAP1.xml @@ -0,0 +1,800 @@ + + + + + + + + http://www.dneonline.com/calculator.asmx?wsdl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adds two integers. This is a test WebService. ©DNE Online + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + http://schemas.xmlsoap.org/wsdl/ + + + + http://www.dneonline.com/calculator.asmx + + + + + + <xml-fragment/> + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + 10\r + 20\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + + http://www.dneonline.com/calculator.asmx + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + SEQUENTIAL + + + + + + CalculatorSoap12 + Add + + + <xml-fragment/> + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + 10\r + 10\r + \r + \r +]]> + + + + 200 + + + + + + + + + 507 + + + + + + declare namespace ns1='http://tempuri.org/'; +//ns1:AddResult + 20 + false + false + false + + + + No Authorization + No Authorization + + + + + + + + + + + CalculatorSoap12 + Divide + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + CalculatorSoap12 + Multiply + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + CalculatorSoap12 + Subtract + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + CalculatorSoap + Add + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + CalculatorSoap + Divide + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + CalculatorSoap + Multiply + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + CalculatorSoap + Subtract + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + + + + + + + + + + + + + + + // Sample event script to add custom HTTP header to all outgoing REST, SOAP and HTTP(S) calls +// This code is often used for adding custom authentication to ReadyAPI functional tests + +// If hardcoding the token, uncomment and change line 5 +// token = '4567' + +// If your token is parameterized in Project level custom property, uncomment line 8 +// token = request.parent.testCase.testSuite.project.getProperty('auth_token').getValue() + +// To modify all outgoing calls, remove comments from lines 11 to 16 +// headers = request.requestHeaders +// if (headers.containsKey('auth_token2') == false) { +// headers.put('auth_token2', token) +// request.requestHeaders = headers +// } + + + // Save all test step results into files +// Change the directory path in line 5 to a location where you want to store details +// then uncomment lines 5 to 10 + +// filePath = 'C:\\tempOutputDirectory\\' +// fos = new java.io.FileOutputStream(filePath + testStepResult.testStep.label + '.txt', true) +// pw = new java.io.PrintWriter(fos) +// testStepResult.writeTo(pw) +// pw.close() +// fos.close() + + + + From 891cfac7ae487864b734f9bfa9e7de32cc6b852a Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:08:38 +0530 Subject: [PATCH 07/36] Add files via upload --- API/Activities/API/Activities/Activity6.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API/Activities/API/Activities/Activity6.xml b/API/Activities/API/Activities/Activity6.xml index 762fbda5fd..4e5a436816 100644 --- a/API/Activities/API/Activities/Activity6.xml +++ b/API/Activities/API/Activities/Activity6.xml @@ -22,4 +22,4 @@ // pw = new java.io.PrintWriter(fos) // testStepResult.writeTo(pw) // pw.close() -// fos.close() +// fos.close() \ No newline at end of file From 19052f41a3b0968438d6d1b7fd14b31c4563e7f3 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:10:56 +0530 Subject: [PATCH 08/36] Delete API/Activities/API/Activities directory --- .../API/Activities/CalculatorSOAP1.xml | 800 ------------------ API/Activities/API/Activities/Activity6.xml | 25 - 2 files changed, 825 deletions(-) delete mode 100644 API/Activities/API/Activities/API/Activities/CalculatorSOAP1.xml delete mode 100644 API/Activities/API/Activities/Activity6.xml diff --git a/API/Activities/API/Activities/API/Activities/CalculatorSOAP1.xml b/API/Activities/API/Activities/API/Activities/CalculatorSOAP1.xml deleted file mode 100644 index fa42750d22..0000000000 --- a/API/Activities/API/Activities/API/Activities/CalculatorSOAP1.xml +++ /dev/null @@ -1,800 +0,0 @@ - - - - - - - - http://www.dneonline.com/calculator.asmx?wsdl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Adds two integers. This is a test WebService. ©DNE Online - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]]> - http://schemas.xmlsoap.org/wsdl/ - - - - http://www.dneonline.com/calculator.asmx - - - - - - <xml-fragment/> - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - 10\r - 20\r - \r - \r -]]> - - No Authorization - No Authorization - - - - - - - - - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - No Authorization - No Authorization - - - - - - - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - No Authorization - No Authorization - - - - - - - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - No Authorization - No Authorization - - - - - - - - - - http://www.dneonline.com/calculator.asmx - - - - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - No Authorization - No Authorization - - - - - - - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - No Authorization - No Authorization - - - - - - - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - No Authorization - No Authorization - - - - - - - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - No Authorization - No Authorization - - - - - - - - SEQUENTIAL - - - - - - CalculatorSoap12 - Add - - - <xml-fragment/> - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - 10\r - 10\r - \r - \r -]]> - - - - 200 - - - - - - - - - 507 - - - - - - declare namespace ns1='http://tempuri.org/'; -//ns1:AddResult - 20 - false - false - false - - - - No Authorization - No Authorization - - - - - - - - - - - CalculatorSoap12 - Divide - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - - - - 200 - - - - - - - - 200 - - - - - No Authorization - No Authorization - - - - - - - - - CalculatorSoap12 - Multiply - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - - - - 200 - - - - - - - - 200 - - - - - No Authorization - No Authorization - - - - - - - - - CalculatorSoap12 - Subtract - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - - - - 200 - - - - - - - - 200 - - - - - No Authorization - No Authorization - - - - - - - - - CalculatorSoap - Add - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - - - - 200 - - - - - - - - 200 - - - - - No Authorization - No Authorization - - - - - - - - - CalculatorSoap - Divide - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - - - - 200 - - - - - - - - 200 - - - - - No Authorization - No Authorization - - - - - - - - - CalculatorSoap - Multiply - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - - - - 200 - - - - - - - - 200 - - - - - No Authorization - No Authorization - - - - - - - - - CalculatorSoap - Subtract - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - - - - 200 - - - - - - - - 200 - - - - - No Authorization - No Authorization - - - - - - - - - - - - - - - - - - - - - - - // Sample event script to add custom HTTP header to all outgoing REST, SOAP and HTTP(S) calls -// This code is often used for adding custom authentication to ReadyAPI functional tests - -// If hardcoding the token, uncomment and change line 5 -// token = '4567' - -// If your token is parameterized in Project level custom property, uncomment line 8 -// token = request.parent.testCase.testSuite.project.getProperty('auth_token').getValue() - -// To modify all outgoing calls, remove comments from lines 11 to 16 -// headers = request.requestHeaders -// if (headers.containsKey('auth_token2') == false) { -// headers.put('auth_token2', token) -// request.requestHeaders = headers -// } - - - // Save all test step results into files -// Change the directory path in line 5 to a location where you want to store details -// then uncomment lines 5 to 10 - -// filePath = 'C:\\tempOutputDirectory\\' -// fos = new java.io.FileOutputStream(filePath + testStepResult.testStep.label + '.txt', true) -// pw = new java.io.PrintWriter(fos) -// testStepResult.writeTo(pw) -// pw.close() -// fos.close() - - - - diff --git a/API/Activities/API/Activities/Activity6.xml b/API/Activities/API/Activities/Activity6.xml deleted file mode 100644 index 4e5a436816..0000000000 --- a/API/Activities/API/Activities/Activity6.xml +++ /dev/null @@ -1,25 +0,0 @@ - -http://ipwhois.appIPTEMPLATEIPIPTEMPLATEIPapplication/json; charset=utf-8200ns:Response<xml-fragment/>http://ipwhois.apphttp://ipwhois.app/json/0.0.0.0No AuthorizationNo AuthorizationIPSEQUENTIAL510COMPIP0falseIPv4falsefalseIPtruefalse<xml-fragment/>http://ipwhois.apphttp://ipwhois.app/json/165.241.79.217200No AuthorizationNo AuthorizationIPcityTransferResponseGETRequest$['city']city_nameData SinkJSONPATHJSONPATHtruelatTransferResponseGETRequest$['latitude']latitudeData SinkJSONPATHJSONPATHtruelongTransferResponseGETRequest$['longitude']longitudeData SinkJSONPATHJSONPATHtruecom.mysql.jdbc.Driverjdbc:mysql://db4free.net:3306/fstm1db?user=fstm1db&password=PASS_VALUE6Y6NowPybqFST Connection( Default environment )INSERT INTO coordinates VALUES(?,?,?);falsecity_nameCenter Pointlatitude33.6456583longitude-86.6836001Data SourceGETRequesttrueFST Connectioncom.mysql.jdbc.Driverjdbc:mysql://db4free.net:3306/fstm1db?user=fstm1db&password=PASS_VALUE6Y6NowPybq// Sample event script to add custom HTTP header to all outgoing REST, SOAP and HTTP(S) calls -// This code is often used for adding custom authentication to ReadyAPI functional tests - -// If hardcoding the token, uncomment and change line 5 -// token = '4567' - -// If your token is parameterized in Project level custom property, uncomment line 8 -// token = request.parent.testCase.testSuite.project.getProperty('auth_token').getValue() - -// To modify all outgoing calls, remove comments from lines 11 to 16 -// headers = request.requestHeaders -// if (headers.containsKey('auth_token2') == false) { -// headers.put('auth_token2', token) -// request.requestHeaders = headers -// }// Save all test step results into files -// Change the directory path in line 5 to a location where you want to store details -// then uncomment lines 5 to 10 - -// filePath = 'C:\\tempOutputDirectory\\' -// fos = new java.io.FileOutputStream(filePath + testStepResult.testStep.label + '.txt', true) -// pw = new java.io.PrintWriter(fos) -// testStepResult.writeTo(pw) -// pw.close() -// fos.close() \ No newline at end of file From d0c6c6cf95505f0ad2a0b7e69f1afcf0ad0d9209 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:11:13 +0530 Subject: [PATCH 09/36] Delete API/Activities/API/API/Activities directory --- .../Activities/API/Activities/Activity6.xml | 25 - .../API/API/Activities/CalculatorSOAP1.xml | 800 ------------------ 2 files changed, 825 deletions(-) delete mode 100644 API/Activities/API/API/Activities/API/Activities/Activity6.xml delete mode 100644 API/Activities/API/API/Activities/CalculatorSOAP1.xml diff --git a/API/Activities/API/API/Activities/API/Activities/Activity6.xml b/API/Activities/API/API/Activities/API/Activities/Activity6.xml deleted file mode 100644 index 762fbda5fd..0000000000 --- a/API/Activities/API/API/Activities/API/Activities/Activity6.xml +++ /dev/null @@ -1,25 +0,0 @@ - -http://ipwhois.appIPTEMPLATEIPIPTEMPLATEIPapplication/json; charset=utf-8200ns:Response<xml-fragment/>http://ipwhois.apphttp://ipwhois.app/json/0.0.0.0No AuthorizationNo AuthorizationIPSEQUENTIAL510COMPIP0falseIPv4falsefalseIPtruefalse<xml-fragment/>http://ipwhois.apphttp://ipwhois.app/json/165.241.79.217200No AuthorizationNo AuthorizationIPcityTransferResponseGETRequest$['city']city_nameData SinkJSONPATHJSONPATHtruelatTransferResponseGETRequest$['latitude']latitudeData SinkJSONPATHJSONPATHtruelongTransferResponseGETRequest$['longitude']longitudeData SinkJSONPATHJSONPATHtruecom.mysql.jdbc.Driverjdbc:mysql://db4free.net:3306/fstm1db?user=fstm1db&password=PASS_VALUE6Y6NowPybqFST Connection( Default environment )INSERT INTO coordinates VALUES(?,?,?);falsecity_nameCenter Pointlatitude33.6456583longitude-86.6836001Data SourceGETRequesttrueFST Connectioncom.mysql.jdbc.Driverjdbc:mysql://db4free.net:3306/fstm1db?user=fstm1db&password=PASS_VALUE6Y6NowPybq// Sample event script to add custom HTTP header to all outgoing REST, SOAP and HTTP(S) calls -// This code is often used for adding custom authentication to ReadyAPI functional tests - -// If hardcoding the token, uncomment and change line 5 -// token = '4567' - -// If your token is parameterized in Project level custom property, uncomment line 8 -// token = request.parent.testCase.testSuite.project.getProperty('auth_token').getValue() - -// To modify all outgoing calls, remove comments from lines 11 to 16 -// headers = request.requestHeaders -// if (headers.containsKey('auth_token2') == false) { -// headers.put('auth_token2', token) -// request.requestHeaders = headers -// }// Save all test step results into files -// Change the directory path in line 5 to a location where you want to store details -// then uncomment lines 5 to 10 - -// filePath = 'C:\\tempOutputDirectory\\' -// fos = new java.io.FileOutputStream(filePath + testStepResult.testStep.label + '.txt', true) -// pw = new java.io.PrintWriter(fos) -// testStepResult.writeTo(pw) -// pw.close() -// fos.close() diff --git a/API/Activities/API/API/Activities/CalculatorSOAP1.xml b/API/Activities/API/API/Activities/CalculatorSOAP1.xml deleted file mode 100644 index fa42750d22..0000000000 --- a/API/Activities/API/API/Activities/CalculatorSOAP1.xml +++ /dev/null @@ -1,800 +0,0 @@ - - - - - - - - http://www.dneonline.com/calculator.asmx?wsdl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Adds two integers. This is a test WebService. ©DNE Online - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]]> - http://schemas.xmlsoap.org/wsdl/ - - - - http://www.dneonline.com/calculator.asmx - - - - - - <xml-fragment/> - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - 10\r - 20\r - \r - \r -]]> - - No Authorization - No Authorization - - - - - - - - - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - No Authorization - No Authorization - - - - - - - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - No Authorization - No Authorization - - - - - - - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - No Authorization - No Authorization - - - - - - - - - - http://www.dneonline.com/calculator.asmx - - - - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - No Authorization - No Authorization - - - - - - - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - No Authorization - No Authorization - - - - - - - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - No Authorization - No Authorization - - - - - - - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - No Authorization - No Authorization - - - - - - - - SEQUENTIAL - - - - - - CalculatorSoap12 - Add - - - <xml-fragment/> - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - 10\r - 10\r - \r - \r -]]> - - - - 200 - - - - - - - - - 507 - - - - - - declare namespace ns1='http://tempuri.org/'; -//ns1:AddResult - 20 - false - false - false - - - - No Authorization - No Authorization - - - - - - - - - - - CalculatorSoap12 - Divide - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - - - - 200 - - - - - - - - 200 - - - - - No Authorization - No Authorization - - - - - - - - - CalculatorSoap12 - Multiply - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - - - - 200 - - - - - - - - 200 - - - - - No Authorization - No Authorization - - - - - - - - - CalculatorSoap12 - Subtract - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - - - - 200 - - - - - - - - 200 - - - - - No Authorization - No Authorization - - - - - - - - - CalculatorSoap - Add - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - - - - 200 - - - - - - - - 200 - - - - - No Authorization - No Authorization - - - - - - - - - CalculatorSoap - Divide - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - - - - 200 - - - - - - - - 200 - - - - - No Authorization - No Authorization - - - - - - - - - CalculatorSoap - Multiply - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - - - - 200 - - - - - - - - 200 - - - - - No Authorization - No Authorization - - - - - - - - - CalculatorSoap - Subtract - - - UTF-8 - http://www.dneonline.com/calculator.asmx - \r - \r - \r - \r - ?\r - ?\r - \r - \r -]]> - - - - - 200 - - - - - - - - 200 - - - - - No Authorization - No Authorization - - - - - - - - - - - - - - - - - - - - - - - // Sample event script to add custom HTTP header to all outgoing REST, SOAP and HTTP(S) calls -// This code is often used for adding custom authentication to ReadyAPI functional tests - -// If hardcoding the token, uncomment and change line 5 -// token = '4567' - -// If your token is parameterized in Project level custom property, uncomment line 8 -// token = request.parent.testCase.testSuite.project.getProperty('auth_token').getValue() - -// To modify all outgoing calls, remove comments from lines 11 to 16 -// headers = request.requestHeaders -// if (headers.containsKey('auth_token2') == false) { -// headers.put('auth_token2', token) -// request.requestHeaders = headers -// } - - - // Save all test step results into files -// Change the directory path in line 5 to a location where you want to store details -// then uncomment lines 5 to 10 - -// filePath = 'C:\\tempOutputDirectory\\' -// fos = new java.io.FileOutputStream(filePath + testStepResult.testStep.label + '.txt', true) -// pw = new java.io.PrintWriter(fos) -// testStepResult.writeTo(pw) -// pw.close() -// fos.close() - - - - From dda49f7fae421b800eca4a645dfd2379b5549473 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:11:57 +0530 Subject: [PATCH 10/36] Add files via upload --- API/Activities/Activity6.xml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 API/Activities/Activity6.xml diff --git a/API/Activities/Activity6.xml b/API/Activities/Activity6.xml new file mode 100644 index 0000000000..4e5a436816 --- /dev/null +++ b/API/Activities/Activity6.xml @@ -0,0 +1,25 @@ + +http://ipwhois.appIPTEMPLATEIPIPTEMPLATEIPapplication/json; charset=utf-8200ns:Response<xml-fragment/>http://ipwhois.apphttp://ipwhois.app/json/0.0.0.0No AuthorizationNo AuthorizationIPSEQUENTIAL510COMPIP0falseIPv4falsefalseIPtruefalse<xml-fragment/>http://ipwhois.apphttp://ipwhois.app/json/165.241.79.217200No AuthorizationNo AuthorizationIPcityTransferResponseGETRequest$['city']city_nameData SinkJSONPATHJSONPATHtruelatTransferResponseGETRequest$['latitude']latitudeData SinkJSONPATHJSONPATHtruelongTransferResponseGETRequest$['longitude']longitudeData SinkJSONPATHJSONPATHtruecom.mysql.jdbc.Driverjdbc:mysql://db4free.net:3306/fstm1db?user=fstm1db&password=PASS_VALUE6Y6NowPybqFST Connection( Default environment )INSERT INTO coordinates VALUES(?,?,?);falsecity_nameCenter Pointlatitude33.6456583longitude-86.6836001Data SourceGETRequesttrueFST Connectioncom.mysql.jdbc.Driverjdbc:mysql://db4free.net:3306/fstm1db?user=fstm1db&password=PASS_VALUE6Y6NowPybq// Sample event script to add custom HTTP header to all outgoing REST, SOAP and HTTP(S) calls +// This code is often used for adding custom authentication to ReadyAPI functional tests + +// If hardcoding the token, uncomment and change line 5 +// token = '4567' + +// If your token is parameterized in Project level custom property, uncomment line 8 +// token = request.parent.testCase.testSuite.project.getProperty('auth_token').getValue() + +// To modify all outgoing calls, remove comments from lines 11 to 16 +// headers = request.requestHeaders +// if (headers.containsKey('auth_token2') == false) { +// headers.put('auth_token2', token) +// request.requestHeaders = headers +// }// Save all test step results into files +// Change the directory path in line 5 to a location where you want to store details +// then uncomment lines 5 to 10 + +// filePath = 'C:\\tempOutputDirectory\\' +// fos = new java.io.FileOutputStream(filePath + testStepResult.testStep.label + '.txt', true) +// pw = new java.io.PrintWriter(fos) +// testStepResult.writeTo(pw) +// pw.close() +// fos.close() \ No newline at end of file From a8191f1110d2422feda8a16978ef9ba0e1018708 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:13:15 +0530 Subject: [PATCH 11/36] Add files via upload --- API/Activities/CalculatorSOAP1.xml | 800 +++++++++++++++++++++++++++++ 1 file changed, 800 insertions(+) create mode 100644 API/Activities/CalculatorSOAP1.xml diff --git a/API/Activities/CalculatorSOAP1.xml b/API/Activities/CalculatorSOAP1.xml new file mode 100644 index 0000000000..b88309e76c --- /dev/null +++ b/API/Activities/CalculatorSOAP1.xml @@ -0,0 +1,800 @@ + + + + + + + + http://www.dneonline.com/calculator.asmx?wsdl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adds two integers. This is a test WebService. ©DNE Online + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + http://schemas.xmlsoap.org/wsdl/ + + + + http://www.dneonline.com/calculator.asmx + + + + + + <xml-fragment/> + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + 10\r + 20\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + + http://www.dneonline.com/calculator.asmx + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + No Authorization + No Authorization + + + + + + + + SEQUENTIAL + + + + + + CalculatorSoap12 + Add + + + <xml-fragment/> + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + 10\r + 10\r + \r + \r +]]> + + + + 200 + + + + + + + + + 507 + + + + + + declare namespace ns1='http://tempuri.org/'; +//ns1:AddResult + 20 + false + false + false + + + + No Authorization + No Authorization + + + + + + + + + + + CalculatorSoap12 + Divide + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + CalculatorSoap12 + Multiply + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + CalculatorSoap12 + Subtract + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + CalculatorSoap + Add + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + CalculatorSoap + Divide + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + CalculatorSoap + Multiply + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + CalculatorSoap + Subtract + + + UTF-8 + http://www.dneonline.com/calculator.asmx + \r + \r + \r + \r + ?\r + ?\r + \r + \r +]]> + + + + + 200 + + + + + + + + 200 + + + + + No Authorization + No Authorization + + + + + + + + + + + + + + + + + + + + + + + // Sample event script to add custom HTTP header to all outgoing REST, SOAP and HTTP(S) calls +// This code is often used for adding custom authentication to ReadyAPI functional tests + +// If hardcoding the token, uncomment and change line 5 +// token = '4567' + +// If your token is parameterized in Project level custom property, uncomment line 8 +// token = request.parent.testCase.testSuite.project.getProperty('auth_token').getValue() + +// To modify all outgoing calls, remove comments from lines 11 to 16 +// headers = request.requestHeaders +// if (headers.containsKey('auth_token2') == false) { +// headers.put('auth_token2', token) +// request.requestHeaders = headers +// } + + + // Save all test step results into files +// Change the directory path in line 5 to a location where you want to store details +// then uncomment lines 5 to 10 + +// filePath = 'C:\\tempOutputDirectory\\' +// fos = new java.io.FileOutputStream(filePath + testStepResult.testStep.label + '.txt', true) +// pw = new java.io.PrintWriter(fos) +// testStepResult.writeTo(pw) +// pw.close() +// fos.close() + + + + From de0976f7ef66231c328af45ab4c1c5f3a128df5a Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:14:16 +0530 Subject: [PATCH 12/36] Add files via upload --- .../DataDrivenTest-External-source.xml | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 API/Activities/DataDrivenTest-External-source.xml diff --git a/API/Activities/DataDrivenTest-External-source.xml b/API/Activities/DataDrivenTest-External-source.xml new file mode 100644 index 0000000000..94c997451d --- /dev/null +++ b/API/Activities/DataDrivenTest-External-source.xml @@ -0,0 +1,25 @@ + +http://ipwhois.appIPIPTEMPLATEIPapplication/json; charset=utf-8200json:Responsehttp://ipwhois.appNo AuthorizationNo AuthorizationIPSEQUENTIALC:/Users/0019TE744/Downloads/FST_API/TextFile.txt,trueCp1252falsetruetrueIPaddresstruefalse<xml-fragment/>http://ipwhois.apphttp://ipwhois.app/json/200$['country']"India"falsefalsefalseNo AuthorizationNo AuthorizationIPDataSourceRequest 1trueC:/Users/0019TE744/Downloads/FST_API/Ips_Excel.xlsxA2falsefalsetruetrueIP Addresstruefalse<xml-fragment/>http://ipwhois.apphttp://ipwhois.app/json/200$['country']"India"falsefalsefalseNo AuthorizationNo AuthorizationIPData SourceRequest 1trueFST_Connectioncom.mysql.jdbc.Driverjdbc:mysql://db4free.net:3306/fstm1db?user=fstm1db&password=PASS_VALUE6Y6NowPybq// Sample event script to add custom HTTP header to all outgoing REST, SOAP and HTTP(S) calls +// This code is often used for adding custom authentication to ReadyAPI functional tests + +// If hardcoding the token, uncomment and change line 5 +// token = '4567' + +// If your token is parameterized in Project level custom property, uncomment line 8 +// token = request.parent.testCase.testSuite.project.getProperty('auth_token').getValue() + +// To modify all outgoing calls, remove comments from lines 11 to 16 +// headers = request.requestHeaders +// if (headers.containsKey('auth_token2') == false) { +// headers.put('auth_token2', token) +// request.requestHeaders = headers +// }// Save all test step results into files +// Change the directory path in line 5 to a location where you want to store details +// then uncomment lines 5 to 10 + +// filePath = 'C:\\tempOutputDirectory\\' +// fos = new java.io.FileOutputStream(filePath + testStepResult.testStep.label + '.txt', true) +// pw = new java.io.PrintWriter(fos) +// testStepResult.writeTo(pw) +// pw.close() +// fos.close() \ No newline at end of file From ab4efc29c57aeedd172abb61a5e11e157d0014ae Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:14:58 +0530 Subject: [PATCH 13/36] Add files via upload --- API/Activities/DataDrivenTest_JDBC.xml | 498 +++++++++++++++++++++++++ 1 file changed, 498 insertions(+) create mode 100644 API/Activities/DataDrivenTest_JDBC.xml diff --git a/API/Activities/DataDrivenTest_JDBC.xml b/API/Activities/DataDrivenTest_JDBC.xml new file mode 100644 index 0000000000..1b2f391777 --- /dev/null +++ b/API/Activities/DataDrivenTest_JDBC.xml @@ -0,0 +1,498 @@ + + + + + + + + https://petstore.swagger.io + + + + + + + + + application/json + + + + application/json + 400 + + pet:Fault + + + application/json + 200 + + pet:Response + + + + https://petstore.swagger.io + + No Authorization + No Authorization + + + + + + + + + + + + + status + sold + QUERY + sold + + + + + + application/json + 200 + + Response + + + + https://petstore.swagger.io + + No Authorization + No Authorization + + + + + + status + + + + + + + + + + + + petId + petId + TEMPLATE + petId + + + + + + application/json + 404 + + pet:Fault + + + application/json + + + + + 404 + + data + + + application/json + 200 + + pet:Response + + + + https://petstore.swagger.io + + No Authorization + No Authorization + + + + + + petId + + + + + + + + SEQUENTIAL + + + true + true + false + true + true + Multiple Pages + + false + + + + + + + <xml-fragment/> + + + https://petstore.swagger.io + { + "id" : 774290, + "name" : "Pinky", + "status" : "alive" +} + + https://petstore.swagger.io/v2/pet + + + + 200 + + + + { + "id" : 77423, + "name" : "Pinky", + "status" : "alive" +} + + No Authorization + No Authorization + + + + + + + + + + + statusTransfer + Response + POST Request + $[status] + status + GET Request + + JSONPATH + true + + + idTransfer + Response + POST Request + $['id'] + petId + DELETE Request + JSONPATH + true + + + + + + + + + <xml-fragment/> + + https://petstore.swagger.io + { + "id" : 77423, + "name" : "Pinky", + "status" : "alive" +} + + https://petstore.swagger.io/v2/pet/findByStatus + + + + 200 + + + + No Authorization + No Authorization + + + + + + + status + + + + + + + + + + <xml-fragment/> + + https://petstore.swagger.io + + https://petstore.swagger.io/v2/pet/petId + + + + 200 + + + + No Authorization + No Authorization + + + + + + + petId + + + + + + + + + + + + <xml-fragment/> + + + + + com.mysql.jdbc.Driver + jdbc:mysql://db4free.net:3306/fstm1db?user=fstm1db&password=PASS_VALUE + 6Y6NowPybq + FST_Coonection( Default environment ) + SELECT * FROM petData; + + false + + + true + true + petId + petName + petStatus + true + true + false + + + + + + + + <xml-fragment/> + + + https://petstore.swagger.io + { + "id" : ${DataSource#petId}, + "name" : "${DataSource#petName}", + "status" : "${DataSource#petStatus}" + } + + https://petstore.swagger.io/v2/pet + + + + 200 + + + + { + "id" : 77423, + "name" : "Pinky", + "status" : "alive" +} + + No Authorization + No Authorization + + + + + + + + + + + statusTanfer + Response + POST Request + $[status] + status + GET Request + JSONPATH + true + + + idTransfer + Response + POST Request + $['id'] + petId + DELETE Request + JSONPATH + true + + + + + + + + + <xml-fragment/> + + https://petstore.swagger.io + { + "id" : 77423, + "name" : "Pinky", + "status" : "alive" +} + + https://petstore.swagger.io/v2/pet/findByStatus + + + + 200 + + + + No Authorization + No Authorization + + + + + + + status + + + + + + + + + + <xml-fragment/> + + https://petstore.swagger.io + + https://petstore.swagger.io/v2/pet/petId + + + + 200 + + + + No Authorization + No Authorization + + + + + + + petId + + + + + + + + Data Source + POST Request + true + + + + + + + + + + + + + + FST_Coonection + com.mysql.jdbc.Driver + jdbc:mysql://db4free.net:3306/fstm1db?user=fstm1db&password=PASS_VALUE + 6Y6NowPybq + + + + + + + + + + + + // Sample event script to add custom HTTP header to all outgoing REST, SOAP and HTTP(S) calls +// This code is often used for adding custom authentication to ReadyAPI functional tests + +// If hardcoding the token, uncomment and change line 5 +// token = '4567' + +// If your token is parameterized in Project level custom property, uncomment line 8 +// token = request.parent.testCase.testSuite.project.getProperty('auth_token').getValue() + +// To modify all outgoing calls, remove comments from lines 11 to 16 +// headers = request.requestHeaders +// if (headers.containsKey('auth_token2') == false) { +// headers.put('auth_token2', token) +// request.requestHeaders = headers +// } + + + // Save all test step results into files +// Change the directory path in line 5 to a location where you want to store details +// then uncomment lines 5 to 10 + +// filePath = 'C:\\tempOutputDirectory\\' +// fos = new java.io.FileOutputStream(filePath + testStepResult.testStep.label + '.txt', true) +// pw = new java.io.PrintWriter(fos) +// testStepResult.writeTo(pw) +// pw.close() +// fos.close() + + + + From 8521349a91bdfb0b1023135225ac0d28cd24f555 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:18:42 +0530 Subject: [PATCH 14/36] Add files via upload --- .../GitHub-Project-readyapi-project.xml | 331 ++++++++++++++++++ 1 file changed, 331 insertions(+) create mode 100644 API/Activities/GitHub-Project-readyapi-project.xml diff --git a/API/Activities/GitHub-Project-readyapi-project.xml b/API/Activities/GitHub-Project-readyapi-project.xml new file mode 100644 index 0000000000..91b70910b5 --- /dev/null +++ b/API/Activities/GitHub-Project-readyapi-project.xml @@ -0,0 +1,331 @@ + + + + + + + + https://api.github.com + + + + + + + + + application/json; charset=utf-8 + 201 + + keys:Response + + + application/json + + + + application/json; charset=utf-8 + 422 + + keys:Fault + + + + https://api.github.com + + + + + + + + + + + + keyId + keyId + TEMPLATE + keyId + + + + + + application/json; charset=utf-8 + 401 + + key:Fault + + + application/json; charset=utf-8 + 200 + + key:Response + + + + https://api.github.com + + + + + keyId + + + + + + + + keyId + keyId + TEMPLATE + keyId + + + + + + application/json; charset=utf-8 + 401 + + key:Fault + + + application/json + + + + + 204 + + data + + + + https://api.github.com + + + + + keyId + + + + + + + + SEQUENTIAL + + + + + + + + <xml-fragment/> + + https://api.github.com + { + "title":"TestKey", + "key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCpFBBBV0psYemNbuj17GHCBwIDl3i4pNS7pYWMDsLUGjZmTV8MzeAI+bopF4yRuZBlNIWdIr2nqtWu+RQ5MLcTQ+warNucxCzJYdOyN2xnsIkdCDa9iaUn3kXKrD+vbFrPaWzTyKXVNxn7FqahK4FQGX2lCtv8qJZJJt9mjWy+fQ==" + + https://api.github.com/user/keys + + + + 201 + + + + + $['key'] + ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCpFBBBV0psYemNbuj17GHCBwIDl3i4pNS7pYWMDsLUGjZmTV8MzeAI+bopF4yRuZBlNIWdIr2nqtWu+RQ5MLcTQ+warNucxCzJYdOyN2xnsIkdCDa9iaUn3kXKrD+vbFrPaWzTyKXVNxn7FqahK4FQGX2lCtv8qJZJJt9mjWy+fQ== + false + false + false + + + + GitHubProject + No Authorization + + + + + + + + + + + tranferId + Response + POST Request + $['id'] + keyId + GET Request + + JSONPATH + JSONPATH + true + + + delid + Response + POST Request + $['id'] + keyId + DELETE Request + JSONPATH + JSONPATH + true + + + + + + + + + <xml-fragment/> + + https://api.github.com + + https://api.github.com/user/keys/keyId + + + + 200 + + + + + $['key'] + ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCpFBBBV0psYemNbuj17GHCBwIDl3i4pNS7pYWMDsLUGjZmTV8MzeAI+bopF4yRuZBlNIWdIr2nqtWu+RQ5MLcTQ+warNucxCzJYdOyN2xnsIkdCDa9iaUn3kXKrD+vbFrPaWzTyKXVNxn7FqahK4FQGX2lCtv8qJZJJt9mjWy+fQ== + false + false + false + + + + GitHubProject + No Authorization + + + + + + + keyId + + + + + + + + + + <xml-fragment/> + + https://api.github.com + + https://api.github.com/user/keys/keyId + + + + 204 + + + + GitHubProject + No Authorization + + + + + + + keyId + + + + + + + + + + + + + + + + + + GitHubProject + OAuth 2.0 + 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 + HEADER + ENTERED_MANUALLY + ENTERED_MANUALLY + AUTHORIZATION_CODE_GRANT + AUTOMATIC + + id_token + + + + + + + + + // Sample event script to add custom HTTP header to all outgoing REST, SOAP and HTTP(S) calls +// This code is often used for adding custom authentication to ReadyAPI functional tests + +// If hardcoding the token, uncomment and change line 5 +// token = '4567' + +// If your token is parameterized in Project level custom property, uncomment line 8 +// token = request.parent.testCase.testSuite.project.getProperty('auth_token').getValue() + +// To modify all outgoing calls, remove comments from lines 11 to 16 +// headers = request.requestHeaders +// if (headers.containsKey('auth_token2') == false) { +// headers.put('auth_token2', token) +// request.requestHeaders = headers +// } + + + // Save all test step results into files +// Change the directory path in line 5 to a location where you want to store details +// then uncomment lines 5 to 10 + +// filePath = 'C:\\tempOutputDirectory\\' +// fos = new java.io.FileOutputStream(filePath + testStepResult.testStep.label + '.txt', true) +// pw = new java.io.PrintWriter(fos) +// testStepResult.writeTo(pw) +// pw.close() +// fos.close() + + + + GitHubProject + OAuth 2.0 + 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 + HEADER + ENTERED_MANUALLY + ENTERED_MANUALLY + AUTHORIZATION_CODE_GRANT + AUTOMATIC + + id_token + + + + From acb7d3265facdce80ff38fa275653eb6dd5e218f Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:20:17 +0530 Subject: [PATCH 15/36] Add files via upload --- API/Activities/PetStoreRest.xml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 API/Activities/PetStoreRest.xml diff --git a/API/Activities/PetStoreRest.xml b/API/Activities/PetStoreRest.xml new file mode 100644 index 0000000000..9d38c8e497 --- /dev/null +++ b/API/Activities/PetStoreRest.xml @@ -0,0 +1,33 @@ + +https://petstore.swagger.ioapplication/jsonapplication/json200pet:Responsehttps://petstore.swagger.ioNo AuthorizationNo AuthorizationstatussoldQUERYsoldapplication/json200Responsehttps://petstore.swagger.ioNo AuthorizationNo AuthorizationstatuspetIdpetIdTEMPLATEpetIdapplication/jsonapplication/json200ns:Response404datahttps://petstore.swagger.ioNo AuthorizationNo AuthorizationpetIdSEQUENTIAL<xml-fragment/>https://petstore.swagger.io{ + "id": 42000, + "name": "CharmLucky", + "status": "alive" +}https://petstore.swagger.io/v2/pet200$['status']alivefalsefalsefalseNo AuthorizationNo AuthorizationstatusTransferResponsePost Request$['status']statusGet RequestJSONPATHJSONPATHtrueidTransferResponsePost Request$['id']petIdDelete requestJSONPATHtrue<xml-fragment/>https://petstore.swagger.iohttps://petstore.swagger.io/v2/pet/findByStatus200No AuthorizationNo Authorizationstatus<xml-fragment/>https://petstore.swagger.iohttps://petstore.swagger.io/v2/pet/4200200$['message']${Delete request#petId}falsefalsefalseNo AuthorizationNo AuthorizationpetIdc5b3df29-4587-4042-bc9b-6cfa755f651cNONEadb8074e-ee7e-4415-ab0f-8a1aafb44289NONE071f3aea-935a-4468-be64-87a3101c05d1NONEf841f5b0-ac47-4f8d-82b1-e0ac55bfff68NONEtruetruefalsetruetruetruetruetrue]]>20250Scoobyalive]]>20260Rubyalive]]>20270Hobbyalive]]>truetruetruepetIDpetNamepetStatustruetruefalse<xml-fragment/>https://petstore.swagger.io{ + "id": ${DataSource#petID}, + "name": "${DataSource#petName}", + "status": "${DataSource#petStatus}" +}https://petstore.swagger.io/v2/pet200$['status']alivefalsefalsefalseNo AuthorizationNo AuthorizationstatusTransferResponsePost Request$['status']statusGet RequestJSONPATHJSONPATHtrueidTransferResponsePost Request$['id']petIdDelete requestJSONPATHtrue<xml-fragment/>https://petstore.swagger.iohttps://petstore.swagger.io/v2/pet/findByStatus200No AuthorizationNo Authorizationstatus<xml-fragment/>https://petstore.swagger.iohttps://petstore.swagger.io/v2/pet/4200200$['message']${Delete request#petId}falsefalsefalseNo AuthorizationNo AuthorizationpetIdDataSourcePost RequestfalseC:/Users/0019TE744/Downloads/FST_API/New Microsoft Excel Worksheet.xlsxSheet1A1truefalseid${DataSource#petID}namestatusc5b3df29-4587-4042-bc9b-6cfa755f651cNONEadb8074e-ee7e-4415-ab0f-8a1aafb44289NONE071f3aea-935a-4468-be64-87a3101c05d1NONEf841f5b0-ac47-4f8d-82b1-e0ac55bfff68NONE// Sample event script to add custom HTTP header to all outgoing REST, SOAP and HTTP(S) calls +// This code is often used for adding custom authentication to ReadyAPI functional tests + +// If hardcoding the token, uncomment and change line 5 +// token = '4567' + +// If your token is parameterized in Project level custom property, uncomment line 8 +// token = request.parent.testCase.testSuite.project.getProperty('auth_token').getValue() + +// To modify all outgoing calls, remove comments from lines 11 to 16 +// headers = request.requestHeaders +// if (headers.containsKey('auth_token2') == false) { +// headers.put('auth_token2', token) +// request.requestHeaders = headers +// }// Save all test step results into files +// Change the directory path in line 5 to a location where you want to store details +// then uncomment lines 5 to 10 + +// filePath = 'C:\\tempOutputDirectory\\' +// fos = new java.io.FileOutputStream(filePath + testStepResult.testStep.label + '.txt', true) +// pw = new java.io.PrintWriter(fos) +// testStepResult.writeTo(pw) +// pw.close() +// fos.close() \ No newline at end of file From 432e7d972ea4f1a1d4f5278403e5be3e73dd148e Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:21:31 +0530 Subject: [PATCH 16/36] Add files via upload --- .../GitHub-Project-readyapi-project (1).xml | 331 ++++++++++++++++++ 1 file changed, 331 insertions(+) create mode 100644 API/Project/GitHub-Project-readyapi-project (1).xml diff --git a/API/Project/GitHub-Project-readyapi-project (1).xml b/API/Project/GitHub-Project-readyapi-project (1).xml new file mode 100644 index 0000000000..91b70910b5 --- /dev/null +++ b/API/Project/GitHub-Project-readyapi-project (1).xml @@ -0,0 +1,331 @@ + + + + + + + + https://api.github.com + + + + + + + + + application/json; charset=utf-8 + 201 + + keys:Response + + + application/json + + + + application/json; charset=utf-8 + 422 + + keys:Fault + + + + https://api.github.com + + + + + + + + + + + + keyId + keyId + TEMPLATE + keyId + + + + + + application/json; charset=utf-8 + 401 + + key:Fault + + + application/json; charset=utf-8 + 200 + + key:Response + + + + https://api.github.com + + + + + keyId + + + + + + + + keyId + keyId + TEMPLATE + keyId + + + + + + application/json; charset=utf-8 + 401 + + key:Fault + + + application/json + + + + + 204 + + data + + + + https://api.github.com + + + + + keyId + + + + + + + + SEQUENTIAL + + + + + + + + <xml-fragment/> + + https://api.github.com + { + "title":"TestKey", + "key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCpFBBBV0psYemNbuj17GHCBwIDl3i4pNS7pYWMDsLUGjZmTV8MzeAI+bopF4yRuZBlNIWdIr2nqtWu+RQ5MLcTQ+warNucxCzJYdOyN2xnsIkdCDa9iaUn3kXKrD+vbFrPaWzTyKXVNxn7FqahK4FQGX2lCtv8qJZJJt9mjWy+fQ==" + + https://api.github.com/user/keys + + + + 201 + + + + + $['key'] + ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCpFBBBV0psYemNbuj17GHCBwIDl3i4pNS7pYWMDsLUGjZmTV8MzeAI+bopF4yRuZBlNIWdIr2nqtWu+RQ5MLcTQ+warNucxCzJYdOyN2xnsIkdCDa9iaUn3kXKrD+vbFrPaWzTyKXVNxn7FqahK4FQGX2lCtv8qJZJJt9mjWy+fQ== + false + false + false + + + + GitHubProject + No Authorization + + + + + + + + + + + tranferId + Response + POST Request + $['id'] + keyId + GET Request + + JSONPATH + JSONPATH + true + + + delid + Response + POST Request + $['id'] + keyId + DELETE Request + JSONPATH + JSONPATH + true + + + + + + + + + <xml-fragment/> + + https://api.github.com + + https://api.github.com/user/keys/keyId + + + + 200 + + + + + $['key'] + ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCpFBBBV0psYemNbuj17GHCBwIDl3i4pNS7pYWMDsLUGjZmTV8MzeAI+bopF4yRuZBlNIWdIr2nqtWu+RQ5MLcTQ+warNucxCzJYdOyN2xnsIkdCDa9iaUn3kXKrD+vbFrPaWzTyKXVNxn7FqahK4FQGX2lCtv8qJZJJt9mjWy+fQ== + false + false + false + + + + GitHubProject + No Authorization + + + + + + + keyId + + + + + + + + + + <xml-fragment/> + + https://api.github.com + + https://api.github.com/user/keys/keyId + + + + 204 + + + + GitHubProject + No Authorization + + + + + + + keyId + + + + + + + + + + + + + + + + + + GitHubProject + OAuth 2.0 + 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 + HEADER + ENTERED_MANUALLY + ENTERED_MANUALLY + AUTHORIZATION_CODE_GRANT + AUTOMATIC + + id_token + + + + + + + + + // Sample event script to add custom HTTP header to all outgoing REST, SOAP and HTTP(S) calls +// This code is often used for adding custom authentication to ReadyAPI functional tests + +// If hardcoding the token, uncomment and change line 5 +// token = '4567' + +// If your token is parameterized in Project level custom property, uncomment line 8 +// token = request.parent.testCase.testSuite.project.getProperty('auth_token').getValue() + +// To modify all outgoing calls, remove comments from lines 11 to 16 +// headers = request.requestHeaders +// if (headers.containsKey('auth_token2') == false) { +// headers.put('auth_token2', token) +// request.requestHeaders = headers +// } + + + // Save all test step results into files +// Change the directory path in line 5 to a location where you want to store details +// then uncomment lines 5 to 10 + +// filePath = 'C:\\tempOutputDirectory\\' +// fos = new java.io.FileOutputStream(filePath + testStepResult.testStep.label + '.txt', true) +// pw = new java.io.PrintWriter(fos) +// testStepResult.writeTo(pw) +// pw.close() +// fos.close() + + + + GitHubProject + OAuth 2.0 + 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 + HEADER + ENTERED_MANUALLY + ENTERED_MANUALLY + AUTHORIZATION_CODE_GRANT + AUTOMATIC + + id_token + + + + From f1fd559ffde74511b07c8ea1967c07a6c29f3ed6 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:22:45 +0530 Subject: [PATCH 17/36] Add files via upload --- API/Project/GitHubProjectReport.xls | Bin 0 -> 65024 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 API/Project/GitHubProjectReport.xls diff --git a/API/Project/GitHubProjectReport.xls b/API/Project/GitHubProjectReport.xls new file mode 100644 index 0000000000000000000000000000000000000000..151d36a3d3ed159855f4a9a4b6ff293f63e75834 GIT binary patch literal 65024 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 biMTG4dLI}xY!Cc*c!EBn{W++(tp5K2KxM=z literal 0 HcmV?d00001 From 2b70cd61dc7652f6560b43456644b37dbc4f1b32 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:24:03 +0530 Subject: [PATCH 18/36] Add files via upload --- Appium/Activities/Activityy1.java | 60 +++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 Appium/Activities/Activityy1.java diff --git a/Appium/Activities/Activityy1.java b/Appium/Activities/Activityy1.java new file mode 100644 index 0000000000..2f8f9f4828 --- /dev/null +++ b/Appium/Activities/Activityy1.java @@ -0,0 +1,60 @@ +package Examples; + +import io.appium.java_client.AppiumBy; +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.options.UiAutomator2Options; +import org.testng.Assert; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; +import java.net.MalformedURLException; +import java.net.URL; + +public class Activity1 +{ + // Driver Declaration + AndroidDriver driver; + + // Setting up + @BeforeClass + public void setUp() throws MalformedURLException { + + + UiAutomator2Options options = new UiAutomator2Options(); + options.setPlatformName("android"); + options.setAutomationName("UiAutomator2"); + options.setAppPackage("com.google.android.calculator"); + options.setAppActivity("com.android.calculator2.Calculator"); + options.noReset(); + + // Server Address + URL serverURL = new URL("http://localhost:4723/"); + + // Driver Initialization + driver = new AndroidDriver(serverURL, options); + } + + // Test method + @Test + public void multiplyTest() { + // Perform the calculation + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_5")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/op_mul")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_4")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/eq")).click(); + + + String product = driver.findElement(AppiumBy.id("result_final")).getText(); + + // Assertion + Assert.assertEquals(product, "20"); + } + + + // Tear down method + @AfterClass + public void tearDown() { + // Close the app + driver.quit(); + } +} From 118b490c67351a31e8f51e75616a06fdefb9d6b4 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:25:14 +0530 Subject: [PATCH 19/36] Add files via upload --- Appium/Activities/Activityy2.java | 68 +++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 Appium/Activities/Activityy2.java diff --git a/Appium/Activities/Activityy2.java b/Appium/Activities/Activityy2.java new file mode 100644 index 0000000000..0e57f2fa17 --- /dev/null +++ b/Appium/Activities/Activityy2.java @@ -0,0 +1,68 @@ +package Examples; + +import io.appium.java_client.AppiumBy; +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.options.UiAutomator2Options; +import org.testng.Assert; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; +import java.net.MalformedURLException; +import java.net.URL; + +public class Activity2 +{ + // Driver Declaration + AndroidDriver driver; + + // Set up method + @BeforeClass + public void setUp() throws MalformedURLException { + // Desired Capabilities + UiAutomator2Options options = new UiAutomator2Options(); + options.setPlatformName("android"); + options.setAutomationName("UiAutomator2"); + options.setAppPackage("com.android.chrome"); + options.setAppActivity("com.google.android.apps.chrome.Main"); + options.noReset(); + + // Server Address + URL serverURL = new URL("http://localhost:4723/"); + + // Driver Initialization + driver = new AndroidDriver(serverURL, options); + + // Open the page in Chrome + driver.get("https://www.training-support.net"); + } + + // Test method + @Test + public void chromeTest() { + // Find heading on the page + String pageHeading = driver.findElement(AppiumBy.xpath( + "//android.view.View[@text='Training Support']" + )).getText(); + + // Print to console + System.out.println("Heading: " + pageHeading); + + // Find and click the About Us link + driver.findElement(AppiumBy.xpath("//android.view.View[@resource-id='about-link']" + )).click(); + + // Find heading of new page and print to console + String aboutPageHeading = driver.findElement(AppiumBy.xpath( + "//android.view.View[@text='About Us']" + )).getText(); + System.out.println(aboutPageHeading); + } + + + // Tear down method + @AfterClass + public void tearDown() { + // Close the app + driver.quit(); + } +} From 0369974c0320ae48f6bd00fdc93813d0273aa043 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:25:57 +0530 Subject: [PATCH 20/36] Add files via upload --- Appium/Activities/Activityy3.java | 102 ++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 Appium/Activities/Activityy3.java diff --git a/Appium/Activities/Activityy3.java b/Appium/Activities/Activityy3.java new file mode 100644 index 0000000000..7b9130304e --- /dev/null +++ b/Appium/Activities/Activityy3.java @@ -0,0 +1,102 @@ +package Examples; + +import io.appium.java_client.AppiumBy; +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.options.UiAutomator2Options; +import org.testng.Assert; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; +import java.net.MalformedURLException; +import java.net.URL; + + + +public class Activity3 +{ + // Driver Declaration + AndroidDriver driver; + + // Setting up + @BeforeClass + public void setUp() throws MalformedURLException { + + + UiAutomator2Options options = new UiAutomator2Options(); + options.setPlatformName("android"); + options.setAutomationName("UiAutomator2"); + options.setAppPackage("com.google.android.calculator"); + options.setAppActivity("com.android.calculator2.Calculator"); + options.noReset(); + + // Server Address + URL serverURL = new URL("http://localhost:4723/"); + + // Driver Initialization + driver = new AndroidDriver(serverURL, options); + } + + // Test method + @Test + public void calcuations() { + // Perform the summation + driver.findElement(AppiumBy.id("com.google.android.calculator:id/clr")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_5")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/op_add")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_9")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/eq")).click(); + String sum = driver.findElement(AppiumBy.id("result_final")).getText(); + + // Printing and Assertion + System.out.println("Sum of 5 and 9 is "+ sum); + Assert.assertEquals(sum, "14"); + + //Subtraction + driver.findElement(AppiumBy.id("com.google.android.calculator:id/clr")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_1")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_0")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/op_sub")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_5")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/eq")).click(); + String balance = driver.findElement(AppiumBy.id("result_final")).getText(); + + //Printing and Assertion + System.out.println("When 5 is deducted from 10, you will get "+ balance); + Assert.assertEquals(balance, "5"); + + //Multiplication + driver.findElement(AppiumBy.id("com.google.android.calculator:id/clr")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_5")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/op_mul")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_1")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_0")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_0")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/eq")).click(); + String product = driver.findElement(AppiumBy.id("result_final")).getText(); + + //Printing and Assertion + System.out.println("Product of 5 and 100 "+ product); + Assert.assertEquals(product, "500"); + + //Division + driver.findElement(AppiumBy.id("com.google.android.calculator:id/clr")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_5")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_0")).click(); + driver.findElement(AppiumBy.accessibilityId("divide")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_2")).click(); + String divResult = driver.findElement(AppiumBy.id("com.google.android.calculator:id/result_preview")).getText(); + + //Printing and Assertion + System.out.println("Result if 50/2 is "+ divResult); + Assert.assertEquals(divResult, "25"); + + } + + + // Tear down method + @AfterClass + public void tearDown() { + // Close the app + driver.quit(); + } +} From 15fb03da8eb463d5ee52f81c16b3f22541ecc365 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:26:36 +0530 Subject: [PATCH 21/36] Add files via upload --- Appium/Activities/Activityy4.java | 81 +++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 Appium/Activities/Activityy4.java diff --git a/Appium/Activities/Activityy4.java b/Appium/Activities/Activityy4.java new file mode 100644 index 0000000000..7b82bcfd31 --- /dev/null +++ b/Appium/Activities/Activityy4.java @@ -0,0 +1,81 @@ +package Examples; + +import io.appium.java_client.AppiumBy; +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.options.UiAutomator2Options; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.testng.Assert; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; +import java.net.MalformedURLException; +import java.net.URL; +import java.time.Duration; + + +public class Activity4 +{ + // Driver Declaration + AndroidDriver driver; + WebDriverWait wait; + + // Set up method + @BeforeClass + public void setUp() throws MalformedURLException { + // Desired Capabilities + UiAutomator2Options options = new UiAutomator2Options(); + options.setPlatformName("android"); + options.setAutomationName("UiAutomator2"); + options.setAppPackage("com.google.android.contacts"); + options.setAppActivity("com.google.android.apps.contacts.editor.ContactEditorActivity"); + options.noReset(); + + // Server Address + URL serverURL = new URL("http://localhost:4723/"); + + // Driver Initialization + driver = new AndroidDriver(serverURL, options); + wait = new WebDriverWait(driver, Duration.ofSeconds(10)); + } + + // Test method + @Test + public void contactsTest() { + // Find and click the add button + driver.findElement(AppiumBy.accessibilityId("Contacts")).click(); + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("com.google.android.contacts:id/floating_action_button"))); + driver.findElement(AppiumBy.id("com.google.android.contacts:id/floating_action_button")).click(); + // Wait for elements to load + wait.until(ExpectedConditions.elementToBeClickable( + AppiumBy.xpath("//android.widget.EditText[@text=\"First name\"]") + )); + + // Enter the details + driver.findElement(AppiumBy.xpath( + "//android.widget.EditText[@text=\"First name\"]" + )).sendKeys("Sreevara"); + driver.findElement(AppiumBy.xpath( + "//android.widget.EditText[@text=\"Last name\"]" + )).sendKeys("Mysore"); + driver.findElement(AppiumBy.xpath( + "//android.widget.EditText[@text=\"Phone\"]" + )).sendKeys("9448488175"); + // Click Save + driver.findElement(AppiumBy.id("com.google.android.contacts:id/toolbar_button")).click(); + + // Wait for contact to save + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("com.google.android.contacts:id/large_title"))); + + // Assertion + String contactName = driver.findElement(AppiumBy.id("com.google.android.contacts:id/large_title")).getText(); + Assert.assertEquals(contactName, "Sreevara Mysore"); + } + + // Tear down method + @AfterClass + public void tearDown() { + // Close the app + driver.quit(); + } +} From 250f090c16dd084774656f4871fe04e839614119 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:27:24 +0530 Subject: [PATCH 22/36] Add files via upload --- Appium/Activities/Activity5.java | 77 ++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 Appium/Activities/Activity5.java diff --git a/Appium/Activities/Activity5.java b/Appium/Activities/Activity5.java new file mode 100644 index 0000000000..29d24cec43 --- /dev/null +++ b/Appium/Activities/Activity5.java @@ -0,0 +1,77 @@ +package activities; +import io.appium.java_client.AppiumBy; +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.options.UiAutomator2Options; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.testng.Assert; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; +import java.net.MalformedURLException; +import java.net.URL; +import java.time.Duration; + +import io.appium.java_client.android.nativekey.AndroidKey; +import io.appium.java_client.android.nativekey.KeyEvent; + +public class Activity5 { + // Driver Declaration + AndroidDriver driver; + WebDriverWait wait; + + // Set up method + @BeforeClass + public void setUp() throws MalformedURLException { + // Desired Capabilities + UiAutomator2Options options = new UiAutomator2Options(); + options.setPlatformName("android"); + options.setAutomationName("UiAutomator2"); + options.setAppPackage("com.google.android.apps.messaging"); + options.setAppActivity(".ui.ConversationListActivity"); + options.noReset(); + + // Server Address + URL serverURL = new URL("http://localhost:4723/"); + + // Driver Initialization + driver = new AndroidDriver(serverURL, options); + wait = new WebDriverWait(driver, Duration.ofSeconds(10)); + } + + // Test method + @Test + public void smsTest() { + // Find and click the add button + driver.findElement(AppiumBy.accessibilityId("Start new conversation")).click(); + + // Wait for elements to load + wait.until(ExpectedConditions.elementToBeClickable( + AppiumBy.id("recipient_text_view") + )); + + // Find the element to add recipient + driver.findElement(AppiumBy.id("recipient_text_view")).sendKeys("18282832912"); + // Press ENTER + driver.pressKey(new KeyEvent(AndroidKey.ENTER)); + + // Wait for textbox to appear + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("compose_message_text"))); + + // Enter text to send + driver.findElement(AppiumBy.id("compose_message_text")).sendKeys("Hello from Appium"); + // Press Send + driver.findElement(AppiumBy.accessibilityId("Send SMS")).click(); + + // Assertion + String messageTextSent = driver.findElement(AppiumBy.id("message_text")).getText(); + Assert.assertEquals(messageTextSent, "Hello from Appium"); + } + + // Tear down method + @AfterClass + public void tearDown() { + // Close the app + driver.quit(); + } +} From ba3233d7e28061fad0785014781a0d7cfcc932e3 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:28:00 +0530 Subject: [PATCH 23/36] Add files via upload --- Appium/Activities/Activity6.java | 80 ++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 Appium/Activities/Activity6.java diff --git a/Appium/Activities/Activity6.java b/Appium/Activities/Activity6.java new file mode 100644 index 0000000000..d329af0606 --- /dev/null +++ b/Appium/Activities/Activity6.java @@ -0,0 +1,80 @@ + +package activities; +import io.appium.java_client.AppiumBy; +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.options.UiAutomator2Options; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.testng.Assert; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; +import java.net.MalformedURLException; +import java.net.URL; +import java.time.Duration; +import java.util.List; + + +public class Activity6 { + // Driver Declaration + AndroidDriver driver; + WebDriverWait wait; + + // Set up method + @BeforeClass + public void setUp() throws MalformedURLException { + // Desired Capabilities + UiAutomator2Options options = new UiAutomator2Options(); + options.setPlatformName("android"); + options.setAutomationName("UiAutomator2"); + options.setAppPackage("com.android.chrome"); + options.setAppActivity("com.google.android.apps.chrome.Main"); + options.noReset(); + + // Server Address + URL serverURL = new URL("http://localhost:4723/"); + + // Driver Initialization + driver = new AndroidDriver(serverURL, options); + wait = new WebDriverWait(driver, Duration.ofSeconds(10)); + + // Open the page in Chrome + driver.get("https://v1.training-support.net/selenium/lazy-loading"); + } + + // Test method + @Test + public void chromeTest() { + String UiScrollable = "UiScrollable(UiSelector().scrollable(true))"; + + // Wait for page to load + wait.until(ExpectedConditions.visibilityOfElementLocated(AppiumBy.className("android.widget.Image"))); + + // Find all the image elements on the page + List imageElements = driver.findElements(AppiumBy.className("android.widget.Image")); + + // Print the number of images + System.out.println("Before scroll: " + imageElements.size()); + + // Scroll using UiScrollable + driver.findElement(AppiumBy.androidUIAutomator(UiScrollable + ".scrollTextIntoView(\"helen\")")); + + // Get image elements after scroll + imageElements = driver.findElements(AppiumBy.className("android.widget.Image")); + + // Print the number of images after scroll + System.out.println("After scroll: " + imageElements.size()); + + // Assertions + Assert.assertEquals(imageElements.size(), 5); + } + + + // Tear down method + @AfterClass + public void tearDown() { + // Close the app + driver.quit(); + } +} From 8b54537d55661d8cde44645942e4370a843bb379 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:28:37 +0530 Subject: [PATCH 24/36] Add files via upload --- Appium/Activities/Activity7.java | 59 ++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Appium/Activities/Activity7.java diff --git a/Appium/Activities/Activity7.java b/Appium/Activities/Activity7.java new file mode 100644 index 0000000000..6828e5f6a0 --- /dev/null +++ b/Appium/Activities/Activity7.java @@ -0,0 +1,59 @@ +package activities; + +import io.appium.java_client.AppiumBy; +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.options.UiAutomator2Options; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.testng.Assert; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +import java.net.MalformedURLException; +import java.net.URL; +import java.time.Duration; +import java.util.List; + +public class Activity7 { + + AndroidDriver driver; + WebDriverWait wait; + + @BeforeClass + public void SetUp() throws MalformedURLException { + UiAutomator2Options options = new UiAutomator2Options(); + options.setPlatformName("Android"); + options.setAutomationName("UiAutomator2"); + options.setAppPackage("com.android.chrome"); + options.setAppActivity("com.google.android.apps.chrome.Main"); + options.noReset(); + + URL serverURL = new URL("http://localhost:4723/wd/hub"); + + driver = new AndroidDriver(serverURL, options); + + driver.get("https://v1.training-support.net/selenium/lazy-loading"); + wait = new WebDriverWait(driver, Duration.ofSeconds(30)); + } + + @Test + public void webAppTest() throws InterruptedException { + wait.until(ExpectedConditions.presenceOfElementLocated(AppiumBy.xpath("//android.widget.TextView[@text=\"Lazy Loading\"]"))); + + String UiScrollable = "UiScrollable(UiSelector().scrollable(true))"; + + driver.findElement(AppiumBy.androidUIAutomator(UiScrollable + ".scrollForward().getChildByText(className(\"android.widget.Image\"), \"helen\")")); + List imagesAfterScroll = driver.findElements(AppiumBy.xpath("//android.widget.Image")); + + Assert.assertEquals(imagesAfterScroll.size(), 2); + } + + // Tear down method + @AfterClass + public void tearDown() { + // Close the app + driver.quit(); + } +} From 6e8da8a34e9635a44f3236f972eed92fd598aa88 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:29:11 +0530 Subject: [PATCH 25/36] Add files via upload --- Appium/Activities/Activity8.java | 76 ++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 Appium/Activities/Activity8.java diff --git a/Appium/Activities/Activity8.java b/Appium/Activities/Activity8.java new file mode 100644 index 0000000000..8890412cae --- /dev/null +++ b/Appium/Activities/Activity8.java @@ -0,0 +1,76 @@ + +package activities; + +import io.appium.java_client.AppiumBy; +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.options.UiAutomator2Options; +import org.openqa.selenium.Dimension; +import org.openqa.selenium.Point; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.testng.Assert; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +import java.net.MalformedURLException; +import java.net.URL; +import java.time.Duration; +import java.util.List; + +public class Activity8 { + + AndroidDriver driver; + WebDriverWait wait; + + @BeforeClass + public void SetUp() throws MalformedURLException { + UiAutomator2Options options = new UiAutomator2Options(); + options.setPlatformName("Android"); + options.setAutomationName("UiAutomator2"); + options.setAppPackage("com.android.chrome"); + options.setAppActivity("com.google.android.apps.chrome.Main"); + options.noReset(); + + URL serverURL = new URL("http://localhost:4723/wd/hub"); + + driver = new AndroidDriver(serverURL, options); + wait = new WebDriverWait(driver, Duration.ofSeconds(30)); + + driver.get("https://v1.training-support.net/selenium"); + } + + @Test + public void todoListTest() { + Dimension dims = driver.manage().window().getSize(); + Point start = new Point((int)(dims.getWidth() * 0.5), (int)(dims.getHeight() * 0.8)); + Point end = new Point((int)(dims.getWidth() * 0.5), (int)(dims.getHeight() * 0.6)); + + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.xpath("//android.widget.Button[@text=\"Get Started!\"]"))).click(); + + ActionsBase.doSwipe(driver, start, end, 50); + + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.xpath("//android.widget.TextView[@text=\"To-Do List\"]"))).click(); + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.xpath("//android.widget.TextView[@text=\"To-Do List\"]"))); + + int sizeBeforeTask = driver.findElements(AppiumBy.xpath("//android.widget.TextView")).size(); + driver.findElement(AppiumBy.xpath("//android.webkit.WebView[@text=\"Todo List\"]/android.view.View/android.view.View/android.view.View[1]/android.widget.EditText")).sendKeys("Add tasks to list"); + driver.findElement(AppiumBy.xpath("//android.widget.Button[@text=\"Add Task\"]")).click(); + driver.findElement(AppiumBy.xpath("//android.webkit.WebView[@text=\"Todo List\"]/android.view.View/android.view.View/android.view.View[1]/android.widget.EditText")).sendKeys("Get number of tasks"); + driver.findElement(AppiumBy.xpath("//android.widget.Button[@text=\"Add Task\"]")).click(); + driver.findElement(AppiumBy.xpath("//android.webkit.WebView[@text=\"Todo List\"]/android.view.View/android.view.View/android.view.View[1]/android.widget.EditText")).sendKeys("Clear the list"); + driver.findElement(AppiumBy.xpath("//android.widget.Button[@text=\"Add Task\"]")).click(); + + //Number of task + List tasks = driver.findElements(AppiumBy.xpath("//android.widget.TextView")); + Assert.assertEquals(tasks.size(), sizeBeforeTask+3); + + //Strike + driver.findElement(AppiumBy.xpath("//android.widget.TextView[@text=\"Add tasks to list\"]")).click(); + driver.findElement(AppiumBy.xpath("//android.widget.TextView[@text=\"Get number of tasks\"]")).click(); + driver.findElement(AppiumBy.xpath("//android.widget.TextView[@text=\"Clear the list\"]")).click(); + + //Clear + driver.findElement(AppiumBy.xpath("//android.webkit.WebView[@text=\"Todo List\"]/android.view.View/android.view.View/android.view.View[3]")).click(); + } +} From d43a26b9573a4a070c947ac23afb3c8116939d23 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:29:58 +0530 Subject: [PATCH 26/36] Add files via upload --- Appium/Project/Activityy1 (1).java | 62 ++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Appium/Project/Activityy1 (1).java diff --git a/Appium/Project/Activityy1 (1).java b/Appium/Project/Activityy1 (1).java new file mode 100644 index 0000000000..719726232a --- /dev/null +++ b/Appium/Project/Activityy1 (1).java @@ -0,0 +1,62 @@ +package Appium_Project; + +import com.beust.ah.A; +import io.appium.java_client.AppiumBy; +import io.appium.java_client.TouchAction; +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.options.UiAutomator2Options; +import io.appium.java_client.ios.IOSTouchAction; +import io.appium.java_client.touch.offset.PointOption; +import io.opentelemetry.api.baggage.propagation.W3CBaggagePropagator; +import org.openqa.selenium.Dimension; +import org.openqa.selenium.Point; +import org.testng.Assert; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; +import java.net.MalformedURLException; +import java.net.URL; + + + +public class Activity1 +{ + // Driver Declaration + AndroidDriver driver; + + // Setting up + @BeforeClass + public void setUp() throws MalformedURLException + { + UiAutomator2Options options = new UiAutomator2Options(); + options.setPlatformName("android"); + options.setAutomationName("UiAutomator2"); + + // Server Address + URL serverURL = new URL("http://localhost:4723/"); + + // Driver Initialization + driver = new AndroidDriver(serverURL, options); + + //Swipping + + } + + @Test + public void addingAndUpdatingTasks() throws InterruptedException { + driver.findElement(AppiumBy.xpath("//android.widget.TextView[@content-desc=\"Keep Notes\"]")).click(); + Thread.sleep(500); + driver.findElement(AppiumBy.xpath("//android.widget.ImageButton[@content-desc=\"New text note\"]")).click(); + driver.findElement(AppiumBy.id("com.google.android.keep:id/editable_title")).sendKeys("Tester"); + //driver.findElement(AppiumBy.id("com.google.android.keep:id/edit_note_text")).sendKeys("This is the text coming from Appium for Notes"); + driver.findElement(AppiumBy.id("com.google.android.keep:id/edit_note_text")).sendKeys("Some Text"); + driver.findElement(AppiumBy.accessibilityId("Navigate up")).click(); + //driver.findElement(AppiumBy.xpath("//android.widget.Button[@content-desc=\"Archive\"]")).click(); + String message = driver.findElement(AppiumBy.xpath("//android.widget.TextView[@resource-id=\"com.google.android.keep:id/index_note_title\" and @text=\"Tester\"]")).getText(); + //Assertion for Keep + //String message = driver.findElement(AppiumBy.id("com.google.android.keep:id/snackbar_text")).getText(); + Assert.assertEquals(message,"Tester"); + } + + +} From 4c51dd31fa52f4d7bb5bc043b07af4aae7448d6c Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:32:20 +0530 Subject: [PATCH 27/36] Create Activity2.java --- Appium/Project/Activity2.java | 68 +++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 Appium/Project/Activity2.java diff --git a/Appium/Project/Activity2.java b/Appium/Project/Activity2.java new file mode 100644 index 0000000000..ac8fadefdf --- /dev/null +++ b/Appium/Project/Activity2.java @@ -0,0 +1,68 @@ +package Appium_Project; + +import com.beust.ah.A; +import io.appium.java_client.AppiumBy; +import io.appium.java_client.TouchAction; +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.options.UiAutomator2Options; +import io.appium.java_client.ios.IOSTouchAction; +import io.appium.java_client.touch.offset.PointOption; +import io.opentelemetry.api.baggage.propagation.W3CBaggagePropagator; +import org.openqa.selenium.Dimension; +import org.openqa.selenium.Point; +import org.testng.Assert; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; +import java.net.MalformedURLException; +import java.net.URL; + + +public class Activity2 +{ + // Driver Declaration + AndroidDriver driver; + + // Setting up + @BeforeClass + public void setUp() throws MalformedURLException + { + UiAutomator2Options options = new UiAutomator2Options(); + options.setPlatformName("android"); + options.setAutomationName("UiAutomator2"); + + // Server Address + URL serverURL = new URL("http://localhost:4723/"); + + // Driver Initialization + driver = new AndroidDriver(serverURL, options); + + } + + @Test + public void addGoogleTasks() throws InterruptedException { + + //Adding tasks + driver.findElement(AppiumBy.accessibilityId("Tasks")).click(); + Thread.sleep(500); + driver.findElement(AppiumBy.accessibilityId("Create new task")).click(); + driver.findElement(AppiumBy.id("com.google.android.apps.tasks:id/add_task_title")).sendKeys("Complete Activity with Google Tasks"); + driver.findElement(AppiumBy.id("com.google.android.apps.tasks:id/add_task_done")).click(); + Thread.sleep(300); + driver.findElement(AppiumBy.accessibilityId("Create new task")).click(); + driver.findElement(AppiumBy.id("com.google.android.apps.tasks:id/add_task_title")).sendKeys("Complete Activity with Google Keep"); + driver.findElement(AppiumBy.id("com.google.android.apps.tasks:id/add_task_done")).click(); + Thread.sleep(300); + driver.findElement(AppiumBy.accessibilityId("Create new task")).click(); + driver.findElement(AppiumBy.id("com.google.android.apps.tasks:id/add_task_title")).sendKeys("Complete the second Activity Google Keep"); + driver.findElement(AppiumBy.id("com.google.android.apps.tasks:id/add_task_done")).click(); + + //Assetions + String taskDesc = driver.findElement(AppiumBy.xpath("//android.widget.TextView[@resource-id=\"com.google.android.apps.tasks:id/task_name\" and @text=\"Complete the second Activity Google Keep\"]")).getText(); + Assert.assertEquals(taskDesc,"Complete the second Activity Google Keep"); + taskDesc = driver.findElement(AppiumBy.xpath("//android.widget.TextView[@resource-id=\"com.google.android.apps.tasks:id/task_name\" and @text=\"Complete Activity with Google Keep\"]")).getText(); + Assert.assertEquals(taskDesc, "Complete Activity with Google Keep"); + taskDesc = driver.findElement(AppiumBy.xpath("//android.widget.TextView[@resource-id=\"com.google.android.apps.tasks:id/task_name\" and @text=\"Complete Activity with Google Tasks\"]")).getText(); + Assert.assertEquals(taskDesc, "Complete Activity with Google Tasks"); + } +} From 9b0f672a91b6af7fb4c604fa07823eb6cdb7d735 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:33:03 +0530 Subject: [PATCH 28/36] Create Activityy3.java --- Appium/Project/Activityy3.java | 102 +++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 Appium/Project/Activityy3.java diff --git a/Appium/Project/Activityy3.java b/Appium/Project/Activityy3.java new file mode 100644 index 0000000000..eddf6ae89e --- /dev/null +++ b/Appium/Project/Activityy3.java @@ -0,0 +1,102 @@ +package Examples; + +import io.appium.java_client.AppiumBy; +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.options.UiAutomator2Options; +import org.testng.Assert; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; +import java.net.MalformedURLException; +import java.net.URL; + + + +public class Activity3 +{ + // Driver Declaration + AndroidDriver driver; + + // Setting up + @BeforeClass + public void setUp() throws MalformedURLException { + + + UiAutomator2Options options = new UiAutomator2Options(); + options.setPlatformName("android"); + options.setAutomationName("UiAutomator2"); + options.setAppPackage("com.google.android.calculator"); + options.setAppActivity("com.android.calculator2.Calculator"); + options.noReset(); + + // Server Address + URL serverURL = new URL("http://localhost:4723/"); + + // Driver Initialization + driver = new AndroidDriver(serverURL, options); + } + + // Test method + @Test + public void calcuations() { + // Perform the summation + driver.findElement(AppiumBy.id("com.google.android.calculator:id/clr")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_5")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/op_add")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_9")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/eq")).click(); + String sum = driver.findElement(AppiumBy.id("result_final")).getText(); + + // Printing and Assertion + System.out.println("Sum of 5 and 9 is "+ sum); + Assert.assertEquals(sum, "14"); + + //Subtraction + driver.findElement(AppiumBy.id("com.google.android.calculator:id/clr")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_1")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_0")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/op_sub")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_5")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/eq")).click(); + String balance = driver.findElement(AppiumBy.id("result_final")).getText(); + + //Printing and Assertion + System.out.println("When 5 is deducted from 10, you will get "+ balance); + Assert.assertEquals(balance, "5"); + + //Multiplication + driver.findElement(AppiumBy.id("com.google.android.calculator:id/clr")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_5")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/op_mul")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_1")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_0")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_0")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/eq")).click(); + String product = driver.findElement(AppiumBy.id("result_final")).getText(); + + //Printing and Assertion + System.out.println("Product of 5 and 100 "+ product); + Assert.assertEquals(product, "500"); + + //Division + driver.findElement(AppiumBy.id("com.google.android.calculator:id/clr")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_5")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_0")).click(); + driver.findElement(AppiumBy.accessibilityId("divide")).click(); + driver.findElement(AppiumBy.id("com.google.android.calculator:id/digit_2")).click(); + String divResult = driver.findElement(AppiumBy.id("com.google.android.calculator:id/result_preview")).getText(); + + //Printing and Assertion + System.out.println("Result if 50/2 is "+ divResult); + Assert.assertEquals(divResult, "25"); + + } + + + // Tear down method + @AfterClass + public void tearDown() { + // Close the app + driver.quit(); + } +} From fd5712b0e65d70e18d040077877791df08412194 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:33:43 +0530 Subject: [PATCH 29/36] Create Activityy4.java --- Appium/Project/Activityy4.java | 81 ++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 Appium/Project/Activityy4.java diff --git a/Appium/Project/Activityy4.java b/Appium/Project/Activityy4.java new file mode 100644 index 0000000000..a5f0891ef1 --- /dev/null +++ b/Appium/Project/Activityy4.java @@ -0,0 +1,81 @@ +package Examples; + +import io.appium.java_client.AppiumBy; +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.options.UiAutomator2Options; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.testng.Assert; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; +import java.net.MalformedURLException; +import java.net.URL; +import java.time.Duration; + + +public class Activity4 +{ + // Driver Declaration + AndroidDriver driver; + WebDriverWait wait; + + // Set up method + @BeforeClass + public void setUp() throws MalformedURLException { + // Desired Capabilities + UiAutomator2Options options = new UiAutomator2Options(); + options.setPlatformName("android"); + options.setAutomationName("UiAutomator2"); + options.setAppPackage("com.google.android.contacts"); + options.setAppActivity("com.google.android.apps.contacts.editor.ContactEditorActivity"); + options.noReset(); + + // Server Address + URL serverURL = new URL("http://localhost:4723/"); + + // Driver Initialization + driver = new AndroidDriver(serverURL, options); + wait = new WebDriverWait(driver, Duration.ofSeconds(10)); + } + + // Test method + @Test + public void contactsTest() { + // Find and click the add button + driver.findElement(AppiumBy.accessibilityId("Contacts")).click(); + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("com.google.android.contacts:id/floating_action_button"))); + driver.findElement(AppiumBy.id("com.google.android.contacts:id/floating_action_button")).click(); + // Wait for elements to load + wait.until(ExpectedConditions.elementToBeClickable( + AppiumBy.xpath("//android.widget.EditText[@text=\"First name\"]") + )); + + // Enter the details + driver.findElement(AppiumBy.xpath( + "//android.widget.EditText[@text=\"First name\"]" + )).sendKeys("Sreevara"); + driver.findElement(AppiumBy.xpath( + "//android.widget.EditText[@text=\"Last name\"]" + )).sendKeys("Mysore"); + driver.findElement(AppiumBy.xpath( + "//android.widget.EditText[@text=\"Phone\"]" + )).sendKeys("9448488175"); + // Click Save + driver.findElement(AppiumBy.id("com.google.android.contacts:id/toolbar_button")).click(); + + // Wait for contact to save + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("com.google.android.contacts:id/large_title"))); + + // Assertion + String contactName = driver.findElement(AppiumBy.id("com.google.android.contacts:id/large_title")).getText(); + Assert.assertEquals(contactName, "Sreevara Mysore"); + } + + // Tear down method + @AfterClass + public void tearDown() { + // Close the app + driver.quit(); + } +} From bfaf4e86387369643ae77ee1433d243b6ca8a7cb Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:34:27 +0530 Subject: [PATCH 30/36] Create Activity5.java --- Appium/Project/Activity5.java | 62 +++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Appium/Project/Activity5.java diff --git a/Appium/Project/Activity5.java b/Appium/Project/Activity5.java new file mode 100644 index 0000000000..2538ed54b7 --- /dev/null +++ b/Appium/Project/Activity5.java @@ -0,0 +1,62 @@ +package Appium_Project; + +import io.appium.java_client.AppiumBy; +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.options.UiAutomator2Options; +import io.appium.java_client.TouchAction; +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.touch.offset.PointOption; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.testng.Assert; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; +import java.net.MalformedURLException; +import java.net.URL; +import java.time.Duration; + + +public class Activity5 +{ + AndroidDriver driver; + WebDriverWait wait; + + // Set up method + @BeforeClass + public void setUp() throws MalformedURLException { + // Desired Capabilities + UiAutomator2Options options = new UiAutomator2Options(); + options.setPlatformName("android"); + options.setAutomationName("UiAutomator2"); + options.setAppPackage("com.android.chrome"); + options.setAppActivity("com.google.android.apps.chrome.Main"); + options.noReset(); + + // Server Address + URL serverURL = new URL("http://localhost:4723/"); + + // Driver Initialization + driver = new AndroidDriver(serverURL, options); + wait = new WebDriverWait(driver, Duration.ofSeconds(30)); + + // Open the page in Chrome + driver.get("https://v1.training-support.net/selenium"); + } + @Test + public void login() throws InterruptedException + { + String UiScrollable = "UiScrollable(UiSelector().scrollable(true))"; + wait.until(ExpectedConditions.presenceOfElementLocated(AppiumBy.xpath("//android.view.View"))); + driver.findElement(AppiumBy.androidUIAutomator(UiScrollable + ".flingForward()")); + + Thread.sleep(1000); + //driver.findElement(AppiumBy.xpath("//android.widget.TextView[@text=\"To-Do List\"]")).click(); + driver.findElement(AppiumBy.xpath("")).click(); + + //Login Form  Please sign in. + + } + +} From 885eadc51944de1f0c9aefc53befd9ebb757d8a4 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:35:28 +0530 Subject: [PATCH 31/36] Create Activity6.java --- Appium/Project/Activity6.java | 60 +++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 Appium/Project/Activity6.java diff --git a/Appium/Project/Activity6.java b/Appium/Project/Activity6.java new file mode 100644 index 0000000000..d83b17e64a --- /dev/null +++ b/Appium/Project/Activity6.java @@ -0,0 +1,60 @@ +package Project; +import Activities.ActionsBase; +import io.appium.java_client.AppiumBy; +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.options.UiAutomator2Options; +import org.openqa.selenium.Dimension; +import org.openqa.selenium.Point; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.testng.Assert; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +import java.net.MalformedURLException; +import java.net.URL; +import java.time.Duration; + +public class Activity6 { + + AndroidDriver driver; + WebDriverWait wait; + + @BeforeClass + public void SetUp() throws MalformedURLException { + UiAutomator2Options options = new UiAutomator2Options(); + options.setPlatformName("Android"); + options.setAutomationName("UiAutomator2"); + options.setAppPackage("com.android.chrome"); + options.setAppActivity("com.google.android.apps.chrome.Main"); + options.noReset(); + + URL serverURL = new URL("http://localhost:4723/wd/hub"); + + driver = new AndroidDriver(serverURL, options); + wait = new WebDriverWait(driver, Duration.ofSeconds(30)); + + driver.get("https://v1.training-support.net/selenium"); + } + + @Test + public void loginTestInvalid() throws InterruptedException { + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.xpath("//android.widget.Button[@text=\"Get Started!\"]"))).click(); + + String UiScrollable = "UiScrollable(UiSelector().scrollable(true))"; + driver.findElement(AppiumBy.androidUIAutomator(UiScrollable + ".scrollTextIntoView(\"Login Form\")")); + + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.xpath("//android.widget.TextView[@text=\"Login Form\"]"))).click(); + Thread.sleep(5000); + driver.findElement(AppiumBy.xpath("//android.webkit.WebView[@text=\"Login Form\"]/android.view.View/android.view.View/android.view.View/android.view.View/android.widget.EditText[1]")).sendKeys("admin1"); + driver.findElement(AppiumBy.xpath("//android.webkit.WebView[@text=\"Login Form\"]/android.view.View/android.view.View/android.view.View/android.view.View/android.widget.EditText[2]")).sendKeys("password1"); + driver.findElement(AppiumBy.xpath("//android.widget.Button[@text=\"Log in\"]")).click(); + Assert.assertTrue(driver.findElement(AppiumBy.xpath("//android.widget.TextView[@text=\"Invalid Credentials\"]")).isDisplayed()); + } + + @AfterClass + public void tearDown() { + driver.quit(); + } +} From 61da3ce51c5082bfaa924ba69e04c2ed896da0f3 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:37:24 +0530 Subject: [PATCH 32/36] Create Features --- Cucumber/Activities/Features | 1 + 1 file changed, 1 insertion(+) create mode 100644 Cucumber/Activities/Features diff --git a/Cucumber/Activities/Features b/Cucumber/Activities/Features new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/Cucumber/Activities/Features @@ -0,0 +1 @@ + From b0ba2952bd4a1a29eda1c7c025a123aaa5c68c67 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:37:54 +0530 Subject: [PATCH 33/36] Delete Cucumber/Activities directory --- Cucumber/Activities/.gitkeep | 0 Cucumber/Activities/Features | 1 - 2 files changed, 1 deletion(-) delete mode 100644 Cucumber/Activities/.gitkeep delete mode 100644 Cucumber/Activities/Features diff --git a/Cucumber/Activities/.gitkeep b/Cucumber/Activities/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Cucumber/Activities/Features b/Cucumber/Activities/Features deleted file mode 100644 index 8b13789179..0000000000 --- a/Cucumber/Activities/Features +++ /dev/null @@ -1 +0,0 @@ - From a3cc6e4a5f52bcb19f9e92d3d7b9775929b57c10 Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:39:33 +0530 Subject: [PATCH 34/36] Create Cucumber --- Cucumber | 1 + 1 file changed, 1 insertion(+) create mode 100644 Cucumber diff --git a/Cucumber b/Cucumber new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/Cucumber @@ -0,0 +1 @@ + From a8788a023fd9bc778e2f0434fa85f0dc8668763e Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:39:50 +0530 Subject: [PATCH 35/36] Delete Cucumber --- Cucumber | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Cucumber diff --git a/Cucumber b/Cucumber deleted file mode 100644 index 8b13789179..0000000000 --- a/Cucumber +++ /dev/null @@ -1 +0,0 @@ - From 12572b05b170d75797cdbb97a2952a4c963b87ba Mon Sep 17 00:00:00 2001 From: saikumarGorava Date: Mon, 14 Apr 2025 12:40:33 +0530 Subject: [PATCH 36/36] Create Cucumber --- Cucumber | 1 + 1 file changed, 1 insertion(+) create mode 100644 Cucumber diff --git a/Cucumber b/Cucumber new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/Cucumber @@ -0,0 +1 @@ +