amsterdam selenium meetup - continuous integration with selenium at marktplaats.nl by ivan shubin

29
CONTINUOUS INTEGRATION WITH SELENIUM AT MARKTPLAATS.NL

Upload: samit-badle

Post on 06-May-2015

1.268 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

CONTINUOUS INTEGRATION WITH SELENIUM

AT MARKTPLAATS.NL

Page 2: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

CONTENT

PROCESS OVERVIEW

GRID

FRAMEWORK

SMOKE TESTS

LAYOUT TESTING

JENKINS & PIPELINE

Page 3: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

BUILD STATISTICS

SELENIUM TESTS

BUILDS A DAY

TOTAL RUNS PER DAY

DEMO DEPLOYS PER WEEK

2.000 24

48.000 11

Se

Page 4: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

KANBAN PIPELINE

STORY TEST CASES

PM QA

READY FOR DEV QA

PD

DEMO DEPLOY

L&P DEPLOY

PROD DEPLOY

Page 5: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

GRID

CONTINUOUS INTEGRATION WITH SELENIUM

Page 6: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

GRID OVERVIEW

GRID

3 7

Page 7: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

GRID MAINTENANCE

BUILDER SSH

./all.sh uptime [email protected] 10:55:25 up 39 days, 20:32, 0 users, load average: 0.27, 0.44, 0.76 [email protected] 10:54:53 up 39 days, 20:20, 2 users, load average: 0.21, 0.32, 0.69 [email protected] 10:54:37 up 39 days, 20:21, 0 users, load average: 0.17, 0.22, 0.43 [email protected] 10:56:42 up 39 days, 20:19, 0 users, load average: 0.01, 0.20, 0.58

Page 8: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

TEST FRAMEWORK CONTINUOUS INTEGRATION WITH SELENIUM

Page 9: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

FRAMEWORK ABSTRACTION

TEST FLOW PAGE DRIVER

Page 10: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

FRAMEWORK FLOW

adUrn = new SyiFlow(driver)! .selectL1Category(“Boeken”)! .selectBucket(“Overige”)! .selectL2Category(“E-books”)! .typeTitle(“test ad title”)! .typeDescription("test ad description”)! .typePrice("12,00")! .uploadImage(1, new File(“test-image.jpg”))! .typePostcode(“1097DN”)! .submitAndNavigateToRyiPage()! .getAdvertisementUrn();!

Page 11: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

FRAMEWORK PAGE MODELS

public class LoginPage extends MarktplaatsPage<LoginPage> {! public static final String LOGIN_URL = URLS.login();! private static final By USERNAME_FIELD_LOCATOR = By.xpath("//input[@name='j_username']");! private static final By PASSWORD_FIELD_LOCATOR = By.xpath("//input[@name='j_password']");! private static final By LOGIN_BUTTON_LOCATOR = By.id("account-login-button");! ! public LoginPage(WebDriver driver) {! super(driver);! }!! @Override! public LoginPage load() {! getDriver().get(LOGIN_URL);! return this;! }!! @Override! public boolean isAvailable() {! return getEmailField().isAvailable() && getPasswordField().isAvailable();! }!! !

Page 12: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

FRAMEWORK PAGE MODELS

public void login(String username, String passwordText) {! loadAndWaitUntilAvailable();! getEmailField().inputText(username);! getPasswordField().inputText(passwordText);! loginButton().submit();! }!! public TextInput getEmailField() {! return new TextInput(getDriver(), USERNAME_FIELD_LOCATOR);! }!! public TextInput getPasswordField() {! return new TextInput(getDriver(), PASSWORD_FIELD_LOCATOR);! }! ! public WebElement loginButton() {! return getDriver().findElement(LOGIN_BUTTON_LOCATOR);! }!}!!

Page 13: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

FRAMEWORK TEST STRATEGY

COMPONENT FLOW

POSITIVE

NEGATIVE

FIELDS

MESSAGES

XSS

Page 14: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

SMOKE TESTS CONTINUOUS INTEGRATION WITH SELENIUM

Page 15: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

SMOKE TESTS APPROACH

SINGLE PLATFORM

PLATFORMS INTEGRATION

Page 16: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

SMOKE TESTS OVERVIEW

PLAT

INT

ENV

PROD

DEMO

GRID

REPORT

Page 17: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

SMOKE TESTS REPORT EXAMPLE

Page 18: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

LAYOUT TESTING CONTINUOUS INTEGRATION WITH SELENIUM

Page 19: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

LAYOUT TESTING BROWSER COMPATIBILITY

GRID

PAGES BROWSERS

REPORT

Page 20: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

LAYOUT TESTING REPORT EXAMPLE

Page 21: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

LAYOUT TESTING REPORT EXAMPLE

Page 22: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

JENKINS & PIPELINE CONTINUOUS INTEGRATION WITH SELENIUM

Page 23: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

JENKINS & PIPELINE TEST JOBS

GRID MAIN

GRID PARALLEL

NO GRID

TEST ARE GREEN TRIGGER

DEMO DEPLOY

OTHER TESTS

Page 24: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

JENKINS & PIPELINE JOBS MONITOR

Page 25: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

JENKINS & PIPELINE REPORTING

Page 26: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

JENKINS & PIPELINE REPORTING

PIPELINE APP

SELENIUM TEST

` DATABASE

REST

Page 27: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

JENKINS & PIPELINE DASHBOARD

Page 28: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

CI & SELENIUM SUMMARY

PAST PRESENT

SELENIUM FEEDBACK

FAILURE FEEDBACK

BROWSER SUPPORT

30 – 50 MIN

30 – 50 MIN

14 - 18 MIN

RIGHT AWAY

AMOUNT OF JOBS 11 3

Page 29: Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

ANY QUESTIONS ? CONTINUOUS INTEGRATION WITH SELENIUM

[email protected]