Как получить AWS лямбда для запуска Chrome Headless Test браузера? - PullRequest
0 голосов
/ 04 ноября 2019

У меня это работает локально.
В aws я получаю сообщение об ошибке.

Файлы:

run_lambda_function.rb

require_relative 'lambda_function'
lambda_handler(event: {}, context: Object.new)

Какиезвонки

lambda_function.rb

require 'aws-sdk-lambda'
require 'time'
require 'json'
require 'rspec'
require 'capybara'
require 'capybara/rspec'
require 'webdrivers'

def lambda_handler(event:, context:)
  begin 'setup'
    Capybara.app_host = 'https://google.com'
    Capybara.register_driver :chrome do |app|
      Capybara::Selenium::Driver.new(app, browser: :chrome)
    end
    Capybara.register_driver :headless_chrome do |app|
      capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
        chromeOptions: {
          args: %w[headless enable-features=NetworkService,NetworkServiceInProcess]
        }
      )
      Capybara::Selenium::Driver.new app,
        browser: :chrome,
        desired_capabilities: capabilities
    end
    Capybara.default_driver = :headless_chrome
  end

  begin 'run test(s)'
    files = Dir.glob('spec/*_spec.rb') - ['spec/spec_helper.rb']
    p "files= #{files}"
    RSpec::Core::Runner.run(files)
  end
end

, который использует spec:

spec / google_spec.rb

describe 'Visit Websites', type: :feature, driver: :headless_chrome do
  it 'can visit google' do
    visit '/'
    expect(page).to have_css('div')
  end
  it 'can visit gogole/forms' do
    visit '/forms'
    expect(page).to have_css('div')
  end
end

Это выполняется локально, нокогда я связываю код с поставщиком / и заархивирую все это, загружаю его в lambda (через корзину S3 из-за размера> 50k для зависимостей *) и пытаюсь запустить его в консоли aws mgtmt, я получаю сообщение об ошибке в веб-драйверах:

enter image description here

Возможно, мне удастся избежать использования безсерверных и других подходов, но я стараюсь оставаться простым и низкоуровневым без зависимостей и вспомогательных средств во время обучения,В пределах разумного конечно. Никаких обручей.

Gemfile

для локального связывания во время тестирования, не имеет отношения (я думаю) к загруженному коду, поскольку я связал его с / vendor и сжал его все (отсюда большой размер и необходимость взагрузка через ведро s3)

source 'http://rubygems.org'

gem 'rspec'
gem 'webdrivers'
gem 'capybara'
gem 'aws-sdk'

Обратите внимание, что это отличается от Chrome - без головки для AWS Lambda?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...