запустить node-red с драйвером селена

Я запущу наборы тестов мокко, чтобы протестировать узел с красным узлом. Поэтому я использую мокко и драйвер селена.

У меня возникла проблема с запуском модуля node-red. Если я начну тест с $ mocha --ui **tdd**, приложение с красным узлом не сможет найти мой поток. Потому что он ищет в папке «~/.node-red/tdd». Я не знаю, почему мокко [option] задан как путь? Только с командой $ mocha функция suite(); не определена?

Я бы решил проблему, запустив node-red со своими настройками. Вот так... http://nodered.org/docs/embedding.html

Таким образом, я могу запустить красный узел после «RED.start()», но я не получаю URL-адрес и не могу открыть красный узел в драйвере селена?

require('colors');
var async = require ('async');
var fs = require('fs');

var node = require ('../../mynode.js');
var assert = require('node-assertthat');

var http = require('http');
var http = require('http');
var express = require("express");
var RED = require("node-red");

// Create an Express app
var app = express();

// Add a simple route for static content served from 'public'
app.use("/",express.static("public"));

// Create a server
var server = http.createServer(app);


var settings = {
    settingsFile:"/usr/local/lib/node_modules/node-red/settings.js",
    userDir:"/home/<user>/.nodered",
    flowFile: "flow_<name>.json",
    functionGlobalContext: { }    // enables global context
};

// Initialise the runtime with a server and settings
RED.init(server,settings);


var webdriver = require('../'),
            By = webdriver.By,
            until = webdriver.until;

/* connect to selenium browser */
driver = new webdriver.Builder()
        .forBrowser('chrome')
       .build();


suite('node', function(){
        var driver;
    suite('test setup', function(){
    suite('connect to http://127.0.0.1:1880', function(){       

        setup(function(){
        });    
        test('run Node-Red ',function(done){
            setTimeout(function(){
                /* run node-red */
                RED.start();
                done();
            },2000);    
        });

        test('open URL \'http://localhost:1880/#\'', function(done) {
            setTimeout(function(){
                driver.get('http://localhost:1880/#');
                /* open node-red URL */     
                driver.getTitle().then(function(title) {
            console.log('\nPage title is:\ '+ title.red.bold +"\n");
            assert.that(title, is.equalTo('Node-RED'));
            done();
                });
            },2000);
        });
});

person zombinary    schedule 25.09.2015    source источник


Ответы (2)


Вы установили маршрут по умолчанию

app.use("/",express.static("public"));

Это будет конфликтовать с Node-RED, если вы не установите маршруты Node-RED на что-то другое.

Вам необходимо установить httpNodeRoot и httpAdminRoot в ваших настройках, например.

var settings = {
    settingsFile:"/usr/local/lib/node_modules/node-red/settings.js",
    userDir:"/home/<user>/.nodered",
    flowFile: "flow_<name>.json", 
    httpAdminRoot:"/red",
    httpNodeRoot: "/api",
    functionGlobalContext: { }    // enables global context
};

Если вы сделаете это, вы получите доступ к Node-RED на локальном хосте следующим образом:

http://localhost:1880/red

РЕДАКТИРОВАТЬ: вам нужно только установить httpNodeRoot, если вы используете узел httpIn

person hardillb    schedule 25.09.2015
comment
это не имеет никакого эффекта. ' 25 сентября 18:40:51 - [информация] Файл потока: /home/julien/.nodered/flow_‹name›.json 25 сентября 18:40:51 - [информация] Создание нового файла потока 25 сентября 18:40: 51 - [info] Запуск потоков 25 сент. 18:40:51 - [info] Запущенные потоки ' Я пропустил строку в журнале node-red? ' 25 сен 18:41:56 - [информация] Сервер теперь работает по адресу 127.0.0.1:1880 ' - person zombinary; 25.09.2015
comment
ваш код работает. Но если я запускаю его с помощью «$ mocha», я не могу достичь URL-адреса «127.0.0.1:1880/red». У вас есть идеи, чтобы решить эту проблему? - person zombinary; 25.09.2015

решено

Проблема заключалась в «драйвере var». В первом «suite ()» я инициализировал новый «диск var;» и перезаписывает первый. Это глупая ошибка.

...
 suite('node', function(){
--        var driver;
++        //var drive;
...
person zombinary    schedule 25.09.2015