Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
FUNCTIONAL TESTING
automatically with Selenium
@josephj6802
What’s FT?
Functional Testing in Stackla
Can u borrow me
your iPhone 5?
Headless vs. Selenium
Headless Browser
Selenium
Misunderstandings
Only available in Firefox
Need to write Java for Selenium test cases
or use Selenium IDE to record
(Prob...
Selenium 2.0
Selenium 1.0 + = Selenium 2.0
npm install selenium-webdriver
gem install selenium-webdriver
composer.phar req...
Manipulate Chrome w/ Node.js + ChromeDriver
Get Feet Wet!
var webdriver = require(‘selenium-webdriver'),
expect = require(...
Scalability
Scalability
Trial Run with
Manual Testing
Manual Testing
Automated Testing
My Tools
Browser testing on SauceLabs
Jasmine
Webdriver.io
Grunt
SauceLabs
exports.config = {
user: process.env.SAUCE_USERNAME,
key: process.env.SAUCE_ACCESS_KEY,
updateJob: true,
specs: ['./tests/...
Automated Build
TravisCI
My Tools
Delegating testing task to CI Server
Jasmine
Webdriver.io
Grunt
SauceLabs
Enable Build
https://github.com/josephj/browser-testing
Whenever user makes git push
Set environment variables for SauceConnect
Settings
language: node_js
node_js:
- "4.1"
before_script:
- npm install grunt-cli -g
- npm install webdriverio -g
- npm install ja...
https://travis-ci.org/josephj/browser-testing
Let’s Build!
$ git push
Todo List
Pricing
Unlimted Automation Testing
but slow with 1 parallel VM
Better speed but with limited time
Fastest and quiet enoug...
Google Trends
BrowserStack is the most
popular one
Resources
https://github.com/josephj/browser-testing
Upcoming SlideShare
Loading in …5
×

Automatic Functional Testing with Selenium and SauceLabs

1,893 views

Published on

Build automatic functional testing environment easily (Tool used: Selenium Webdriver, Grunt, TravisCI, WebdriverIO, SauceLabs, Github, and Jasmine)

Published in: Technology

Automatic Functional Testing with Selenium and SauceLabs

  1. 1. FUNCTIONAL TESTING automatically with Selenium @josephj6802
  2. 2. What’s FT?
  3. 3. Functional Testing in Stackla Can u borrow me your iPhone 5?
  4. 4. Headless vs. Selenium Headless Browser Selenium
  5. 5. Misunderstandings Only available in Firefox Need to write Java for Selenium test cases or use Selenium IDE to record (Probably true in Selenium 1.0)
  6. 6. Selenium 2.0 Selenium 1.0 + = Selenium 2.0 npm install selenium-webdriver gem install selenium-webdriver composer.phar require facebook/webdriver
  7. 7. Manipulate Chrome w/ Node.js + ChromeDriver Get Feet Wet! var webdriver = require(‘selenium-webdriver'), expect = require('expect'), driver = new webdriver.Builder().forBrowser('chrome').build(); driver.get('http://stackla.com'); driver.getTitle().then(function (title) { expect(title).toBe(“Stackla - Social Media Aggregator“); }); driver.quit(); Tip: Node.JS 4.x
  8. 8. Scalability
  9. 9. Scalability
  10. 10. Trial Run with
  11. 11. Manual Testing
  12. 12. Manual Testing
  13. 13. Automated Testing
  14. 14. My Tools Browser testing on SauceLabs Jasmine Webdriver.io Grunt SauceLabs
  15. 15. exports.config = { user: process.env.SAUCE_USERNAME, key: process.env.SAUCE_ACCESS_KEY, updateJob: true, specs: ['./tests/*_test.js'], capabilities: [{ browserName: 'firefox', version: 37, name: 'Firefox Selenium tests', build: 'build-' + process.env.TRAVIS_BUILD_ID, 'tunnel-identifier': process.env.TRAVIS_JOB_NUMBER },{ browserName: 'chrome', version: 43, name: 'Chrome Selenium tests', build: 'build-' + process.env.TRAVIS_BUILD_ID, 'tunnel-identifier': process.env.TRAVIS_JOB_NUMBER },{ browserName: 'internet explorer', version: 11, name: 'IE Selenium tests', build: 'build-' + process.env.TRAVIS_BUILD_ID, 'tunnel-identifier': process.env.TRAVIS_JOB_NUMBER },{ browserName: 'safari', version: 6, name: 'Safari Selenium tests', build: 'build-' + process.env.TRAVIS_BUILD_ID, 'tunnel-identifier': process.env.TRAVIS_JOB_NUMBER }], baseUrl: 'http://localhost:8585', framework: 'jasmine', reporter: ‘spec' }; ./wdio-saucelab.conf.js // browser - webdriver instance describe('Index Page', function() { it('should have title', function* () { yield browser.url('/index.html'); expect(yield browser.getTitle()).toBe('Browser Testing'); }); it('shoud have Stackla widget', function* () { yield browser.url('/'); expect(yield browser.isExisting('.stackla-widget')); }); }); ./tests/index_test.js <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Browser Testing</title> </head> <body> <h1>Browser Testing</h1> <div class="stackla-widget" data-id="6605" data- hash="5663ac9e3843f" data-ct="" data-alias="josephj.stackla.com" data-ttl="30" style="width: 100%; overflow: hidden;"></div> <script type="text/javascript"> (function (d, id) { if (d.getElementById(id)) return; var t = d.createElement('script'); t.type = 'text/javascript'; t.src = '//assetscdn.stackla.com/media/js/widget/ fluid-embed.js'; t.id = id; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(t); }(document, 'stackla-widget-js')); </script> </body> </html> http://localhost:8585/index.html Need to build a web server and tunnel $ wdio wdio-saucelab.conf.js
  16. 16. Automated Build
  17. 17. TravisCI My Tools Delegating testing task to CI Server Jasmine Webdriver.io Grunt SauceLabs
  18. 18. Enable Build https://github.com/josephj/browser-testing
  19. 19. Whenever user makes git push Set environment variables for SauceConnect Settings
  20. 20. language: node_js node_js: - "4.1" before_script: - npm install grunt-cli -g - npm install webdriverio -g - npm install jasmine -g addons: sauce_connect: true branches: only: - master - gh-pages script: - grunt test:saucelabs Config File ./travis.yml
  21. 21. https://travis-ci.org/josephj/browser-testing Let’s Build! $ git push
  22. 22. Todo List
  23. 23. Pricing Unlimted Automation Testing but slow with 1 parallel VM Better speed but with limited time Fastest and quiet enough time
  24. 24. Google Trends BrowserStack is the most popular one
  25. 25. Resources https://github.com/josephj/browser-testing

×