Any updates on this? I am facing the same issue. 

Running using JunitStories and the storyDuration.props has durations 0.

On Friday, 23 February 2018 11:58:17 UTC-6, mauro.talevi wrote:
>
> Please package all this in a downloadable zip that can be opened and run. 
>  Don't forget a readme with tool versions etc 
>
> On 23 Feb 2018, at 18:32, Maganti Suryanarayana murthy <[email protected] 
> <javascript:>> wrote:
>
> Hi Mauro Talevi, 
>
> I have used gradle as a build file and please find the code base that i am 
> using. I am pasing build.gradle file and apptechJbehaveStories.java
>
> Build.gradle:
>
> def buildNumber = System.getProperty('buildNumber') ?: '0'
> def buildVersion = '1.0.0-' + buildNumber
>
> version = buildVersion
>
> apply plugin: 'groovy'
> apply plugin: 'java'
> apply plugin: 'maven'
>
>
> repositories {
>     mavenCentral()
>    }
>
> configurations {
>     jbehave
> }
>
> dependencies {
>     testCompile group: 'junit', name: 'junit', version: '4.11'
>     compile(group: 'org.jbehave.web', name: 'jbehave-web-selenium', 
> version:'4.0-beta-1') {
>         exclude(module: 'selenium-remote-control')
>         exclude(module: 'selenium-java')
>         exclude(module: 'jbehave-core')
>     }
>     compile 'org.springframework:spring-webmvc:5.0.2.RELEASE'
>     compile 'org.jbehave.site:jbehave-site-resources:3.3.1'
>     compile 'org.jbehave:jbehave-spring:4.1.3'
>     compile 'org.jbehave:jbehave-core:4.1.3'
>     compile 'log4j:log4j:1.2.16'
>     compile group: 'org.seleniumhq.selenium', name: 'selenium-java', 
> version: '3.7.1'
>     compile group: 'commons-collections', name: 'commons-collections', 
> version: '3.2.1'
>     testCompile group: 'org.jbehave', name: 'jbehave-core', version: 
> '4.1.3'
>     compile 'org.jbehave.site:jbehave-site-resources:3.3.1:@zip'
> }
>
> /** userDefined task to copy the srories from /src/main/stories into 
> build/classes/test/stories*/
> task copyStories(type: Copy) {
>     from 'src/main/resources' into "${buildDir}/classes/test"
>     from 'src/main/stories' into "${buildDir}/classes/test/stories"
> }
>
>
> task copyJbehaveStyle(type: Copy) {
>     from(zipTree(jarPath("jbehave-core"))) {
>         include "style/*"
>     }
>     into("${buildDir}/classes/jbehave/view")
> }
>
> task copyJbehaveUtilities(type: Copy) {
>     from(zipTree(jarPath("jbehave-site-resources"))) {
>         include "js/**/*"
>         include "style/**/*"
>         include "images/*"
>     }
>     into("${buildDir}/classes/jbehave/view")
> }
>
> def jarPath(String jarName) {
>     configurations.testCompile.find({ it.name.startsWith(jarName) 
> }).absolutePath
> }
>
>
> /** to specify the source for java and resources for test task, by default 
> this is refered to src/test folder in gradle and maven*/
> sourceSets {
>     test {
>         java {
>             srcDir "src/main/java"
>         }
>         resources {
>             srcDir "src/main/resources"
>         }
>     }
> }
>
> test {
>     systemProperty "metaFilters", System.getProperty("metaFilters", "")
>     doFirst {
>         copy {
>             from(zipTree(jarPath("jbehave-core"))) {
>                 include "style/*"
>             }
>             into("build/reports/jbehave/view")
>
>         }
>         copy {
>             from(zipTree(jarPath("jbehave-site-resources"))) {
>                 include "js/**/*"
>                 include "style/**/*"
>                 include "images/*"
>             }
>             into("build/reports/jbehave/view")
>         }
>     }
>     systemProperties System.getProperties()
>     dependsOn([clean,copyStories,copyJbehaveUtilities,copyJbehaveStyle])
> }
>
>
> apptechJBehaveStories.java
>
> package com.apptech.qmo;
>
> import com.apptech.qmo.ipt.QMOHtmlOutput;
> import com.apptech.qmo.ipt.QMOStoryData;
> import com.apptech.qmo.ipt.QMOStoryReporterBuilder;
> import com.apptech.qmo.ipt.utils.Loggers;
> import com.google.common.util.concurrent.MoreExecutors;
> import org.apache.log4j.Logger;
> import org.apache.log4j.PropertyConfigurator;
> import org.jbehave.core.Embeddable;
> import org.jbehave.core.configuration.Configuration;
> import org.jbehave.core.embedder.Embedder;
> import org.jbehave.core.embedder.StoryControls;
> import org.jbehave.core.embedder.StoryTimeouts;
> import org.jbehave.core.failures.FailingUponPendingStep;
> import org.jbehave.core.failures.PendingStepStrategy;
> import org.jbehave.core.i18n.LocalizedKeywords;
> import org.jbehave.core.io.CodeLocations;
> import org.jbehave.core.io.LoadFromClasspath;
> import org.jbehave.core.io.StoryFinder;
> import org.jbehave.core.junit.JUnitStories;
> import org.jbehave.core.model.ExamplesTableFactory;
> import org.jbehave.core.model.TableTransformers;
> import org.jbehave.core.parsers.RegexStoryParser;
> import org.jbehave.core.reporters.CrossReference;
> import org.jbehave.core.reporters.Format;
> import org.jbehave.core.reporters.HtmlTemplateOutput;
> import org.jbehave.core.reporters.StoryReporterBuilder;
> import org.jbehave.core.steps.InjectableStepsFactory;
> import org.jbehave.core.steps.ParameterControls;
> import org.jbehave.core.steps.ParameterConverters;
> import org.jbehave.core.steps.spring.SpringStepsFactory;
> import org.jbehave.web.selenium.*;
> import org.springframework.context.ApplicationContext;
> import 
> org.springframework.context.annotation.AnnotationConfigApplicationContext;
>
> import java.net.URL;
> import java.text.SimpleDateFormat;
> import java.util.ArrayList;
> import java.util.Arrays;
> import java.util.List;
> import java.util.Properties;
>
> import static com.apptech.qmo.ipt.utils.DriverProvider.driver;
> import static org.jbehave.core.io.CodeLocations.codeLocationFromClass;
> import static org.jbehave.core.io.CodeLocations.getPathFromURL;
> import static org.jbehave.core.reporters.Format.*;
>
> public class apptechJbehaveStories extends JUnitStories {
>     private static final String _STORIES_SEPARATOR = ",";
>     public static QMOHtmlOutput qmoHtmlOutput;
>     public static QMOStoryData storyData;
>     public static List<String> storyToExecute = null;
>     static CrossReference crossReference = new 
> CrossReference().withJsonOnly().withOutputAfterEachStory(true);
>     Logger log = Logger.getLogger(apptechJbehaveStories.class);
>     PendingStepStrategy pendingStepStrategy = new FailingUponPendingStep();
>     ContextView contextView = new LocalFrameContextView().sized(640, 120);
>     SeleniumContext seleniumContext = new SeleniumContext();
>     //        SeleniumStepMonitor stepMonitor = new 
> SeleniumStepMonitor(contextView, 
> seleniumContext,crossReference.getStepMonitor());
>     Format[] formats = new Format[]{new 
> SeleniumContextOutput(seleniumContext), Format.CONSOLE, XML, Format.HTML};
>     StoryReporterBuilder reporterBuilder = new 
> QMOStoryReporterBuilder(storyData)
>             
> .withCodeLocation(codeLocationFromClass(apptechJbehaveStories.class)).withFailureTrace(true)
>             
> .withFailureTraceCompression(true).withDefaultFormats().withFormats(formats)
>             .withCrossReference(crossReference);
>     private ApplicationContext applicationContext;
>     private WebDriverProvider driverProvider = new 
> PropertyWebDriverProvider();
>     private WebDriverSteps lifecycleSteps = new 
> PerStoriesWebDriverSteps(driverProvider);
>
>     public apptechJbehaveStories() {
>         super();
>         try {
>             System.setProperty("webdriver.chrome.driver", 
> "src/main/resources/drivers/chromedriver.exe");
>             storyData = new QMOStoryData();
>             String path = 
> apptechJbehaveStories.class.getProtectionDomain().getCodeSource().getLocation().getPath()
>  
> + "stories/log4j.properties";
>             PropertyConfigurator.configure(path);
>             if (lifecycleSteps instanceof PerStoriesWebDriverSteps) {
>                 
> configuredEmbedder().useExecutorService(MoreExecutors.newDirectExecutorService());
>             }
>         } catch (Exception e) {
>             e.printStackTrace();
>         }
>     }
>
>     @Override
>     public Configuration configuration() {
>         new WebDriverScreenshotOnFailure(driverProvider, new 
> QMOStoryReporterBuilder());
>         Class<? extends Embeddable> embeddableClass = this.getClass();
>         Properties viewResources = new Properties();
>         viewResources.put("decorateNonHtml", "true");
>         LoadFromClasspath resourceLoader = new 
> LoadFromClasspath(embeddableClass);
>         TableTransformers tableTranformers = new TableTransformers();
>         // Start from default ParameterConverters instance
>         ParameterConverters parameterConverters = new 
> ParameterConverters(resourceLoader, tableTranformers);
>         ExamplesTableFactory examplesTableFactory = new 
> ExamplesTableFactory(new LocalizedKeywords(), resourceLoader,
>                 parameterConverters, tableTranformers);
>         // add custom converters
>         parameterConverters.addConverters(new 
> ParameterConverters.DateConverter(new SimpleDateFormat("yyyy-MM-dd")),
>                 new 
> ParameterConverters.ExamplesTableConverter(examplesTableFactory));
>
>         return new 
> SeleniumConfiguration().useSeleniumContext(seleniumContext)
>                 .useWebDriverProvider(driverProvider)
>                 .usePendingStepStrategy(pendingStepStrategy)
>                 .useStoryControls(new 
> StoryControls().doResetStateBeforeScenario(true))
>                 .useStoryLoader(new 
> LoadFromClasspath(apptechJbehaveStories.class))
>                 .useStoryParser(new RegexStoryParser(examplesTableFactory))
>                 .useStoryReporterBuilder(new 
> QMOStoryReporterBuilder(storyData)
>                         
> .withCodeLocation(CodeLocations.codeLocationFromPath(getClassPath()))
>                         .withFailureTrace(true)
>                         .withFailureTraceCompression(true)
>                         .withCrossReference(crossReference)
>                         .withDefaultFormats()
>                         .withFormats(Format.CONSOLE, Format.HTML, 
> Format.XML,Format.STATS))
>                 .useParameterControls(new ParameterControls()
>                         .useDelimiterNamedParameters(true))
>                 .useParameterConverters(parameterConverters)
>                 .useStepMonitor(crossReference.getStepMonitor());
>     }
>
>     private List<String> getMetaFilters() {
>         String metaFilterStr = System.getProperty("meta.filter");
>         metaFilterStr = metaFilterStr == null ? "" : metaFilterStr;
>         List<String> metaFilters = Arrays.asList(metaFilterStr.split(","));
>         log.info("**** MetaFilters = " + metaFilters);
>         return metaFilters;
>     }
>
>     private String getClassPath() {
>         URL fileUrl = codeLocationFromClass(this.getClass());
>         String classpath = getPathFromURL(fileUrl);
>         System.out.println("getClassPath classpath = " + classpath);
>         // class may come from a jar file
>         if (classpath.endsWith(".jar!")) {
>             int idx = classpath.lastIndexOf('.');
>             classpath = classpath.substring(0, idx);
>         }
>         return classpath;
>     }
>
>     @Override
>     public InjectableStepsFactory stepsFactory() {
>         if (this.applicationContext == null) {
>             AnnotationConfigApplicationContext applicationContext = new 
> AnnotationConfigApplicationContext(com.apptech.qmo.ipt.configurations.SpringConfiguration.class);
>             this.applicationContext = applicationContext;
>         }
>         return new SpringStepsFactory(configuration(), 
> this.applicationContext);
>     }
>
>     public static class CustomTimeoutParser implements 
> StoryTimeouts.TimeoutParser {
>
>         public boolean isValid(String timeout) {
>             return timeout.matches("(\\d+)secs");
>         }
>
>         public long asSeconds(String timeout) {
>             return 
> Long.parseLong(org.apache.commons.lang3.StringUtils.substringBefore(timeout, 
> "secs"));
>         }
>
>     }
>
>     @Override
>     public void run() throws Throwable {
>         Embedder embedder = configuredEmbedder();
>         embedder.useMetaFilters(getMetaFilters());
>         // These should be enabled so that even though the stories fail it 
> wont go to catch method. Its useful when running multiple scenarios
>         embedder.embedderControls().doIgnoreFailureInStories(true);
>         embedder.embedderControls().doIgnoreFailureInView(false);
>         embedder.embedderControls().doGenerateViewAfterStories(true);
>         
> embedder.configuration().storyControls().doIgnoreMetaFiltersIfGivenStory(true);
>         embedder.useTimeoutParsers(new CustomTimeoutParser());
>         List<String> storyPaths = storyPaths();
>         try {
>             embedder.runStoriesAsPaths(storyPaths);
>         } catch (Exception e) {
>             Loggers.CONSOLE_LOGGER.error("STORY FAILED DUE TO:");
>             e.printStackTrace(System.err);
>             Loggers.FILE_LOGGER.error("STORY FAILED DUE TO:");
>             e.printStackTrace(System.err);
>             Loggers.CONSOLE_LOGGER.info("Driver instance is closing");
>             Loggers.FILE_LOGGER.info("Driver instance is closing");
>             embedder.generateCrossReference();
>             throw new Throwable(e.fillInStackTrace());
>         } finally {
>             try {
>                 Loggers.CONSOLE_LOGGER.info("Driver instance is closing");
>                 driver.quit();
>                 Loggers.FILE_LOGGER.info("Driver instance is closing");
>             } catch (Exception e) {
>                 System.out.println("Issue in closing driver instance in 
> run method: " + e.getMessage());// Wantedly not caught the exception
>             }
>             embedder.generateCrossReference();
>         }
>     }
>
>     public String getStoryFromStoryPaths(String storyName, List<String> 
> storyPaths) {
>         for (String story : storyPaths) {
>             System.out.println("story = " + story);
>             int stroryLength = story.split("/").length;
>             if (story.split("/")[stroryLength - 
> 1].equalsIgnoreCase(storyName)) return story;
>         }
>         return "";
>     }
>
>     @Override
>     protected List<String> storyPaths() {
>         final List<String> globList = new ArrayList<String>();
>         final String[] globs = storyFilter().split(_STORIES_SEPARATOR);
>         for (final String story : globs) {
>             globList.add("**/*" + story + (story.endsWith(".story") ? "" : 
> ".story"));
>         }
>         String classpath = getClassPath();
>         log.info("classpath=" + classpath);
>         List<String> paths = new StoryFinder().findPaths(classpath, 
> globList, null);
>         log.info("**** story paths = " + paths.toString());
>         return paths;
>     }
>
>     private String storyFilter() {
>         String storyFilter = System.getProperty("story.filter");
>         if (storyFilter == null) {
>             storyFilter = "";
>         }
>         return storyFilter;
>     }
>
>     public String captureReportName() {
>         String storyName = null;
>         String fileNames[] = reporterBuilder.outputDirectory().list();
>         for (int i = 0; i < fileNames.length; i++) {
>             if (fileNames[i].contains("html") & 
> !fileNames[i].contains("BeforeStories")) {
>                 String name[] = fileNames[i].split(".html");
>                 storyName = name[0];
>             }
>         }
>         return storyName;
>     }
> }
>
>
>
> On Thursday, February 22, 2018 at 12:19:29 PM UTC-6, mauro.talevi wrote:
>>
>> You need to provide a sample project that reproduces the issue for us to 
>> help you.
>>
>> On 21 Feb 2018, at 16:39, Maganti Suryanarayana murthy <[email protected]> 
>> wrote:
>>
>> Any help on this 
>> ?
>>
>> On Tuesday, February 20, 2018 at 10:16:58 AM UTC-6, Maganti Suryanarayana 
>> murthy wrote:
>>>
>>> Any one is facing above issue ?
>>>
>>> On Tuesday, February 20, 2018 at 9:42:28 AM UTC-6, Maganti Suryanarayana 
>>> murthy wrote:
>>>>
>>>> Jbehave story report is not showing the time in report i.e., the 
>>>> Duration is shown as 00:00:00.000. I am using gradle as a build tool. 
>>>>
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "JBehave User" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> To view this discussion on the web, visit 
>> https://groups.google.com/d/msgid/jbehave-user/6376be18-29ad-444f-9670-79a4a6eae694%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/jbehave-user/6376be18-29ad-444f-9670-79a4a6eae694%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>>
>> -- 
> You received this message because you are subscribed to the Google Groups 
> "JBehave User" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> To post to this group, send email to [email protected] 
> <javascript:>.
> To view this discussion on the web, visit 
> https://groups.google.com/d/msgid/jbehave-user/045c006d-6548-466d-ab71-311b365880e6%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/jbehave-user/045c006d-6548-466d-ab71-311b365880e6%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"JBehave User" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send an email to [email protected].
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/jbehave-user/604eab3b-5b98-4908-a71b-c6b1680f0354%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to