setBrowser("firefox"); //$this->setBrowser("chrome"); // On positionne l'URL de base $this->setBrowserUrl("http://localhost/"); } /** * Cette méthode est appelée après le lancement de chaque test * (fonctionnalité). */ protected function tearDown() { // } /** * Cette méthode permet de connecter l'utilisateur à l'application. */ protected function connect($login, $password) { // On ouvre l'url openexemple $this->url($this->url); // On saisit le login dans le champ login $this->byName("login")->value($login); // On saisit le mot de passe dans le champ mot de passe $this->byName("password")->value($password); // On clique sur le bouton de connexion $this->byname("login.action.connect")->click(); } /** * Cette méthode permet de déconnecter l'utilisateur. */ protected function deconnect() { // On clique sur le lien de déconnexion $element = $this->bycssselector("a.actions-logout"); $element->click(); } /** * Cette méthode permet de connecter l'utilisateur à l'application et de * vérifier que la connecion s'est bien déroulée. */ protected function login($login, $password) { // On se connecte $this->connect($login, $password); // Allonge le temps d'attente lors de la recherche d'élément $this->timeouts()->implicitWait(10000); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifynoerrors(); // On vérifie qu'un message nous indique que la session est ouverte $element = $this->bycssselector("div.message span.text"); $this->assertequals("Votre session est maintenant ouverte.", $element->text()); } /** * Cette méthode permet de déconnecter l'utilisateur et de vérifier que la * déconnexion s'est bien déroulée. */ protected function logout() { // On se déconnecte $this->deconnect(); // Réduit le temps d'attente lors de la recherche d'élément $this->timeouts()->implicitWait(240); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifynoerrors(); // On vérifie qu'un message nous indique que la session est terminée $element = $this->bycssselector("div.message span.text"); $this->assertequals("Votre session est maintenant terminée.", $element->text()); // On vérifie que le lien de déconnexion n'est pas présent try { $el = $this->bycssselector("a.actions-logout"); $this->fail("The element shouldn't exist."); } catch (RuntimeException $e) {} //Ferme la fenêtre $this->closeWindow(); } /** * Cette méthode permet de fair un assert sur la NON présence d'un message * indiquant une erreur de base de données ou une notice PHP. * XXX Remplacer les tests par des expressions régulières pour améliorer * les performances et être plus exhaustif */ public function verifynoerrors() { // On récupère le contenu du rendu de la page $source = $this->source(); // On vérifie la présence du message d'erreur de base de données try { $this->assertNotContains("Erreur de base de données. Contactez votre administrateur.", $source); $this->assertNotContains("Erreur de base de donnees. Contactez votre administrateur.", $source); } catch (PHPUnit_Framework_AssertionFailedError $e) { $this->fail("Failed asserting that the source does not contain \"Erreur de base de données\"."); } // On vérifie la présence d'une erreur fatale PHP try { $this->assertNotContains("Fatal error:", $source); } catch (PHPUnit_Framework_AssertionFailedError $e) { $this->fail("Failed asserting that the source does not contain \"PHP Fatal error:\"."); } // On vérifie la présence d'une erreur fatale PHP try { $this->assertNotContains("Fatal error", $source); } catch (PHPUnit_Framework_AssertionFailedError $e) { $this->fail("Failed asserting that the source does not contain \"PHP Fatal error:\"."); } // On vérifie la présence d'une erreur de syntaxe PHP try { $this->assertNotContains("Parse error:", $source); } catch (PHPUnit_Framework_AssertionFailedError $e) { $this->fail("Failed asserting that the source does not contain \"PHP Parse error:\"."); } // On vérifie la présence d'une erreur de syntaxe PHP try { $this->assertNotContains("Parse error", $source); } catch (PHPUnit_Framework_AssertionFailedError $e) { $this->fail("Failed asserting that the source does not contain \"PHP Parse error:\"."); } // On vérifie la présence d'une notice PHP try { $this->assertNotContains("Notice:", $source); } catch (PHPUnit_Framework_AssertionFailedError $e) { $this->fail("Failed asserting that the source does not contain \"PHP Notice:\"."); } // On vérifie la présence d'une notice PHP try { $this->assertNotContains("Notice", $source); } catch (PHPUnit_Framework_AssertionFailedError $e) { $this->fail("Failed asserting that the source does not contain \"PHP Notice:\"."); } } /** * Cette méthode est un test (fonctionnalité) qui permet de tester le * fonctionnement de la classe Base2TestCase */ //public function test_login_logout() { // // On se connecte avec l'utilisateur admin // $this->login("admin", "admin"); // // On se déconnecte // $this->logout(); //} } ?>