Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Browser Laravel Package

zenstruck/browser

A Laravel-friendly browser testing toolkit built on Symfony BrowserKit and Panther. Easily crawl pages, click links, submit forms, assert on HTML, and drive real headless browsers—great for end-to-end tests and fluent, expressive UI assertions.

View on GitHub
Deep Wiki
Context7
v1.10.0

9d7dbe9 chore: support Symfony 8 (#184) by @nikophil, @kbond 1831b54 fix: Remove deprecated ReflectionProperty::setAccessible() (#187) by @deluxetom 5105bdb fix: resolve false positive on jsonMatches (#179) by @flohw 8a59547 doc: fix PHP syntax in README.md on use functions (#170) by @welcoMattic

Full Change List

v1.9.1

53bbc83 minor: unpack Foundry 2 proxies (#160) by @kbond

Full Change List

v1.9.0

6175462 feat: add BROWSER_ALWAYS_START_WEBSERVER env var (#156) by @kbond d3a52e9 feat: deprecate foundry integration (#154) by @kbond 3b4d4a4 minor: fix tests (#154) by @kbond d90bad9 minor: sca (#154) by @kbond

Full Change List

v1.8.1

d933d4e minor: set KernelBrowser:: protected (#146) by @nikophil c1add1b fix: deprecation warning from PHPUnit (#145) by @Chris53897, @Chris8934 66188ad chore: update ci (#144) by @kbond

Full Change List

v1.8.0

f7ac67a feat: Allow selectFieldOptions to deselect all values (#143) by @kbond, @notFloran 4ad6074 doc: Fix typo in readme (#140) by @t-richard fbdc2cd minor: add "dev" to composer.json tags by @kbond 7144c6a fix: Complex test name normalization (#139) by @flohw

Full Change List

v1.7.0

89c1112 feat: phpunit 10 support (#137) by @raneomik, marek 7de7c02 fix: asserting json->decoded() on zeros (#136) by @norkunas

Full Change List

v1.6.0

41af33b feat: support Symfony 7.0 (#134) by @kbond

Full Change List

v1.5.0

ec27abb fix: preserving dots in query string (#132) by @norkunas 7b8a982 minor: allow Symfony 7.0 (#130) by @kbond 9b4887d minor(ci): remove php version from fixcs job by @kbond 2e738a6 feat: Allow to use Psr\Container\ContainerInterface in ->use callback (#129) by @norkunas 48bb602 feat: Enable overriding of HTTP methods (#126) by @nathan-de-pachtere 45cc396 fix(tests): deprecations (#123) by @kbond

Full Change List

v1.4.0

a99150a doc: document BROWSER_SOURCE_DEBUG by @kbond d64b773 feat: add KernelBrowser::assertContentType() and prevent saving corrupt files (#121) by @welcoMattic

Full Change List

v1.3.0

25c5ea5 fix(tests): deprecation (#119) by @kbond ab4b548 fix(ci): don't run fixcs/sync-with-template on forks (#119) by @kbond d03de6a fix: enable attaching \SplFileInfo objects (#119) by @kbond 90e99fc feat: require php 8+ (#117) by @kbond f4596c8 fix: Json::assertMissing/assertHas better handle empty-ish values (#116) by @flohw 0173c11 fix(ci): add token by @kbond ea600b7 chore(ci): fix by @kbond 3fe911f chore: update ci config (#114) by @kbond 9f6024a fix: tests (#113) by @kbond 301e072 [minor] adjust sca (#111) by @kbond b5f7b4a [minor] adjust Browser::content() and add test (#111) by @kbond 29fbc93 [minor] cs fixes (#111) by @kbond 51bb8b1 [feature] Add Browser::content() to fetch the raw response body (#109) by @benr77

Full Change List

v1.2.0

0b61a6a [doc] document assertMatchesSchema() (#106) by @nikophil 29171b7 [feature] add Json::assertMatchesSchema() (#102) by @nikophil 1466827 [feature] add doubleClick and rightClick to PantherBrowser (#104) by @Chris53897, @kbond fc51e88 [minor] update phpstan baseline (#105) by @Chris53897 adf645f [minor] migrate phpunit config-file to version 9 (#103) by @Chris53897 ea84ec6 [feature] Assert that an header is not present (#98) by @nitneuk 157ce84 [minor] locally cache decoded json (#95) by @kbond c860ff9 [doc] add note/link to full zenstruck/assert expectation API (#95) by @kbond 0f88a45 [minor] cs fixes (#95) by @kbond cd3cce3 [doc] Fix typo in example AppBrowser use statement (#94) by @jwage 3858d04 [minor] small adjustments by @kbond 90393a9 [feature] add Json::assertHas()/assertMissing()/assertThat()/assertThatEach() (#92) by @nikophil 7efe89e [doc] document accessing Crawler instance by @kbond 53257c7 [minor] add Symfony 6.1 to build matrix (#90) by @kbond 954b858 [minor] document and help with some auth edge cases (#89) by @kbond 00aea30 [minor] disable profile collection by default in tests (#89) by @kbond 6f4a162 [minor] refactor tests (#89) by @kbond

Full Change List

v1.1.0

582d70f [feature] add authentication assertions to KernelBrowser (#84) by @kbond d30d5d6 [doc] Readme: remove $ to allow github copy/paste of the command (#87) by @staabm acc0129 [minor] Browser::saveCurrentState() as "real" html (#86) by @kbond 6f420ae [bug] fix debugging source when exception is detected (#88) by @kbond

Full Change List

v1.0.0

bd199f9 [doc] review documentation by @kbond 1303936 [doc] add --dev to composer require mtdowling/jmespath.php notes by @kbond 590b50e [doc] add note about escaping special characters with jmespath by @kbond 614815e [minor] fix deprecation by @kbond

Full Change List

v0.11.0

2afbcca [feature] fail if trying to manipulate an "exception" page (#81) by @kbond 8989fca [feature] add KernelBrowser::clickAndIntercept() (#82) by @kbond da4a6e4 [feature] add BROWSER_FOLLOW_REDIRECTS/CATCH_EXCEPTIONS env vars (#79) by @kbond acefe9d [doc] remove reference to PantherBrowser::inspect() by @kbond 93b677b [minor] remove deprecation layers by @kbond f051372 [feature] add KernelBrowser::expectException() (#78) by @kbond 888c736 [bug] ensure all requests are piped through session (#78) by @kbond 80d55a8 [minor] refactor internals (#75) by @kbond be748fe [minor] remove Dom/Interactive extensions (#75) by @kbond e34c1bf [BC BREAK] rename PantherBrowser::inspect() to pause() (#75) by @kbond 7ee81a0 [feature] add content type/json helpers (#75) by @kbond 6d337f8 [minor] improve HasBrowser error handling (#75) by @kbond 714437f [minor] add symfony version to gh job name (#75) by @kbond e2acba9 [feature] add ability to "use" the "inner" browser (#75) by @kbond 2451f54 [BC BREAK] remove Response system (#75) by @kbond 400277f [minor] remove BrowserKitBrowser, add Browser::client() (#75) by @kbond cf75454 [minor] move Browser DOM/interactive methods to extensions (#75) by @kbond 8122f29 [minor] upgrade dbrekelmans/bdi (#75) by @kbond bfb0bab [BC BREAK] remove Browser::follow() - use Browser::click() (#75) by @kbond 31fbd04 [feature] add zenstruck/foundry integration (#75) by @kbond 2c4d97a [minor] adjust phpstan-baseline (#75) by @kbond e2d535d [BC BREAK] remove "demo" Authentication extension (#75) by @kbond 31ffc41 [minor] move mtdowling/jmespath.php to require-dev (#75) by @kbond 284f43b [BC BREAK] remove HttpBrowser (#75) by @kbond

Full Change List

v0.10.0

baaa970 [minor] drop scrutinizer (#74) by @kbond 529fe04 [minor] require Symfony 5.4+ (#74) by @kbond aeab194 [minor] fix phpstan (#74) by @kbond 4351585 [feature] add ability to "use" profile data collectors (#74) by @kbond 6f5c0a3 [feature] add ability to "use" CookieJar (#74) by @kbond 3c16d6e [feature] Add BrowserKitBrowser::patch() (#72) by @KDederichs d1dbfdb [minor] add static code analysis with phpstan (#69) by @kbond

Full Change List

v0.9.2

c976a53 [bug] Normalized test name matches int and string indexed data provider (#68) by @flohw

Full Change List

v0.9.1

aec83f9 [minor] allow panther 2 by @kbond

Full Change List

v0.9.0

b153787 [feature] add Symfony 6 support (#64) by @kbond a4b8389 [doc] adjust HasBrowser example (ref: #63) by @kbond

Full Change List

v0.8.1

05736e9 [minor] allow setting server parameters to kernel browser by @kbond 9bce254 [ci] use reusable workflows (#61) by @kbond

Full Change List

v0.8.0

d555ce8 [feature] allow Browser::click() to work with css selectors (#60) by @Nyholm db95a42 [minor] add Symfony 5.4 to CI matrix (#58) by @kbond 7d322e6 [minor] use zenstruck/assert for assertions instead of phpunit (#49) by @kbond

Full Change List

v0.7.1
  • bff29aa [bug] fix clicking button with no "type" (Kevin Bond)
  • d747a5d [minor] disable dev ci (Kevin Bond)
  • b4deec0 [bug] fix form submission regression (closes #55) (Kevin Bond)
v0.7.0
  • 34b55fa [feature] add ability to attach multiple files (#53) (Kevin Bond)
  • 4739145 [minor] add test for submitting form with different submit button values (#54) (Kevin Bond)
  • 12c6d5c [feature] add ability to "use" dom crawler (#50) (Kevin Bond)
v0.6.0
  • 50798f7 [feature] add Browser::selectField() as an alias for... (#48) (Kevin Bond)
  • 50798f7 [bug] allow Browser::checkField() to work with radios (#48) (Kevin Bond)
  • 2b63095 [bug] fix HttpOptions query/parameters (#45) (Kevin Bond)
v0.5.2
  • ecbb08b [bug] allow custom json/ajax headers for HttpOptions (#44) (Kevin Bond)
  • 05110a1 [doc] Fix: Typo (#43) (Oskar Stark)
v0.5.1
  • d765024 [minor] prevent attaching file that doesn't exist (#42) (Oskar Stark)
  • 91d62d3 [minor] Xml/HtmlResponse::dump($selector) now dumps outer html (#40) (Kevin Bond)
  • 8aa29da [minor] disable codecov pr annotations (Kevin Bond)
v0.5.0
  • 038ee12 [bug] use response crawler for dumping elements (Kevin Bond)
  • 256c9be [feature] add ability to "use" response (Kevin Bond)
  • 5d36412 [feature] make Browser::response() public (Kevin Bond)
  • 9351c6e [bug] mark failing tests as incomplete for later fix (Kevin Bond)
  • ffea153 [bug] fix getting the title html tag in PantherBrowser (Kevin Bond)
  • cab7a34 [bug] return null for JsonResponse::json() if content is empty (Kevin Bond)
  • a82ed99 [feature] assertJson improvements: (Kevin Bond)
  • 496aa54 [minor] add Symfony 5.3/5.4-dev to CI test matrix (#36) (Kevin Bond)
  • 346305a [minor] update php-cs-fixer to v3 (Kevin Bond)
  • e3ed8a4 [minor] fix symfony 5.3 deprecation (Kevin Bond)
  • a4bd32a [minor] fix symfony 5.3 deprecation (Kevin Bond)
  • 22da239 [minor] lock php-cs-fixer due to bug (Kevin Bond)
  • 91ad135 [minor] adjust codecov threshold (Kevin Bond)
v0.4.0
  • a3460a5 Revert most of "[feature] Split HasBrowser trait (#23)" (#32) (Wouter J)
  • 4b8d902 [minor] remove internal flag from BrowserKitBrowser::inner() (Kevin Bond)
v0.3.0
  • e5d4a58 [minor] make HasBrowser::browser() protected (Kevin Bond)
  • df4430d [BC BREAK] Split HasBrowser trait (#23) (Wouter J)
  • ff32f91 [minor] remove Browser::create() (Kevin Bond)
  • 27e6f4c [minor] test to ensure response headers/status dumped (Kevin Bond)
  • 417c10b [minor] add XmlResponse (#26) (Kevin Bond)
  • 3891204 [minor] remove mailer component/extension (#25) (Kevin Bond)
  • c24db9b [minor] add missing test coverage (Kevin Bond)
  • 6c9c071 [minor] remove unused method (Kevin Bond)
  • a80d34a [minor] mark api final/internal as much as possible (Kevin Bond)
  • 79e8130 [minor] allow passing of options to test browser factories (Kevin Bond)
  • 5606a08 [minor] upgrade to panther 1.0 (Kevin Bond)
  • 6442b09 [minor] use php-cs-fixer tool from shivammathur/setup-php (Kevin Bond)
  • 0e5f6ec [minor] fix cs (Kevin Bond)
v0.2.0
  • 785ca48 [minor] bump zenstruck/callback min version requirement (Kevin Bond)
  • b3950b6 [minor] replace FunctionExecutor with zenstruck/callback (Kevin Bond)
  • e1df6a9 [feature] ensure intercepting redirects when asserting redirected (Kevin Bond)
  • 90cd98c [BC BREAK] rename "parameters" to "query" in HttpOptions (closes #19) (Kevin Bond)
  • 14afbb4 [minor] remove ProfileAware (Kevin Bond)
  • 027f7f9 [BC BREAK] change HttpOptions namespace (Kevin Bond)
  • 8d02b43 [minor] merge core "extensions" into browsers (Kevin Bond)
v0.1.0
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport