registerBehatContainer($container); $this->provideMinkIntegration($container); $container ->registerForAutoconfiguration(Context::class) ->addTag('fob.context') ->setBindings([ '$minkParameters' => new Reference('behat.mink.parameters'), ]) ; } public function process(ContainerBuilder $container): void { foreach ($container->findTaggedServiceIds('fob.context') as $serviceId => $attributes) { $container->findDefinition($serviceId)->setPublic(true); } } private function registerBehatContainer(ContainerBuilder $container): void { $behatServiceContainerDefinition = new Definition(ContainerInterface::class); $behatServiceContainerDefinition->setPublic(true); $behatServiceContainerDefinition->setSynthetic(true); $container->setDefinition('behat.service_container', $behatServiceContainerDefinition); } private function provideMinkIntegration(ContainerBuilder $container): void { $minkDefaultSessionDefinition = new Definition(Session::class, ['fob_symfony.mink.default_session']); $minkDefaultSessionDefinition->setPublic(true); $minkDefaultSessionDefinition->setLazy(true); $minkDefaultSessionDefinition->setFactory([new Reference('behat.service_container'), 'get']); $container->setDefinition('behat.mink.default_session', $minkDefaultSessionDefinition); $container->setAlias(Session::class, 'behat.mink.default_session'); $minkParametersDefinition = new Definition(MinkParameters::class, ['fob_symfony.mink.parameters']); $minkParametersDefinition->setPublic(true); $minkParametersDefinition->setLazy(true); $minkParametersDefinition->setFactory([new Reference('behat.service_container'), 'get']); $container->setDefinition('behat.mink.parameters', $minkParametersDefinition); $container->setAlias(MinkParameters::class, 'behat.mink.parameters'); } }