sergii puzankov «ui regression testing with "gemini"»

39
UI regression testing with Gemini

Upload: logeeknightukraine

Post on 05-Apr-2017

84 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

UI regression testing with Gemini

Page 2: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

⬥Yandex ⬥Luxoft, GettyImages ⬥Front-end Science

[email protected]@puzankovcom

SERGEY PUZANKOV

Page 3: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

TESTING FRONT-END

Page 4: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

MANUAL TESTING

Page 5: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

ТЕСТИРУЕМ ВЕРСТКУ

Page 6: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

ТЕСТИРУЕМ МОБИЛЬНУЮ.ВЕРСТКУ

Page 7: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

TESTING AUTOMATION

Роботы работают, счастлив человек!

Page 8: Sergii Puzankov «UI Regression Testing with "Gemini"»
Page 9: Sergii Puzankov «UI Regression Testing with "Gemini"»
Page 10: Sergii Puzankov «UI Regression Testing with "Gemini"»
Page 11: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

⬥Code style: JSCS, …

⬥Статический анализ кода: jsHint, …

⬥Регрессия JS: unit-tests

⬥Регрессия CSS: ???

⬥Регрессия front-end app: end-to-end ???

ОБЕСПЕЧЕНИЕ КАЧЕСТВА КОДА

Page 12: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

CSS REGRESSION

Page 13: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

⬥Разные браузеры

⬥Разные состояния элементов

⬥Тестирование фрагментов страницы

⬥Эталонные скриншоты в репозитории

⬥JavaScript

ТРЕБОВАНИЯ

Page 14: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

⬥Не нужен код тестов

⬥Нужен эталонный URL

⬥Скриншоты всей страницы

https://github.com/bslatkin/dpxdt

DPXDT

Page 15: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

⬥Снимает фрагменты

⬥Разные состояния элементов

⬥Только phantom.js

https://github.com/Huddle/PhantomCSS

PHANTOMCSS

Page 16: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

⬥Снимает фрагменты

⬥Разные состояния элементов (css селекторы)

⬥Только phantom.jshttps://github.com/garris/BackstopJS

BACKSTOPJS

Page 17: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

GEMINI

Page 18: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

⬥Разные браузеры

⬥Разные состояния элементов и возможность

взаимодействия с ними

⬥Тестирование фрагментов страницы

⬥Эталонные скриншоты в репозитории

⬥JavaScript

GEMINI

Page 19: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

Page 20: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

Page 21: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

Page 22: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

⬥Selenium Server

⬥ChromeDriver

⬥PhantomJS

⬥Compiler with support of C++11

DEPENDENCIES

Page 23: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

QUICK START

Page 24: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

rootUrl: http://localhost:3000/browsers: phantomjs: desiredCapabilities: browserName: phantomjs

GEMINI.CONFIG.YML

Page 25: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

rootUrl: http://localhost:3000/gridUrl: http://localhost:4444/wd/hubscreenshotsDir: './screens'system: projectRoot: '.'browsers: phantomjs-1600-1200: windowSize: 1600x1200 desiredCapabilities: browserName: phantomjs strictComparison: true

GEMINI.CONFIG.YML

Page 26: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

gemini.suite('button', function(suite) {

// suite code

});

SUITE

Page 27: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

suite.setUrl('/tests/button')

SET URL

Page 28: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

suite.setCaptureElements('.button');

SET CAPTURED ELEMENT

Page 29: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

suite.capture('plain');

CAPTURE

Page 30: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

suite.capture('hovered', function(actions) { actions.mouseMove(this.button); });

HOVER

Page 31: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

gemini.suite('button', function(suite) { suite.setUrl('/tests/button') .setCaptureElements('.button') .before(function (actions, find) { this.button = find('.button'); }) .capture('plain') .capture('hovered', function(actions) { actions.mouseMove(this.button); }) .capture('pressed', function(actions) { actions.mouseDown(this.button); }) .capture('clicked', function(actions) { actions.mouseUp(this.button); }); });

BUTTON-TEST-SUITE.JS

Page 32: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

gemini update [paths to test suites]

gemini test --reporter html [paths to test suites]

RUN

Page 33: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

DEMO

Page 34: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

PROBLEMS

Page 35: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

⬥Animation ⬥Cursors ⬥Video ⬥Gifs :(

PROBLEMS

Page 36: Sergii Puzankov «UI Regression Testing with "Gemini"»

BIT.LY/GEMINI-DEMO

Page 37: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

ВОПРОСЫ

Page 38: Sergii Puzankov «UI Regression Testing with "Gemini"»

Благодарю за внимание!

Page 39: Sergii Puzankov «UI Regression Testing with "Gemini"»

www.luxoft.com

СПАСИБО!

Сергей Пузанков