Skrypt testowy Node.JS + Selenium - kilka pytań

0

Cześć wszystkim. Jestem zupełnie świeży w tematyce testowania automatycznego (jak dotychczas zajmowałem się testowaniem manualnym), ale postanowiłem, że spróbuję napisać prosty skrypt testujący logowanie do strony WWW przy użyciu Selenium i Node.JS. Jak na razie wyszło mi coś takiego:

var webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until;

var driver = new webdriver.Builder()
.forBrowser('firefox')
.build();

driver.get('https://poczta.o2.pl/');
driver.findElement(By.id('login')).sendKeys('admin');
driver.findElement(By.id('pass')).sendKeys('adminadmin');
driver.findElement(By.id('login-button')).click();
driver.sleep(6000).then(function() {
driver.getTitle().then(function(title) {
if(title === '@o2 Odebrane') {
console.log('Test passed');
} else {
console.log('Test failed');
}
});
});

driver.quit();

Działa, pomijając fakt, że pewnie jest napisane dość koślawo :) Moja pytania brzmią:

  1. W jaki sposób mogę dodać do tego skryptu kolejne akcje do wykonania w ramach testu logowania? Powiedzmy, że chciałbym sprawdzić, czy można się zalogować wpisując poprawny login, niepoprawne hasło, potem w opcji niepoprawny login i hasło, potem bez wpisywania niczego, potem bez klikania w przycisk, tylko po kliknięciu enter itd. Czy takie akcje powinienem dodać w ramach tego samego skryptu testowego czy raczej powinny to być oddzielne skrypty? Jeżeli w ramach jednego, to jak dodać kolejne etapy do zamieszczonego przeze mnie skryptu?

  2. Jak przerobić taki skrypt, aby był zgodny z Page Object Pattern? Czytałem kilka tutoriali na ten temat, ale nadal nie rozumiem, co powinienem właściwie zrobić, więc gdyby ktoś wytłumaczył mi to jak najbardziej łopatologiczny sposób, a zwłaszcza, na przykładzie, to byłbym bardzo wdzięczny :)

  3. Czy moje podejście do pisania testów automatycznych jest w ogóle właściwe? Tak jak wspominałem korzystam z Selenium Stand Alone Server + Node.JS + Selenium Webdriver + Webdriver do Firefox. Skrypty piszę w Notepad++. Gdybym chciał później umieścić taki projekt na GIT, to jak mógłbym to zrobić?

Wiem, że pytania które zadaję będą dla większości z Was łatwizną, ale tak jak napisałem na początku, jestem świeży w temacie, ale rządny wiedzy :)

Z góry dziękuję za każdą podpowiedź i pozdrawiam!

1

Skrypty piszę w Notepad++. Gdybym chciał później umieścić taki projekt na GIT, to jak mógłbym to zrobić?

  1. instalujesz Git: https://git-scm.com/
  2. otwierasz konsolę, wchodzisz do katalogu z projektem, robisz git init a potem dodajesz odpowiednie pliki (doczytasz sobie jak to zrobić) i robisz potem git commit (wystarczy, że się oczytasz z podstawami Gita, czyli oficjalny podręcznik + StackOverflow i jedziesz)
  3. pamiętaj, że Git to nie żaden serwer, ten projekt będzie zapisany u ciebie na dysku, a nie w internecie (chyba, że ci chodzi o hosting repozytoriów Gita, np. Github, Gitlab etc.)
1

Zainwestuj w jakiś test runner i bibliotekię do asercji (lub dwa w jednym), bo robienie testów console.logiem i ręczne asercje to jak wbijanie gwoździa kamieniem, gdy obok leży młotek. Polecam też rzucić okiem na http://webdriver.io/ - dużo to wygodniejsze niż toporne, gołe Selenium.

0
Maciej Cąderek napisał(a):

Zainwestuj w jakiś test runner i bibliotekię do asercji (lub dwa w jednym), bo robienie testów console.logiem i ręczne asercje to jak wbijanie gwoździa kamieniem, gdy obok leży młotek. Polecam też rzucić okiem na http://webdriver.io/ - dużo to wygodniejsze niż toporne, gołe Selenium.
A co byś polecił jako test runner i bibliotekę do asercji? Tak jak pisałem, jestem zielony w temacie :)

Webdriver.io kojarzę i muszę przetestować.

1

A co byś polecił jako test runner i bibliotekę do asercji? Tak jak pisałem, jestem zielony

Webdriver.io w przykładach korzysta z Mocha + Chai, więc w to będzie chyba Ci najłatwiej wejść (nie mówiąc już o tym, że to bardzo dobre narzędzia i najpopularniejszy zestaw do testów w JS).

0
Maciej Cąderek napisał(a):

A co byś polecił jako test runner i bibliotekę do asercji? Tak jak pisałem, jestem zielony

Webdriver.io w przykładach korzysta z Mocha + Chai, więc w to będzie chyba Ci najłatwiej wejść (nie mówiąc już o tym, że to bardzo dobre narzędzia i najpopularniejszy zestaw do testów w JS).

Dzięki za rady :) A byłbyś w stanie coś podpowiedzieć do mojego pytania nr 1 i 2?

0
frankeiro napisał(a):

W jaki sposób mogę dodać do tego skryptu kolejne akcje do wykonania w ramach testu logowania? Powiedzmy, że chciałbym sprawdzić, czy można się zalogować wpisując poprawny login, niepoprawne hasło, potem w opcji niepoprawny login i hasło, potem bez wpisywania niczego, potem bez klikania w przycisk, tylko po kliknięciu enter itd. Czy takie akcje powinienem dodać w ramach tego samego skryptu testowego czy raczej powinny to być oddzielne skrypty? Jeżeli w ramach jednego, to jak dodać kolejne etapy do zamieszczonego przeze mnie skryptu?

Jakie chcesz dodawać kolejne etapy skoro rzeczy, które chcesz sprawdzać są niezależnymi ścieżkami? Owszem, bez problemu może to być jeden plik (nawet jeden describe (mocha), bo testujesz różne przypadki jednej funkcjonalności), ale każda ścieżka to powinien być osobny test (it w mocha). Na początku (ważne!) każdego z tych testów powinien być setup jeśli jest potrzebny (w Twoim przypadku jakieś wylogowanie, może być w beforeEach (mocha)).

Jak przerobić taki skrypt, aby był zgodny z Page Object Pattern? Czytałem kilka tutoriali na ten temat, ale nadal nie rozumiem, co powinienem właściwie zrobić, więc gdyby ktoś wytłumaczył mi to jak najbardziej łopatologiczny sposób, a zwłaszcza, na przykładzie, to byłbym bardzo wdzięczny :)

Co do PageObject - polecam artykuł: https://martinfowler.com/bliki/PageObject.html
Tu masz konkretne przykłady: http://webdriver.io/guide/testrunner/pageobjects.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1