Source for file selenese_tester.php

Documentation is available at selenese_tester.php

  1. <?php
  2. /**
  3.  *    @package    SeleneseTestCase
  4.  *    @subpackage    UnitTester
  5.  *    @version    $Id: selenese_tester.php 1534 2007-06-06 16:58:53Z pp11 $
  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.  * SeleneseTestCase
  16.  * 
  17.  * Integrate selenese html test suite support (can be generated by selenium-IDE)
  18.  * 
  19.  * @category Testing
  20.  * @package selenese_tester
  21.  * @author Guidet Alexandre <alwex@free.fr>
  22.  * 
  23.  * @param simpleSelenium $selenium 
  24.  * @param string $html 
  25.  * @param  string $testFile 
  26.  * @param array $parsed_table 
  27.  * @param string $logMessages 
  28.  * @param array $_commandMap 
  29.  * 
  30.  */
  31. class SeleneseTestCase extends UnitTestCase {
  32.     var $selenium;
  33.     var $html;
  34.     var $testFile;
  35.     var $parsed_table;
  36.     var $logMessages;
  37.     var $_commandMap = array("verify",
  38.                             "verifyErrorOnNext",
  39.                             "verifyNotErrorOnNext",
  40.                             "verifyFailureOnNext",
  41.                             "verifyNotFailureOnNext",
  42.                             "verifySelected",
  43.                             "verifyNotSelected",
  44.                             "verifyAlert",
  45.                             "verifyNotAlert",
  46.                             "verifyAllButtons",
  47.                             "verifyNotAllButtons",
  48.                             "verifyAllFields",
  49.                             "verifyNotAllFields",
  50.                             "verifyAllLinks",
  51.                             "verifyNotAllLinks",
  52.                             "verifyAllWindowIds",
  53.                             "verifyNotAllWindowIds",
  54.                             "verifyAllWindowNames",
  55.                             "verifyNotAllWindowNames",
  56.                             "verifyAllWindowTitles",
  57.                             "verifyNotAllWindowTitles",
  58.                             "verifyAttribute",
  59.                             "verifyNotAttribute",
  60.                             "verifyAttributeFromAllWindows",
  61.                             "verifyNotAttributeFromAllWindows",
  62.                             "verifyBodyText",
  63.                             "verifyNotBodyText",
  64.                             "verifyConfirmation",
  65.                             "verifyNotConfirmation",
  66.                             "verifyCookie",
  67.                             "verifyNotCookie",
  68.                             "verifyCursorPosition",
  69.                             "verifyNotCursorPosition",
  70.                             "verifyElementHeight",
  71.                             "verifyNotElementHeight",
  72.                             "verifyElementIndex",
  73.                             "verifyNotElementIndex",
  74.                             "verifyElementPositionLeft",
  75.                             "verifyNotElementPositionLeft",
  76.                             "verifyElementPositionTop",
  77.                             "verifyNotElementPositionTop",
  78.                             "verifyElementWidth",
  79.                             "verifyNotElementWidth",
  80.                             "verifyEval",
  81.                             "verifyNotEval",
  82.                             "verifyExpression",
  83.                             "verifyNotExpression",
  84.                             "verifyHtmlSource",
  85.                             "verifyNotHtmlSource",
  86.                             "verifyLocation",
  87.                             "verifyNotLocation",
  88.                             "verifyLogMessages",
  89.                             "verifyNotLogMessages",
  90.                             "verifyMouseSpeed",
  91.                             "verifyNotMouseSpeed",
  92.                             "verifyPrompt",
  93.                             "verifyNotPrompt",
  94.                             "verifySelectedId",
  95.                             "verifyNotSelectedId",
  96.                             "verifySelectedIds",
  97.                             "verifyNotSelectedIds",
  98.                             "verifySelectedIndex",
  99.                             "verifyNotSelectedIndex",
  100.                             "verifySelectedIndexes",
  101.                             "verifyNotSelectedIndexes",
  102.                             "verifySelectedLabel",
  103.                             "verifyNotSelectedLabel",
  104.                             "verifySelectedLabels",
  105.                             "verifyNotSelectedLabels",
  106.                             "verifySelectedValue",
  107.                             "verifyNotSelectedValue",
  108.                             "verifySelectedValues",
  109.                             "verifyNotSelectedValues",
  110.                             "verifySelectOptions",
  111.                             "verifyNotSelectOptions",
  112.                             "verifyTable",
  113.                             "verifyNotTable",
  114.                             "verifyText",
  115.                             "verifyNotText",
  116.                             "verifyTitle",
  117.                             "verifyNotTitle",
  118.                             "verifyValue",
  119.                             "verifyNotValue",
  120.                             "verifyWhetherThisFrameMatchFrameExpression",
  121.                             "verifyNotWhetherThisFrameMatchFrameExpression",
  122.                             "verifyWhetherThisWindowMatchWindowExpression",
  123.                             "verifyNotWhetherThisWindowMatchWindowExpression",
  124.                             "verifyAlertPresent",
  125.                             "verifyAlertNotPresent",
  126.                             "verifyChecked",
  127.                             "verifyNotChecked",
  128.                             "verifyConfirmationPresent",
  129.                             "verifyConfirmationNotPresent",
  130.                             "verifyEditable",
  131.                             "verifyNotEditable",
  132.                             "verifyElementPresent",
  133.                             "verifyElementNotPresent",
  134.                             "verifyOrdered",
  135.                             "verifyNotOrdered",
  136.                             "verifyPromptPresent",
  137.                             "verifyPromptNotPresent",
  138.                             "verifySomethingSelected",
  139.                             "verifyNotSomethingSelected",
  140.                             "verifyTextPresent",
  141.                             "verifyTextNotPresent",
  142.                             "verifyVisible",
  143.                             "verifyNotVisible",
  144.                             "assert",
  145.                             "assertErrorOnNext",
  146.                             "assertNotErrorOnNext",
  147.                             "assertFailureOnNext",
  148.                             "assertNotFailureOnNext",
  149.                             "assertSelected",
  150.                             "assertNotSelected",
  151.                             "assertAlert",
  152.                             "assertNotAlert",
  153.                             "assertAllButtons",
  154.                             "assertNotAllButtons",
  155.                             "assertAllFields",
  156.                             "assertNotAllFields",
  157.                             "assertAllLinks",
  158.                             "assertNotAllLinks",
  159.                             "assertAllWindowIds",
  160.                             "assertNotAllWindowIds",
  161.                             "assertAllWindowNames",
  162.                             "assertNotAllWindowNames",
  163.                             "assertAllWindowTitles",
  164.                             "assertNotAllWindowTitles",
  165.                             "assertAttribute",
  166.                             "assertNotAttribute",
  167.                             "assertAttributeFromAllWindows",
  168.                             "assertNotAttributeFromAllWindows",
  169.                             "assertBodyText",
  170.                             "assertNotBodyText",
  171.                             "assertConfirmation",
  172.                             "assertNotConfirmation",
  173.                             "assertCookie",
  174.                             "assertNotCookie",
  175.                             "assertCursorPosition",
  176.                             "assertNotCursorPosition",
  177.                             "assertElementHeight",
  178.                             "assertNotElementHeight",
  179.                             "assertElementIndex",
  180.                             "assertNotElementIndex",
  181.                             "assertElementPositionLeft",
  182.                             "assertNotElementPositionLeft",
  183.                             "assertElementPositionTop",
  184.                             "assertNotElementPositionTop",
  185.                             "assertElementWidth",
  186.                             "assertNotElementWidth",
  187.                             "assertEval",
  188.                             "assertNotEval",
  189.                             "assertExpression",
  190.                             "assertNotExpression",
  191.                             "assertHtmlSource",
  192.                             "assertNotHtmlSource",
  193.                             "assertLocation",
  194.                             "assertNotLocation",
  195.                             "assertLogMessages",
  196.                             "assertNotLogMessages",
  197.                             "assertMouseSpeed",
  198.                             "assertNotMouseSpeed",
  199.                             "assertPrompt",
  200.                             "assertNotPrompt",
  201.                             "assertSelectedId",
  202.                             "assertNotSelectedId",
  203.                             "assertSelectedIds",
  204.                             "assertNotSelectedIds",
  205.                             "assertSelectedIndex",
  206.                             "assertNotSelectedIndex",
  207.                             "assertSelectedIndexes",
  208.                             "assertNotSelectedIndexes",
  209.                             "assertSelectedLabel",
  210.                             "assertNotSelectedLabel",
  211.                             "assertSelectedLabels",
  212.                             "assertNotSelectedLabels",
  213.                             "assertSelectedValue",
  214.                             "assertNotSelectedValue",
  215.                             "assertSelectedValues",
  216.                             "assertNotSelectedValues",
  217.                             "assertSelectOptions",
  218.                             "assertNotSelectOptions",
  219.                             "assertTable",
  220.                             "assertNotTable",
  221.                             "assertText",
  222.                             "assertNotText",
  223.                             "assertTitle",
  224.                             "assertNotTitle",
  225.                             "assertValue",
  226.                             "assertNotValue",
  227.                             "assertWhetherThisFrameMatchFrameExpression",
  228.                             "assertNotWhetherThisFrameMatchFrameExpression",
  229.                             "assertWhetherThisWindowMatchWindowExpression",
  230.                             "assertNotWhetherThisWindowMatchWindowExpression",
  231.                             "assertAlertPresent",
  232.                             "assertAlertNotPresent",
  233.                             "assertChecked",
  234.                             "assertNotChecked",
  235.                             "assertConfirmationPresent",
  236.                             "assertConfirmationNotPresent",
  237.                             "assertEditable",
  238.                             "assertNotEditable",
  239.                             "assertElementPresent",
  240.                             "assertElementNotPresent",
  241.                             "assertOrdered",
  242.                             "assertNotOrdered",
  243.                             "assertPromptPresent",
  244.                             "assertPromptNotPresent",
  245.                             "assertSomethingSelected",
  246.                             "assertNotSomethingSelected",
  247.                             "assertTextPresent",
  248.                             "assertTextNotPresent",
  249.                             "assertVisible",
  250.                             "assertNotVisible");
  251.     
  252.     /**
  253.      * constructor
  254.      * 
  255.      * Construct the object with the specified browser and url
  256.      * 
  257.      * @param string $browser 
  258.      * @param string $url 
  259.      */
  260.     function __construct($browser$url{
  261.         $this->selenium = new SimpleSeleniumRemoteControl($browser$url);
  262.         $this->parsed_table = array();
  263.     }
  264.     
  265.     /**
  266.      * tidy
  267.      * 
  268.      * Reformat the selenium-IDE html test suites
  269.      */
  270.     function tidy({
  271.         $tmp $this->html;
  272.         preg_match('/<meta.*>/'$tmp$matche);    
  273.         $matche[0str_replace("/>"">"$matche[0]);
  274.         $matche[0str_replace(">""/>"$matche[0]);
  275.         $tmp preg_replace('/<meta.*>/'$matche[0]$tmp);
  276.         $this->html = $tmp;
  277.     }
  278.  
  279.     /**
  280.      * parse
  281.      * 
  282.      * Extract the called selenium fonction from the html suite
  283.      */
  284.     function parse({
  285.         $parsedTab array();
  286.         $key1 0;
  287.     
  288.         $contenthtml new DOMDocument;
  289.         @$contenthtml->loadHtml($this->html);
  290.         $content simplexml_import_dom($contenthtml);
  291.         foreach ($content->body->table->tbody->tr as $tr){
  292.             $key2 0;
  293.             foreach ($tr->td as $td){
  294.                 $parsedTab[$key1][$key2$td;
  295.                 $key2++;
  296.             }
  297.             $key1++;
  298.         }
  299.  
  300.         $this->parsed_table = $parsedTab;
  301.     }
  302.  
  303.     /**
  304.      * assertFunction
  305.      * 
  306.      * Integrate selenium fonctions in simpletest
  307.      * 
  308.      * @param string $function 
  309.      * @param string $param1 
  310.      * @param string $param2 
  311.      * 
  312.      */
  313.     function assertFunction($function$param1$param2{
  314.         $_verifyMap array('verify''verifyTextPresent''verifyTextNotPresent''verifyValue');
  315.         
  316.         $reponse $this->selenium->__call($functionarray($param1$param2));
  317.         
  318.         $message $reponse;
  319.         $message .= " using command '".$function ."' with target '".$param1."'";
  320.         if (!empty($param2)) {
  321.             $message .= " and value '".$param2."'";
  322.         }
  323.         $message .= " in file '".$this->testFile."'";
  324.  
  325.         if (!in_array($function$_verifyMap)) {
  326.             $reponse substr($reponse02== 'OK' true false;
  327.         }
  328.         
  329.         $this->assertTrue($reponse$message);
  330.     }
  331.  
  332.     /**
  333.      * launch
  334.      * 
  335.      * Launch the html test suite from a PHP variable on the url declared wihle
  336.      * constructing the object. The filename is used to localize the error.
  337.      * 
  338.      * @param string $testFile 
  339.      * @param string $filename 
  340.      * 
  341.      */
  342.     function launch($html=""{
  343.         $this->html = $html;
  344.         $this->tidy();
  345.         $this->parse();
  346.         
  347.         $this->selenium->start();
  348.         foreach ($this->parsed_table as $test{    
  349.             if (in_array($test[0]$this->_commandMap)) {
  350.                 $this->assertFunction($test[0]$test[1]$test[2]);
  351.             else {        
  352.                 $this->selenium->__call($test[0]array($test[1]$test[2]));
  353.             }
  354.         }
  355.         $this->selenium->stop();
  356.     }
  357.     
  358.     /**
  359.      * launchPhpFile
  360.      * 
  361.      * Parse the PHP file then launch the computed test suite
  362.      * 
  363.      * @param string $file 
  364.      * 
  365.      */
  366.     function launchPhpFile($file{
  367.         ob_start();
  368.         require($file);
  369.         $data ob_get_contents();
  370.         ob_end_clean();
  371.         
  372.         $this->testFile = $file;
  373.         $this->html = $data;
  374.         $this->launch($this->html);
  375.     }
  376.     
  377.     /**
  378.      * launchFile
  379.      * 
  380.      * Launch the html test suite file on the url declared wihle constructing the object
  381.      * 
  382.      * @param string $testFile 
  383.      * 
  384.      */
  385.     function launchFile($testFile{
  386.         $this->testFile = $testFile
  387.         $this->html = file_get_contents($testFile);
  388.         $this->launch($this->html);
  389.     }
  390. }
  391.  
  392. ?>

Documentation generated on Sun, 04 May 2008 09:22:05 -0500 by phpDocumentor 1.3.0