+++ /dev/null
-<?php
-
-/*
- * This file is part of the Behat MinkExtension.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\MinkExtension\Context;
-
-use Behat\Mink\Mink;
-use Behat\Mink\WebAssert;
-use Behat\Mink\Session;
-
-/**
- * Raw Mink context for Behat BDD tool.
- * Provides raw Mink integration (without step definitions) and web assertions.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class RawMinkContext implements MinkAwareContext
-{
- private $mink;
- private $minkParameters;
-
- /**
- * Sets Mink instance.
- *
- * @param Mink $mink Mink session manager
- */
- public function setMink(Mink $mink)
- {
- $this->mink = $mink;
- }
-
- /**
- * Returns Mink instance.
- *
- * @return Mink
- */
- public function getMink()
- {
- if (null === $this->mink) {
- throw new \RuntimeException(
- 'Mink instance has not been set on Mink context class. ' .
- 'Have you enabled the Mink Extension?'
- );
- }
-
- return $this->mink;
- }
-
- /**
- * Returns the parameters provided for Mink.
- *
- * @return array
- */
- public function getMinkParameters()
- {
- return $this->minkParameters;
- }
-
- /**
- * Sets parameters provided for Mink.
- *
- * @param array $parameters
- */
- public function setMinkParameters(array $parameters)
- {
- $this->minkParameters = $parameters;
- }
-
- /**
- * Returns specific mink parameter.
- *
- * @param string $name
- *
- * @return mixed
- */
- public function getMinkParameter($name)
- {
- return isset($this->minkParameters[$name]) ? $this->minkParameters[$name] : null;
- }
-
- /**
- * Applies the given parameter to the Mink configuration. Consider that all parameters get reset for each
- * feature context.
- *
- * @param string $name The key of the parameter
- * @param string $value The value of the parameter
- */
- public function setMinkParameter($name, $value)
- {
- $this->minkParameters[$name] = $value;
- }
-
- /**
- * Returns Mink session.
- *
- * @param string|null $name name of the session OR active session will be used
- *
- * @return Session
- */
- public function getSession($name = null)
- {
- return $this->getMink()->getSession($name);
- }
-
- /**
- * Returns Mink session assertion tool.
- *
- * @param string|null $name name of the session OR active session will be used
- *
- * @return WebAssert
- */
- public function assertSession($name = null)
- {
- return $this->getMink()->assertSession($name);
- }
-
- /**
- * Visits provided relative path using provided or default session.
- *
- * @param string $path
- * @param string|null $sessionName
- */
- public function visitPath($path, $sessionName = null)
- {
- $this->getSession($sessionName)->visit($this->locatePath($path));
- }
-
- /**
- * Locates url, based on provided path.
- * Override to provide custom routing mechanism.
- *
- * @param string $path
- *
- * @return string
- */
- public function locatePath($path)
- {
- $startUrl = rtrim($this->getMinkParameter('base_url'), '/') . '/';
-
- return 0 !== strpos($path, 'http') ? $startUrl . ltrim($path, '/') : $path;
- }
-
- /**
- * Save a screenshot of the current window to the file system.
- *
- * @param string $filename Desired filename, defaults to
- * <browser_name>_<ISO 8601 date>_<randomId>.png
- * @param string $filepath Desired filepath, defaults to
- * upload_tmp_dir, falls back to sys_get_temp_dir()
- */
- public function saveScreenshot($filename = null, $filepath = null)
- {
- // Under Cygwin, uniqid with more_entropy must be set to true.
- // No effect in other environments.
- $filename = $filename ?: sprintf('%s_%s_%s.%s', $this->getMinkParameter('browser_name'), date('c'), uniqid('', true), 'png');
- $filepath = $filepath ? $filepath : (ini_get('upload_tmp_dir') ? ini_get('upload_tmp_dir') : sys_get_temp_dir());
- file_put_contents($filepath . '/' . $filename, $this->getSession()->getScreenshot());
- }
-}