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

Post on 06-May-2015

1.262 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CONTINUOUS INTEGRATION WITH SELENIUM

AT MARKTPLAATS.NL

CONTENT

PROCESS OVERVIEW

GRID

FRAMEWORK

SMOKE TESTS

LAYOUT TESTING

JENKINS & PIPELINE

BUILD STATISTICS

SELENIUM TESTS

BUILDS A DAY

TOTAL RUNS PER DAY

DEMO DEPLOYS PER WEEK

2.000 24

48.000 11

Se

KANBAN PIPELINE

STORY TEST CASES

PM QA

READY FOR DEV QA

PD

DEMO DEPLOY

L&P DEPLOY

PROD DEPLOY

GRID

CONTINUOUS INTEGRATION WITH SELENIUM

GRID OVERVIEW

GRID

3 7

GRID MAINTENANCE

BUILDER SSH

./all.sh uptime root@10.32.85.13 10:55:25 up 39 days, 20:32, 0 users, load average: 0.27, 0.44, 0.76 root@10.32.85.14 10:54:53 up 39 days, 20:20, 2 users, load average: 0.21, 0.32, 0.69 root@10.32.85.15 10:54:37 up 39 days, 20:21, 0 users, load average: 0.17, 0.22, 0.43 root@10.32.85.16 10:56:42 up 39 days, 20:19, 0 users, load average: 0.01, 0.20, 0.58

TEST FRAMEWORK CONTINUOUS INTEGRATION WITH SELENIUM

FRAMEWORK ABSTRACTION

TEST FLOW PAGE DRIVER

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();!

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();! }!! !

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);! }!}!!

FRAMEWORK TEST STRATEGY

COMPONENT FLOW

POSITIVE

NEGATIVE

FIELDS

MESSAGES

XSS

SMOKE TESTS CONTINUOUS INTEGRATION WITH SELENIUM

SMOKE TESTS APPROACH

SINGLE PLATFORM

PLATFORMS INTEGRATION

SMOKE TESTS OVERVIEW

PLAT

INT

ENV

PROD

DEMO

GRID

REPORT

SMOKE TESTS REPORT EXAMPLE

LAYOUT TESTING CONTINUOUS INTEGRATION WITH SELENIUM

LAYOUT TESTING BROWSER COMPATIBILITY

GRID

PAGES BROWSERS

REPORT

LAYOUT TESTING REPORT EXAMPLE

LAYOUT TESTING REPORT EXAMPLE

JENKINS & PIPELINE CONTINUOUS INTEGRATION WITH SELENIUM

JENKINS & PIPELINE TEST JOBS

GRID MAIN

GRID PARALLEL

NO GRID

TEST ARE GREEN TRIGGER

DEMO DEPLOY

OTHER TESTS

JENKINS & PIPELINE JOBS MONITOR

JENKINS & PIPELINE REPORTING

JENKINS & PIPELINE REPORTING

PIPELINE APP

SELENIUM TEST

` DATABASE

REST

JENKINS & PIPELINE DASHBOARD

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

ANY QUESTIONS ? CONTINUOUS INTEGRATION WITH SELENIUM

ishubin@ebay.com

top related