我想用Karma使用多個瀏覽器運行一些測試。但是,測試是與數據庫交互的集成測試(獲取和更新數據)。由於相同的測試在多個瀏覽器中運行,它們都與相同的測試數據交互。在Karma中限制並行瀏覽器實例
因此,如果測試在多個瀏覽器中同時運行,則一個測試可能會影響在其他瀏覽器中運行的其他測試。
如何限制併發瀏覽器的數量,同時仍然使用多個瀏覽器進行測試? (例如,限制設置爲1將導致運行測試在序列中的每個瀏覽器,而不是並行地)
我想用Karma使用多個瀏覽器運行一些測試。但是,測試是與數據庫交互的集成測試(獲取和更新數據)。由於相同的測試在多個瀏覽器中運行,它們都與相同的測試數據交互。在Karma中限制並行瀏覽器實例
因此,如果測試在多個瀏覽器中同時運行,則一個測試可能會影響在其他瀏覽器中運行的其他測試。
如何限制併發瀏覽器的數量,同時仍然使用多個瀏覽器進行測試? (例如,限制設置爲1將導致運行測試在序列中的每個瀏覽器,而不是並行地)
這已被固定在https://github.com/karma-runner/karma/pull/1646合併爲0.13.2:
併發
類型:Number
默認值:無限
描述:有多少瀏覽器噶並行啓動。
尤其是在像SauceLabs和Browserstack這樣的服務中,只有一次啓動有限數量的瀏覽器纔有意義,並且只有在完成時纔會啓動更多。使用此配置,您可以確定在任何給定時間點應該一次運行多少個瀏覽器。
https://karma-runner.github.io/2.0/config/configuration-file.html
這是正確的。使用內置功能 – 2016-07-23 09:11:04
只是一個粗略的想法:
karma.conf.js
文件中的「配置模板」無瀏覽器屬性提示:您可以在這一點上「包裝」配置停止或矣如果一個運行實例面臨一些錯誤
的這段代碼演示瞭如何加載和填充模板配置:
function getConfigTemplate(path){
var config = {
// Maybe you want to add/remove some files from the list
// based on some criteria
files: [...],
// Path of the template file
configFile: path
}
return config;
}
var template = getConfigTemplate('/path/to/the/file');
// Here I can append more stuff
template.browsers = ['Chrome']
注意:因果報應用於兩種配置的併購戰略的工作如下:
- 如果屬性在模板上,然後直接進入最終配置
- 如果某個屬性不在模板上,則查找該屬性的配置「包裝器」對象
- 如果您是模板上的屬性並添加更多隻有包裝前者將被使用,後者將被忽略。
此代碼,而不是可用於「鏈」你的人緣服務器:
var currentServer = 0;
var configs = [ ... ];
function startKarmaServer(config, callback){
karma.server.start(config, function (exitCode){
if(exitCode){
// an error occurred
// stop karma!
} else {
currentServer++;
callback();
}
});
}
function startServers(){
// here some code to run the karma servers in series
}
我會建議async.js爲startServers
功能。
如果您使用的是較舊版本的業力(0.10
或更低版本),您可能會看到at this fix用於在執行後關閉Web服務器。
此外,請注意連續性集成標誌(autoWatch
)應關閉以便進行鏈接工作。
如果您使用grunt
與grunt-karma
我寫了this task,這是你想要的。
嗨,你是怎麼最終解決這個問題呢? – Malki 2015-02-18 12:26:47