Jenkins ที่รันการทดสอบไม้โปรแทรกเตอร์ไม่สร้างรายงาน

ฉันมีโปรเจ็กต์ Jenkins ที่รันแบตช์ไฟล์ที่รันเซิร์ฟเวอร์ซีลีเนียมเพื่อให้ไม้โปรแทรกเตอร์ใช้ก่อน จากนั้นจะรันไฟล์แบตช์ที่สองเพื่อรันการทดสอบผ่านไม้โปรแทรกเตอร์

การเรียกใช้การทดสอบเหล่านี้จะทำงานได้ดีหากฉันรันไฟล์แบตช์ด้วยตนเอง และสร้างรายงานผ่าน 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 เป็นเซิร์ฟเวอร์หรือในเครื่องหรือไม่
  • หากใช้งานในเครื่อง มันเป็นบริการหรือไฟล์ war ที่คุณใช้งานอยู่หรือไม่?
  • Jenkins มีสิทธิ์ในการเขียนไฟล์ลงในไดเรกทอรีปัจจุบันของคุณหรือไม่
  • คุณได้ตั้งค่าตัวแปรสภาพแวดล้อมของคุณอย่างถูกต้องหรือไม่?

ปัญหาปัจจุบันของคุณ ฉันคิดว่าส่วนใหญ่แล้วเจนกินส์ไม่ได้รับอนุญาตให้เขียนไฟล์ (สร้างรายงาน) ในไดเร็กทอรีของคุณ โปรดตรวจสอบ!

person Ram Pasala    schedule 11.08.2016
comment
ไม่ใช่เจนกินส์ที่สร้างรายงานเหล่านี้ ไม้โปรแทรกเตอร์ควรสร้างรายงานเหล่านี้ ยังต้องการให้เจนกินส์ต้องได้รับอนุญาตในการเขียนไฟล์หรือไม่ ถ้าเป็นเช่นนั้นฉันต้องทำอย่างไรจึงจะอนุญาต? - person Tetramet; 11.08.2016
comment
หากต้องการขยายคำถามอื่น ๆ : Jenkins กำลังทำงานบนทาส windows ระยะไกลที่ใช้งานเป็นบริการ windows ขณะนี้โปรเจ็กต์นี้ไม่มีตัวแปรสภาพแวดล้อม แต่ฉันกำลังดิ้นรนที่จะรู้วิธีใช้สิ่งเหล่านี้อย่างถูกต้อง เช่นใน: ฉันสามารถตั้งค่าพวกมันในเนื้อหาคุณสมบัติภายใต้ตัวแปรสภาพแวดล้อมที่ฉีดได้ แต่ฉันไม่รู้ว่าจะใช้มันอย่างไรเมื่อมันมาถึง งานสร้าง - person Tetramet; 11.08.2016

ปัญหาที่แท้จริงคือการที่เจนกินส์ทำงานเป็นบริการในเบื้องหลัง เมื่อทำงานเป็นบริการ เป็นไปไม่ได้ที่ไม้โปรแทรกเตอร์จะเปิดโครเมียมเพื่อทำการทดสอบ

ไม้โปรแทรกเตอร์ไม่ได้สร้างรายงานใดๆ เนื่องจากไม่เคยทำการทดสอบเสร็จตั้งแต่ยังไม่ได้เริ่มทำ เมื่อฉันเรียกใช้แบตช์ไฟล์ ไฟล์นั้นไม่ได้ทำงานเป็นบริการ เนื่องจากการกระทำของฉันไม่ใช่บริการ

person Tetramet    schedule 25.08.2016