| // Copyright 2019 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| (async function(testRunner) { |
| let {page, session, dp} = await testRunner.startWithFrameControl( |
| 'Tests that animating layer transparency produces correct pixels'); |
| |
| await dp.Runtime.enable(); |
| await dp.HeadlessExperimental.enable(); |
| |
| let RendererTestHelper = |
| await testRunner.loadScript('../helpers/renderer-test-helper.js'); |
| let {httpInterceptor, frameNavigationHelper, virtualTimeController} = |
| await (new RendererTestHelper(testRunner, dp, page)).init(); |
| |
| // Animate the opacity of the div from 0 to 1 after a 1s delay. |
| httpInterceptor.addResponse(`http://example.com/`, `<style> |
| body { margin: 0 } |
| div { |
| animation-delay: 1s; |
| opacity: 0; |
| animation-name: animation; |
| animation-fill-mode: forwards; |
| animation-duration: 1s; |
| background-color: green; |
| width: 100vw; |
| height: 100vh; |
| } |
| @keyframes animation { |
| 0% { opacity: 1; } |
| 100% { opacity: 1; } |
| } |
| </style> |
| <div></div>`); |
| |
| await virtualTimeController.initialize(100); |
| await frameNavigationHelper.navigate('http://example.com/'); |
| // Give page 500ms before capturing first screenshot. The screenshot |
| // should fall into animamtion-delay interval, so no animation effects |
| // should be present and the point should be white. |
| await virtualTimeController.grantTime(500); |
| const ctx = await virtualTimeController.captureScreenshot(); |
| let rgba = ctx.getImageData(25, 25, 1, 1).data; |
| testRunner.log(`rgba @(25,25) before animaion started: ${rgba}`); |
| // After additional 550ms, the animation should have started and the test |
| // point should be green. |
| await virtualTimeController.grantTime(550); |
| const ctx2 = await virtualTimeController.captureScreenshot(); |
| rgba = ctx2.getImageData(25, 25, 1, 1).data; |
| testRunner.log(`rgba @(25,25) after animation started: ${rgba}`); |
| testRunner.completeTest(); |
| }) |