blob: 1459bcecea642d258c154ba6f64b33efa10e9f4b [file] [log] [blame]
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import os
from telemetry.page import page_measurement
from telemetry.page import page_test
class Screenshot(page_measurement.PageMeasurement):
def __init__(self):
super(Screenshot, self).__init__(
action_name_to_run = 'RunPrepareForScreenshot',
is_action_name_to_run_optional=True)
@classmethod
def AddCommandLineArgs(cls, parser):
parser.add_option('--png-outdir',
help='Output directory for the PNG files')
@classmethod
def ProcessCommandLineArgs(cls, parser, args):
if not args.png_outdir:
parser.error('Please specify --png-outdir')
cls._png_outdir = args.png_outdir
def MeasurePage(self, page, tab, results):
if not tab.screenshot_supported:
raise page_test.TestNotSupportedOnPlatformFailure(
'Browser does not support screenshotting')
tab.WaitForDocumentReadyStateToBeComplete()
screenshot = tab.Screenshot(60)
outpath = os.path.abspath(
os.path.join(self._png_outdir, page.file_safe_name)) + '.png'
if os.path.exists(outpath):
previous_mtime = os.path.getmtime(outpath)
else:
previous_mtime = -1
screenshot.WritePngFile(outpath)
saved_picture_count = 0
if os.path.exists(outpath) and os.path.getmtime(outpath) > previous_mtime:
saved_picture_count = 1
results.Add('saved_picture_count', 'count', saved_picture_count)