SHIELD Test Service

This service hosts the data needed for running manual tests of the SHIELD recipe client. The scripts that generate this page and the data are hosted on Github.

Setting up for Testing

  1. Obtain a copy of Firefox with the SHIELD recipe client system add-on installed. You can check about:support to ensure that you have it.
  2. Set the extensions.shield-recipe-client.dev_mode preference to true to run recipes immediately on startup.
  3. Set the extensions.shield-recipe-client.logging.level preference to 40 to enable more logging. This corresponds to log level INFO.
  4. Set the security.content.signature.root_hash preference to 4C:35:B1:C3:E3:12:D9:55:E7:78:ED:D0:A7:E7:8A:38:83:04:EF:01:BF:FA:03:29:B2:46:9F:3C:C5:EC:36:04. This is the public hash used for verifying content signatures of the test data.

Verifying a Test Case

You have two options for verifying a test case depending on how thoroughly you want to test the client:

Test Cases

ConsoleLogBasic

Matches all clients. Logs a message to the console.

URL:

ConsoleLogLongMessage

Matches all clients. Logs to the console with a very long message.

URL:

ErrorInvalidSignature

Returns a recipe with invalid signatures, which should not be executed. If it does anyway, it will log to the console.

URL:

ErrorMalformedJSON

Returns invalid JSON in the server response.

URL:

ErrorMissingAPI

Returns a 404 Not Found response.

URL:

FilterChannel

Five recipes that match the Default (custom build), Nightly, Aurora, Beta, and Release channels respectively. All log to the console with the channel they match.

URL:

FilterDefaultBrowser

Matches if Firefox is the default browser. Logs to the console.

URL:

FilterDistribution

Matches the distribution "testdist", which is read from the distribution.id preference. Logs to the console.

URL:

FilterGeolocationMatch

Matches if the server geolocates the user to the US, which this test case does. Logs to the console.

URL:

FilterGeolocationNoMatch

Matches if the server geolocates the user to the US; the server is set to geolocate the user to France. Logs to the console.

URL:

FilterLocales

Several recipes that match the locales that Firefox is available in. All log to the console with the locale they matched.

URL:

FilterLongExpression

Matches all clients using a very long filter expression. Logs to the console.

URL:

FilterPluginsFlash

Matches if the Flash plugin is installed. Logs to the console.

URL:

FilterSample0

Recipe set to a 0% sample of users (effectively should never be run). Logs to the console.

URL:

FilterSample100

Recipe set to a 100% sample of users (effectively should always be run). Logs to the console.

URL:

FilterSearchEngines

Several recipes that match default search engines, specifically: yahoo, google-nocodes, bing, amazondotcom, ddg, twitter, wikipedia. All log to the console with the search engine they matched.

URL:

FilterSync

Several recipes that match Firefox Sync status:

URL:

FilterTelemetry

Matches users with a telemetry ping named testping with the payload {foo: "bar"}. You can send a telemetry ping with the following code pasted into the Browser Console:

Components.utils.import("resource://gre/modules/TelemetryController.jsm");
TelemetryController.submitExternalPing("testping", {foo: "bar"});

URL:

FilterVersion

Several recipes that match recent Firefox versions, specifically: 59.0a1, , 58.0b11, 57.0.2. All log to the console with the version they matched.

URL:

HeartbeatLongMessages

Matches all clients. Shows a Heartbeat prompt with very long strings.

URL:

ShowHeartbeatButton

Matches all clients. Shows a Heartbeat prompt with a clickable button.

URL:

ShowHeartbeatStars

Matches all clients. Shows a Heartbeat prompt with a 5-star rating control.

URL: