Jenkins yang menjalankan tes Busur Derajat tidak membuat laporan

Saya memiliki proyek Jenkins yang pertama-tama menjalankan file batch yang menjalankan server Selenium untuk digunakan Busur Derajat. Kemudian menjalankan file batch kedua untuk menjalankan tes melalui Busur Derajat.

Menjalankan tes ini berfungsi dengan baik jika saya menjalankan file batch secara manual, dan membuat laporan melalui Mocha. Namun jika saya menjalankan file batch ini melalui Jenkins, tidak ada laporan yang dibuat.

Ini konfigurasi saya:

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 sumber


Jawaban (2)


Anda perlu memeriksa hal-hal berikut:

  • Apakah Anda menjalankan Jenkins sebagai server atau secara lokal?
  • Jika dijalankan secara lokal, apakah itu layanan atau file perang yang Anda jalankan?
  • Apakah Jenkins memiliki izin untuk menulis file ke direktori Anda saat ini?
  • Sudahkah Anda mengatur variabel lingkungan dengan benar?

Masalah Anda saat ini, menurut saya sebagian besar adalah Jenkins tidak memiliki izin untuk menulis file (membuat laporan) di direktori Anda. Silakan periksa itu!

person Ram Pasala    schedule 11.08.2016
comment
Bukan Jenkins yang membuat laporan ini, Busur Derajat yang seharusnya membuatnya. Apakah Jenkins masih memerlukan izin menulis file? Jika ya, apa yang harus saya lakukan untuk memberikan izin? - person Tetramet; 11.08.2016
comment
Untuk memperluas pertanyaan lain: Jenkins berjalan pada budak windows jarak jauh yang menjalankannya sebagai layanan windows. Proyek ini saat ini tidak memiliki variabel lingkungan, namun saya kesulitan mengetahui cara menggunakannya dengan benar, seperti pada: Saya dapat mengaturnya di konten Properti di bawah menyuntikkan variabel lingkungan tetapi saya tidak tahu bagaimana cara menggunakannya saat itu datang ke Membangun - person Tetramet; 11.08.2016

Masalah sebenarnya adalah fakta bahwa Jenkins berjalan sebagai layanan di latar belakang. Saat dijalankan sebagai layanan, busur derajat tidak dapat membuka chrome untuk melakukan pengujian.

Busur derajat tidak membuat laporan apa pun karena tidak pernah menyelesaikan pengujian karena tidak pernah memulainya. Saat saya menjalankan file batch, file tersebut tidak berjalan sebagai layanan karena tindakan saya bukan layanan.

person Tetramet    schedule 25.08.2016