Mocha ve WebDriverJS kullanarak bir web uygulamasını test ediyorum, here. Testler geçince, her şey yolunda. Ancak, bir test başarısız olursa, paketdeki diğer testler zaman aşımına uğrayacak ve Runner, webdriver örneğini kapatmadan paketin sonunda çıkacaktır. Örnek test durumu:Node.js + mocha + webdriverjs: Başarısız olan testler Suite
var assert = require('assert'),
client = require("webdriverjs").remote({
logLevel: 'silent'
});
describe('Self-test', function() {
before(function(done) {
client
.init()
.url('http://www.wikipedia.org/', function() {
done();
});
});
after(function(done) {
client.end(function() {
done();
});
});
// tests
it('should fail properly', function(done) {
client.getTitle(function(result) {
assert(false, 'This should fail');
done();
});
});
it('should pass afterwards', function(done) {
client.getTitle(function(result) {
assert(true, 'This should still pass');
done();
});
});
});
çıkışı:
bir test başarısız olduğunda WebDriverJS kuyruk durdu olur çünkü~> mocha test/self-test.js
Self-test
1) should fail properly
2) should pass afterwards
3) "after all" hook
✖ 3 of 2 tests failed:
1) Self-test should fail properly:
AssertionError: This should fail
at null.<anonymous> (./test/self-test.js:24:17)
at QueueItem (./node_modules/webdriverjs/lib/webdriverjs.js:242:15)
at null.<anonymous> (./node_modules/webdriverjs/lib/commands/getTitle.js:12:6)
at QueueItem (./node_modules/webdriverjs/lib/webdriverjs.js:242:15)
at IncomingMessage.WebdriverJs.proxyResponse (./node_modules/webdriverjs/lib/webdriverjs.js:782:6)
at IncomingMessage.EventEmitter.emit (events.js:115:20)
at IncomingMessage._emitEnd (http.js:366:10)
at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:149:23)
at Socket.socketOnData [as ondata] (http.js:1366:20)
at TCP.onread (net.js:402:27)
2) Self-test should pass afterwards:
Error: timeout of 10000ms exceeded
at Object.<anonymous> (./node_modules/mocha/lib/runnable.js:158:14)
at Timer.list.ontimeout (timers.js:101:19)
3) Self-test "after all" hook:
Error: timeout of 10000ms exceeded
at Object.<anonymous> (./node_modules/mocha/lib/runnable.js:158:14)
at Timer.list.ontimeout (timers.js:101:19)
Bildiğim kadarıyla söyleyebilirim, bu. Bunu düzeltmenin bir yolu var mı? Yerel komut satırı testi için bile en uygun alt yapıdır ve koşu testlerini otomatik olarak ve/veya arka planda imkansız hale getirmeyi zorlaştırır.
Güncelleme: ben her test için yeni bir müşteri nesnelleştirilmesiyle kuyruk yetmezliği düzeltebilirsiniz düşünüyorum, ama bu (WebDriver örneği sıfırdan her zaman başlatmak gerekir gibi) çok daha yavaş işler yapacak ve bırakacaktı WebDriver süreçleri test arızasında takılı kalmadan çalışır. İdeal olarak, kuyruğun herhangi bir yerinde bir sıranın kuyruğun sonuna kadar atladığı ve daha sonra test çerçevesinin yakalanması için hata attığı Soda tarafından sunulan yapı gibi bir şey isterim.
Bu yaklaşımdaki tek fark, testin ilk testten sonra, "afterEach" üzerinde zaman aşımına uğraması ve ikinci testin hiçbir zaman çalışmamasıdır. Sorun aynı. – nrabinowitz
'after()' işlevini kullanmıyorsanız ve bunun yerine 'sadece ekleyin.Her testte "client" nesnesine end() 'diyoruz? Esasen iki API arasındaki uyumsuzluğa düştünüz, ancak bazı küçük ince ayarlarla düzeltilebilir olmalı. – srquinn
Keşke daha fazla yardımcı olabilirdim, ancak Selenium sunucusuna erişemediğim için test yapamıyorum. – srquinn