Module: WebTest::BeFast
- Defined in:
- lib/web_test/be_fast.rb
Defined Under Namespace
Classes: TestResult
Class Method Summary collapse
Class Method Details
.page_speed(url:) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/web_test/be_fast.rb', line 34 def self.page_speed(url:) url_param = CGI.escape(WebTest::Util.make_url(url)) key = ENV['WEBSERVICE_MATCHER_INSIGHTS_KEY'] if key.nil? raise 'be_fast requires the WEBSERVICE_MATCHER_INSIGHTS_KEY '\ 'environment variable to be set to a Google PageSpeed '\ 'Insights API key.' end endpoint = 'https://www.googleapis.com/pagespeedonline/v2/runPagespeed' api_url = "#{endpoint}?url=#{url_param}&screenshot=false&key=#{key}" parse json: Faraday.get(api_url).body end |
.parse(json:) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/web_test/be_fast.rb', line 47 def self.parse(json:) raw_response = JSON.parse(json) unless raw_response.key?('ruleGroups') raise "Couldn't parse the PageSpeed raw_response: #{raw_response.inspect}" end score = raw_response.fetch('ruleGroups').fetch('SPEED').fetch('score') { score: score, raw_response: raw_response } end |
.test(url:) ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/web_test/be_fast.rb', line 24 def self.test(url:) response = page_speed(url: url) TestResult.new do |r| r.score = response.fetch(:score) r.success = r.score >= 85 r.response = response[:raw_response] end end |