Describing how to run tests with Xvnc.
Hiding bottom sticker while we click menu.

The error I get otherwise is this:

    And I add a shell build step "sleep 20"   # JobConfigurationSteps.I_add_a_shell_build_step(String)
      org.openqa.selenium.WebDriverException: unknown error: Element is not clickable at point (277, 656). Other element would receive the click: <div class="bottom-sticker-inner">...</div>
        (Session info: chrome=34.0.1847.132)
        (Driver info: chromedriver=2.10.267518,platform=Linux 3.8.0-35-generic x86_64) (WARNING: The server did not provide any stacktrace information)
      Command duration or timeout: 21 milliseconds
      Build info: version: '2.40.0', revision: '4c5c0568b004f67810ee41c459549aa4b09c651e', time: '2014-02-19 11:13:01'
      System info: host: 'elf', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.8.0-35-generic', java.version: '1.7.0_07'
      Session ID: 37528a27abb5661c3c6a859cd8668be3
      Driver info: org.openqa.selenium.chrome.ChromeDriver
      Capabilities [{platform=LINUX, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={userDataDir=/tmp/.com.google.Chrome.rkeyaR}, rotatable=false, locationContextEnabled=true, version=34.0.1847.132, takesHeapSnapshot=true, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, nativeEvents=true, webStorageEnabled=true, applicationCacheEnabled=false, takesScreenshot=true}]
      	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
      	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      	at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
      	at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)
      	at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
      	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:573)
      	at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:268)
      	at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:79)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:601)
      	at org.openqa.selenium.support.events.EventFiringWebDriver$EventFiringWebElement$1.invoke(EventFiringWebDriver.java:331)
      	at $Proxy58.click(Unknown Source)
      	at org.openqa.selenium.support.events.EventFiringWebDriver$EventFiringWebElement.click(EventFiringWebDriver.java:344)
      	at org.jenkinsci.test.acceptance.po.CapybaraPortingLayer.selectDropdownMenu(CapybaraPortingLayer.java:223)
      	at org.jenkinsci.test.acceptance.po.Job$2.resolve(Job.java:92)
      	at org.jenkinsci.test.acceptance.po.CapybaraPortingLayer$Resolver.find(CapybaraPortingLayer.java:315)
      	at org.jenkinsci.test.acceptance.po.CapybaraPortingLayer.findCaption(CapybaraPortingLayer.java:298)
      	at org.jenkinsci.test.acceptance.po.Job.addStep(Job.java:90)
      	at org.jenkinsci.test.acceptance.po.Job.addBuildStep(Job.java:75)
      	at org.jenkinsci.test.acceptance.po.Job.addShellStep(Job.java:116)
      	at org.jenkinsci.test.acceptance.steps.JobConfigurationSteps.I_add_a_shell_build_step(JobConfigurationSteps.java:21)
      	at ✽.And I add a shell build step "sleep 20"(freestyle_build.feature:35)
Some tests now seem to be producing stdout, which should be redirected.

This makes the Maven console output cleaner, which helps us spot
failures as it happens.
-q will only print image ID, but we want the tag name.

See the example output below for reference:

[~/ws/jenkins/acceptance-test-harness@elf] (master)
% docker images -q jenkins/git
8358d533fa3f
[~/ws/jenkins/acceptance-test-harness@elf] (master)
% docker images jenkins/git
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
jenkins/git         8a32ffed0448        8358d533fa3f        About a minute ago   113.1 kB (virtual 432 MB)
Keep track of the current test name.

This is useful with Sauce OnDemand integration
expose test name to Sauce OnDemand
Making it work better with Sauce OnDemand.
choosing a bit more modern version as the basis
Looks like quit() is the real method.

... whereas close() just closes the current window
Perhaps my original change was incorrect in that Which.jarFile() finds a directory if the class file is in a directory?
Added more convenience methods
These key files are used for Docker fixtures, so they are useful to other modules that depend on this harness
Allow GitRepo to talk the likes of GitContainer/SshdContainer.

Adding a specific key to otherwise generic class like GitRepo is bit dubious, but I think it's a good enough start.
(And we really only use one bogus key pair in the whole test harness.)
Adding more convenience methods
'n' might not be in the update center.

For example, if I'm testing a proprietary plugin
Files need to be writable by the git user to support push
Do not try to use ./.jenkins_test/ since the actual location is unpredictable (varies acc. to CWD of Maven JVM).
Show test output on console when running single test suites or cases, just not when running the whole project.
Allowing some important environment variables to be defined via Maven property.
Thus you can add to your ~/.m2/settings.xml something like:
        <profile>
            <id>acceptance-test</id>
            <properties>
                <BROWSER>chrome</BROWSER>
                <JENKINS_WAR>/tmp/jenkins-1.554.1.war</JENKINS_WAR>
            </properties>
        </profile>
and then just:
$ mvn -Pacceptance-test test
Doc improvement