persist_globals не работает в NightwatchJS - PullRequest
0 голосов
/ 30 ноября 2018

Заранее благодарен за помощь.

Я начинающий разработчик 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

...