From 9d95015741c4ba36e71e52841d1c246feed95c02 Mon Sep 17 00:00:00 2001 From: liza-mae Date: Mon, 5 Nov 2018 15:25:59 -0700 Subject: [PATCH] Replace xvfb with headless browser (#24904) (#25150) * Replace xvfb with headless browser * Update karma to run in headless chrome Update Karma tests for an option to run chrome in headless. * Fix lint issues * Fix spaces --- tasks/config/karma.js | 20 +++++++++++++------- test/scripts/jenkins_cloud.sh | 3 ++- test/scripts/jenkins_selenium.sh | 3 ++- test/scripts/jenkins_unit.sh | 3 ++- test/scripts/jenkins_xpack.sh | 6 +++--- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/tasks/config/karma.js b/tasks/config/karma.js index f5f3553fbef9..e15db89ea0ee 100644 --- a/tasks/config/karma.js +++ b/tasks/config/karma.js @@ -18,7 +18,6 @@ */ import { resolve, dirname } from 'path'; -import { platform as getOsPlatform } from 'os'; import { times } from 'lodash'; const TOTAL_CI_SHARDS = 4; @@ -29,13 +28,10 @@ module.exports = function (grunt) { if (grunt.option('browser')) { return grunt.option('browser'); } - - switch (getOsPlatform()) { - case 'win32': - return 'Chrome'; - default: - return 'Chrome'; + if (process.env.TEST_BROWSER_HEADLESS) { + return 'Chrome_Headless'; } + return 'Chrome'; } const config = { @@ -51,6 +47,16 @@ module.exports = function (grunt) { logLevel: grunt.option('debug') || grunt.option('verbose') ? 'DEBUG' : 'INFO', autoWatch: false, browsers: [pickBrowser()], + customLaunchers: { + Chrome_Headless: { + base: 'Chrome', + flags: [ + '--headless', + '--disable-gpu', + '--remote-debugging-port=9222', + ], + }, + }, // available reporters: https://npmjs.org/browse/keyword/karma-reporter reporters: process.env.CI ? ['dots', 'junit'] : ['progress'], diff --git a/test/scripts/jenkins_cloud.sh b/test/scripts/jenkins_cloud.sh index 413a19fb5c74..c6739162c2ca 100755 --- a/test/scripts/jenkins_cloud.sh +++ b/test/scripts/jenkins_cloud.sh @@ -22,4 +22,5 @@ set -e source "$(dirname $0)/../../src/dev/ci_setup/setup.sh" -xvfb-run node scripts/functional_test_runner --debug --exclude-tag skipCloud $@ +TEST_BROWSER_HEADLESS=1 +node scripts/functional_test_runner --debug --exclude-tag skipCloud $@ diff --git a/test/scripts/jenkins_selenium.sh b/test/scripts/jenkins_selenium.sh index e95be0073fe6..178d9657ba70 100755 --- a/test/scripts/jenkins_selenium.sh +++ b/test/scripts/jenkins_selenium.sh @@ -7,5 +7,6 @@ source "$(dirname $0)/../../src/dev/ci_setup/java_setup.sh" node scripts/build --release --debug --oss; +export TEST_BROWSER_HEADLESS=1 export TEST_ES_FROM=${TEST_ES_FROM:-source} -xvfb-run "$(FORCE_COLOR=0 yarn bin)/grunt" jenkins:selenium --from=source; +"$(FORCE_COLOR=0 yarn bin)/grunt" jenkins:selenium --from=source; diff --git a/test/scripts/jenkins_unit.sh b/test/scripts/jenkins_unit.sh index 4364facc4522..1f2d764f5285 100755 --- a/test/scripts/jenkins_unit.sh +++ b/test/scripts/jenkins_unit.sh @@ -5,5 +5,6 @@ source "$(dirname $0)/../../src/dev/ci_setup/setup.sh" source "$(dirname $0)/../../src/dev/ci_setup/git_setup.sh" source "$(dirname $0)/../../src/dev/ci_setup/java_setup.sh" +export TEST_BROWSER_HEADLESS=1 export TEST_ES_FROM=${TEST_ES_FROM:-source} -xvfb-run "$(FORCE_COLOR=0 yarn bin)/grunt" jenkins:unit --from=source; +"$(FORCE_COLOR=0 yarn bin)/grunt" jenkins:unit --from=source; diff --git a/test/scripts/jenkins_xpack.sh b/test/scripts/jenkins_xpack.sh index 6172db83a5de..25fe08088cbb 100755 --- a/test/scripts/jenkins_xpack.sh +++ b/test/scripts/jenkins_xpack.sh @@ -7,14 +7,14 @@ source "$(dirname $0)/../../src/dev/ci_setup/setup.sh" source "$(dirname $0)/../../src/dev/ci_setup/git_setup.sh" source "$(dirname $0)/../../src/dev/ci_setup/java_setup.sh" - +export TEST_BROWSER_HEADLESS=1 export XPACK_DIR="$(cd "$(dirname "$0")/../../x-pack"; pwd)" echo "-> XPACK_DIR ${XPACK_DIR}" echo " -> Running mocha tests" cd "$XPACK_DIR" -xvfb-run yarn test +yarn test echo "" echo "" @@ -37,6 +37,6 @@ tar -xzf "$linuxBuild" -C "$installDir" --strip=1 export TEST_ES_FROM=${TEST_ES_FROM:-source} echo " -> Running functional and api tests" cd "$XPACK_DIR" -xvfb-run node scripts/functional_tests --debug --bail --kibana-install-dir "$installDir" +node scripts/functional_tests --debug --bail --kibana-install-dir "$installDir" echo "" echo ""