Cross browser Testing JavaScript

Post on 01-Sep-2014

2,333 views 2 download

Tags:

description

One mistake many people make is running their selenium test suites with every browser combination... you don't need to! Rendering problems are probably the biggest cross browser compatibility issue, and you can't actually test for these with Functional Tests. So by running Selenium tests across many browsers you are really testing JavaScript and DOM compatibility. Running our Selenium tests across many browsers was our JavaScript compatibility strategy, but it proved inefficient as we ended up with bugs in Internet Explorer; how embarrassing!

transcript

Cross Browser testing JavaScript

Alan ParkinsonCEO, Hindsight Software Ltd

@alan_parkinson

You don’t need to run your Selenium Test suite with every browser*

The Truth

• No visual testing

• Low JavaScript code coverage

• Costly to improve coverage

Rendering Compatibility

JavaScript/DOM Compatibility

What do we achieve?

• JavaScript and DOM compatibility• Good code coverage• Reusing a development artifact

Run all JavaScript unit tests cross browser

Simple Answer

• Average Test: 8 Seconds• Test Suite: 5 minutes

• Average Test: 0.1 seconds

• Test suite: 11 seconds

Functional Tests

JavaScript Unit Tests

Looking at the numbers

Do we meet our compatibility objective?

Code Coverage has a use

• Too many JavaScript files • Order of loading files

Not everything will be picked up by Unit Tests

*The qualifier

Only run critical functional tests cross-browser

JAVASCRIPT TEST RUNNERSReusing your Selenium infrastructure

• Testing Framework Agnostic• Continuous Integration• Code coverage with Instanbul

• Launch Browsers

• Manually connect browsers

Spectacular Test Runner for JavaScript

Real Browsers

Karma

• Connects Remote WebDriver Instances• Selenium Grid 2• Supports Desired Capabilities

Reusing your Selenium Infrastructure

Karma WebDriver Launcher

Karma in action

$ npm install -g karma

$ npm install -g karma-webdriver-launcher

Continuous Integration

Override karma.conf.js from the command line

singleRun: truereporters: [‘junit’]

• Code Coverage• Feedback time• Meeting our objective - Compatibility

• Karma Runner

• Use your existing WebDriver infrastructure

• Use code coverage to validate the majority of your code is compatibility tested.

Functional tests have poor performance:

Cross-browser unit test JavaScript

Summary

http://karma-runner.github.io/

https://github.com/hindsightsoftware/karma-webdriver-example

Thank youAlan Parkinson

@alan_parkinson