getting-started/bookshelf/spec/e2e_spec_helper.rb (60 lines of code) (raw):

# Copyright 2019 Google LLC. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. require "spec_helper" require "capybara/cuprite" # use the cuprite (qmake) driver for the test Capybara.current_driver = :cuprite Capybara.server = :webrick RSpec.configure do |config| config.after :suite do if E2E.url? and ENV["E2E_URL"].nil? E2E.cleanup end end end class E2E @@sample_dir = "" class << self attr_accessor :sample_dir def url? not @url.nil? end def url deploy @url end def deploy if url? || @url = ENV["E2E_URL"] return end build_id = ENV["BUILD_ID"] || "test" version = "#{@sample_dir}-#{build_id}" # read in our credentials file project_id = ENV["GOOGLE_CLOUD_PROJECT"]; # deploy this sample to gcloud # try 3 times in case of intermittent deploy error for attempt in 0..3 exec "gcloud app deploy --version=#{version} -q --no-promote" break if $?.to_i == 0 end # if status is not 0, we tried 3 times and failed if $?.to_i != 0 puts "Failed to deploy to gcloud" return $?.to_i end # sleeping 1 to ensure URL is callable sleep 1 # run the specs for the step, but use the remote URL @url = "https://#{version}-dot-#{project_id}.appspot.com" # return 0, no errors return 0 end def cleanup() # determine build number version = @url.match(/https:\/\/(.+)-dot-(.+)\.appspot\.com/) unless version puts "you must pass a build ID or define ENV[\"BUILD_ID\"]" return 1 end # run gcloud command exec "gcloud app versions delete #{version[1]} -q" # return the result of the gcloud delete command if $?.to_i != 0 puts "Failed to delete e2e version" return $?.to_i end # return 0, no errors return 0 end def exec(cmd) puts "> #{cmd}" puts `#{cmd}` end end end