behat/mink

Browser controller/emulator abstraction for PHP

Maintainers

👁 Stof
👁 everzet

Package info

github.com/minkphp/Mink

Homepage

pkg:composer/behat/mink

Statistics

Installs: 89 618 558

Dependents: 687

Suggesters: 5

Stars: 1 611

Open Issues: 76

v1.13.0 2025-11-22 12:18 UTC

Requires

Requires (Dev)

Suggests

Provides

None

Conflicts

None

Replaces

None

MIT 9b08f62937c173affe070c04bb072d7ea1db1be5

testingbrowserweb


README

👁 Latest Stable Version
👁 Latest Unstable Version
👁 Total Downloads
👁 CI
👁 License

Useful Links

Usage Example

<?php

use Behat\Mink\Mink,
 Behat\Mink\Session,
 Behat\Mink\Driver\GoutteDriver,
 Behat\Mink\Driver\Goutte\Client as GoutteClient;

$startUrl = 'http://example.com';

// init Mink and register sessions
$mink = new Mink(array(
 'goutte1' => new Session(new GoutteDriver(new GoutteClient())),
 'goutte2' => new Session(new GoutteDriver(new GoutteClient())),
 'custom' => new Session(new MyCustomDriver($startUrl))
));

// set the default session name
$mink->setDefaultSessionName('goutte2');

// visit a page
$mink->getSession()->visit($startUrl);

// call to getSession() without argument will always return a default session if has one (goutte2 here)
$mink->getSession()->getPage()->findLink('Downloads')->click();
echo $mink->getSession()->getPage()->getContent();

// call to getSession() with argument will return session by its name
$mink->getSession('custom')->getPage()->findLink('Downloads')->click();
echo $mink->getSession('custom')->getPage()->getContent();

// this all is done to make possible mixing sessions
$mink->getSession('goutte1')->getPage()->findLink('Chat')->click();
$mink->getSession('goutte2')->getPage()->findLink('Chat')->click();

Install Dependencies

$> curl -sS https://getcomposer.org/installer | php
$> php composer.phar install

Contributors