advanced visual test automation with selenium

Post on 17-Jul-2015

379 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Adam Carmi (@carmiadam)

Co-Founder and VP R&D at Applitools

adam.carmi@applitools.com

ADVANCED VISUAL TEST AUTOMATION WITH

SELENIUM

YOU CAN AND SHOULD

AUTOMATE YOUR

VISUAL TESTS!

AGENDA

Why automated visual testing?

Tools & Technology

Where does it fit?

WHAT IS VISUAL TESTING?

A quality assurance activity aimed to verify that a Graphical User Interface appears correctly to users

A VISUAL BUG

AND ANOTHER…

WHY SHOULD IT BE AUTOMATED?

THE TEST MATRIX IS TOO BIG TO APPROXIMATE MANUALLY Web browsers Devices Operating systems Screen resolutions Responsive designs L10n

WHY SHOULD IT BE AUTOMATED?

WHY SHOULD IT BE AUTOMATED?

NATIVE / HYBRID MOBILE APPS Harder to roll back changes

Can’t push daily

Updates take battery and data

Higher quality bar

WHY SHOULD IT BE AUTOMATED?

Many are already doing it (and sharing)…

PhantomCSSFighting Layout Bugs

CSS Critc Wraith

Needle

Grunt PhotoBox

dpdxt

WebdriverCSS

EyesHuxley

FBSnapshotTestCase

GeminiSelenium Visual Diff

VisualCeption

Specter

Snap And Compare

kobold

AGENDA

Why automated visual testing?

Tools & Technology

Where does it fit?

THE WORKFLOW

Drive the AUT and take screenshots

Compare screenshots with baseline images

Report differences

Update the baseline

DEMOhttps://github.com/webdriverio/webdrivercss

THE WORKFLOW

Drive the AUT and take screenshots

Compare screenshots with baseline images

Report differences

Update the baseline

DRIVING AND CAPTURING

OTHER

• Wraith (URLs)

• PhantomCSS (CJS)

• dpdxt (URLs)

• Grunt PhotoBox (URLs)

• Snap And Compare

(URLs)

• Specter (JS)

• Gemini (JS)

• Grunt-Vigo (URLs)

• WebDriverCSS (JS)

• Fighting Layout Bugs

(Java)

• Wraith-Selenium (Ruby)

• Selenium Visual Diff

(Java)

• Needle (Python)

• VisualCeption (PHP)

• Huxley (RP)

• Gemini (JS)

• Vizregress (.NET)

• Visualci (Java)

• Viff (JS)

• Pix-Diff (JS)

• Applitools Eyes (All)

• CSS Critic (URLs)

• FBSnapshotTestCa

se (XCTest)

• Kobold (folders)

• Applitools Eyes

(All)

SCREENSHOTS

Real browsers? Full page? Frames? Regions? Viewport size? Page stabilization? Page preparation?

THE WORKFLOW

Drive the AUT and take screenshots

Compare screenshots with baseline images

Report differences

Update the baseline

WHY NOT?

FALSE POSITIVES

ANTI ALIASING 1/2

ANTI ALIASING 2/2

BRIGHTNESS 1/2

BRIGHTNESS 2/2

SUB PIXEL SHIFTS 1/2

SUB PIXEL SHIFTS 2/2

IMAGE SCALING 1/2

IMAGE SCALING 2/2

ANDMORE…

1 pixel offsets in element positioning

Dynamic content

Moving elements

Images of different size

Performance

Image Comparison APIs

ImageMagick A powerful command line tool for image processing. APIs are available for most programming languages. Fuzzing is used to eliminate slight color differences An error ratio is usually used to determine a match

$ compare –metric AE –fuzz 5% img1.png img2.png diff.png

2246

Resemble.js An image comparison library implemented in Javascript

Used by PhantomCSS and other tools.

Good antialiasing support

An error ratio is usually used to determine a match

http://huddle.github.io/Resemble.js/

Blink-Diff An image comparison library implemented in Javascript

Can be operated from the command line using node

Perceptual color distance computation

Anti-aliasing support

An error ratio is used to determine a match

https://github.com/yahoo/blink-diff/

Applitools Eyes A specialized image processing stack designed to compare

computer generated UI images

Anti-aliasing, pixel offsets, and image scaling with low false negative rate

Dynamic and moving content

Compare images of different sizes

No error ratio configuration required

Fast!

Layout matching

Available as a cloud service

DEMO

THE WORKFLOW

Drive the AUT and take screenshots

Compare screenshots with baseline images

Report differences

Update the baseline

REPORT DIFFERENCESAs files on the file system (combined with source control)

REPORT DIFFERENCESAs a Gallery (example from Selenium Visual Diff)

THE WORKFLOW

Drive the AUT and take screenshots

Compare screenshots with baseline images

Report differences

Update the baseline

UPDATE THE BASELINE

Rename or commit individual image files

Overwrite mode

UPDATE THE BASELINE

GUI (Gemini GUI)

Automatic maintenance (Applitools Eyes)

AGENDA

Why automated visual testing?

Tools & Technology

Where does it fit?

WHERE DOES IT FIT?

• Component

s

• Code

review

• Developers

• Designers

• QA

WHERE DOES IT FIT?

• Pages

• Page

sections

• Developers

• Designers

• QA

• Others

WHERE DOES IT FIT?

• Staging vs.

Production

• Ops

• QA

WHERE DOES IT FIT?

• Monitoring

• Ops

• QA

QUESTIONS?

Adam Carmi (@carmiadam)

Co-Founder and VP R&D at Applitools

adam.carmi@applitools.com

THANK YOU

top related