我可以得到一个 aws lambda 来 运行 一个 rspec 测试吗?

Can i get an aws lambda to run an rspec test?

我在本地运行。
在 aws 中出现错误。

本地我用

run_lambda_function.rb

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

调用

lambda_function.rb

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

def lambda_handler(event:, context:)
  @@short_sleep = 1 # just for these viewing and debugging purposes :)
  Capybara.app_host = 'https://google.com'
  RSpec::Core::Runner.run(['spec/google_spec.rb']) #, $stderr, $stdout)
end

使用规范:

spec/google_spec.rb

describe 'Visi Websites', type: :feature do
  it 'can visit google' do
    visit '/'
    expect(page).to have_css('div')
    sleep @@short_sleep
  end
  it 'can visit gogole/forms' do
    visit '/forms'
    expect(page).to have_css('div')
    sleep @@short_sleep
  end
end

这个 运行s 在本地,但是当我将代码捆绑到 vendor/ 并将其全部压缩时,将其上传到 lambda(由于依赖项的大小 > 50k,通过 S3 存储桶*)并尝试 运行 它在 aws mgtmt 控制台中我在 webdrivers 中得到一个错误:

我也许可以避免使用无服务器和其他方法,但我在学习时试图保持简单和低级,没有依赖和辅助。当然在合理范围内。没有箍。

宝石文件

用于测试时的本地捆绑,与(我认为)上传的代码无关,因为我将其捆绑到 /vendor 并将其全部压缩(因此体积较大,需要通过 s3 存储桶加载)

source 'http://rubygems.org'

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

您似乎正尝试 运行 在 Lambda 环境中进行基于 GUI 的测试。 Lambda 无权访问显示设备。您应该尝试在 headless 模式下 运行 您的测试用例。