TL;DR
In this post I describe on real example how to use important question for every software tester: “Did I do it in proper order?”
For one client I created environment for running selenium webdriver test suite in headless mode for firefox browser. I use docker image that contains latest Jenkins, xvfb server and firefox browser. I was not able to start chrome with xvfb because chrome has much higher security. More about that environment in following posts.
When I run test suite, I got following cryptic exception:
Failure/Error: Unable to find matching line from backtrace Selenium::WebDriver::Error::UnknownError: Failed to decode response from marionette # ./spec/spec_helper.rb:93:in `block (2 levels) in <top (required)>'
Line that triggered exception was:
@driver.quit
With help of this excellent blog post, I find how to ask right question: “Did I use proper order of calling different api methods?”
I first closed headless driver (which is xvfb server), and then I tried to close selenium webdriver. That lost connection to its X server manager (xvfb).
After I first closed selenium webdriver, and after it I closed headless xvfb server, test suite worked as expected.
When you investigate what went wrong, use this simple question:
“Did I use proper order?”
http://stackoverflow.com/questions/15067107/difference-between-webdriver-dispose-close-and-quit