From c79185d82fd7eef187592c3f6cd44515923cc8ab Mon Sep 17 00:00:00 2001 From: Raghu Simha Date: Mon, 20 Nov 2017 13:06:18 -0500 Subject: [PATCH] Enable experiments before Percy build (#12110) --- build-system/tasks/prepend-global/index.js | 4 ++- build-system/tasks/visual-diff.rb | 36 ++++++++++++++++++++-- test/visual-diff/visual-tests.json | 6 ++++ 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/build-system/tasks/prepend-global/index.js b/build-system/tasks/prepend-global/index.js index 0a9e1ab5b295..a54d9196b980 100644 --- a/build-system/tasks/prepend-global/index.js +++ b/build-system/tasks/prepend-global/index.js @@ -157,7 +157,9 @@ function removeConfig(target) { .then(file => { let contents = file.toString(); if (numConfigs(contents) == 0) { - util.log('No configs found in', util.colors.cyan(target)); + if (!process.env.TRAVIS) { + util.log('No configs found in', util.colors.cyan(target)); + } return Promise.resolve(); } sanityCheck(contents); diff --git a/build-system/tasks/visual-diff.rb b/build-system/tasks/visual-diff.rb index 145a48acc65b..c94b628267a4 100644 --- a/build-system/tasks/visual-diff.rb +++ b/build-system/tasks/visual-diff.rb @@ -284,10 +284,16 @@ def generate_snapshots(page, webpages) forbidden_css = webpage['forbidden_css'] loading_incomplete_css = webpage['loading_incomplete_css'] loading_complete_css = webpage['loading_complete_css'] + enable_experiments(page, webpage['experiments']) page.visit(url) - verify_css_elements(page, url, - forbidden_css, loading_incomplete_css, loading_complete_css) + verify_css_elements( + page, + url, + forbidden_css, + loading_incomplete_css, + loading_complete_css) Percy::Capybara.snapshot(page, name: name) + clear_experiments(page) end end end @@ -336,6 +342,32 @@ def verify_css_elements( end +# Enables the given AMP experiments. +# +# Args: +# - page: Page object used by Percy for snapshotting. +# - experiments: List of experiments to enable. +def enable_experiments(page, experiments) + if experiments + page.driver.set_cookie( + 'AMP_EXP', + experiments.join('%2C'), + { :path => '/', :domain => 'localhost' }) + log('verbose', 'Setting AMP experiments ' + cyan(experiments.join(', '))) + end +end + + +# Clears all AMP experiment cookies. +# +# Args: +# - page: Page object used by Percy for snapshotting. +def clear_experiments(page) + page.driver.clear_cookies + log('verbose', 'Cleared all AMP experiment cookies') +end + + # Enables debugging if requested via command line. def set_debugging_level if ARGV.include? '--debug' diff --git a/test/visual-diff/visual-tests.json b/test/visual-diff/visual-tests.json index 03979cf80c37..faacd4e6b91f 100644 --- a/test/visual-diff/visual-tests.json +++ b/test/visual-diff/visual-tests.json @@ -63,6 +63,12 @@ * "loading_complete_css": [ * ".loading-complete-css-class", * ".another-loading-complete-css-class" + * ], + * + * // Experiments that must be enabled via cookies. + * "experiments": [ + * "amp-feature-one", + * "amp-feature-two" * ] * }, */