| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Automate Chromium, Firefox, and WebKit from PHP for browser testing, scraping, screenshots, and other browser-driven workflows.
Requirements:
Add the library to your project:
composer require --dev playwright-php/playwrightInstall the Playwright browsers (Chromium, Firefox, WebKit):
# Run after composer install in your application or in this repository
vendor/bin/playwright-install --browsers
# On fresh machines/CI where you need Playwright's OS dependencies too
vendor/bin/playwright-install --with-deps
# Preview commands without changes
vendor/bin/playwright-install --dry-run --with-depsFor advanced install options (including browser cache location), see the Getting Started guide.
Open a page and print its title:
<?php
require __DIR__.'/vendor/autoload.php';
use Playwright\Playwright;
$context = Playwright::chromium(['headless' => true]);
$page = $context->newPage();
$page->goto('https://example.com');
echo $page->title().PHP_EOL; // Example Domain
$context->close();$context = Playwright::webkit([
'headless' => false,
'slowMo' => 200,
'args' => ['--no-sandbox'],
// 'context' => [ ... context options ... ],
]);Create pages, navigate, evaluate scripts, and take screenshots:
$page = $context->newPage();
$page->goto('https://example.com');
$html = $page->content();
$title = $page->title();
$path = $page->screenshot(__DIR__.'/screenshot.png');$button = $page->locator('text=Sign in');
$button->click();
$username = $page->locator('#username');
$username->fill('alice@example.com');
$password = $page->locator('#password');
$password->fill('s3cret');
$password->press('Enter');$context->storageState(__DIR__.'/state.json');
// Later in another process
$ctx = Playwright::chromium([
'context' => ['storageState' => __DIR__.'/state.json'],
]);The package provides a testing trait and fluent expect() assertions to write robust E2E tests.
Requirements: PHPUnit 10.0 or higher is required to use the PlaywrightTestCaseTrait.
Minimal example:
<?php
use PHPUnit\Framework\TestCase;
use Playwright\Testing\PlaywrightTestCaseTrait;
final class HomePageTest extends TestCase
{
use PlaywrightTestCaseTrait;
protected function setUp(): void
{
parent::setUp();
$this->setUpPlaywright();
}
protected function tearDown(): void
{
$this->tearDownPlaywright();
parent::tearDown();
}
public function test_title_is_correct(): void
{
$this->page->goto('https://example.com');
$this->expect($this->page)->toHaveTitle('Example Domain');
}
}Notes:
Example workflow snippet:
jobs:
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: composer install --no-interaction --prefer-dist
# Install browsers for Playwright PHP
- run: vendor/bin/playwright-install --with-deps
- run: vendor/bin/phpunit --colors=alwaysTips:
Include tests for behavior changes and update documentation or examples when their public behavior changes. Set up the repository with:
composer install # installs PHP deps and the bundled Playwright server
bin/playwright-install --with-deps # downloads browsers + optional system deps
make ci # runs code style, static analysis, and testsSee docs/contributing/testing.md for more details on the local workflow.
This package is released by the Playwright PHP project under the MIT License. See the LICENSE file for details.
| Back | FazBrowse Home | New Git URL |