Protractor: جونيت ريبورتر

تم إنشاؤها على ٢٨ أغسطس ٢٠١٣  ·  42تعليقات  ·  مصدر: angular/protractor

نريد إجراء اختبارات المنقلة على Jenkins ، لذلك سيكون من المفيد جدًا إذا كان هناك مراسل junit (مثل karma) حتى يتمكن Jenkins من الإبلاغ عن حالة الاختبارات

feature request

التعليق الأكثر فائدة

كيف تفعل ذلك في ملف التكوين الخاص بك بطريقة مخترقة قليلاً - لقد اختبرت ذلك مع مجموعة الاختبار الخاصة بـ Protractor:

npm install jasmine-reporters

ملف التكوين الخاص بك:

require('jasmine-reporters');

jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter(
    'outputdir/', true, true));

// The main suite of Protractor tests.
exports.config = {
  seleniumServerJar: './selenium/selenium-server-standalone-2.35.0.jar',
  chromeDriver: './selenium/chromedriver',

  seleniumAddress: 'http://localhost:4444/wd/hub',

  // Spec patterns are relative to this directory.
  specs: [
    '*_spec.js'
  ],

  capabilities: {
    'browserName': 'chrome'
  },

  baseUrl: 'http://localhost:8000',
};

ال 42 كومينتر

سنتان هنا: إذا كنت تستخدم Grunt كأداة بناء ، فيمكنك إجراء اختبارات منقلة باستخدام عقدة grunt-jasmine-node وتهيئتها للحصول على تقارير تشبه JUnit!

كيف تفعل ذلك في ملف التكوين الخاص بك بطريقة مخترقة قليلاً - لقد اختبرت ذلك مع مجموعة الاختبار الخاصة بـ Protractor:

npm install jasmine-reporters

ملف التكوين الخاص بك:

require('jasmine-reporters');

jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter(
    'outputdir/', true, true));

// The main suite of Protractor tests.
exports.config = {
  seleniumServerJar: './selenium/selenium-server-standalone-2.35.0.jar',
  chromeDriver: './selenium/chromedriver',

  seleniumAddress: 'http://localhost:4444/wd/hub',

  // Spec patterns are relative to this directory.
  specs: [
    '*_spec.js'
  ],

  capabilities: {
    'browserName': 'chrome'
  },

  baseUrl: 'http://localhost:8000',
};

مزيد من الأمثلة معروضة الآن في https://github.com/angular/protractor/blob/master/spec/junitOutputConf.js

هل يقبل المسار النسبي أو المطلق للدليل. المسار المطلق يعمل بينما المسار النسبي لا يعمل. لقد جربت خيارات مثل ../Reports ولكن لا فائدة منها
jasmine.getEnv (). addReporter (
jasmine.JUnitXmlReporter جديد ('xmloutput' ، صحيح ، صحيح)) ؛
} ،

استكشافها والعمل ، تجاهل تعليقي الأخير

لم أكن ذكيًا بما يكفي لذلك توقعت إنشاء المجلد ولكن في الواقع ، يجب إنشاء المجلد مسبقًا.

juliemr كيف يتم استخدامه مع مثيلين منقلة يعملان بالتوازي ، على سبيل المثال عبر grunt-concurrent ؟ إنها ضرورية حتى نتمكن من إجراء الاختبارات في Firefox و Chrome في نفس الوقت ، ولكنها ستجعل XML واحدًا يحل محل الآخر مما سيؤدي إلى إرباك Jenkins.

ربما يجب أن يعرف المنقلة كيفية الجري بالتوازي لأسباب من هذا القبيل ، على غرار ما تفعله Karma؟

mzgol هل حاولت تشغيل كل هدف كإخراج مهمة متزامنة لتقرير junit xml مختلف استنادًا إلى النظام الأساسي؟ يمكنك فقط إنشاء مجلد إخراج جديد بناءً على اسم الهدف.

قد ترغب أيضًا في النظر إلى أهداف متعددة التهيئة على Jenkins والتي تتيح لك تشغيل خطوات الإنشاء بالتوازي مع كل بيئة نظيفة. كما أن لديها ميزات أنيقة مثل إنشاءات Touchstone وتسمح لك بخنق التزامن بشكل أفضل من النخر.

هل يوجد تكوين مماثل للموكا؟ (لأنني لا أستخدم الياسمين)

mzgol لقد جربت اقتراح jvandyke (شكرًا لك) وهو يعمل بشكل جيد بالنسبة لي:

onPrepare: function(){
        require('jasmine-reporters');
        var capsPromise = browser.getCapabilities();
        capsPromise.then(function(caps){
            var browserName = caps.caps_.browserName.toUpperCase();
            var browserVersion = caps.caps_.version;
            var prePendStr = browserName + "-" + browserVersion + "-";
            jasmine.getEnv().addReporter(new
jasmine.JUnitXmlReporter("protractor_output", true, true,prePendStr));
        });
 },

شكرا. إنه يعمل بالنسبة لي أيضًا:

onPrepare: الوظيفة () {
تتطلب ("مراسلين ياسمين") ؛
var capsPromise = browser.getCapabilities () ،
capsPromise.then (الوظيفة (قبعات) {
var browserName = caps.caps_.browserName.toUpperCase () ،
var browserVersion = caps.caps_.version ؛
var prePendStr = اسم المتصفح + "-" + إصدار المتصفح + "-" ؛
jasmine.getEnv (). addReporter (جديد
jasmine.JUnitXmlReporter ("protractor_output" ، صحيح ، صحيح ، prePendStr)) ؛
}) ؛
} ،

لقد أنشأت مراسل HTML فوق هذا. فضلا أخبرني بتعليقاتك
https://github.com/jintoppy/protractor-html-screenshot-reporter

قد تكون فكرة إضافة إنشاء مجلد إلى المستندات لأنني تعثرت في ذلك أيضًا tracycummins !

juliemr تعبت جميع الخيارات المدرجة في العينات. فهمت هذا الخطأ. أي مؤشرات موضع تقدير

/home/jack/prototype/conf.js:19
jasmine.getEnv (). addReporter (new jasmine.JUnitXmlReporter ('xmloutput'، true، true)) ؛
^
TypeError: undefined ليست دالة
على export.config.onPrepare (/home/jack/prototype/conf.js:19:33)
في Runner.runFilenamesOrFns_ (/home/usr/lib/node_modules/protractor/lib/runner.js:64:9)
في Runner.runTestPreparers (/home/usr/lib/node_modules/protractor/lib/runner.js:91:8)
في runner.controlFlow.execute.then.jasmineNodeOpts (/home/usr/lib/node_modules/protractor/lib/frameworks/jasmine.js:39:12)
على webdriver.promise.ControlFlow.runInNewFrame_ (/home/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1539:20)
على webdriver.promise.ControlFlow.runEventLoop_ (/home/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1404:8)
في المجمع كـ _onTimeout
في Timer.listOnTimeout كـ ontimeout
==== مهمة غير متزامنة ====
معدي اختبار التشغيل
في Object.exports.run (/home/usr/lib/node_modules/protractor/lib/frameworks/jasmine.js:38:24)
على driverprovider_.setupEnv.then.then.then.testResult (/home/usr/lib/node_modules/protractor/lib/runner.js:233:28)
في _fulfilled (/home/usr/lib/node_modules/protractor/node_modules/q/q.js:797:54)
في self.promiseDispatch.done (/home/usr/lib/node_modules/protractor/node_modules/q/q.js:826:30)
في Promise.promise.promiseDispatch (/home/usr/lib/node_modules/protractor/node_modules/q/q.js:759:13)
في /home/usr/lib/node_modules/protractor/node_modules/q/q.js:525:49
عند التدفق (/home/usr/lib/node_modules/protractor/node_modules/q/q.js:108:17)
في process._tickCallback (node.js: 423: 13)
في Function.Module.runMain (module.js: 499: 11)


// مثال على ملف التكوين.
الصادرات.config = {
// عنوان خادم السيلينيوم قيد التشغيل.
السيلينيوم العنوان: " http: // localhost : 4444 / wd / hub" ،
allScriptsTimeout: 30000 ،
// القدرات ليتم تمريرها إلى مثيل webdriver.
قدرات: {
"اسم المتصفح": "فايرفوكس"
} ،

// أنماط المواصفات مرتبطة بالعمل الحالي مباشرة عندما
// منقلة تسمى.
المواصفات: ['example_spec.js']،

// خيارات لتمريرها إلى عقدة الياسمين.
onPrepare: الوظيفة () {
تتطلب ("مراسلين ياسمين") ؛
jasmine.getEnv (). addReporter (new jasmine.JUnitXmlReporter ('xmloutput'، true، true)) ؛
} ،

// خيارات لتمريرها إلى عقدة الياسمين.
jasmineNodeOpts: {
showColors: صحيح ،
الافتراضي
}
} ؛

تضمين التغريدة

واجهت نفس المشكلة بالضبط. في أحدث إصدار من [email protected] ، قاموا بتغيير اسم الوحدة. لا يوجد توثيق في هذا الشأن ، لكنه موجود في هذا الملف.

https://github.com/larrymyers/jasmine-reporters/blob/master/src/junit_reporter.js

  • استعمال:

    • jasmine.getEnv (). addReporter (new jasmineReporters.JUnitXmlReporter (خيارات) ؛

ما زلت لا أستطيع أن أجعلها تعمل كما تقول وحدة "jasmineReporters" غير محددة.

لذلك انتقلت إلى الإصدار الأقدم من [email protected] ، لقد عملت بشكل مثالي. تأكد من إنشاء الدليل الذي تشير إليه على أنه الإخراج في خيارات المراسل.

لم ينجح مراسلون خفض مستوى الياسمين إلى 0.4.1
حاولت مع
onPrepare: الوظيفة () {
var folderName = (new Date ()). toString (). split ('') .splice (1، 4) .join ('')؛
var mkdirp = يتطلب ('mkdirp') ؛
var newFolder = "./reports/" + folderName ؛
تتطلب ("مراسلين ياسمين") ؛

            mkdirp(newFolder, function(err) {
              if (err) {
                console.error(err);
              } else {
                jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter(newFolder, true, true));
              }
            });
          },

لا حظ بعد

هذه بالتأكيد مشكلة بالنسبة لي. باستخدام مراسلين الياسمين 2.0 أحصل عليه
D: \ HgBuild \ TPSOneSearch \ Unstable \ Tyler.TPS.OneSearch \ Tyler.TPS.Web.OneSearch \ app
\ test \ e2e \ oneSearchChromeConf.js: 29
jasmine.getEnv (). addReporter (new jasmine.JUnitXmlReporter (uri، t
شارع ، صحيح ، ")) ؛
^
TypeError: undefined ليست دالة.

تغيير "new jasmine.JUnitXmlReporter" إلى "jasmineReporters.JUnitXmlReporter" ينتج عن jasmineReporters غير محدد.

إذا عدت مراسلين الياسمين إلى 0.4.1 فإنها تعمل بشكل رائع.

جاسمين-مراسلين 2.0 له واجهة برمجة تطبيقات مختلفة عن 1.x ؛ لا يمكنك فقط التحديث بشكل أعمى ؛ ضبط الدعوات الخاصة بك.

بالنظر إلى التعليق في ملف junit_reporter.js الخاص بـ JUnitXmlReporter ، قمت بإعداد ملف conf الخاص بي على النحو التالي:

onPrepare: الوظيفة () {
تتطلب ("مراسلين ياسمين") ؛
خيارات var = {
savePath: "مسار بعض الملفات" ،
توحيد: صحيح ،
useDotNotation: صحيح
} ؛
jasmine.getEnv (). addReporter (new jasmineReporters.JUnitXmlReporter (خيارات)) ؛
} ،

هذا يجب أن يعمل أليس كذلك؟
تلقيت الخطأ التالي "ReferenceError: jasmineReporters غير محدد"

/ **
* يولد JUnit XML لتشغيل المواصفات المحددة. هناك العديد من الخيارات
* للتحكم في مكان كتابة النتائج والقيم الافتراضية
* مجموعة لإنشاء أقل عدد ممكن من ملفات .xml. من الممكن حفظ ملف
* ملف XML واحد ، أو ملف XML لكل مستوى أعلى describe ، أو ملف
* ملف XML لكل describe بغض النظر عن التداخل.
*
* الاستعمال:
*
* jasmine.getEnv (). addReporter (new jasmineReporters.JUnitXmlReporter (خيارات) ؛
*
* param {object} [options]
* param {string} [savePath] دليل لحفظ الملفات (الافتراضي: '')
* param {boolean} [implateAll] سواء كنت تريد حفظ جميع نتائج الاختبار بتنسيق
* ملف واحد (افتراضي: صحيح)
* ملاحظة: إذا كان هذا صحيحًا ، فسيتم التعامل مع {filePrefix} على أنه اسم الملف الكامل (باستثناء ملفات
* تمديد)
* param {boolean} [دمج] ما إذا كان سيتم حفظ وصف متداخل داخل ملف
* نفس ملف الوالد (الافتراضي: صحيح)
* ملاحظة: لا يفعل الصواب شيئًا إذا كان "ضمن الكل "صحيحًا أيضًا.
* ملاحظة: تحدد القيمة false أيضًا "تجميع الكل" على "خطأ".
* param {boolean} [useDotNotation] سواء كان سيتم فصل أسماء المجموعات باستخدام
* النقاط بدلاً من المسافات ، مثل "Class.init" وليس "Class init" (افتراضي: true)
* param {string} [filePrefix] هي قيمة السلسلة الملحقة بامتداد
* ملف الإخراج xml (الافتراضي: junitresults-)
* ملاحظة: إذا كانت قيمة "تجميع الكل" صحيحة ، فإن القيمة الافتراضية هي ببساطة "نتائج junitresults" و
* يصبح هذا هو اسم الملف الفعلي ، مثل "junitresults.xml"
* /

@ john-bridges هل يمكنك تغليف التعليمات البرمجية الخاصة بك في العلامات الخلفية؟ من الصعب القراءة بدونها.

@ john-bridges حسنًا ، لا عجب أن المتغير jasmineReporters غير محدد لأنك لم تحدده بالفعل. تحتاج إلى تعيين الوحدة:

var jasmineReporters = require('jasmine-reporters');

mzgol أنا أحمق ، يعمل كالسحر. شكرا لمساعدتك أنا أقدر ذلك.

الإصدار السابق من jasmine-reporters أرفق المراسلين مباشرة بالكائن jasmine ؛ الآن تعلق على تصديرها وهو أفضل طريقة.

أرى من أين أتى الارتباك. ؛)

mzgol أوافق ، طريقة أفضل بكثير ، شكرًا مرة أخرى.

يدعم [email protected] Jasmine 2.x ، وكما لوحظ / تمت مناقشته أعلاه ، له بنية ونقطة دخول مختلفة (في الكائن الخاص به مقابل الكائن العالمي jasmine ). ومع ذلك ، فهو يدعم _ فقط_ Jasmine 2.x ، وليس Jasmine 1.x وهو ما تستخدمه منقلة. لذلك ، بينما قد تتمكن من تجاوز الأخطاء السابقة في تكوين المنقلة عن طريق تنفيذ var jasmineReporters = require('jasmine-reporters'); new jasmineReporters.JUnitXmlReporter(/*...*/); ، ستتعرض لضغوط شديدة للحصول على أي مخرجات ذات مغزى لأنها تنتظر أحداث Jasmine 2.x وواجهة المراسل.

الطريقة الصحيحة لجعل JUnitXmlReporter يعمل مع Jasmine 1.x هو تعديل تعليماتjuliemr الأصلية بشكل طفيف:

npm install jasmine-reporters@~1.0.0

ثم اتبع بقية تعليماتها كالمعتاد.

لقد أصلحت برنامج README لمراسلي الياسمين لمعالجة الطرق التي يختلف بها [email protected] عن [email protected] . لقد أضفت أيضًا قسمًا محددًا حول استخدام مراسلي الياسمين مع المنقلة لأن السؤال يطرح كثيرًا.

شكرًا ksraja للإشارة إلى الافتقار الشديد إلى الوثائق.

لماذا يتم إغلاق هذه المشكلة ، من الواضح أن هذه مشكلة لا تزال قائمة.

    onPrepare: function() {

        require('jasmine-reporters');
        jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter('test-target/', true, true));

        browser.driver.get('http://localhost:9000');
        require('./test/e2e/models/login-page').login();
    },

يلقي خطأ:

Running "protractor:e2e" (protractor) task

/Users/212400520/PredixExperience/predix-dashboard/node_modules/jasmine-reporters/src/jasmine.console
_reporter.js:2
    if (! jasmine) {
          ^
ReferenceError: jasmine is not defined
    at /Users/212400520/PredixExperience/predix-dashboard/node_modules/jasmine-reporters/src/jasmine.
console_reporter.js:2:11
    at Object.<anonymous> (/Users/212400520/PredixExperience/predix-dashboard/node_modules/jasmine-re
porters/src/jasmine.console_reporter.js:144:3)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/Users/212400520/PredixExperience/predix-dashboard/node_modules/jasmine-re
porters/src/load_reporters.js:1:63)
    at Module._compile (module.js:456:26)
>> 
Fatal error: protractor exited with code: 8

jonniespratley لقد اكتشفت أن npm install jasmine-reporters يقوم بتثبيت إصدار 1.0.1 افتراضيًا.
لذلك ، تأكد من تثبيت أحدث إصدار من jasmine-reporters . علي سبيل المثال

npm install jasmine-reporters@~2.0.3 --save-dev

بعد ذلك ، قمت بتحديث تكوين المنقلة على النحو التالي:

var jasmineReporters = require('jasmine-reporters');
exports.config = {
    framework: 'jasmine2',
    //...  
    //Other configurations...
    //...  
    onPrepare: function () {
        jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
            savePath: '..',
            consolidateAll: false
        }));
    },
    jasmineNodeOpts: {
        showColors: true,
        defaultTimeoutInterval: 60000,
        print: function() {}
    }
};

الآن يعمل مراسلو الياسمين بشكل جيد بالنسبة لي.

في وثائق المنقولات الخاصة بالترقية إلى إطار عمل jasmine2 ، سيكون من الرائع في قسم المراسلين توثيق إجابة luixaviles . لا أستطيع أن أتخيل أنني الوحيد الذي واجه صعوبة في معرفة كيفية الحصول على تقارير junit لـ jasmine2. صحيح ، بمجرد أن وجدت هذا وأعدت قراءة الوثائق الحالية أصبح الأمر أكثر وضوحًا ، لكنني قرأته في الأصل عن طريق الخطأ لأعني أن مراسلي الياسمين لم يعملوا (على الإطلاق) مع الياسمين 2. إن الحصول على الإجابة أعلاه ، أو رابط إلى الملف التمهيدي لمراسلي الياسمين سيجعل الأمور أسهل قليلاً.

جربت تقارير الياسمين
var jasmineReporters = تتطلب ("مراسلين ياسمين") ؛
jasmine.getEnv (). addReporter (new jasmineReporters.JUnitXmlReporter ('../ TestReports / test'، true، true)) ؛

كان يعمل بشكل جيد ، ولكن لم يتم إنشاء ملف xml

حاولت الوصول إلى https://github.com/angular/protractor/blob/master/spec/junitOutputConf.js ، ولكن أعطي 404

spatchamatla يستخدم مثالك مزيجًا غريبًا من بناء جملة [email protected] (الحجج المرتبة) مع ما يشبه مراسل [email protected] (jasmineReporters.JUnitXmlReporter vs jasmine.JUnitXmlReporter).

حاول استخدام الصيغة الصحيحة لإنشاء المراسل ومعرفة ما إذا كنت ستحصل على المزيد.

معدل من المثال في ياسمين مراسلين README:

var junitReporter = new jasmineReporters.JUnitXmlReporter({
    savePath: '../TestReports/test'
});
jasmine.getEnv().addReporter(junitReporter);

تأكد من أن المجلد "../TestReports/test" موجود كما أعتقد أنه فشل
بصمت أيضا.

يوم الأربعاء 15 أبريل 2015 الساعة 4:33 مساءً ، أرسل Ben Loveridge [email protected]
كتب:

spatchamatla https://github.com/spatchamatla مثالك يستخدم ملف
مزيج غريب من بناء الجملة [email protected] (الحجج المرتبة)
مع ما يشبه مراسل [email protected]
(jasmineReporters.JUnitXmlReporter vs jasmine.JUnitXmlReporter).

حاول استخدام الصيغة الصحيحة لإنشاء المراسل ومعرفة ما إذا كنت تحصل عليه
بالإضافة إلى ذلك.

معدل من المثال في ياسمين مراسلين README:

var junitReporter = new jasmineReporters.JUnitXmlReporter ({
savePath: "../TestReports/test"
}) ؛
jasmine.getEnv (). addReporter (junitReporter) ،

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/angular/protractor/issues/60#issuecomment -93451490.

لم تكن فكرة سيئة أبدًا ، على الرغم من أن مراسلي جاسمين سيستخدمون https://github.com/substack/node-mkdirp لمحاولة إنشاء الدليل.

bloveridgespenoir ، قمت بالرجوع إلى [email protected] واستخدمت ما يلي

   //For junit output reports
        var reporters = require('jasmine-reporters');
        var capsPromise = browser.getCapabilities();
        capsPromise.then(function (caps) {
            var browserName = caps.caps_.browserName.toUpperCase();
            var browserVersion = caps.caps_.version;
            var prePendStr = browserName + "-" + browserVersion + "-";
            jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter('Protractor/TestReports', true, true, prePendStr));
        });

بدأ العمل ، الجانب السلبي الوحيد هو إنشاء المجلد في الدليل الرئيسي بدلاً من مجلد المشروع. عندما حاولت استخدام مسار مجلد المشروع ، ما زال يقول

تحذير: فشلت كتابة تقرير junit لـ "../TestReports" ، "CHROME-41.0.2272.118-TestImpersonationPage.xml". الأسباب:
محاولة وحيد القرن: لم يتم تعريف جافا
محاولة PhantomJs: لم يتم تعريف النافذة
محاولة NodeJS: EACCES ، تم رفض الإذن '/ Users / TestReports'

لقد قمت بإنشاء المجلد يدويًا وما زلت أعرض ما ورد أعلاه في وحدة التحكم

هل "Protractor / TestReports" هو المسار الصحيح وهل هذا المجلد موجود؟

يوم الأربعاء 15 أبريل 2015 الساعة 5:01 مساءً ، spatchamatla [email protected]
كتب:

تضمين التغريدة
https://github.com/spenoir ، قمت بالرجوع إلى [email protected] و
تستخدم أدناه

// للحصول على تقارير الإخراج junit
مراسلين فار = تتطلب ('جاسمين-مراسلين') ؛
var capsPromise = browser.getCapabilities () ،
capsPromise.then (الوظيفة (قبعات) {
var browserName = caps.caps_.browserName.toUpperCase () ،
var browserVersion = caps.caps_.version ؛
var prePendStr = اسم المتصفح + "-" + إصدار المتصفح + "-" ؛
jasmine.getEnv (). addReporter (new jasmine.JUnitXmlReporter ('Protractor / TestReports'، true، true، prePendStr)) ؛
}) ؛

بدأ العمل ، الجانب السلبي الوحيد هو إنشاء المجلد في المنزل
دليل بدلا من مجلد المشروع. عندما حاولت استخدام المشروع
مسار المجلد ، لا يزال يقول

محاولة وحيد القرن: لم يتم تعريف جافا
محاولة PhantomJs: لم يتم تعريف النافذة
محاولة NodeJS: يجب أن تكون وسيطات path.resolve عبارة عن سلاسل

لقد قمت بإنشاء المجلد يدويًا وما زلت أعرض ما ورد أعلاه في وحدة التحكم

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/angular/protractor/issues/60#issuecomment -93460326.

"Protractor / TestReports" هو المسار الذي تم إنشاؤه في المجلد الرئيسي ، ثم استخدمته

jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter('../TestReports', true, true, prePendStr));

وأنا خلقت يدويا

screen shot 2015-04-15 at 12 07 09 pm

عندما أجريت الاختبار ، ما زال يعطي
تحذير: فشلت كتابة تقرير junit لـ "../TestReports" ، "CHROME-41.0.2272.118-TestImpersonationPage.xml". الأسباب:
محاولة وحيد القرن: لم يتم تعريف جافا
محاولة PhantomJs: لم يتم تعريف النافذة
محاولة NodeJS: EACCES ، تم رفض الإذن '/ Users / TestReports'

يمكنك محاولة تخفيف الأذونات في مجلد TestReports ، لست متأكدًا
بعد ذلك.

يوم الأربعاء 15 أبريل 2015 الساعة 5:10 مساءً ، spatchamatla [email protected]
كتب:

"Protractor / TestReports" هو المسار الذي تم إنشاؤه في المجلد الرئيسي ،
ثم اعتدت

jasmine.getEnv (). addReporter (new jasmine.JUnitXmlReporter ('../ TestReports'، true، true، prePendStr)) ؛

وأنا خلقت يدويا

[الصورة: لقطة شاشة يوم 15/2015 الساعة 12 07 09 مساءً]
https://cloud.githubusercontent.com/assets/4671240/7163457/278cffa6-e368-11e4-9994-2c0b5d33f07c.png

عندما أجريت الاختبار ، ما زال يعطي
تحذير: فشل كتابة تقرير junit لـ "../TestReports" ،
"CHROME-41.0.2272.118-TestImpersonationPage.xml". الأسباب:
محاولة وحيد القرن: لم يتم تعريف جافا
محاولة PhantomJs: لم يتم تعريف النافذة
محاولة NodeJS: EACCES ، تم رفض الإذن '/ Users / TestReports'

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/angular/protractor/issues/60#issuecomment -93466365.

بالتأكيد ، شكرًا spenoir على اقتراحاتك ومدخلاتك

موضوع عظيم. ساعد كثيرا.
اعتقدت أن لدي مشكلة - لكن لا تفعل ذلك. لا يمكن العثور على طريقة لحذف :)
ثابر على العمل الجيد.

jkmurthyksraja يبدو أن jasmineReports المدرجة هي في الواقع تصدير الوظيفة المطلوبة.

على سبيل المثال ،
var jasmineReporters = require('jasmine-reporters');

يعمل المثال الموجود في الملف التمهيدي لصحفيين الياسمين بالنسبة لي: https://github.com/larrymyers/jasmine-reporters#protractor

إذا كنت بحاجة فقط إلى إخراج وحدة التحكم ، فقد سررت بـ https://github.com/bcaudan/jasmine-spec-reporter/blob/master/docs/protractor-configuration.md

josephdpurcell ، الرابط الذي قدمته يعمل أيضًا معي. ها هو التكوين الخاص بي ، وآمل أن يساعد!
تأكد من أنك قمت بتثبيت حزمة mkdirp بالإضافة إلى حزم الياسمين 2.x الأخرى وحزم المراسلين 2.x الياسمين.
يؤدي هذا التكوين إلى إنشاء مجلد لتجنب فشل صامت إذا لم يكن المجلد موجودًا.

   var folderName = ('output_folder');
    var mkdirp = require('mkdirp');
    mkdirp(folderName, function(err) {
      if (err) {
        console.error(err);
       } else {
          var jasmineReporters = require('jasmine-reporters');
          jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
            consolidateAll: true,
            savePath: folderName,
             filePrefix: 'xmloutput-'
            }));
         }
    });
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات