From 25e873a3ea416c3dff39685f83b8b64f7d595bbf Mon Sep 17 00:00:00 2001 From: Daniel Pierce Date: Thu, 24 Aug 2023 14:09:59 -0400 Subject: [PATCH] Run javascript specs on remote browser --- .circleci/config.yml | 4 ++-- .dassie/.env | 3 ++- .dockerignore | 3 +++ .koppie/.env | 2 ++ karma.conf.js | 17 ++++++++--------- package.json | 4 +++- spec/javascripts/jasmine_spec.rb | 10 +++------- 7 files changed, 23 insertions(+), 20 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4e5488bcb2..64921fd2e4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -88,7 +88,7 @@ jobs: command: | /kaniko/executor \ --cache=true \ - --build-arg "EXTRA_APK_PACKAGES=git bash chromium" \ + --build-arg "EXTRA_APK_PACKAGES=git bash" \ --build-arg "APP_PATH=.<< parameters.hyrax_app >>" \ --build-arg "RUBY_VERSION=<< parameters.ruby_version >>" \ --context "git://github.com/samvera/hyrax#refs/heads/${CIRCLE_BRANCH}#${CIRCLE_SHA1}" \ @@ -118,7 +118,7 @@ jobs: HUB_URL: http://localhost:4444/wd/hub HYRAX_VALKYRIE: << parameters.hyrax_valkyrie >> IN_DOCKER: true - KARMA_BROWSER: ChromiumHeadlessCustom + KARMA_BROWSER: remote-chromium VALKYRIE_SOLR_CORE: valkyrie-test VALKYRIE_SOLR_PORT: 8985 steps: diff --git a/.dassie/.env b/.dassie/.env index 455be71b92..dc6ccf759a 100644 --- a/.dassie/.env +++ b/.dassie/.env @@ -17,7 +17,8 @@ HYRAX_DERIVATIVES_PATH=/app/samvera/hyrax-webapp/derivatives/ HYRAX_ENGINE_PATH=/app/samvera/hyrax-engine HYRAX_UPLOAD_PATH=/app/samvera/hyrax-webapp/uploads/ IN_DOCKER=true -KARMA_BROWSER=ChromiumHeadlessCustom +KARMA_BROWSER=remote-chromium +KARMA_HOSTNAME=app MEMCACHED_HOST=memcached RACK_ENV=development RAILS_ENV=development diff --git a/.dockerignore b/.dockerignore index 0c43ce0a8c..e5c94a0946 100644 --- a/.dockerignore +++ b/.dockerignore @@ -16,3 +16,6 @@ chart/* Gemfile.lock .dassie/Gemfile.lock + +node_modules/* +yarn.lock \ No newline at end of file diff --git a/.koppie/.env b/.koppie/.env index 780a9a5fcf..a5d9ae5479 100644 --- a/.koppie/.env +++ b/.koppie/.env @@ -14,6 +14,8 @@ HYRAX_ENGINE_PATH=/app/samvera/hyrax-engine HYRAX_UPLOAD_PATH=/app/samvera/hyrax-webapp/uploads/ HYRAX_VALKYRIE=true IN_DOCKER=true +KARMA_BROWSER=remote-chromium +KARMA_HOSTNAME=app METADATA_DATABASE_NAME=koppie_metadata_development POSTGRES_DB=koppie POSTGRES_HOST_AUTH_METHOD=trust diff --git a/karma.conf.js b/karma.conf.js index 09926ec722..cfcb735695 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -66,6 +66,7 @@ module.exports = function(config) { }, // web server port + hostname: process.env.KARMA_HOSTNAME || 'localhost', // This is the host the remote browser connects to port: 9876, // enable / disable colors in the output (reporters and logs) @@ -80,16 +81,14 @@ module.exports = function(config) { // start these browsers // available browser launchers: https://www.npmjs.com/search?q=keywords:karma-launcher - browsers: [process.env.KARMA_BROWSER], + browsers: [process.env.KARMA_BROWSER || 'ChromiumHeadless'], customLaunchers: { - ChromiumHeadlessCustom: { - base: 'ChromiumHeadless', - flags: ['--no-sandbox'] - }, - ChromeHeadlessCustom: { - base: 'ChromeHeadless', - flags: ['--no-sandbox'] + 'remote-chromium': { + base: 'SeleniumGrid', + gridUrl: process.env.HUB_URL || 'http://localhost:4444/wd/hub', + browserName: 'chrome', + arguments: [ '--headless=new'] } }, @@ -99,6 +98,6 @@ module.exports = function(config) { // Concurrency level // how many browser instances should be started simultaneously - concurrency: 4 + concurrency: 1 }) } diff --git a/package.json b/package.json index 1a12f9e13c..1246670982 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,8 @@ "karma-chrome-launcher": "^3.1.1", "karma-coffee-preprocessor": "^1.0.1", "karma-jasmine": "^4.0.2", - "karma-spec-reporter": "^0.0.34" + "karma-selenium-grid-launcher": "^0.3.0", + "karma-spec-reporter": "^0.0.34", + "selenium-webdriver": "^4.10.0" } } diff --git a/spec/javascripts/jasmine_spec.rb b/spec/javascripts/jasmine_spec.rb index e0e98dac93..1d9005cfd4 100644 --- a/spec/javascripts/jasmine_spec.rb +++ b/spec/javascripts/jasmine_spec.rb @@ -1,17 +1,13 @@ # frozen_string_literal: true require 'English' -require 'rake' # Run the jasmine tests by running the karma javascript test framework # The spec will fail if any jasmine tests fails. RSpec.describe "Jasmine" do - before do - Rails.application.load_tasks - Rake::Task["assets:clobber"].invoke - Rake::Task["assets:precompile"].invoke - end - it "expects all jasmine tests to pass" do + # Ensure capybara is not using the remote browser + Capybara.using_driver(Capybara.javascript_driver) { Capybara.current_session.quit } + jasmine_out = `node_modules/karma/bin/karma start` if $CHILD_STATUS.exitstatus == 0