2017-12-14 14 views
2

キュウリのバージョンを生成キュウリは空白のHTMLレポートに

@RunWith(Cucumber.class) 
@CucumberOptions(
     format = {"pretty", "html:target/cucumber", "json:target/cucumber.json"}, 
     glue = {"com.webuiauto.bddtests"}, 
     features = {"src/test/resources/Features"}, 
     strict = true, 
     tags = {"@SSS"}) 
public class RunViBddTests { 
} 

index.htmlファイルを開いた後、ブラウザには何も見えません。ただ空白のページ。私は、ブラウザ上で検査し、私は、コンソールで次のエラーを持っている:

formatter.js:112 Uncaught TypeError: Cannot read property 'append' of undefined 
    at CucumberHTML.DOMFormatter.write (formatter.js:112) 
    at HTMLDocument.<anonymous> (report.js:15) 
    at k (jquery-1.8.2.min.js:2) 
    at Object.fireWith [as resolveWith] (jquery-1.8.2.min.js:2) 
    at Function.ready (jquery-1.8.2.min.js:2) 
    at HTMLDocument.D (jquery-1.8.2.min.js:2) 
+0

ないブラウザのコンソールからこのエラーがあまりにも多くを助けてください。その他の便利なあなたのIDEで出力されますあなたはそれをあなたの質問に追加することができますか?あなたは実行しようとしている機能ファイルの例を追加することもできますか? –

+0

ideコンソール上で何かと思われることはありませんでした。 –

答えて

0

これは私が考え出したものです:

キュウリレポートは、いくつかのjsファイルを生成し、問題がreport.js

にありました

これは、それはのように見えた方法です:私はこのラインを取った

$(document).ready(function() {var formatter = new CucumberHTML.DOMFormatter($('.cucumber-report'));formatter.uri("test.feature"); 
    formatter.feature({ 
     "line": 3, 
     "name": "Login", 
     "description": "", 
     "id": "login", 
     "keyword": "Feature", 
     "tags": [ 
     { 
      "line": 1, 
      "name": "@SSS" 
     } 
     ] 
    }); 
    **formatter.write("11:43:49: WebDriver navigating to:\u0027https://1.1.1.1/\u0027");** 
    formatter.before({ 
     "duration": 16696372480, 
     "status": "passed" 
    }); 
    formatter.before({ 
     "duration": 93668, 
     "status": "passed" 
    }); 
    formatter.scenario({ 
     "line": 5, 
     "name": "Login And Logout", 
     "description": "", 
     "id": "login;login-and-logout", 
     "type": "scenario", 
     "keyword": "Scenario" 
    }); 
    formatter.step({ 
     "line": 7, 
     "name": "UI Login with user \"moaada\" and password \"moaada12\"", 
     "keyword": "* " 
    }); 
    formatter.step({ 
     "line": 8, 
     "name": "UI Logout", 
     "keyword": "* " 
    }); 
    formatter.match({ 
     "arguments": [ 
     { 
      "val": "moaada", 
      "offset": 20 
     }, 
     { 
      "val": "moaada12", 
      "offset": 42 
     } 
     ], 
     "location": "BasicOperationsSteps.login(String,String)" 
    }); 
    formatter.write("11:43:59: Finding web element By.id: gwt-debug-Dialog_Box"); 
    formatter.write("11:43:59: Web element found By.id: gwt-debug-Dialog_Box"); 
    formatter.write("11:43:59: Finding web element By.id: gwt-debug-Login_UserName"); 
    formatter.write("11:43:59: Web element found By.id: gwt-debug-Login_UserName"); 
    formatter.write("11:43:59: WebDriver changing value in element found By.id: gwt-debug-Login_UserName from \u0027\u0027 to \u0027\u0027"); 
    formatter.write("11:43:59: WebDriver changing value in element found By.id: gwt-debug-Login_UserName from \u0027\u0027 to \u0027moaada\u0027"); 
    formatter.write("11:43:59: Finding web element By.id: gwt-debug-Dialog_Box"); 
    formatter.write("11:43:59: Web element found By.id: gwt-debug-Dialog_Box"); 
    formatter.write("11:43:59: Finding web element By.id: gwt-debug-Login_Password"); 
    formatter.write("11:43:59: Web element found By.id: gwt-debug-Login_Password"); 
    formatter.write("11:43:59: WebDriver changing value in element found By.id: gwt-debug-Login_Password from \u0027\u0027 to \u0027\u0027"); 
    formatter.write("11:43:59: WebDriver changing value in element found By.id: gwt-debug-Login_Password from \u0027\u0027 to \u0027moaada12\u0027"); 
    formatter.write("11:43:59: Finding web element By.id: gwt-debug-userInfo"); 
    formatter.write("11:43:59: Web element found By.id: gwt-debug-userInfo"); 
    formatter.write("11:44:00: Finding web element By.id: gwt-debug-userInfo"); 
    formatter.write("11:44:00: Web element found By.id: gwt-debug-userInfo"); 
    formatter.write("11:44:00: Finding web element By.id: gwt-debug-DeviceControlBar_Help"); 
    formatter.write("11:44:00: Web element found By.id: gwt-debug-DeviceControlBar_Help"); 
    formatter.embedding("image/png", "embedded0.png"); 
    formatter.write("11:44:01: 11:44:00 Screenshot. Locator: By.id: gwt-debug-userInfo"); 
    formatter.result({ 
     "duration": 3237037562, 
     "status": "passed" 
    }); 
    formatter.match({ 
     "location": "BasicOperationsSteps.logout()" 
    }); 
    formatter.write("11:44:02: Finding web element By.id: gwt-debug-userInfo"); 
    formatter.write("11:44:02: Web element found By.id: gwt-debug-userInfo"); 
    formatter.write("11:44:02: Clicking on td"); 
    formatter.write("11:44:02: Finding web element By.xpath: .//div[contains(@id,\u0027gwt-debug-Dialog_Box\u0027) and contains(@class,\u0027MessagesFrame\u0027)]"); 
    formatter.write("11:44:02: Web element found By.xpath: .//div[contains(@id,\u0027gwt-debug-Dialog_Box\u0027) and contains(@class,\u0027MessagesFrame\u0027)]"); 
    formatter.write("11:44:02: Finding web element By.id: gwt-debug-Global_Logout-0-0"); 
    formatter.write("11:44:02: Web element found By.id: gwt-debug-Global_Logout-0-0"); 
    formatter.write("11:44:02: Clicking on td"); 
    formatter.write("11:44:02: Finding web element By.xpath: .//div[contains(@id,\u0027gwt-debug-Dialog_Box\u0027) and contains(@class,\u0027MessagesFrame\u0027)]"); 
    formatter.write("11:44:02: Web element found By.xpath: .//div[contains(@id,\u0027gwt-debug-Dialog_Box\u0027) and contains(@class,\u0027MessagesFrame\u0027)]"); 
    formatter.embedding("image/png", "embedded1.png"); 
    formatter.write("11:44:03: 11:44:02 Screenshot. Locator: By.xpath: .//div[contains(@id,\u0027gwt-debug-Dialog_Box\u0027) and contains(@class,\u0027MessagesFrame\u0027)]"); 
    formatter.write("11:44:03: Finding web element By.xpath: .//div[contains(@id,\u0027gwt-debug-Dialog_Box\u0027) and contains(@class,\u0027MessagesFrame\u0027)]"); 
    formatter.write("11:44:12: Web element found By.xpath: .//div[contains(@id,\u0027gwt-debug-Dialog_Box\u0027) and contains(@class,\u0027MessagesFrame\u0027)]"); 
    formatter.embedding("image/png", "embedded2.png"); 
    formatter.write("11:44:12: 11:44:12 Screenshot. Locator: By.xpath: .//div[contains(@id,\u0027gwt-debug-Dialog_Box\u0027) and contains(@class,\u0027MessagesFrame\u0027)]"); 
    formatter.result({ 
     "duration": 13063106597, 
     "status": "passed" 
    }); 
    formatter.after({ 
     "duration": 173543, 
     "status": "passed" 
    }); 
    formatter.after({ 
     "duration": 45551, 
     "status": "passed" 
    }); 
    }); 

formatter.write("11:43:49: WebDriver navigating to:\u0027https://1.1.1.1/\u0027");

と右

二formatter.write

前にそれを置くので、ファイルは次のようになります:

$(document).ready(function() {var formatter = new CucumberHTML.DOMFormatter($('.cucumber-report'));formatter.uri("test.feature"); 
formatter.feature({ 
    "line": 3, 
    "name": "Login", 
    "description": "", 
    "id": "login", 
    "keyword": "Feature", 
    "tags": [ 
    { 
     "line": 1, 
     "name": "@SSS" 
    } 
    ] 
}); 

formatter.before({ 
    "duration": 16696372480, 
    "status": "passed" 
}); 
formatter.before({ 
    "duration": 93668, 
    "status": "passed" 
}); 
formatter.scenario({ 
    "line": 5, 
    "name": "Login And Logout", 
    "description": "", 
    "id": "login;login-and-logout", 
    "type": "scenario", 
    "keyword": "Scenario" 
}); 
formatter.step({ 
    "line": 7, 
    "name": "UI Login with user \"moaada\" and password \"moaada12\"", 
    "keyword": "* " 
}); 
formatter.step({ 
    "line": 8, 
    "name": "UI Logout", 
    "keyword": "* " 
}); 
formatter.match({ 
    "arguments": [ 
    { 
     "val": "moaada", 
     "offset": 20 
    }, 
    { 
     "val": "moaada12", 
     "offset": 42 
    } 
    ], 
    "location": "BasicOperationsSteps.login(String,String)" 
}); 
**formatter.write("11:43:49: WebDriver navigating to:\u0027https://1.1.1.1/\u0027");** 
formatter.write("11:43:59: Finding web element By.id: gwt-debug-Dialog_Box"); 
formatter.write("11:43:59: Web element found By.id: gwt-debug-Dialog_Box"); 
formatter.write("11:43:59: Finding web element By.id: gwt-debug-Login_UserName"); 
formatter.write("11:43:59: Web element found By.id: gwt-debug-Login_UserName"); 
formatter.write("11:43:59: WebDriver changing value in element found By.id: gwt-debug-Login_UserName from \u0027\u0027 to \u0027\u0027"); 
formatter.write("11:43:59: WebDriver changing value in element found By.id: gwt-debug-Login_UserName from \u0027\u0027 to \u0027moaada\u0027"); 
formatter.write("11:43:59: Finding web element By.id: gwt-debug-Dialog_Box"); 
formatter.write("11:43:59: Web element found By.id: gwt-debug-Dialog_Box"); 
formatter.write("11:43:59: Finding web element By.id: gwt-debug-Login_Password"); 
formatter.write("11:43:59: Web element found By.id: gwt-debug-Login_Password"); 
formatter.write("11:43:59: WebDriver changing value in element found By.id: gwt-debug-Login_Password from \u0027\u0027 to \u0027\u0027"); 
formatter.write("11:43:59: WebDriver changing value in element found By.id: gwt-debug-Login_Password from \u0027\u0027 to \u0027moaada12\u0027"); 
formatter.write("11:43:59: Finding web element By.id: gwt-debug-userInfo"); 
formatter.write("11:43:59: Web element found By.id: gwt-debug-userInfo"); 
formatter.write("11:44:00: Finding web element By.id: gwt-debug-userInfo"); 
formatter.write("11:44:00: Web element found By.id: gwt-debug-userInfo"); 
formatter.write("11:44:00: Finding web element By.id: gwt-debug-DeviceControlBar_Help"); 
formatter.write("11:44:00: Web element found By.id: gwt-debug-DeviceControlBar_Help"); 
formatter.embedding("image/png", "embedded0.png"); 
formatter.write("11:44:01: 11:44:00 Screenshot. Locator: By.id: gwt-debug-userInfo"); 
formatter.result({ 
    "duration": 3237037562, 
    "status": "passed" 
}); 
formatter.match({ 
    "location": "BasicOperationsSteps.logout()" 
}); 
formatter.write("11:44:02: Finding web element By.id: gwt-debug-userInfo"); 
formatter.write("11:44:02: Web element found By.id: gwt-debug-userInfo"); 
formatter.write("11:44:02: Clicking on td"); 
formatter.write("11:44:02: Finding web element By.xpath: .//div[contains(@id,\u0027gwt-debug-Dialog_Box\u0027) and contains(@class,\u0027MessagesFrame\u0027)]"); 
formatter.write("11:44:02: Web element found By.xpath: .//div[contains(@id,\u0027gwt-debug-Dialog_Box\u0027) and contains(@class,\u0027MessagesFrame\u0027)]"); 
formatter.write("11:44:02: Finding web element By.id: gwt-debug-Global_Logout-0-0"); 
formatter.write("11:44:02: Web element found By.id: gwt-debug-Global_Logout-0-0"); 
formatter.write("11:44:02: Clicking on td"); 
formatter.write("11:44:02: Finding web element By.xpath: .//div[contains(@id,\u0027gwt-debug-Dialog_Box\u0027) and contains(@class,\u0027MessagesFrame\u0027)]"); 
formatter.write("11:44:02: Web element found By.xpath: .//div[contains(@id,\u0027gwt-debug-Dialog_Box\u0027) and contains(@class,\u0027MessagesFrame\u0027)]"); 
formatter.embedding("image/png", "embedded1.png"); 
formatter.write("11:44:03: 11:44:02 Screenshot. Locator: By.xpath: .//div[contains(@id,\u0027gwt-debug-Dialog_Box\u0027) and contains(@class,\u0027MessagesFrame\u0027)]"); 
formatter.write("11:44:03: Finding web element By.xpath: .//div[contains(@id,\u0027gwt-debug-Dialog_Box\u0027) and contains(@class,\u0027MessagesFrame\u0027)]"); 
formatter.write("11:44:12: Web element found By.xpath: .//div[contains(@id,\u0027gwt-debug-Dialog_Box\u0027) and contains(@class,\u0027MessagesFrame\u0027)]"); 
formatter.embedding("image/png", "embedded2.png"); 
formatter.write("11:44:12: 11:44:12 Screenshot. Locator: By.xpath: .//div[contains(@id,\u0027gwt-debug-Dialog_Box\u0027) and contains(@class,\u0027MessagesFrame\u0027)]"); 
formatter.result({ 
    "duration": 13063106597, 
    "status": "passed" 
}); 
formatter.after({ 
    "duration": 173543, 
    "status": "passed" 
}); 
formatter.after({ 
    "duration": 45551, 
    "status": "passed" 
}); 
}); 

はキュウリでこのバグですか?フックのシナリオ引数に書き込みを呼び出すと、report.jsファイルにformatter.write呼び出しを追加します。https://github.com/cucumber/cucumber-htmlのJavaScriptの関数はの内容を表示します

1

brasmusson(https://github.com/cucumber/cucumber-jvm/issues/1303

で答えたよう」最初のシナリオを実行する前のフックでは、まだ実行されていない(ガーキン)ステップがないため、前のステップは存在しないため、この時点から空白になります(for後続のシナリオのフックの前からformatter.writeを呼び出すと、前のシナリオの最後のステップの下にコンテンツが表示されますが、これは間違っていますが、レポートは少なくとも空白ではありません)

これを修正するには、https://github.com/cucumber/cucumber-htmlプロジェクトを更新する必要があります。しかし、計画がそのプロジェクトを置き換えることになっているので、cucumber/cucumber-html#44を参照してください。コアチームの誰もがその作業を担当するかどうかはわかりません。

この問題を回避するには、HTMLフォーマッタが使用されている場合は、フック前のシナリオ引数に書き込みを呼び出さないことです。」

関連する問題