Jenkins, запускающий тесты Protractor, не создает отчетов

У меня есть проект Jenkins, который сначала запускает командный файл, который запускает сервер селена для использования Protractor. Затем он запускает второй командный файл, чтобы запустить тесты через Protractor.

Выполнение этих тестов работает нормально, если я выполняю командные файлы вручную и генерирую отчет через Mocha. Однако, если я запускаю эти командные файлы через Jenkins, отчеты не создаются.

Это мой конфиг:

var today = new Date().toJSON().slice(0, 10);

exports.config = {
    seleniumAddress: 'http://localhost:4444/wd/hub',
    rootElement:     '[ng-app]',

    allScriptsTimeout: 80000,

    // resultJsonOutputFile: './Report.json', // adds a JSON file from protractor test reults


    framework: 'mocha',
    mochaOpts: {
        reporter:        'mochawesome-screenshots',
        reporterOptions: {
            reportDir:            'reports/' + today + '/',
            reportName:           'DOCS Dev QA Automation' + today, // TODO: Enter desired report name
            reportTitle:          'DOCS Dev QA Automation', // TODO: Enter desired report title
            takePassedScreenshot: false,
            clearOldScreenshots:  true
        },
        timeout:         60000
    },

    specs: [ 'yadda_runner.js' ],

    capabilities: {
        browserName:   'chrome',
        chromeOptions: {
            args: [ '--lang=en',
                '--window-size=1280,1024' ]
        }
        //browserName: 'firefox'
    },

    // Runs on start up and logs in to Docs
    onPrepare: function() {



        browser.ignoreSynchronization = true;
        browser.driver.get(browser.params.baseUrl);

        browser.driver.findElement(by.id('sign_in')).click();
        browser.driver.switchTo().frame('loginframe');

        browser.driver.findElement(by.id('userName')).sendKeys(browser.params.login.username);
        browser.driver.findElement(by.id('verify_user_btn')).click();

        // TODO: see if there is a better way to wait for this, unfortunately the browser.driver.wait isElementPresent doesn't seem to work
        browser.driver.sleep(2000); // wait for password field to be visible

        browser.driver.findElement(by.id('password')).sendKeys(browser.params.login.password);
        browser.driver.findElement(by.id('btnSubmit')).click();

        // Wait for login to complete
        return browser.driver.wait(function () {
            return browser.driver.getCurrentUrl().then(function (url) {
                return /projects/.test(url);  // tests that the current URL contains the word 'projects'
            });
        }, 60000);

    },

    // Runs on exit and logs out of Docs
    onComplete: function() {
        browser.driver.findElement(by.css('.header__control.header__control--profile')).click();
        browser.driver.findElement(by.css('body > div > div > header > div > ul > li:nth-child(2) > flyout > div > div > ul > li:nth-child(3) > ul > li > a')).click();

            return browser.driver.wait(function () {
            return browser.driver.getCurrentUrl().then(function (url) {
                return /session/.test(url); // tests that the current URL contains the word 'session'
            });
        }, 60000);
   }
};

person Tetramet    schedule 11.08.2016    source источник


Ответы (2)


Вам необходимо проверить следующее:

  • Вы используете Jenkins как сервер или локально?
  • Если вы работаете локально, это служба или файл войны, который вы запускаете?
  • Есть ли у Дженкинса разрешения на запись файлов в ваш текущий каталог?
  • Правильно ли вы установили переменные среды?

Ваша текущая проблема, я думаю, в основном состоит в том, что у Дженкинса нет разрешения на запись файлов (создание отчетов) в ваш каталог. Пожалуйста, проверьте это!

person Ram Pasala    schedule 11.08.2016
comment
Что ж, это не Дженкинс создает эти отчеты, а Protractor должен их создавать. Для этого по-прежнему требуется, чтобы у Дженкинса было разрешение на запись в файл? Если да, то что мне нужно сделать, чтобы предоставить ему разрешение? - person Tetramet; 11.08.2016
comment
Чтобы расширить другие вопросы: Jenkins работает на удаленном подчиненном сервере Windows, который запускает его как службу Windows. В этом проекте в настоящее время нет переменных среды, однако я изо всех сил пытаюсь понять, как их правильно использовать, например: я могу установить их в содержимом свойств в разделе вводить переменные среды, но я не знаю, как я затем использую их, когда дело доходит до сборка - person Tetramet; 11.08.2016

Фактическая проблема заключалась в том, что Jenkins работал как служба в фоновом режиме. При запуске в качестве службы транспортир не может открыть хром для проведения тестирования.

Protractor не создавал никаких отчетов, потому что он никогда не заканчивал тесты, так как не запускал их. Когда я запускал командный файл, он не работал как служба, потому что мои действия не были службой.

person Tetramet    schedule 25.08.2016