<NME> WatchdogTest.java
<BEF> package cgeo.watchdog;

import static org.assertj.core.api.Assertions.assertThat;

import cgeo.CGeoTestCase;
import cgeo.geocaching.models.Geocache;
import cgeo.geocaching.SearchResult;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.oc.OCApiConnector;
import cgeo.geocaching.enumerations.LoadFlags;

/**
 * This test is intended to run regularly on our CI server, to verify the availability of several geocaching websites
import static org.assertj.core.api.Java6Assertions.assertThat;

/**
 * This test is intended to run regularly on our CI server, to verify the availability of several geocaching websites
 * and our ability to parse a cache from it.
 * <p>
 * You need all the opencaching API keys for this test to run.
 * </p>
 */

public class WatchdogTest extends CGeoTestCase {

    @NotForIntegrationTests
    public static void testOpenCachingDE() {
        downloadOpenCaching("OC1234");
    }

    @NotForIntegrationTests
    public static void testOpenCachingNL() {
        downloadOpenCaching("OB1AF6");
    }

    @NotForIntegrationTests
    public static void testOpenCachingPL() {
        downloadOpenCaching("OP89HC");
    }

    @NotForIntegrationTests
    public static void testOpenCachingRO() {
        downloadOpenCaching("OR011D");
    }

    @NotForIntegrationTests
    public static void testOpenCacheUK() {
        downloadOpenCaching("OK0384");
    }

    @NotForIntegrationTests
    public static void testOpenCachingUS() {
        downloadOpenCaching("OU0331");
    }

        assertThat(geocache.getGeocode()).isEqualTo(geocode);
    }

}
        assertThat(page).overridingErrorMessage("Failed to get response from " + connectorName).isNotEmpty();
    }

    @NotForIntegrationTests
    public static void testTrackableWebsites() {
        for (final TrackableConnector trackableConnector : ConnectorFactory.getTrackableConnectors()) {
            if (!trackableConnector.equals(ConnectorFactory.UNKNOWN_TRACKABLE_CONNECTOR)) {
                checkWebsite("trackable website " + trackableConnector.getHost(), trackableConnector.getTestUrl());
                if (StringUtils.isNotBlank(trackableConnector.getProxyUrl())) {
                    checkWebsite("trackable website " + trackableConnector.getHost() + " proxy " + trackableConnector.getProxyUrl(), trackableConnector.getProxyUrl());
                }
            }
        }
    }

    @NotForIntegrationTests
    public static void testGeocachingWebsites() {
        for (final IConnector connector : ConnectorFactory.getConnectors()) {
            if (!connector.equals(ConnectorFactory.UNKNOWN_CONNECTOR) && !(connector instanceof InternalConnector) && !(connector instanceof ECConnector)) {
                checkWebsite("geocaching website " + connector.getName(), connector.getTestUrl());
            }
        }

        // move website check for EC to the end to not block checking the other websites if EC is failing
        final IConnector connector = ECConnector.getInstance();
        checkWebsite("geocaching website " + connector.getName(), connector.getTestUrl());
    }
}

<MSG> have all supported websites in availability test
<DFF> @@ -3,11 +3,14 @@ package cgeo.watchdog;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import cgeo.CGeoTestCase;
-import cgeo.geocaching.models.Geocache;
 import cgeo.geocaching.SearchResult;
 import cgeo.geocaching.connector.ConnectorFactory;
+import cgeo.geocaching.connector.IConnector;
 import cgeo.geocaching.connector.oc.OCApiConnector;
+import cgeo.geocaching.connector.trackable.TrackableConnector;
 import cgeo.geocaching.enumerations.LoadFlags;
+import cgeo.geocaching.models.Geocache;
+import cgeo.geocaching.network.Network;
 
 /**
  * This test is intended to run regularly on our CI server, to verify the availability of several geocaching websites
@@ -56,4 +59,26 @@ public class WatchdogTest extends CGeoTestCase {
         assertThat(geocache.getGeocode()).isEqualTo(geocode);
     }
 
+    private static void checkWebsite(final String connectorName, final String host) {
+        final String url = "http://" + host + "/";
+        final String page = Network.getResponseData(Network.getRequest(url));
+        assertThat(page).overridingErrorMessage("Failed to get response from " + connectorName).isNotEmpty();
+    }
+
+    public static void testTrackableWebsites() {
+        for (final TrackableConnector trackableConnector : ConnectorFactory.getTrackableConnectors()) {
+            if (trackableConnector != ConnectorFactory.UNKNOWN_TRACKABLE_CONNECTOR) {
+                checkWebsite("trackable website " + trackableConnector.getHost(), trackableConnector.getHost());
+            }
+        }
+    }
+
+    public static void testGeocachingWebsites() {
+        for (final IConnector connector : ConnectorFactory.getConnectors()) {
+            if (connector != ConnectorFactory.UNKNOWN_CONNECTOR) {
+                checkWebsite("geocaching website " + connector.getName(), connector.getHost());
+            }
+        }
+    }
+
 }

have all supported websites in availability test