testando interfaces web com splinter
DESCRIPTION
Palestra "Testando interfaces web com Splinter" apresentada no FISL 12, no dia 01/07/2011 por Andrews Medina e Francisco Souza.TRANSCRIPT
como trazer sua banda favorita para o
Friday, July 1, 2011
ou...
Friday, July 1, 2011
testando interfaces web com splinter
Friday, July 1, 2011
Andrews Medina
#cobrateam founderdjangobrasil.org / python.org.br
desenvolvedor @ globo.com
Friday, July 1, 2011
Francisco Souza
#cobrateam memberdjangobrasil.org
desenvolvedor @ globo.com
Friday, July 1, 2011
Meet the cure.
proprietary software is the disease.
Friday, July 1, 2011
testes?
Friday, July 1, 2011
Friday, July 1, 2011
show me the code
Friday, July 1, 2011
interfaces web?
Friday, July 1, 2011
interfaces x componentes ricos
Friday, July 1, 2011
interfaces
Friday, July 1, 2011
componentes
Friday, July 1, 2011
testando componentes
Friday, July 1, 2011
qunit
Friday, July 1, 2011
qunit
• jquery
Friday, July 1, 2011
qunit
• jquery
• unitário
Friday, July 1, 2011
qunit
• jquery
• unitário
• api feia
Friday, July 1, 2011
qunit
• jquery
• unitário
• api feia
• ruim para testes assíncronos
Friday, July 1, 2011
jasmine
Friday, July 1, 2011
• bdd
jasmine
Friday, July 1, 2011
• bdd
• api bonita
jasmine
Friday, July 1, 2011
• bdd
• api bonita
• inspirado no rspec
jasmine
Friday, July 1, 2011
• bdd
• api bonita
• inspirado no rspec
• baseado em tópicos
jasmine
Friday, July 1, 2011
• bdd
• api bonita
• inspirado no rspec
• baseado em tópicos
• bom para testes assíncronos
jasmine
Friday, July 1, 2011
qunit x jasmine
Friday, July 1, 2011
jasmine-splinter-runner
Friday, July 1, 2011
Friday, July 1, 2011
show me the code
Friday, July 1, 2011
testando interfaces
Friday, July 1, 2011
ferramentas
Friday, July 1, 2011
selenium 1.0
Friday, July 1, 2011
• lento
selenium 1.0
Friday, July 1, 2011
• lento
• necessita de server
selenium 1.0
Friday, July 1, 2011
• lento
• necessita de server
• obsoleto
selenium 1.0
Friday, July 1, 2011
• lento
• necessita de server
• obsoleto
• sintaxe ruim (java)
selenium 1.0
Friday, July 1, 2011
• lento
• necessita de server
• obsoleto
• sintaxe ruim (java)
• funcionalidades legais
selenium 1.0
Friday, July 1, 2011
pyccuracy
Friday, July 1, 2011
• linguagem natural
pyccuracy
Friday, July 1, 2011
• linguagem natural
• sintaxe complexa
pyccuracy
Friday, July 1, 2011
• linguagem natural
• sintaxe complexa
• difícil de manter
pyccuracy
Friday, July 1, 2011
• linguagem natural
• sintaxe complexa
• difícil de manter
• baseaado no selenium 1
pyccuracy
Friday, July 1, 2011
selenium 2.0
Friday, July 1, 2011
• vários browsers (firefox, ie, chrome)
selenium 2.0
Friday, July 1, 2011
• vários browsers (firefox, ie, chrome)
• instável
selenium 2.0
Friday, July 1, 2011
• vários browsers (firefox, ie, chrome)
• instável
• diferença entre browsers (api)
selenium 2.0
Friday, July 1, 2011
• vários browsers (firefox, ie, chrome)
• instável
• diferença entre browsers (api)
• menos features que o selenium 1
selenium 2.0
Friday, July 1, 2011
zope testbrowser
Friday, July 1, 2011
• rápido
zope testbrowser
Friday, July 1, 2011
• rápido
• headless
zope testbrowser
Friday, July 1, 2011
• rápido
• headless
• não renderiza js
zope testbrowser
Friday, July 1, 2011
• rápido
• headless
• não renderiza js
• api estável
zope testbrowser
Friday, July 1, 2011
• rápido
• headless
• não renderiza js
• api estável
• trata formulários de forma ‘especial’
zope testbrowser
Friday, July 1, 2011
htmlunit
Friday, July 1, 2011
• rápido
htmlunit
Friday, July 1, 2011
• rápido
• headless
htmlunit
Friday, July 1, 2011
• rápido
• headless
• suporta js
htmlunit
Friday, July 1, 2011
• rápido
• headless
• suporta js
• java :(
htmlunit
Friday, July 1, 2011
zombie.js
Friday, July 1, 2011
• rápido
zombie.js
Friday, July 1, 2011
• rápido
• headless
zombie.js
Friday, July 1, 2011
• rápido
• headless
• node.js
zombie.js
Friday, July 1, 2011
• rápido
• headless
• node.js
• instável
zombie.js
Friday, July 1, 2011
e mais...
• Mechanize
• PhantomJS
• twill
• Windmill
Friday, July 1, 2011
splintersplinter.cobrateam.info
Friday, July 1, 2011
splinter é uma API
Friday, July 1, 2011
browser = Browser(‘webdriver.firefox’)browser.visit(‘http://cobrateam.info’)assert browser.is_text_present(‘Projects’)
browser = Browser(‘zope.testbrowser’)browser.visit(‘http://cobrateam.info’)assert browser.is_text_present(‘Projects’)
browser = Browser(‘phantomjs’)browser.visit(‘http://cobrateam.info’)assert browser.is_text_present(‘Projects’)
Friday, July 1, 2011
browser
Friday, July 1, 2011
browser
• visit(‘url’)
Friday, July 1, 2011
browser
• visit(‘url’)
• reload()
Friday, July 1, 2011
browser
• visit(‘url’)
• reload()
• quit()
Friday, July 1, 2011
browser
• visit(‘url’)
• reload()
• quit()
• html
Friday, July 1, 2011
browser
• visit(‘url’)
• reload()
• quit()
• html
• url
Friday, July 1, 2011
browser
• visit(‘url’)
• reload()
• quit()
• html
• url
• title
Friday, July 1, 2011
procurando por elementos
Friday, July 1, 2011
procurando por elementos
• find_by_css(‘.classe’)
Friday, July 1, 2011
procurando por elementos
• find_by_css(‘.classe’)
• find_by_id(‘meuid’)
Friday, July 1, 2011
procurando por elementos
• find_by_css(‘.classe’)
• find_by_id(‘meuid’)
• find_by_xpath(‘//body’)
Friday, July 1, 2011
procurando por elementos
• find_by_css(‘.classe’)
• find_by_id(‘meuid’)
• find_by_xpath(‘//body’)
• find_by_tag(‘a’)
Friday, July 1, 2011
procurando por elementos
• find_by_css(‘.classe’)
• find_by_id(‘meuid’)
• find_by_xpath(‘//body’)
• find_by_tag(‘a’)
• find_by_name(‘search’)
Friday, July 1, 2011
formulários
Friday, July 1, 2011
formulários
• fill(‘name’, ‘value’)
Friday, July 1, 2011
formulários
• fill(‘name’, ‘value’)
• attach_file(‘name’, ‘/path/to/file.txt’)
Friday, July 1, 2011
formulários
• fill(‘name’, ‘value’)
• attach_file(‘name’, ‘/path/to/file.txt’)
• check(‘name’) #checkbox
Friday, July 1, 2011
formulários
• fill(‘name’, ‘value’)
• attach_file(‘name’, ‘/path/to/file.txt’)
• check(‘name’) #checkbox
• choose(‘name’, ‘value’) #radio button
Friday, July 1, 2011
formulários
• fill(‘name’, ‘value’)
• attach_file(‘name’, ‘/path/to/file.txt’)
• check(‘name’) #checkbox
• choose(‘name’, ‘value’) #radio button
• select(‘name’, ‘option’)
Friday, July 1, 2011
e mais...
Friday, July 1, 2011
e mais...
• alert
Friday, July 1, 2011
e mais...
• alert
• iframe
Friday, July 1, 2011
e mais...
• alert
• iframe
• status_code
Friday, July 1, 2011
Friday, July 1, 2011
show me the code
Friday, July 1, 2011
futuro do projeto
Friday, July 1, 2011
futuro do projeto• mais browsers/drivers
Friday, July 1, 2011
futuro do projeto• mais browsers/drivers
• ie
Friday, July 1, 2011
futuro do projeto• mais browsers/drivers
• ie
• zombie.js
Friday, July 1, 2011
futuro do projeto• mais browsers/drivers
• ie
• zombie.js
• webkit
Friday, July 1, 2011
futuro do projeto• mais browsers/drivers
• ie
• zombie.js
• webkit
• mouse events
Friday, July 1, 2011
futuro do projeto• mais browsers/drivers
• ie
• zombie.js
• webkit
• mouse events
• cookies
Friday, July 1, 2011
como contribuir
Friday, July 1, 2011
como contribuir
• #cobrateam @ irc.freenode.net
Friday, July 1, 2011
como contribuir
• #cobrateam @ irc.freenode.net
• fork
Friday, July 1, 2011
como contribuir
• #cobrateam @ irc.freenode.net
• fork
• pull request
Friday, July 1, 2011
sprint durante o fisl
Friday, July 1, 2011
sprint durante o fisl
ainda da tempo!
Friday, July 1, 2011
como trazer sua banda favorita para o
Friday, July 1, 2011
perguntas?
Andrews Medinaandrewsmedina.com @[email protected]
Francisco Souzafranciscosouza.com
splinter.cobrateam.infogithub.com/cobrateam/splinter
Friday, July 1, 2011