Fixed screenshot_path usage

Was referencing outdated $this->context settings
instead of parent context. Still a bit hacky to make
assumptions on parent context, but its difficult to pass
through arguments to subcontexts.
This commit is contained in:
Ingo Schommer 2013-10-09 14:29:42 +02:00
parent b0ede964c4
commit 7bb06f0fea
2 changed files with 7 additions and 9 deletions

View File

@ -109,8 +109,8 @@ Optional `ajax_steps` is used to match steps defined there so they can be "caugh
[special AJAX handlers](http://blog.scur.pl/2012/06/ajax-callback-support-behat-mink/) that tweak the delays. You can either use a pipe delimited string or a list of substrings that match step definition.
* `ajax_timeout`: Milliseconds after which an Ajax request is regarded as timed out,
and the script continues with its assertions to avoid a deadlock (Default: 5000).
* `screenshot_path`: Used to store screenshot of a last known state
of a failed step. It defaults to whatever is returned by PHP's `sys_get_temp_dir()`.
* `screenshot_path`: Absolute path used to store screenshot of a last known state
of a failed step.
Screenshot names within that directory consist of feature file filename and line
number that failed.
@ -120,7 +120,8 @@ Example: behat.yml
context:
class: SilverStripe\MyModule\Test\Behaviour\FeatureContext
extensions:
SilverStripe\BehatExtension\Extension: ~
SilverStripe\BehatExtension\Extension:
screenshot_path: %behat.paths.base%/artifacts/screenshots
SilverStripe\BehatExtension\MinkExtension:
# Adjust this to your local environment
base_url: http://localhost/

View File

@ -211,19 +211,16 @@ JS;
$path = $this->getMainContext()->getScreenshotPath();
if(!$path) return; // quit silently when path is not set
\Filesystem::makeFolder($path);
$path = realpath($path);
if (!$path) {
\Filesystem::makeFolder($this->context['screenshot_path']);
$path = realpath($this->context['screenshot_path']);
}
if (!file_exists($path)) {
file_put_contents('php://stderr', sprintf('"%s" is not valid directory and failed to create it' . PHP_EOL, $this->context['screenshot_path']));
file_put_contents('php://stderr', sprintf('"%s" is not valid directory and failed to create it' . PHP_EOL, $path));
return;
}
if (file_exists($path) && !is_dir($path)) {
file_put_contents('php://stderr', sprintf('"%s" is not valid directory' . PHP_EOL, $this->context['screenshot_path']));
file_put_contents('php://stderr', sprintf('"%s" is not valid directory' . PHP_EOL, $path));
return;
}
if (file_exists($path) && !is_writable($path)) {