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();
//}
}
?>