Top Banner
CONTINUOUS INTEGRATION WITH SELENIUM AT MARKTPLAATS.NL
29

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

May 06, 2015

Download

Documents

Samit Badle
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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]