TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest takie złe -...

27
@Before – Nie będe automatyzować !!! @After – No dobra to nie jest takie złe

Transcript of TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest takie złe -...

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

Dziekuję za uwagę

Przemysław Biesek

przemyslawbiesekgmailcom