[ Index ]

PHP Cross Reference of Limb3

title

Body

[close]

/tests_runner/lib/simpletest/extensions/ -> selenese_tester.php (source)

   1  <?php
   2  /**

   3   *    @package    SeleneseTestCase

   4   *    @subpackage    UnitTester

   5   *    @version    $Id: selenese_tester.php,v 1.2 2007/06/06 16:58:53 pp11 Exp $

   6   */
   7  
   8  /**#@+

   9   * include SimpleTest files

  10   */
  11  require_once dirname(__FILE__).'/../unit_tester.php';
  12  require_once dirname(__FILE__).'/selenium/remote-control.php';
  13  /**#@-*/

  14  
  15  /**

  16   * SeleneseTestCase

  17   * 

  18   * Integrate selenese html test suite support (can be generated by selenium-IDE)

  19   * 

  20   * @category Testing

  21   * @package selenese_tester

  22   * @author Guidet Alexandre <alwex@free.fr>

  23   * 

  24   * @param simpleSelenium $selenium

  25   * @param string $html

  26   * @param  string $testFile

  27   * @param array $parsed_table

  28   * @param string $logMessages

  29   * @param array $_commandMap

  30   * 

  31   */
  32  class SeleneseTestCase extends UnitTestCase {
  33      var $selenium;
  34      var $html;
  35      var $testFile;
  36      var $parsed_table;
  37      var $logMessages;
  38      var $_commandMap = array("verify",
  39                              "verifyErrorOnNext",
  40                              "verifyNotErrorOnNext",
  41                              "verifyFailureOnNext",
  42                              "verifyNotFailureOnNext",
  43                              "verifySelected",
  44                              "verifyNotSelected",
  45                              "verifyAlert",
  46                              "verifyNotAlert",
  47                              "verifyAllButtons",
  48                              "verifyNotAllButtons",
  49                              "verifyAllFields",
  50                              "verifyNotAllFields",
  51                              "verifyAllLinks",
  52                              "verifyNotAllLinks",
  53                              "verifyAllWindowIds",
  54                              "verifyNotAllWindowIds",
  55                              "verifyAllWindowNames",
  56                              "verifyNotAllWindowNames",
  57                              "verifyAllWindowTitles",
  58                              "verifyNotAllWindowTitles",
  59                              "verifyAttribute",
  60                              "verifyNotAttribute",
  61                              "verifyAttributeFromAllWindows",
  62                              "verifyNotAttributeFromAllWindows",
  63                              "verifyBodyText",
  64                              "verifyNotBodyText",
  65                              "verifyConfirmation",
  66                              "verifyNotConfirmation",
  67                              "verifyCookie",
  68                              "verifyNotCookie",
  69                              "verifyCursorPosition",
  70                              "verifyNotCursorPosition",
  71                              "verifyElementHeight",
  72                              "verifyNotElementHeight",
  73                              "verifyElementIndex",
  74                              "verifyNotElementIndex",
  75                              "verifyElementPositionLeft",
  76                              "verifyNotElementPositionLeft",
  77                              "verifyElementPositionTop",
  78                              "verifyNotElementPositionTop",
  79                              "verifyElementWidth",
  80                              "verifyNotElementWidth",
  81                              "verifyEval",
  82                              "verifyNotEval",
  83                              "verifyExpression",
  84                              "verifyNotExpression",
  85                              "verifyHtmlSource",
  86                              "verifyNotHtmlSource",
  87                              "verifyLocation",
  88                              "verifyNotLocation",
  89                              "verifyLogMessages",
  90                              "verifyNotLogMessages",
  91                              "verifyMouseSpeed",
  92                              "verifyNotMouseSpeed",
  93                              "verifyPrompt",
  94                              "verifyNotPrompt",
  95                              "verifySelectedId",
  96                              "verifyNotSelectedId",
  97                              "verifySelectedIds",
  98                              "verifyNotSelectedIds",
  99                              "verifySelectedIndex",
 100                              "verifyNotSelectedIndex",
 101                              "verifySelectedIndexes",
 102                              "verifyNotSelectedIndexes",
 103                              "verifySelectedLabel",
 104                              "verifyNotSelectedLabel",
 105                              "verifySelectedLabels",
 106                              "verifyNotSelectedLabels",
 107                              "verifySelectedValue",
 108                              "verifyNotSelectedValue",
 109                              "verifySelectedValues",
 110                              "verifyNotSelectedValues",
 111                              "verifySelectOptions",
 112                              "verifyNotSelectOptions",
 113                              "verifyTable",
 114                              "verifyNotTable",
 115                              "verifyText",
 116                              "verifyNotText",
 117                              "verifyTitle",
 118                              "verifyNotTitle",
 119                              "verifyValue",
 120                              "verifyNotValue",
 121                              "verifyWhetherThisFrameMatchFrameExpression",
 122                              "verifyNotWhetherThisFrameMatchFrameExpression",
 123                              "verifyWhetherThisWindowMatchWindowExpression",
 124                              "verifyNotWhetherThisWindowMatchWindowExpression",
 125                              "verifyAlertPresent",
 126                              "verifyAlertNotPresent",
 127                              "verifyChecked",
 128                              "verifyNotChecked",
 129                              "verifyConfirmationPresent",
 130                              "verifyConfirmationNotPresent",
 131                              "verifyEditable",
 132                              "verifyNotEditable",
 133                              "verifyElementPresent",
 134                              "verifyElementNotPresent",
 135                              "verifyOrdered",
 136                              "verifyNotOrdered",
 137                              "verifyPromptPresent",
 138                              "verifyPromptNotPresent",
 139                              "verifySomethingSelected",
 140                              "verifyNotSomethingSelected",
 141                              "verifyTextPresent",
 142                              "verifyTextNotPresent",
 143                              "verifyVisible",
 144                              "verifyNotVisible",
 145                              "assert",
 146                              "assertErrorOnNext",
 147                              "assertNotErrorOnNext",
 148                              "assertFailureOnNext",
 149                              "assertNotFailureOnNext",
 150                              "assertSelected",
 151                              "assertNotSelected",
 152                              "assertAlert",
 153                              "assertNotAlert",
 154                              "assertAllButtons",
 155                              "assertNotAllButtons",
 156                              "assertAllFields",
 157                              "assertNotAllFields",
 158                              "assertAllLinks",
 159                              "assertNotAllLinks",
 160                              "assertAllWindowIds",
 161                              "assertNotAllWindowIds",
 162                              "assertAllWindowNames",
 163                              "assertNotAllWindowNames",
 164                              "assertAllWindowTitles",
 165                              "assertNotAllWindowTitles",
 166                              "assertAttribute",
 167                              "assertNotAttribute",
 168                              "assertAttributeFromAllWindows",
 169                              "assertNotAttributeFromAllWindows",
 170                              "assertBodyText",
 171                              "assertNotBodyText",
 172                              "assertConfirmation",
 173                              "assertNotConfirmation",
 174                              "assertCookie",
 175                              "assertNotCookie",
 176                              "assertCursorPosition",
 177                              "assertNotCursorPosition",
 178                              "assertElementHeight",
 179                              "assertNotElementHeight",
 180                              "assertElementIndex",
 181                              "assertNotElementIndex",
 182                              "assertElementPositionLeft",
 183                              "assertNotElementPositionLeft",
 184                              "assertElementPositionTop",
 185                              "assertNotElementPositionTop",
 186                              "assertElementWidth",
 187                              "assertNotElementWidth",
 188                              "assertEval",
 189                              "assertNotEval",
 190                              "assertExpression",
 191                              "assertNotExpression",
 192                              "assertHtmlSource",
 193                              "assertNotHtmlSource",
 194                              "assertLocation",
 195                              "assertNotLocation",
 196                              "assertLogMessages",
 197                              "assertNotLogMessages",
 198                              "assertMouseSpeed",
 199                              "assertNotMouseSpeed",
 200                              "assertPrompt",
 201                              "assertNotPrompt",
 202                              "assertSelectedId",
 203                              "assertNotSelectedId",
 204                              "assertSelectedIds",
 205                              "assertNotSelectedIds",
 206                              "assertSelectedIndex",
 207                              "assertNotSelectedIndex",
 208                              "assertSelectedIndexes",
 209                              "assertNotSelectedIndexes",
 210                              "assertSelectedLabel",
 211                              "assertNotSelectedLabel",
 212                              "assertSelectedLabels",
 213                              "assertNotSelectedLabels",
 214                              "assertSelectedValue",
 215                              "assertNotSelectedValue",
 216                              "assertSelectedValues",
 217                              "assertNotSelectedValues",
 218                              "assertSelectOptions",
 219                              "assertNotSelectOptions",
 220                              "assertTable",
 221                              "assertNotTable",
 222                              "assertText",
 223                              "assertNotText",
 224                              "assertTitle",
 225                              "assertNotTitle",
 226                              "assertValue",
 227                              "assertNotValue",
 228                              "assertWhetherThisFrameMatchFrameExpression",
 229                              "assertNotWhetherThisFrameMatchFrameExpression",
 230                              "assertWhetherThisWindowMatchWindowExpression",
 231                              "assertNotWhetherThisWindowMatchWindowExpression",
 232                              "assertAlertPresent",
 233                              "assertAlertNotPresent",
 234                              "assertChecked",
 235                              "assertNotChecked",
 236                              "assertConfirmationPresent",
 237                              "assertConfirmationNotPresent",
 238                              "assertEditable",
 239                              "assertNotEditable",
 240                              "assertElementPresent",
 241                              "assertElementNotPresent",
 242                              "assertOrdered",
 243                              "assertNotOrdered",
 244                              "assertPromptPresent",
 245                              "assertPromptNotPresent",
 246                              "assertSomethingSelected",
 247                              "assertNotSomethingSelected",
 248                              "assertTextPresent",
 249                              "assertTextNotPresent",
 250                              "assertVisible",
 251                              "assertNotVisible");
 252      
 253      /**

 254       * constructor

 255       * 

 256       * Construct the object with the specified browser and url

 257       * 

 258       * @param string $browser

 259       * @param string $url

 260       */
 261  	function __construct($browser, $url) {
 262          $this->selenium = new SimpleSeleniumRemoteControl($browser, $url);
 263          $this->parsed_table = array();
 264      }
 265      
 266      /**

 267       * tidy

 268       * 

 269       * Reformat the selenium-IDE html test suites

 270       */
 271  	function tidy() {
 272          $tmp = $this->html;
 273          preg_match('/<meta.*>/', $tmp, $matche);    
 274          $matche[0] = str_replace("/>", ">", $matche[0]);
 275          $matche[0] = str_replace(">", "/>", $matche[0]);
 276          $tmp = preg_replace('/<meta.*>/', $matche[0], $tmp);
 277          $this->html = $tmp;
 278      }
 279  
 280      /**

 281       * parse

 282       * 

 283       * Extract the called selenium fonction from the html suite

 284       */
 285  	function parse() {
 286          $parsedTab = array();
 287          $key1 = 0;
 288      
 289          $contenthtml = new DOMDocument;
 290          @$contenthtml->loadHtml($this->html);
 291          $content = simplexml_import_dom($contenthtml);
 292          foreach ($content->body->table->tbody->tr as $tr){
 293              $key2 = 0;
 294              foreach ($tr->td as $td){
 295                  $parsedTab[$key1][$key2] = $td;
 296                  $key2++;
 297              }
 298              $key1++;
 299          }
 300  
 301          $this->parsed_table = $parsedTab;
 302      }
 303  
 304      /**

 305       * assertFunction

 306       * 

 307       * Integrate selenium fonctions in simpletest

 308       * 

 309       * @param string $function

 310       * @param string $param1

 311       * @param string $param2

 312       * 

 313       */
 314  	function assertFunction($function, $param1, $param2) {
 315          $_verifyMap = array('verify', 'verifyTextPresent', 'verifyTextNotPresent', 'verifyValue');
 316          
 317          $reponse = $this->selenium->__call($function, array($param1, $param2));
 318          
 319          $message = $reponse;
 320          $message .= " using command '".$function ."' with target '".$param1."'";
 321          if (!empty($param2)) {
 322              $message .= " and value '".$param2."'";
 323          }
 324          $message .= " in file '".$this->testFile."'";
 325  
 326          if (!in_array($function, $_verifyMap)) {
 327              $reponse = substr($reponse, 0, 2) == 'OK' ? true : false;
 328          }
 329          
 330          $this->assertTrue($reponse, $message);
 331      }
 332  
 333      /**

 334       * launch

 335       * 

 336       * Launch the html test suite from a PHP variable on the url declared wihle 

 337       * constructing the object. The filename is used to localize the error.

 338       * 

 339       * @param string $testFile

 340       * @param string $filename

 341       * 

 342       */
 343  	function launch($html="") {
 344          $this->html = $html;
 345          $this->tidy();
 346          $this->parse();
 347          
 348          $this->selenium->start();
 349          foreach ($this->parsed_table as $test) {    
 350              if (in_array($test[0], $this->_commandMap)) {
 351                  $this->assertFunction($test[0], $test[1], $test[2]);
 352              } else {        
 353                  $this->selenium->__call($test[0], array($test[1], $test[2]));
 354              }
 355          }
 356          $this->selenium->stop();
 357      }
 358      
 359      /**

 360       * launchPhpFile

 361       * 

 362       * Parse the PHP file then launch the computed test suite

 363       * 

 364       * @param string $file

 365       * 

 366       */
 367      function launchPhpFile($file) {
 368          ob_start();
 369          require($file);
 370          $data = ob_get_contents();
 371          ob_end_clean();
 372          
 373          $this->testFile = $file;
 374          $this->html = $data;
 375          $this->launch($this->html);
 376      }
 377      
 378      /**

 379       * launchFile

 380       * 

 381       * Launch the html test suite file on the url declared wihle constructing the object

 382       * 

 383       * @param string $testFile

 384       * 

 385       */
 386  	function launchFile($testFile) {
 387          $this->testFile = $testFile; 
 388          $this->html = file_get_contents($testFile);
 389          $this->launch($this->html);
 390      }
 391  }
 392  
 393  ?>


Generated: Sat Nov 22 03:48:54 2008 Cross-referenced by PHPXref 0.7