Debug message when pasting text
All checks were successful
Push image to registry / build-image (push) Successful in 4m46s

This commit is contained in:
2025-06-08 10:20:56 +02:00
parent 35327d7e14
commit c3941b5e33

View File

@ -5,6 +5,7 @@ namespace App\Browser;
use App\Models\Job;
use App\Models\JobArtifact;
use App\Models\JobRun;
use App\Notification\Notifications\JobDebugNotification;
use App\Notification\Notifications\JobErrorNotification;
use App\Notification\Providers\AllNotification;
use Closure;
@ -22,6 +23,7 @@ use Illuminate\Queue\SerializesModels;
use Laravel\Dusk\Browser;
use Laravel\Dusk\Chrome\SupportsChrome;
use Laravel\Dusk\Concerns\ProvidesBrowser;
use Log;
use PHPUnit\Framework\Attributes\BeforeClass;
use Throwable;
@ -333,19 +335,26 @@ abstract class BrowserJob implements ShouldQueue
*/
public function pasteText(Browser $browser, string $text, string $querySelector): void
{
$text = $this->parseJavaScriptString($text);
$querySelector = $this->parseJavaScriptString($querySelector);
try {
$text = $this->parseJavaScriptString($text);
$querySelector = $this->parseJavaScriptString($querySelector);
$browser->script("
var el = document.querySelector('{$querySelector}'), text = '{$text}';
el.focus();
const dataTransfer = new DataTransfer();
dataTransfer.setData('text', text);
const event = new ClipboardEvent('paste', {
clipboardData: dataTransfer,
bubbles: true
});
el.dispatchEvent(event)
");
$browser->script("
var el = document.querySelector('{$querySelector}'), text = '{$text}';
el.focus();
const dataTransfer = new DataTransfer();
dataTransfer.setData('text', text);
const event = new ClipboardEvent('paste', {
clipboardData: dataTransfer,
bubbles: true
});
el.dispatchEvent(event)
");
} catch (Exception $e) {
$errorMessage = "Failed to paste text into element: {$querySelector} - " . $e->getMessage() . "\n With text: {$text}";
Log::error($errorMessage);
$browser->screenshot(JobDebugScreenshot::getFileName($this->jobId));
AllNotification::send(new JobDebugNotification($this->jobId, $errorMessage));
}
}
}