tgt#14 - @before – nie będę automatyzować @after – no dobra, to nie jest takie złe -...
Post on 22-Jan-2018
145 Views
Preview:
TRANSCRIPT
Before ndash Nie będe automatyzować
After ndash No dobra to nie jest takie złe
Sierpień 2016
Dlaczego nie chciałem parać sie automatami
- za trudne
- automatyzacja nie zawsze opłacalna
- za duza przepaść pomiędzy testami manualnymi a
automatycznymi
import orgopenqaseleniumWebDriverimport orgopenqaseleniumremoteDesiredCapabilitiesimport orgopenqaseleniumremoteRemoteWebDriver
import javanetURL
public class SampleSauceTest
public static final String USERNAME = YOUR_USERNAMEpublic static final String ACCESS_KEY = YOUR_ACCESS_KEYpublic static final String URL = https + USERNAME + + ACCESS_KEY + ondemandsaucelabscom443wdhub
public static void main(String[] args) throws Exception
DesiredCapabilities caps = DesiredCapabilitieschrome()capssetCapability(platform Windows XP)capssetCapability(version 430)
WebDriver driver = new RemoteWebDriver(new URL(URL) caps)
Goes to Sauce Labs guinea-pig page and prints title
driverget(httpssaucelabscomtestguinea-pig)Systemoutprintln(title of page is + drivergetTitle())
driverquit()
Poziom abstracji testoacutew dla laika
Test Steps1 Navigate to gmailcom2 In the rsquoemailrsquo field enter the email of the registered user3 Click the lsquoNextrsquo button4 Enter the password of the registered user5 Click lsquoSign Inrsquo
Expected Result A page displaying the gmail userrsquos inbox should load showing any new message at the top of the page
Testy manualne są prostsze
Ale czy aby na pewno
Proof of Concept Znaleźć i zaimplementować najlepszy wg mnie BDD Test Framework
BDD ndash It is all about Behaviour
A może by jednak sproacutebować
Given Portal Sign In page is open in browser
When User enters correct credentials
And User clicks Sign In button
Then User should be logged into the platform
A gdyby test automatyczny wyglądał podobnie jak manualny
Narzędzie do wykonywania automatycznych testoacutew funkcjonalnychCucumber bdquorozumierdquo testy pisane w języku Gherkin
Feature ndash opis funkcjonalnościScenario ndash jakie kroki trzeba wykonać żeby sprawdzić daną
funkcjonalnośćGiven ndash założenia początkoweAnd ndash dodatkowy warunekWhen ndash warunekThen ndash wynik ( expected result )
Cucumber jako jedno z rozwiązań
3 poziomy testu
Feature Step Definition Page Object
Największa zaleta dla mnie
Scenario Outline Unsuccessful login with wrong credentials
Given Portal Sign In page is open in browser
When User enters login ltusergt
And User enters password ltpasswordgt
And User tries to Sign In
Then User should be informed that credentials are wrong
Examples Using different combination of correct and wrong credentials
|user|password|
|nowyuser100|111|
|222|hasloNOWEGOusera123|
|hasloNOWEGOusera123|nowyuser100|
|standard_user1|hasloNOWEGOusera123|
|nowyuser100|Password1|
Background
Given Portal login page is open in browser
When user opens sign-up page
Then Sign-up page is opened
Scenario Outline i Backgrounds
Trochę pouczyć się trzeba
ALE 1 Taka struktura testoacutew pozwala łatwiej bdquoogarnąćrdquo testy automatyczne
2 Taka struktura pozwala wykorzystywać te same stepy jako keywordy do kolejnych testoacutew
3 To po prostu jest bardziej zrozumiałe (przynajmniej dla mnie )
I to jest takie proste
Znalazłem juz narzędzie do testowania ktoacutere jest zrozumiałe
Ale
Konfiguracja jest kłopotliwaInstalacja upierdliwaRaporty brzydkie
Wracając do POC-a
Serenity BDD - witamy w świecie prostej konfiguracji i ładnych raportoacutew
No to szukamy dalej
Bo to tak naprawdę Cucumber obudowany w narzędzie pozwalające na proste zarządzanie raportami
Dlaczego Serenity
Instalujemy mvn-a
Tworzymy projekt bazowy na podstawie archetypu
mvn archetypegenerate -Dfilter=serenity
Instalacja
Instalujemy jakieś IDE np Intelij IDEA i zaczynamy zabawę
Instalacja
serenityproperties
Define the default driver
webdriverdriver=phantomjs
Appears at the top of the reports
serenityprojectname = Demo Project using Serenity and Cucumber
serenityrequirementtypes = epicability
serenitytakescreenshots = AFTER_EACH_STEP
serenityrequirementsdir = srctestresourcesfeature
serenitytestroot=features
webdriverchromedriver=srctestresourceswebdriverchromedriverexe
webdriveriedriver=srctestresourceswebdriverIEDriverServerexe
firefoxpreferences=appupdateauto=falsebrowsershellcheckDefaultBrowser=falseappupdateenabled=falseappupdatesilent=false
Odpalanie testow na jednej przegladarce
serenityuseuniquebrowser = false
TimeOut - defaultowo 5s
webdriverwaitfortimeout = 10000
Customise browser size
serenitybrowserheight = 1200
serenitybrowserwidth = 1200
logging level
serenitylogging=VERBOSE
showrelatedtags=true
Zalety
Zarządzanie screenshotami ndash jedno ustawienie i gotowe
serenitytakescreenshots
FOR_EACH_ACTION
BEFORE_AND_AFTER_EACH_STEP
AFTER_EACH_STEP
FOR_FAILURES
DISABLED
Jesli nie chcemy na screenshotach pokazywac żadnych bdquosensitive informationrdquo używamy czegos takiego
BlurScreenshots(HEAVY)
Jeśli zależy nam na czasie to radze używać FOR_FAILURES
Zalety
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Sierpień 2016
Dlaczego nie chciałem parać sie automatami
- za trudne
- automatyzacja nie zawsze opłacalna
- za duza przepaść pomiędzy testami manualnymi a
automatycznymi
import orgopenqaseleniumWebDriverimport orgopenqaseleniumremoteDesiredCapabilitiesimport orgopenqaseleniumremoteRemoteWebDriver
import javanetURL
public class SampleSauceTest
public static final String USERNAME = YOUR_USERNAMEpublic static final String ACCESS_KEY = YOUR_ACCESS_KEYpublic static final String URL = https + USERNAME + + ACCESS_KEY + ondemandsaucelabscom443wdhub
public static void main(String[] args) throws Exception
DesiredCapabilities caps = DesiredCapabilitieschrome()capssetCapability(platform Windows XP)capssetCapability(version 430)
WebDriver driver = new RemoteWebDriver(new URL(URL) caps)
Goes to Sauce Labs guinea-pig page and prints title
driverget(httpssaucelabscomtestguinea-pig)Systemoutprintln(title of page is + drivergetTitle())
driverquit()
Poziom abstracji testoacutew dla laika
Test Steps1 Navigate to gmailcom2 In the rsquoemailrsquo field enter the email of the registered user3 Click the lsquoNextrsquo button4 Enter the password of the registered user5 Click lsquoSign Inrsquo
Expected Result A page displaying the gmail userrsquos inbox should load showing any new message at the top of the page
Testy manualne są prostsze
Ale czy aby na pewno
Proof of Concept Znaleźć i zaimplementować najlepszy wg mnie BDD Test Framework
BDD ndash It is all about Behaviour
A może by jednak sproacutebować
Given Portal Sign In page is open in browser
When User enters correct credentials
And User clicks Sign In button
Then User should be logged into the platform
A gdyby test automatyczny wyglądał podobnie jak manualny
Narzędzie do wykonywania automatycznych testoacutew funkcjonalnychCucumber bdquorozumierdquo testy pisane w języku Gherkin
Feature ndash opis funkcjonalnościScenario ndash jakie kroki trzeba wykonać żeby sprawdzić daną
funkcjonalnośćGiven ndash założenia początkoweAnd ndash dodatkowy warunekWhen ndash warunekThen ndash wynik ( expected result )
Cucumber jako jedno z rozwiązań
3 poziomy testu
Feature Step Definition Page Object
Największa zaleta dla mnie
Scenario Outline Unsuccessful login with wrong credentials
Given Portal Sign In page is open in browser
When User enters login ltusergt
And User enters password ltpasswordgt
And User tries to Sign In
Then User should be informed that credentials are wrong
Examples Using different combination of correct and wrong credentials
|user|password|
|nowyuser100|111|
|222|hasloNOWEGOusera123|
|hasloNOWEGOusera123|nowyuser100|
|standard_user1|hasloNOWEGOusera123|
|nowyuser100|Password1|
Background
Given Portal login page is open in browser
When user opens sign-up page
Then Sign-up page is opened
Scenario Outline i Backgrounds
Trochę pouczyć się trzeba
ALE 1 Taka struktura testoacutew pozwala łatwiej bdquoogarnąćrdquo testy automatyczne
2 Taka struktura pozwala wykorzystywać te same stepy jako keywordy do kolejnych testoacutew
3 To po prostu jest bardziej zrozumiałe (przynajmniej dla mnie )
I to jest takie proste
Znalazłem juz narzędzie do testowania ktoacutere jest zrozumiałe
Ale
Konfiguracja jest kłopotliwaInstalacja upierdliwaRaporty brzydkie
Wracając do POC-a
Serenity BDD - witamy w świecie prostej konfiguracji i ładnych raportoacutew
No to szukamy dalej
Bo to tak naprawdę Cucumber obudowany w narzędzie pozwalające na proste zarządzanie raportami
Dlaczego Serenity
Instalujemy mvn-a
Tworzymy projekt bazowy na podstawie archetypu
mvn archetypegenerate -Dfilter=serenity
Instalacja
Instalujemy jakieś IDE np Intelij IDEA i zaczynamy zabawę
Instalacja
serenityproperties
Define the default driver
webdriverdriver=phantomjs
Appears at the top of the reports
serenityprojectname = Demo Project using Serenity and Cucumber
serenityrequirementtypes = epicability
serenitytakescreenshots = AFTER_EACH_STEP
serenityrequirementsdir = srctestresourcesfeature
serenitytestroot=features
webdriverchromedriver=srctestresourceswebdriverchromedriverexe
webdriveriedriver=srctestresourceswebdriverIEDriverServerexe
firefoxpreferences=appupdateauto=falsebrowsershellcheckDefaultBrowser=falseappupdateenabled=falseappupdatesilent=false
Odpalanie testow na jednej przegladarce
serenityuseuniquebrowser = false
TimeOut - defaultowo 5s
webdriverwaitfortimeout = 10000
Customise browser size
serenitybrowserheight = 1200
serenitybrowserwidth = 1200
logging level
serenitylogging=VERBOSE
showrelatedtags=true
Zalety
Zarządzanie screenshotami ndash jedno ustawienie i gotowe
serenitytakescreenshots
FOR_EACH_ACTION
BEFORE_AND_AFTER_EACH_STEP
AFTER_EACH_STEP
FOR_FAILURES
DISABLED
Jesli nie chcemy na screenshotach pokazywac żadnych bdquosensitive informationrdquo używamy czegos takiego
BlurScreenshots(HEAVY)
Jeśli zależy nam na czasie to radze używać FOR_FAILURES
Zalety
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Dlaczego nie chciałem parać sie automatami
- za trudne
- automatyzacja nie zawsze opłacalna
- za duza przepaść pomiędzy testami manualnymi a
automatycznymi
import orgopenqaseleniumWebDriverimport orgopenqaseleniumremoteDesiredCapabilitiesimport orgopenqaseleniumremoteRemoteWebDriver
import javanetURL
public class SampleSauceTest
public static final String USERNAME = YOUR_USERNAMEpublic static final String ACCESS_KEY = YOUR_ACCESS_KEYpublic static final String URL = https + USERNAME + + ACCESS_KEY + ondemandsaucelabscom443wdhub
public static void main(String[] args) throws Exception
DesiredCapabilities caps = DesiredCapabilitieschrome()capssetCapability(platform Windows XP)capssetCapability(version 430)
WebDriver driver = new RemoteWebDriver(new URL(URL) caps)
Goes to Sauce Labs guinea-pig page and prints title
driverget(httpssaucelabscomtestguinea-pig)Systemoutprintln(title of page is + drivergetTitle())
driverquit()
Poziom abstracji testoacutew dla laika
Test Steps1 Navigate to gmailcom2 In the rsquoemailrsquo field enter the email of the registered user3 Click the lsquoNextrsquo button4 Enter the password of the registered user5 Click lsquoSign Inrsquo
Expected Result A page displaying the gmail userrsquos inbox should load showing any new message at the top of the page
Testy manualne są prostsze
Ale czy aby na pewno
Proof of Concept Znaleźć i zaimplementować najlepszy wg mnie BDD Test Framework
BDD ndash It is all about Behaviour
A może by jednak sproacutebować
Given Portal Sign In page is open in browser
When User enters correct credentials
And User clicks Sign In button
Then User should be logged into the platform
A gdyby test automatyczny wyglądał podobnie jak manualny
Narzędzie do wykonywania automatycznych testoacutew funkcjonalnychCucumber bdquorozumierdquo testy pisane w języku Gherkin
Feature ndash opis funkcjonalnościScenario ndash jakie kroki trzeba wykonać żeby sprawdzić daną
funkcjonalnośćGiven ndash założenia początkoweAnd ndash dodatkowy warunekWhen ndash warunekThen ndash wynik ( expected result )
Cucumber jako jedno z rozwiązań
3 poziomy testu
Feature Step Definition Page Object
Największa zaleta dla mnie
Scenario Outline Unsuccessful login with wrong credentials
Given Portal Sign In page is open in browser
When User enters login ltusergt
And User enters password ltpasswordgt
And User tries to Sign In
Then User should be informed that credentials are wrong
Examples Using different combination of correct and wrong credentials
|user|password|
|nowyuser100|111|
|222|hasloNOWEGOusera123|
|hasloNOWEGOusera123|nowyuser100|
|standard_user1|hasloNOWEGOusera123|
|nowyuser100|Password1|
Background
Given Portal login page is open in browser
When user opens sign-up page
Then Sign-up page is opened
Scenario Outline i Backgrounds
Trochę pouczyć się trzeba
ALE 1 Taka struktura testoacutew pozwala łatwiej bdquoogarnąćrdquo testy automatyczne
2 Taka struktura pozwala wykorzystywać te same stepy jako keywordy do kolejnych testoacutew
3 To po prostu jest bardziej zrozumiałe (przynajmniej dla mnie )
I to jest takie proste
Znalazłem juz narzędzie do testowania ktoacutere jest zrozumiałe
Ale
Konfiguracja jest kłopotliwaInstalacja upierdliwaRaporty brzydkie
Wracając do POC-a
Serenity BDD - witamy w świecie prostej konfiguracji i ładnych raportoacutew
No to szukamy dalej
Bo to tak naprawdę Cucumber obudowany w narzędzie pozwalające na proste zarządzanie raportami
Dlaczego Serenity
Instalujemy mvn-a
Tworzymy projekt bazowy na podstawie archetypu
mvn archetypegenerate -Dfilter=serenity
Instalacja
Instalujemy jakieś IDE np Intelij IDEA i zaczynamy zabawę
Instalacja
serenityproperties
Define the default driver
webdriverdriver=phantomjs
Appears at the top of the reports
serenityprojectname = Demo Project using Serenity and Cucumber
serenityrequirementtypes = epicability
serenitytakescreenshots = AFTER_EACH_STEP
serenityrequirementsdir = srctestresourcesfeature
serenitytestroot=features
webdriverchromedriver=srctestresourceswebdriverchromedriverexe
webdriveriedriver=srctestresourceswebdriverIEDriverServerexe
firefoxpreferences=appupdateauto=falsebrowsershellcheckDefaultBrowser=falseappupdateenabled=falseappupdatesilent=false
Odpalanie testow na jednej przegladarce
serenityuseuniquebrowser = false
TimeOut - defaultowo 5s
webdriverwaitfortimeout = 10000
Customise browser size
serenitybrowserheight = 1200
serenitybrowserwidth = 1200
logging level
serenitylogging=VERBOSE
showrelatedtags=true
Zalety
Zarządzanie screenshotami ndash jedno ustawienie i gotowe
serenitytakescreenshots
FOR_EACH_ACTION
BEFORE_AND_AFTER_EACH_STEP
AFTER_EACH_STEP
FOR_FAILURES
DISABLED
Jesli nie chcemy na screenshotach pokazywac żadnych bdquosensitive informationrdquo używamy czegos takiego
BlurScreenshots(HEAVY)
Jeśli zależy nam na czasie to radze używać FOR_FAILURES
Zalety
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
import orgopenqaseleniumWebDriverimport orgopenqaseleniumremoteDesiredCapabilitiesimport orgopenqaseleniumremoteRemoteWebDriver
import javanetURL
public class SampleSauceTest
public static final String USERNAME = YOUR_USERNAMEpublic static final String ACCESS_KEY = YOUR_ACCESS_KEYpublic static final String URL = https + USERNAME + + ACCESS_KEY + ondemandsaucelabscom443wdhub
public static void main(String[] args) throws Exception
DesiredCapabilities caps = DesiredCapabilitieschrome()capssetCapability(platform Windows XP)capssetCapability(version 430)
WebDriver driver = new RemoteWebDriver(new URL(URL) caps)
Goes to Sauce Labs guinea-pig page and prints title
driverget(httpssaucelabscomtestguinea-pig)Systemoutprintln(title of page is + drivergetTitle())
driverquit()
Poziom abstracji testoacutew dla laika
Test Steps1 Navigate to gmailcom2 In the rsquoemailrsquo field enter the email of the registered user3 Click the lsquoNextrsquo button4 Enter the password of the registered user5 Click lsquoSign Inrsquo
Expected Result A page displaying the gmail userrsquos inbox should load showing any new message at the top of the page
Testy manualne są prostsze
Ale czy aby na pewno
Proof of Concept Znaleźć i zaimplementować najlepszy wg mnie BDD Test Framework
BDD ndash It is all about Behaviour
A może by jednak sproacutebować
Given Portal Sign In page is open in browser
When User enters correct credentials
And User clicks Sign In button
Then User should be logged into the platform
A gdyby test automatyczny wyglądał podobnie jak manualny
Narzędzie do wykonywania automatycznych testoacutew funkcjonalnychCucumber bdquorozumierdquo testy pisane w języku Gherkin
Feature ndash opis funkcjonalnościScenario ndash jakie kroki trzeba wykonać żeby sprawdzić daną
funkcjonalnośćGiven ndash założenia początkoweAnd ndash dodatkowy warunekWhen ndash warunekThen ndash wynik ( expected result )
Cucumber jako jedno z rozwiązań
3 poziomy testu
Feature Step Definition Page Object
Największa zaleta dla mnie
Scenario Outline Unsuccessful login with wrong credentials
Given Portal Sign In page is open in browser
When User enters login ltusergt
And User enters password ltpasswordgt
And User tries to Sign In
Then User should be informed that credentials are wrong
Examples Using different combination of correct and wrong credentials
|user|password|
|nowyuser100|111|
|222|hasloNOWEGOusera123|
|hasloNOWEGOusera123|nowyuser100|
|standard_user1|hasloNOWEGOusera123|
|nowyuser100|Password1|
Background
Given Portal login page is open in browser
When user opens sign-up page
Then Sign-up page is opened
Scenario Outline i Backgrounds
Trochę pouczyć się trzeba
ALE 1 Taka struktura testoacutew pozwala łatwiej bdquoogarnąćrdquo testy automatyczne
2 Taka struktura pozwala wykorzystywać te same stepy jako keywordy do kolejnych testoacutew
3 To po prostu jest bardziej zrozumiałe (przynajmniej dla mnie )
I to jest takie proste
Znalazłem juz narzędzie do testowania ktoacutere jest zrozumiałe
Ale
Konfiguracja jest kłopotliwaInstalacja upierdliwaRaporty brzydkie
Wracając do POC-a
Serenity BDD - witamy w świecie prostej konfiguracji i ładnych raportoacutew
No to szukamy dalej
Bo to tak naprawdę Cucumber obudowany w narzędzie pozwalające na proste zarządzanie raportami
Dlaczego Serenity
Instalujemy mvn-a
Tworzymy projekt bazowy na podstawie archetypu
mvn archetypegenerate -Dfilter=serenity
Instalacja
Instalujemy jakieś IDE np Intelij IDEA i zaczynamy zabawę
Instalacja
serenityproperties
Define the default driver
webdriverdriver=phantomjs
Appears at the top of the reports
serenityprojectname = Demo Project using Serenity and Cucumber
serenityrequirementtypes = epicability
serenitytakescreenshots = AFTER_EACH_STEP
serenityrequirementsdir = srctestresourcesfeature
serenitytestroot=features
webdriverchromedriver=srctestresourceswebdriverchromedriverexe
webdriveriedriver=srctestresourceswebdriverIEDriverServerexe
firefoxpreferences=appupdateauto=falsebrowsershellcheckDefaultBrowser=falseappupdateenabled=falseappupdatesilent=false
Odpalanie testow na jednej przegladarce
serenityuseuniquebrowser = false
TimeOut - defaultowo 5s
webdriverwaitfortimeout = 10000
Customise browser size
serenitybrowserheight = 1200
serenitybrowserwidth = 1200
logging level
serenitylogging=VERBOSE
showrelatedtags=true
Zalety
Zarządzanie screenshotami ndash jedno ustawienie i gotowe
serenitytakescreenshots
FOR_EACH_ACTION
BEFORE_AND_AFTER_EACH_STEP
AFTER_EACH_STEP
FOR_FAILURES
DISABLED
Jesli nie chcemy na screenshotach pokazywac żadnych bdquosensitive informationrdquo używamy czegos takiego
BlurScreenshots(HEAVY)
Jeśli zależy nam na czasie to radze używać FOR_FAILURES
Zalety
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Test Steps1 Navigate to gmailcom2 In the rsquoemailrsquo field enter the email of the registered user3 Click the lsquoNextrsquo button4 Enter the password of the registered user5 Click lsquoSign Inrsquo
Expected Result A page displaying the gmail userrsquos inbox should load showing any new message at the top of the page
Testy manualne są prostsze
Ale czy aby na pewno
Proof of Concept Znaleźć i zaimplementować najlepszy wg mnie BDD Test Framework
BDD ndash It is all about Behaviour
A może by jednak sproacutebować
Given Portal Sign In page is open in browser
When User enters correct credentials
And User clicks Sign In button
Then User should be logged into the platform
A gdyby test automatyczny wyglądał podobnie jak manualny
Narzędzie do wykonywania automatycznych testoacutew funkcjonalnychCucumber bdquorozumierdquo testy pisane w języku Gherkin
Feature ndash opis funkcjonalnościScenario ndash jakie kroki trzeba wykonać żeby sprawdzić daną
funkcjonalnośćGiven ndash założenia początkoweAnd ndash dodatkowy warunekWhen ndash warunekThen ndash wynik ( expected result )
Cucumber jako jedno z rozwiązań
3 poziomy testu
Feature Step Definition Page Object
Największa zaleta dla mnie
Scenario Outline Unsuccessful login with wrong credentials
Given Portal Sign In page is open in browser
When User enters login ltusergt
And User enters password ltpasswordgt
And User tries to Sign In
Then User should be informed that credentials are wrong
Examples Using different combination of correct and wrong credentials
|user|password|
|nowyuser100|111|
|222|hasloNOWEGOusera123|
|hasloNOWEGOusera123|nowyuser100|
|standard_user1|hasloNOWEGOusera123|
|nowyuser100|Password1|
Background
Given Portal login page is open in browser
When user opens sign-up page
Then Sign-up page is opened
Scenario Outline i Backgrounds
Trochę pouczyć się trzeba
ALE 1 Taka struktura testoacutew pozwala łatwiej bdquoogarnąćrdquo testy automatyczne
2 Taka struktura pozwala wykorzystywać te same stepy jako keywordy do kolejnych testoacutew
3 To po prostu jest bardziej zrozumiałe (przynajmniej dla mnie )
I to jest takie proste
Znalazłem juz narzędzie do testowania ktoacutere jest zrozumiałe
Ale
Konfiguracja jest kłopotliwaInstalacja upierdliwaRaporty brzydkie
Wracając do POC-a
Serenity BDD - witamy w świecie prostej konfiguracji i ładnych raportoacutew
No to szukamy dalej
Bo to tak naprawdę Cucumber obudowany w narzędzie pozwalające na proste zarządzanie raportami
Dlaczego Serenity
Instalujemy mvn-a
Tworzymy projekt bazowy na podstawie archetypu
mvn archetypegenerate -Dfilter=serenity
Instalacja
Instalujemy jakieś IDE np Intelij IDEA i zaczynamy zabawę
Instalacja
serenityproperties
Define the default driver
webdriverdriver=phantomjs
Appears at the top of the reports
serenityprojectname = Demo Project using Serenity and Cucumber
serenityrequirementtypes = epicability
serenitytakescreenshots = AFTER_EACH_STEP
serenityrequirementsdir = srctestresourcesfeature
serenitytestroot=features
webdriverchromedriver=srctestresourceswebdriverchromedriverexe
webdriveriedriver=srctestresourceswebdriverIEDriverServerexe
firefoxpreferences=appupdateauto=falsebrowsershellcheckDefaultBrowser=falseappupdateenabled=falseappupdatesilent=false
Odpalanie testow na jednej przegladarce
serenityuseuniquebrowser = false
TimeOut - defaultowo 5s
webdriverwaitfortimeout = 10000
Customise browser size
serenitybrowserheight = 1200
serenitybrowserwidth = 1200
logging level
serenitylogging=VERBOSE
showrelatedtags=true
Zalety
Zarządzanie screenshotami ndash jedno ustawienie i gotowe
serenitytakescreenshots
FOR_EACH_ACTION
BEFORE_AND_AFTER_EACH_STEP
AFTER_EACH_STEP
FOR_FAILURES
DISABLED
Jesli nie chcemy na screenshotach pokazywac żadnych bdquosensitive informationrdquo używamy czegos takiego
BlurScreenshots(HEAVY)
Jeśli zależy nam na czasie to radze używać FOR_FAILURES
Zalety
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Proof of Concept Znaleźć i zaimplementować najlepszy wg mnie BDD Test Framework
BDD ndash It is all about Behaviour
A może by jednak sproacutebować
Given Portal Sign In page is open in browser
When User enters correct credentials
And User clicks Sign In button
Then User should be logged into the platform
A gdyby test automatyczny wyglądał podobnie jak manualny
Narzędzie do wykonywania automatycznych testoacutew funkcjonalnychCucumber bdquorozumierdquo testy pisane w języku Gherkin
Feature ndash opis funkcjonalnościScenario ndash jakie kroki trzeba wykonać żeby sprawdzić daną
funkcjonalnośćGiven ndash założenia początkoweAnd ndash dodatkowy warunekWhen ndash warunekThen ndash wynik ( expected result )
Cucumber jako jedno z rozwiązań
3 poziomy testu
Feature Step Definition Page Object
Największa zaleta dla mnie
Scenario Outline Unsuccessful login with wrong credentials
Given Portal Sign In page is open in browser
When User enters login ltusergt
And User enters password ltpasswordgt
And User tries to Sign In
Then User should be informed that credentials are wrong
Examples Using different combination of correct and wrong credentials
|user|password|
|nowyuser100|111|
|222|hasloNOWEGOusera123|
|hasloNOWEGOusera123|nowyuser100|
|standard_user1|hasloNOWEGOusera123|
|nowyuser100|Password1|
Background
Given Portal login page is open in browser
When user opens sign-up page
Then Sign-up page is opened
Scenario Outline i Backgrounds
Trochę pouczyć się trzeba
ALE 1 Taka struktura testoacutew pozwala łatwiej bdquoogarnąćrdquo testy automatyczne
2 Taka struktura pozwala wykorzystywać te same stepy jako keywordy do kolejnych testoacutew
3 To po prostu jest bardziej zrozumiałe (przynajmniej dla mnie )
I to jest takie proste
Znalazłem juz narzędzie do testowania ktoacutere jest zrozumiałe
Ale
Konfiguracja jest kłopotliwaInstalacja upierdliwaRaporty brzydkie
Wracając do POC-a
Serenity BDD - witamy w świecie prostej konfiguracji i ładnych raportoacutew
No to szukamy dalej
Bo to tak naprawdę Cucumber obudowany w narzędzie pozwalające na proste zarządzanie raportami
Dlaczego Serenity
Instalujemy mvn-a
Tworzymy projekt bazowy na podstawie archetypu
mvn archetypegenerate -Dfilter=serenity
Instalacja
Instalujemy jakieś IDE np Intelij IDEA i zaczynamy zabawę
Instalacja
serenityproperties
Define the default driver
webdriverdriver=phantomjs
Appears at the top of the reports
serenityprojectname = Demo Project using Serenity and Cucumber
serenityrequirementtypes = epicability
serenitytakescreenshots = AFTER_EACH_STEP
serenityrequirementsdir = srctestresourcesfeature
serenitytestroot=features
webdriverchromedriver=srctestresourceswebdriverchromedriverexe
webdriveriedriver=srctestresourceswebdriverIEDriverServerexe
firefoxpreferences=appupdateauto=falsebrowsershellcheckDefaultBrowser=falseappupdateenabled=falseappupdatesilent=false
Odpalanie testow na jednej przegladarce
serenityuseuniquebrowser = false
TimeOut - defaultowo 5s
webdriverwaitfortimeout = 10000
Customise browser size
serenitybrowserheight = 1200
serenitybrowserwidth = 1200
logging level
serenitylogging=VERBOSE
showrelatedtags=true
Zalety
Zarządzanie screenshotami ndash jedno ustawienie i gotowe
serenitytakescreenshots
FOR_EACH_ACTION
BEFORE_AND_AFTER_EACH_STEP
AFTER_EACH_STEP
FOR_FAILURES
DISABLED
Jesli nie chcemy na screenshotach pokazywac żadnych bdquosensitive informationrdquo używamy czegos takiego
BlurScreenshots(HEAVY)
Jeśli zależy nam na czasie to radze używać FOR_FAILURES
Zalety
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Given Portal Sign In page is open in browser
When User enters correct credentials
And User clicks Sign In button
Then User should be logged into the platform
A gdyby test automatyczny wyglądał podobnie jak manualny
Narzędzie do wykonywania automatycznych testoacutew funkcjonalnychCucumber bdquorozumierdquo testy pisane w języku Gherkin
Feature ndash opis funkcjonalnościScenario ndash jakie kroki trzeba wykonać żeby sprawdzić daną
funkcjonalnośćGiven ndash założenia początkoweAnd ndash dodatkowy warunekWhen ndash warunekThen ndash wynik ( expected result )
Cucumber jako jedno z rozwiązań
3 poziomy testu
Feature Step Definition Page Object
Największa zaleta dla mnie
Scenario Outline Unsuccessful login with wrong credentials
Given Portal Sign In page is open in browser
When User enters login ltusergt
And User enters password ltpasswordgt
And User tries to Sign In
Then User should be informed that credentials are wrong
Examples Using different combination of correct and wrong credentials
|user|password|
|nowyuser100|111|
|222|hasloNOWEGOusera123|
|hasloNOWEGOusera123|nowyuser100|
|standard_user1|hasloNOWEGOusera123|
|nowyuser100|Password1|
Background
Given Portal login page is open in browser
When user opens sign-up page
Then Sign-up page is opened
Scenario Outline i Backgrounds
Trochę pouczyć się trzeba
ALE 1 Taka struktura testoacutew pozwala łatwiej bdquoogarnąćrdquo testy automatyczne
2 Taka struktura pozwala wykorzystywać te same stepy jako keywordy do kolejnych testoacutew
3 To po prostu jest bardziej zrozumiałe (przynajmniej dla mnie )
I to jest takie proste
Znalazłem juz narzędzie do testowania ktoacutere jest zrozumiałe
Ale
Konfiguracja jest kłopotliwaInstalacja upierdliwaRaporty brzydkie
Wracając do POC-a
Serenity BDD - witamy w świecie prostej konfiguracji i ładnych raportoacutew
No to szukamy dalej
Bo to tak naprawdę Cucumber obudowany w narzędzie pozwalające na proste zarządzanie raportami
Dlaczego Serenity
Instalujemy mvn-a
Tworzymy projekt bazowy na podstawie archetypu
mvn archetypegenerate -Dfilter=serenity
Instalacja
Instalujemy jakieś IDE np Intelij IDEA i zaczynamy zabawę
Instalacja
serenityproperties
Define the default driver
webdriverdriver=phantomjs
Appears at the top of the reports
serenityprojectname = Demo Project using Serenity and Cucumber
serenityrequirementtypes = epicability
serenitytakescreenshots = AFTER_EACH_STEP
serenityrequirementsdir = srctestresourcesfeature
serenitytestroot=features
webdriverchromedriver=srctestresourceswebdriverchromedriverexe
webdriveriedriver=srctestresourceswebdriverIEDriverServerexe
firefoxpreferences=appupdateauto=falsebrowsershellcheckDefaultBrowser=falseappupdateenabled=falseappupdatesilent=false
Odpalanie testow na jednej przegladarce
serenityuseuniquebrowser = false
TimeOut - defaultowo 5s
webdriverwaitfortimeout = 10000
Customise browser size
serenitybrowserheight = 1200
serenitybrowserwidth = 1200
logging level
serenitylogging=VERBOSE
showrelatedtags=true
Zalety
Zarządzanie screenshotami ndash jedno ustawienie i gotowe
serenitytakescreenshots
FOR_EACH_ACTION
BEFORE_AND_AFTER_EACH_STEP
AFTER_EACH_STEP
FOR_FAILURES
DISABLED
Jesli nie chcemy na screenshotach pokazywac żadnych bdquosensitive informationrdquo używamy czegos takiego
BlurScreenshots(HEAVY)
Jeśli zależy nam na czasie to radze używać FOR_FAILURES
Zalety
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Narzędzie do wykonywania automatycznych testoacutew funkcjonalnychCucumber bdquorozumierdquo testy pisane w języku Gherkin
Feature ndash opis funkcjonalnościScenario ndash jakie kroki trzeba wykonać żeby sprawdzić daną
funkcjonalnośćGiven ndash założenia początkoweAnd ndash dodatkowy warunekWhen ndash warunekThen ndash wynik ( expected result )
Cucumber jako jedno z rozwiązań
3 poziomy testu
Feature Step Definition Page Object
Największa zaleta dla mnie
Scenario Outline Unsuccessful login with wrong credentials
Given Portal Sign In page is open in browser
When User enters login ltusergt
And User enters password ltpasswordgt
And User tries to Sign In
Then User should be informed that credentials are wrong
Examples Using different combination of correct and wrong credentials
|user|password|
|nowyuser100|111|
|222|hasloNOWEGOusera123|
|hasloNOWEGOusera123|nowyuser100|
|standard_user1|hasloNOWEGOusera123|
|nowyuser100|Password1|
Background
Given Portal login page is open in browser
When user opens sign-up page
Then Sign-up page is opened
Scenario Outline i Backgrounds
Trochę pouczyć się trzeba
ALE 1 Taka struktura testoacutew pozwala łatwiej bdquoogarnąćrdquo testy automatyczne
2 Taka struktura pozwala wykorzystywać te same stepy jako keywordy do kolejnych testoacutew
3 To po prostu jest bardziej zrozumiałe (przynajmniej dla mnie )
I to jest takie proste
Znalazłem juz narzędzie do testowania ktoacutere jest zrozumiałe
Ale
Konfiguracja jest kłopotliwaInstalacja upierdliwaRaporty brzydkie
Wracając do POC-a
Serenity BDD - witamy w świecie prostej konfiguracji i ładnych raportoacutew
No to szukamy dalej
Bo to tak naprawdę Cucumber obudowany w narzędzie pozwalające na proste zarządzanie raportami
Dlaczego Serenity
Instalujemy mvn-a
Tworzymy projekt bazowy na podstawie archetypu
mvn archetypegenerate -Dfilter=serenity
Instalacja
Instalujemy jakieś IDE np Intelij IDEA i zaczynamy zabawę
Instalacja
serenityproperties
Define the default driver
webdriverdriver=phantomjs
Appears at the top of the reports
serenityprojectname = Demo Project using Serenity and Cucumber
serenityrequirementtypes = epicability
serenitytakescreenshots = AFTER_EACH_STEP
serenityrequirementsdir = srctestresourcesfeature
serenitytestroot=features
webdriverchromedriver=srctestresourceswebdriverchromedriverexe
webdriveriedriver=srctestresourceswebdriverIEDriverServerexe
firefoxpreferences=appupdateauto=falsebrowsershellcheckDefaultBrowser=falseappupdateenabled=falseappupdatesilent=false
Odpalanie testow na jednej przegladarce
serenityuseuniquebrowser = false
TimeOut - defaultowo 5s
webdriverwaitfortimeout = 10000
Customise browser size
serenitybrowserheight = 1200
serenitybrowserwidth = 1200
logging level
serenitylogging=VERBOSE
showrelatedtags=true
Zalety
Zarządzanie screenshotami ndash jedno ustawienie i gotowe
serenitytakescreenshots
FOR_EACH_ACTION
BEFORE_AND_AFTER_EACH_STEP
AFTER_EACH_STEP
FOR_FAILURES
DISABLED
Jesli nie chcemy na screenshotach pokazywac żadnych bdquosensitive informationrdquo używamy czegos takiego
BlurScreenshots(HEAVY)
Jeśli zależy nam na czasie to radze używać FOR_FAILURES
Zalety
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
3 poziomy testu
Feature Step Definition Page Object
Największa zaleta dla mnie
Scenario Outline Unsuccessful login with wrong credentials
Given Portal Sign In page is open in browser
When User enters login ltusergt
And User enters password ltpasswordgt
And User tries to Sign In
Then User should be informed that credentials are wrong
Examples Using different combination of correct and wrong credentials
|user|password|
|nowyuser100|111|
|222|hasloNOWEGOusera123|
|hasloNOWEGOusera123|nowyuser100|
|standard_user1|hasloNOWEGOusera123|
|nowyuser100|Password1|
Background
Given Portal login page is open in browser
When user opens sign-up page
Then Sign-up page is opened
Scenario Outline i Backgrounds
Trochę pouczyć się trzeba
ALE 1 Taka struktura testoacutew pozwala łatwiej bdquoogarnąćrdquo testy automatyczne
2 Taka struktura pozwala wykorzystywać te same stepy jako keywordy do kolejnych testoacutew
3 To po prostu jest bardziej zrozumiałe (przynajmniej dla mnie )
I to jest takie proste
Znalazłem juz narzędzie do testowania ktoacutere jest zrozumiałe
Ale
Konfiguracja jest kłopotliwaInstalacja upierdliwaRaporty brzydkie
Wracając do POC-a
Serenity BDD - witamy w świecie prostej konfiguracji i ładnych raportoacutew
No to szukamy dalej
Bo to tak naprawdę Cucumber obudowany w narzędzie pozwalające na proste zarządzanie raportami
Dlaczego Serenity
Instalujemy mvn-a
Tworzymy projekt bazowy na podstawie archetypu
mvn archetypegenerate -Dfilter=serenity
Instalacja
Instalujemy jakieś IDE np Intelij IDEA i zaczynamy zabawę
Instalacja
serenityproperties
Define the default driver
webdriverdriver=phantomjs
Appears at the top of the reports
serenityprojectname = Demo Project using Serenity and Cucumber
serenityrequirementtypes = epicability
serenitytakescreenshots = AFTER_EACH_STEP
serenityrequirementsdir = srctestresourcesfeature
serenitytestroot=features
webdriverchromedriver=srctestresourceswebdriverchromedriverexe
webdriveriedriver=srctestresourceswebdriverIEDriverServerexe
firefoxpreferences=appupdateauto=falsebrowsershellcheckDefaultBrowser=falseappupdateenabled=falseappupdatesilent=false
Odpalanie testow na jednej przegladarce
serenityuseuniquebrowser = false
TimeOut - defaultowo 5s
webdriverwaitfortimeout = 10000
Customise browser size
serenitybrowserheight = 1200
serenitybrowserwidth = 1200
logging level
serenitylogging=VERBOSE
showrelatedtags=true
Zalety
Zarządzanie screenshotami ndash jedno ustawienie i gotowe
serenitytakescreenshots
FOR_EACH_ACTION
BEFORE_AND_AFTER_EACH_STEP
AFTER_EACH_STEP
FOR_FAILURES
DISABLED
Jesli nie chcemy na screenshotach pokazywac żadnych bdquosensitive informationrdquo używamy czegos takiego
BlurScreenshots(HEAVY)
Jeśli zależy nam na czasie to radze używać FOR_FAILURES
Zalety
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Scenario Outline Unsuccessful login with wrong credentials
Given Portal Sign In page is open in browser
When User enters login ltusergt
And User enters password ltpasswordgt
And User tries to Sign In
Then User should be informed that credentials are wrong
Examples Using different combination of correct and wrong credentials
|user|password|
|nowyuser100|111|
|222|hasloNOWEGOusera123|
|hasloNOWEGOusera123|nowyuser100|
|standard_user1|hasloNOWEGOusera123|
|nowyuser100|Password1|
Background
Given Portal login page is open in browser
When user opens sign-up page
Then Sign-up page is opened
Scenario Outline i Backgrounds
Trochę pouczyć się trzeba
ALE 1 Taka struktura testoacutew pozwala łatwiej bdquoogarnąćrdquo testy automatyczne
2 Taka struktura pozwala wykorzystywać te same stepy jako keywordy do kolejnych testoacutew
3 To po prostu jest bardziej zrozumiałe (przynajmniej dla mnie )
I to jest takie proste
Znalazłem juz narzędzie do testowania ktoacutere jest zrozumiałe
Ale
Konfiguracja jest kłopotliwaInstalacja upierdliwaRaporty brzydkie
Wracając do POC-a
Serenity BDD - witamy w świecie prostej konfiguracji i ładnych raportoacutew
No to szukamy dalej
Bo to tak naprawdę Cucumber obudowany w narzędzie pozwalające na proste zarządzanie raportami
Dlaczego Serenity
Instalujemy mvn-a
Tworzymy projekt bazowy na podstawie archetypu
mvn archetypegenerate -Dfilter=serenity
Instalacja
Instalujemy jakieś IDE np Intelij IDEA i zaczynamy zabawę
Instalacja
serenityproperties
Define the default driver
webdriverdriver=phantomjs
Appears at the top of the reports
serenityprojectname = Demo Project using Serenity and Cucumber
serenityrequirementtypes = epicability
serenitytakescreenshots = AFTER_EACH_STEP
serenityrequirementsdir = srctestresourcesfeature
serenitytestroot=features
webdriverchromedriver=srctestresourceswebdriverchromedriverexe
webdriveriedriver=srctestresourceswebdriverIEDriverServerexe
firefoxpreferences=appupdateauto=falsebrowsershellcheckDefaultBrowser=falseappupdateenabled=falseappupdatesilent=false
Odpalanie testow na jednej przegladarce
serenityuseuniquebrowser = false
TimeOut - defaultowo 5s
webdriverwaitfortimeout = 10000
Customise browser size
serenitybrowserheight = 1200
serenitybrowserwidth = 1200
logging level
serenitylogging=VERBOSE
showrelatedtags=true
Zalety
Zarządzanie screenshotami ndash jedno ustawienie i gotowe
serenitytakescreenshots
FOR_EACH_ACTION
BEFORE_AND_AFTER_EACH_STEP
AFTER_EACH_STEP
FOR_FAILURES
DISABLED
Jesli nie chcemy na screenshotach pokazywac żadnych bdquosensitive informationrdquo używamy czegos takiego
BlurScreenshots(HEAVY)
Jeśli zależy nam na czasie to radze używać FOR_FAILURES
Zalety
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Trochę pouczyć się trzeba
ALE 1 Taka struktura testoacutew pozwala łatwiej bdquoogarnąćrdquo testy automatyczne
2 Taka struktura pozwala wykorzystywać te same stepy jako keywordy do kolejnych testoacutew
3 To po prostu jest bardziej zrozumiałe (przynajmniej dla mnie )
I to jest takie proste
Znalazłem juz narzędzie do testowania ktoacutere jest zrozumiałe
Ale
Konfiguracja jest kłopotliwaInstalacja upierdliwaRaporty brzydkie
Wracając do POC-a
Serenity BDD - witamy w świecie prostej konfiguracji i ładnych raportoacutew
No to szukamy dalej
Bo to tak naprawdę Cucumber obudowany w narzędzie pozwalające na proste zarządzanie raportami
Dlaczego Serenity
Instalujemy mvn-a
Tworzymy projekt bazowy na podstawie archetypu
mvn archetypegenerate -Dfilter=serenity
Instalacja
Instalujemy jakieś IDE np Intelij IDEA i zaczynamy zabawę
Instalacja
serenityproperties
Define the default driver
webdriverdriver=phantomjs
Appears at the top of the reports
serenityprojectname = Demo Project using Serenity and Cucumber
serenityrequirementtypes = epicability
serenitytakescreenshots = AFTER_EACH_STEP
serenityrequirementsdir = srctestresourcesfeature
serenitytestroot=features
webdriverchromedriver=srctestresourceswebdriverchromedriverexe
webdriveriedriver=srctestresourceswebdriverIEDriverServerexe
firefoxpreferences=appupdateauto=falsebrowsershellcheckDefaultBrowser=falseappupdateenabled=falseappupdatesilent=false
Odpalanie testow na jednej przegladarce
serenityuseuniquebrowser = false
TimeOut - defaultowo 5s
webdriverwaitfortimeout = 10000
Customise browser size
serenitybrowserheight = 1200
serenitybrowserwidth = 1200
logging level
serenitylogging=VERBOSE
showrelatedtags=true
Zalety
Zarządzanie screenshotami ndash jedno ustawienie i gotowe
serenitytakescreenshots
FOR_EACH_ACTION
BEFORE_AND_AFTER_EACH_STEP
AFTER_EACH_STEP
FOR_FAILURES
DISABLED
Jesli nie chcemy na screenshotach pokazywac żadnych bdquosensitive informationrdquo używamy czegos takiego
BlurScreenshots(HEAVY)
Jeśli zależy nam na czasie to radze używać FOR_FAILURES
Zalety
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Znalazłem juz narzędzie do testowania ktoacutere jest zrozumiałe
Ale
Konfiguracja jest kłopotliwaInstalacja upierdliwaRaporty brzydkie
Wracając do POC-a
Serenity BDD - witamy w świecie prostej konfiguracji i ładnych raportoacutew
No to szukamy dalej
Bo to tak naprawdę Cucumber obudowany w narzędzie pozwalające na proste zarządzanie raportami
Dlaczego Serenity
Instalujemy mvn-a
Tworzymy projekt bazowy na podstawie archetypu
mvn archetypegenerate -Dfilter=serenity
Instalacja
Instalujemy jakieś IDE np Intelij IDEA i zaczynamy zabawę
Instalacja
serenityproperties
Define the default driver
webdriverdriver=phantomjs
Appears at the top of the reports
serenityprojectname = Demo Project using Serenity and Cucumber
serenityrequirementtypes = epicability
serenitytakescreenshots = AFTER_EACH_STEP
serenityrequirementsdir = srctestresourcesfeature
serenitytestroot=features
webdriverchromedriver=srctestresourceswebdriverchromedriverexe
webdriveriedriver=srctestresourceswebdriverIEDriverServerexe
firefoxpreferences=appupdateauto=falsebrowsershellcheckDefaultBrowser=falseappupdateenabled=falseappupdatesilent=false
Odpalanie testow na jednej przegladarce
serenityuseuniquebrowser = false
TimeOut - defaultowo 5s
webdriverwaitfortimeout = 10000
Customise browser size
serenitybrowserheight = 1200
serenitybrowserwidth = 1200
logging level
serenitylogging=VERBOSE
showrelatedtags=true
Zalety
Zarządzanie screenshotami ndash jedno ustawienie i gotowe
serenitytakescreenshots
FOR_EACH_ACTION
BEFORE_AND_AFTER_EACH_STEP
AFTER_EACH_STEP
FOR_FAILURES
DISABLED
Jesli nie chcemy na screenshotach pokazywac żadnych bdquosensitive informationrdquo używamy czegos takiego
BlurScreenshots(HEAVY)
Jeśli zależy nam na czasie to radze używać FOR_FAILURES
Zalety
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Serenity BDD - witamy w świecie prostej konfiguracji i ładnych raportoacutew
No to szukamy dalej
Bo to tak naprawdę Cucumber obudowany w narzędzie pozwalające na proste zarządzanie raportami
Dlaczego Serenity
Instalujemy mvn-a
Tworzymy projekt bazowy na podstawie archetypu
mvn archetypegenerate -Dfilter=serenity
Instalacja
Instalujemy jakieś IDE np Intelij IDEA i zaczynamy zabawę
Instalacja
serenityproperties
Define the default driver
webdriverdriver=phantomjs
Appears at the top of the reports
serenityprojectname = Demo Project using Serenity and Cucumber
serenityrequirementtypes = epicability
serenitytakescreenshots = AFTER_EACH_STEP
serenityrequirementsdir = srctestresourcesfeature
serenitytestroot=features
webdriverchromedriver=srctestresourceswebdriverchromedriverexe
webdriveriedriver=srctestresourceswebdriverIEDriverServerexe
firefoxpreferences=appupdateauto=falsebrowsershellcheckDefaultBrowser=falseappupdateenabled=falseappupdatesilent=false
Odpalanie testow na jednej przegladarce
serenityuseuniquebrowser = false
TimeOut - defaultowo 5s
webdriverwaitfortimeout = 10000
Customise browser size
serenitybrowserheight = 1200
serenitybrowserwidth = 1200
logging level
serenitylogging=VERBOSE
showrelatedtags=true
Zalety
Zarządzanie screenshotami ndash jedno ustawienie i gotowe
serenitytakescreenshots
FOR_EACH_ACTION
BEFORE_AND_AFTER_EACH_STEP
AFTER_EACH_STEP
FOR_FAILURES
DISABLED
Jesli nie chcemy na screenshotach pokazywac żadnych bdquosensitive informationrdquo używamy czegos takiego
BlurScreenshots(HEAVY)
Jeśli zależy nam na czasie to radze używać FOR_FAILURES
Zalety
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Bo to tak naprawdę Cucumber obudowany w narzędzie pozwalające na proste zarządzanie raportami
Dlaczego Serenity
Instalujemy mvn-a
Tworzymy projekt bazowy na podstawie archetypu
mvn archetypegenerate -Dfilter=serenity
Instalacja
Instalujemy jakieś IDE np Intelij IDEA i zaczynamy zabawę
Instalacja
serenityproperties
Define the default driver
webdriverdriver=phantomjs
Appears at the top of the reports
serenityprojectname = Demo Project using Serenity and Cucumber
serenityrequirementtypes = epicability
serenitytakescreenshots = AFTER_EACH_STEP
serenityrequirementsdir = srctestresourcesfeature
serenitytestroot=features
webdriverchromedriver=srctestresourceswebdriverchromedriverexe
webdriveriedriver=srctestresourceswebdriverIEDriverServerexe
firefoxpreferences=appupdateauto=falsebrowsershellcheckDefaultBrowser=falseappupdateenabled=falseappupdatesilent=false
Odpalanie testow na jednej przegladarce
serenityuseuniquebrowser = false
TimeOut - defaultowo 5s
webdriverwaitfortimeout = 10000
Customise browser size
serenitybrowserheight = 1200
serenitybrowserwidth = 1200
logging level
serenitylogging=VERBOSE
showrelatedtags=true
Zalety
Zarządzanie screenshotami ndash jedno ustawienie i gotowe
serenitytakescreenshots
FOR_EACH_ACTION
BEFORE_AND_AFTER_EACH_STEP
AFTER_EACH_STEP
FOR_FAILURES
DISABLED
Jesli nie chcemy na screenshotach pokazywac żadnych bdquosensitive informationrdquo używamy czegos takiego
BlurScreenshots(HEAVY)
Jeśli zależy nam na czasie to radze używać FOR_FAILURES
Zalety
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Instalujemy mvn-a
Tworzymy projekt bazowy na podstawie archetypu
mvn archetypegenerate -Dfilter=serenity
Instalacja
Instalujemy jakieś IDE np Intelij IDEA i zaczynamy zabawę
Instalacja
serenityproperties
Define the default driver
webdriverdriver=phantomjs
Appears at the top of the reports
serenityprojectname = Demo Project using Serenity and Cucumber
serenityrequirementtypes = epicability
serenitytakescreenshots = AFTER_EACH_STEP
serenityrequirementsdir = srctestresourcesfeature
serenitytestroot=features
webdriverchromedriver=srctestresourceswebdriverchromedriverexe
webdriveriedriver=srctestresourceswebdriverIEDriverServerexe
firefoxpreferences=appupdateauto=falsebrowsershellcheckDefaultBrowser=falseappupdateenabled=falseappupdatesilent=false
Odpalanie testow na jednej przegladarce
serenityuseuniquebrowser = false
TimeOut - defaultowo 5s
webdriverwaitfortimeout = 10000
Customise browser size
serenitybrowserheight = 1200
serenitybrowserwidth = 1200
logging level
serenitylogging=VERBOSE
showrelatedtags=true
Zalety
Zarządzanie screenshotami ndash jedno ustawienie i gotowe
serenitytakescreenshots
FOR_EACH_ACTION
BEFORE_AND_AFTER_EACH_STEP
AFTER_EACH_STEP
FOR_FAILURES
DISABLED
Jesli nie chcemy na screenshotach pokazywac żadnych bdquosensitive informationrdquo używamy czegos takiego
BlurScreenshots(HEAVY)
Jeśli zależy nam na czasie to radze używać FOR_FAILURES
Zalety
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Instalujemy jakieś IDE np Intelij IDEA i zaczynamy zabawę
Instalacja
serenityproperties
Define the default driver
webdriverdriver=phantomjs
Appears at the top of the reports
serenityprojectname = Demo Project using Serenity and Cucumber
serenityrequirementtypes = epicability
serenitytakescreenshots = AFTER_EACH_STEP
serenityrequirementsdir = srctestresourcesfeature
serenitytestroot=features
webdriverchromedriver=srctestresourceswebdriverchromedriverexe
webdriveriedriver=srctestresourceswebdriverIEDriverServerexe
firefoxpreferences=appupdateauto=falsebrowsershellcheckDefaultBrowser=falseappupdateenabled=falseappupdatesilent=false
Odpalanie testow na jednej przegladarce
serenityuseuniquebrowser = false
TimeOut - defaultowo 5s
webdriverwaitfortimeout = 10000
Customise browser size
serenitybrowserheight = 1200
serenitybrowserwidth = 1200
logging level
serenitylogging=VERBOSE
showrelatedtags=true
Zalety
Zarządzanie screenshotami ndash jedno ustawienie i gotowe
serenitytakescreenshots
FOR_EACH_ACTION
BEFORE_AND_AFTER_EACH_STEP
AFTER_EACH_STEP
FOR_FAILURES
DISABLED
Jesli nie chcemy na screenshotach pokazywac żadnych bdquosensitive informationrdquo używamy czegos takiego
BlurScreenshots(HEAVY)
Jeśli zależy nam na czasie to radze używać FOR_FAILURES
Zalety
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
serenityproperties
Define the default driver
webdriverdriver=phantomjs
Appears at the top of the reports
serenityprojectname = Demo Project using Serenity and Cucumber
serenityrequirementtypes = epicability
serenitytakescreenshots = AFTER_EACH_STEP
serenityrequirementsdir = srctestresourcesfeature
serenitytestroot=features
webdriverchromedriver=srctestresourceswebdriverchromedriverexe
webdriveriedriver=srctestresourceswebdriverIEDriverServerexe
firefoxpreferences=appupdateauto=falsebrowsershellcheckDefaultBrowser=falseappupdateenabled=falseappupdatesilent=false
Odpalanie testow na jednej przegladarce
serenityuseuniquebrowser = false
TimeOut - defaultowo 5s
webdriverwaitfortimeout = 10000
Customise browser size
serenitybrowserheight = 1200
serenitybrowserwidth = 1200
logging level
serenitylogging=VERBOSE
showrelatedtags=true
Zalety
Zarządzanie screenshotami ndash jedno ustawienie i gotowe
serenitytakescreenshots
FOR_EACH_ACTION
BEFORE_AND_AFTER_EACH_STEP
AFTER_EACH_STEP
FOR_FAILURES
DISABLED
Jesli nie chcemy na screenshotach pokazywac żadnych bdquosensitive informationrdquo używamy czegos takiego
BlurScreenshots(HEAVY)
Jeśli zależy nam na czasie to radze używać FOR_FAILURES
Zalety
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Zarządzanie screenshotami ndash jedno ustawienie i gotowe
serenitytakescreenshots
FOR_EACH_ACTION
BEFORE_AND_AFTER_EACH_STEP
AFTER_EACH_STEP
FOR_FAILURES
DISABLED
Jesli nie chcemy na screenshotach pokazywac żadnych bdquosensitive informationrdquo używamy czegos takiego
BlurScreenshots(HEAVY)
Jeśli zależy nam na czasie to radze używać FOR_FAILURES
Zalety
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Integracja z Jirą
Ustawienia
jiraurl - link do jiry
Dodatkowo otagowanie scenariusza numerem ticketu daje nam link z raportu sernity do ticketu z Jiry
issue FH-17
Jesli dodatkowo ustawimy serenitypublicurl na lokalizacje raportu z testoacutew serenity serenity zaczyna dodawac raport z testoacutew jako komentarz w tickecie
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Raporty
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Dużo wbudowanych metod ktoacutere ułatwiaja testowanie
public ltT extends WebElementFacadegt T typeAndTab(String value)
public void setWindowFocus()
public ltT extends WebElementFacadegt T selectByVisibleText(String label)
public ltT extends WebElementFacadegt T selectByValue(String value)
public ltT extends WebElementFacadegt T selectByIndex(int indexValue)
public ltT extends WebElementFacadegt T waitUntilVisible()
public ltT extends WebElementFacadegt T waitUntilPresent()
public WaitltWebDrivergt waitForCondition()
public ltT extends WebElementFacadegt T waitUntilNotVisible()
public String getValue()
public String getText()
public ltT extends WebElementFacadegt T waitUntilEnabled()
public ltT extends WebElementFacadegt T waitUntilClickable()
public ltT extends WebElementFacadegt T waitUntilDisabled()
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Wsparcie i community
Fora
httpsgroupsgooglecomforumforumthucydides-usershttpsgroupsgooglecomforumforumthucydides-dev
Tutoriale
httptesterstoriescom201607using-serenity-with-cucumber-part-1
Manual
httpserenity-bddinfodocsserenity
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
mvn clean verify -Dwebdriverdriver=chrome firefox iexplorer phantomJS
mvn clean verify -Dcucumberoptions=--tags Req-4-3bdquo
Jak uruchamiać testy
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Oczywiście że nie Nie ma idealnych rzeczy
Before After puszczane są dla każdego testu - wydłużenie czasu testoacutew ndash można to pominąc poprzez otagowanie BeforeAfter
Kiedy test sfailuje na Before jest oznaczany jako Ignored a nie jako Failed ndash zgłosiliśmy to i bdquopodobnordquo naprawiają
Refactoring bdquokeywordoacutewrdquo może być kłopotliwy jeśli się nie jest ostrożnym
Brak locatoroacutew w stacktrace w przypadku gdy WebElement nie został znaleziony
Idealne rozwiązanie
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
Odpowiedzcie sobie sami Ja uważam że tak skoro jeszcze się nie zniechęciłem
Czy automaty to jedyna słuszna droga ndash Na pewno nie ndash wszystko zależy od proporcji automatytesty manualne
Czy warto
Dziekuję za uwagę
Przemysław Biesek
przemyslawbiesekgmailcom
top related