Phantomjs-testing

提供:Dev Guides
移動先:案内検索

PhantomJS-テスト

*PhantomJS* には、すべての詳細を提供するWebページ用のAPIがたくさんあります。 PhantomJSは、ページのコンテンツの取得、画面共有の取得、ページのPDFへの変換などのテストに使用できます。 市場には多くの一般的なテストライブラリがあり、PhantomJSと一緒に使用してテストに使用できます。

PhantomJSで動作することができる人気のあるフレームワークのいくつかは次のとおりです-

  • モカ
  • ジャスミン
  • Qunit
  • Hiro
  • ライカ
  • Buster.JS *WebDriver

例– Qunitを使用したPhantomJS

(function () {
   var url, timeout,args = require('system').args, page = require('webpage').create();
   url = args[1];
   timeout = parseInt(10, 10);

   page.onConsoleMessage = function (msg) {
     //prints all the console messages
      console.log(msg);
   };
   page.onInitialized = function () { //called when page is initialized
      page.evaluate(callqunit);
   };
   page.onCallback = function (message) {//called from
      var result, failed;

      if (message) {
         if (message.name === 'QUnit.done') {
            result = message.data;
            failed = !result || !result.total || result.failed;

            if (!result.total) {
               console.error('No tests were executed');
            }
            pageexit(failed ? 1 : 0);
         }
      }
   };
   page.open(url, function (status) {//opening page
      if (status !== 'success') {
         console.error('Unable to access network: ' + status);
         pageexit(1);

      } else {
         var checkqunit = page.evaluate(function () {
           //evaluating page and chcking if qunit object
               is present on the given page url
            return (typeof QUnit === 'undefined' || !QUnit);
         });

         if (checkqunit) {
            console.error('Qunit scripts are not present on the page');
            pageexit(1);
         }

        //timeout of 10seconds is used otherwise message from console will get printed.
         setTimeout(function () {
            console.error('The specified timeout of ' + timeout + ' seconds has expired.
               Aborting...');
            pageexit(1);
         }, timeout* 1000);
      }
   });
   function callqunit() {

qunitl

<!DOCTYPE html>
<html>

   <head>
      <meta charset = "utf-8">
      <meta name = "viewport" content = "width = device-width">
      <title>QUnit Example</title>
      <link rel = "stylesheet" href = "https://code.jquery.com/qunit/qunit-2.3.2.css">
   </head>

   <body>
      <div id = "qunit"></div>
      <div id = "qunit-fixture"></div>
      <script src = "https://code.jquery.com/qunit/qunit-2.3.2.js"></script>
   </body>

</html>

出力

コマンド-phantomjs qunit.js http://localhost/tasks/qunitl

上記のプログラムは、次の出力を生成します。

{"passed":3,"failed":2,"total":5,"runtime":23}
Time taken is 23ms to run 5 tests.
3 passed, 2 failed.