diff --git a/tools/serve/wave.py b/tools/serve/wave.py index ac601944de..53536684a8 100644 --- a/tools/serve/wave.py +++ b/tools/serve/wave.py @@ -27,6 +27,7 @@ def get_route_builder(aliases, config=None): data = load_manifest() from ..wave.wave_server import WaveServer wave_server = WaveServer() + configuration_file_path = os.path.join(wpt.localpaths.repo_root, "tools/wave/resources/testharnessreport.js") wave_server.initialize( configuration_file_path=os.path.abspath("./config.json"), reports_enabled=report, @@ -40,7 +41,6 @@ def __call__(self, request, response): response.content = json_string response.headers = [("Content-Type", "application/json")] return - wave_server.handle_request(request, response) web_root = "wave" diff --git a/tools/wave/test/WAVE Local.postman_environment.json b/tools/wave/test/WAVE Local.postman_environment.json new file mode 100644 index 0000000000..b1a6a089ab --- /dev/null +++ b/tools/wave/test/WAVE Local.postman_environment.json @@ -0,0 +1,34 @@ +{ + "id": "37be8ec4-7855-4554-867e-7a5d2a4f99e6", + "name": "WAVE Local", + "values": [ + { + "key": "host", + "value": "web-platform.test", + "enabled": true + }, + { + "key": "port", + "value": "8000", + "enabled": true + }, + { + "key": "protocol", + "value": "http", + "enabled": true + }, + { + "key": "web_root", + "value": "_wave", + "enabled": true + }, + { + "key": "device_timeout", + "value": "60000", + "enabled": true + } + ], + "_postman_variable_scope": "environment", + "_postman_exported_at": "2020-05-25T12:12:37.098Z", + "_postman_exported_using": "Postman/7.25.0" +} \ No newline at end of file diff --git a/tools/wave/test/WAVE Server REST API Tests.postman_collection.json b/tools/wave/test/WAVE Server REST API Tests.postman_collection.json new file mode 100644 index 0000000000..90410741f9 --- /dev/null +++ b/tools/wave/test/WAVE Server REST API Tests.postman_collection.json @@ -0,0 +1,8549 @@ +{ + "info": { + "_postman_id": "2b04a766-03c0-463c-b30c-f22d9d8e9c4c", + "name": "WAVE Server REST API Tests copy", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "Read Available Tests", + "item": [ + { + "name": "Read Available Tests", + "event": [ + { + "listen": "test", + "script": { + "id": "608b3a8c-3634-4d9a-8c07-2b4dc1dfab1e", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var availableTests = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(typeof availableTests).to.equal(\"object\");", + " for (var api of Object.keys(availableTests)) {", + " pm.expect(availableTests[api]).to.be.an.instanceof(Array);", + " var apiRegExp = new RegExp(\"^/\" + api, \"i\");", + " for (var test of availableTests[api]) {", + " pm.expect(test).to.match(apiRegExp);", + " }", + " }", + "});", + "", + "var includedTests = [];", + "var excludedTests = [];", + "var specialTimeoutTest = \"\";", + "", + "var apis = Object.keys(availableTests);", + "for(var api of apis) {", + " if (availableTests[api].length > 50) {", + " var subDirs = availableTests[api].map(test => test.split(\"/\").filter(part => !!part).join(\"/\").split(\"/\")[1]).reduce((acc, curr) => acc.indexOf(curr) === -1 ? acc.concat([curr]) : acc, []);", + " if (subDirs.length > 2) {", + " includedTests.push(\"/\" + api);", + " excludedTests.push(\"/\" + api + \"/\" + subDirs[0]);", + " specialTimeoutTest = availableTests[api][availableTests[api].length - 1];", + " break;", + " }", + " ", + " }", + "}", + "", + "pm.globals.set(\"available_tests\", availableTests);", + "pm.globals.set(\"included_tests\", JSON.stringify(includedTests));", + "pm.globals.set(\"excluded_tests\", JSON.stringify(excludedTests));", + "pm.globals.set(\"special_timeout_test\", specialTimeoutTest.replace(\".\", \"\"));" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Create and Read Sessions", + "item": [ + { + "name": "Start expiring session remove expiration date", + "item": [ + { + "name": "Create Session With Expiration", + "event": [ + { + "listen": "test", + "script": { + "id": "2ab4e66e-b6a7-4e79-9a46-b2ac2f16af5d", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "aef005b8-9855-412c-8ff4-1959469d2db7", + "exec": [ + "var expirationDate = Date.now() + 10000;", + "pm.globals.set(\"expiration_date\", expirationDate);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"expiration_date\": {{expiration_date}}\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "ca1b6868-f1ff-41c8-bec7-0871c9a94ab7", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"JSON structure contains expiration date\", function () {", + " pm.expect(jsonData).to.have.property(\"expiration_date\");", + "});", + "", + "var expirationDate = pm.globals.get(\"expiration_date\");", + "", + "pm.test(\"Expiration date is as specified\", function () {", + " pm.expect(Date.parse(jsonData.expiration_date)).to.equal(expirationDate);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + }, + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "8c99d522-e92c-420b-87a5-5c2a565cc9dc", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "34c53e9a-a7c8-4678-b2d3-3199c20efe20", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"JSON structure contains expiration date\", function () {", + " pm.expect(jsonData).to.have.property(\"expiration_date\");", + "});", + "", + "pm.test(\"Expiration date is null\", function () {", + " pm.expect(jsonData.expiration_date).to.be.null;", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + }, + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Read Public Sessions", + "item": [ + { + "name": "Read Public Sessions", + "event": [ + { + "listen": "test", + "script": { + "id": "ec18f0b9-39c5-41fb-8633-cb1773662e20", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Response is JSON Array\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.be.an.instanceof(Array);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/public", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "public" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Find Session", + "item": [ + { + "name": "Create Session No Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "88cff65f-8a2e-46b3-9901-031e53bf775c", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Find Session Token", + "event": [ + { + "listen": "prerequest", + "script": { + "id": "c1a32a7a-6cd8-4700-b727-94a81b4a53f4", + "exec": [ + "const token = pm.globals.get(\"session_token\");", + "pm.globals.set(\"session_token_fragment\", token.split(\"-\").shift());" + ], + "type": "text/javascript" + } + }, + { + "listen": "test", + "script": { + "id": "6469e6fc-f4e6-4fbc-bc3e-34257342047a", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const sessionToken = pm.globals.get(\"session_token\");", + "", + "pm.test(\"Found token is original token\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.token).to.equal(sessionToken);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token_fragment}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token_fragment}}" + ] + } + }, + "response": [] + }, + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Find Session Too Short Fragment", + "event": [ + { + "listen": "prerequest", + "script": { + "id": "59325d2d-8339-4daa-b597-3f29f53bbe94", + "exec": [ + "const token = pm.globals.get(\"session_token\");", + "pm.globals.set(\"session_token_fragment\", token.split(\"-\").shift());" + ], + "type": "text/javascript" + } + }, + { + "listen": "test", + "script": { + "id": "8797929f-8dbb-4f9a-8388-c824b3337be8", + "exec": [ + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/1234567", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "1234567" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Read Next Test", + "item": [ + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Invalid Session", + "event": [ + { + "listen": "test", + "script": { + "id": "6646fa5a-2ded-4c59-9688-34509fddd867", + "exec": [ + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Create Session \\w Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "e3fc1984-37db-4d16-a04c-b73e0b4b85b1", + "exec": [ + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "c7ffd5e4-a47e-49f3-9e7e-28110ab926c3", + "exec": [ + "var automaticTimeout = 120000;", + "var manualTimeout = 1000000;", + "var specialTimeout = 2000;", + "", + "pm.globals.set(\"automatic_timeout\", automaticTimeout);", + "pm.globals.set(\"manual_timeout\", manualTimeout);", + "pm.globals.set(\"special_timeout\", specialTimeout);", + "", + "const availableTests = pm.globals.get(\"available_tests\");", + "const test1 = availableTests[Object.keys(availableTests)[0]][0];", + "", + "pm.globals.set(\"single_test_1\", test1);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": [\"{{single_test_1}}\"]\n },\n \"types\": [\n \"automatic\"\n ]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Pending Session", + "event": [ + { + "listen": "test", + "script": { + "id": "649152eb-0b9f-43f3-a6e1-acd251050d07", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const nextTest = jsonData.next_test;", + "const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "", + "const web_root = pm.environment.get(\"web_root\");", + "", + "pm.test(\"Returned test is new session page\", function () {", + " pm.expect(test).to.equal(\"/\" + web_root + \"/newsession.html\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "863dbe9c-caf1-4f8c-b9c1-aa804ceefcdd", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Running Session", + "event": [ + { + "listen": "test", + "script": { + "id": "ce5e5fc2-d77f-4615-a7f9-0e93a2e7a793", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const nextTest = jsonData.next_test;", + "const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "const api = test.split(\"/\").filter(part => !!part)[0]", + "const availableTests = pm.globals.get(\"available_tests\")", + "", + "pm.test(\"Returned test is valid test\", function () {", + " pm.expect(availableTests).to.have.property(api);", + " pm.expect(availableTests[api]).to.contain(test)", + "});", + "", + "", + "setTimeout(function () {}, 1000);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Create Result", + "event": [ + { + "listen": "test", + "script": { + "id": "b8476ce2-1837-409f-a826-0aca5c25bbea", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"FAIL\",\n \"message\": \"Error message\"\n }\n ]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Completed Session", + "event": [ + { + "listen": "test", + "script": { + "id": "941bcc9c-ebb1-4399-95ad-47905b604c8b", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const nextTest = jsonData.next_test;", + "const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "", + "const web_root = pm.environment.get(\"web_root\");", + "", + "pm.test(\"Returned test is new session page\", function () {", + " pm.expect(test).to.equal(\"/\" + web_root + \"/finish.html\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Session \\w Configuration Copy", + "event": [ + { + "listen": "test", + "script": { + "id": "945b212c-614b-479e-83fd-2ad299aed26f", + "exec": [ + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "e182e675-f155-457c-9455-85ed3c4b526d", + "exec": [ + "var automaticTimeout = 120000;", + "var manualTimeout = 1000000;", + "var specialTimeout = 2000;", + "", + "pm.globals.set(\"automatic_timeout\", automaticTimeout);", + "pm.globals.set(\"manual_timeout\", manualTimeout);", + "pm.globals.set(\"special_timeout\", specialTimeout);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": {{included_tests}},\n \"exclude\": {{excluded_tests}}\n },\n \"types\": [\n \"automatic\"\n ],\n \"timeouts\": {\n \"automatic\": 1000\n },\n \"labels\": [\"label1\", \"label2\"]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "64e9863a-8071-4a53-9298-cc8cdaf87267", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Pause Session", + "event": [ + { + "listen": "test", + "script": { + "id": "6ac62d4b-6a92-4598-b7d7-f25b71b9827c", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "pause" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Aborted Session", + "event": [ + { + "listen": "test", + "script": { + "id": "1ab3492a-8795-4cbd-aac0-a29061c95daa", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const nextTest = jsonData.next_test;", + "const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "", + "const web_root = pm.environment.get(\"web_root\");", + "", + "pm.test(\"Returned test is new session page\", function () {", + " pm.expect(test).to.equal(\"/\" + web_root + \"/pause.html\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Stop Session", + "event": [ + { + "listen": "test", + "script": { + "id": "218c72ac-9406-4645-ae9a-36506758e3bd", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/stop", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "stop" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Aborted Session", + "event": [ + { + "listen": "test", + "script": { + "id": "2aa52f58-d2a0-4e86-b92d-7eeeba41d19b", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const nextTest = jsonData.next_test;", + "const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "", + "const web_root = pm.environment.get(\"web_root\");", + "", + "pm.test(\"Returned test is new session page\", function () {", + " pm.expect(test).to.equal(\"/\" + web_root + \"/finish.html\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Control Session", + "item": [ + { + "name": "Setup", + "item": [ + { + "name": "Create Session No Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "9d242d77-9940-4b8b-8b13-1935ca1b0654", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Pause Pending Session", + "item": [ + { + "name": "Pause Session", + "event": [ + { + "listen": "test", + "script": { + "id": "eeba781a-38b5-4e01-a5c1-573bdfa9b03e", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "pause" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "f02c9111-8f02-4ebc-a5dc-c4b1dfc9a125", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is pending\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"pending\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Start Pending Session", + "item": [ + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "e377e616-46d5-4632-9c12-10f6d246b45e", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "922ddce7-7d99-4193-b1a6-bc7ad3ce15fc", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "pm.test(\"Status is running\", function () {", + " pm.expect(jsonData.status).to.equal(\"running\");", + "});", + "", + "pm.test(\"Start date is set\", function () {", + " pm.expect(Date.parse(jsonData.date_started)).to.be.below(Date.now());", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Start Running Session", + "item": [ + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "cd7a8b17-ae76-4cf7-a8fb-7a193481a688", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "674fea47-bc48-45c6-985d-7f1c62794e46", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is running\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"running\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Pause Running Session", + "item": [ + { + "name": "Pause Session", + "event": [ + { + "listen": "test", + "script": { + "id": "a27e2006-bce5-41c9-9951-aa8c42b8ab7c", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "pause" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "ee8695dc-739e-4f3f-ad86-52b5f9f1fa67", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is paused\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"paused\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Pause Paused Session", + "item": [ + { + "name": "Pause Session", + "event": [ + { + "listen": "test", + "script": { + "id": "62885ee8-c6d7-4d0b-a0be-c7238053f2d8", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "pause" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "c85e707b-c9be-48f3-a178-f7d1e0f9c2ec", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is paused\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"paused\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Start Paused Session", + "item": [ + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "2abd45e3-d857-483f-8a1b-2ad3b0237187", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "0c9d83ed-9948-458e-8311-aa7fcc6a9b4f", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is running\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"running\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Stop Running Session", + "item": [ + { + "name": "Stop Session", + "event": [ + { + "listen": "test", + "script": { + "id": "9d0618ac-1761-436e-9d12-6007f78fb32d", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/stop", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "stop" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "65932461-470d-40b0-a7a8-aeaaeddf774c", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "pm.test(\"Status is aborted\", function () {", + " pm.expect(jsonData.status).to.equal(\"aborted\");", + "});", + "", + "pm.test(\"Finish date is set\", function () {", + " pm.expect(Date.parse(jsonData.date_finished)).to.be.below(Date.now());", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Stop Aborted Session", + "item": [ + { + "name": "Stop Session", + "event": [ + { + "listen": "test", + "script": { + "id": "b3c6232c-5e22-4655-8517-a686f983a861", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/stop", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "stop" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "8af81a56-241f-46a7-bb07-10998da8d586", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is aborted\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"aborted\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "33943c48-2819-4c95-8392-6d7c50ae2c1f", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "cb67a05d-1cbf-44b5-8f3c-67c82f404979", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Start Aborted Session", + "item": [ + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "1064a0a2-5484-40f3-ad33-92f38b2daa41", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "f1225a7c-71b1-409d-b206-b1f37e5c99fb", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is aborted\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"aborted\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "c55ca22a-2131-4a16-ba5d-e6ede45a6e99", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "03f8bdf7-d6d5-4154-93f3-a12e671d25b4", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Pause Aborted Session", + "item": [ + { + "name": "Pause Session", + "event": [ + { + "listen": "test", + "script": { + "id": "3831c150-823f-4bb2-a7e0-5f8177fd0388", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "pause" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "fc995304-5163-46b2-b018-ce353de1b039", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is aborted\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"aborted\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "91b123d4-eefc-4a5e-a860-5095c07b7c00", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "acf832ff-72f3-42dd-b2bb-b7c29b0d346e", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Setup", + "item": [ + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Session No Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "30db596a-cfa1-4e63-819f-b59e6ee90746", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "571133f2-1718-46f1-a033-2909c4a1bd7e", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "f7d5f824-4f26-4281-b24c-507f79d73fc2", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Stop Pending Session", + "item": [ + { + "name": "Stop Session", + "event": [ + { + "listen": "test", + "script": { + "id": "5515e97c-e30e-4d17-9e63-66063ca7d3e2", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/stop", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "stop" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "9c8754d0-d355-4061-b7f8-e73969888c8f", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is aborted\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"aborted\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Setup", + "item": [ + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Session No Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "433021ef-452b-4251-b1cb-468e4d47511f", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "b346ed4e-4ef0-43ea-ad02-9fbc47568283", + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Pause Session", + "event": [ + { + "listen": "test", + "script": { + "id": "cfb56899-01a4-42bc-afc8-ac0b0a2202c6", + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "pause" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "06a0b032-e87e-4dd8-8455-b07ff253c648", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "e19b3a10-76cb-450d-bec4-9ddf020e3259", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Stop Paused Session Copy", + "item": [ + { + "name": "Stop Session", + "event": [ + { + "listen": "test", + "script": { + "id": "6e01daab-000e-44c8-ad7c-a755831e90ad", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/stop", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "stop" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "3794ee0b-d052-45f5-adf8-ce74b0a0bd68", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is aborted\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"aborted\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "f7eccd4c-7c17-4e63-b7ad-f02e0ef7d80d", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "7bb01274-45e9-4b89-976b-bb5d2e1c15eb", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Setup", + "item": [ + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Session One Test", + "event": [ + { + "listen": "test", + "script": { + "id": "cb09d270-98d3-4c13-b13e-d0f45f245000", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "0385fd8c-5ef8-40c3-bd0b-746dc70341f7", + "exec": [ + "const availableTests = pm.globals.get(\"available_tests\");", + "const test = availableTests[Object.keys(availableTests)[0]][0]", + "", + "pm.globals.set(\"single_test\", test);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": [\"{{single_test}}\"]\n }\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "f0523c09-ffcf-4a22-a3cc-a63b82975cdc", + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "7f8dd644-1421-42d4-a54a-0863133b3874", + "exec": [ + "const response = pm.response.json();", + "const nextTest = response.next_test;", + "pm.globals.set(\"current_test_url\", nextTest);", + "if (!nextTest) return;", + "const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "pm.globals.set(\"current_test\", test);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Create Result", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"FAIL\",\n \"message\": \"Error message\"\n }\n ]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "c284d9b5-436c-443c-b1c8-f3d48ce2b59a", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "30b682a8-91af-4ce6-bb27-5a2f8b6cec0c", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Start Completed Session", + "item": [ + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "41b1d729-a3eb-4d90-842c-cc4e00d3c8b6", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "6b53a194-f94a-44b3-a644-c7592f8832ff", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is completed\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"completed\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Pause Completed Session", + "item": [ + { + "name": "Pause Session", + "event": [ + { + "listen": "test", + "script": { + "id": "08c69e7a-db99-4dbd-8021-06111c3e0cbf", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "pause" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "29a4289e-2597-4f15-b317-9d1634b27fb5", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is completed\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"completed\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Stop Completed Session", + "item": [ + { + "name": "Stop Session", + "event": [ + { + "listen": "test", + "script": { + "id": "4447cea8-62d6-4549-8e1f-5b4daabd2b0d", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/stop", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "stop" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "f6edcb95-cc27-4af3-b027-0eebd1b2c53d", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is completed\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"completed\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Clean Up", + "item": [ + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Update and Read Sessions", + "item": [ + { + "name": "Create Default", + "item": [ + { + "name": "Create Session No Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "34956787-7416-444c-a723-d1e8b83ad214", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "9644396e-5f89-4709-b065-7996043fae61", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"tests\");", + " pm.expect(typeof jsonData.tests).to.equal(\"object\");", + " pm.expect(jsonData.tests).to.have.property(\"include\");", + " pm.expect(jsonData.tests.include).to.be.an.instanceof(Array);", + " pm.expect(jsonData.tests).to.have.property(\"exclude\");", + " pm.expect(jsonData.tests.exclude).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"types\");", + " pm.expect(jsonData.types).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"user_agent\");", + " pm.expect(typeof jsonData.user_agent).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"timeouts\");", + " pm.expect(typeof jsonData.timeouts).to.equal(\"object\")", + " pm.expect(jsonData.timeouts).to.have.property(\"automatic\");", + " pm.expect(typeof jsonData.timeouts.automatic).to.equal(\"number\");", + " pm.expect(jsonData.timeouts).to.have.property(\"manual\");", + " pm.expect(typeof jsonData.timeouts.manual).to.equal(\"number\");", + " pm.expect(jsonData).to.have.property(\"browser\");", + " pm.expect(typeof jsonData.browser).to.equal(\"object\");", + " pm.expect(jsonData.browser).to.have.property(\"name\");", + " pm.expect(typeof jsonData.browser.name).to.equal(\"string\");", + " pm.expect(jsonData.browser).to.have.property(\"version\");", + " pm.expect(typeof jsonData.browser.version).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"reference_tokens\");", + " pm.expect(jsonData.reference_tokens).to.be.an.instanceof(Array);", + "});", + "", + "pm.test(\"Configuration is default\", function () {", + " pm.expect(jsonData.token).to.match(tokenRegex);", + " pm.expect(jsonData.tests.include).to.include(\"/\");", + " pm.expect(jsonData.types).to.include(\"automatic\");", + " pm.expect(jsonData.types).to.include(\"manual\");", + " pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");", + " pm.expect(jsonData.timeouts.automatic).to.equal(60000);", + " pm.expect(jsonData.timeouts.manual).to.equal(300000);", + " pm.expect(jsonData.browser.name).to.equal(\"Other\");", + " pm.expect(jsonData.browser.version).to.equal(\"0\");", + " pm.expect(jsonData.is_public).to.equal(false);", + " pm.expect(jsonData.reference_tokens).to.be.empty;", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "ed044870-1b09-4d9b-a840-451605f7cbf2", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"status\");", + " pm.expect(typeof jsonData.status).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"expiration_date\");", + " pm.expect(jsonData.expiration_date).to.be.null;", + " pm.expect(jsonData).to.have.property(\"date_started\");", + " pm.expect(jsonData.date_started).to.satisfy(value => !value || typeof value === \"number\");", + " pm.expect(jsonData).to.have.property(\"date_finished\");", + " pm.expect(jsonData.date_finished).to.satisfy(value => !value || typeof value === \"number\");", + "});", + "", + "pm.test(\"Session status is pending\", function () {", + " pm.expect(jsonData.status).to.equal(\"pending\");", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + }, + { + "name": "Read Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "4726dee6-87f2-4868-9dcd-66ae6f5622b1", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"pending_tests\");", + " pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");", + " pm.expect(jsonData).to.have.property(\"running_tests\");", + " pm.expect(typeof jsonData.running_tests).to.equal(\"object\");", + "});", + "", + "pm.test(\"All tests are pending tests\", function () {", + " pm.expect(Object.keys(jsonData.pending_tests)).to.not.have.lengthOf(0);", + " pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(0);", + "})", + "", + "const availableTests = pm.globals.get(\"available_tests\"); ", + "", + "pm.test(\"All available tests are part of the session\", function () {", + " for (var api of Object.keys(jsonData.pending_tests)) {", + " for (var test of jsonData.pending_tests[api]) {", + " pm.expect(availableTests[api]).to.include(test);", + " }", + " }", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "e312248f-9b01-485d-b639-6cf9784520b7", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "1a6ac1a6-20ad-4878-ab47-f6dbf6dc37ab", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Update With Configuration", + "item": [ + { + "name": "Update Session", + "event": [ + { + "listen": "test", + "script": { + "id": "03526e69-28e2-4865-adfe-084bd1e43911", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "fff4c50d-04a4-4f33-9575-b0b9b584c14f", + "exec": [ + "var automaticTimeout = 120000;", + "var manualTimeout = 1000000;", + "var specialTimeout = 2000;", + "", + "pm.globals.set(\"automatic_timeout\", automaticTimeout);", + "pm.globals.set(\"manual_timeout\", manualTimeout);", + "pm.globals.set(\"special_timeout\", specialTimeout);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": {{included_tests}},\n \"exclude\": {{excluded_tests}}\n },\n \"types\": [\n \"automatic\"\n ],\n \"timeouts\": {\n \"automatic\": {{automatic_timeout}},\n \"manual\": {{manual_timeout}},\n \"{{special_timeout_test}}\": {{special_timeout}}\n }\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "d53ec4a9-ec6b-4c8e-9dd2-97f5939511e8", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"tests\");", + " pm.expect(typeof jsonData.tests).to.equal(\"object\");", + " pm.expect(jsonData.tests).to.have.property(\"include\");", + " pm.expect(jsonData.tests.include).to.be.an.instanceof(Array);", + " pm.expect(jsonData.tests).to.have.property(\"exclude\");", + " pm.expect(jsonData.tests.exclude).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"types\");", + " pm.expect(jsonData.types).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"user_agent\");", + " pm.expect(typeof jsonData.user_agent).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"timeouts\");", + " pm.expect(typeof jsonData.timeouts).to.equal(\"object\")", + " pm.expect(jsonData.timeouts).to.have.property(\"automatic\");", + " pm.expect(typeof jsonData.timeouts.automatic).to.equal(\"number\");", + " pm.expect(jsonData.timeouts).to.have.property(\"manual\");", + " pm.expect(typeof jsonData.timeouts.manual).to.equal(\"number\");", + " pm.expect(jsonData).to.have.property(\"browser\");", + " pm.expect(typeof jsonData.browser).to.equal(\"object\");", + " pm.expect(jsonData.browser).to.have.property(\"name\");", + " pm.expect(typeof jsonData.browser.name).to.equal(\"string\");", + " pm.expect(jsonData.browser).to.have.property(\"version\");", + " pm.expect(typeof jsonData.browser.version).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"reference_tokens\");", + " pm.expect(jsonData.reference_tokens).to.be.an.instanceof(Array);", + "});", + "", + "var includedTests = JSON.parse(pm.globals.get(\"included_tests\"));", + "var excludedTests = JSON.parse(pm.globals.get(\"excluded_tests\"));", + "var automaticTimeout = pm.globals.get(\"automatic_timeout\");", + "var manualTimeout = pm.globals.get(\"manual_timeout\");", + "var specialTimeout = pm.globals.get(\"special_timeout\");", + "var specialTimeoutTest = pm.globals.get(\"special_timeout_test\");", + "", + "pm.test(\"Configuration is as specified\", function () {", + " pm.expect(jsonData.token).to.match(tokenRegex);", + " for (var test of includedTests) {", + " pm.expect(jsonData.tests.include).to.include(test);", + " }", + " for (var test of excludedTests) {", + " pm.expect(jsonData.tests.exclude).to.include(test);", + " }", + " pm.expect(jsonData.types).to.include(\"automatic\");", + " pm.expect(jsonData.types).to.not.include(\"manual\");", + " pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");", + " pm.expect(jsonData.timeouts.automatic).to.equal(automaticTimeout);", + " pm.expect(jsonData.timeouts.manual).to.equal(manualTimeout);", + " pm.expect(jsonData.timeouts[specialTimeoutTest]).to.equal(specialTimeout);", + " pm.expect(jsonData.browser.name).to.equal(\"Other\");", + " pm.expect(jsonData.browser.version).to.equal(\"0\");", + " pm.expect(jsonData.is_public).to.equal(false);", + " pm.expect(jsonData.reference_tokens).to.be.empty;", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "273b0b34-67d7-42af-87d4-c0980befad27", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"pending_tests\");", + " pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");", + " pm.expect(jsonData).to.have.property(\"running_tests\");", + " pm.expect(typeof jsonData.running_tests).to.equal(\"object\");", + "});", + "", + "pm.test(\"All tests are pending tests\", function () {", + " pm.expect(Object.keys(jsonData.pending_tests)).to.not.have.lengthOf(0);", + " pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(0);", + "})", + "", + "const availableTests = pm.globals.get(\"available_tests\");", + "const includedTests = pm.globals.get(\"included_tests\");", + "const excludedTests = pm.globals.get(\"excluded_tests\");", + "", + "pm.test(\"Selected subset of tests are part of the session\", function () {", + " for (var api of Object.keys(jsonData.pending_tests)) {", + " for (var includedTest of includedTests) {", + " if (includedTest.split(\"/\").find(part => !!part) === api) {", + " var includeRegExp = new RegExp(\"^\" + includedTest, \"i\");", + " for (var test of jsonData.pending_tests[api]) {", + " pm.expect(test).to.match(regex);", + " }", + " break;", + " }", + " }", + " for (var excludedTest of excludedTests) {", + " if (excludedTest.split(\"/\").find(part => !!part) === api) {", + " var excludeRegExp = new RegExp(\"^\" + excludedTest, \"i\");", + " for (var test of jsonData.pending_tests[api]) {", + " pm.expect(test).to.not.match(regex);", + " }", + " break;", + " }", + " }", + " }", + "});", + "", + "const sessionTests = jsonData.pending_tests;", + "", + "pm.globals.set(\"session_tests\", JSON.stringify(sessionTests));" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "22044e18-5840-433f-8a70-f5a56d9cda4e", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"status\");", + " pm.expect(typeof jsonData.status).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"expiration_date\");", + " pm.expect(jsonData.expiration_date).to.be.null;", + " pm.expect(jsonData).to.have.property(\"date_started\");", + " pm.expect(jsonData.date_started).to.satisfy(value => !value || typeof value === \"number\");", + " pm.expect(jsonData).to.have.property(\"date_finished\");", + " pm.expect(jsonData.date_finished).to.satisfy(value => !value || typeof value === \"number\");", + "});", + "", + "pm.test(\"Session status is pending\", function () {", + " pm.expect(jsonData.status).to.equal(\"pending\");", + "})", + "", + "pm.test(\"Start and Finish date not set\", function () {", + " pm.expect(jsonData.date_started).to.be.null;", + " pm.expect(jsonData.date_finished).to.be.null;", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + }, + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "4cd87abf-63fa-4c4f-bf17-3f6fbc77ad7f", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "6bffdb9e-8d7e-4758-b06d-b801557f4b21", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Update Session Labels", + "item": [ + { + "name": "Create Session \\w Configuration Copy", + "event": [ + { + "listen": "test", + "script": { + "id": "786257f8-82c0-4ae2-9ec3-03ba11321308", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "a248fad7-1337-4f67-87b4-3ee2fccdd06a", + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"labels\": [\"label1\", \"label2\"]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "04aa66c6-b353-483a-b4df-41a9ade26cc1", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"tests\");", + " pm.expect(typeof jsonData.tests).to.equal(\"object\");", + " pm.expect(jsonData.tests).to.have.property(\"include\");", + " pm.expect(jsonData.tests.include).to.be.an.instanceof(Array);", + " pm.expect(jsonData.tests).to.have.property(\"exclude\");", + " pm.expect(jsonData.tests.exclude).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"types\");", + " pm.expect(jsonData.types).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"user_agent\");", + " pm.expect(typeof jsonData.user_agent).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"timeouts\");", + " pm.expect(typeof jsonData.timeouts).to.equal(\"object\")", + " pm.expect(jsonData.timeouts).to.have.property(\"automatic\");", + " pm.expect(typeof jsonData.timeouts.automatic).to.equal(\"number\");", + " pm.expect(jsonData.timeouts).to.have.property(\"manual\");", + " pm.expect(typeof jsonData.timeouts.manual).to.equal(\"number\");", + " pm.expect(jsonData).to.have.property(\"browser\");", + " pm.expect(typeof jsonData.browser).to.equal(\"object\");", + " pm.expect(jsonData.browser).to.have.property(\"name\");", + " pm.expect(typeof jsonData.browser.name).to.equal(\"string\");", + " pm.expect(jsonData.browser).to.have.property(\"version\");", + " pm.expect(typeof jsonData.browser.version).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"reference_tokens\");", + " pm.expect(jsonData.reference_tokens).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"labels\");", + " pm.expect(jsonData.labels).to.be.an.instanceof(Array);", + "});", + "", + "pm.test(\"Configuration is default\", function () {", + " pm.expect(jsonData.token).to.match(tokenRegex);", + " pm.expect(jsonData.tests.include).to.include(\"/\");", + " pm.expect(jsonData.types).to.include(\"automatic\");", + " pm.expect(jsonData.types).to.include(\"manual\");", + " pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");", + " pm.expect(jsonData.timeouts.automatic).to.equal(60000);", + " pm.expect(jsonData.timeouts.manual).to.equal(300000);", + " pm.expect(jsonData.browser.name).to.equal(\"Other\");", + " pm.expect(jsonData.browser.version).to.equal(\"0\");", + " pm.expect(jsonData.is_public).to.equal(false);", + " pm.expect(jsonData.reference_tokens).to.be.empty;", + " pm.expect(jsonData.labels).to.include(\"label1\");", + " pm.expect(jsonData.labels).to.include(\"label2\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Update Labels Copy", + "event": [ + { + "listen": "test", + "script": { + "id": "e84b914e-3d24-49da-8805-77771450713a", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"labels\": [\"new\", \"labels\"]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/labels", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "labels" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "9f8b2d5b-2736-4a6d-aab9-47edc3cc8a16", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"tests\");", + " pm.expect(typeof jsonData.tests).to.equal(\"object\");", + " pm.expect(jsonData.tests).to.have.property(\"include\");", + " pm.expect(jsonData.tests.include).to.be.an.instanceof(Array);", + " pm.expect(jsonData.tests).to.have.property(\"exclude\");", + " pm.expect(jsonData.tests.exclude).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"types\");", + " pm.expect(jsonData.types).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"user_agent\");", + " pm.expect(typeof jsonData.user_agent).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"timeouts\");", + " pm.expect(typeof jsonData.timeouts).to.equal(\"object\")", + " pm.expect(jsonData.timeouts).to.have.property(\"automatic\");", + " pm.expect(typeof jsonData.timeouts.automatic).to.equal(\"number\");", + " pm.expect(jsonData.timeouts).to.have.property(\"manual\");", + " pm.expect(typeof jsonData.timeouts.manual).to.equal(\"number\");", + " pm.expect(jsonData).to.have.property(\"browser\");", + " pm.expect(typeof jsonData.browser).to.equal(\"object\");", + " pm.expect(jsonData.browser).to.have.property(\"name\");", + " pm.expect(typeof jsonData.browser.name).to.equal(\"string\");", + " pm.expect(jsonData.browser).to.have.property(\"version\");", + " pm.expect(typeof jsonData.browser.version).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"reference_tokens\");", + " pm.expect(jsonData.reference_tokens).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"labels\");", + " pm.expect(jsonData.labels).to.be.an.instanceof(Array);", + "});", + "", + "pm.test(\"Configuration is default\", function () {", + " pm.expect(jsonData.token).to.match(tokenRegex);", + " pm.expect(jsonData.tests.include).to.include(\"/\");", + " pm.expect(jsonData.types).to.include(\"automatic\");", + " pm.expect(jsonData.types).to.include(\"manual\");", + " pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");", + " pm.expect(jsonData.timeouts.automatic).to.equal(60000);", + " pm.expect(jsonData.timeouts.manual).to.equal(300000);", + " pm.expect(jsonData.browser.name).to.equal(\"Other\");", + " pm.expect(jsonData.browser.version).to.equal(\"0\");", + " pm.expect(jsonData.is_public).to.equal(false);", + " pm.expect(jsonData.reference_tokens).to.be.empty;", + " pm.expect(jsonData.labels).to.include(\"new\");", + " pm.expect(jsonData.labels).to.include(\"labels\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Delete Session", + "item": [ + { + "name": "Setup", + "item": [ + { + "name": "Create Session No Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "f837f4b2-dca3-491c-bfc3-29312003117e", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Delete Session", + "event": [ + { + "listen": "test", + "script": { + "id": "6a3b62ed-7e28-47d2-ae43-598ede9be9f7", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "a527d983-d14a-4c22-8392-c8569ea4dff4", + "exec": [ + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Create and Read Results", + "item": [ + { + "name": "Create Session", + "item": [ + { + "name": "Create Session Two Tests", + "event": [ + { + "listen": "test", + "script": { + "id": "a1a9d8fc-27b3-4dcd-a36d-b6ac0a6efa3f", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "f2cf7cd6-8bb6-49e7-a3f8-f08b0fd80bd9", + "exec": [ + "const availableTests = pm.globals.get(\"available_tests\");", + "const test1 = availableTests[Object.keys(availableTests)[0]][0];", + "const test2 = availableTests[Object.keys(availableTests)[1]][0];", + "", + "pm.globals.set(\"single_test_1\", test1);", + "pm.globals.set(\"single_test_2\", test2);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": [\"{{single_test_1}}\", \"{{single_test_2}}\"]\n }\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "09851acd-d5d7-4bab-b25f-fde4727bec25", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Results", + "event": [ + { + "listen": "test", + "script": { + "id": "c244a0a2-39a5-48d8-b789-9560cfd30520", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Responds with no results\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(typeof jsonData).to.equal(\"object\");", + " pm.expect(Object.keys(jsonData)).to.be.empty;", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}" + ], + "query": [ + { + "key": "path", + "value": "/2dcontext/drawing-images-to-the-canvas", + "disabled": true + }, + { + "key": "path", + "value": "/2dcontext/conformance-requirements", + "disabled": true + }, + { + "key": "path", + "value": "/2dcontext/conformance-requirements/2d.missingargs.html", + "disabled": true + } + ] + } + }, + "response": [] + }, + { + "name": "Read Results Compact", + "event": [ + { + "listen": "test", + "script": { + "id": "0a581609-4bd1-43c3-961b-b6ee9324f97e", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var singleTest1 = pm.globals.get(\"single_test_1\");", + "var singleTest2 = pm.globals.get(\"single_test_2\");", + "", + "var api1 = singleTest1.split(\"/\").find(part => !!part);", + "var api2 = singleTest2.split(\"/\").find(part => !!part);", + "", + "pm.test(\"Responds with no results\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(typeof jsonData).to.equal(\"object\");", + " pm.expect(jsonData).to.have.property(api1);", + " pm.expect(jsonData).to.have.property(api2);", + " pm.expect(jsonData[api1].complete).to.equal(0);", + " pm.expect(jsonData[api2].complete).to.equal(0);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/compact", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "compact" + ] + } + }, + "response": [] + }, + { + "name": "Read Last Completed Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "36dd3d71-98fc-4ea4-a3e0-47e4df9099e7", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + " ", + "pm.test(\"JSON format is as expected\", function () {", + " pm.expect(Object.keys(jsonData)).to.have.lengthOf(3);", + " pm.expect(jsonData).to.have.property(\"pass\");", + " pm.expect(jsonData).to.have.property(\"fail\");", + " pm.expect(jsonData).to.have.property(\"timeout\");", + " for (var key of Object.keys(jsonData)) {", + " pm.expect(jsonData[key]).to.be.an.instanceof(Array);", + " }", + "});", + "", + "pm.test(\"Responds with no last completed tests\", function () {", + " for (var key of Object.keys(jsonData)) {", + " pm.expect(jsonData[key]).to.be.empty;", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/last_completed", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "last_completed" + ] + } + }, + "response": [] + }, + { + "name": "Read Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "c40cf178-a7d2-4b37-b24e-828b406acff7", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"pending_tests\");", + " pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");", + " pm.expect(jsonData).to.have.property(\"running_tests\");", + " pm.expect(typeof jsonData.running_tests).to.equal(\"object\");", + "});", + "", + "const sessionTests = jsonData.pending_tests;", + "", + "pm.globals.set(\"session_tests\", JSON.stringify(sessionTests));" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Create First Result", + "item": [ + { + "name": "Read Next Test of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "82d6a346-4d8e-4f32-a5b0-ead56ae3b27e", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const response = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(Object.keys(response)).to.have.lengthOf(1);", + " pm.expect(response).to.have.property(\"next_test\");", + " pm.expect(typeof response.next_test).to.equal(\"string\");", + "});", + "", + "const nextTest = response.next_test;", + "pm.globals.set(\"current_test_url\", nextTest);", + "if (!nextTest) return;", + "const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "pm.globals.set(\"current_test\", test);", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "", + "pm.test(\"Returned test is first of two specified tests\", function () {", + " pm.expect(test).to.equal(test1);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Read Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "0598bcd8-783a-42ff-863c-95ab996a4704", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"pending_tests\");", + " pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");", + " pm.expect(jsonData).to.have.property(\"running_tests\");", + " pm.expect(typeof jsonData.running_tests).to.equal(\"object\");", + "});", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "const test2 = pm.globals.get(\"single_test_2\");", + "", + "pm.test(\"One test is pending, one test is running\", function () {", + " pm.expect(Object.keys(jsonData.pending_tests)).to.have.lengthOf(1);", + " var api = Object.keys(jsonData.pending_tests)[0];", + " pm.expect(jsonData.pending_tests[api]).to.have.lengthOf(1);", + " pm.expect(jsonData.pending_tests[api]).to.include(test2);", + " pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(1);", + " api = Object.keys(jsonData.running_tests)[0];", + " pm.expect(jsonData.running_tests[api]).to.have.lengthOf(1);", + " pm.expect(jsonData.running_tests[api]).to.include(test1);", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Result", + "event": [ + { + "listen": "test", + "script": { + "id": "b08e6e8b-654f-4081-83e7-64c9895136f9", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"FAIL\",\n \"message\": \"Error message\"\n }\n ]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "192cf985-2592-44be-aa7c-bc6bec27c5bf", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"pending_tests\");", + " pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");", + " pm.expect(jsonData).to.have.property(\"running_tests\");", + " pm.expect(typeof jsonData.running_tests).to.equal(\"object\");", + "});", + "", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "const test2 = pm.globals.get(\"single_test_2\");", + "", + "pm.test(\"One test is pending, one test is completed\", function () {", + " pm.expect(Object.keys(jsonData.pending_tests)).to.have.lengthOf(1);", + " var api = Object.keys(jsonData.pending_tests)[0];", + " pm.expect(jsonData.pending_tests[api]).to.have.lengthOf(1);", + " pm.expect(jsonData.pending_tests[api]).to.include(test2);", + " pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(0);", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "519da203-1344-4015-923f-d0d75af54f83", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"status\");", + " pm.expect(typeof jsonData.status).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"expiration_date\");", + " pm.expect(jsonData.expiration_date).to.be.null;", + " pm.expect(jsonData).to.have.property(\"date_started\");", + " pm.expect(jsonData).to.have.property(\"date_finished\");", + "});", + "", + "pm.test(\"Session status is running\", function () {", + " pm.expect(jsonData.status).to.equal(\"running\");", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + }, + { + "name": "Read Last Completed Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "e0197b6b-db5a-420c-99cb-d31a989d26e1", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + " ", + "pm.test(\"JSON format is as expected\", function () {", + " pm.expect(Object.keys(jsonData)).to.have.lengthOf(3);", + " pm.expect(jsonData).to.have.property(\"pass\");", + " pm.expect(jsonData).to.have.property(\"fail\");", + " pm.expect(jsonData).to.have.property(\"timeout\");", + " for (var key of Object.keys(jsonData)) {", + " pm.expect(jsonData[key]).to.be.an.instanceof(Array);", + " }", + "});", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "", + "pm.test(\"Responds with one last completed tests as failed\", function () {", + " pm.expect(jsonData[\"pass\"]).to.be.empty;", + " pm.expect(jsonData[\"fail\"]).to.have.lengthOf(1);", + " pm.expect(jsonData[\"fail\"][0]).to.equal(test1);", + " pm.expect(jsonData[\"timeout\"]).to.be.empty;", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/last_completed", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "last_completed" + ] + } + }, + "response": [] + }, + { + "name": "Read Results", + "event": [ + { + "listen": "test", + "script": { + "id": "120e1532-1ff2-4ec3-bd20-3731902849f2", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON format is as expected\", function () {", + " for (var api of Object.keys(jsonData)) {", + " pm.expect(jsonData[api]).to.be.an.instanceof(Array);", + " for (var result of jsonData[api]) {", + " pm.expect(typeof result).to.equal(\"object\");", + " pm.expect(Object.keys(result)).to.have.lengthOf(4);", + " pm.expect(result).to.have.property(\"test\");", + " pm.expect(typeof result.test).to.equal(\"string\");", + " pm.expect(result).to.have.property(\"status\");", + " pm.expect(typeof result.status).to.equal(\"string\");", + " pm.expect(result).to.have.property(\"message\");", + " pm.expect(result.message).to.satisfy(message => !message || typeof message === \"string\");", + " pm.expect(result).to.have.property(\"subtests\");", + " pm.expect(result.subtests).to.be.an.instanceof(Array);", + " for (var subtest of result.subtests) {", + " pm.expect(typeof subtest).to.equal(\"object\");", + " pm.expect(Object.keys(subtest)).to.have.lengthOf(3);", + " pm.expect(subtest).to.have.property(\"name\");", + " pm.expect(typeof subtest.name).to.equal(\"string\");", + " pm.expect(subtest).to.have.property(\"status\");", + " pm.expect(typeof subtest.status).to.equal(\"string\");", + " pm.expect(subtest).to.have.property(\"message\");", + " pm.expect(subtest.message).to.satisfy(message => !message || typeof message === \"string\");", + " }", + " }", + " }", + "});", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "", + "pm.test(\"Test is first test, successful run and failed\", function () {", + " var api = Object.keys(jsonData)[0];", + " pm.expect(api).to.equal(test1.split(\"/\").find(part => !!part))", + " var result = jsonData[api][0];", + " pm.expect(result.test).to.equal(test1);", + " pm.expect(result.status).to.equal(\"OK\");", + " pm.expect(result.message).to.be.null;", + " var subtest = result.subtests[0];", + " pm.expect(subtest.status).to.equal(\"FAIL\");", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}" + ], + "query": [ + { + "key": "path", + "value": "/2dcontext/drawing-images-to-the-canvas", + "disabled": true + }, + { + "key": "path", + "value": "/2dcontext/conformance-requirements", + "disabled": true + }, + { + "key": "path", + "value": "/2dcontext/conformance-requirements/2d.missingargs.html", + "disabled": true + } + ] + } + }, + "response": [] + }, + { + "name": "Read Results Compact", + "event": [ + { + "listen": "test", + "script": { + "id": "47edd044-bcae-4df1-b53d-497a99a3c35e", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(typeof jsonData).to.equal(\"object\");", + " for (var api of Object.keys(jsonData)) {", + " pm.expect(jsonData[api]).to.have.property(\"pass\");", + " pm.expect(typeof jsonData[api].pass).to.equal(\"number\");", + " pm.expect(jsonData[api]).to.have.property(\"fail\");", + " pm.expect(typeof jsonData[api].fail).to.equal(\"number\");", + " pm.expect(jsonData[api]).to.have.property(\"timeout\");", + " pm.expect(typeof jsonData[api].timeout).to.equal(\"number\");", + " pm.expect(jsonData[api]).to.have.property(\"not_run\");", + " pm.expect(typeof jsonData[api].not_run).to.equal(\"number\");", + " }", + "})", + "", + "pm.test(\"Responds with one test failed\", function () {", + " var api = Object.keys(jsonData)[0];", + " pm.expect(jsonData[api].pass).to.equal(0);", + " pm.expect(jsonData[api].fail).to.equal(1);", + " pm.expect(jsonData[api].timeout).to.equal(0);", + " pm.expect(jsonData[api].not_run).to.equal(0);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/compact", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "compact" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Create Last Result", + "item": [ + { + "name": "Read Next Test of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "a9104f54-e80f-48db-a2e3-31c06a82ac1a", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const response = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(Object.keys(response)).to.have.lengthOf(1);", + " pm.expect(response).to.have.property(\"next_test\");", + " pm.expect(typeof response.next_test).to.equal(\"string\");", + "});", + "", + "const nextTest = response.next_test;", + "pm.globals.set(\"current_test_url\", nextTest);", + "if (!nextTest) return;", + "const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "pm.globals.set(\"current_test\", test);", + "", + "const test2 = pm.globals.get(\"single_test_2\");", + "", + "pm.test(\"Returned test is second of two specified tests\", function () {", + " pm.expect(test).to.equal(test2);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Read Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "dd72c2ca-e211-4a17-ab60-894ca8b901f1", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"pending_tests\");", + " pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");", + " pm.expect(jsonData).to.have.property(\"running_tests\");", + " pm.expect(typeof jsonData.running_tests).to.equal(\"object\");", + "});", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "const test2 = pm.globals.get(\"single_test_2\");", + "", + "pm.test(\"One test is running\", function () {", + " pm.expect(Object.keys(jsonData.pending_tests)).to.have.lengthOf(0);", + " pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(1);", + " var api = Object.keys(jsonData.running_tests)[0];", + " pm.expect(jsonData.running_tests[api]).to.have.lengthOf(1);", + " pm.expect(jsonData.running_tests[api]).to.include(test2);", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Result", + "event": [ + { + "listen": "test", + "script": { + "id": "f44c5002-096e-4a45-a2c5-9d5fd34704f1", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"PASS\",\n \"message\": \"Error message\"\n }\n ]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "6b53720f-8ea1-4329-9e66-eb3f12500de3", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"status\");", + " pm.expect(typeof jsonData.status).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"expiration_date\");", + " pm.expect(jsonData.expiration_date).to.be.null;", + " pm.expect(jsonData).to.have.property(\"date_started\");", + " pm.expect(jsonData).to.have.property(\"date_finished\");", + "});", + "", + "pm.test(\"Session status is completed\", function () {", + " pm.expect(jsonData.status).to.equal(\"completed\");", + "})", + "", + "pm.test(\"Finish date is set\", function () {", + " pm.expect(Date.parse(jsonData.date_finished)).to.be.below(Date.now());", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + }, + { + "name": "Read Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "a01a8be7-2ca7-487a-9e98-536bf1afe6f9", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"pending_tests\");", + " pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");", + " pm.expect(jsonData).to.have.property(\"running_tests\");", + " pm.expect(typeof jsonData.running_tests).to.equal(\"object\");", + "});", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "const test2 = pm.globals.get(\"single_test_2\");", + "", + "var test1Api = test1.split(\"/\").find(part => !!part);", + "var test2Api = test1.split(\"/\").find(part => !!part);", + "", + "pm.test(\"One test is pending, one test is completed\", function () {", + " pm.expect(Object.keys(jsonData.pending_tests)).to.have.lengthOf(0);", + " pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(0);", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Last Completed Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "7fc0ceb8-ec9f-4ecb-835c-2894c0ddb42e", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + " ", + "pm.test(\"JSON format is as expected\", function () {", + " pm.expect(Object.keys(jsonData)).to.have.lengthOf(3);", + " pm.expect(jsonData).to.have.property(\"pass\");", + " pm.expect(jsonData).to.have.property(\"fail\");", + " pm.expect(jsonData).to.have.property(\"timeout\");", + " for (var key of Object.keys(jsonData)) {", + " pm.expect(jsonData[key]).to.be.an.instanceof(Array);", + " }", + "});", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "const test2 = pm.globals.get(\"single_test_2\");", + "", + "pm.test(\"Responds with one last completed tests as failed and one last completed test as passed\", function () {", + " pm.expect(jsonData[\"pass\"]).to.have.lengthOf(1);", + " pm.expect(jsonData[\"pass\"][0]).to.equal(test2);", + " pm.expect(jsonData[\"fail\"]).to.have.lengthOf(1);", + " pm.expect(jsonData[\"fail\"][0]).to.equal(test1);", + " pm.expect(jsonData[\"timeout\"]).to.be.empty;", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/last_completed", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "last_completed" + ] + } + }, + "response": [] + }, + { + "name": "Read Results", + "event": [ + { + "listen": "test", + "script": { + "id": "a8ea1c92-e81f-46da-8b55-83231635dae2", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON format is as expected\", function () {", + " for (var api of Object.keys(jsonData)) {", + " pm.expect(jsonData[api]).to.be.an.instanceof(Array);", + " for (var result of jsonData[api]) {", + " pm.expect(typeof result).to.equal(\"object\");", + " pm.expect(Object.keys(result)).to.have.lengthOf(4);", + " pm.expect(result).to.have.property(\"test\");", + " pm.expect(typeof result.test).to.equal(\"string\");", + " pm.expect(result).to.have.property(\"status\");", + " pm.expect(typeof result.status).to.equal(\"string\");", + " pm.expect(result).to.have.property(\"message\");", + " pm.expect(result.message).to.satisfy(message => !message || typeof message === \"string\");", + " pm.expect(result).to.have.property(\"subtests\");", + " pm.expect(result.subtests).to.be.an.instanceof(Array);", + " for (var subtest of result.subtests) {", + " pm.expect(typeof subtest).to.equal(\"object\");", + " pm.expect(Object.keys(subtest)).to.have.lengthOf(3);", + " pm.expect(subtest).to.have.property(\"name\");", + " pm.expect(typeof subtest.name).to.equal(\"string\");", + " pm.expect(subtest).to.have.property(\"status\");", + " pm.expect(typeof subtest.status).to.equal(\"string\");", + " pm.expect(subtest).to.have.property(\"message\");", + " pm.expect(subtest.message).to.satisfy(message => !message || typeof message === \"string\");", + " }", + " }", + " }", + "});", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "const test2 = pm.globals.get(\"single_test_2\");", + "", + "pm.test(\"Test is first and second test, successful run and failed, and successful run and passed\", function () {", + " var api = Object.keys(jsonData)[0];", + " for (var result of jsonData[api]) {", + " if (result.test === test1) {", + " pm.expect(result.test).to.equal(test1); ", + " pm.expect(result.status).to.equal(\"OK\");", + " pm.expect(result.message).to.be.null;", + " var subtest = result.subtests[0];", + " pm.expect(subtest.status).to.equal(\"FAIL\");", + " } else {", + " pm.expect(result.test).to.equal(test2); ", + " pm.expect(result.status).to.equal(\"OK\");", + " pm.expect(result.message).to.be.null;", + " subtest = result.subtests[0];", + " pm.expect(subtest.status).to.equal(\"PASS\");", + " }", + " }", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}" + ], + "query": [ + { + "key": "path", + "value": "/2dcontext/drawing-images-to-the-canvas", + "disabled": true + }, + { + "key": "path", + "value": "/2dcontext/conformance-requirements", + "disabled": true + }, + { + "key": "path", + "value": "/2dcontext/conformance-requirements/2d.missingargs.html", + "disabled": true + } + ] + } + }, + "response": [] + }, + { + "name": "Read Results Compact", + "event": [ + { + "listen": "test", + "script": { + "id": "6887e0ca-104e-49dc-93bb-e4c8cecafd70", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(typeof jsonData).to.equal(\"object\");", + " for (var api of Object.keys(jsonData)) {", + " pm.expect(jsonData[api]).to.have.property(\"pass\");", + " pm.expect(typeof jsonData[api].pass).to.equal(\"number\");", + " pm.expect(jsonData[api]).to.have.property(\"fail\");", + " pm.expect(typeof jsonData[api].fail).to.equal(\"number\");", + " pm.expect(jsonData[api]).to.have.property(\"timeout\");", + " pm.expect(typeof jsonData[api].timeout).to.equal(\"number\");", + " pm.expect(jsonData[api]).to.have.property(\"not_run\");", + " pm.expect(typeof jsonData[api].not_run).to.equal(\"number\");", + " }", + "})", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "const test2 = pm.globals.get(\"single_test_2\");", + "", + "var test1Api = test1.split(\"/\").find(part => !!part);", + "var test2Api = test1.split(\"/\").find(part => !!part);", + "", + "pm.test(\"Responds with one test failed\", function () {", + " pm.expect(Object.keys(jsonData)).to.have.lengthOf(2);", + " var api = Object.keys(jsonData)[0];", + " if (api === test1Api) {", + " pm.expect(jsonData[api].pass).to.equal(0);", + " pm.expect(jsonData[api].fail).to.equal(1);", + " } else {", + " pm.expect(jsonData[api].pass).to.equal(1);", + " pm.expect(jsonData[api].fail).to.equal(0);", + " }", + " pm.expect(jsonData[api].timeout).to.equal(0);", + " pm.expect(jsonData[api].not_run).to.equal(0);", + " api = Object.keys(jsonData)[1];", + " if (api === test1Api) {", + " pm.expect(jsonData[api].pass).to.equal(0);", + " pm.expect(jsonData[api].fail).to.equal(1);", + " } else {", + " pm.expect(jsonData[api].pass).to.equal(1);", + " pm.expect(jsonData[api].fail).to.equal(0);", + " }", + " pm.expect(jsonData[api].timeout).to.equal(0);", + " pm.expect(jsonData[api].not_run).to.equal(0);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/compact", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "compact" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "b79baece-0328-429c-801b-7a4ed8015b78", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const response = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(Object.keys(response)).to.have.lengthOf(1);", + " pm.expect(response).to.have.property(\"next_test\");", + " pm.expect(typeof response.next_test).to.equal(\"string\");", + "});", + "", + "const nextTest = response.next_test;", + "pm.globals.set(\"current_test_url\", nextTest);", + "if (!nextTest) return;", + "const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "pm.globals.set(\"current_test\", test);", + "", + "const web_root = pm.environment.get(\"web_root\");", + "", + "pm.test(\"Returned test finish page\", function () {", + " pm.expect(test).to.equal(\"/\" + web_root + \"/finish.html\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Clean Up", + "item": [ + { + "name": "Delete Session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Viewing and Downloading Reports", + "item": [ + { + "name": "Create Sessions", + "item": [ + { + "name": "First Session", + "item": [ + { + "name": "Create Session One Tests", + "event": [ + { + "listen": "test", + "script": { + "id": "9be8b3f3-bdb8-4714-9a64-d6af1bbd1491", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "461ffb5f-6b2e-46f5-8e46-3e6f8a7596b4", + "exec": [ + "const availableTests = pm.globals.get(\"available_tests\");", + "const test1 = availableTests[Object.keys(availableTests)[0]][0];", + "const test2 = availableTests[Object.keys(availableTests)[0]][1];", + "const apiName = test1.split(\"/\").filter(part => !!part)[0];", + "", + "pm.globals.set(\"single_test_1\", test1);", + "pm.globals.set(\"single_test_2\", test2);", + "pm.globals.set(\"api_name\", apiName);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": [\"{{single_test_1}}\"]\n }\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "a9088957-58f2-4cc3-8207-e3fe763602b5", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "83314ede-a250-4fe2-bd83-ce566b9fa919", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const response = pm.response.json();", + "", + "const nextTest = response.next_test;", + "pm.globals.set(\"current_test_url\", nextTest);", + "if (!nextTest) return;", + "const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "pm.globals.set(\"current_test\", test);", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Create Result", + "event": [ + { + "listen": "test", + "script": { + "id": "ddee875c-0a41-4f58-b88f-34bdd56edce2", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"FAIL\",\n \"message\": \"Error message\"\n }\n ]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Second Session", + "item": [ + { + "name": "Create Session One Tests", + "event": [ + { + "listen": "test", + "script": { + "id": "1f821de6-b0d8-46a2-ba4c-c258ad6ee368", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token_comp\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "f99fe4da-6191-44d9-9043-736732e0f447", + "exec": [ + "const availableTests = pm.globals.get(\"available_tests\");", + "const test1 = availableTests[Object.keys(availableTests)[0]][0];", + "const test2 = availableTests[Object.keys(availableTests)[0]][1];", + "", + "pm.globals.set(\"single_test_1\", test1);", + "pm.globals.set(\"single_test_2\", test2);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": [\"{{single_test_1}}\"]\n }\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "d274388e-f796-4223-9e0c-7faa50d866d0", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token_comp}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token_comp}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "53f3279a-7241-45fc-b686-75527ed2d9e6", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const response = pm.response.json();", + "", + "const nextTest = response.next_test;", + "pm.globals.set(\"current_test_url\", nextTest);", + "if (!nextTest) return;", + "const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "pm.globals.set(\"current_test\", test);", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token_comp}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token_comp}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Create Result", + "event": [ + { + "listen": "test", + "script": { + "id": "1504123e-1ce8-4dc6-a77e-5a39992364b0", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"FAIL\",\n \"message\": \"Error message\"\n }\n ]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token_comp}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token_comp}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Download reports", + "item": [ + { + "name": "Download Results Overview", + "event": [ + { + "listen": "test", + "script": { + "id": "dd1eaf99-1000-4bb8-9be9-eabfdfc36ac1", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/overview", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "overview" + ] + } + }, + "response": [] + }, + { + "name": "Download All Apis Json", + "event": [ + { + "listen": "test", + "script": { + "id": "43f18a6a-574f-4180-92ff-43316df40ea3", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/json", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "json" + ] + } + }, + "response": [] + }, + { + "name": "Download WPT Multi Report Url", + "event": [ + { + "listen": "test", + "script": { + "id": "f1879d6a-df6d-4c2c-957a-97594e3e3ace", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Uri returned\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(typeof jsonData.uri).to.equal(\"string\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{api_name}}/reporturl?tokens={{session_token}},{{session_token_comp}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{api_name}}", + "reporturl" + ], + "query": [ + { + "key": "tokens", + "value": "{{session_token}},{{session_token_comp}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Download Results Api Json", + "event": [ + { + "listen": "test", + "script": { + "id": "663d0095-7e34-4a58-8ce5-216f286da28d", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "60eaa295-7afe-48f3-ac5e-a86acdca83e8", + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/{{api_name}}/json", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "{{api_name}}", + "json" + ] + } + }, + "response": [] + }, + { + "name": "Download WPT Report Copy", + "event": [ + { + "listen": "test", + "script": { + "id": "acd2c12f-50ae-4b7f-9956-40ead293c342", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Uri returned\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(typeof jsonData.uri).to.equal(\"string\");", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "ecfd8f56-d4d2-4297-96d1-2e69198af4b5", + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/{{api_name}}/reporturl", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "{{api_name}}", + "reporturl" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Malfunctioning List", + "item": [ + { + "name": "Create Session \\w Configuration Copy", + "event": [ + { + "listen": "test", + "script": { + "id": "bb82385b-eb48-402e-baa5-e7658f09323e", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "e0a204e4-4091-40a9-9554-df40467143b5", + "exec": [ + "var automaticTimeout = 120000;", + "var manualTimeout = 1000000;", + "var specialTimeout = 2000;", + "", + "pm.globals.set(\"automatic_timeout\", automaticTimeout);", + "pm.globals.set(\"manual_timeout\", manualTimeout);", + "pm.globals.set(\"special_timeout\", specialTimeout);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": {{included_tests}},\n \"exclude\": {{excluded_tests}}\n },\n \"types\": [\n \"automatic\"\n ],\n \"timeouts\": {\n \"automatic\": {{automatic_timeout}},\n \"manual\": {{manual_timeout}},\n \"{{special_timeout_test}}\": {{special_timeout}}\n },\n \"labels\": [\"label1\", \"label2\"]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Malfunctioning Empty", + "event": [ + { + "listen": "test", + "script": { + "id": "e66f4416-81df-452d-bb88-8715d7dc5bb4", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"Return empty array\", function() {", + " pm.expect(jsonData).to.be.an.instanceof(Array)", + " pm.expect(jsonData).to.have.length(0)", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/malfunctioning", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "malfunctioning" + ] + } + }, + "response": [] + }, + { + "name": "Update Session Malfunctioning Insert Two", + "event": [ + { + "listen": "test", + "script": { + "id": "98bb765d-b592-4f44-b6bb-939af2dcea0b", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "[\n\t\"/test/file/one.html\",\n\t\"/test/file/two.html\"\n]", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/malfunctioning", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "malfunctioning" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Malfunctioning Two Tests", + "event": [ + { + "listen": "test", + "script": { + "id": "cc041c1f-6bfb-41ae-953a-1f846ec3fb8c", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"Return array with two tests\", function() {", + " pm.expect(jsonData).to.be.an.instanceof(Array)", + " pm.expect(jsonData).to.have.length(2)", + " pm.expect(jsonData).to.include(\"/test/file/one.html\")", + " pm.expect(jsonData).to.include(\"/test/file/two.html\")", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/malfunctioning", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "malfunctioning" + ] + } + }, + "response": [] + }, + { + "name": "Update Session Malfunctioning Empty Array", + "event": [ + { + "listen": "test", + "script": { + "id": "954d9ebc-86a7-4c1c-a643-813b1cf73e55", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "[]", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/malfunctioning", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "malfunctioning" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Malfunctioning Empty", + "event": [ + { + "listen": "test", + "script": { + "id": "ac1ad818-454b-486b-9f18-a8255cd01e5d", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"Return empty array\", function() {", + " pm.expect(jsonData).to.be.an.instanceof(Array)", + " pm.expect(jsonData).to.have.length(0)", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/malfunctioning", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "malfunctioning" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Sessions API", + "item": [ + { + "name": "create session", + "item": [ + { + "name": "With Defaults", + "item": [ + { + "name": "Prep: Read Available Tests", + "event": [ + { + "listen": "test", + "script": { + "id": "0bd12bea-6bed-4294-b37f-7d3086570ce4", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var availableTests = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(typeof availableTests).to.equal(\"object\");", + " for (var api of Object.keys(availableTests)) {", + " pm.expect(availableTests[api]).to.be.an.instanceof(Array);", + " var apiRegExp = new RegExp(\"^/\" + api, \"i\");", + " for (var test of availableTests[api]) {", + " pm.expect(test).to.match(apiRegExp);", + " }", + " }", + "});", + "", + "var includedTests = [];", + "var excludedTests = [];", + "var specialTimeoutTest = \"\";", + "", + "var apis = Object.keys(availableTests);", + "for(var api of apis) {", + " if (availableTests[api].length > 50) {", + " var subDirs = availableTests[api].map(test => test.split(\"/\").filter(part => !!part).join(\"/\").split(\"/\")[1]).reduce((acc, curr) => acc.indexOf(curr) === -1 ? acc.concat([curr]) : acc, []);", + " if (subDirs.length > 2) {", + " includedTests.push(\"/\" + api);", + " excludedTests.push(\"/\" + api + \"/\" + subDirs[0]);", + " specialTimeoutTest = availableTests[api][availableTests[api].length - 1];", + " break;", + " }", + " ", + " }", + "}", + "", + "pm.globals.set(\"available_tests\", availableTests);", + "pm.globals.set(\"included_tests\", JSON.stringify(includedTests));", + "pm.globals.set(\"excluded_tests\", JSON.stringify(excludedTests));", + "pm.globals.set(\"special_timeout_test\", specialTimeoutTest.replace(\".\", \"\"));" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests" + ] + } + }, + "response": [] + }, + { + "name": "Create Session No Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "3e753e2b-bb2b-473d-b85d-d4e05ca62e73", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "76a6fe4e-e853-4e0e-b34b-4de92dfa785f", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Configuration is default\", function () {", + " pm.expect(jsonData.token).to.match(tokenRegex);", + " pm.expect(jsonData.tests.include).to.include(\"/\");", + " pm.expect(jsonData.types).to.include(\"automatic\");", + " pm.expect(jsonData.types).to.include(\"manual\");", + " pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");", + " pm.expect(jsonData.timeouts.automatic).to.equal(60000);", + " pm.expect(jsonData.timeouts.manual).to.equal(300000);", + " pm.expect(jsonData.browser.name).to.equal(\"Other\");", + " pm.expect(jsonData.browser.version).to.equal(\"0\");", + " pm.expect(jsonData.is_public).to.equal(false);", + " pm.expect(jsonData.reference_tokens).to.be.empty;", + " pm.expect(jsonData.labels).to.be.empty;", + " pm.expect(new Date(jsonData.date_created).getTime()).to.be.below(Date.now());", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "7bc1ce76-6980-4717-8437-6bc2bd8db04e", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"Session status is pending\", function () {", + " pm.expect(jsonData.status).to.equal(\"pending\");", + "})", + "", + "pm.test(\"Start, Finish and Expiration date not set\", function () {", + " pm.expect(jsonData.date_started).to.be.null;", + " pm.expect(jsonData.date_finished).to.be.null;", + " pm.expect(jsonData.expiration_date).to.be.null;", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + }, + { + "name": "Read Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "08922023-2abf-4280-9aaa-c52e2016e84b", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"pending_tests\");", + " pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");", + " pm.expect(jsonData).to.have.property(\"running_tests\");", + " pm.expect(typeof jsonData.running_tests).to.equal(\"object\");", + "});", + "", + "pm.test(\"All tests are pending tests\", function () {", + " pm.expect(Object.keys(jsonData.pending_tests)).to.not.have.lengthOf(0);", + " pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(0);", + "})", + "", + "const availableTests = pm.globals.get(\"available_tests\"); ", + "", + "pm.test(\"All available tests are part of the session\", function () {", + " for (var api of Object.keys(jsonData.pending_tests)) {", + " for (var test of jsonData.pending_tests[api]) {", + " pm.expect(availableTests[api]).to.include(test);", + " }", + " }", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Delete session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "b58ed087-c40c-4fe8-b2ac-7d14f4e84989", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "49c0a748-514b-4b0a-8309-0f05a032e09a", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "With Configuration", + "item": [ + { + "name": "Prep: Read Available Tests", + "event": [ + { + "listen": "test", + "script": { + "id": "eb0b552e-2620-4810-b2b4-4e3b6e05d7ad", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var availableTests = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(typeof availableTests).to.equal(\"object\");", + " for (var api of Object.keys(availableTests)) {", + " pm.expect(availableTests[api]).to.be.an.instanceof(Array);", + " var apiRegExp = new RegExp(\"^/\" + api, \"i\");", + " for (var test of availableTests[api]) {", + " pm.expect(test).to.match(apiRegExp);", + " }", + " }", + "});", + "", + "var includedTests = [];", + "var excludedTests = [];", + "var specialTimeoutTest = \"\";", + "", + "var apis = Object.keys(availableTests);", + "for(var api of apis) {", + " if (availableTests[api].length > 50) {", + " var subDirs = availableTests[api].map(test => test.split(\"/\").filter(part => !!part).join(\"/\").split(\"/\")[1]).reduce((acc, curr) => acc.indexOf(curr) === -1 ? acc.concat([curr]) : acc, []);", + " if (subDirs.length > 2) {", + " includedTests.push(\"/\" + api);", + " excludedTests.push(\"/\" + api + \"/\" + subDirs[0]);", + " specialTimeoutTest = availableTests[api][availableTests[api].length - 1];", + " break;", + " }", + " ", + " }", + "}", + "", + "pm.globals.set(\"available_tests\", availableTests);", + "pm.globals.set(\"included_tests\", JSON.stringify(includedTests));", + "pm.globals.set(\"excluded_tests\", JSON.stringify(excludedTests));", + "pm.globals.set(\"special_timeout_test\", specialTimeoutTest.replace(\".\", \"\"));" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests" + ] + } + }, + "response": [] + }, + { + "name": "Create Session \\w Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "8a365528-955f-41b8-9948-39c297428433", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "e9971045-d116-4cb4-8d2f-2062171325b5", + "exec": [ + "var automaticTimeout = 120000;", + "var manualTimeout = 1000000;", + "var specialTimeout = 2000;", + "", + "pm.globals.set(\"automatic_timeout\", automaticTimeout);", + "pm.globals.set(\"manual_timeout\", manualTimeout);", + "pm.globals.set(\"special_timeout\", specialTimeout);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": {{included_tests}},\n \"exclude\": {{excluded_tests}}\n },\n \"types\": [\n \"automatic\"\n ],\n \"timeouts\": {\n \"automatic\": {{automatic_timeout}},\n \"manual\": {{manual_timeout}},\n \"{{special_timeout_test}}\": {{special_timeout}}\n },\n \"labels\": [\"label1\", \"label2\"]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "a51b4bb7-4c19-463c-a878-332b976731bd", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "var includedTests = JSON.parse(pm.globals.get(\"included_tests\"));", + "var excludedTests = JSON.parse(pm.globals.get(\"excluded_tests\"));", + "var automaticTimeout = pm.globals.get(\"automatic_timeout\");", + "var manualTimeout = pm.globals.get(\"manual_timeout\");", + "var specialTimeout = pm.globals.get(\"special_timeout\");", + "var specialTimeoutTest = pm.globals.get(\"special_timeout_test\");", + "", + "pm.test(\"Configuration is as specified\", function () {", + " pm.expect(jsonData.token).to.match(tokenRegex);", + " for (var test of includedTests) {", + " pm.expect(jsonData.tests.include).to.include(test);", + " }", + " for (var test of excludedTests) {", + " pm.expect(jsonData.tests.exclude).to.include(test);", + " }", + " pm.expect(jsonData.types).to.include(\"automatic\");", + " pm.expect(jsonData.types).to.not.include(\"manual\");", + " pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");", + " pm.expect(jsonData.timeouts.automatic).to.equal(automaticTimeout);", + " pm.expect(jsonData.timeouts.manual).to.equal(manualTimeout);", + " pm.expect(jsonData.timeouts[specialTimeoutTest]).to.equal(specialTimeout);", + " pm.expect(jsonData.browser.name).to.equal(\"Other\");", + " pm.expect(jsonData.browser.version).to.equal(\"0\");", + " pm.expect(jsonData.is_public).to.equal(false);", + " pm.expect(jsonData.reference_tokens).to.be.empty;", + " pm.expect(jsonData.labels).to.include(\"label1\");", + " pm.expect(jsonData.labels).to.include(\"label2\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "2fa4419f-fa41-46ad-a3b2-ab59ec0ed937", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"Session status is pending\", function () {", + " pm.expect(jsonData.status).to.equal(\"pending\");", + "})", + "", + "pm.test(\"Start and Finish date not set\", function () {", + " pm.expect(jsonData.date_started).to.be.null;", + " pm.expect(jsonData.date_finished).to.be.null;", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + }, + { + "name": "Read Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "d916f1fa-24d2-40d7-8b85-2b70686ee9be", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"All tests are pending tests\", function () {", + " pm.expect(Object.keys(jsonData.pending_tests)).to.not.have.lengthOf(0);", + " pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(0);", + "})", + "", + "const availableTests = pm.globals.get(\"available_tests\");", + "const includedTests = pm.globals.get(\"included_tests\");", + "const excludedTests = pm.globals.get(\"excluded_tests\");", + "", + "pm.test(\"Selected subset of tests are part of the session\", function () {", + " for (var api of Object.keys(jsonData.pending_tests)) {", + " for (var includedTest of includedTests) {", + " if (includedTest.split(\"/\").find(part => !!part) === api) {", + " var includeRegExp = new RegExp(\"^\" + includedTest, \"i\");", + " for (var test of jsonData.pending_tests[api]) {", + " pm.expect(test).to.match(regex);", + " }", + " break;", + " }", + " }", + " for (var excludedTest of excludedTests) {", + " if (excludedTest.split(\"/\").find(part => !!part) === api) {", + " var excludeRegExp = new RegExp(\"^\" + excludedTest, \"i\");", + " for (var test of jsonData.pending_tests[api]) {", + " pm.expect(test).to.not.match(regex);", + " }", + " break;", + " }", + " }", + " }", + "});", + "", + "const sessionTests = jsonData.pending_tests;", + "", + "pm.globals.set(\"session_tests\", JSON.stringify(sessionTests));" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Delete session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "9510b44c-985b-4d7b-b1be-4dea2747543c", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "620e345a-e8b2-4305-94ca-370d85718122", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "With Expiration", + "item": [ + { + "name": "Create Session With Expiration", + "event": [ + { + "listen": "test", + "script": { + "id": "1513a060-559a-4a75-8695-a59501928c3c", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "67964f4f-f973-4555-b0e5-72b665519d9f", + "exec": [ + "var expirationDate = Date.now() + 3000;", + "pm.globals.set(\"expiration_date\", expirationDate);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"expiration_date\": {{expiration_date}}\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Expired Session", + "event": [ + { + "listen": "test", + "script": { + "id": "650df20b-5105-4960-9cfb-4384ffc65f7d", + "exec": [ + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "9785dc93-bb5c-4920-a7a6-88b8af8c1444", + "exec": [ + "var expirationDate = pm.globals.get(\"expiration_date\");", + "", + "var timeout = expirationDate - Date.now() + 1000", + "", + "console.log(timeout)", + "", + "setTimeout(function () {}, timeout);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Delete session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "read session", + "item": [ + { + "name": "Prep: Create Session No Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "a1ffb6c9-2ff6-4502-a7f4-486b962cce1a", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "4bf0ab03-064b-4a59-b645-86aa63c3bd9b", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"tests\");", + " pm.expect(typeof jsonData.tests).to.equal(\"object\");", + " pm.expect(jsonData.tests).to.have.property(\"include\");", + " pm.expect(jsonData.tests.include).to.be.an.instanceof(Array);", + " pm.expect(jsonData.tests).to.have.property(\"exclude\");", + " pm.expect(jsonData.tests.exclude).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"types\");", + " pm.expect(jsonData.types).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"user_agent\");", + " pm.expect(typeof jsonData.user_agent).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"timeouts\");", + " pm.expect(typeof jsonData.timeouts).to.equal(\"object\")", + " pm.expect(jsonData.timeouts).to.have.property(\"automatic\");", + " pm.expect(typeof jsonData.timeouts.automatic).to.equal(\"number\");", + " pm.expect(jsonData.timeouts).to.have.property(\"manual\");", + " pm.expect(typeof jsonData.timeouts.manual).to.equal(\"number\");", + " pm.expect(jsonData).to.have.property(\"browser\");", + " pm.expect(typeof jsonData.browser).to.equal(\"object\");", + " pm.expect(jsonData.browser).to.have.property(\"name\");", + " pm.expect(typeof jsonData.browser.name).to.equal(\"string\");", + " pm.expect(jsonData.browser).to.have.property(\"version\");", + " pm.expect(typeof jsonData.browser.version).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"reference_tokens\");", + " pm.expect(jsonData.reference_tokens).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"labels\");", + " pm.expect(jsonData.labels).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"date_created\");", + "});", + "", + "pm.test(\"Configuration is default\", function () {", + " pm.expect(jsonData.token).to.match(tokenRegex);", + " pm.expect(jsonData.tests.include).to.include(\"/\");", + " pm.expect(jsonData.types).to.include(\"automatic\");", + " pm.expect(jsonData.types).to.include(\"manual\");", + " pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");", + " pm.expect(jsonData.timeouts.automatic).to.equal(60000);", + " pm.expect(jsonData.timeouts.manual).to.equal(300000);", + " pm.expect(jsonData.browser.name).to.equal(\"Other\");", + " pm.expect(jsonData.browser.version).to.equal(\"0\");", + " pm.expect(jsonData.is_public).to.equal(false);", + " pm.expect(jsonData.reference_tokens).to.be.empty;", + " pm.expect(jsonData.labels).to.be.empty;", + " pm.expect(new Date(jsonData.date_created).getTime()).to.be.below(Date.now());", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Delete session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "read session status", + "item": [ + { + "name": "Prep: Create Session No Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "a33cd11a-86a4-4890-a438-877c1deb4b9d", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "9b8f03a2-9924-4fe6-9d35-4d1ec25163cd", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"status\");", + " pm.expect(typeof jsonData.status).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"expiration_date\");", + " pm.expect(jsonData.expiration_date).to.be.null;", + " pm.expect(jsonData).to.have.property(\"date_started\");", + " pm.expect(jsonData).to.have.property(\"date_finished\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Delete session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "read sessions", + "item": [ + { + "name": "Without query parameters", + "item": [ + { + "name": "Read sessions", + "event": [ + { + "listen": "test", + "script": { + "id": "8e4c1085-b75c-4b53-89c6-5a3241b8f52a", + "exec": [ + "const response = pm.response.json();", + "", + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"JSON structure as expected\", function() {", + " pm.expect(response).to.have.property(\"items\");", + " pm.expect(response[\"items\"]).to.be.instanceof(Array);", + " pm.expect(response).to.have.property(\"_links\");", + " pm.expect(response[\"_links\"]).to.be.instanceof(Object);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/_wave/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "_wave", + "api", + "sessions" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Containing created session", + "item": [ + { + "name": "Prep: Create session", + "event": [ + { + "listen": "test", + "script": { + "id": "cb370203-5cdf-4d2d-b044-e0f042dc7ace", + "exec": [ + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read sessions", + "event": [ + { + "listen": "test", + "script": { + "id": "d2f6c454-52cc-4b79-b573-f425304f3e04", + "exec": [ + "const token = pm.globals.get(\"session_token\");", + "const response = pm.response.json();", + "", + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"JSON structure as expected\", function() {", + " pm.expect(response).to.have.property(\"items\");", + " pm.expect(response[\"items\"]).to.be.instanceof(Array);", + " pm.expect(response).to.have.property(\"_links\");", + " pm.expect(response[\"_links\"]).to.be.instanceof(Object);", + "});", + "", + "pm.test(\"Created session's token in response\", function() {", + " pm.expect(response.items).to.contain(token);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/_wave/api/sessions?index=0&count=1000", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "_wave", + "api", + "sessions" + ], + "query": [ + { + "key": "index", + "value": "0" + }, + { + "key": "count", + "value": "1000" + } + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Delete Session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "With configuration expansion", + "item": [ + { + "name": "Prep: Create session", + "event": [ + { + "listen": "test", + "script": { + "id": "16cda9c3-15a2-4bbf-a479-be40c374847c", + "exec": [ + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read sessions", + "event": [ + { + "listen": "test", + "script": { + "id": "3a82ce2e-ad68-4c66-b93f-9b60b4d219db", + "exec": [ + "const token = pm.globals.get(\"session_token\");", + "const response = pm.response.json();", + "", + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"JSON structure as expected\", function() {", + " pm.expect(response).to.have.property(\"items\");", + " pm.expect(response[\"items\"]).to.be.instanceof(Array);", + " pm.expect(response).to.have.property(\"_links\");", + " pm.expect(response[\"_links\"]).to.be.instanceof(Object);", + " pm.expect(response).to.have.property(\"_embedded\");", + " pm.expect(response[\"_embedded\"]).to.be.instanceof(Object);", + " pm.expect(response[\"_embedded\"]).to.have.property(\"configuration\");", + " pm.expect(response[\"_embedded\"][\"configuration\"]).to.be.instanceof(Array);", + "});", + "", + "pm.test(\"Created session's token in response\", function() {", + " pm.expect(response.items).to.contain(token);", + "});", + "", + "pm.test(\"Created session's token in embedded configuration\", function() {", + " let tokenInConfigurationList = false;", + " let configurations = response._embedded.configuration;", + " for (let configuration of configurations) {", + " if (configuration.token !== token) continue;", + " tokenInConfigurationList = true;", + " }", + " pm.expect(tokenInConfigurationList).to.equal(true);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/_wave/api/sessions?index=0&count=1000&expand=configuration", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "_wave", + "api", + "sessions" + ], + "query": [ + { + "key": "index", + "value": "0" + }, + { + "key": "count", + "value": "1000" + }, + { + "key": "expand", + "value": "configuration" + } + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Delete Session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "With status expansion", + "item": [ + { + "name": "Prep: Create session", + "event": [ + { + "listen": "test", + "script": { + "id": "8809d7a7-4ff0-4c6c-b601-50cc2773ad3d", + "exec": [ + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read sessions", + "event": [ + { + "listen": "test", + "script": { + "id": "99ef895e-fd14-433b-aced-708c2fffcd0d", + "exec": [ + "const token = pm.globals.get(\"session_token\");", + "const response = pm.response.json();", + "", + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"JSON structure as expected\", function() {", + " pm.expect(response).to.have.property(\"items\");", + " pm.expect(response[\"items\"]).to.be.instanceof(Array);", + " pm.expect(response).to.have.property(\"_links\");", + " pm.expect(response[\"_links\"]).to.be.instanceof(Object);", + " pm.expect(response).to.have.property(\"_embedded\");", + " pm.expect(response[\"_embedded\"]).to.be.instanceof(Object);", + " pm.expect(response[\"_embedded\"]).to.have.property(\"status\");", + " pm.expect(response[\"_embedded\"][\"status\"]).to.be.instanceof(Array);", + "});", + "", + "pm.test(\"Created session's token in response\", function() {", + " pm.expect(response.items).to.contain(token);", + "});", + "", + "pm.test(\"Created session's token in embedded status\", function() {", + " let tokenInStatusList = false;", + " let statuses = response._embedded.status;", + " for (let status of statuses) {", + " if (status.token !== token) continue;", + " tokenInStatusList = true;", + " }", + " pm.expect(tokenInStatusList).to.equal(true);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/_wave/api/sessions?index=0&count=1000&expand=status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "_wave", + "api", + "sessions" + ], + "query": [ + { + "key": "index", + "value": "0" + }, + { + "key": "count", + "value": "1000" + }, + { + "key": "expand", + "value": "status" + } + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Delete Session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "General API", + "item": [ + { + "name": "server status", + "item": [ + { + "name": "Read server status", + "event": [ + { + "listen": "test", + "script": { + "id": "74b51128-338e-417d-b104-1b8bd2ba903c", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"import_results_enabled\");", + " pm.expect(typeof jsonData.import_results_enabled).to.equal(\"boolean\");", + " pm.expect(jsonData).to.have.property(\"reports_enabled\");", + " pm.expect(typeof jsonData.reports_enabled).to.equal(\"boolean\");", + " pm.expect(jsonData).to.have.property(\"read_sessions_enabled\");", + " pm.expect(typeof jsonData.read_sessions_enabled).to.equal(\"boolean\");", + " pm.expect(jsonData).to.have.property(\"version_string\");", + " pm.expect(typeof jsonData.version_string).to.equal(\"string\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {} + } + ], + "protocolProfileBehavior": {} +} \ No newline at end of file diff --git a/tools/wave/testing/sessions_manager.py b/tools/wave/testing/sessions_manager.py index 1503393da5..10556ffb9f 100644 --- a/tools/wave/testing/sessions_manager.py +++ b/tools/wave/testing/sessions_manager.py @@ -29,7 +29,8 @@ def initialize(self, event_dispatcher, tests_manager, results_directory, - results_manager): + results_manager, + configuration): self._test_loader = test_loader self._sessions = {} self._expiration_timeout = None @@ -37,6 +38,7 @@ def initialize(self, self._tests_manager = tests_manager self._results_directory = results_directory self._results_manager = results_manager + self._configuration = configuration def create_session( self, @@ -65,9 +67,9 @@ def create_session( if "exclude" not in tests: tests["exclude"] = [] if "automatic" not in timeouts: - timeouts["automatic"] = DEFAULT_TEST_AUTOMATIC_TIMEOUT + timeouts["automatic"] = self._configuration["timeouts"]["automatic"] if "manual" not in timeouts: - timeouts["manual"] = DEFAULT_TEST_MANUAL_TIMEOUT + timeouts["manual"] = self._configuration["timeouts"]["manual"] if test_types is None: test_types = DEFAULT_TEST_TYPES diff --git a/tools/wave/wave_server.py b/tools/wave/wave_server.py index 8b476d9098..c9bb8724f7 100644 --- a/tools/wave/wave_server.py +++ b/tools/wave/wave_server.py @@ -19,8 +19,8 @@ from .testing.test_loader import TestLoader from .testing.event_dispatcher import EventDispatcher -VERSION_STRING = "v3.0.1" -DPCTF_VERSION_STRING = "v0.4.1" +VERSION_STRING = "v3.0.2" +DPCTF_VERSION_STRING = "v0.4.2" class WaveServer(object): @@ -56,7 +56,8 @@ def initialize(self, event_dispatcher=event_dispatcher, tests_manager=tests_manager, results_directory=configuration["results_directory_path"], - results_manager=results_manager + results_manager=results_manager, + configuration=configuration ) results_manager.initialize( diff --git a/tools/wave/www/lib/wave-service.js b/tools/wave/www/lib/wave-service.js index 1ee028ca22..a42c490c71 100644 --- a/tools/wave/www/lib/wave-service.js +++ b/tools/wave/www/lib/wave-service.js @@ -765,7 +765,7 @@ var WaveService = { }, _globalDeviceEventListeners: [], _sessionEventListeners: {}, - _eventNumbers: {}, + _sessionEventNumbers: {}, listenHttpPolling: function (url, onSuccess, onError) { var uniqueId = new Date().getTime(); if (url.indexOf("?") === -1) { @@ -810,7 +810,7 @@ var WaveService = { var listeners = WaveService._sessionEventListeners; if (!listeners[token] || listeners.length === 0) return; var url = "api/sessions/" + token + "/events"; - var lastEventNumber = WaveService._eventNumbers[token]; + var lastEventNumber = WaveService._sessionEventNumbers[token]; if (lastEventNumber) { url += "?last_event=" + lastEventNumber; } @@ -830,7 +830,7 @@ var WaveService = { listener(event); } } - WaveService._eventNumbers[token] = lastEventNumber; + WaveService._sessionEventNumbers[token] = lastEventNumber; WaveService.listenSessionEvents(token); }, function () {