1. Go to this page and download the library: Download sam152/mink-page-objects library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
sam152 / mink-page-objects example snippets
/**
* The login page object.
*/
class LoginPage extends MinkPageObjects\PageObjectBase {
/**
* {@inheritdoc}
*/
public function getUrl() {
return '/user/login';
}
/**
* {@inheritdoc}
*/
protected function getElements() {
return [
'messages' => '.messages',
];
}
/**
* {@inheritdoc}
*/
protected function getNamedFieldElements() {
return [
'name' => 'edit-name',
'password' => 'edit-password',
'submit' => 'edit-submit',
];
}
/**
* Login as a given user.
*
* @param string $username
* The username.
* @param string $password
* The password.
*/
public function loginAs($username, $password) {
$this->find('@name')->setValue($username);
$this->find('@password')->setValue($password);
$this->find('@submit')->click();
return $this;
}
/**
* Assert the user was logged in successfully.
*/
public function assertLoginSuccess() {
$this->elementContains('@messages', 'You were logged in successfully.');
return $this;
}
/**
* Assert the user was logged in successfully.
*/
public function assertLoginFail() {
$this->elementContains('@messages', 'You failed to login.');
return $this;
}
}
/**
* The login page test case.
*/
class LoginPageTest extends PHPUnit\Framework\TestCase {
/**
* Test the login page.
*/
public function testLoginPage() {
$login = new LoginPage($this->session, $this->assert);
$login->visit()
->loginAs('test-user', 'test-password')
->assertLoginSuccess();
}
}
/**
* The article list page object.
*/
class ArticleListPage extends MinkPageObjects\PageObjectBase {
/**
* {@inheritdoc}
*/
public function getUrl() {
return '/articles';
}
/**
* {@inheritdoc}
*/
protected function getElements() {
return [
'articles' => '.articles article',
'first-article-link' => '.articles article:first-child h2 a',
];
}
/**
* Login as a given user.
*
* @param string $username
* The username.
* @param string $password
* The password.
*/
public function visitFirstArticle() {
$this->find('@first-article-link')->click();
return new ArticlePage($this->getSession(), $this->assertSession());
}
public function assertArticleCount($total) {
$this->elementsCount('@articles', $total);
return $this;
}
}