Заранее благодарен за помощь.
Я начинающий разработчик js, пытаюсь подключить нашу инфраструктуру nightwatchjs к api testrails для правильной записи наших результатов.
В рамках тестаrun, я получаю runId из testrails в функции before
файла globals.js (я подтвердил, что это работает)
Моя цель - сохранить это как глобальную переменную в глобальных переменных.js файл, чтобы каждый тест мог получить к нему доступ и передать результаты теста в TR в методе after_each.
Для этого я следовал документации по nightwatch и добавил «persist_globals» = true в мой nightwatch.jsПапка.
"test_settings" : {
"default" : {
"persist_globals": true,
"desiredCapabilities": {
"test_card" : "4111111111111111"
},
"launch_url" : "REDACTED",
"selenium_port" : 4444,
"selenium_host" : "localhost",
"silent": true,
"medium_Time_Out": 6000,
"screenshots" : {
"enabled" : false,
"path" : ""
}
},
затем, в моей функции before, я извлекаю и сохраняю переменную:
runId: undefined,
before: function(done) { //Asynchronous before calls take browser, then done function
var request = require('request');
console.log("setting up test run");
// here we need to create a new test run
var options = {
url: self.urlRoot + "add_run/6",
headers: {
"Content-Type": "application/json",
},
auth: {
'user':self.username,
'password':self.apiKey
},
body: {
'description':'this is a sample test run for debugging purposes',
'include_all':true,
// this is an array of all cases to be included in the test run
'cases':[]
},
json:true
}
// function to output results
function callback (error, response, body) {
if(error != null) {
console.log(error);
} else {
console.log(response.statusCode);
console.log("run id created " + body.id)
self.runId = body.id;
done();
}
}
request.post(options, callback);
},
Когда это сделано, я получаю разные результаты, если я запускаю один набор (файл) или много.Если я запускаю один пакет, это работает как задумано, переменная сохраняется и должным образом подбирается моей функцией afterEach
.
Однако, если в прогоне более одного тестового файла, переменная выводится какнеопределенный для всех из них, даже первый.Переменная читается в afterEach в следующем фрагменте кода
afterEach: function(browser, done) {
var request = require('request');
var name = browser.currentTest.module;
console.log(name);
console.log("run Id is " + self.runId)
Похоже, что объект globals.js перестраивается для каждого тестового файла, независимо от наличия аргумента persist_globals
.Я использую Nightwatch версии 0.9.16