From c4cb804daf4eddd82d352b6b95d61a1a68a91f35 Mon Sep 17 00:00:00 2001 From: xjm Date: Wed, 27 Jul 2016 16:47:58 -0500 Subject: [PATCH] Issue #2702661 by alexpott, nevergone, GoZ, jibran, dawehner, xjm, hgoto, droplet: Make it simple to take screenshots whilst using JavascriptTestBase --- .../BrowserWithJavascriptTest.php | 9 +++++++ .../JavascriptTestBase.php | 24 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/core/modules/simpletest/tests/src/FunctionalJavascript/BrowserWithJavascriptTest.php b/core/modules/simpletest/tests/src/FunctionalJavascript/BrowserWithJavascriptTest.php index 572a842f5b..24397990e0 100644 --- a/core/modules/simpletest/tests/src/FunctionalJavascript/BrowserWithJavascriptTest.php +++ b/core/modules/simpletest/tests/src/FunctionalJavascript/BrowserWithJavascriptTest.php @@ -53,4 +53,13 @@ public function testAssertJsCondition() { $this->assertJsCondition($javascript, 100); } + /** + * Tests creating screenshots. + */ + public function testCreateScreenshot() { + $this->drupalGet(''); + $this->createScreenshot('public://screenshot.jpg'); + $this->assertFileExists('public://screenshot.jpg'); + } + } diff --git a/core/tests/Drupal/FunctionalJavascriptTests/JavascriptTestBase.php b/core/tests/Drupal/FunctionalJavascriptTests/JavascriptTestBase.php index 116bd32563..eea62d1e20 100644 --- a/core/tests/Drupal/FunctionalJavascriptTests/JavascriptTestBase.php +++ b/core/tests/Drupal/FunctionalJavascriptTests/JavascriptTestBase.php @@ -102,6 +102,30 @@ protected function assertJsCondition($condition, $timeout = 1000, $message = '') $this->assertTrue($result, $message); } + /** + * Creates a screenshot. + * + * @param string $filename + * The file name of the resulting screenshot. If using the default phantomjs + * driver then this should be a JPG filename. + * @param bool $set_background_color + * (optional) By default this method will set the background color to white. + * Set to FALSE to override this behaviour. + * + * @throws \Behat\Mink\Exception\UnsupportedDriverActionException + * When operation not supported by the driver. + * @throws \Behat\Mink\Exception\DriverException + * When the operation cannot be done. + */ + protected function createScreenshot($filename, $set_background_color = TRUE) { + $session = $this->getSession(); + if ($set_background_color) { + $session->executeScript("document.body.style.backgroundColor = 'white';"); + } + $image = $session->getScreenshot(); + file_put_contents($filename, $image); + } + /** * {@inheritdoc} */ -- GitLab