Czy strona wciąż dobrze działa?
O automatyzacji kliknięć w przeglądarce
Konrad Karpieszuk
Co możemy zautomatyzować?
Po co automatyzować?
Oszczędność czasu
Jak automatyzować?
Codeception
https://xkcd.com/1205/
Instalacja
composer require "codeception/codeception" --dev
Instalacja
composer require "codeception/codeception" --dev
# wygeneruj katalog tests i plik konfiguracyjny
php vendor/bin/codecept bootstrap
Instalacja
composer require "codeception/codeception" --dev
# wygeneruj katalog tests i plik konfiguracyjny
php vendor/bin/codecept bootstrap
# utworz plik testu
php vendor/bin/codecept generate:cest acceptance \ First
Instalacja
# tests/acceptance.suite.yml
actor: AcceptanceTester
modules:
enabled:
- WebDriver:
url: https://wpzlecenia.pl
browser: 'chrome'
window_size: 1920x1080
port: 9515
- \Helper\Acceptance
step_decorators: ~
extensions:
enabled:
- Codeception\Extension\RunProcess:
0: ./chromedriver --url-base=/wd/hub
sleep: 5
Instalacja
Uruchomienie testu
vendor/bin/codecept run acceptance
use Secrets\Secret;
class NewJobCest
{
public function _before(AcceptanceTester $I)
{
}
// tests
public function visitorCanAddNewJobOffer(AcceptanceTester $I)
{
$I->amOnPage( '/' );
$I->see( 'Zlecenia' );
$I->click( 'a[title="Dodaj zlecenie"]' );
$I->see( 'Wypełnij poniższy formularz' );
$I->fillField( 'input[name="tytulOgloszenia"]', '[cctest] Testowe ogłoszenie' );
$I->fillField( 'textarea[name="opisOgloszenia"]', 'Treść testowego ogłoszenia' );
$I->fillField( 'input[name="daneKontaktoweEmail"]', 'test@example.com' );
$I->checkOption( 'input[name="rodoZgoda"]' );
$I->click( '#wpzlecenia_dodaj_button' );
$I->waitForText( 'OK. Ogłoszenie zostało dodane' );
$I->amOnPage( '/wp-login.php' );
$I->fillField( '#user_login', 'cctest' );
$I->fillField( '#user_pass', (new Secret())->getPass() );
$I->click( '#wp-submit' );
$I->amOnPage( '/wp-admin/edit.php' );
$I->see( '[cctest] Testowe ogłoszenie' );
$I->moveMouseOver( 'a[aria-label="„[cctest] Testowe ogłoszenie” (Edycja)"]' );
$I->click( 'a[aria-label="Przenieś „[cctest] Testowe ogłoszenie” do kosza"]' );
$I->see( 'wpis został przeniesiony do kosza' );
}
}
$I->amOnPage( '/' );
$I->see( 'Zlecenia' );
$I->click( 'a[title="Dodaj zlecenie"]' );
$I->see( 'Wypełnij poniższy formularz' );
$I->fillField( 'input[name="tytulOgloszenia"]', '[cctest] Testowe ogłoszenie' );
$I->fillField( 'textarea[name="opisOgloszenia"]', 'Treść testowego ogłoszenia' );
$I->fillField( 'input[name="daneKontaktoweEmail"]', 'test@example.com' );
$I->checkOption( 'input[name="rodoZgoda"]' );
$I->click( '#wpzlecenia_dodaj_button' );
$I->waitForText( 'OK. Ogłoszenie zostało dodane' );
$I->amOnPage( '/wp-login.php' );
$I->fillField( '#user_login', 'cctest' );
$I->fillField( '#user_pass', (new Secret())->getPass() );
$I->click( '#wp-submit' );
$I->amOnPage( '/wp-login.php' );
$I->fillField( '#user_login', 'cctest' );
$I->fillField( '#user_pass', (new Secret())->getPass() );
$I->click( '#wp-submit' );
// z WPWebDriver zamiast WebDriver
$I->loginAs( 'cctest', (new Secret())->getPass() );
$I->amOnPage( '/wp-admin/edit.php' );
$I->see( '[cctest] Testowe ogłoszenie' );
$I->moveMouseOver( 'a[aria-label="„[cctest] Testowe ogłoszenie” (Edycja)"]' );
$I->click( 'a[aria-label="Przenieś „[cctest] Testowe ogłoszenie” do kosza"]' );
$I->see( 'wpis został przeniesiony do kosza' );