[ { "id": "e2e-flow-tab", "type": "tab", "label": "E2E Test Flow", "disabled": false, "info": "End-to-end test flow that verifies EVOLV nodes are loaded and messages can flow through the pipeline." }, { "id": "inject-trigger", "type": "inject", "z": "e2e-flow-tab", "name": "Trigger after 2s", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": true, "onceDelay": "2", "topic": "e2e-test", "payload": "", "payloadType": "date", "x": 150, "y": 100, "wires": [ ["simulate-measurement"] ] }, { "id": "simulate-measurement", "type": "function", "z": "e2e-flow-tab", "name": "Simulate Measurement", "func": "msg.payload = {\n measurement: 'e2e_test',\n tags: { source: 'evolv-e2e', node: 'measurement-sim' },\n fields: { value: Math.random() * 100, status: 1 },\n timestamp: Date.now()\n};\nmsg.topic = 'e2e/measurement';\nnode.status({ fill: 'green', shape: 'dot', text: 'sent' });\nreturn msg;", "outputs": 1, "timeout": "", "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 370, "y": 100, "wires": [ ["debug-output"] ] }, { "id": "debug-output", "type": "debug", "z": "e2e-flow-tab", "name": "E2E Debug Output", "active": true, "tosidebar": true, "console": true, "tostatus": true, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 580, "y": 100, "wires": [] } ]