SideeX WebService Client API for Node.js
SideeX WebService Client API primarily handles the transfer of test suites to a hosted SideeX WebService server and returns the test reports.
Download
Download the SideeX WebService Client API for Node.js
The API for Node.js
SideeXWebserviceClientAPI(baseURL)
- Description: The constructor to create a Client API object
baseURL
: Base URL of the SideeX WebService server
runTestSuite(file)
- Description: Uses the API to run test cases
file
: The file that contains test cases- Return:
{ "token": "xxxx" }
getState(token)
- Description: Gets the current test case execution state
token
: The token returned from the sideex-webservice Web API- If the token is invalid, the response will be
{ "ok": false, "errorMessage": "invalid_token" }
- If the token is
valid
and the state isrunning
, the response will be{ "ok": true, "webserviceState": { "state": "running" } }
- If the token is
valid
and the state iscomplete
, the response will be{ "ok": true, "webserviceState": { "state": "complete" }, "reports": { "url": "http://{publicURL_in_serviceconfig}/sideex-webservice-reports?token=xxxx", "passed": true, "summarry": [ { "Suites": ["Test_Suite_1"], "SideeXVersion": [3,3,7], "Browser": "chrome 81.0.4044.138", "Platform": "windows", "Language": "(default)", "StartTime": 1589867469846, "EndTime": 1589867472874, "PassedSuite": 1, "TotalSuite": 1, "PassedCase": 1, "TotalPassedCase": 1 } ] }, "logs": { "url": "http://{publicURL_in_serviceconfig}/sideex-webservice-logs?token=xxxx" } }
- If the token is invalid, the response will be
download(formData, filePath, option)
- Description: Download HTML test reports or logs
formData
: A JSON object containingtoken
: The token returned from the sideex-webservice Web APIfile
: This parameter is optional. If setfile
to"reports.zip"
, the API will return a zip file containing all HTML reports, otherwise, it will return an HTML index webpage.
filePath
: Set your download file path. e.g.: "./reports"option
: If option is set to0
, the API will download reports. If set to1
, it will download logs.
deleteReport(token)
- Description: Delete the test case and the test reports on SideeX WebService server
token
: The token returned from the sideex-webservice Web API- If success, the response will be
{ "ok": true, "state": "delete_complete" }
- If the token is invalid, the response will be
{ "ok": false, "errorMessage": "invalid_token" }
- If the test case is running, the response will be
{ "ok": false, "errorMessage": "testcase_is_running" }
- If success, the response will be
How to use
Send a test case file to a SideeX WebService server
//Include the lib of the SideeX WebService Client APIconst fs = require('fs');var { SideeXWebserviceClientAPI: wsclientAPI, ProtocalType } = require('sideex-webservice-client'); //Create a Client API object connecting to a SideeX WebService serverlet ws_client = new wsclientAPI("http://127.0.0.1:50000"); //Prepare a test case filelet file = fs.createReadStream('testcase.zip'); //Send the test case file to the server and get a token ws_client.runTestSuite(file).then(response => { console.log(response) //Show a returned token})
Get the current test execution state from the server
//Get the current statelet token = "xxxx";ws_client.getState(token).then(response => { console.log(response);})
Download the test reports and logs
//Download the test reports as an HTML index webpagelet formData = { token: "xxxx"}ws_client.download("./index.html", 0); //Download the test reports as a zip filelet formData = { token: "xxxx", file: "reports.zip"}ws_client.download(formData, "./reports.zip", 0); //Download the logs as a zip filelet formData = { token: "xxxx"}ws_client.download(formData, "./logs.zip", 1);
Delete the test case and the reports from the server
//Delete the test case and reportslet token = "xxxx";ws_client.deleteReport(token).then(response => { console.log(response);})
An example:
//Include the Client API libconst fs = require('fs');var { SideeXWebserviceClientAPI: wsclientAPI, ProtocalType } = require('sideex-webservice-client'); //Connect to a SideeX WebService serverlet ws_client = new wsclientAPI('http://127.0.0.1:50000/', ProtocalType.HTTP);let file = fs.createReadStream('testcase.zip');ws_client.runTestSuite(file).then(async(body) => { let token = JSON.parse(body).token; // get the token let flag = false; //Check the execution state every 2 seconds while (!flag) { //Get the current state state = await ws_client.getState(token); if (JSON.parse(state).webservice.state != "complete" && JSON.parse(state).webservice.state != "error") { console.log(JSON.parse(state).webservice.state); await delay(2000); } else if(JSON.parse(state).webservice.state == 'error') { console.log(JSON.parse(state).webservice.state); flag = true; } //If test is complete else { console.log(JSON.parse(state).webservice.state); let formData = { token: token, file: "reports.zip" } //Download the test report ws_client.download(formData, "./reports.zip", 0); formData = { token: token } //Download the logs ws_client.download(formData, "./logs.zip", 1); flag = true; //Delete the test case and report from the server ws_client.deleteReport(token).then(response => { console.log(response); }) } } }) async function delay(time) { await new Promise((resolve) => { setTimeout(resolve, time); });}