1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
6 from telemetry
.page
import page_test
7 from telemetry
.page
import page_test
8 from telemetry
.value
import scalar
11 class Screenshot(page_test
.PageTest
):
13 super(Screenshot
, self
).__init
__(
14 action_name_to_run
= 'RunPrepareForScreenshot',
15 is_action_name_to_run_optional
=True)
18 def AddCommandLineArgs(cls
, parser
):
19 parser
.add_option('--png-outdir',
20 help='Output directory for the PNG files')
23 def ProcessCommandLineArgs(cls
, parser
, args
):
24 if not args
.png_outdir
:
25 parser
.error('Please specify --png-outdir')
26 cls
._png
_outdir
= args
.png_outdir
28 def ValidateAndMeasurePage(self
, page
, tab
, results
):
29 if not tab
.screenshot_supported
:
30 raise page_test
.TestNotSupportedOnPlatformFailure(
31 'Browser does not support screenshotting')
33 tab
.WaitForDocumentReadyStateToBeComplete()
34 screenshot
= tab
.Screenshot(60)
36 outpath
= os
.path
.abspath(
37 os
.path
.join(self
._png
_outdir
, page
.file_safe_name
)) + '.png'
39 if os
.path
.exists(outpath
):
40 previous_mtime
= os
.path
.getmtime(outpath
)
44 screenshot
.WritePngFile(outpath
)
46 saved_picture_count
= 0
47 if os
.path
.exists(outpath
) and os
.path
.getmtime(outpath
) > previous_mtime
:
48 saved_picture_count
= 1
49 results
.AddValue(scalar
.ScalarValue(
50 results
.current_page
, 'saved_picture_count', 'count',