45
Full Stack Integration Testing Patrick Hüsler, huesler informatik

Culerity and Headless Full Stack Integration Testing

Embed Size (px)

DESCRIPTION

A presentation about Full Stack Integration testing with a focus on headless solutions and a list of promising new solutions using johnson. Presented at RailsWayCon 2010

Citation preview

Page 1: Culerity and Headless Full Stack Integration Testing

Full Stack Integration Testing

Patrick Hüsler, huesler informatik

Page 2: Culerity and Headless Full Stack Integration Testing

Control the Browser

2

Page 3: Culerity and Headless Full Stack Integration Testing

Emulate a browser

3

Page 4: Culerity and Headless Full Stack Integration Testing

The Lay of The Land

4

Page 5: Culerity and Headless Full Stack Integration Testing

5

Page 6: Culerity and Headless Full Stack Integration Testing

6

Thank you Martin Kleppmannhttp://www.slideshare.net/martinkleppmann/crossbrowser-testing-in-the-real-world

Page 7: Culerity and Headless Full Stack Integration Testing

Headless

7

Page 8: Culerity and Headless Full Stack Integration Testing

HTML Unit

8

Page 9: Culerity and Headless Full Stack Integration Testing

9

<< HtmlUnit is a "GUI-Less browser for Java programs". It models HTML documents and provides an API that allows you to invoke pages, fill out forms, click links, etc... just like you do in your "normal" browser. >>http://htmlunit.sourceforge.net/

Page 10: Culerity and Headless Full Stack Integration Testing

Celerity

10

Page 11: Culerity and Headless Full Stack Integration Testing

11

<< A ruby wrapper around HTML Unit written in JRuby>>

Page 12: Culerity and Headless Full Stack Integration Testing

Concerns

12

Page 13: Culerity and Headless Full Stack Integration Testing

SLOW

13

Page 14: Culerity and Headless Full Stack Integration Testing

Really SLOW!!!

14

Page 15: Culerity and Headless Full Stack Integration Testing

Sometimes Brittle

15

Page 16: Culerity and Headless Full Stack Integration Testing

Focus on the most important features

16

Page 17: Culerity and Headless Full Stack Integration Testing

Rails

17

Page 18: Culerity and Headless Full Stack Integration Testing

18

Status Quo Ante

Page 19: Culerity and Headless Full Stack Integration Testing

Webrat

19

Page 20: Culerity and Headless Full Stack Integration Testing

Selenium et. al

20

Page 21: Culerity and Headless Full Stack Integration Testing

21

Page 22: Culerity and Headless Full Stack Integration Testing

Headless

22

Page 23: Culerity and Headless Full Stack Integration Testing

Culerity

23

http://github.com/langalex/culerity

Page 24: Culerity and Headless Full Stack Integration Testing

Steam

24

http://github.com/svenfuchs/steam

Page 25: Culerity and Headless Full Stack Integration Testing

Status Quo

25

Page 26: Culerity and Headless Full Stack Integration Testing

Capybara

26

http://github.com/jnicklas/capybara

Page 27: Culerity and Headless Full Stack Integration Testing

27

<< Capybara aims to simplify the process of integration testing Rack applications, such as Rails, Sinatra or Merb. It is inspired by and aims to replace Webrat as a DSL for interacting with a webapplication. It is agnostic about the driver running your tests and currently comes bundled with rack-test, Culerity, Celerity and Selenium support built in.>>http://github.com/jnicklas/capybara

Page 28: Culerity and Headless Full Stack Integration Testing

28

• rack-test•Celerity•Selenium• (env-js)

Capybara Drivers

Page 29: Culerity and Headless Full Stack Integration Testing

Ideas/Approaches

29

Page 30: Culerity and Headless Full Stack Integration Testing

Steam

30

http://github.com/svenfuchs/steam

Steam is a headless integration testing tool driving HtmlUnit to enable testing JavaScript-driven web sites. In that it is similar to Culerity which drives Celerity (which also drives HtmlUnit).

Page 31: Culerity and Headless Full Stack Integration Testing

envjs

31

http://github.com/jeresig/env-js

http://www.envjs.com/

Page 32: Culerity and Headless Full Stack Integration Testing

32

ENVJS IS A SIMULATED BROWSER ENVIRONMENT WRITTEN IN JAVASCRIPT. IT WAS ORIGINALLY DEVELOPED BY JOHN RESIG AND DISCUSSED IN HIS BLOG HERE. ENVJS IS NOW SUPPORTED BY A COMMUNITY OF DEVELOPERS WHO ALL USE ENVJS AS PART OF THEIR OWN OPEN SOURCE PROJECTS.

http://www.envjs.com/

Page 33: Culerity and Headless Full Stack Integration Testing

Johnson

33

Johnson wraps JavaScript in a loving Ruby embrace. It embeds the Mozilla SpiderMonkey JavaScript runtime as a C extension.

http://github.com/jbarnette/johnson

Page 34: Culerity and Headless Full Stack Integration Testing

Johnson

34

require "johnson"

Johnson.evaluate("4 + 4") # => 8 Johnson.evaluate("4 + foo", :foo => 4) # => 8

Page 36: Culerity and Headless Full Stack Integration Testing

Harmony

36

http://github.com/mynyml/harmony

page.execute_js("1+1") #=> 2page.execute_js("document.title") #=> "Foo"

Page 37: Culerity and Headless Full Stack Integration Testing

Harmony

37

•Wrapper around• Johnson• Envjs

Page 38: Culerity and Headless Full Stack Integration Testing

HolyGrail: Rails plugin for Harmony

38

http://github.com/mynyml/holygrail

Page 39: Culerity and Headless Full Stack Integration Testing

The ruby tracer

39

http://github.com/cowboyd/therubyracer

Embed the Google V8 Javascript Interpreter into Ruby

Page 40: Culerity and Headless Full Stack Integration Testing

Lyndon

40

Lyndon wraps JavaScript in a loving MacRuby embrace.

http://github.com/defunkt/lyndon

Page 41: Culerity and Headless Full Stack Integration Testing

Headless Squirrel

41

http://github.com/Fingertips/headless-squirrel

A JavaScript test runner to run tests from the comfort of your terminal.

Page 42: Culerity and Headless Full Stack Integration Testing

rdom

42

tweet from the author, sven fuchs:

“maybe you want to mention steam and/or rdom http://bit.ly/db4vxL, browser/env in ruby w/ nokogiri + johnson, not complete yet.”

Page 44: Culerity and Headless Full Stack Integration Testing

Questions?

44