From c2aa9a53378fcd92c1fc50ddf4dce7afa4676f61 Mon Sep 17 00:00:00 2001 From: nakanishi Date: Tue, 23 Oct 2018 14:01:23 +0900 Subject: [PATCH] Automatically adjust node deployment --- .../pageobjects/editor/workspace_page.js | 43 +++++- test/editor/specs/editor/workspace_uispec.js | 5 +- .../scenario/cookbook_endpoint_uispec.js | 136 +++++++++--------- .../specs/scenario/cookbook_mqtt_uispec.js | 32 ++--- test/editor/specs/scenario/cookbook_uispec.js | 88 ++++++------ 5 files changed, 165 insertions(+), 139 deletions(-) diff --git a/test/editor/pageobjects/editor/workspace_page.js b/test/editor/pageobjects/editor/workspace_page.js index e1a57d86d..c212f17d3 100644 --- a/test/editor/pageobjects/editor/workspace_page.js +++ b/test/editor/pageobjects/editor/workspace_page.js @@ -21,12 +21,32 @@ var events = require("nr-test-utils").require("@node-red/runtime/lib/events.js") var palette = require("./palette_page"); var nodeFactory = require("../nodes/nodefactory_page"); +var flowLayout = { + flowRightEnd : 600, + widthInterval : 300, + heightInterval : 80 +}; + +var previousX = -flowLayout.widthInterval; +var previousY = 0; + function addNode(type, x, y) { - var offsetX = x ? x : 0; - var offsetY = y ? y : 0; + if (x !== undefined) { + previousX = x; + if (y !== undefined) { + previousY = y; + } + } else { + if (previousX < flowLayout.flowRightEnd) { + previousX = previousX + flowLayout.widthInterval; + } else { + previousX = 0; + previousY = previousY + flowLayout.heightInterval; + } + } browser.moveToObject(palette.getId(type)); browser.buttonDown(); - browser.moveToObject("#palette-search", offsetX + 300, offsetY + 100); // adjust to the top-left corner of workspace. + browser.moveToObject("#palette-search", previousX + 300, previousY + 100); // adjust to the top-left corner of workspace. browser.buttonUp(); // Last node is the one that has been created right now. var nodeElement = browser.elements('//*[@class="node nodegroup"][last()]'); @@ -55,8 +75,21 @@ function deploy() { browser.waitForText('#btn-deploy', 2000); } +function init(width, height) { + deleteAllNodes(); + + if (width !== undefined) { + flowLayout.widthInterval = width; + } + if (height !== undefined) { + flowLayout.heightInterval = height; + } + previousX = -flowLayout.widthInterval; + previousY = 0; +} + module.exports = { addNode: addNode, - deleteAllNodes: deleteAllNodes, - deploy: deploy + deploy: deploy, + init: init }; diff --git a/test/editor/specs/editor/workspace_uispec.js b/test/editor/specs/editor/workspace_uispec.js index 93951f857..3cb17415e 100644 --- a/test/editor/specs/editor/workspace_uispec.js +++ b/test/editor/specs/editor/workspace_uispec.js @@ -22,11 +22,10 @@ var helper = require("../../editor_helper"); var debugTab = require('../../pageobjects/editor/debugTab_page'); var workspace = require('../../pageobjects/editor/workspace_page'); -var nodeWidth = 200; describe('Workspace', function() { beforeEach(function() { - workspace.deleteAllNodes(); + workspace.init(); }); before(function() { @@ -43,7 +42,7 @@ describe('Workspace', function() { it('should output a timestamp', function() { var injectNode = workspace.addNode("inject"); - var debugNode = workspace.addNode("debug", nodeWidth); + var debugNode = workspace.addNode("debug"); injectNode.connect(debugNode); workspace.deploy(); diff --git a/test/editor/specs/scenario/cookbook_endpoint_uispec.js b/test/editor/specs/scenario/cookbook_endpoint_uispec.js index da672a747..17f1ff970 100644 --- a/test/editor/specs/scenario/cookbook_endpoint_uispec.js +++ b/test/editor/specs/scenario/cookbook_endpoint_uispec.js @@ -20,14 +20,12 @@ var helper = require("../../editor_helper"); var debugTab = require('../../pageobjects/editor/debugTab_page'); var workspace = require('../../pageobjects/editor/workspace_page'); -var nodeWidth = 200; -var nodeHeight = 100; var httpNodeRoot = "/api"; // https://cookbook.nodered.org/ describe('cookbook', function() { beforeEach(function() { - workspace.deleteAllNodes(); + workspace.init(); }); before(function() { @@ -41,8 +39,8 @@ describe('cookbook', function() { describe('HTTP endpoints', function () { it('create an HTTP endpoint', function () { var httpinNode = workspace.addNode("httpin"); - var templateNode = workspace.addNode("template", nodeWidth); - var httpResponseNode = workspace.addNode("httpResponse", nodeWidth * 2); + var templateNode = workspace.addNode("template"); + var httpResponseNode = workspace.addNode("httpResponse"); httpinNode.edit(); httpinNode.setMethod("get"); @@ -59,9 +57,9 @@ describe('cookbook', function() { templateNode.connect(httpResponseNode); // The code for confirmation starts from here. - var injectNode = workspace.addNode("inject", 0, nodeHeight); - var httpRequestNode = workspace.addNode("httpRequest", nodeWidth, nodeHeight); - var debugNode = workspace.addNode("debug", nodeWidth * 2, nodeHeight); + var injectNode = workspace.addNode("inject"); + var httpRequestNode = workspace.addNode("httpRequest"); + var debugNode = workspace.addNode("debug"); httpRequestNode.edit(); httpRequestNode.setUrl(helper.url() + httpNodeRoot + '/hello'); @@ -81,8 +79,8 @@ describe('cookbook', function() { it('handle query parameters passed to an HTTP endpoint', function () { var httpinNode = workspace.addNode("httpin"); - var templateNode = workspace.addNode("template", nodeWidth); - var httpResponseNode = workspace.addNode("httpResponse", nodeWidth * 2); + var templateNode = workspace.addNode("template"); + var httpResponseNode = workspace.addNode("httpResponse"); httpinNode.edit(); httpinNode.setMethod("get"); @@ -99,9 +97,9 @@ describe('cookbook', function() { templateNode.connect(httpResponseNode); // The code for confirmation starts from here. - var injectNode = workspace.addNode("inject", 0, nodeHeight); - var httpRequestNode = workspace.addNode("httpRequest", nodeWidth, nodeHeight); - var debugNode = workspace.addNode("debug", nodeWidth * 2, nodeHeight); + var injectNode = workspace.addNode("inject"); + var httpRequestNode = workspace.addNode("httpRequest"); + var debugNode = workspace.addNode("debug"); httpRequestNode.edit(); httpRequestNode.setUrl(helper.url() + httpNodeRoot + '/hello-query?name=Nick'); @@ -121,8 +119,8 @@ describe('cookbook', function() { it('handle url parameters in an HTTP endpoint', function () { var httpinNode = workspace.addNode("httpin"); - var templateNode = workspace.addNode("template", nodeWidth * 2); - var httpResponseNode = workspace.addNode("httpResponse", nodeWidth * 3); + var templateNode = workspace.addNode("template"); + var httpResponseNode = workspace.addNode("httpResponse"); httpinNode.edit(); httpinNode.setMethod("get"); @@ -139,9 +137,9 @@ describe('cookbook', function() { templateNode.connect(httpResponseNode); // The code for confirmation starts from here. - var injectNode = workspace.addNode("inject", 0, nodeHeight); - var httpRequestNode = workspace.addNode("httpRequest", nodeWidth, nodeHeight); - var debugNode = workspace.addNode("debug", nodeWidth * 2, nodeHeight); + var injectNode = workspace.addNode("inject"); + var httpRequestNode = workspace.addNode("httpRequest"); + var debugNode = workspace.addNode("debug"); httpRequestNode.edit(); httpRequestNode.setUrl(helper.url() + httpNodeRoot + '/hello-param/Dave'); @@ -161,8 +159,8 @@ describe('cookbook', function() { it('access HTTP request headers', function () { var httpinNode = workspace.addNode("httpin"); - var templateNode = workspace.addNode("template", nodeWidth * 1.5); - var httpResponseNode = workspace.addNode("httpResponse", nodeWidth * 2.5); + var templateNode = workspace.addNode("template"); + var httpResponseNode = workspace.addNode("httpResponse"); httpinNode.edit(); httpinNode.setMethod("get"); @@ -179,10 +177,10 @@ describe('cookbook', function() { templateNode.connect(httpResponseNode); // The code for confirmation starts from here. - var injectNode = workspace.addNode("inject", 0, nodeHeight); - var changeNode = workspace.addNode("change", nodeWidth, nodeHeight); - var httpRequestNode = workspace.addNode("httpRequest", nodeWidth * 2, nodeHeight); - var debugNode = workspace.addNode("debug", nodeWidth * 3, nodeHeight); + var injectNode = workspace.addNode("inject", 0, 100); + var changeNode = workspace.addNode("change"); + var httpRequestNode = workspace.addNode("httpRequest"); + var debugNode = workspace.addNode("debug"); changeNode.edit(); changeNode.ruleSet("headers", "msg", '{"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)"}', "json"); @@ -207,12 +205,12 @@ describe('cookbook', function() { it('include data captured in another flow', function () { var injectNodeTimestamp = workspace.addNode("inject"); - var changeNodeStore = workspace.addNode("change", nodeWidth); + var changeNodeStore = workspace.addNode("change"); - var httpinNode = workspace.addNode("httpin", 0, nodeHeight); - var changeNodeCopy = workspace.addNode("change", nodeWidth * 2, nodeHeight); - var templateNode = workspace.addNode("template", nodeWidth * 3, nodeHeight); - var httpResponseNode = workspace.addNode("httpResponse", nodeWidth * 4, nodeHeight); + var httpinNode = workspace.addNode("httpin", 0, 100); + var changeNodeCopy = workspace.addNode("change"); + var templateNode = workspace.addNode("template"); + var httpResponseNode = workspace.addNode("httpResponse"); injectNodeTimestamp.edit(); injectNodeTimestamp.setPayload("date"); @@ -244,9 +242,9 @@ describe('cookbook', function() { templateNode.connect(httpResponseNode); // The code for confirmation starts from here. - var injectNodeCheck = workspace.addNode("inject", 0, nodeHeight * 2); - var httpRequestNode = workspace.addNode("httpRequest", nodeWidth, nodeHeight * 2); - var debugNode = workspace.addNode("debug", nodeWidth * 2, nodeHeight * 2); + var injectNodeCheck = workspace.addNode("inject", 0, 300); + var httpRequestNode = workspace.addNode("httpRequest"); + var debugNode = workspace.addNode("debug"); httpRequestNode.edit(); httpRequestNode.setMethod("GET"); @@ -268,9 +266,9 @@ describe('cookbook', function() { it('serve JSON content', function () { var httpinNode = workspace.addNode("httpin"); - var templateNode = workspace.addNode("template", nodeWidth); - var changeNode = workspace.addNode("change", nodeWidth * 2); - var httpResponseNode = workspace.addNode("httpResponse", nodeWidth * 3); + var templateNode = workspace.addNode("template"); + var changeNode = workspace.addNode("change"); + var httpResponseNode = workspace.addNode("httpResponse"); httpinNode.edit(); httpinNode.setMethod("get"); @@ -294,9 +292,9 @@ describe('cookbook', function() { changeNode.connect(httpResponseNode); // The code for confirmation starts from here. - var injectNode = workspace.addNode("inject", 0, nodeHeight); - var httpRequestNode = workspace.addNode("httpRequest", nodeWidth, nodeHeight); - var debugNode = workspace.addNode("debug", nodeWidth * 2, nodeHeight); + var injectNode = workspace.addNode("inject", 0, 200); + var httpRequestNode = workspace.addNode("httpRequest"); + var debugNode = workspace.addNode("debug"); httpRequestNode.edit(); httpRequestNode.setMethod("GET"); @@ -322,9 +320,9 @@ describe('cookbook', function() { it('serve a local file', function () { var httpinNode = workspace.addNode("httpin"); - var fileinNode = workspace.addNode("filein", nodeWidth); - var changeNode = workspace.addNode("change", nodeWidth * 2, nodeHeight); - var httpResponseNode = workspace.addNode("httpResponse", nodeWidth * 3.5, nodeHeight); + var fileinNode = workspace.addNode("filein"); + var changeNode = workspace.addNode("change", 200, 100); + var httpResponseNode = workspace.addNode("httpResponse"); httpinNode.edit(); httpinNode.setMethod("get"); @@ -347,9 +345,9 @@ describe('cookbook', function() { changeNode.connect(httpResponseNode); // The code for confirmation starts from here. - var injectNode = workspace.addNode("inject", 0, nodeHeight * 2); - var httpRequestNode = workspace.addNode("httpRequest", nodeWidth, nodeHeight * 2); - var debugNode = workspace.addNode("debug", nodeWidth * 2, nodeHeight * 2); + var injectNode = workspace.addNode("inject", 0, 200); + var httpRequestNode = workspace.addNode("httpRequest"); + var debugNode = workspace.addNode("debug"); httpRequestNode.edit(); httpRequestNode.setUrl(helper.url() + httpNodeRoot + '/hello-file'); @@ -369,8 +367,8 @@ describe('cookbook', function() { it('post raw data to a flow', function() { var httpinNode = workspace.addNode("httpin"); - var templateNode = workspace.addNode("template", nodeWidth * 2); - var httpResponseNode = workspace.addNode("httpResponse", nodeWidth * 3); + var templateNode = workspace.addNode("template"); + var httpResponseNode = workspace.addNode("httpResponse"); httpinNode.edit(); httpinNode.setMethod("post"); @@ -387,9 +385,9 @@ describe('cookbook', function() { templateNode.connect(httpResponseNode); // The code for confirmation starts from here. - var injectNode = workspace.addNode("inject", 0, nodeHeight); - var httpRequestNode = workspace.addNode("httpRequest", nodeWidth, nodeHeight); - var debugNode = workspace.addNode("debug", nodeWidth * 2, nodeHeight); + var injectNode = workspace.addNode("inject"); + var httpRequestNode = workspace.addNode("httpRequest"); + var debugNode = workspace.addNode("debug"); injectNode.edit() injectNode.setPayload("str", "Nick"); @@ -413,8 +411,8 @@ describe('cookbook', function() { it('post form data to a flow', function () { var httpinNode = workspace.addNode("httpin"); - var templateNode = workspace.addNode("template", nodeWidth * 1.5); - var httpResponseNode = workspace.addNode("httpResponse", nodeWidth * 2.5); + var templateNode = workspace.addNode("template"); + var httpResponseNode = workspace.addNode("httpResponse"); httpinNode.edit(); httpinNode.setMethod("post"); @@ -431,10 +429,10 @@ describe('cookbook', function() { templateNode.connect(httpResponseNode); // The code for confirmation starts from here. - var injectNode = workspace.addNode("inject", 0, nodeHeight); - var changeNode = workspace.addNode("change", nodeWidth, nodeHeight); - var httpRequestNode = workspace.addNode("httpRequest", nodeWidth * 2, nodeHeight); - var debugNode = workspace.addNode("debug", nodeWidth * 3, nodeHeight); + var injectNode = workspace.addNode("inject", 0, 100); + var changeNode = workspace.addNode("change"); + var httpRequestNode = workspace.addNode("httpRequest"); + var debugNode = workspace.addNode("debug"); injectNode.edit() injectNode.setPayload("str", "name=Nick"); @@ -463,8 +461,8 @@ describe('cookbook', function() { it('post JSON data to a flow', function() { var httpinNode = workspace.addNode("httpin"); - var templateNode = workspace.addNode("template", nodeWidth * 2); - var httpResponseNode = workspace.addNode("httpResponse", nodeWidth * 3); + var templateNode = workspace.addNode("template"); + var httpResponseNode = workspace.addNode("httpResponse"); httpinNode.edit(); httpinNode.setMethod("post"); @@ -481,10 +479,10 @@ describe('cookbook', function() { templateNode.connect(httpResponseNode); // The code for confirmation starts from here. - var injectNode = workspace.addNode("inject", 0, nodeHeight); - var changeNode = workspace.addNode("change", nodeWidth, nodeHeight); - var httpRequestNode = workspace.addNode("httpRequest", nodeWidth * 2, nodeHeight); - var debugNode = workspace.addNode("debug", nodeWidth * 3, nodeHeight); + var injectNode = workspace.addNode("inject", 0, 100); + var changeNode = workspace.addNode("change"); + var httpRequestNode = workspace.addNode("httpRequest"); + var debugNode = workspace.addNode("debug"); injectNode.edit() injectNode.setPayload("json", '{"name":"Nick"}'); @@ -515,16 +513,16 @@ describe('cookbook', function() { this.timeout(60000); var httpinNodeFormat = workspace.addNode("httpin"); - var functionNodeFormat = workspace.addNode("function", nodeWidth * 1.5); - var templateNode = workspace.addNode("template", nodeWidth * 2.5); - var httpResponseNode = workspace.addNode("httpResponse", nodeWidth * 3.5); + var functionNodeFormat = workspace.addNode("function", 240); + var templateNode = workspace.addNode("template", 400); + var httpResponseNode = workspace.addNode("httpResponse", 600); - var httpinNodeAdd = workspace.addNode("httpin", 0, nodeHeight); - var functionNodeAdd = workspace.addNode("function", nodeWidth * 1.5, nodeHeight); - var changeNode = workspace.addNode("change", nodeWidth * 2.5, nodeHeight * 1.5); + var httpinNodeAdd = workspace.addNode("httpin", 0, 100); + var functionNodeAdd = workspace.addNode("function", 240); + var changeNode = workspace.addNode("change", 400); - var httpinNodeClear = workspace.addNode("httpin", 0, nodeHeight * 2); - var functionNodeClear = workspace.addNode("function", nodeWidth * 1.5, nodeHeight * 2); + var httpinNodeClear = workspace.addNode("httpin", 0, 200); + var functionNodeClear = workspace.addNode("function", 240); httpinNodeFormat.edit(); httpinNodeFormat.setMethod("get"); diff --git a/test/editor/specs/scenario/cookbook_mqtt_uispec.js b/test/editor/specs/scenario/cookbook_mqtt_uispec.js index f8aeb3c87..1de70afb0 100644 --- a/test/editor/specs/scenario/cookbook_mqtt_uispec.js +++ b/test/editor/specs/scenario/cookbook_mqtt_uispec.js @@ -24,8 +24,6 @@ var workspace = require('../../pageobjects/editor/workspace_page'); var specUtil = require('../../pageobjects/util/spec_util_page'); var mqttConfig = require('../../pageobjects/nodes/core/io/10-mqttconfig_page.js'); -var nodeWidth = 200; -var nodeHeight = 100; var httpNodeRoot = "/api"; var mqttServer; @@ -42,7 +40,7 @@ var moscaSettings = { // https://cookbook.nodered.org/ describe('cookbook', function() { beforeEach(function() { - workspace.deleteAllNodes(); + workspace.init(); }); before(function() { @@ -69,7 +67,7 @@ describe('cookbook', function() { describe('MQTT', function() { it('Add an MQTT broker to prepare for UI test', function() { - var mqttOutNode = workspace.addNode("mqttOut", nodeWidth); + var mqttOutNode = workspace.addNode("mqttOut"); mqttOutNode.edit(); mqttConfig.edit(); @@ -82,10 +80,10 @@ describe('cookbook', function() { it('Connect to an MQTT broker', function() { var injectNode = workspace.addNode("inject"); - var mqttOutNode = workspace.addNode("mqttOut", nodeWidth); + var mqttOutNode = workspace.addNode("mqttOut"); - var mqttInNode = workspace.addNode("mqttIn", 0, nodeHeight); - var debugNode = workspace.addNode("debug", nodeWidth * 2, nodeHeight); + var mqttInNode = workspace.addNode("mqttIn", 0, 100); + var debugNode = workspace.addNode("debug"); injectNode.edit(); injectNode.setPayload("num", 22); @@ -117,7 +115,7 @@ describe('cookbook', function() { it('Set the topic of a published message', function() { var injectNode = workspace.addNode("inject"); - var mqttOutNode = workspace.addNode("mqttOut", nodeWidth * 2); + var mqttOutNode = workspace.addNode("mqttOut"); injectNode.edit(); injectNode.setPayload("num", 22); @@ -130,8 +128,8 @@ describe('cookbook', function() { injectNode.connect(mqttOutNode); // The code for confirmation starts from here. - var mqttInNode = workspace.addNode("mqttIn", 0, nodeHeight); - var debugNode = workspace.addNode("debug", nodeWidth * 2, nodeHeight); + var mqttInNode = workspace.addNode("mqttIn", 0, 100); + var debugNode = workspace.addNode("debug"); mqttInNode.edit(); mqttInNode.setTopic("sensors/kitchen/temperature"); @@ -150,7 +148,7 @@ describe('cookbook', function() { it('Publish a retained message to a topic', function() { var injectNode = workspace.addNode("inject"); - var mqttOutNode = workspace.addNode("mqttOut", nodeWidth); + var mqttOutNode = workspace.addNode("mqttOut"); injectNode.edit(); injectNode.setPayload("num", 22); @@ -169,8 +167,8 @@ describe('cookbook', function() { debugTab.clearMessage(); // The code for confirmation starts from here. - var mqttInNode = workspace.addNode("mqttIn", 0, nodeHeight); - var debugNode = workspace.addNode("debug", nodeWidth * 2, nodeHeight); + var mqttInNode = workspace.addNode("mqttIn", 0, 100); + var debugNode = workspace.addNode("debug"); mqttInNode.edit(); mqttInNode.setTopic("sensors/livingroom/temp"); @@ -189,11 +187,11 @@ describe('cookbook', function() { it('Receive a parsed JSON message', function() { var injectNode = workspace.addNode("inject"); - var mqttOutNode = workspace.addNode("mqttOut", nodeWidth); + var mqttOutNode = workspace.addNode("mqttOut"); - var mqttInNode = workspace.addNode("mqttIn", 0, nodeHeight); - var jsonNode = workspace.addNode("json", nodeWidth, nodeHeight); - var debugNode = workspace.addNode("debug", nodeWidth * 2, nodeHeight); + var mqttInNode = workspace.addNode("mqttIn", 0, 100); + var jsonNode = workspace.addNode("json"); + var debugNode = workspace.addNode("debug"); injectNode.edit(); injectNode.setPayload("json", '{"sensor_id": 1234, "temperature": 13 }'); diff --git a/test/editor/specs/scenario/cookbook_uispec.js b/test/editor/specs/scenario/cookbook_uispec.js index 20bc4fe39..212080d77 100644 --- a/test/editor/specs/scenario/cookbook_uispec.js +++ b/test/editor/specs/scenario/cookbook_uispec.js @@ -23,14 +23,12 @@ var debugTab = require('../../pageobjects/editor/debugTab_page'); var workspace = require('../../pageobjects/editor/workspace_page'); var specUtil = require('../../pageobjects/util/spec_util_page'); -var nodeWidth = 200; -var nodeHeight = 100; var httpNodeRoot = "/api"; // https://cookbook.nodered.org/ describe('cookbook', function() { beforeEach(function() { - workspace.deleteAllNodes(); + workspace.init(); }); before(function() { @@ -44,8 +42,8 @@ describe('cookbook', function() { describe('messages', function() { it('set a message property to a fixed value', function() { var injectNode = workspace.addNode("inject"); - var changeNode = workspace.addNode("change", nodeWidth); - var debugNode = workspace.addNode("debug", nodeWidth * 2); + var changeNode = workspace.addNode("change"); + var debugNode = workspace.addNode("debug"); changeNode.edit(); changeNode.ruleSet("payload", "msg", "Hello World!"); @@ -64,8 +62,8 @@ describe('cookbook', function() { it('delete a message property', function() { var injectNode = workspace.addNode("inject"); - var changeNode = workspace.addNode("change", nodeWidth); - var debugNode = workspace.addNode("debug", nodeWidth * 2); + var changeNode = workspace.addNode("change"); + var debugNode = workspace.addNode("debug"); changeNode.edit(); changeNode.ruleDelete(); @@ -84,8 +82,8 @@ describe('cookbook', function() { it('move a message property', function() { var injectNode = workspace.addNode("inject"); - var changeNode = workspace.addNode("change", nodeWidth); - var debugNode = workspace.addNode("debug", nodeWidth * 2); + var changeNode = workspace.addNode("change"); + var debugNode = workspace.addNode("debug"); injectNode.edit(); injectNode.setTopic("Hello"); @@ -108,10 +106,10 @@ describe('cookbook', function() { it('map a property between different numeric ranges', function() { var injectNode1 = workspace.addNode("inject"); - var injectNode2 = workspace.addNode("inject", 0, 50); - var injectNode3 = workspace.addNode("inject", 0, 100); - var rangeNode = workspace.addNode("range", nodeWidth); - var debugNode = workspace.addNode("debug", nodeWidth * 2); + var injectNode2 = workspace.addNode("inject", 0, 100); + var injectNode3 = workspace.addNode("inject", 0, 200); + var rangeNode = workspace.addNode("range", 200, 100); + var debugNode = workspace.addNode("debug", 400); injectNode1.edit(); injectNode1.setPayload("num", 0); @@ -149,7 +147,7 @@ describe('cookbook', function() { describe('flow control', function() { it('trigger a flow whenever Node-RED starts', function() { var injectNode = workspace.addNode("inject"); - var debugNode = workspace.addNode("debug", nodeWidth * 2); + var debugNode = workspace.addNode("debug"); injectNode.edit(); injectNode.setPayload("str", "Started!") @@ -165,7 +163,7 @@ describe('cookbook', function() { it('trigger a flow at regular intervals', function() { var injectNode = workspace.addNode("inject"); - var debugNode = workspace.addNode("debug", nodeWidth * 2); + var debugNode = workspace.addNode("debug"); injectNode.edit(); injectNode.setRepeat("interval"); @@ -191,9 +189,9 @@ describe('cookbook', function() { describe('HTTP requests', function() { it('simple get request', function() { var injectNode = workspace.addNode("inject"); - var httpRequetNode = workspace.addNode("httpRequest", nodeWidth); - var htmlNode = workspace.addNode("html", nodeWidth * 2); - var debugNode = workspace.addNode("debug", nodeWidth * 3); + var httpRequetNode = workspace.addNode("httpRequest"); + var htmlNode = workspace.addNode("html"); + var debugNode = workspace.addNode("debug"); httpRequetNode.edit(); httpRequetNode.setMethod("GET"); @@ -218,9 +216,9 @@ describe('cookbook', function() { it('set the URL of a request', function() { var injectNode = workspace.addNode("inject"); - var changeNode = workspace.addNode("change", nodeWidth * 1.5); - var httpRequetNode = workspace.addNode("httpRequest", nodeWidth * 2.5); - var debugNode = workspace.addNode("debug", nodeWidth * 3.5); + var changeNode = workspace.addNode("change"); + var httpRequetNode = workspace.addNode("httpRequest"); + var debugNode = workspace.addNode("debug"); injectNode.edit(); injectNode.setPayload("str", helper.url()); @@ -244,9 +242,9 @@ describe('cookbook', function() { it('set the URL of a request using a template', function() { var injectNode = workspace.addNode("inject"); - var changeNode = workspace.addNode("change", nodeWidth * 1.5); - var httpRequetNode = workspace.addNode("httpRequest", nodeWidth * 2.5); - var debugNode = workspace.addNode("debug", nodeWidth * 3.5); + var changeNode = workspace.addNode("change"); + var httpRequetNode = workspace.addNode("httpRequest"); + var debugNode = workspace.addNode("debug"); injectNode.edit(); injectNode.setPayload("str", 'settings'); @@ -274,9 +272,9 @@ describe('cookbook', function() { it('set the query string parameters', function() { var injectNode = workspace.addNode("inject"); - var changeNode = workspace.addNode("change", nodeWidth); - var httpRequetNode = workspace.addNode("httpRequest", nodeWidth * 2); - var debugNode = workspace.addNode("debug", nodeWidth * 3); + var changeNode = workspace.addNode("change"); + var httpRequetNode = workspace.addNode("httpRequest"); + var debugNode = workspace.addNode("debug"); injectNode.edit(); injectNode.setPayload("str", 'Nick'); @@ -295,9 +293,9 @@ describe('cookbook', function() { httpRequetNode.connect(debugNode); // The code for confirmation starts from here. - var httpinNode = workspace.addNode("httpin", 0, nodeHeight); - var templateNode = workspace.addNode("template", nodeWidth, nodeHeight); - var httpResponseNode = workspace.addNode("httpResponse", nodeWidth * 2, nodeHeight); + var httpinNode = workspace.addNode("httpin", 0, 200); + var templateNode = workspace.addNode("template"); + var httpResponseNode = workspace.addNode("httpResponse"); httpinNode.edit(); httpinNode.setMethod("get"); @@ -323,9 +321,9 @@ describe('cookbook', function() { it('get a parsed JSON response', function() { var injectNode = workspace.addNode("inject"); - var changeNodeSetPost = workspace.addNode("change", nodeWidth); - var httpRequetNode = workspace.addNode("httpRequest", nodeWidth * 2); - var debugNode = workspace.addNode("debug", nodeWidth * 3); + var changeNodeSetPost = workspace.addNode("change"); + var httpRequetNode = workspace.addNode("httpRequest"); + var debugNode = workspace.addNode("debug"); injectNode.edit(); injectNode.setPayload("str", "json-response"); @@ -351,10 +349,10 @@ describe('cookbook', function() { httpRequetNode.connect(debugNode); // The code for confirmation starts from here. - var httpinNode = workspace.addNode("httpin", 0, nodeHeight); - var templateNode = workspace.addNode("template", nodeWidth * 1.5, nodeHeight); - var changeNodeSetHeader = workspace.addNode("change", nodeWidth * 2.5, nodeHeight); - var httpResponseNode = workspace.addNode("httpResponse", nodeWidth * 3.5, nodeHeight); + var httpinNode = workspace.addNode("httpin", 0, 200); + var templateNode = workspace.addNode("template"); + var changeNodeSetHeader = workspace.addNode("change"); + var httpResponseNode = workspace.addNode("httpResponse"); httpinNode.edit(); httpinNode.setMethod("get"); @@ -385,8 +383,8 @@ describe('cookbook', function() { it('get a binary response', function() { var injectNode = workspace.addNode("inject"); - var httpRequetNode = workspace.addNode("httpRequest", nodeWidth); - var debugNode = workspace.addNode("debug", nodeWidth * 2); + var httpRequetNode = workspace.addNode("httpRequest"); + var debugNode = workspace.addNode("debug"); httpRequetNode.edit(); httpRequetNode.setMethod("GET"); @@ -408,9 +406,9 @@ describe('cookbook', function() { it('set a request header', function() { var injectNode = workspace.addNode("inject"); - var functionNode = workspace.addNode("function", nodeWidth); - var httpRequetNode = workspace.addNode("httpRequest", nodeWidth * 2); - var debugNode = workspace.addNode("debug", nodeWidth * 3); + var functionNode = workspace.addNode("function"); + var httpRequetNode = workspace.addNode("httpRequest"); + var debugNode = workspace.addNode("debug"); functionNode.edit(); functionNode.setFunction('msg.payload = "data to post";\nreturn msg;'); @@ -427,9 +425,9 @@ describe('cookbook', function() { httpRequetNode.connect(debugNode); // The code for confirmation starts from here. - var httpinNode = workspace.addNode("httpin", 0, nodeHeight); - var templateNode = workspace.addNode("template", nodeWidth * 1.5, nodeHeight); - var httpResponseNode = workspace.addNode("httpResponse", nodeWidth * 2.5, nodeHeight); + var httpinNode = workspace.addNode("httpin", 0, 200); + var templateNode = workspace.addNode("template"); + var httpResponseNode = workspace.addNode("httpResponse"); httpinNode.edit(); httpinNode.setMethod("post");