Browse files

Improving Acceptance Testing with Page Objects

Proposal for Wicked Good Ruby by Josh Clayton
  • Loading branch information...
1 parent 3b9f4a6 commit 4a5585a15a75e29a26286f5b8205e4f91c2f902f @joshuaclayton joshuaclayton committed May 2, 2013
Showing with 36 additions and 0 deletions.
  1. +36 −0 joshua-clayton.improving-acceptance-testing-with-page-objects.md
View
36 joshua-clayton.improving-acceptance-testing-with-page-objects.md
@@ -0,0 +1,36 @@
+# Improving Acceptance Testing with Page Objects #
+
+## by Josh Clayton ##
+
+### Abstract ###
+
+While following red/green/refactor in application code is great, developers
+often forget tests are code too and need to be refactored as such. Page
+Objects provide a layer of abstraction throughout tests which simplify
+interaction through well-named methods and good object-orientation; this
+pattern allows developers to manage dependencies, selectors, and leverage
+RSpec's matcher syntax to write clean, focused tests which encapsulate DOM
+interaction and page concepts concisely. This talk will cover the progression
+of existing code bases to use Page Objects, Page Objects' benefits and practical
+applications, and why Page Objects will improve your acceptance tests.
+
+### Additional Notes ###
+
+I wrote a brief introduction on Page Objects within the context of a Rails
+application recently [on the thoughtbot
+blog](http://robots.thoughtbot.com/post/35776432958/better-acceptance-tests-with-page-objects).
+
+In this talk, I will briefly discuss how Cucumber and Gherkin were used "back
+in the day" to write acceptance tests and how we have been migrating towards
+more abstract tests with RSpec and Capybara. With this foundation laid, I will
+introduce Page Objects and their benefits, how I discovered them through a
+progression of refactoring my tests, how to refactor existing tests using Page
+Objects, and patterns that emerged after migrating test suites to use this
+pattern. Finally, I will cover caveats, tricks to using Page Objects
+effectively, and when to avoid using Page Objects.
+
+## Social ##
+
+* [http://joshuaclayton.me](http://joshuaclayton.me)
+* [@joshuaclayton](http://twitter.com/joshuaclayton)
+* [GitHub](https://github.com/joshuaclayton)

0 comments on commit 4a5585a

Please sign in to comment.