Лучшее место для хранения переменной JavaScript, которая будет легко доступна из тестов Nightwatch? - PullRequest
0 голосов
/ 31 мая 2018

Я пишу библиотеку javascript, и когда происходит какое-то событие, я хотел бы сохранить переменную JSON, к которой можно обратиться из тестов NightwatchJs, чтобы проверить данные, сгенерированные событием.

Я использовал его для хранениякак глобальная переменная (например, window.debugLog = { message: "something", timestamp: 1111, eventType: "click", other: "stuff" };)

и извлечение ее в nightwatch с помощью

browser.execute("return window.debugLog;", [], function(result){ debugLog = result.value;})

К сожалению, это не кажется надежным для каждого браузера / устройства, когда я запускаю тесты Nightwatch поверхBrowserstack.Нередко возникают ложные срабатывания, потому что Appium не удалось выполнить функцию Js.

Мне было интересно, есть ли у кого-нибудь предложения о более надежных альтернативах.Печенье?Метатег?Скрытый тег?

1 Ответ

0 голосов
/ 31 мая 2018

Запишите его в файл, потребуйте этот файл для последующих тестов, которые его используют.

У меня в папке custom_commands есть файл helperFunctions.js, и внутри него это одна из более полезных функций / методов:

saveToFile : function(client, path, data) {
    this.fs = fs;

    buffer = new Buffer(data);
    fs.open(path, 'w', function(err, fd) {
        if (err) {
            throw 'error opening file: ' + err;
        }

        fs.write(fd, buffer, 0, buffer.length, null, function(err) {
            if (err) throw 'error writing file: ' + err;
             return fs.close(fd, function() {
                console.log('File write: ' +  path + ' has been updated.' );
            })
        });
    })
},

Таким образом, он можетбыть вызванным для записи данных из любого теста:

this.helperFunctions.saveToFile(client, "conf/usefulVariable.js", "module.exports = {\"default\" : {},\"test_env\" : { myGlobal: " + someGlobal + "}};")

В файле теста, который должен его использовать:

var usefulVar = require("../conf/usefulVariable.js");

Вам может понадобиться / захотеть JSON.stringify или проанализировать какподходящее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...