Index: testing/variations/README.md |
diff --git a/testing/variations/README.md b/testing/variations/README.md |
new file mode 100644 |
index 0000000000000000000000000000000000000000..655f4750ffa5bdff87eb57dc3cf565d5a9a94da4 |
--- /dev/null |
+++ b/testing/variations/README.md |
@@ -0,0 +1,114 @@ |
+# Field Trial Testing Configuration |
+ |
+This directory contains the field trial configuration used to ensure testing |
+coverage of the experiments defined in `fieldtrial_testing_config.json`. |
+ |
+Note that these apply specifically for Chromium builds. Chrome branded / |
+official builds do not use these definitions. |
+ |
+The first available experiment after platform filtering and concatenation is the |
+default experiment for Chromium builds. This experiment is also used for perf |
+bots and browser tests in the waterfall. |
+ |
+## Config File Format |
+ |
+```json |
+{ |
+ "StudyName": [ |
+ { |
+ "platforms": [Array of Strings of Valid Platforms for These Experiments], |
+ "experiments": [ |
+ { |
+ "//0": "Comment Line 0. Lines 0-9 are supported.", |
+ "name": "ExperimentName", |
+ "params": {Dictionary of Params}, |
+ "enable_features": [Array of Strings of Features], |
+ "disable_features": [Array of Strings of Features] |
+ }, |
+ ... |
+ ] |
+ }, |
+ ... |
+ ], |
+ ... |
+} |
+``` |
+ |
+The config file is a dictionary at the top level mapping a study name to an |
+array of *study configurations*. The study name should match the Field Trial |
+study name. |
+ |
+### Study Configurations |
+ |
+Each *study configuration* is a dictionary containing both `platform` and |
+`experiments`. |
+ |
+`platform` is an array of strings of valid platforms and the |
+strings may be `android`, `chromeos`, `ios`, `linux`, `mac`, or `windows`. |
+ |
+`experiments` is an array containing the *experiments*. |
+ |
+The converter uses the platforms array to determine what experiments to include |
+for the study. All matching platforms will have their experiments concatenated |
+together for the study. |
+ |
+### Experiments (Groups) |
+Each *experiment* is a dictionary that must contain the `name` key, identifying |
+the experiment group name which should match the Field Trial experiment group |
+name. |
+ |
+The remaining keys, `params`, `enable_features`, and `disable_features` are |
+optional. |
+ |
+`params` is a dictionary mapping parameter name to parameter. |
+ |
+`enable_features` and `disable_features` indicate which features should be |
+enabled and disabled respectively through the |
+[Feature List API](https://cs.chromium.org/chromium/src/base/feature_list.h). As |
+a reminder, as the variations framework does not actually fetch the Field Trial |
+definitions from the server for Chromium builds, so any feature enabling or |
+disabling must be done here. |
+ |
+#### Comments |
+ |
+Each experiment may have up to 10 lines of comments. The comment key must be of |
+the form `//N` where `N` is between 0 and 9. |
+ |
+```json |
+{ |
+ "AStudyWithExperimentComment": [ |
+ { |
+ "platforms": ["chromeos", "linux", "mac", "win"], |
+ "experiments": [ |
+ { |
+ "//0": "This is the first comment line.", |
+ "//1": "This is the second comment line.", |
+ "name": "DesktopExperiment" |
+ } |
+ ] |
+ } |
+ ] |
+} |
+``` |
+ |
+### Specifying Different Experiments for Different Platforms |
+Simply specify two different study configurations in the study: |
+ |
+```json |
+{ |
+ "DifferentExperimentsPerPlatform": [ |
+ { |
+ "platforms": ["chromeos", "linux", "mac", "win"], |
+ "experiments": [{ "name": "DesktopExperiment" }] |
+ }, |
+ { |
+ "platforms": ["android", "ios"], |
+ "experiments": [{ "name": "MobileExperiment" }] |
+ } |
+ ] |
+} |
+``` |
+ |
+## Presubmit |
+The presubmit tool will ensure that your changes follow the correct ordering and |
+format. |