Extension Object Model

Functionize Object Model Overview

Functionize Extensions expect an HTTPS POST request with a JSON payload as the function input:

{
   "orchestrationRunId": "",
   "testId": "903915",
   "TDMdataSetId": "",
   "orchestrationId": "0",
   "step": {...},
    "previousSteps": [...],
   "variables": {
     "project": {},
     "local": {}
   }
}

 

At the top level, the data structure includes information on the test case ID, orchestration IDs, and TDM data set.  In addition, the Extension object will have:

  • Step object
  • Action object
  • Output object

Step Object

The step object is a complex JSON containing all information about the current step, its user flags, and an arrow of the previous step objects:

 "step": {
     "path": "",
     "optional": false,
     "action": {...},
     "output": {...}
}

 

Action Object

The action object contains information about the action as defined in the test case, for example: element type, action type, various action attributes, and detailed data on the action:

"action": {
       "fileName": "Vistex_POS Golden Data_JK_MassValidations.csv",
       "fileUrl": "https://functionize.storage.googleapis.com/test-903915%2Fdownloads%2F9828f2c72200b4ae538b2ea8f1ecc94dvistexpos.csv?Expires=1668486746&GoogleAccessId=functionizesign%40wise-arch-107501.iam.gserviceaccount.com&Signature=ED3WfsZglia%2FpU5pE4UKc%2Fkod1B%2BCHqNQJU%2BEKrXMRAnjdOOQdDjOdbzBbwkBDxZEFqEzfsLyBTJJDFG1PJhUCZsrVGSE3bi%2BDFdOwXAHhFE%2ByJmFOcvON8JL6PpsJMUt3FTNpku%2FeHLkZmDThWWeNvNkUjQuXcdN9fzW4VpBhWBuUcP0LbJzSx2rmIJCjdzla%2F%2FfcNMcsvoGCbrCFJOkbSIOix7LNDmt1Y4vdCOu8HRAfUbhCXTCG7uT3we5C%2Fr%2Fah%2BmAbO8ltgUCz8C5mXsSBL1Q5as0aBMFRItgKgijJIakAX%2BAmIA7e5r1G%2BqDTmjmeVBrNpC7LOsnn5Ioz1iQ==",
       "id": "1668018653699_DVHVBC3OB0",
       "type": "UPLOAD",
       "fileData": "MjEyMjIzfEdvbGRlbiBEYXRhX0pLX01hc3N8MXwyfHxTRHx8RUEyNDFGLUJLfHx8fHx8fHx8f…"
}

Output Object

Functionize provides an output object for the results of the test step, including outcome information, screenshots, and data on the element interacted with in the step:

"output": {
       "foundUrl": "https://www.functionizeapp.com/tools/fileviewer",
       "result": null,
       "baseFileName": "6_chrome_new_1668018653699_DVHVBC3OB0",
       "displayScreenshotPath": "",
       "verificationResults": [],
       "postScreenshot": {
         "dimensions": null,
         "phash": null,
         "filename": "",
         "localPath": "",
         "windowState": null,
         "offset": null,
         "cloudPath": ""
       },
       "elementResult": {
         "selectionReason": "",
         "selectionType": "NONE",
         "unusedElements": [],
         "selectedElement": null,
         "failedSelection": false,
         "reusedElementResult": false,
         "warnings": []
       },
       "preScreenshot": {
         "phash": null,
         "dimensions": null,
         "windowState": null,
         "localPath": "",
         "filename": "",
         "filename": "",
         "offset": null,
         "cloudPath": ""
       }
      }

Example input JSON:

{
   "orchestrationRunId": "",
   "testId": "903915",
   "TDMdataSetId": "",
   "orchestrationId": "0"
   "step": {
     "path": "",
     "optional": false,
     "action": {
       "fileName": "Vistex_POS Golden Data_JK_MassValidations.csv",
       "fileUrl": "https://functionize.storage.googleapis.com/test-903915%2Fdownloads%2F9828f2c72200b4ae538b2ea8f1ecc94dvistexpos.csv?Expires=1668486746&GoogleAccessId=functionizesign%40wise-arch-107501.iam.gserviceaccount.com&Signature=ED3WfsZglia%2FpU5pE4UKc%2Fkod1B%2BCHqNQJU%2BEKrXMRAnjdOOQdDjOdbzBbwkBDxZEFqEzfsLyBTJJDFG1PJhUCZsrVGSE3bi%2BDFdOwXAHhFE%2ByJmFOcvON8JL6PpsJMUt3FTNpku%2FeHLkZmDThWWeNvNkUjQuXcdN9fzW4VpBhWBuUcP0LbJzSx2rmIJCjdzla%2F%2FfcNMcsvoGCbrCFJOkbSIOix7LNDmt1Y4vdCOu8HRAfUbhCXTCG7uT3we5C%2Fr%2Fah%2BmAbO8ltgUCz8C5mXsSBL1Q5as0aBMFRItgKgijJIakAX%2BAmIA7e5r1G%2BqDTmjmeVBrNpC7LOsnn5Ioz1iQ==",
       "id": "1668018653699_DVHVBC3OB0",
       "type": "UPLOAD",
       "fileData": "MjEyMjIzfEdvbGRlbiBEYXRhX0pLX01hc3N8MXwyfHxTRHx8RUEyNDFGLUJLfHx8fHx8fHx8fHwyMHx8fHx8RGl2ZXJzaWZpZWQgTWVkaWEgR3JvdXB8fDM4NSBNQVJLRVQgU1R8fHx8fEtFTklMV09SVEh8NzAzM3xOSnxVU3x8fHxEaXZlcnNpZmllZCBNZWRpYSBHcm91cHx8Mzg1IE1BUktFVCBTVHx8fHx8S0VOSUxXT1JUSHw3MDMzfE5KfFVTDQoyMTIyMjN8R29sZGVuIERhdGFfSktfTWFzc3wxfDJ8MjAyMTAxMDF8U0R8fEVBMjQxRi1CS3x8fHwyMDIxMDEwMXwyMDIxMDEwMXx8fHx8fDIwfDMyfHx8fHx8Mzg1IE1BUktFVCBTVHx8fHx8S0VOSUxXT1JUSHw3MDMzfE5KfHx8fHx8fDM4NSBNQVJLRVQgU1R8fHx8fEtFTklMV09SVEh8NzAzM3xOSnwNCjIxMjIyM3xHb2xkZW4gRGF0YV9KS19NYXNzfDF8MnwyMDIxMDEwMXxTRHx8RUEyNDFGLUJLfHx8fDIwMjEwMTAxfDIwMjEwMTAxfHx8fHx8MjB8MzJ8fHx8RGl2ZXJzaWZpZWQgTWVkaWEgR3JvdXB8fDM4NSBNQVJLRVQgU1R8fHx8fEtFTklMV09SVEh8NzAzM3xaWnxVU3x8fHxEaXZlcnNpZmllZCBNZWRpYSBHcm91cHx8Mzg1IE1BUktFVCBTVHx8fHx8S0VOSUxXT1JUSHw3MDMzfFpafFVTDQoyMTIyMjN8R29sZGVuIERhdGFfSktfTWFzc3wxfDJ8MjAyMTAxMDF8U0R8fEludmFsaWRfUHJvZHVjdHx8fHwyMDIxMDEwMXwyMDIxMDEwMXx8fHx8fDIwfDMyfHx8fERpdmVyc2lmaWVkIE1lZGlhIEdyb3VwfHwzODUgTUFSS0VUIFNUfHx8fHxLRU5JTFdPUlRIfDcwMzN8Tkp8Wlp8fHx8RGl2ZXJzaWZpZWQgTWVkaWEgR3JvdXB8fDM4NSBNQVJLRVQgU1R8fHx8fEtFTklMV09SVEh8NzAzM3xOSnxaWg0KMjEyMjIzfEdvbGRlbiBEYXRhX0pLX01hc3N8MXwyfDIwMjEwMTAxfFNEfHxFQTI0MUYtQkt8fHx8MjAyMTAxMDF8MjAyMTAxMDF8fHx8fHwyMHwzMnx8fHxHb2xkZW5fSW52YWxpZHx8WFggSW52YWxpZCBBdmVudWV8fHx8fERhbGxhc3w3NTI0OXxUWHxVU3x8fHxHb2xkZW5fSW52YWxpZHx8WFggSW52YWxpZCBBdmVudWV8fHx8fERhbGxhc3w3NTI0OXxUWHxVUw0KMjEyMjIzfEdvbGRlbiBEYXRhX0pLX01hc3N8MXwyfDIwMjEwMTAxfFNEfHxFQTI0MUYtQkt8fHx8MjAyMTAxMDF8MjAyMTAxMDF8fHx8fHwyMHwzMnx8fHxEaXZlcnNpZmllZCBNZWRpYSBHcm91cHx8MyBNQVJLRVQgU1R8fHx8fEtFTklMV09SVEh8NzAzM3xOSnxVU3x8fHxEaXZlcnNpZmllZCBNZWRpYSBHcm91cHx8Mzg1IE1BUktFVCBTVHx8fHx8S0VOSUxXT1JUSHx8fFVTDQoyMTIyMjN8R29sZGVuIERhdGFfSktfTWFzc3wxfDJ8MjAyMTAxMDF8U0R8fEVBMjQxRi1CS3x8fHwyMDIxMDEwMXwyMDIxMDEwMXx8fHx8fDIwfDMyfHx8fERpdmVyc2lmaWVkIE1lZGlhIEdyb3VwfHwzODUgTUFSS0VUIFNUfHx8fHxLRU5JTFdPUlRIfDcwMzN8Tkp8VVN8fHx8RGl2ZXJzaWZpZWQgTWVkaWEgR3JvdXB8fDM4NSBNQVJLRVQgU1R8fHx8fHw3MDMzfE5KfFVTDQoyMTIyMjN8R29sZGVuIERhdGFfSktfTWFzc3wxfDJ8MjAyMTAxMDF8U0R8fEUzMjgtUnx8fHwyMDIxMDEwMXwyMDIxMDEwMXx8fHx8fDIwfDMyfHx8fERpdmVyc2lmaWVkIE1lZGlhIEdyb3VwfHwzODUgTUFSS0VUIFNUfHx8fHxLRU5JTFdPUlRIfDcwMzN8Tkp8VVN8fHx8RGl2ZXJzaWZpZWQgTWVkaWEgR3JvdXB8fDM4NSBNQVJLRVQgU1R8fHx8fEtFTklMV09SVEh8NzAzM3xOSnxVUw0KMjEyMjIzfEdvbGRlbiBEYXRhX0pLX01hc3N8MXwyfDIwMjEwMTAxfFNEfHxFQTI0MUYtQkt8fHx8MjAyMTAxMDF8MjAyMTAxMDF8fHx8fHwyMHwzMnx8fHxEaXZlcnNpZmllZCBNZWRpYSBHcm91cHx8fHx8fHx8fE5KfFVTfHx8fERpdmVyc2lmaWVkIE1lZGlhIEdyb3VwfHwzODUgTUFSS0VUIFNUfHx8fHxLRU5JTFdPUlRIfDcwMzN8Tkp8VVMNCg=="
     },
     "output": {
       "foundUrl": "https://www.functionizeapp.com/tools/fileviewer",
       "result": null,
       "baseFileName": "6_chrome_new_1668018653699_DVHVBC3OB0",
       "displayScreenshotPath": "",
       "verificationResults": [],
       "postScreenshot": {
         "dimensions": null,
         "phash": null,
         "filename": "",
         "localPath": "",
         "windowState": null,
         "offset": null,
         "cloudPath": ""
       },
       "elementResult": {
         "selectionReason": "",
         "selectionType": "NONE",
         "unusedElements": [],
         "selectedElement": null,
         "failedSelection": false,
         "reusedElementResult": false,
         "warnings": []
       },
       "preScreenshot": {
         "phash": null,
         "dimensions": null,
         "windowState": null,
         "localPath": "",
         "filename": "",
         "offset": null,
         "cloudPath": ""
       }
     }
   },
   "variables": {
     "project": {},
     "local": {
       "pageTitle": "Functionize"
     }
   },
   "previousSteps": [
     {
       "path": "",
       "output": {
         "result": {
           "resultCode": "PASS",
           "executorResults": [
             {
               "successful": true,
               "threshold": 0,
               "confidenceScore": 100,
               "executionMethodName": "pageinitMethod",
               "evaluatorResults": [
                 {
                   "evaluatorName": "empty",
                   "score": 100
                 }
               ],
               "totalEvals": 1
             }
           ],
           "results": [
             {
               "result": "SUCCESS",
               "message": ""
             }
           ],
           "pageLoad": null,
           "actionMessages": []
         },
         "baseFileName": "1_chrome_new_1668018629135_67G6E23YJG",
         "preScreenshot": {
           "dimensions": {
             "width": 1723,
             "height": 960
           },
           "windowState": [
             {
               "viewportHeight": 876,
               "x": 3,
               "type": "MAIN",
               "lastUpdated": 0,
               "scrollTop": 0,
               "id": "mainWindow",
               "scrollLeft": 0,
               "y": 80,
               "viewportWidth": 1715,
               "handle": "CDwindow-553275C3F82A1DD5800898BFABDDFC69"
             }
           ],
           "localPath": "/functionize/runtime/test_sessions/screenshots/1_chrome_new_1668018629135_67G6E23YJG_pre.png",
           "filename": "1_chrome_new_1668018629135_67G6E23YJG_pre.png",
           "cloudPath": "",
           "offset": null,
           "phash": null
         },
         "verificationResults": [],
         "displayScreenshotPath": "/functionize/runtime/test_sessions/screenshots/1_chrome_new_1668018629135_67G6E23YJG_post.jpg",
         "foundUrl": "https://www.google.com/",
         "postScreenshot": {
           "filename": "1_chrome_new_1668018629135_67G6E23YJG_post.jpg",
           "offset": null,
           "dimensions": {
             "height": 960,
             "width": 1723
           },
           "cloudPath": "",
           "phash": null,
           "windowState": [
             {
               "scrollTop": 0,
               "scrollLeft": 0,
               "viewportWidth": 1715,
               "x": 3,
               "lastUpdated": 0,
               "handle": "CDwindow-553275C3F82A1DD5800898BFABDDFC69",
               "y": 80,
               "id": "mainWindow",
               "viewportHeight": 876,
               "type": "MAIN"
             }
           ],
           "localPath": "/functionize/runtime/test_sessions/screenshots/1_chrome_new_1668018629135_67G6E23YJG_post.jpg"
         },
         "elementResult": {
           "selectedElement": null,
           "selectionType": "NONE",
           "warnings": [],
           "reusedElementResult": false,
           "unusedElements": [],
           "selectionReason": "",
           "failedSelection": false
         }
       },
       "optional": false,
       "action": {
         "type": "PAGE_INIT",
         "pageTitle": "",
         "url": "https://www.google.com/",
         "id": "1668018629135_67G6E23YJG"
       }
     },
     {
       "path": "",
       "optional": false,
       "action": {
         "target": "FILE_VIEWER",
         "id": "1668018638646_AFLQITFAGG",
         "type": "FILE_VIEWER",
         "newPopup": ""
       },
       "output": {
         "displayScreenshotPath": "/functionize/runtime/test_sessions/screenshots/2_chrome_new_1668018638646_AFLQITFAGG_post.jpg",
         "preScreenshot": {
           "offset": null,
           "localPath": "/functionize/runtime/test_sessions/screenshots/2_chrome_new_1668018638646_AFLQITFAGG_pre.png",
           "filename": "2_chrome_new_1668018638646_AFLQITFAGG_pre.png",
           "phash": null,
           "windowState": [
             {
               "scrollTop": 0,
               "viewportHeight": 876,
               "type": "MAIN",
               "viewportWidth": 1715,
               "handle": "CDwindow-553275C3F82A1DD5800898BFABDDFC69",
               "x": 3,
               "lastUpdated": 0,
               "id": "mainWindow",
               "y": 80,
               "scrollLeft": 0
             }
           ],
           "dimensions": {
             "width": 1723,
             "height": 960
           },
           "cloudPath": ""
         },
         "baseFileName": "2_chrome_new_1668018638646_AFLQITFAGG",
         "elementResult": {
           "warnings": [],
           "selectionReason": "",
           "unusedElements": [],
           "failedSelection": false,
           "selectionType": "NONE",
           "reusedElementResult": false,
           "selectedElement": null
         },
         "foundUrl": "https://www.google.com/",
         "postScreenshot": {
           "windowState": [
             {
               "viewportHeight": 876,
               "id": "mainWindow",
               "lastUpdated": 0,
               "viewportWidth": 1715,
               "x": 3,
               "handle": "CDwindow-553275C3F82A1DD5800898BFABDDFC69",
               "y": 80,
               "scrollTop": 0,
               "scrollLeft": 0,
               "type": "MAIN"
             }
           ],
           "localPath": "/functionize/runtime/test_sessions/screenshots/2_chrome_new_1668018638646_AFLQITFAGG_post.jpg",
           "dimensions": {
             "width": 1723,
             "height": 960
           },
           "phash": null,
           "offset": null,
           "filename": "2_chrome_new_1668018638646_AFLQITFAGG_post.jpg",
           "cloudPath": ""
         },
         "verificationResults": [],
         "result": {
           "results": [
             {
               "result": "SUCCESS",
               "message": ""
             }
           ],
           "actionMessages": [],
           "pageLoad": null,
           "executorResults": [
             {
               "totalEvals": 1,
               "executionMethodName": "fileViewerExecution",
               "successful": true,
               "confidenceScore": 100,
               "evaluatorResults": [
                 {
                   "score": 100,
                   "evaluatorName": "empty"
                 }
               ],
               "threshold": 0
             }
           ],
           "resultCode": "PASS"
         }
       }
     },
     {
       "path": "",
       "action": {
         "pageTitle": "",
         "type": "PAGE_INIT",
         "id": "1668018639466_11HEV2KTFE",
         "url": "https://www.functionizeapp.com/tools/fileviewer"
       },
       "optional": false,
       "output": {
         "baseFileName": "3_chrome_new_1668018639466_11HEV2KTFE",
         "verificationResults": [],
         "postScreenshot": {
           "localPath": "/functionize/runtime/test_sessions/screenshots/3_chrome_new_1668018639466_11HEV2KTFE_post.jpg",
           "offset": null,
           "dimensions": {
             "width": 1723,
             "height": 960
           },
           "cloudPath": "",
           "filename": "3_chrome_new_1668018639466_11HEV2KTFE_post.jpg",
           "phash": null,
           "windowState": [
             {
               "viewportHeight": 876,
               "x": 3,
               "id": "mainWindow",
               "type": "MAIN",
               "handle": "CDwindow-553275C3F82A1DD5800898BFABDDFC69",
               "y": 80,
               "viewportWidth": 1715,
               "lastUpdated": 0,
               "scrollTop": 0,
               "scrollLeft": 0
             }
           ]
         },
         "displayScreenshotPath": "/functionize/runtime/test_sessions/screenshots/3_chrome_new_1668018639466_11HEV2KTFE_post.jpg",
         "elementResult": {
           "reusedElementResult": false,
           "failedSelection": false,
           "warnings": [],
           "unusedElements": [],
           "selectionReason": "",
           "selectionType": "NONE",
           "selectedElement": null
         },
         "foundUrl": "https://www.functionizeapp.com/tools/fileviewer",
         "preScreenshot": {
           "cloudPath": "",
           "phash": null,
           "offset": null,
           "windowState": [
             {
               "lastUpdated": 0,
               "y": 80,
               "scrollLeft": 0,
               "viewportWidth": 1715,
               "id": "mainWindow",
               "handle": "CDwindow-553275C3F82A1DD5800898BFABDDFC69",
               "x": 3,
               "viewportHeight": 876,
               "scrollTop": 0,
               "type": "MAIN"
             }
           ],
           "localPath": "/functionize/runtime/test_sessions/screenshots/3_chrome_new_1668018639466_11HEV2KTFE_pre.png",
           "dimensions": {
             "width": 1723,
             "height": 960
           },
           "filename": "3_chrome_new_1668018639466_11HEV2KTFE_pre.png"
         },
         "result": {
           "results": [
             {
               "message": "",
               "result": "SUCCESS"
             }
           ],
           "actionMessages": [],
           "resultCode": "PASS",
           "pageLoad": null,
           "executorResults": [
             {
               "confidenceScore": 100,
               "successful": true,
               "evaluatorResults": [
                 {
                   "evaluatorName": "empty",
                   "score": 100
                 }
               ],
               "totalEvals": 1,
               "threshold": 0,
               "executionMethodName": "pageinitMethod"
             }
           ]
         }
       }
     },
     {
       "action": {
         "eventX": 223,
         "mouseY": 9,
         "onClickAttr": "",
         "type": "CLICK",
         "id": "1668018646491_8MO0026561",
         "newPopup": "",
         "attributeType": "file",
         "failOnInvisible": false,
         "mouseX": 35,
         "eventY": 320
       },
       "optional": false,
       "path": "",
       "output": {
         "verificationResults": [],
         "foundUrl": "https://www.functionizeapp.com/tools/fileviewer",
         "displayScreenshotPath": "/functionize/runtime/test_sessions/screenshots/4_chrome_new_1668018646491_8MO0026561_pre.png",
         "baseFileName": "4_chrome_new_1668018646491_8MO0026561",
         "result": {
           "executorResults": [
             {
               "successful": true,
               "executionMethodName": "nativeActionByPaint",
               "totalEvals": 0,
               "evaluatorResults": [],
               "threshold": 0,
               "confidenceScore": 0
             }
           ],
           "results": [
             {
               "message": "",
               "result": "SUCCESS"
             }
           ],
           "pageLoad": null,
           "resultCode": "PASS",
           "actionMessages": []
         },
         "preScreenshot": {
           "dimensions": {
             "width": 1723,
             "height": 960
           },
           "localPath": "/functionize/runtime/test_sessions/screenshots/4_chrome_new_1668018646491_8MO0026561_pre.png",
           "filename": "4_chrome_new_1668018646491_8MO0026561_pre.png",
           "offset": {
             "y": 81,
             "x": 5
           },
           "phash": null,
           "windowState": [
             {
               "viewportHeight": 876,
               "viewportWidth": 1715,
               "lastUpdated": 0,
               "id": "mainWindow",
               "y": 80,
               "scrollTop": 0,
               "type": "MAIN",
               "x": 3,
               "handle": "CDwindow-553275C3F82A1DD5800898BFABDDFC69",
               "scrollLeft": 0
             }
           ],
           "cloudPath": ""
         },
         "elementResult": {
           "warnings": [],
           "reusedElementResult": false,
           "selectedElement": {
             "selectors": [],
             "mlId": "147",
             "matchScore": 0,
             "location": {
               "x": 185,
               "y": 310
             },
             "attributes": {
               "children": [
                 {},
                 {},
                 {},
                 {},
                 {}
               ],
               "attributes": {
                 "nodetype": "1",
                 "opacity": "1",
                 "text": "",
                 "display": "block",
                 "right": "0.0",
                 "visibility": "visible",
                 "color": "rgb(103, 103, 103)",
                 "width": "277.0",
                 "type": "file",
                 "element": "INPUT",
                 "top": "310.78125",
                 "zi": "auto",
                 "left": "185.82812",
                 "backendnodeid": "89",
                 "pv": "1",
                 "height": "22.0",
                 "id": "viewserFile",
                 "position": "static",
                 "backgroundcolor": "rgba(0, 0, 0, 0)",
                 "name": "viewserFile"
               },
               "parents": [
                 {},
                 {},
                 {},
                 {},
                 {}
               ]
             },
             "desktopRelativePosition": {
               "point": {
                 "y": 391,
                 "x": 190
               },
               "height": 22,
               "y": 391,
               "width": 277,
               "dimension": {
                 "width": 277,
                 "height": 22
               },
               "x": 190
             },
             "size": {
               "width": 277,
               "height": 22
             },
             "stale": false,
             "contentEditable": false,
             "paintPoint": {
               "y": 391,
               "x": 190
             },
             "mlConfidence": 1,
             "screenshotRelativePosition": {
               "y": 391,
               "height": 22,
               "width": 277,
               "point": {
                 "y": 391,
                 "x": 190
               },
               "x": 190,
               "dimension": {
                 "height": 22,
                 "width": 277
               }
             },
             "viewportRelativePosition": {
               "width": 277,
               "x": 185.828125,
               "bottom": 332.78125,
               "right": 462.828125,
               "left": 185.828125,
               "height": 22,
               "y": 310.78125,
               "top": 310.78125
             },
             "displayed": true
           },
           "unusedElements": [],
           "selectionReason": "",
           "failedSelection": false,
           "selectionType": "ML"
         },
         "postScreenshot": {
           "localPath": "/functionize/runtime/test_sessions/screenshots/4_chrome_new_1668018646491_8MO0026561_post.jpg",
           "filename": "4_chrome_new_1668018646491_8MO0026561_post.jpg",
           "dimensions": {
             "height": 960,
             "width": 1723
           },
           "phash": null,
           "windowState": [
             {
               "id": "mainWindow",
               "y": 80,
               "lastUpdated": 0,
               "viewportWidth": 1715,
               "x": 3,
               "type": "MAIN",
               "handle": "CDwindow-553275C3F82A1DD5800898BFABDDFC69",
               "viewportHeight": 876,
               "scrollLeft": 0,
               "scrollTop": 0
             }
           ],
           "cloudPath": "",
           "offset": null
         }
       }
     },
     {
       "output": {
         "verificationResults": [],
         "founderl": "https://www.functionizeapp.com/tools/fileviewer",
         "displayScreenshotPath": "/functionize/runtime/test_sessions/screenshots/5_chrome_new_1668039002334_WZNUREELYD_post.jpg",
         "elementResult": {
           "unusedElements": [],
           "failedSelection": false,
           "reusedElementResult": false,
           "selectionType": "NONE",
           "warnings": [],
           "selectionReason": "",
           "selectedElement": null
         },
         "preScreenshot": {
           "filename": "5_chrome_new_1668039002334_WZNUREELYD_pre.png",
           "dimensions": {
             "width": 1723,
             "height": 960
           },
           "windowState": [
             {
               "y": 80,
               "viewportHeight": 876,
               "handle": "CDwindow-553275C3F82A1DD5800898BFABDDFC69",
               "x": 3,
               "id": "mainWindow",
               "scrollLeft": 0,
               "scrollTop": 0,
               "type": "MAIN",
               "viewportWidth": 1715,
               "lastUpdated": 0
             }
           ],
           "cloudPath": "",
           "offset": null,
           "localPath": "/functionize/runtime/test_sessions/screenshots/5_chrome_new_1668039002334_WZNUREELYD_pre.png",
           "phash": null
         },
         "result": {
           "actionMessages": [],
           "results": [
             {
               "message": "",
               "result": "SUCCESS"
             }
           ],
           "executorResults": [
             {
               "evaluatorResults": [
                 {
                   "evaluatorName": "empty",
                   "score": 100
                 }
               ],
               "confidenceScore": 100,
               "executionMethodName": "javascriptMethod",
               "successful": true,
               "totalEvals": 1,
               "threshold": 0
             }
           ],
           "resultCode": "PASS",
           "pageLoad": null
         },
         "baseFileName": "5_chrome_new_1668039002334_WZNUREELYD",
         "postScreenshot": {
           "filename": "5_chrome_new_1668039002334_WZNUREELYD_post.jpg",
           "cloudPath": "",
           "dimensions": {
             "width": 1723,
             "height": 960
           },
           "phash": null,
           "localPath": "/functionize/runtime/test_sessions/screenshots/5_chrome_new_1668039002334_WZNUREELYD_post.jpg",
           "offset": null,
           "windowState": [
             {
               "y": 80,
               "type": "MAIN",
               "id": "mainWindow",
               "handle": "CDwindow-553275C3F82A1DD5800898BFABDDFC69",
               "lastUpdated": 0,
               "viewportWidth": 1715,
               "x": 3,
               "scrollTop": 0,
               "viewportHeight": 876,
               "scrollLeft": 0
             }
           ]
         }
       },
       "optional": false,
       "path": "",
       "action": {
         "elementCode": "fze.local.pageTitle = document.title;",
         "type": "SET_VARIABLE",
         "id": "1668039002334_WZNUREELYD"
       }
     }
   ],
 }

Manipulating Tests Via Extensions

Now that you have a reasonable overview of the data models used in Functionize, we are going to cover how you can manipulate values in a test execution by returning and overloading received data. All we need is to provide an updated JSON object with the relevant fields redefined and sent back:

let result = {
"updates": {
"variables": {
"local": {
   "product": "Jacket"
}
    }
  }
};
res.status(200).send(result);

 

In the above example, we set a new local variable 'product' with a value of 'Jacket'. One can also simply fail a step, upsetting the result object in outputs:

let result = {
"updates": {
"step": {
"output": {
    "results": ["result": "FAIL", "message": "Step failed in extension."]
}
    }
  }
};
 res.status(200).send(result);