1
0

Directly converts screenshot to jpeg

This commit is contained in:
Richard Dern 2024-04-17 14:49:46 +02:00
parent 60fe1a61dc
commit a696409927

View File

@ -11,6 +11,7 @@
use Facebook\WebDriver\Remote\RemoteWebDriver; use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\WebDriverBy; use Facebook\WebDriver\WebDriverBy;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Intervention\Image\Laravel\Facades\Image;
use Laravel\Dusk\Browser as DuskBrowser; use Laravel\Dusk\Browser as DuskBrowser;
use Laravel\Dusk\Chrome\SupportsChrome; use Laravel\Dusk\Chrome\SupportsChrome;
use Laravel\Dusk\Concerns\ProvidesBrowser; use Laravel\Dusk\Concerns\ProvidesBrowser;
@ -74,18 +75,24 @@ public function dataname()
} }
/** /**
* Return screenshot content as a PNG resource * Return screenshot content as a jpg resource
*/ */
public function getScreenshot() public function getScreenshot()
{ {
return $this->screenshot; return $this->screenshot;
} }
/**
* Return page title
*/
public function getTitle() public function getTitle()
{ {
return $this->title; return $this->title;
} }
/**
* Return page description, if any is found
*/
public function getDescription() public function getDescription()
{ {
return $this->description; return $this->description;
@ -144,7 +151,7 @@ private function handleNavigation(DuskBrowser $browser)
->visit($this->url) ->visit($this->url)
->pause(1000); ->pause(1000);
$this->screenshot = $browser->driver->takeScreenshot(); $this->screenshot = $this->takeScreenshot($browser);
$this->title = $browser->driver->getTitle(); $this->title = $browser->driver->getTitle();
$this->description = $this->findDescription($browser); $this->description = $this->findDescription($browser);
@ -163,4 +170,14 @@ private function findDescription(DuskBrowser $browser)
return $description; return $description;
} }
private function takeScreenshot(DuskBrowser $browser)
{
$contents = $browser->driver->takeScreenshot();
$image = Image::read($contents);
$this->screenshot = $image->toJpeg();
return $this->screenshot;
}
} }