Jak jednoduše zautomatizovat testování webové stránky – Selenium a Webdriver

Po každé větší změně v projektu, případně rovnou při každém releasu je vhodné otestovat základní funkčnost aplikace. End-to-End testování přímo v prohlížeči je jednou z možností a je s tím podle mě sranda.

End-to-end testing is a methodology used to test whether the flow of an application is performing as designed from start to finish.

https://www.techopedia.com/definition/7035/end-to-end-test

Co budeme potřebovat?

Facebook Webdriver si stáhneme přes composer, Selenium a ChromeDriver si stáhneme klasicky a naše složka bude vypadat takto:

Píšeme test

Založíme soubor test.php, ten může vypadat nějak takto:

<?php

use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Chrome\ChromeOptions;
use Facebook\WebDriver\WebDriverDimension;
use Facebook\WebDriver\WebDriverBy;
use Facebook\WebDriver\WebDriverExpectedCondition;

require_once 'vendor/autoload.php';

// config
$host = 'http://localhost:4444/wd/hub';
$options = new ChromeOptions();
$options->setExperimentalOption('prefs', ['download.default_directory' => 'c:/temp']);
$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY, $options);

// create driver and resize window
$driver = RemoteWebDriver::create($host, $capabilities, 5000); 
$driver->manage()->window()->setSize(new WebDriverDimension(1360, 768));

// start testing this URL
$driver->navigate()->to("https://www.skoula.cz/");

// click on some element
$driver->findElement(WebDriverBy::cssSelector('.menu-item-1233 a'))->click();

// check URL if we are there already
$driver->wait(5, 500)->until(
    WebDriverExpectedCondition::urlContains('projekty')
);

// is there some element?
if ($driver->findElements(WebDriverBy::className('entry-title'))) {
    echo "ok";
} else {
    echo "ko";
}

A jak probíhá testování?

  1. Nejprve si spustíme Selenium Server – stačí spustit stažený .jar soubor.
  2. Pak spustíme náš test.php – ať už v prohlížeči nebo přes konzoli.

Jak to vypadá v praxi vidíte na tomto videu. Není zrychlené :)

Celý tento mini projekt si můžete stáhnout zde.

Lepší editace videa – Filmora

Pokud vám ke stříhání videa nestačí aplikace Fotky pro Windows 10, bude asi potřeba zainvestovat. Já vybíral z Filmory a Adobe Premiere Elements a nakonec jsem vybral první jmenovanou (ve verzi 9).

https://filmora.wondershare.com/filmora-2018/images/shared/filmora-9/filmora-9-box.png

Filmora je relativně hezký program, který jednorázově stojí $60 a nebo s ročním předplatným $40. Obsahuje klasicky panel s obsahem, panel videa a časovou osu (až 100 vrstev). Líbí se mi, že se v ní dají dělat pokročilé věci ale stále jednoduše.

Kromě spousty efektů a filtrů, předpřipravené hudby, titulků, rámečků (to se tak nějak očekává) obsahuje i pokročilé funkce, například green screen effect.

Editace videa ve Windows 10

Movie Maker byl zkrátka nepřekonatelný program pro jednoduchou editaci videa. Když jsem hledal jeho nástupce, nejvíc se mi osvědčil OpenShot Video Editor, který má ale typicky hnusné uživatelské rozhraní.

Ve Windows 10 existuje aplikace Fotky, která slouží primárně pro prohlížení obrázků a to i těch uložených na OneDrivu. Trošku nešikovně je do ní zakomponovaný program Editor videa.

Ten je ale skvělý na takovéto rychlé sestříhání videa. Přidáte si titulek, nasázíte tam videa, případně si je trošku nastříháte, vyberete předpřipravenou písničku a je to. Samozřejmě ještě přidáte nějaký ten 3D efekt – explozi, déšť atd včetně možnosti ukotvení na určitý bod obrazovky. Všechno je krásně jednoduché a celý program má hezký moderní vzhled.

Tablet se zobrazenou aplikací Fotografie a editorem videí.

Mrzí mě na něm jediná věc a tou je absence nějaké časové osy pro vkládání hudby. Je to zkrátka daň za jednoduchost.

Videa na svůj YouTube kanál přidávám celkem často a poslední dobou jsou “sestříhaná” právě v tomto programu.

Dva užitečné nástroje pro automatické vylepšení PHP kódu – ECS a Rector

Prvním z nich je Easy Coding Standard. Nainstalujete si ho klasicky přes composer (ať už do vašeho projektu nebo bokem) a jednoduše spustíte v konzoli:

vendor/bin/ecs check src --level clean-code --fix

Příklad výše spustí ECS pro adresář src, pomocí volby –level si určíme, co se má opravovat (je tam přednastavených mnoho configů) a pomocí –fix určíme, že se to má rovnou opravit, ne jen vypsat.

Dalším zajímavým nástrojem je Rector. Prezentuje se jako nástroj pro upgradování, případně pro migraci mezi frameworky ale umí i jiné věci – například odstraňovat “dead code” čili pozůstatky kódu, který se nikdy neprovede. Instalace probíhá opět přes composer a spustit ho můžeme následovně:

vendor/bin/rector process src --level dead-code

Příklad výše spustí Rector nad adresářem src a rovnou ho nechá opravovat kód. Pokud přidáme volbu –dry-run, kód se neopraví, nejprve tedy budete mít možnost vidět výsledky operace.

Pro seznam configů můžete spustit:

vendor/bin/rector levels

Jak jsem si koupil křečka a postavil mu přístřešek včetně elektrifikace

Pořídil jsem si do práce křečka za nekřesťanské peníze v Petshopu. Jmenuje se Pixie IV. a ano, je už čtvrtý džungarák s tímto jménem.. neptejte se jak skončila III.

Pixie IV.

Ale chci ho mít venku! Takže jsem zajistil klec drátky aby se k němu nedostaly nenažrané a zákeřné kuny. Ale co déšť? Postavil jsem mu přístřešek ze starých palet a pokryl stanovou textílií:

Žijeme v moderní době a den nekončí západem slunce. Proto jsem sestrojil solární osvětlení (jedna červená LED). Přes den se baterky nabijí a v noci svítí.

A co je nejlepší? Celou sadu si můžete koupit za hubičku na mém eshopu a postavit si světýlko také!

Read Dead Redemption 2 je pařba

Skvělá hra, jak jinak. Zatím hraju singleplayer, příběhová linka je dost dlouhá a nejsem ani v polovině. Nádherná krajina a strhující příběh, ale i pouhé toulání krajinou (v tom mi to připomíná Kingdom Come).

Co mě trochu mrzí je uživatelské rozhraní – ikonky jsou malinkaté a často nepoznám, co která znamená. Asi bych si měl sednout blíže k televizi.

Mrkněte i na můj YouTube kanál:

Co jsem četl v roce 2018

Bez nějakých zbytečných úvodů, zde je seznam knih, které jsem přečetl v roce 2018, chronologicky:

  1. Online marketing (kolektiv autorů) – velká kravina. Spíš než o nějaké vědomosti jde o medailonky jednotlivých autorů podpořených grafem nebo nějakým obecným tvrzením typu “internet proniká do všech oblastní života”.
  2. Na volné noze (Robert Vlach) – opravdu tlustá kniha. Mohla být klidně třetinová při zachování stejného množství informací. Takto většinou nudila ale i přesto jsem si z ní udělal několik užitečných poznámek. Takže mám takové smíšené pocity.
  3. Na zimu zavřeno (Jørn Lier Horst) – dobrá norská detektivka.
  4. Proč jedničkáři pracují pro trojkaře (Kiyosaki) – reklama na autorovu stolní hru … ale proč ne :)
  5. Jak jsem v 49 utekl hledat svobodu do Sovětského svazu (Josef Bureš) – mladík si idealizoval SSSR a komunismus, tak tam utekl. Zatkli ho, vyhnali na Sibiř, tam si našel ženu a těžko se dostával zpět, skutečný autobiografický příběh. Dokonce mě tak zaujal, že jsem autorovi založil wiki stránku.
  6. Odbarvená **** (Charles Bukowski) – taková zajímavost, dá se přečíst asi za 13 minut :)
  7. Asertivita pro manažery (Lahnerová Dagmar) – občas zajímavý tip na vzorce chování. V podstatě dobrá kniha, i když v neatraktivním obalu.
  8. Pravidla sýrárny (Michael Paterniti) – příběh Američana který jezdil do Španělska psát o jednom speciálním domácím sýru.
  9. Hluboká práce (Cal Newport) – kniha mě dost inspirovala. Zejména v tom, odstranit co nejvíce rušivých vlivů. Má práce programátora by měla být o ponoření se do vývoje a ne o emailování :)
  10. Nástroje titánů (Tim Ferris) – v recenzích často lidé píší, že je kniha zklamala. Mě spíše potěšila, udělal jsem si spoustu poznámek. Byly to takové krátké medailonky o hostech Tima Ferrise v jeho podcastech, ale byly nabité informacemi.
  11. Anarchokapitalismus (Urza) – jsem Urzovým fanouškem a knížka byla čtivá. Jedná se ale o utopii a to utopii na opačném pólu a stejně nerealistickou a nefungující jako je komunismus. Přesto by ale neuškodilo kdyby se politika v Česku občas vydala i jiným směrem než doleva :)
  12. Budujeme stát pro 40 000 000 (J. A. Baťa) – kniha je těžko k dostání, snad jen v PDF. Některé myšlenky jsou překvapivě svobodné, jiné naopak ne. Je to zkrátka z jiné doby.
  13. Na odpis (Dan Lyons) – padesátník jde pracovat do startupu. Na jedné straně ukazuje směšnost starupové kultury, na druhé straně ale ukazuje i svou vlastní směšnost když donekonečna opakuje, že on už něco v životě dokázal a nejraději by pomocí kvót všude dosadil černochy a lesby.
  14. Sapiens (Juval Noach Harari) – paráda, uvedu sem jen několik mindblowing citátů:
    • Podobně jako rovnost, práva a společnosti s ručením omezeným, i svoboda je výmysl představivosti lidí. V přírodě neexistuje nic z výše vyjmenovaného.
    • Vnitřní konzistence je jen známkou nedostatečného přemýšlení, absence konfliktu.
  15. Čtyřhodinový pracovní týden (Tim Ferris) – o tom, že je tato kniha revoluční není pochyb. Uvedu pár svých poznámek:
    • To, že úkol vyžaduje mnoho času neznamená, že je důležitý.
    • Tím, že budeme nějakou nedůležitou věc dělat dobře, se na faktu, že je nedůležitá, nic nezmění.
  16. Bratři Bělští (Peter Duffy) – opět podle skutečných událostí, o tom jak tři bratři zachránili X tisíc Židů na Ukrajině před nacisty.
  17. Atlasova vzpoura (Ayn Rand) – tohle by si povinně měli přečíst všichni levičáci. Zatím jsem přečetl dva ze tří dílů a je to skvělé čtení. Je k pláči když jeden den o něčem čtu v antiutopické knize a druhý den už takové věci slyším ve zprávách.
  18. Podnikání pro bohémy (Tom Hodgkinson) – hipster podnikání, moc mě to nezaujalo.
  19. Ještě jsme ve válce – posraní komunisti a nacisti. Komiksové zpracování skutečných příběhů z období dvou totalit, od různých autorů.
  20. Vzhůru do responzivního webdesignu (Martin Michálek) – dobrá knížka, udělal jsem si spoustu poznámek. Jen bych vytknul nekonzistentnost. Někdy autor uvádí rovnou kód a jindy jen velmi stručné a obecné rady.
  21. Faktomluva (rodina Roslingova) – knížka která mě bohužel (bohudík) nepřekvapila. Již před čtením jsem věděl, že svět je mnohem pozitivnější než je všeobecné mínění. Ale kniha to vše podkládá důkazy.
  22. Jáma a kyvadlo (E. A. Poe) – skvělé, někdy méně skvělé až filozoficky nudné povídky. Ale doporučuji. Většinou je to takové zvláštní vypravování a na konci někdo z ničeho nic umře.
  23. Proč spíme (Matthew Walker) – až moc odborně psaná kniha o spánku. Jaké je nebezpečí jeho nedostatku atd. Těžké čtení ale baví.

Upgrade CodeIgniteru z verze 2 na 3 – na co si dát pozor?

Dokumentace CodeIgniteru celkem detailně popisuje postup upgradu na této stránce. Kromě inkrementálních upgradů je tam delší článek o upgradu verze 2.2.x na 3.0.x. Vypíchnu sem jen několik věcí, se kterými jsem měl konkrétní problémy:

  • Metody třídy Input, Session a Config v případě neodeslání hodnoty/nenalezení nevrací FALSE jako ve verzi 2, ale nově NULL – dává to větší smysl, ale může být problém, pokud porovnáváte typově a v celém projektu se to dost špatně hledá, je to velká změna.
  • Třídy musí začínat velkým písmenem – může být problém, pokud pracujete na Windows. Git totiž rozlišuje velikosti písmen.
  • Sessions už se neukládají do cookies. Můžete si vybrat, jaký session driver použijete. Nejjednodušší je souborový systém a databáze, my z výkonnostních důvodů použili memcached.
  • V databázovém configu se změnilo dost věcí, ale jedna věc je zásadní – musíte vypnout ‘pconnect’ – persistent connection.
  • Z pravidel třídy Form_validation mizí ‘xss_clean’. XSS by se mělo aplikovat na output, takže ho z validace odstranili.
  • Položka ‘base_url’ v configu nemůže být prázdná. Pokud ji nemůžete nastavit v configu, můžete ji změnit i později v kódu.

Jak jsem si vypnul notifikace

Před několika měsíci jsem udělal skvělou věc – vypnul si notifikace pracovního emailu na mobilu + odstranil si ikonku z plochy. Když chci na email, tak se tam dostanu, ale nemusím se stresovat příchozími emaily, prostě je vyřeším až v práci.

Dalším skvělým zlepšovákem je kontrolovat email jen několikrát denně, nenechat jej otevřen. Má to jednu nevýhodu – když řešíte email, který vyžaduje nějakou práci, tak máte tendenci email nechat otevřený a poté vás stresuje ikonka o příchozích emailech, které postupně chodí. V práci používáme BitBucket, pro živnost používám Trello, takže zadání úkolů se snažím řešit tam a email minimalizovat. Dojít, vyřešit inbox a odejít.