What is the best way to smoke test a staging/production environment in Rails?

First, the setup...

I am currently developing a Rails 3 application on Mac OS X using Ruby 1.8.7 MRI, running tests and local dev against a MySQL database. I have 3 "other" non-local environments that we use at my company for every application called dev, tqa, and prod. These run in Tomcat using JRuby (1.8.7) with Oracle as the backend.

As you can see, the environments are quite different, and we've run into some bugs on deployment to an Oracle/JRuby environment that don't exist locally (like date handling and specifying default schemas in Oracle).

I love running something like Cucumber/Webrat/Capybara locally to hit every URL exposed in the app to make sure the basic stuff is working (ie; a smoke test). Ideally, it hits every url, and would do some simple things like entering data in forms and clicking on buttons, etc.

Ideally, when I deploy to dev/tqa, I would run something similar, except pointed at the deployed app instead of the local application. Cucumber seems optimized to hit a locally running application and integrates well with Rails, but cannot run against what is for all intents an "external" application (or at least I can't find an easy way that actually works).

Also, when I deploy to prod I'd like a similar suite of smoke tests to run, except it would not change the state of the current production database (ie, would just GET URLs).

Something like Selenium could be used, I guess, but I'd really like to just run a rake task and get back the results like I do with Cucumber.

Is there any Rails/Ruby way to go about doing this, or does everyone else just roll their own solution using wget or Selenium?

A similar question was asked here: Automatically smoke test all webpages in application, after deployment

I'm not sure that the question is exactly what I have in mind, though.

15
задан Community 23 May 2017 в 10:30
поделиться