Add PHP CS Fixer and PHPStan max to CI; remove abandoned GoutteFactory
- Add friendsofphp/php-cs-fixer ^3.75 and phpstan/phpstan ^2.0 to require-dev; add .php-cs-fixer.dist.php (@Symfony ruleset with phpdoc_to_comment ignored_tags) and phpstan.neon (level max, treatPhpDocTypesAsCertain: false) - Run CS Fixer and PHPStan in every CI matrix job alongside tests - Add composer scripts: cs, cs-check, phpstan - Add .php-cs-fixer.cache to .gitignore - Fix all PHPStan max violations across src/: add return/param types, narrow mixed config values with is_string()/is_array() guards, use TaggedNodeInterface for scenario tag access in SessionsListener - Remove GoutteFactory and its spec — the goutte driver and its underlying client library are abandoned Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -9,25 +9,25 @@ use PhpSpec\ObjectBehavior;
|
||||
|
||||
class MinkAwareInitializerSpec extends ObjectBehavior
|
||||
{
|
||||
function let(Mink $mink)
|
||||
public function let(Mink $mink)
|
||||
{
|
||||
$this->beConstructedWith($mink, array('base_url' => 'foo'));
|
||||
$this->beConstructedWith($mink, ['base_url' => 'foo']);
|
||||
}
|
||||
|
||||
function it_is_a_context_initializer()
|
||||
public function it_is_a_context_initializer()
|
||||
{
|
||||
$this->shouldHaveType('Behat\Behat\Context\Initializer\ContextInitializer');
|
||||
}
|
||||
|
||||
function it_does_nothing_for_basic_contexts(Context $context)
|
||||
public function it_does_nothing_for_basic_contexts(Context $context)
|
||||
{
|
||||
$this->initializeContext($context);
|
||||
}
|
||||
|
||||
function it_injects_mink_and_parameters_in_mink_aware_contexts(MinkAwareContext $context, $mink)
|
||||
public function it_injects_mink_and_parameters_in_mink_aware_contexts(MinkAwareContext $context, $mink)
|
||||
{
|
||||
$context->setMink($mink)->shouldBeCalled();
|
||||
$context->setMinkParameters(array('base_url' => 'foo'))->shouldBeCalled();
|
||||
$context->setMinkParameters(['base_url' => 'foo'])->shouldBeCalled();
|
||||
$this->initializeContext($context);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,9 +13,9 @@ use PhpSpec\ObjectBehavior;
|
||||
|
||||
class SessionsListenerSpec extends ObjectBehavior
|
||||
{
|
||||
function let(Mink $mink, ScenarioTested $event, FeatureNode $feature, ScenarioNode $scenario, Suite $suite)
|
||||
public function let(Mink $mink, ScenarioTested $event, FeatureNode $feature, ScenarioNode $scenario, Suite $suite)
|
||||
{
|
||||
$this->beConstructedWith($mink, 'goutte', 'selenium2', array('selenium2', 'sahi'));
|
||||
$this->beConstructedWith($mink, 'goutte', 'selenium2', ['selenium2', 'sahi']);
|
||||
|
||||
$event->getSuite()->willReturn($suite);
|
||||
$event->getFeature()->willReturn($feature);
|
||||
@@ -25,17 +25,17 @@ class SessionsListenerSpec extends ObjectBehavior
|
||||
$suite->getName()->willReturn('default');
|
||||
|
||||
$feature->hasTag('insulated')->willReturn(false);
|
||||
$feature->getTags()->willReturn(array());
|
||||
$feature->getTags()->willReturn([]);
|
||||
$scenario->hasTag('insulated')->willReturn(false);
|
||||
$scenario->getTags()->willReturn(array());
|
||||
$scenario->getTags()->willReturn([]);
|
||||
}
|
||||
|
||||
function it_is_an_event_subscriber()
|
||||
public function it_is_an_event_subscriber()
|
||||
{
|
||||
$this->shouldHaveType('Symfony\Component\EventDispatcher\EventSubscriberInterface');
|
||||
}
|
||||
|
||||
function it_resets_the_default_session_before_scenarios($event, $mink)
|
||||
public function it_resets_the_default_session_before_scenarios($event, $mink)
|
||||
{
|
||||
$mink->resetSessions()->shouldBeCalled();
|
||||
$mink->setDefaultSessionName('goutte')->shouldBeCalled();
|
||||
@@ -43,7 +43,7 @@ class SessionsListenerSpec extends ObjectBehavior
|
||||
$this->prepareDefaultMinkSession($event);
|
||||
}
|
||||
|
||||
function it_supports_changing_the_default_session_per_suite($event, $mink, $suite)
|
||||
public function it_supports_changing_the_default_session_per_suite($event, $mink, $suite)
|
||||
{
|
||||
$suite->hasSetting('mink_session')->willReturn(true);
|
||||
$suite->getSetting('mink_session')->willReturn('test');
|
||||
@@ -54,100 +54,100 @@ class SessionsListenerSpec extends ObjectBehavior
|
||||
$this->prepareDefaultMinkSession($event);
|
||||
}
|
||||
|
||||
function it_fails_for_non_string_default_suite_session($event, $suite)
|
||||
public function it_fails_for_non_string_default_suite_session($event, $suite)
|
||||
{
|
||||
$suite->hasSetting('mink_session')->willReturn(true);
|
||||
$suite->getSetting('mink_session')->willReturn(array());
|
||||
$suite->getSetting('mink_session')->willReturn([]);
|
||||
|
||||
$this->shouldThrow(new SuiteConfigurationException('`mink_session` setting of the "default" suite is expected to be a string, array given.', 'default'))
|
||||
->duringPrepareDefaultMinkSession($event);
|
||||
}
|
||||
|
||||
function it_switches_to_the_javascript_session_for_tagged_scenarios($event, $mink, $scenario, $suite)
|
||||
public function it_switches_to_the_javascript_session_for_tagged_scenarios($event, $mink, $scenario, $suite)
|
||||
{
|
||||
$suite->hasSetting('mink_javascript_session')->willReturn(false);
|
||||
$scenario->getTags()->willReturn(array('javascript'));
|
||||
$scenario->getTags()->willReturn(['javascript']);
|
||||
$mink->resetSessions()->shouldBeCalled();
|
||||
$mink->setDefaultSessionName('selenium2')->shouldBeCalled();
|
||||
|
||||
$this->prepareDefaultMinkSession($event);
|
||||
}
|
||||
|
||||
function it_switches_to_the_javascript_session_for_tagged_features($event, $mink, $feature, $suite)
|
||||
public function it_switches_to_the_javascript_session_for_tagged_features($event, $mink, $feature, $suite)
|
||||
{
|
||||
$suite->hasSetting('mink_javascript_session')->willReturn(false);
|
||||
$feature->getTags()->willReturn(array('javascript'));
|
||||
$feature->getTags()->willReturn(['javascript']);
|
||||
$mink->resetSessions()->shouldBeCalled();
|
||||
$mink->setDefaultSessionName('selenium2')->shouldBeCalled();
|
||||
|
||||
$this->prepareDefaultMinkSession($event);
|
||||
}
|
||||
|
||||
function it_supports_changing_the_default_javascript_session_per_suite($event, $mink, $scenario, $suite)
|
||||
public function it_supports_changing_the_default_javascript_session_per_suite($event, $mink, $scenario, $suite)
|
||||
{
|
||||
$suite->hasSetting('mink_javascript_session')->willReturn(true);
|
||||
$suite->getSetting('mink_javascript_session')->willReturn('sahi');
|
||||
|
||||
$scenario->getTags()->willReturn(array('javascript'));
|
||||
$scenario->getTags()->willReturn(['javascript']);
|
||||
$mink->resetSessions()->shouldBeCalled();
|
||||
$mink->setDefaultSessionName('sahi')->shouldBeCalled();
|
||||
|
||||
$this->prepareDefaultMinkSession($event);
|
||||
}
|
||||
|
||||
function it_fails_for_non_string_javascript_suite_session($event, $scenario, $suite)
|
||||
public function it_fails_for_non_string_javascript_suite_session($event, $scenario, $suite)
|
||||
{
|
||||
$suite->hasSetting('mink_javascript_session')->willReturn(true);
|
||||
$suite->getSetting('mink_javascript_session')->willReturn(array());
|
||||
$suite->getSetting('mink_javascript_session')->willReturn([]);
|
||||
|
||||
$scenario->getTags()->willReturn(array('javascript'));
|
||||
$scenario->getTags()->willReturn(['javascript']);
|
||||
|
||||
$this->shouldThrow(new SuiteConfigurationException('`mink_javascript_session` setting of the "default" suite is expected to be a string, array given.', 'default'))
|
||||
->duringPrepareDefaultMinkSession($event);
|
||||
}
|
||||
|
||||
function it_fails_for_invalid_javascript_suite_session($event, $scenario, $suite)
|
||||
public function it_fails_for_invalid_javascript_suite_session($event, $scenario, $suite)
|
||||
{
|
||||
$suite->hasSetting('mink_javascript_session')->willReturn(true);
|
||||
$suite->getSetting('mink_javascript_session')->willReturn('test');
|
||||
|
||||
$scenario->getTags()->willReturn(array('javascript'));
|
||||
$scenario->getTags()->willReturn(['javascript']);
|
||||
|
||||
$this->shouldThrow(new SuiteConfigurationException('`mink_javascript_session` setting of the "default" suite is not a javascript session. test given but expected one of selenium2, sahi.', 'default'))
|
||||
->duringPrepareDefaultMinkSession($event);
|
||||
}
|
||||
|
||||
function it_fails_when_the_javascript_session_is_used_but_not_defined($event, $mink, $feature, $suite)
|
||||
public function it_fails_when_the_javascript_session_is_used_but_not_defined($event, $mink, $feature, $suite)
|
||||
{
|
||||
$suite->hasSetting('mink_javascript_session')->willReturn(false);
|
||||
$this->beConstructedWith($mink, 'goutte', null);
|
||||
$feature->getTags()->willReturn(array('javascript'));
|
||||
$feature->getTags()->willReturn(['javascript']);
|
||||
|
||||
$this->shouldThrow(new ProcessingException('The @javascript tag cannot be used without enabling a javascript session'))
|
||||
->duringPrepareDefaultMinkSession($event);
|
||||
}
|
||||
|
||||
function it_switches_to_a_named_session($event, $mink, $scenario)
|
||||
public function it_switches_to_a_named_session($event, $mink, $scenario)
|
||||
{
|
||||
$scenario->getTags()->willReturn(array('mink:test'));
|
||||
$scenario->getTags()->willReturn(['mink:test']);
|
||||
$mink->resetSessions()->shouldBeCalled();
|
||||
$mink->setDefaultSessionName('test')->shouldBeCalled();
|
||||
|
||||
$this->prepareDefaultMinkSession($event);
|
||||
}
|
||||
|
||||
function it_prefers_the_scenario_over_the_feature($event, $mink, $scenario, $feature, $suite)
|
||||
public function it_prefers_the_scenario_over_the_feature($event, $mink, $scenario, $feature, $suite)
|
||||
{
|
||||
$suite->hasSetting('mink_javascript_session')->willReturn(false);
|
||||
$scenario->getTags()->willReturn(array('mink:test'));
|
||||
$feature->getTags()->willReturn(array('javascript'));
|
||||
$scenario->getTags()->willReturn(['mink:test']);
|
||||
$feature->getTags()->willReturn(['javascript']);
|
||||
$mink->resetSessions()->shouldBeCalled();
|
||||
$mink->setDefaultSessionName('test')->shouldBeCalled();
|
||||
|
||||
$this->prepareDefaultMinkSession($event);
|
||||
}
|
||||
|
||||
function it_stops_the_sessions_for_insulated_scenarios($event, $mink, $scenario)
|
||||
public function it_stops_the_sessions_for_insulated_scenarios($event, $mink, $scenario)
|
||||
{
|
||||
$scenario->hasTag('insulated')->willReturn(true);
|
||||
$mink->stopSessions()->shouldBeCalled();
|
||||
@@ -156,7 +156,7 @@ class SessionsListenerSpec extends ObjectBehavior
|
||||
$this->prepareDefaultMinkSession($event);
|
||||
}
|
||||
|
||||
function it_stops_the_sessions_for_insulated_features($event, $mink, $feature)
|
||||
public function it_stops_the_sessions_for_insulated_features($event, $mink, $feature)
|
||||
{
|
||||
$feature->hasTag('insulated')->willReturn(true);
|
||||
$mink->stopSessions()->shouldBeCalled();
|
||||
@@ -165,7 +165,7 @@ class SessionsListenerSpec extends ObjectBehavior
|
||||
$this->prepareDefaultMinkSession($event);
|
||||
}
|
||||
|
||||
function it_stops_the_sessions_at_the_end_of_the_exercise($mink)
|
||||
public function it_stops_the_sessions_at_the_end_of_the_exercise($mink)
|
||||
{
|
||||
$mink->stopSessions()->shouldBeCalled();
|
||||
|
||||
|
||||
@@ -6,17 +6,17 @@ use PhpSpec\ObjectBehavior;
|
||||
|
||||
class AppiumFactorySpec extends ObjectBehavior
|
||||
{
|
||||
function it_is_a_driver_factory()
|
||||
public function it_is_a_driver_factory()
|
||||
{
|
||||
$this->shouldHaveType('Behat\MinkExtension\ServiceContainer\Driver\DriverFactory');
|
||||
}
|
||||
|
||||
function it_is_named_appium()
|
||||
public function it_is_named_appium()
|
||||
{
|
||||
$this->getDriverName()->shouldReturn('appium');
|
||||
}
|
||||
|
||||
function it_supports_javascript()
|
||||
public function it_supports_javascript()
|
||||
{
|
||||
$this->supportsJavascript()->shouldBe(true);
|
||||
}
|
||||
|
||||
@@ -2,22 +2,22 @@
|
||||
|
||||
namespace spec\Behat\MinkExtension\ServiceContainer\Driver;
|
||||
|
||||
use PhpSpec\ObjectBehavior;
|
||||
use Behat\MinkExtension\ServiceContainer\Driver\DriverFactory;
|
||||
use PhpSpec\ObjectBehavior;
|
||||
|
||||
class BrowserKitFactorySpec extends ObjectBehavior
|
||||
{
|
||||
function it_is_a_driver_factory()
|
||||
public function it_is_a_driver_factory()
|
||||
{
|
||||
$this->shouldHaveType(DriverFactory::class);
|
||||
}
|
||||
|
||||
function it_is_named_browserkit()
|
||||
public function it_is_named_browserkit()
|
||||
{
|
||||
$this->getDriverName()->shouldReturn('browserkit_http');
|
||||
}
|
||||
|
||||
function it_does_not_support_javascript()
|
||||
public function it_does_not_support_javascript()
|
||||
{
|
||||
$this->supportsJavascript()->shouldBe(false);
|
||||
}
|
||||
|
||||
@@ -3,21 +3,20 @@
|
||||
namespace spec\Behat\MinkExtension\ServiceContainer\Driver;
|
||||
|
||||
use PhpSpec\ObjectBehavior;
|
||||
use Prophecy\Argument;
|
||||
|
||||
class BrowserStackFactorySpec extends ObjectBehavior
|
||||
{
|
||||
function it_is_a_driver_factory()
|
||||
public function it_is_a_driver_factory()
|
||||
{
|
||||
$this->shouldHaveType('Behat\MinkExtension\ServiceContainer\Driver\DriverFactory');
|
||||
}
|
||||
|
||||
function it_is_named_browser_stack()
|
||||
public function it_is_named_browser_stack()
|
||||
{
|
||||
$this->getDriverName()->shouldReturn('browser_stack');
|
||||
}
|
||||
|
||||
function it_supports_javascript()
|
||||
public function it_supports_javascript()
|
||||
{
|
||||
$this->supportsJavascript()->shouldBe(true);
|
||||
}
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace spec\Behat\MinkExtension\ServiceContainer\Driver;
|
||||
|
||||
use PhpSpec\ObjectBehavior;
|
||||
|
||||
class GoutteFactorySpec extends ObjectBehavior
|
||||
{
|
||||
function it_is_a_driver_factory()
|
||||
{
|
||||
$this->shouldHaveType('Behat\MinkExtension\ServiceContainer\Driver\DriverFactory');
|
||||
}
|
||||
|
||||
function it_is_named_goutte()
|
||||
{
|
||||
$this->getDriverName()->shouldReturn('goutte');
|
||||
}
|
||||
|
||||
function it_does_not_support_javascript()
|
||||
{
|
||||
$this->supportsJavascript()->shouldBe(false);
|
||||
}
|
||||
}
|
||||
@@ -6,17 +6,17 @@ use PhpSpec\ObjectBehavior;
|
||||
|
||||
class SahiFactorySpec extends ObjectBehavior
|
||||
{
|
||||
function it_is_a_driver_factory()
|
||||
public function it_is_a_driver_factory()
|
||||
{
|
||||
$this->shouldHaveType('Behat\MinkExtension\ServiceContainer\Driver\DriverFactory');
|
||||
}
|
||||
|
||||
function it_is_named_sahi()
|
||||
public function it_is_named_sahi()
|
||||
{
|
||||
$this->getDriverName()->shouldReturn('sahi');
|
||||
}
|
||||
|
||||
function it_supports_javascript()
|
||||
public function it_supports_javascript()
|
||||
{
|
||||
$this->supportsJavascript()->shouldBe(true);
|
||||
}
|
||||
|
||||
@@ -6,17 +6,17 @@ use PhpSpec\ObjectBehavior;
|
||||
|
||||
class SauceLabsFactorySpec extends ObjectBehavior
|
||||
{
|
||||
function it_is_a_driver_factory()
|
||||
public function it_is_a_driver_factory()
|
||||
{
|
||||
$this->shouldHaveType('Behat\MinkExtension\ServiceContainer\Driver\DriverFactory');
|
||||
}
|
||||
|
||||
function it_is_named_sauce_labs()
|
||||
public function it_is_named_sauce_labs()
|
||||
{
|
||||
$this->getDriverName()->shouldReturn('sauce_labs');
|
||||
}
|
||||
|
||||
function it_supports_javascript()
|
||||
public function it_supports_javascript()
|
||||
{
|
||||
$this->supportsJavascript()->shouldBe(true);
|
||||
}
|
||||
|
||||
@@ -6,17 +6,17 @@ use PhpSpec\ObjectBehavior;
|
||||
|
||||
class Selenium2FactorySpec extends ObjectBehavior
|
||||
{
|
||||
function it_is_a_driver_factory()
|
||||
public function it_is_a_driver_factory()
|
||||
{
|
||||
$this->shouldHaveType('Behat\MinkExtension\ServiceContainer\Driver\DriverFactory');
|
||||
}
|
||||
|
||||
function it_is_named_selenium2()
|
||||
public function it_is_named_selenium2()
|
||||
{
|
||||
$this->getDriverName()->shouldReturn('selenium2');
|
||||
}
|
||||
|
||||
function it_supports_javascript()
|
||||
public function it_supports_javascript()
|
||||
{
|
||||
$this->supportsJavascript()->shouldBe(true);
|
||||
}
|
||||
|
||||
@@ -6,17 +6,17 @@ use PhpSpec\ObjectBehavior;
|
||||
|
||||
class SeleniumFactorySpec extends ObjectBehavior
|
||||
{
|
||||
function it_is_a_driver_factory()
|
||||
public function it_is_a_driver_factory()
|
||||
{
|
||||
$this->shouldHaveType('Behat\MinkExtension\ServiceContainer\Driver\DriverFactory');
|
||||
}
|
||||
|
||||
function it_is_named_selenium()
|
||||
public function it_is_named_selenium()
|
||||
{
|
||||
$this->getDriverName()->shouldReturn('selenium');
|
||||
}
|
||||
|
||||
function it_supports_javascript()
|
||||
public function it_supports_javascript()
|
||||
{
|
||||
$this->supportsJavascript()->shouldBe(true);
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
namespace spec\Behat\MinkExtension\ServiceContainer\Driver;
|
||||
|
||||
use PhpSpec\ObjectBehavior;
|
||||
use Behat\MinkExtension\ServiceContainer\Driver\DriverFactory;
|
||||
use PhpSpec\ObjectBehavior;
|
||||
|
||||
class WebdriverClassicFactorySpec extends ObjectBehavior
|
||||
{
|
||||
|
||||
@@ -6,17 +6,17 @@ use PhpSpec\ObjectBehavior;
|
||||
|
||||
class ZombieFactorySpec extends ObjectBehavior
|
||||
{
|
||||
function it_is_a_driver_factory()
|
||||
public function it_is_a_driver_factory()
|
||||
{
|
||||
$this->shouldHaveType('Behat\MinkExtension\ServiceContainer\Driver\DriverFactory');
|
||||
}
|
||||
|
||||
function it_is_named_zombie()
|
||||
public function it_is_named_zombie()
|
||||
{
|
||||
$this->getDriverName()->shouldReturn('zombie');
|
||||
}
|
||||
|
||||
function it_supports_javascript()
|
||||
public function it_supports_javascript()
|
||||
{
|
||||
$this->supportsJavascript()->shouldBe(true);
|
||||
}
|
||||
|
||||
@@ -6,12 +6,12 @@ use PhpSpec\ObjectBehavior;
|
||||
|
||||
class MinkExtensionSpec extends ObjectBehavior
|
||||
{
|
||||
function it_is_a_testwork_extension()
|
||||
public function it_is_a_testwork_extension()
|
||||
{
|
||||
$this->shouldHaveType('Behat\Testwork\ServiceContainer\Extension');
|
||||
}
|
||||
|
||||
function it_is_named_mink()
|
||||
public function it_is_named_mink()
|
||||
{
|
||||
$this->getConfigKey()->shouldReturn('mink');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user